Configuración de Parameters.FLASH_MODE_TORCH no funciona en Droid X 2.3

Estoy escribiendo una aplicación que establece el modo de flash a la antorcha. He estado probando la aplicación en mi Droid X, y la luz LED no se enciende. Lo probé en un Droid increíble y funcionó bien. No puedo averiguar cuál es el problema. Aquí es parte de mi código para encender el modo antorcha.

Camera mCamera = Camera.open(); Camera.Parameters params = mCamera.getParameters(); if(params.getFlashMode() != null){ params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); } mCamera.setParameters(params); 

He añadido mCamera.startPreview (); porque leí que debería hacer una diferencia, pero no lo hace. También hice una lista de los modos de flash disponibles y los mostró en la pantalla para asegurarse de que mi Droid X tiene modo de antorcha, y estaba en la lista. Incluso he creado una nueva aplicación de código que encontré en línea que enciende y apaga el flash LED con un botón. Una vez más, funcionó bien en el Droid increíble, pero no en el Droid X. ¿Hay algo que me falta para que esto funcione en el Droid X, o podría ser algo con Gingerbread? El Droid X está ejecutando Gingerbread y el Droid Incredible está ejecutando FroYo.

Hay bastantes peculiaridades al configurar FLASH_MODE_TORCH.

A menudo, es necesario iniciar una vista previa de la cámara:

 Camera mCamera = Camera.open(); mCamera.startPreview(); Camera.Parameters params = mCamera.getParameters(); if(params.getFlashMode() != null){ params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); } mCamera.setParameters(params); 

Eso puede resolverlo en algunos teléfonos, otros teléfonos también requieren la vista previa para ser dibujado a un SurfaceView. Esto se puede hacer mediante la implementación de SurfaceHolder.Callback interfaz en su actividad. Vea un ejemplo aquí .

Podría ser que el Droid X no soporta el modo antorcha. Intente algo como esto:

  List<String> pList = camera.getParameters().getSupportedFlashModes(); if (pList.contains(Parameters.FLASH_MODE_TORCH)) parameters.setFlashMode(Parameters.FLASH_MODE_TORCH); camera.setParameters(parameters); 

La única cosa que encontré que funciona en el Droid X es el código presentado por Siddhpura Amit parte por la página en esta respuesta Use la linterna de la cámara en Android . Comprueba al fabricante y comprueba si contiene la cadena "motorola". Si es así, tiene un código especial que puede encender o apagar el LED Flash de la cámara. Puedo verificar que funciona como tengo un Motorola Droid X.

Consulte el número 191453 :

 SurfaceTexture mDummy = new SurfaceTexture(1); // any int argument will do camera.setPreviewTexture(mDummy); camera.startPreview(); 
  • Controles de intensidad FlashLED
  • Linterna LED en Galaxy Nexus controlable por qué API?
  • Manteniendo la cámara en pausa
  • ¿Dónde está el código fuente para cambiar la linterna en Android 5.1
  • Activar / desactivar la linterna con SurfaceView
  • Android java lang runtimeexception no se puede conectar al servicio de cámara
  • Control de linterna en Marshmallow
  • Luz de flash no detectada
  • Torch / Flashlight app (android.hardware.camera está obsoleto)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.