Cómo encender la linterna Android

Actualizar

Echa un vistazo a mi respuesta

Original

Estoy tratando de encender la linterna de la cámara en la Revolución LG dentro de mi programa. Utilizo el método del modo de la antorcha que trabaja en la mayoría de los teléfonos pero no en el teléfono de LG. ¿Alguien sabe cómo conseguir que funcione en LG o específicamente la Revolución?

Aquí está mi manifiesto:

<uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> <uses-permission android:name="android.permission.FLASHLIGHT"/> 

Aquí está mi código actual:

 public Camera camera = Camera.open(); public Camera.Parameters Flash = camera.getParameters(); 

Con mi en crear:

  Flash.setFlashMode("torch"); Parameters p = camera.getParameters(); camera.setParameters(Flash); camera.startPreview(); 

He visto gente usar un enfoque automático pero no sé si eso funcionaría.

Pensé que iba a actualizar esto con algunos bullet prof código que funciona en casi todos los dispositivos 4.0 +.

 public void turnOn() { camera = Camera.open(); try { Parameters parameters = camera.getParameters(); parameters.setFlashMode(getFlashOnParameter()); camera.setParameters(parameters); camera.setPreviewTexture(new SurfaceTexture(0)); camera.startPreview(); camera.autoFocus(this); } catch (Exception e) { // We are expecting this to happen on devices that don't support autofocus. } } private String getFlashOnParameter() { List<String> flashModes = camera.getParameters().getSupportedFlashModes(); if (flashModes.contains(FLASH_MODE_TORCH)) { return FLASH_MODE_TORCH; } else if (flashModes.contains(FLASH_MODE_ON)) { return FLASH_MODE_ON; } else if (flashModes.contains(FLASH_MODE_AUTO)) { return FLASH_MODE_AUTO; } throw new RuntimeException(); } 

La verdadera clave es establecer que SurfaceTexture falso para que la vista previa realmente se inicie. Apagarlo también es muy fácil

 public void turnOff() { try { camera.stopPreview(); camera.release(); camera = null; } catch (Exception e) { // This will happen if the camera fails to turn on. } } 

Parece que el desarrollador de la aplicación Tiny Flashlight + LED en el Android Market descubrió cómo hacer que la linterna funcione en LG Revolution.

Tal vez usted puede ponerse en contacto con él y preguntar? También puede comprobar los permisos que está utilizando en su aplicación para tratar de hacer que su aplicación funcione.

¡Buena suerte!

Pruebe esto:

 if(camera == null){ camera = Camera.open(); parameters = camera.getParameters(); List<String> flashModes = parameters.getSupportedFlashModes(); if(flashModes != null && flashModes.contains(Parameters.FLASH_MODE_TORCH)){ //appareil supportant le mode torch parameters.setFlashMode(Parameters.FLASH_MODE_TORCH); camera.setParameters(parameters); } else if (flashModes != null && flashModes.contains(Parameters.FLASH_MODE_ON)){ //spécial samsung parameters.setFlashMode(Parameters.FLASH_MODE_ON); camera.setParameters(parameters); camera.startPreview(); camera.autoFocus(new AutoFocusCallback() { public void onAutoFocus(boolean success, Camera camera) { } }); } else { parameters.setFlashMode(Parameters.FLASH_MODE_OFF); camera.setParameters(parameters); } parameters.setFlashMode( Parameters.FLASH_MODE_OFF ); camera.setParameters(parameters); camera.release(); camera = null; } catch (RuntimeException e) {} }//if 

Esto funcionó bien para LG Nexus:

 camera = Camera.open(); camera.setPreviewTexture(new SurfaceTexture(0)); camera.setParameters(p); camera.startPreview(); 
 /*TESTED LG G4 */ public void flashOnOff(){ List<String> flashModes = parameter001.getSupportedFlashModes(); if(flashModes != null && flashModes.contains(Parameters.FLASH_MODE_TORCH)){ //appareil supportant le mode torch parameter001.setFlashMode(Parameters.FLASH_MODE_TORCH); mCamera.setParameters(parameter001); } else if (flashModes != null && flashModes.contains(Parameters.FLASH_MODE_ON)){ //spécial samsung parameter001.setFlashMode(Parameters.FLASH_MODE_ON); mCamera.setParameters(parameter001); mCamera.autoFocus(new AutoFocusCallback() { public void onAutoFocus(boolean success, Camera camera) { } }); } else { parameter001.setFlashMode(Parameters.FLASH_MODE_OFF); mCamera.setParameters(parameter001); } if (!isFlashOn) { if (mCamera == null || parameter001 == null) { return; } parameter001 = mCamera.getParameters(); parameter001.setFlashMode(Parameters.FLASH_MODE_TORCH); mCamera.setParameters(parameter001); try { mCamera.setPreviewTexture(new SurfaceTexture(0)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } mCamera.startPreview(); isFlashOn = true; // changing button/switch image }else if (isFlashOn) { if (mCamera == null || parameter001 == null) { return; } parameter001 = mCamera.getParameters(); parameter001.setFlashMode(Parameters.FLASH_MODE_OFF); mCamera.setParameters(parameter001); mCamera.stopPreview(); isFlashOn = false; } } 
  • Configuración de Parameters.FLASH_MODE_TORCH no funciona en Droid X 2.3
  • Torch / Flashlight app (android.hardware.camera está obsoleto)
  • Android: Mantenga la cámara LED encendida después de que la pantalla se apague
  • Linterna LED no funciona en Samsung Galaxy Nexus
  • No se puede usar la cámara después de apagar la linterna
  • Linterna LED en xperia Z5
  • Luz de flash no detectada
  • Android java lang runtimeexception no se puede conectar al servicio de cámara
  • ¿Cómo selecciono la cámara correcta para encender la linterna, en Android 2.2?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.