Flashlight control in Marshmallow

前端 未结 4 1566
情话喂你
情话喂你 2021-02-07 18:45

I have a problem regarding the camera in the most recent Marshmallow build, more specifically the flashlight. On any pre-Marshmallow version all I need to do to turn the flash o

4条回答
  •  野趣味
    野趣味 (楼主)
    2021-02-07 19:12

    Google has introduced torchmode in OS 6 (Android M).
    if your purpose is only to turn on/off the flash, below code can help you with that:

    private static void handleActionTurnOnFlashLight(Context context){
        try{
    
            CameraManager manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
            String[] list = manager.getCameraIdList();
            manager.setTorchMode(list[0], true);
        }
        catch (CameraAccessException cae){
            Log.e(TAG, cae.getMessage());
            cae.printStackTrace();
        }
    }
    
    private static void handleActionTurnOffFlashLight(Context context){
        try{
            CameraManager manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
            manager.setTorchMode(manager.getCameraIdList()[0], false);
        }
        catch (CameraAccessException cae){
            Log.e(TAG, cae.getMessage());
            cae.printStackTrace();
        }
    }
    

    All you have to do is: Get cameraid's list out of which camera ID zero(0) is your primary camera for which you want to turn flash on/off. Simply pass the cameraID to setTochMode API with boolean value for turning it on or off.

    Do note that this piece of code will work only with OS 6, so you need to check for device OS and based upon that you need to select which API's to call for pre-marshmallow devices.

    Kindly mark this as solution if it solves your problem.

提交回复
热议问题