java - encender - Apertura de linterna en Android con diferentes modos
activar linterna android (3)
Puede abrir linterna en diferentes modos si su dispositivo admite diferentes modos de flash. Puede obtener el código de este código de cámara de código abierto. Cámara abierta
¿Funcionará el código de la siguiente manera en dispositivos Android como la navaja Motorola que no admita la linterna? ¿Puede alguien por favor tener la amabilidad de probar si tiene un teléfono así y por favor dígame.
¡¡Gracias por adelantado!!
if (!isFlashOn) {
if (camera == null || params == null) {
return;
}
List<String> flashModes = params.getSupportedFlashModes();
if(flashModes.contains(Parameters.FLASH_MODE_TORCH)){
try {
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
toggleButtonImage();
isFlashOn = true;
}catch (RuntimeException e) {
}
}
else {
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_ON);
camera.setParameters(params);
camera.startPreview();
toggleButtonImage();
isFlashOn = true;
}
toggleButtonImage();
isFlashOn = true;
}
}
PD: ¿Debo agregar algo adicional como:
if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_AUTO))
{
params.setFlashMode(Parameters.FLASH_MODE_AUTO);
camera.setParameters(params);
camera.startPreview();
}
Funciona en Motorola g y galaxy S4 (compatible con antorcha)
debe verificar los modos de flash admitidos para no tener una excepción, el método setFlashMode verifica si hay modos admitidos, pero verificar con este método es útil para configurar el botón de modo de flash o ver en la IU
public List<String> getSupportedFlashModes() {
return params.getSupportedFlashModes();
}
La suma de todos los modos de Flash son:
Camera.Parameters.FLASH_MODE_AUTO, Camera.Parameters.FLASH_MODE_OFF, Camera.Parameters.FLASH_MODE_ON, Camera.Parameters.FLASH_MODE_RED_EYE, Camera.Parameters.FLASH_MODE_TORCH
Pero algunos o algunos de estos modos de flash pueden no estar disponibles en su dispositivo, verifique antes de usar. Después de seleccionar los modos de flash, puede configurar los modos de flash con este método
public synchronized void setFlashMode(String flashMode) {
Camera.Parameters params = mCamera.getParameters();
if (cameraId == Camera.CameraInfo.CAMERA_FACING_BACK && params.getSupportedFlashModes() != null
&& params.getSupportedFlashModes().contains(flashMode)) {
params.setFlashMode(flashMode);
mCamera.setParameters(params);
}
}
Sí, si comprueba que el dispositivo admita la linterna. Pero puede encontrar un problema específico del dispositivo que es muy frecuente en Android. Puedes encontrar más información en esta publicación.