studio android camera android-camera flashlight

torch android studio



Configuración de parámetros.FLASH_MODE_TORCH no funciona en Droid X 2.3 (4)

Podría ser que el Droid X no sea compatible con el Modo Antorcha. Pruebe 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);

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 Incredible y funcionó bien. No puedo entender cuál es el problema. Aquí está parte de mi código para encender el modo de la 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 agregado mCamera.startPreview (); porque leo que debería marcar la diferencia, pero no es así. También hice una lista de los modos de flash disponibles y los mostré en la pantalla para asegurarme de que mi Droid X tiene modo antorcha, y estaba en la lista. Incluso creé una nueva aplicación del código que encontré en línea que enciende y apaga el LED con un botón. Nuevamente funcionó bien en el Droid Incredible 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 algunas peculiaridades al configurar FLASH_MODE_TORCH.

A menudo necesitas 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 que la vista previa se dibuje en un SurfaceView. Esto puede hacerse implementando la interfaz SurfaceHolder.Callback en su actividad. Vea un ejemplo aquí .


Consulte el Issue 191453 :

SurfaceTexture mDummy = new SurfaceTexture(1); // any int argument will do camera.setPreviewTexture(mDummy); camera.startPreview();


Lo único que encontré que funciona en el Droid X es el código presentado por Siddhpura Amit en la parte inferior de la página en esta respuesta Use la linterna de la cámara en Android . Él revisa el fabricante y verifica 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, ya que tengo un Motorola Droid X.