Как запустить переднюю камеру с намерением?

Я использую намерение открыть камеру с помощью собственного приложения:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); Uri photoUri = Uri.fromFile(getOutputPhotoFile()); intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); startActivityForResult(intent, CAMERA_PHOTO_REQUEST_CODE); 

Каждый раз, когда камера, которая открывается (передняя / задняя камера), как и в прошлый раз, была открыта. Это означает, что если в последний раз я закрыл приложение собственной камеры, камера заднего вида была активной, поэтому, когда я запустил намерение камеры, задняя камера будет активна.

Я хочу запустить прямо переднюю камеру с намерением. Кто-нибудь знает, как это сделать?

Осторожно: его взломать

Добавьте это к намерению

 intent.putExtra("android.intent.extras.CAMERA_FACING", 1); 

Это решение не является устойчивым, оно использует тестовый код приложения «Камера». Для получения дополнительной информации смотрите статический метод getCameraFacingIntentExtras в classе Util проекта AOSP Camera.

Обновление: похоже, что он отключен в L

Взятый из ярлыка Google Camera для Android 7.1 (но должен работать со старыми андроидами)

 intent.putExtra("android.intent.extra.USE_FRONT_CAMERA", true); 

Таким образом, в сочетании с предыдущими ответами, это работает для меня на всех телефонах, которые я мог бы проверить на

 intent.putExtra("android.intent.extras.CAMERA_FACING", android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT); intent.putExtra("android.intent.extras.LENS_FACING_FRONT", 1); intent.putExtra("android.intent.extra.USE_FRONT_CAMERA", true); 

Нет никакого намерения (AFAIK), который специально нацелен на переднюю камеру.

Для этого программно: Android SDK <= 2.2 поддерживает только одну камеру (первую обратную камеру). Для 2.3+ вы можете зацикливаться на камерах и выяснить, какая передняя сторона (если доступна). Это будет что-то вроде ...

 Camera cam = null; Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); for (int camNo = 0; camNo < Camera.getNumberOfCameras(); camNo++) { CameraInfo camInfo = new CameraInfo(); Camera.getCameraInfo(camNo, camInfo); if (camInfo.facing.equals(Camera.CameraInfo.CAMERA_FACING_FRONT)) { cam = Camera.open(camNo); } } if (cam == null) { // no front-facing camera, use the first back-facing camera instead. // you may instead wish to inform the user of an error here... cam = Camera.open(); } // ... do stuff with Camera cam ... 

Этот пример является только скелетом и не обеспечивает какой-либо (очень необходимой) обработки ошибок.

EDIT: вам также нужно добавить их в свой манифест:

    

Пробовали ли вы просматривать adb logcat при переключении на переднюю камеру в приложении вашей собственной камеры? Если это действительно другая деятельность, то она будет отображаться как таковая, и вы можете просто скопировать намерение в свою заявку. Если он не появится, вам не повезло, я думаю.

Попробуй это:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { intent.putExtra("android.intent.extras.LENS_FACING_FRONT", 1); } else { intent.putExtra("android.intent.extras.CAMERA_FACING", 1); } 
  • Как автоматически автофокусировать камеру Android?
  • Разрешение отказа: запрещено отправлять трансляцию в android
  • Как измерить высоту, ширину и расстояние объекта с помощью камеры?
  • Ионный 2: Кордова недоступна. Обязательно включите cordova.js или запустите в устройстве / симуляторе (работает в эмуляторе)
  • Применение пользовательских фильтров к выходу камеры
  • Можно ли использовать переднюю и заднюю камеры одновременно в Android
  • Извлечь черно-белое изображение из формата NV21 от андроидной камеры
  • OpenCV на Mac не открывает USB-камеру USB
  • Как сделать несколько фотографий, прежде чем отклонить намерение камеры?
  • Камера Android вращается
  • Получение вращения из ExifInterface всегда возвращает 0
  • Interesting Posts
    Давайте будем гением компьютера.