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.
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»
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»:
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
En 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
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:
Como 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»
Todo 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
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»
Relacionado
Descubre más desde Recursos para formacion
Suscríbete y recibe las últimas entradas en tu correo electrónico.
20 comentarios
Amigo disculpa yo segui todos los pasos pero no me funciona el boton q tengo asignado para la linterna en no tuve ningun error en el codigo todo esta perfecto pero nomas no funciona te dejo mi correo. [email protected] espero tu respuesta gracias ..
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
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.
Ahora se usa camera2 , podria ser este el motivo??