Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何检查设备是否有闪光灯led_Android_Android Camera - Fatal编程技术网

Android 如何检查设备是否有闪光灯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

如何检查设备是否有摄像头led(手电筒)。我说的是使用安卓操作系统的设备

我见过一些解决方案,其中谈到如何打开和关闭led,但如果设备甚至没有led会发生什么


对于打开相机,我使用的是
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中都不起作用