所以Android M最近问世,它现在有一个内置的cameralight函数叫做setTorchMode。我很好奇这个参数是如何工作的(String cameraID,Boolean true / false)。布尔值显然决定了灯是打开还是关闭,但是如何获得cameraID呢?我知道有一个名为getCameraIDList的方法,但它返回一个ID数组,而不仅仅是一个。你怎么知道该列表中的哪一个使用?
答案 0 :(得分:1)
你应该使用CameraManager" getCameraIdList"函数,它将检索一个字符串列表,其中每个字符串代表一个活动的摄像头。
答案 1 :(得分:0)
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将打开前置摄像头闪光灯(如果可用),否则将返回相机闪光灯(如果可用)。如果没有可用的flash,那么mCameraId将为null并且不会调用setTorchMode。