Alle Methoden ältere Antworten werden von Google als veraltet (angeblich wegen Beschwerden wie diese), da API 21 Sie müssen verwenden die Kamera 2 API:
Diese Klasse wurde in API-Level 21 nicht mehr unterstützt. Wir empfehlen, die neue API android.hardware.camera2 für neue Anwendungen zu verwenden.
In der neueren API haben Sie fast die volle Macht über die Android-Gerätekamera und Dokumentation ausdrücklich empfohlen
String[] getCameraIdList()
und öffnen Sie die Kamera mit der erhaltenen CameraId:
void openCamera(String cameraId, CameraDevice.StateCallback callback, Handler handler)
99% der frontalen Kameras hat id = „1“, und die Rückseite der Kamera - ID = „0“
nach dieser:
Nicht entfernbare Kameras verwenden Ganzzahlen ab 0 für ihre Kennungen, während entfernbare Kameras für jedes einzelne Gerät eine eindeutige Kennung haben, selbst wenn sie dasselbe Modell sind.
Dies bedeutet jedoch , dass Sie , wenn eine Gerätesituation selten ist, wie z. B. ein Tablet mit 1 Frontalkamera, die Anzahl der eingebetteten Kameras zählen und die Reihenfolge der Kamera nach ihrer Wichtigkeit ("0") festlegen müssen . Also CAMERA_FACING_FRONT == 1 CAMERA_FACING_BACK == 0, was bedeutet, dass die Rückkamera wichtiger ist als die Frontkamera .
Ich kenne keine einheitliche Methode zur Identifizierung der Frontkamera auf allen Android-Geräten. Einfach gesagt, das Android-Betriebssystem im Gerät kann aus bestimmten Gründen nicht wirklich herausfinden, welche Kamera genau wo ist: Vielleicht ist die einzige fest codierte Kamera-ID eine Ganzzahl, die ihre Bedeutung darstellt, oder auf einigen Geräten, egal auf welcher Seite Sie sich befinden. " zurück".
Dokumentation : https://developer.android.com/reference/android/hardware/camera2/package-summary.html
Explizite Beispiele : https://github.com/googlesamples/android-Camera2Basic
Für die ältere API (es wird nicht empfohlen, da es auf modernen Handys nicht funktioniert, neuere Android-Version und Übertragung ist ein Schmerz im Arsch). Verwenden Sie einfach dieselbe Integer CameraID (1), um die Frontkamera wie in dieser Antwort zu öffnen :
cam = Camera.open(1);
Wenn Sie darauf vertrauen, dass OpenCV den Kamerateil übernimmt:
Innerhalb
<org.opencv.android.JavaCameraView
../>
Verwenden Sie für die Frontkamera Folgendes:
opencv:camera_id="1"