Как проверить, имеет ли устройство вспышку светодиодный андроид
Как проверить, есть ли у камеры камера (фонарик). Я говорю об устройствах с ОС Android?
Я видел решения некоторых решений, которые говорят о том, как включать и выключать светодиод, но что произойдет, если на устройстве нет даже светодиодов.
для включения камеры я использую 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 = 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;
}
Ответ 2
getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)
возвращает значение true, если устройство имеет вспышку. Подробнее см.
Ответ 3
Вы можете проверить, доступна ли вспышка, проверяя системные функции:
boolean hasFlash = this.getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
(если вы находитесь в Activity
). Если нет, используйте вместо this
какой-то context
.
P.S. Обратите внимание, что эту информацию довольно легко найти, если вы действительно попытаетесь ее найти.
Ответ 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();
}