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]