Utilizar el led de la camara como linterna

18 agosto, 2011 por Gonzalo de Córdoba Dejar una respuesta »

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):

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();
   }
}

Código fuente XML (main.xml):

<!--?xml version="1.0" encoding="utf-8"?-->





      <!-- Titulo de nuestra aplicacion -->


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





Añadir el permiso necesario al AndroidManifest.xml :

<!-- NECESARIO PARA EL LED FLASH -->

Publicidad

8 comentarios

  1. Manu.M.R dice:

    Hola Gonzalo , una pregunta esta inplementacion esta probada con el Nexus S con ICS 4.0.3 ??

    Gracias!!

  2. ErikM dice:

    muy buen tuto gracias me sirvio bastante :D

  3. Andres dice:

    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!

  4. Aktema dice:

    Podrias dejar en descarga el proyecto?

  5. ales dice:

    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

Deja un comentario

Rellena el captcha please!! *

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies