如何检索 cameraID 并使用 setTorchMode?
How does one retrieve the cameraID and use setTorchMode?
所以 Android M 最近问世了,它现在有一个内置的 cameralight 函数,叫做 setTorchMode。我很好奇这是如何工作的,因为参数是 (String cameraID, Boolean true/false)。布尔值显然决定了灯是开还是关,但你如何获得 cameraID?我知道有一个名为 getCameraIDList 的方法,但是 returns 一组 ID,而不仅仅是一个。您怎么知道要使用该列表中的哪一个?
您应该使用 CameraManager "getCameraIdList" 函数,它会为您检索一个字符串列表,其中每个字符串代表一个活动相机。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mCameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
try {
for (String camID : mCameraManager.getCameraIdList()) {
CameraCharacteristics cameraCharacteristics = mCameraManager.getCameraCharacteristics(camID);
int lensFacing = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
if (lensFacing == CameraCharacteristics.LENS_FACING_FRONT && cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
mCameraId = camID;
break;
} else if (lensFacing == CameraCharacteristics.LENS_FACING_BACK && cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
mCameraId = camID;
}
}
if (mCameraId != null) {
mCameraManager.setTorchMode(mCameraId, true);
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
mCameraId 将打开前置摄像头闪光灯(如果可用)或后置摄像头闪光灯(如果可用)。如果没有可用的闪光灯,则 mCameraId 将为空,并且不会调用 setTorchMode。
所以 Android M 最近问世了,它现在有一个内置的 cameralight 函数,叫做 setTorchMode。我很好奇这是如何工作的,因为参数是 (String cameraID, Boolean true/false)。布尔值显然决定了灯是开还是关,但你如何获得 cameraID?我知道有一个名为 getCameraIDList 的方法,但是 returns 一组 ID,而不仅仅是一个。您怎么知道要使用该列表中的哪一个?
您应该使用 CameraManager "getCameraIdList" 函数,它会为您检索一个字符串列表,其中每个字符串代表一个活动相机。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mCameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
try {
for (String camID : mCameraManager.getCameraIdList()) {
CameraCharacteristics cameraCharacteristics = mCameraManager.getCameraCharacteristics(camID);
int lensFacing = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
if (lensFacing == CameraCharacteristics.LENS_FACING_FRONT && cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
mCameraId = camID;
break;
} else if (lensFacing == CameraCharacteristics.LENS_FACING_BACK && cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
mCameraId = camID;
}
}
if (mCameraId != null) {
mCameraManager.setTorchMode(mCameraId, true);
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
mCameraId 将打开前置摄像头闪光灯(如果可用)或后置摄像头闪光灯(如果可用)。如果没有可用的闪光灯,则 mCameraId 将为空,并且不会调用 setTorchMode。