Intent kamera

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 apa pun yang lebih kompleks daripada pengambilan gambar atau pengambilan video dasar.