如何检查设备是否有闪光灯导致android

问题描述 投票:22回答:4

如何检查设备是否装有相机指示灯(手电筒)。我说的是具有Android OS的设备?

我已经看到了一些解决方案的解决方案,这些解决方案讨论了如何打开和关闭LED,但是如果设备甚至没有LED也会发生什么。

用于打开我正在使用的相机camera.open()

android android-camera
4个回答
45
投票

其他答案

boolean hasFlash = this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

不适用于新的2013 Nexus7。以下代码将起作用:

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;
    }

6
投票

getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)如果设备有闪光灯,则返回true。有关更多详细信息,请参见this


3
投票

您应该能够通过检查系统功能来检查闪光灯是否可用:


2
投票
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();
}
© www.soinside.com 2019 - 2024. All rights reserved.