Utilizar el led de la camara como linterna

Objetivo:

Programar un botón para controlar el led de la cámara y poder utilizarlo como linterna.

Logística adicional necesaria:

Para poder probarlo necesitaremos un móvil con led en la cámara, ya que el emulador no muestra información al respecto.

Con este código podremos realizar el apagado y encendido del flash del móvil. Hay que tener en cuenta que el flash consume mucha batería, por lo que se recomienda no realizar un uso continuado del mismo.

Un ejemplo de aplicación creada a partir del código fuente siguiente, sería “Quick Light and Strobe”, donde se muestra una linterna, con posibilidad de cambios de color e incluso funcionar como estroboscopio.

Dejo un enlace de la misma de la misma en la seccion Aplicaciones Recomendadas

Código fuente java (principal.java):

[sourcecode language=”java”]
package com.ejemplo.linternaled;

import android.app.Activity;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class principal extends Activity {

Camera camera = null;
Parameters parameters;
Button FlashLightControl;

// Called when the activity is first created.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//Creamos un boton con el texto adecuado
FlashLightControl = (Button)findViewById(R.id.flashcontrol);
FlashLightControl.setText("ENCENDER LED CAMARA");
}

/**
* Control LED Camera.
* Esta funcion se ejecuta al clickar el boton que hemos incluido
* @param arg0
*/
public void onClickLED(View arg0) {
try{
// Al pulsar, si el Led estaba encendido se apaga y viceversa
if(camera == null){
camera = Camera.open();
parameters = camera.getParameters();
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameters);
FlashLightControl.setText("APAGANDO LED CAMARA");
}else{
parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(parameters);
camera.release();
camera = null;
FlashLightControl.setText("ENCENDIENDO LED CAMARA");
}
}catch(Exception e){
//Control errores
}
}

/**
* Si al salir está el LED encendido, lo apagamos.
* Esta funcion es llamada cuando se cierra una aplicación.
*/
public void finish(){
if (camera != null){
parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(parameters);
camera.release();
camera = null;
}
super.finish();
}
}
[/sourcecode]

Código fuente XML (main.xml):

[sourcecode language=”xml”]
<!–?xml version="1.0" encoding="utf-8"?–>

<!– Titulo de nuestra aplicacion –>

<!– Boton para encender o apagar el led de la camara –>
<button>

[/sourcecode]

Añadir el permiso necesario al AndroidManifest.xml :

[sourcecode language=”xml”]
<!– NECESARIO PARA EL LED FLASH –>

[/sourcecode]

8 comentarios en “Utilizar el led de la camara como linterna

  1. Te hago una consulta, sirve para Android 2.1? porque lo estoy probando en un Motorola Defy, y no me funciona.
    Muchas gracias

    • Buenas Andres,
      gracias por la info. Hay algunos móviles no compatibles con ello. Por lo visto el tuyo será uno de ellos. La versión en principio no es el problema, ya que algunos sí que funcionan con 2.1
      Un saludo!

    • Buenas Andrés!,
      lo cierto es que este código en concreto es más dependiente del dispositivo en sí, ya que se ha probado en móviles con misma versión Android, pero en algunos no llegó a funcionar.
      Si puedo recopilaré una lista y la dejo en el post.
      Un saludo!

  2. hay un problema si se ejecuta la app cuando la linterna está ya encendida (o si cambiamos la orientación del movil cuando la linterna está encendida y la app funcionando), en ambos casos no se puede apagar

Responder a Manu.M.R Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *