Untuk melakukan tindakan kamera dasar seperti mengambil foto atau merekam video dengan aplikasi kamera default perangkat, Anda tidak perlu berintegrasi dengan library Camera. Sebagai gantinya, gunakan Intent
.
Mengambil foto dengan aplikasi kamera
Android mendelegasikan tindakan ke aplikasi lain dengan memanggil Intent
. Proses ini terdiri dari tiga bagian: Intent
itu sendiri, panggilan untuk memulai Activity
eksternal, dan kode untuk menangani data gambar saat fokus beralih kembali ke aktivitas Anda.
Berikut adalah fungsi yang memanggil Intent
untuk mengambil foto.
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 } }
Merekam video dengan aplikasi kamera
Anda juga dapat memanggil Intent
untuk merekam video.
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 } }
Metode startActivityForResult()
dilindungi oleh kondisi yang memanggil resolveActivity()
, yang menampilkan komponen aktivitas pertama yang dapat menangani Intent
. Lakukan pemeriksaan ini untuk memastikan bahwa Anda memanggil Intent
yang tidak akan membuat aplikasi Anda error.
Referensi Lainnya
Untuk tindakan kamera dasar, gunakan Intent
. Jika tidak, sebaiknya gunakan library Camera2 dan CameraX untuk hal yang lebih kompleks daripada pengambilan gambar atau perekaman video dasar.