如何检查设备是不是有闪光灯 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的主要内容,如果未能解决你的问题,请参考以下文章

在Android中打开相机闪光灯LED? [复制]

求个JAVA格式的闪光灯手电筒软件,是控制LED闪光灯的不是屏显得! 只要JAR格式的!!

使用 camera2 API 检查可用的前置闪光灯

如何在 android 中检查我的 android 设备是不是有互联网连接? [复制]

如何检查 Android 设备上是不是有可用的 Google Play 游戏帐户?

有啥方法可以访问 Android 中的手电筒灯状态。我想以编程方式检查闪光灯是处于开启状态还是关闭状态