0

こんにちは、カスタム ビデオ アプリを開発しています。私はで取得することができcurrentCameraId ます

currentCameraId = Camera.CameraInfo.CAMERA_FACING_BACK;

2 つの質問があります。

1) フロントカメラのみの Android デバイスを検出する方法。

Micromax タブのように前面カメラのみのタブレットでは、currentCameraIdは 0 です。

2) 一部の電話で以下のコードが機能しないため、カメラのフラッシュの可用性を確認する方法

flash = this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

助けてください。

ありがとう!

4

2 に答える 2

7

フラッシュライトが使用可能かどうかを確認するには

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

カメラが使用可能かどうかを確認するには

PackageManager pm = context.getPackageManager();

if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {

}

API レベル 9 (Android 2.3) 以降を使用している場合は、次のようにして (最初の) 正面カメラのインデックスを計算できます。

int getFrontCameraId() {
    CameraInfo ci = new CameraInfo();
    for (int i = 0 ; i < Camera.getNumberOfCameras(); i++) {
        Camera.getCameraInfo(i, ci);
        if (ci.facing == CameraInfo.CAMERA_FACING_FRONT) return i;
    }
    return -1; // No front-facing camera found
}

その後、Camera.open のインデックスを使用できます。

例えば

int index = getFrontCameraId();
if (index == -1) error();
Camera c = Camera.open(index);
于 2014-01-04T12:23:35.803 に答える
0

これを試すことができます

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;
    }
于 2015-11-04T19:17:16.187 に答える