Все методы более старых ответов устарели Google (предположительно из-за таких неприятностей), поскольку API 21 вам нужно use Camera 2 API:
Этот класс был устаревшим в уровне API 21. Мы рекомендуем использовать новый android.hardware.camera2 API для новых приложений.
В the newer 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 внутри устройства не может точно узнать, какая камера именно там по некоторым причинам: возможно, единственный идентификатор жесткого диска камеры - это целое число, представляющее его важность, или, возможно, на некоторых устройствах, какая бы сторона вы ни поворачивали, будет ... " назад».
Документация: https://developer.android.com/reference/android/hardware/camera2/package-summary.html
Явные Примеры: https://github.com/googlesamples/android-Camera2Basic
Для старшего API (не рекомендуется, так как он не будет работать на современных телефонах новый Android версии и передача - это боль в заднице). Просто используйте один и тот же Integer CameraID (1), чтобы открыть фронтальную камеру, как в this answer:
cam = Camera.open(1);
Если вы доверяете OpenCV сделать часть камеры:
Внутри
<org.opencv.android.JavaCameraView
../>
используйте для лобовой камеры следующее:
opencv:camera_id="1"
возможно дубликат [Как использовать Фронтальная камера на Samsung Galaxy S] (http://stackoverflow.com/questions/4241292/how-to-use-front-facing-camera-on-samsung-galaxy-s) – voyager