Aby wykonywać podstawowe czynności związane z kamerą, takie jak robienie zdjęć lub nagrywanie filmów za pomocą domyślnej aplikacji aparatu na urządzeniu, nie musisz integrować się z biblioteką aparatu. Zamiast tego użyj elementu Intent
.
Robienie zdjęć za pomocą aplikacji aparatu
Android deleguje działania do innych aplikacji, wywołując Intent
. Ten proces obejmuje 3 elementy: samą funkcję Intent
, wywołanie do uruchomienia zewnętrznej funkcji Activity
oraz kod do obsługi danych obrazu, gdy fokus wróci do Twojej aktywności.
Oto funkcja, która wywołuje Intent
, aby zrobić zdjęcie.
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 } }
Nagraj film za pomocą aplikacji aparatu
Możesz też użyć Intent
, aby nagrać film.
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 } }
Metoda startActivityForResult()
jest chroniona przez warunek, który wywołuje funkcję resolveActivity()
, zwracającą pierwszy komponent aktywności, który może obsłużyć funkcję Intent
. Wykonaj to sprawdzenie, aby upewnić się, że wywołujesz Intent
, który nie spowoduje awarii aplikacji.
Dodatkowe materiały
Do wykonywania podstawowych czynności związanych z kamerą użyj Intent
. W przeciwnym razie zalecamy używanie bibliotek Camera2 i CameraX do wykonywania bardziej złożonych czynności niż podstawowe przechwytywanie obrazu lub wideo.