前言:
官方文档: https://developer.android.google.cn/reference/android/hardware/camera2/CameraManager
本文参考chatGPT, 使用Camera2 API
代码:
private CameraManager cameraManager;
private String cameraId;
private void initCamera() {
cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
try {
for (String id : cameraManager.getCameraIdList()) {
CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(id);
Boolean hasFlash = characteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
if (hasFlash != null && hasFlash) {
cameraId = id;
break;
}
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
private void openFlashlight() {
try {
if (cameraManager == null) {
initCamera();
}
if (cameraId != null) {
// 需要初始化cameraManager之后才能,调用setTorchMode方法
// 需要确认cameraId存在
cameraManager.setTorchMode(cameraId, true);
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
private void closeFlashlight() {
try {
if (cameraManager == null) {
initCamera();
}
if (cameraId != null) {
cameraManager.setTorchMode(cameraId, false);
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
androidManifest.xml
添加硬件权限
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-permission android:name="android.permission.CAMERA"/>