最近写一个程序,需要根据条件打开摄像头的闪光灯。
在 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; }
原文:http://blog.csdn.net/yajun0601/article/details/38683225