how to check if device has flash light led android

前端 未结 5 901
旧巷少年郎
旧巷少年郎 2020-12-10 01:36

How can I check if a device has a camera led (flashlight). I am talking about devices with android OS?

I have seen solutions some solutions which talks about how to

相关标签:
5条回答
  • 2020-12-10 01:39

    The other answers

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

    Does not work for the new 2013 Nexus 7. The following code will work:

    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;
        }
    
    0 讨论(0)
  • 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();
    }
    
    0 讨论(0)
  • 2020-12-10 01:52

    This is how I check if LED flash is available. Also you don't need to have the Camera permission to run this method.

    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
    }
    
    0 讨论(0)
  • 2020-12-10 01:53

    You should be able to check whether the flash is available by checking system features:

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

    (provided you are in an Activity). If not, than use some sort of context in place of this.

    P.S. Note that this information is quite easy to find if you actually try searching for it.

    0 讨论(0)
  • 2020-12-10 02:01

    getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH) returns true if the device has flash. See this for more details

    0 讨论(0)
提交回复
热议问题