24

デバイスにカメラLED(懐中電灯)があるかどうかを確認するにはどうすればよいですか。私はAndroidOSを搭載したデバイスについて話しているのですか?

LEDをオン/オフにする方法について説明しているソリューションを見てきましたが、デバイスにLEDがない場合はどうなりますか。

私が使用しているカメラの電源を入れるためcamera.open()

4

5 に答える 5

47

他の答え

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;
    }
于 2013-10-25T21:01:28.083 に答える
6

getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)デバイスにフラッシュがある場合はtrueを返します。詳細についてはこちらをご覧ください

于 2012-11-16T09:44:19.610 に答える
3

システムの機能を確認することで、フラッシュが使用可能かどうかを確認できるはずです。

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

(あなたがにいるという条件でActivity)。contextそうでない場合は、の代わりに何らかのものを使用してthisください。

PSこの情報は、実際に検索してみれば非常に簡単に見つけることができることに注意してください。

于 2012-11-16T09:44:29.297 に答える
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();
}
于 2012-11-16T09:50:46.693 に答える
1

これは、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
}
于 2020-06-06T12:28:45.660 に答える