Чтобы выполнять основные действия, например снимать фото или видео с помощью стандартного приложения камеры, не нужно интегрировать библиотеку Camera. Вместо этого используйте Intent.
Как сделать снимок с помощью приложения "Камера"
Android делегирует действия другим приложениям, вызывая Intent. Этот процесс состоит из трех частей: самого Intent, вызова для запуска внешнего Activity и кода для обработки данных изображения, когда фокус возвращается к вашему действию.
Ниже приведена функция, которая вызывает Intent для съемки фотографии.
Kotlin
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
}
}
Java
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, чтобы записать видео.
Kotlin
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
}
}
}
Java
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() защищен условием, которое вызывает resolveActivity(), возвращающий первый компонент действия, который может обработать Intent. Это позволит убедиться, что вы вызываете Intent, который не приведет к сбою приложения.
Дополнительные ресурсы
Для базовых действий с камерой используйте Intent. Для более сложных задач рекомендуется использовать библиотеки Camera2 и CameraX.