gpt4 book ai didi

android - 获取手电筒(闪光灯)状态以在 android M 中切换它

转载 作者:太空宇宙 更新时间:2023-11-03 12:50:17 26 4
gpt4 key购买 nike

我想实现切换手电筒功能。这样相机就不会被捕获和崩溃 - 就像在 Lollipop 中一样 - 我正在 API 23 中使用 setTorchMode 尝试它。我有一个代码实现来打开或关闭手电筒;但是,我不知道如何检查闪存的当前状态。

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();
}

那么,如何在不使用旧相机 API 的情况下实现 getFlashState?是否可以在不捕捉相机的情况下做到这一点?

最佳答案

你可以尝试使用

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;
}
};

并注册回调

CameraManager manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
manager.registerTorchCallback(torchCallback, null);// (callback, handler)

当你想打开/关闭闪光灯时使用

manager.setTorchMode(cameras[i], !flashState);

记得注销回调...

关于android - 获取手电筒(闪光灯)状态以在 android M 中切换它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32865056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com