¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Desarrolle una aplicación Android
  3. Explotar el teléfono
Extrait - Desarrolle una aplicación Android Programación en Java con Android Studio
Extractos del libro
Desarrolle una aplicación Android Programación en Java con Android Studio
1 opinión
Volver a la página de compra del libro

Explotar el teléfono

Enviar/recibir SMS

Android permite el acceso a la mayoría de las funciones del terminal. En particular, para los smartphones, es posible explotar la capacidad del teléfono para enviar y recibir SMS. Dejando de lado, de momento, la aplicación LocDVD, esta sección presenta en primer lugar el envío de SMS y, a continuación, se centra en la recepción, más compleja de implementar, para abordar por último el funcionamiento de los sensores presentes en nuestros dispositivos Android.

1. Enviar un SMS

Cualquier terminal equipado con una tarjeta SIM GSM puede enviar SMS, siempre que la conexión GSM esté activa.

Algunos terminales Android no están equipados para la comunicación GSM, de modo que es necesario, antes de invocar a las clases utilizadas para la gestión de SMS, comprobar la capacidad del terminal. Dependiendo de la situación, se plantean dos escenarios posibles: o bien la función de envío/recepción de SMS es imprescindible para la aplicación, o bien es una característica suplementaria cuya ausencia no supone una restricción.

Si la capacidad para enviar/recibir SMS es imprescindible para el funcionamiento de la aplicación, es preferible no presentar esta aplicación en Play Store para aquellos dispositivos no compatibles. Para ello, hay que agregar la etiqueta uses-feature en el archivo AndroidManifest.xml de la aplicación:


<uses-feature android:name="nombre de la funcionalidad"  
android:required="true|false"/>
 
  • El parámetro name permite indicar qué funcionalidad debe estar presente en el terminal. Para enviar/recibir SMS, la funcionalidad es android.hardware.telephony.

  • El parámetro required indica si la funcionalidad es imprescindible o no. En efecto, Play Store también puede deducir los uses-feature a partir de los permisos solicitados en el archivo AndroidManifest. Por ejemplo, si el archivo AndroidManifest expone el permiso android.permission.SEND_SMS, Play Store deduce que la funcionalidad android.hardware.telephony es necesaria para el correcto funcionamiento de la aplicación. Indicando que la funcionalidad correspondiente no es obligatoria (required=false), la aplicación se propondrá a aquellos terminales no equipados.

Así, la primera etapa para desarrollar las funcionalidades SMS en una aplicación...

Utilizar los sensores del dispositivo

La mayoría de los terminales Android integran varios sensores: acelerómetro, giroscopio, sensor de temperatura, etc.; la plataforma permite acceder a las mediciones realizadas por estos sensores.

Como con las características de hardware de los terminales, todos los dispositivos que funcionan con Android no incluyen todos los tipos de sensores soportados por la plataforma. De modo que hay que comprobar la existencia de un sensor antes de utilizarlo en una aplicación.

También aquí, igual que con el envío de SMS, existen dos enfoques posibles: o bien reservar la aplicación a los terminales equipados del sensor específico o bien comprobar en tiempo de ejecución la presencia del sensor.

En el primer caso, hay que utilizar la etiqueta <uses-feature> que hemos visto antes. La siguiente tabla muestra los nombres de los sensores que se han de utilizar con <uses-feature>. La lista se ha extraído de la tabla publicada por Google en la siguiente dirección: http://developer.android.com/guide/topics/manifest/uses-feature-element.html#hw-features.

Tipo de sensor

Valor para utilizar en la etiqueta <uses-feature>

Acelerómetro

android.hardware.sensor.accelerometer

Barómetro

android.hardware.sensor.barometer

Brújula

android.hardware.sensor.compass

Giroscopio

android.hardware.sensor.gyroscope

Luminosidad

android.hardware.sensor.light

Proximidad

android.hardware.sensor.proximity

Contador de pasos

android.hardware.sensor.stepcounter...

Geolocalizar al usuario

La geolocalización es una característica importante de los dispositivos móviles; se utiliza, por ejemplo, para presentar al usuario una información en función de su localización, para guiarlo geográficamente, etc. Como con los sensores vistos anteriormente, la geolocalización está accesible para las aplicaciones, pero su uso está sometido a permisos.

Android proporciona dos tipos de geolocalización, que dependen del tipo de componente utilizado para realizar la medida:

  • En caso de que la geolocalización no requiera una gran precisión, es posible utilizar una geolocalización basada en las señales GSM y de red.

  • En caso de que la geolocalización deba ser más precisa, hay que utilizar una geolocalización basada en un componente que capte la señal GPS de los satélites. 

En el primer caso, de geolocalización poco precisa, hay que exponer el permiso android.permission.ACCESS_COARSE_LOCATION en el archivo AndroidManifest.xml. En el segundo caso, debe declararse el permiso android.permission.ACCESS_FINE_LOCATION en el Manifest.

Cabe destacar que el permiso ACCESS_FINE_LOCATION incluye, explícitamente, el permiso ACCESS_COARSE_LOCATION.

El desarrollador debe tener en mente que el uso del componente GPS de un terminal consume mucha energía. Por este motivo, se recomienda de forma encarecida utilizar la geolocalización solo cuando sea realmente necesario.

1. LocationManager

La clase base del mecanismo de geolocalización es la clase LocationManager. Como con los sensores, hay que invocar el método getSystemService para obtener una instancia de LocationManager. El parámetro de llamada de getSystemService es aquí Context.LOCATION_SERVICE.


LocationManager locationManager =  
    (LocationManager)getSystemService(Context.LOCATION_SERVICE);
 

Tres métodos permiten obtener la medida de la geolocalización del terminal. El uso de uno u otro método depende del escenario seleccionado por el desarrollador:

  • O bien la aplicación solo necesita conocer la última posición conocida.

  • O bien la aplicación debe realizar una única petición de posición.

  • O bien la aplicación debe realizar medidas de posición a intervalos regulares.

Para obtener el valor de la última...