setTorchMode()最小化的应用程序和Flash的
问题描述:
不转我只有与Android轻微的经验,并有下面的代码片段:setTorchMode()最小化的应用程序和Flash的
String cameraId = cameraManager.getCameraIdList()[1]; System.out.println(cameraId); cameraManager.setTorchMode(cameraId, true);
应打开闪光灯背面相机(理想) 。这段代码在onClickListener
中执行。当cameraManager.setTorchMode(cameraId, true);
得到执行时,应用程序被最小化(我可以看到它仍在运行 - 没有崩溃),但闪光灯未打开。
在尝试添加额外的检查选项后,我几乎筋疲力尽,检查闪光灯是否可用。该项目设置为Android的Jellybean +版本。测试手机是Lollipop 5.0.2。
我知道这个问题可能是一个重复: How to open device flashlight in Android N?
但已经穷尽想尽选项,迫切需要一个解决方案。提前致谢。
答
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_BACK
&& cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
mCameraId = camID;
break;
}
}
if (mCameraId != null) {
mCameraManager.setTorchMode(mCameraId, true);
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
mCameraId将打开相机闪光灯。如果设备没有闪存硬件,则mCameraId将为空,并且setTorchMode不会在上面的代码中调用。