デバイスにカメラLED(懐中電灯)があるかどうかを確認するにはどうすればよいですか。私はAndroidOSを搭載したデバイスについて話しているのですか?
LEDをオン/オフにする方法について説明しているソリューションを見てきましたが、デバイスにLEDがない場合はどうなりますか。
私が使用しているカメラの電源を入れるためcamera.open()
デバイスにカメラLED(懐中電灯)があるかどうかを確認するにはどうすればよいですか。私はAndroidOSを搭載したデバイスについて話しているのですか?
LEDをオン/オフにする方法について説明しているソリューションを見てきましたが、デバイスにLEDがない場合はどうなりますか。
私が使用しているカメラの電源を入れるためcamera.open()
他の答え
boolean hasFlash = this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
新しい2013Nexus7では機能しません。次のコードが機能します。
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;
}
getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)
デバイスにフラッシュがある場合はtrueを返します。詳細についてはこちらをご覧ください
システムの機能を確認することで、フラッシュが使用可能かどうかを確認できるはずです。
boolean hasFlash = this.getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
(あなたがにいるという条件でActivity
)。context
そうでない場合は、の代わりに何らかのものを使用してthis
ください。
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();
}
これは、LEDフラッシュが利用可能かどうかを確認する方法です。また、このメソッドを実行するためにCamera権限を持っている必要はありません。
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
}