API 21では Camera 2 APIを使用する必要があるため、すべての古い回答のメソッドは Google によって廃止されています (おそらくこのような問題のため) 。
このクラスは、API レベル 21 で廃止されました。新しいアプリケーションには、新しい android.hardware.camera2 API を使用することをお勧めします。
新しい 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"