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 integrować się z biblioteką aparatu. Zamiast niego użyj elementu Intent
.
Robienie zdjęć za pomocą aplikacji aparatu
Android przekazuje działania innym aplikacjom, wywołując Intent
. Ten proces składa się z 3 elementów: samego Intent
, wywołania zewnętrznego Activity
i kodu do obsługi danych obrazu po powrocie do aktywności.
Oto funkcja, która wywołuje Intent
, by 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ć Intent
, aby przechwycić 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 wywołujący metodę resolveActivity()
, która zwraca pierwszy komponent aktywności, który może obsłużyć Intent
. Przeprowadź tę kontrolę, aby upewnić się, że wywołujesz Intent
, który nie powoduje awarii aplikacji.
Dodatkowe materiały
Do podstawowych działań związanych z aparatem użyj Intent
. W przeciwnym razie zalecamy korzystanie z bibliotek Camera2 i CameraX w przypadku bardziej złożonych zadań niż zwykłe wykonywanie zdjęć czy filmów.