嗨,大家好!
我创建了一个手电筒应用程序,我检查了闪存是否存在:
hasFlash = getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
if (!hasFlash) {
AlertDialog alert = new AlertDialog.Builder(MainActivity.this).create();
alert.setTitle("Error");
alert.setMessage("Sorry, your device doesn't support flashlight!");
alert.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
alert.show();
return;
}
问题出在一些有闪存传感器的旧设备上,但这种检查方法返回false。 (例如,当我在 Vertis 3510你或 Serioux RM X401 上运行时,此检查方法返回false,当我对这些行进行注释时,它可以正常工作。)
还有另一种检查设备是否支持闪存的方法吗?
谢谢!
答案 0 :(得分:2)
使用此代码
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;
}