Aby wykonywać podstawowe czynności związane z aparatem, takie jak robienie zdjęć lub nagrywanie filmów przy użyciu domyślnej aplikacji aparatu na urządzeniu, nie musisz przeprowadzać integracji z biblioteką aparatu. Zamiast tego użyj obiektu Intent
.
Robienie zdjęć za pomocą aplikacji aparatu
Android przekazuje działania innym aplikacjom, wywołując interfejs Intent
. Ten proces składa się z 3 części: samego elementu Intent
, wywołania zewnętrznego obiektu Activity
oraz kodu do obsługi danych obrazu, gdy zaznaczenie wróci do aktywności.
Oto funkcja, która wywołuje funkcję Intent
w celu zrobienia zdjęcia.
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 filmów za pomocą aplikacji aparatu
Możesz też wywołać funkcję Intent
, aby zarejestrować wideo.
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 wywołujący resolveActivity()
, który zwraca pierwszy komponent aktywności, który obsługuje Intent
. Wykonaj to ustawienie, aby mieć pewność, że wywołujesz Intent
, który nie powoduje awarii aplikacji.
Dodatkowe materiały
Do podstawowych działań związanych z aparatem służy Intent
. W przeciwnym razie zaleca się używanie bibliotek Camera2 i AparatuX do bardziej złożonych działań niż podstawowe robienie zdjęć i rejestrowanie filmów.