Aby wykonywać podstawowe czynności związane z aparatem, 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 Intent
.
Robienie zdjęć za pomocą aplikacji Aparat
Android przekazuje działania do innych aplikacji, wywołując Intent
. Ten proces obejmuje 3 elementy: sam Intent
, wywołanie, które uruchamia zewnętrzny Activity
, oraz kod do obsługi danych obrazu, gdy fokus powró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 } }
Nagrywanie filmu za pomocą aplikacji Aparat
Możesz też wywołać 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 metodę resolveActivity()
. Zwraca ona pierwszy komponent aktywności, który może obsłużyć Intent
. Sprawdź, czy wywołujesz funkcję Intent
, która nie spowoduje awarii aplikacji.
Dodatkowe materiały
W przypadku podstawowych działań kamery użyj Intent
. W przypadku bardziej złożonych zadań niż podstawowe robienie zdjęć i nagrywanie filmów zalecamy używanie bibliotek Camera2 i CameraX.