手电筒相机2 API

use*_*059 5 android flashlight camera2

我可以在 Android Camera2 API 中同时使用相机预览和手电筒吗?

当我尝试使用CameraManager.setTorchMode(String cameraId, boolean enabled)它时,当相机未打开时它工作正常。但是当相机打开时我尝试setTorchMode我收到这个异常:

CameraService: setTorchMode: 相机 0 的手电筒模式不可用,因为相机正在使用中

Vin*_*nay 6

设置 FLASH_MODE 和 AE_MODE 很重要。下面是工作代码:

public void toggleFlashMode(boolean enable){
try {
            if (mCameraType.equals(CameraType.BACK)) {
                if (enable) {
                    mPreviewRequestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_TORCH);
                    mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);
                } else {
                    mPreviewRequestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF);
                    mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF);
                }
                mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), null, null);
            }
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
}
Run Code Online (Sandbox Code Playgroud)


Edd*_*ala 2

不,它们是相互排斥的。

相机设备需要在相机打开时对闪光灯进行独占控制,以确保其能够根据拍照等需要进行闪光。

如果您想在相机打开时打开手电筒,请使用相机 API 的闪光模式设置。对于新的camera2 API,即将自动曝光模式设置为ON ( CONTROL_AE_MODE_ON ),将闪光模式设置为TORCH ( FLASH_MODE_TORCH )。对于旧的相机 API,那就是Parameters.setFlashMode