Чтобы выполнять основные действия с камерой, такие как съемка фотографий или видео, с помощью приложения камеры устройства по умолчанию, вам не требуется интеграция с библиотекой камеры . Вместо этого используйте Intent
.
Сделайте снимок с помощью приложения камеры
Android делегирует действия другим приложениям, вызывая Intent
. Этот процесс включает в себя три части: само Intent
, вызов для запуска внешнего Activity
и некоторый код для обработки данных изображения, когда фокус возвращается к вашей активности.
Вот функция, которая вызывает Intent
сделать снимок.
Котлин
val REQUEST_IMAGE_CAPTURE = 1 private fun dispatchTakePictureIntent() { val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) try { startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE) } catch (e: ActivityNotFoundException) { // display error state to the user } }
Ява
static final int REQUEST_IMAGE_CAPTURE = 1; private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); try { startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } catch (ActivityNotFoundException e) { // display error state to the user } }
Запишите видео с помощью приложения камеры.
Вы также можете вызвать Intent
для захвата видео.
Котлин
val REQUEST_VIDEO_CAPTURE = 1 private fun dispatchTakeVideoIntent() { Intent(MediaStore.ACTION_VIDEO_CAPTURE).also { takeVideoIntent -> takeVideoIntent.resolveActivity(packageManager)?.also { startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE) } ?: run { //display error state to the user } } }
Ява
static final int REQUEST_VIDEO_CAPTURE = 1; private void dispatchTakeVideoIntent() { Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); if (takeVideoIntent.resolveActivity(getPackageManager()) != null) { startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE); } else { //display error state to the user } }
Метод startActivityForResult()
защищен условием, вызывающимsolveActivity resolveActivity()
, которое возвращает первый компонент активности, который может обработать Intent
. Выполните эту проверку, чтобы убедиться, что вы вызываете Intent
, которое не приведет к сбою вашего приложения.
Дополнительные ресурсы
Для основных действий камеры используйте Intent
. В противном случае рекомендуется использовать библиотеки Camera2 и CameraX для чего-то более сложного, чем простой захват изображений или видео.