Как проверить, имеет ли устройство вспышка светодиодный андроид

Как я могу проверить, нет ли у камеры камеры (фонарик). Я говорю об устройствах с ОС Android?

Я видел решения некоторых решений, которые говорят о том, как включать и выключать светодиод, но что произойдет, если устройство даже не провело.

Для включения камеры я использую camera.open()

Другие ответы

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

Не работает для нового 2013 Nexus 7. Следующий код будет работать:

 public boolean hasFlash() { if (camera == null) { return false; } Camera.Parameters parameters = camera.getParameters(); 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; } 

getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH) возвращает true, если устройство имеет вспышку. См. Это для более подробной информации

Вы должны проверить, доступна ли вспышка, проверяя системные функции:

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

(Если вы находитесь в Activity ). Если нет, используйте вместо this какой-то context .

PS Обратите внимание, что эту информацию довольно легко найти, если вы действительно попытаетесь ее найти.

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