在所有Android设备中控制手电筒

时间:2018-04-22 10:22:37

标签: android android-camera android-camera2 flashlight android-compatibility

我正在使用Camera Package开发Android应用程序以打开闪光灯,如下所示:

    Camera mCamera = Camera.open();
    List<String> flashModes = mCamera.getParameters().getSupportedFlashModes();
    if(flashModes != null && flashModes.contains(Parameters.FLASH_MODE_TORCH)){
        parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
        mCamera.setParameters(parameters);
    } else if (flashModes != null && flashModes.contains(Parameters.FLASH_MODE_ON)){
        parameters.setFlashMode(Parameters.FLASH_MODE_ON);
        mCamera.setParameters(parameters);
    }
    if(!previewing){
        mCamera.startPreview();
        previewing = true;
    }

检查支持相机闪光模式,并进行调整。它适用于三星Android设备和其他一些设备,但不适用于LG V20,LG V30和Mi Android。我搜索了这个并尝试了:

mCamera.autoFocus(Camera.AutoFocusCallback)
mCamera.setPreviewTexture(SurfaceTexture)

但没有任何作用。所以我使用了Camera2包api> 23,如:

CameraManager mCameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
mCameraManager.setTorchMode("0", true);

它有效,但在三星设备中,通知显示“手电筒开启”,这非常烦人。

因此,我需要使用Camera包开启所有设备的手电筒,或者不使用Camera2包显示“手电筒开启”通知。

我期待着你的回复,谢谢。

1 个答案:

答案 0 :(得分:0)

以下链接中的答案可以挽救我的生命!

SurfaceView对某些设备至关重要。

LED flashlight on Galaxy Nexus controllable by what API?