最近写一个程序,需要根据条件打开摄像头的闪光灯。
在 nexus 5 上没问题,但是到了 nexus 7 就不行。
找了几个网上传的方案,发现都不行。 Android 不同的发行版本对标准API 的支持不一样,连 N7 都不标准:
比如我用这段代码检查时,它竟然不是 null
if (parameters.getFlashMode() == null) {
return false;
}
解决方案:
public boolean hasFlash() {
if (camera == null) {
return false;
}
Camera.Parameters parameters = camera.getParameters();
if (parameters.getFlashMode() == null) {
return false;
}
List<String> supportedFlashModes = parameters.getSupportedFlashModes();
if (supportedFlashModes == null || supportedFlashModes.isEmpty() || supportedFlashModes.size() == 1 && supportedFlashModes.get(0).equals(Camera.Parameters.FLASH_MODE_OFF)) {
return false;
}
return true;
}