How to turn on FlashLight in Lollipop programmatically Android

后端 未结 3 738
天涯浪人
天涯浪人 2021-02-06 01:51
Camera cam = Camera.open();     
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
3条回答
  •  野趣味
    野趣味 (楼主)
    2021-02-06 02:41

    Camera class is now deprecated.

    For LOLLIPOP above you need to use camera2 Api

    so nickkadrov's solution doesent work for 6.0 & above device,best way to on/off flash light is try code below

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

    where toggle is class level static Boolean variable whose default value is false

    static boolean toggle=false;
    

提交回复
热议问题