API 21부터는 Camera 2 API 를 사용해야 하기 때문에 모든 이전 답변의 메서드는 Google에서 더 이상 사용하지 않습니다 (이와 같은 문제로 인해) .
이 클래스는 API 레벨 21에서 더 이상 사용되지 않습니다. 새 애플리케이션에는 새 android.hardware.camera2 API를 사용하는 것이 좋습니다.
에서 새로운 API , 당신은 거의 완벽한 전력 안드로이드 장치 카메라 및 문서에 명시 적으로 조언 이상을
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 버전에서는 작동하지 않고 전송이 고통스럽기 때문에 권장되지 않습니다). 이 답변 과 같이 전면 카메라를 열려면 동일한 Integer CameraID (1)를 사용하십시오 .
cam = Camera.open(1)
OpenCV 를 신뢰 하여 카메라 부분을 수행하는 경우 :
내부
<org.opencv.android.JavaCameraView
../>
전면 카메라에 다음을 사용하십시오.
opencv:camera_id="1"