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 Tambahan
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.