Cómo activar FlashLight en Lollipop por programación Android

Camera cam = Camera.open(); Parameters p = cam.getParameters(); p.setFlashMode(Parameters.FLASH_MODE_TORCH); cam.setParameters(p); cam.startPreview(); 

La dosis anterior no funciona en Lollipop, debido a que la cámara está obsoleta en Lollipop. No puedo encontrar ninguna otra manera de encender el flash programáticamente en Lollipop. Cómo puedo conseguir esto. Gracias por adelantado.

 mCam = Camera.open(); Camera.Parameters p = mCam.getParameters(); p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); mCam.setParameters(p); mPreviewTexture = new SurfaceTexture(0); try { mCam.setPreviewTexture(mPreviewTexture); } catch (IOException ex) { // Ignore } mCam.startPreview(); 

Funciona para mí en Android 5.0.x. Y no olvide añadir el permiso en el manifiesto para el uso de la cámara.

 <uses-permission android:name="android.permission.CAMERA" /> 

La clase de cámara está ahora obsoleta.

Para LOLLIPOP y más arriba, necesitas usar camera2 Api

Así que el trabajo del doesent de la solución de nickkadrov para 5.0 y encima del dispositivo, la mejor manera de encender / apagado la luz del flash es código del intento abajo

 @TargetApi(Build.VERSION_CODES.M) public static void toggleFlashLight() { toggle = !toggle; try { CameraManager cameraManager = (CameraManager) getApplicationContext().getSystemService(Context.CAMERA_SERVICE); for (String id : cameraManager.getCameraIdList()) { // Turn on the flash if camera has one if (cameraManager.getCameraCharacteristics(id).get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) { cameraManager.setTorchMode(id, toggle); } } } catch (Exception e2) { Toast.makeText(getApplicationContext(), "Torch Failed: " + e2.getMessage(), Toast.LENGTH_SHORT).show(); } } 

Donde toggle es una variable booleana de nivel de clase cuyo valor por defecto es false

 static boolean toggle=false; 

Su código debería funcionar. Comprueba si agregaste el permiso para usar la cámara correctamente:

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

Esto debe agregarse a su AndroidManifest arriba de sus otras especificaciones.

Además, hay una interesante discusión sobre diferentes dispositivos y un ejemplo que debería funcionar en todos los dispositivos aquí: Linterna en Android

Si no desea utilizar la API obsoleta, puede consultar:

Resumen del paquete de Camera2

Especificación del dispositivo de la cámara en la nueva API

Desafortunadamente, no puedo darte un ejemplo para usar la nueva API, ya que no la he usado todavía.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.