Android 如何检查设备是否有闪光灯led
如何检查设备是否有摄像头led(手电筒)。我说的是使用安卓操作系统的设备 我见过一些解决方案,其中谈到如何打开和关闭led,但如果设备甚至没有led会发生什么Android 如何检查设备是否有闪光灯led,android,android-camera,Android,Android Camera,如何检查设备是否有摄像头led(手电筒)。我说的是使用安卓操作系统的设备 我见过一些解决方案,其中谈到如何打开和关闭led,但如果设备甚至没有led会发生什么 对于打开相机,我使用的是camera.open()getPackageManager()。如果设备有闪光灯,则hasSystemFeature(PackageManager.FEATURE\u camera\u FLASH)返回true。有关更多详细信息,请参阅。您应该能够通过检查系统功能来检查闪存是否可用: boolean hasFla
对于打开相机,我使用的是
camera.open()
getPackageManager()。如果设备有闪光灯,则hasSystemFeature(PackageManager.FEATURE\u camera\u FLASH)
返回true。有关更多详细信息,请参阅。您应该能够通过检查系统功能来检查闪存是否可用:
boolean hasFlash = this.getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
(前提是您正在进行活动
)。如果没有,则使用某种上下文
代替此
请注意,如果您确实尝试搜索此信息,则很容易找到它。其他答案
PackageManager pm = context.getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
Log.e("err", "Device has no camera!");
return;
}
camera = Camera.open();
p = camera.getParameters();
flashModes = p.getSupportedFlashModes();
if(flashModes==null){
Toast.makeText(getApplicationContext(), "LED Not Available",Toast.LENGTH_LONG).show();
}else
{
Toast.makeText(getApplicationContext(), "LED Available",Toast.LENGTH_LONG).show();
}
boolean hasFlash = this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
不适用于新的2013 Nexus 7。以下代码将起作用:
public boolean hasFlash() {
if (camera == null) {
return false;
}
Camera.Parameters parameters;
try {
parameters = camera.getParameters();
} catch (RuntimeException ignored) {
return false;
}
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;
}
摄像机参数;
试一试{
parameters=camera.getParameters();
}捕获(忽略运行时异常){
返回false;
}
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;
}
这是我检查LED闪光灯是否可用的方法。此外,运行此方法不需要相机权限
private fun isLedFlashAvailable(context: Context): Boolean {
// method 1
if (context.packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) {
return true
}
// method 2
val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
for (id in cameraManager.cameraIdList) {
if (cameraManager.getCameraCharacteristics(id).get(CameraCharacteristics.FLASH_INFO_AVAILABLE) == true) {
return true
}
}
return false
}
你的问题得到解决方案了吗bcoz我也在寻找相同问题的解决方案..我所检查的答案是作为答案的HassystemFeature(PackageManager.FEATURE_CAMERA_FLASH)在Wildfire S上不起作用。你的方法对我很有效,在Nexus 4、Nexus 5、Xperia Z1、注3、Wildfire S和Galaxy S(i9000,无FLASH)上进行了测试.第一个解决方案适用于三星S5,第二个解决方案不适用。@PrimožKralj感谢您提供的信息,上面哪些检查在S5上失败了?您是否有另一种解决方案可以同时适用于这两种设备?我现在无法在任何其他设备上进行测试,但将在接下来的几天内尝试并报告。我所做的是在这个答案中结合了两种方法:首先用第一种方法检查,如果返回false(无闪存),则继续使用第二种方法。这两种解决方案在联想平板电脑TB-X304L中都不起作用