我想使用camera2 API控制智能手机(Galaxy s6)的闪光灯。
我检查过它可以通过这样的代码获得,
try {
CameraManager mManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
String [] cameraId = mManager.getCameraIdList();
CameraCharacteristics cameraCharacteristics = mManager.getCameraCharacteristics(cameraId[1]);
Toast.makeText(getApplicationContext(),cameraId[0]+cameraId[1],Toast.LENGTH_LONG).show();
boolean flashAvailable = cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
if (flashAvailable) {
mManager.openCamera(cameraId[0], new MyStateCallback(), null);
Toast.makeText(getApplicationContext(),"Flash is available",Toast.LENGTH_LONG).show();
} else {
//todo: throw Exception
Toast.makeText(getApplicationContext(),"Flash is not available",Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
e.printStackTrace();
}
但是,Toast消息:Flash不可用。
当然,我在清单中声明了权限和硬件功能。
使用此设备或camera2 API无法控制闪光灯吗?
答案 0 :(得分:2)
您正在检查第二台相机(可能是前置相机)是否有闪光灯,因为您在第4行获取了cameraId [1]而不是cameraId [0]的相机特性。
通常情况下,后置摄像头是第一个,也是带闪光灯的摄像头。 为了最强大,迭代所有摄像机ID并检查它们中是否有闪光灯。