如何检查设备是不是有闪光灯 LED android
Posted
技术标签:
【中文标题】如何检查设备是不是有闪光灯 LED android【英文标题】:how to check if device has flash light led android如何检查设备是否有闪光灯 LED android 【发布时间】:2012-11-05 00:31:32 【问题描述】:如何检查设备是否有摄像头 LED(手电筒)。我说的是安卓操作系统的设备?
我已经看到一些解决方案,其中讨论了如何打开和关闭 LED,但是如果设备甚至没有 LED 会发生什么。
为了打开我正在使用的相机camera.open()
【问题讨论】:
你有没有为你的问题找到解决方案,因为我也在寻找相同问题的解决方案.. 我已检查为已回答的答案 【参考方案1】:其他答案
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;
【讨论】:
hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH) 在 Wildfire S 上不起作用。您的方法对我来说很好,在 Nexus 4、Nexus 5、Xperia Z1、Note 3、Wildfire S 和 Galaxy S (i9000,没有闪光灯)。 第一个解决方案适用于三星 S5,第二个不行。 @PrimožKralj 感谢您提供的信息,上述哪些检查在 S5 上失败了?您是否有另一种适用于两者的解决方案? 我目前无法在任何其他设备上进行测试,但会在接下来的几天内尝试并报告。我所做的是在这个答案中结合了这两种方法:首先检查第一种方法,如果它返回 false(没有 flash),请继续使用第二种方法。 这两种解决方案都不适用于联想平板电脑 TB-X304L【参考方案2】:getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)
如果设备有闪存,则返回 true。详情请见this
【讨论】:
【参考方案3】:您应该可以通过检查系统功能来检查闪存是否可用:
boolean hasFlash = this.getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
(前提是您在 Activity
中)。如果不是,请使用某种context
代替this
。
附:请注意,如果您真的尝试搜索,则很容易找到此信息。
【讨论】:
【参考方案4】: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();
【讨论】:
【参考方案5】:这是我检查 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
【讨论】:
以上是关于如何检查设备是不是有闪光灯 LED android的主要内容,如果未能解决你的问题,请参考以下文章
求个JAVA格式的闪光灯手电筒软件,是控制LED闪光灯的不是屏显得! 只要JAR格式的!!
如何在 android 中检查我的 android 设备是不是有互联网连接? [复制]