Android-Utilizando recursos del teléfono: La linterna

Utilizando la botonera definida en el articulo anterior, acerca de como utilizar los recursos del teléfono, describimos en este articulo como utilizar el flash como linterna.

Para poder hacerlo, necesitamos que el teléfono disponga de flash, y ademas, que este soporte el modo “Antorcha”, por lo que en el código, lo primero que haremos será comprobarlo, y en caso de que vaya mal algo, desabilitaremos el botón.

también veremos como declaramos en el fichero de Manifiesto, que necesitamos utilizar la cámara.

2014-10-21_19h07_25

Esta es la “Activity” que diseñamos en el articulo anterior, y en este crearemos el codigo para el botón de la Linterna.

Lo primero de todo, vamos a definir los campos que necesitamos para controlar la linterna, y lo tendremos que hacer al principio de la clase correspondiente a la actividad; en nuestro ejemplo, es el fichero “presentacion.java”

2014-10-21_19h52_58

Los campos que utilizamos son:

btnLinterna – Contendrá la referencia al botón que activa la linterna

linternaOn – Es un valor booleano y estará True si la linterna esta encendida, y a False en caso contrario

tieneFlash – Es un valor booleano que indicará si se puede utilizar el flash, osea: que lo tiene y acepta el modo “Antorcha”

objCamara – en el que dejaremos cargado nada mas iniciar, el objeto Camara, para futuras referencias

parametrosCamara – Conteniendo los parámetros para el control de la cámara

Abrir cámara

Necesitamos crear un método para obtener los parámetros de la cámara, y comprobar si existe…. le añadimos al fichero “presentacion.java”:

AndroidStudio_parametrosCamara

El método empieza comprobando si ya hemos accedido a la cámara alguna vez, y solo se ejecuta la primera vez que se le llama. El resto de veces, habrá dejado en objCamara la referencia a la cámara, y en parametrosCamara, la configuración, por lo que no será necesario volverlo a ejecutar

En la linea 61, abre la cámara y obtiene el puntero, y si no ha dado error, en la linea 62 obtiene la configuración.

Si se ha producido algún error, en la linea 65 desabilitamos el botón.

Método para encender el flash

AndroidStudio_EncenderFlashEn la linea 70 comprobamos que el flash este apagado, y si no es así, no hacemos nada

En 71 comprobamos que hayamos podido acceder a la cámara, y que en su momento hubiéramos podido leer los parámetros, a continuación, volveremos a leer los parámetros, y comprobaremos que la lectura haya ido bien.

En la 78, modificamos el comportamiento del flash para ponerlo en modo “Antorcha”, y actualizamos los parámetros en la cámara.

Cuando la linea 80 fuerza la activación de la cámara, el flash se enciende como una antorcha

Método para apagar el flash

AndroidStudio_ApagarFlash

 

El método es semejante al anterior, tras comprobar que esta encendido y esta todo correcto, lee los parámetros de la cámara, marca la desactivación del flash, y detiene la acción dela cámara.

Método para preparar la linterna

Este método lo llamaremos al principio de la actividad y es el responsable de dejar todo preparado:

AndroidStudio_PrepararLinternaComo siempre, obtenemos la referencia del botón (35), y comprobamos si tiene flash. En caso contrario, en la linea 40 desabilitamos el botón, y hemos acabado

Si tiene flash, creamos un listener (43) y al evento onClick(46) le asociamos la llamada a encender(50) o apagar(48) linterna según su estado (47)

Para conseguir que esto funcione, deberemos lanzar esta función durante el “onCreate”

AndroidStudio_PreparaLinternaTodo el código necesario es este, pero antes de lanzarlo, deberéis modificar el fichero de manifiesto, AndroidManifest.xml para declarar que necesitáis permiso para la cámara

2014-10-21_20h40_55

y eso debería bastar, lanzar la aplicación y comprobad si funciona, si no….otro día nos liaremos con las depuraciones (debug), en el siguiente articulo, conoceremos el GPS

Nota 22/10/14:————————————

Cuando el teléfono cambia de posición,(rotación) la linterna se apaga, en esta primera versión, la solución propuesta es impedir que la pantalla del teléfono pueda rotar en esta actividad, para eso,  le añadiremos una linea a nuestro “AndroidManifest.xml”

2014-10-22_19h24_00

Acerca de Miguel Garcia

Programador, Desarrollador web, Formador en distintas areas de informatica y director de equipos multidisciplinares.
Esta entrada fue publicada en Android, Formacion y etiquetada , . Guarda el enlace permanente.

4 respuestas a Android-Utilizando recursos del teléfono: La linterna

  1. Pingback: Android-Utilizando recursos del telefono. El GPSRecursos para formacion

  2. Gamaliel Hernandez dijo:

    Termine mi app en android studio despues lo mande a ejecutar en mi dispositivo por medio de usb se instalo el apk pero al entrar a la interfaz le doy click al boton y no funciona no hace ningun movimiento

    • Miguel dijo:

      No puedo imaginar cual es el problema, te puedo indicar que me lo instale en un teléfono y funcionaba perfectamente. Deberia dar algun mensaje….no se,revisa tanto el codigo, por si has cometido algun error, como si se informa de algun mensaje de error al ejecutarla.

Deja un comentario