Открытие передней камеры

Я застрял с проблемой невозможности заставить пользователя открыть переднюю камеру по умолчанию.

Мне интересно, есть ли какой-нибудь полупрямый способ сделать это, будь то использование Camera2 API, Intent или даже стороннего API.

Я не хочу хранить фотографию на телефоне пользователя, поскольку я передаю ее в растровое изображение, а затем в 64-битную строку для удаленного хранения.

Кто-нибудь может дать совет?

cameraConfig.setCameraId (1) для Camera и Camera2 API по намерению для намерения это должно быть похоже на intent.putExtra ("android.intent.extras.CAMERA_FACING", 1), но намеренно пользователь может просто повернуть камеру в обратном направлении.

Marcos Vasconcelos 11.07.2018 17:17

@MarcosVasconcelos Я пробовал с дополнительным положением, но, похоже, это не имеет никакого значения, камера все равно будет запускаться с задней камерой.

Joshua Best 11.07.2018 17:24

Намерение cameraIntent = newIntent (MediaStore.ACTION_IMAGE_CAPTURE); cameraIntent.putExtra ("android.intent.extras.CAMERA_FACING", 1); startActivityForResult (cameraIntent, CAMERA_REQUEST);

Joshua Best 11.07.2018 17:25

Чтобы использовать Camera2 API, вам нужно прикрепить предварительный просмотр к SurfaceView, это намного больше работы, не знаю, как успешно сообщить (любое) приложение камеры, намеренное использовать переднюю камеру (поскольку это может быть проигнорировано приложениями третьей камеры)

Marcos Vasconcelos 11.07.2018 18:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
1 373
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

mCamera = Camera.open(1); // for front camera

mCamera = Camera.open(0); // for Rear camera

И не забудьте добавить эти разрешения в свой манифест:

<uses-permission android:name = "android.permission.CAMERA" />
<uses-feature android:name = "android.hardware.camera" android:required = "false" />
<uses-feature android:name = "android.hardware.camera.front"    android:required = "false" />

Я пробовал это, но он говорит мне, что API камеры избыточен. И когда я запускаю приложение, ничего не происходит.

Joshua Best 11.07.2018 17:37

В качестве альтернативы вы можете попробовать следующее: Намерение намерения = новое намерение (MediaStore.ACTION_IMAGE_CAPTURE); Uri photoUri = Uri.fromFile (getOutputPhotoFile ()); intent.putExtra (MediaStore.EXTRA_OUTPUT, photoUri); intent.putExtra ("android.intent.extras.CAMERA_FACING", 1); startActivityForResult (намерение, CAMERA_PHOTO_REQUEST_CODE);

Belbahar Raouf 11.07.2018 18:10
Ответ принят как подходящий

Вы можете использовать ACTION_IMAGE_CAPTURE Intent для использования приложения камеры по умолчанию с помощью startActivityForResult ().

Или вы можете использовать эту библиотеку https://github.com/CameraKit/camerakit-android.

Или этот https://github.com/RedApparat/Fotoapparat.

Естественно, оригинальный Camera API (версия 1) также возможен.

Другие вопросы по теме