我试图在API 21和22上运行手电筒,但是没有成功。
代码
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
isFlashlightOn();
if (camera == null && parameters == null) {
camera = Camera.open();
parameters = camera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameters);
}
if (getFlashlightState) {
Objects.requireNonNull(camera).startPreview();
} else {
Objects.requireNonNull(camera).stopPreview();
}
} else {
isFlashlightOn();
if (cameraManager == null) {
cameraManager = (CameraManager) this.getSystemService(Context.CAMERA_SERVICE);
}
try {
String cameraId = Objects.requireNonNull(cameraManager).getCameraIdList()[0];
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
cameraManager.setTorchMode(cameraId, getFlashlightState);
}else{
//the problem is here because I don't know what can I put in else
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
在API 21和22中,setTorchMode的替代方法是什么?
CaptureRequest.Builder
,并随后调用mCaptureSession.setRepeatingRequest
,如此处所示:https://github.com/google/cameraview/blob/68947cc1643e7434250e099f38f346eae9c46339/library/src/main/api21/com/google/android/cameraview/Camera2.java#L544 - Cool Soft