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 obiektu Intent
.
Robienie zdjęć za pomocą aplikacji aparatu
Android deleguje działania do innych aplikacji, wywołując 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 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 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, który wywołuje funkcję resolveActivity()
, która zwraca pierwszy komponent aktywności, który może obsłużyć 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.