在以前的方式中,可以使用Camera类来使用手电筒功能。但是现在不推荐使用android.hardware包中的整个Camera和Camera相关的类,我应该在android.hardware.camera2包中使用其他一些类。
传统上,我像这样编码手电筒部分。
// getting camera parameters
private void getCamera() {
if (camera == null) {
try {
camera = Camera.open();
params = camera.getParameters();
} catch (RuntimeException e) {
Log.e("Camera Error. Failed to Open. Error: ", e.getMessage());
}
}
}
/*
* Turning On flash
*/
private void turnOnFlash() {
if (!isFlashOn) {
if (camera == null || params == null) {
return;
}
// play sound
playSound();
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
isFlashOn = true;
// changing button/switch image
toggleButtonImage();
}
}
但是现在使用新的API我很困惑如何使用新的API。有人可以解释一下吗?
答案 0 :(得分:1)
for flashlight I advise using the Camera2 API only from Android 6 (api 23), my function for toggling the flashlight looks like
@TargetApi(Build.VERSION_CODES.M)
public void toggleMarshmallowFlashlight(boolean enable) {
try {
final CameraManager manager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
final String[] list = manager.getCameraIdList();
manager.setTorchMode(list[0], enable);
} catch (CameraAccessException e) {
}
}