lot*_*ops 3 android android-camera android-6.0-marshmallow
我想实现切换火炬功能.因此,相机不会被捕获并崩溃 - 就像Lollipop一样 - 我正在尝试使用setTorchModeAPI 23.我有一个代码实现来打开或关闭火炬; 但是,我不知道如何检查闪光灯的当前状态.
CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
try {
String[] cameras = manager.getCameraIdList();
for (int i = 0; i < cameras.length; i++) {
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameras[i]);
boolean flashAvailable = characteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
if (flashAvailable) {
boolean flashState = getFlashState(); //MISSING METHOD
manager.setTorchMode(cameras[i], !flashState);
}
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
那么,如何在getFlashState不使用旧相机API的情况下实现?是否可以在不拍摄相机的情况下完成?
你可以尝试使用
CameraManager.TorchCallback torchCallback = new TorchCallback() {
@Override
public void onTorchModeUnavailable(String cameraId) {
super.onTorchModeUnavailable(cameraId);
}
@Override
public void onTorchModeChanged(String cameraId, boolean enabled) {
super.onTorchModeChanged(cameraId, enabled);
flashState = enabled;
}
};
Run Code Online (Sandbox Code Playgroud)
并注册回调
CameraManager manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
manager.registerTorchCallback(torchCallback, null);// (callback, handler)
Run Code Online (Sandbox Code Playgroud)
当你想打开/关闭闪光灯使用时
manager.setTorchMode(cameras[i], !flashState);
Run Code Online (Sandbox Code Playgroud)
记得取消注册回调...
| 归档时间: |
|
| 查看次数: |
2883 次 |
| 最近记录: |