API 21以降、Camera 2 APIを使用する必要があるため、古い回答のメソッドはすべてGoogleによって非推奨になっています(おそらくこのような問題が原因です)。
このクラスはAPIレベル21で非推奨になりました。新しいアプリケーションには新しいandroid.hardware.camera2APIを使用することをお勧めします。
では、新しいAPIあなたが持っているほぼ完全に電源のAndroidデバイスのカメラやドキュメントに明示的にアドバイスオーバー
String[] getCameraIdList()
次に、取得したCameraIdを使用してカメラを開きます。
void openCamera(String cameraId, CameraDevice.StateCallback callback, Handler handler)
これによると、正面カメラの99%はid = "1"であり、背面カメラID = "0"
です。
取り外し不可能なカメラは、識別子に0から始まる整数を使用しますが、取り外し可能なカメラは、同じモデルであっても、個々のデバイスごとに一意の識別子を持ちます。
ただし、これは、デバイスの状況が1前面カメラタブレットのようにまれな場合は、内蔵カメラの数を数え、その重要度( "0")でカメラを並べ替える必要があることを意味します。したがって、CAMERA_FACING_FRONT == 1 CAMERA_FACING_BACK == 0です。これは、前面よりも背面のカメラの方が重要であることを意味します。
すべてのAndroidデバイスで正面カメラを識別するための統一された方法についてはわかりません。簡単に言うと、デバイス内のAndroid OSは、何らかの理由でどのカメラが正確にどこにあるかを実際に見つけることができません。カメラのハードコードされたIDは、その重要性を表す整数であるか、一部のデバイスではどちら側を向いても..」バック"。
ドキュメント:https://developer.android.com/reference/android/hardware/camera2/package-summary.html
明示的な例:https://github.com/googlesamples/android-Camera2Basic
古いAPIの場合(新しいAndroidバージョンの最新の電話では機能せず、転送は非常に面倒なので、お勧めしません)。この回答のように、同じ整数のCameraID(1)を使用して正面カメラを開きます。
cam = Camera.open(1)
OpenCVがカメラ部分を実行することを信頼している場合:
内部
<org.opencv.android.JavaCameraView
../>
正面カメラには以下を使用します。
opencv:camera_id="1"