【发布时间】:2016-01-21 20:17:07
【问题描述】:
我对最新 Marshmallow 版本中的相机有疑问,尤其是手电筒。 在任何 Marshmallow 之前的版本中,打开/关闭闪光灯所需的操作如下:
private void turnFlashOn(final Camera camera, int flashLightDurationMs) {
if (!isFlashOn()) {
final List<String> supportedFlashModes = camera.getParameters().getSupportedFlashModes();
if (supportedFlashModes != null && supportedFlashModes.contains(Camera.Parameters.FLASH_MODE_TORCH)) {
mParams.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(mParams);
}
}
}
和
private void turnFlashOff(Camera camera) {
if (camera != null) {
final List<String> supportedFlashModes = camera.getParameters().getSupportedFlashModes();
if (supportedFlashModes != null && supportedFlashModes.contains(Camera.Parameters.FLASH_MODE_OFF)) {
mParams.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(mParams);
}
}
}
不幸的是,Marshmallow 设备开始在野外崩溃。不知何故,camera.getParameters() 和 camera.setParameters() 开始失败,并显示如下消息:
RuntimeException: getParameters failed(空参数)
RuntimeException: setParameters 失败
我尝试在获取参数之前启动和停止预览,这不再引发错误。但是,当我调用 camera.startPreview() 时,预览不会恢复。
我担心释放相机并重新打开它是不可能的,因为这需要几秒钟并且会产生糟糕的体验。
关于如何在棉花糖中可靠地打开/关闭手电筒有什么建议吗?
【问题讨论】:
标签: android camera android-camera android-6.0-marshmallow flashlight