Java getPackageManager().hasSystemFeature(PackageManager.FEATURE\u CAMERA\u FLASH)返回false
嗨,伙计们Java getPackageManager().hasSystemFeature(PackageManager.FEATURE\u CAMERA\u FLASH)返回false,java,android,Java,Android,嗨,伙计们 我创建了一个手电筒应用程序,并检查了是否存在这样的手电筒: hasFlash = getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH); if (!hasFlash) { AlertDialog alert = new AlertDialog.Builder(MainActivity.this).create();
我创建了一个手电筒应用程序,并检查了是否存在这样的手电筒:
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;
}
问题出在一些带有闪光传感器的旧设备上,但这种检查方法返回错误。(例如,当我在Vertis 3510上运行它时,您或Serioux RM X401此检查方法返回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;
}
public boolean hasFlash(){
如果(摄像机==null){
返回false;
}
Camera.Parameters=Camera.getParameters();
if(parameters.getFlashMode()==null){
返回false;
}
List supportedFlashModes=参数。getSupportedFlashModes();
if(supportedFlashModes==null | | supportedFlashModes.isEmpty()| | supportedFlashModes.size()==1&&supportedFlashModes.get(0).equals(Camera.Parameters.FLASH_MODE_OFF)){
返回false;
}
返回true;
}
既然摄像头从API 21开始就被弃用,如何解决这个问题?:)