Para el proyecto de Dispositivos Móviles, haré uso de Android como plataforma para programar. Por lo tanto, es necesario conocer las herramientas con las que cuento, y para esto, en esta entrada me dedicaré a escribir sobre los paquetes importantes que encontré que me puedan ayudar a desarrollar mi proyecto.
Inicialmente, nombraré las partes del celular que se harán uso(tentativamente).
(Nota: SÍ, es requisito que sea un celular, ya que la app hará uso de telefonía para comunicarse con emergencias y otros números telefónicos importantes)
Partes importantes que se harán uso en el celular:
- GPS
- Telefonía
- Mensajería(SMS)
- Base de datos con las coordenadas de los contactos, y sus teléfonos
GPS - android.location
Interfaces
En cuanto a la localización GPS para llamar al hospital o policia más cercano, Encontré el paquete android.location que contiene clases relacionadas con la geolocalización y otros servicios relacionados. Aquí mostraré solo las que considero más importantes para mi proyecto.
Interfaces
GpsStatus.Listener | Interfaz usada para recibir notificaciones cuando se cambia el estado del GPS |
LocationListener | Usada para recibir notificaciones cuando la localizacion cambia. |
Clases
Address | Clase que representa una direccion que es un conjunto de strings que describen una localización. |
Criteria |
Clase que indica el criterio para seleccionar el proveedor de la localización.
|
GpsSatellite | Clase que representa el estado actual del satélite GPS. |
GpsStatus | Clase que representa el estado actual del motor |
Location | Clase que representa una localización geográfica detectada en un cierto tiempo. |
LocationManager | Clase que provee acceso a los servicios de localización del sistema. |
Uso en mi proyecto:
Estas clases sirven para manejar las funciones que se necesitarían en la localización GPS, en caso de implementarlo en mi proyecto. Usando estas clases e interfaces, podría saber cada cuando cambia de estado el GPS para saber si se encuentra en una nueva localización, y actualizar alguna base de datos con los contactos más cercanos para recibir ayuda médica, o de la policía.
Estas clases sirven para manejar las funciones que se necesitarían en la localización GPS, en caso de implementarlo en mi proyecto. Usando estas clases e interfaces, podría saber cada cuando cambia de estado el GPS para saber si se encuentra en una nueva localización, y actualizar alguna base de datos con los contactos más cercanos para recibir ayuda médica, o de la policía.
También la clase Address, provee información en un string, que podría servir para dar la localización actual a una persona cercana en un mensaje SMS, en caso de otro tipo de emergencia familiar o algo por el estilo.
Telefonía - android.telephony.gsm
Para la parte de telefonía, que requeriría las funciones de llamar, enviar mensajes y algunas otras cosas básicas, encontré el paquete android.telephony.gsm que proporciona clases para manejar algunas funciones de telefonía.
Clases
CellLocation | Clase abstracta que representa la localización del dispositivo |
PhoneNumberUtils | Utilidades para manipular Strings de teléfonos. |
PhoneStateListener | Clase usada para verificar cambios específicos en los estados de la telefonía del dispositivo. |
Signal Strength | Clase que contiene información relacionada con la intensidad de señal del teléfono |
SmsManager | Maneja información sobre operaciones SMS, como mandar datos, mensajes, etc. |
SmsMessage | Servicio de envió de mensajes SMS cortos. |
TelephonyManager | Clase que provee información sobre los servicios de telefonía en el dispositivo. |
Uso en mi proyecto:
La telefonía será una parte importante de mi aplicación. Por lo tanto, es necesario saber con que herramientas cuento para manejar las llamadas y mensajes, y como y a quién se envían esto. Esta clase la tendré que manipular junto con la de GPS para lograr hacer una base de datos de teléfonos y localizaciones, que se actualice cada cierto tiempo, y para así, en el momento de realizar una llamada de emergencia mediante mi aplicación, la aplicación sepa cual es el contacto más cercano para pedir ayuda.
Base de Datos - android.database
Para la base de datos, el API de android tiene el paquete android.database para manejar bases de datos.
Las interfaces y clases importantes son las siguientes:
Interfaces
Cursor | La interface provee acceso de escritura-lectura aleatorio al result set que es retornado por la búsqueda en la base de datos |
DatabaseErrorHandler | Interface que deja a la aplicación definir las acciones a tomar después de ciertos errores detectados en la base de datos |
Clases
ContentObserver | Recibe una llamada cuando cambie el contenido. |
CursorJoin |
Junta dos cursores usando las columnas especificadas.
|
DatabaseUtils | Metodos estaticos de utilidad para manejar bases de datos y cursores. |
DatasetObserver | Recibe una llamada cuando un set de datos sufre cambios o es invalido |
DefaultDatabaseErrorHandler | Clase usada para definir las acciones a tomar cuando una corrupción en la base de datos es reportada por sqlite |
MatrixCursor | Implementación de cursor mutable respaldado por un arreglo de objetos. |
Uso en mi aplicación:
La base de datos será una parte importante de mi proyecto, ya que contendrá en ella la información sobre las coordenadas de los hospitales, contactos, estaciones de policía y sus teléfonos. Esta base de datos sería en el mejor caso actualizada cada que se cambia de localización, lo cual sería cada cierto tiempo como 10 min o algo así. Esto para que en el momento en el que la aplicación se ejecute, ya esté listo el número de teléfono del contacto más cercano.
Voz - android.speech
Una de las cosas que me gustaría implementar, pero sería secundaria en caso de tener tiempo, es un mensaje pre-grabado. Esto podría generar problemas al enviarlo a emergencias, ya que se le daría un mal uso, o podría mal interpretarse, pero aun así me gustaría implementarlo para las llamadas de emergencia a contactos o de otro tipo que no afecte a los servicios de emergencias. De cualquier manera, encontré el paquete android.speech, que maneja funcionalidades relacionadas.
Las clases e interfaces son las siguientes:
Interfaces
RecognitionListener | Usado para recibir notificaciones del reconocedor de voz cuando algún evento relacionado ocurra. |
Clases
RecognitionService | Clase base para implementaciones del servicio de reconocimiento. |
RecognizerIntent |
Constantes para soportar el reconocimiento de voz, iniciando desde un intento.
|
RecognizerResultsIntent | Constantes con intentos relacionados en enseñar los resultados del reconocimiento de voz. |
SpeechRecognizer | Esta clase provee acceso al servicio de reconocimiento de voz. |
Uso en mi aplicación:
Quizás en sí esto no es lo que busco, pero es lo más cercano. Mi idea es utilizar el reconocimiento de voz para grabar un mensaje para cada tipo de emergencia(opcionalmente). Esto para mandarlo a determinados contactos en dicho caso de emergencia si la persona no puede hablar o no tiene tiempo para hacerlo.
Pruebas - junit.framework
Para realizar las pruebas al código, simplemente eso. Existe también un paquete android.test, pero preferí junit por haber trabajado con el anteriormente.
Las clases e interfaces son las siguientes:
Interfaces
Test | Prueba a correr para recoger resultados |
TestListener |
Un listener para el progreso de la prueba.
|
Clases
Assert | Set con mètodos del tipo assert(afirmar) |
TestCase |
Define un TestCase para correr múltiples pruebas.
|
TestFailure | Recolecta la prueba fallada junto con al excepción arrojada. |
TestResult | Recolecta los resultados de un determinado TestCase. |
TestSuite | Un TestSuite son varias pruebas compuestas. |
Errores
AssertionFailedError | Arrojado cuando un assert es fallido. |
ComparisonFailure |
Arrojado cunado una comparación entre Strings es fallida.
|
Y esas son los paquetes más importantes a primera vista. También faltaría ver lo que es necesario para programar la interfaz gráfica, que tengo entendido se hace con xml. Pero eso lo veré más adelante.
Referencias:
Muy bien; 7 para lab de móviles.
ResponderEliminar