0Pricing
Android Academy · Pelajaran

Ikhtisar CameraX

Mengapa memilih CameraX daripada API kamera lama.

Ikhtisar CameraX adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Android Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Android Academy mencakup 4 pelajaran total.

Mengapa CameraX?

Menambahkan kamera ke aplikasi Android dulu merupakan hal yang merepotkan. API lama android.hardware.camera2 memang sangat kuat, tetapi sangat panjang dan berperilaku berbeda pada ribuan perangkat yang tersedia.

CameraX adalah pustaka Jetpack yang dibangun di atas Camera2 dan menyediakan API yang sederhana, sadar siklus hidup, serta konsisten. Dalam kursus ini, Anda akan menggunakan CameraX untuk menampilkan pratinjau langsung, mengambil foto, dan merekam video.

Masalah yang Diselesaikan CameraX

CameraX dirancang berdasarkan tiga tujuan:

  • Kemudahan penggunaan—jauh lebih sedikit kode pendukung dibandingkan Camera2.
  • Konsistensi—Google mengujinya pada laboratorium perangkat yang besar, sehingga perangkat yang memiliki perilaku tidak biasa tetap bekerja secara terduga.
  • Kesadaran terhadap siklus hidup—kamera dimulai dan dihentikan secara otomatis mengikuti siklus hidup layar Anda, sehingga kamera tidak terus terbuka.

Anda menjelaskan apa yang diinginkan (pratinjau, foto, atau video), lalu CameraX menentukan cara melakukannya pada perangkat yang sedang digunakan.

Tiga Kasus Penggunaan Inti

CameraX dibangun berdasarkan kasus penggunaan. Kasus penggunaan adalah bagian fungsi kamera yang berdiri sendiri. Tiga kasus utamanya adalah:

  • Preview—menampilkan apa yang dilihat kamera di layar.
  • ImageCapture—mengambil foto.
  • VideoCapture—merekam video.

Anda membuat kasus penggunaan yang diperlukan, lalu mengikat semuanya ke kamera.

// You create the use cases you need:
val preview = Preview.Builder().build()
val imageCapture = ImageCapture.Builder().build()
// Later you bind them to a lifecycle and a camera.

Menambahkan Dependensi

CameraX disediakan sebagai beberapa artefak. Anda menambahkannya ke build.gradle.kts modul Anda. Penyiapan umumnya mencakup pustaka inti, backend camera2, integrasi siklus hidup, dan pembantu tampilan.

Gunakan versi yang sama untuk semua artefak CameraX agar tidak terjadi konflik.

dependencies {
    val cameraxVersion = "1.3.4"
    implementation("androidx.camera:camera-core:$cameraxVersion")
    implementation("androidx.camera:camera-camera2:$cameraxVersion")
    implementation("androidx.camera:camera-lifecycle:$cameraxVersion")
    implementation("androidx.camera:camera-view:$cameraxVersion")
    implementation("androidx.camera:camera-video:$cameraxVersion")
}

Mendeklarasikan Izin

Untuk menggunakan kamera, Anda harus mendeklarasikan izin CAMERA di AndroidManifest.xml. Jika Anda juga merekam video, Anda mungkin memerlukan RECORD_AUDIO.

Ini adalah izin runtime—mendeklarasikannya saja tidak cukup; Anda juga harus memintanya dari pengguna saat runtime (akan dibahas dalam pelajaran berikutnya).

<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature
    android:name="android.hardware.camera.any"
    android:required="false" />

CameraProvider

Titik masuk ke CameraX adalah ProcessCameraProvider. Komponen ini menghubungkan kasus penggunaan ke kamera dan siklus hidup layar Anda.

Anda mendapatkannya secara asinkron dengan getInstance(), yang mengembalikan ListenableFuture. Dari Kotlin, Anda dapat menggunakan await() di dalam coroutine.

import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.camera.core.ExperimentalGetImage

suspend fun Context.getCameraProvider(): ProcessCameraProvider {
    return ProcessCameraProvider.getInstance(this).await()
}

Mengikat Kasus Penggunaan ke Siklus Hidup

Setelah memiliki provider, Anda mengikat kasus penggunaan ke LifecycleOwner dan CameraSelector (kamera depan atau belakang).

Karena pengikatan ini sadar siklus hidup, CameraX otomatis membuka kamera saat layar Anda terlihat dan menutupnya saat tidak terlihat—tanpa perlu pembersihan manual.

val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA

cameraProvider.unbindAll()
cameraProvider.bindToLifecycle(
    lifecycleOwner,
    cameraSelector,
    preview,
    imageCapture
)

Memilih Kamera

CameraSelector memberi tahu CameraX kamera fisik mana yang harus digunakan. Dua pilihan yang paling umum adalah kamera belakang bawaan dan kamera depan bawaan.

Anda juga dapat membuat selector khusus untuk memerlukan karakteristik tertentu, tetapi pilihan bawaan sudah mencukupi untuk hampir semua aplikasi.

// Back camera (most common for photos)
val back = CameraSelector.DEFAULT_BACK_CAMERA

// Front camera (selfies, video calls)
val front = CameraSelector.DEFAULT_FRONT_CAMERA

// Toggle between them by swapping the selector and re-binding.

PreviewView: Permukaan Tampilan

CameraX merender pratinjau langsung ke dalam PreviewView. Komponen ini adalah View Android biasa yang menangani permukaan, penskalaan, dan rotasi untuk Anda.

Di Jetpack Compose, Anda menyematkannya dengan AndroidView, yang memungkinkan Anda menempatkan View klasik di dalam composable. Anda akan menghubungkannya sepenuhnya pada pelajaran berikutnya.

AndroidView(
    factory = { context ->
        PreviewView(context).apply {
            scaleType = PreviewView.ScaleType.FILL_CENTER
        }
    },
    modifier = Modifier.fillMaxSize()
)

Kesadaran Siklus Hidup dalam Praktik

Keunggulan praktis terbesar CameraX adalah kesadarannya terhadap siklus hidup. Dengan Camera2, Anda harus membuka kamera secara manual di onResume dan melepaskannya di onPause. Jika lupa melakukannya, aplikasi dapat mengalami kerusakan atau kamera dapat macet.

Dengan CameraX, setelah Anda menggunakan bindToLifecycle, kerangka kerja menangani semuanya. Saat pengguna berpindah dari layar, kamera dilepas secara otomatis; saat pengguna kembali, kamera dibuka kembali.

// No manual open/close needed.
// bindToLifecycle ties the camera to the screen's
// lifecycle, so it follows onStart/onStop for you.
cameraProvider.bindToLifecycle(lifecycleOwner, selector, preview)

Model Mental Anda

Ingat gambaran ini untuk bagian kursus selanjutnya:

  • Dapatkan ProcessCameraProvider.
  • Buat kasus penggunaan yang diperlukan (Preview, ImageCapture, VideoCapture).
  • Pilih CameraSelector.
  • Gunakan bindToLifecycle untuk menghubungkan semuanya.

Setiap fitur CameraX hanyalah variasi dari empat langkah ini.

Pemeriksaan Singkat

Uji pemahaman Anda tentang dasar-dasar CameraX.

Ringkasan

Sekarang Anda memahami gambaran umum CameraX:

  • CameraX membungkus Camera2 dengan API yang lebih sederhana, lebih konsisten, dan sadar siklus hidup.
  • CameraX dibangun berdasarkan kasus penggunaan: Preview, ImageCapture, dan VideoCapture.
  • Anda menambahkan artefak CameraX, mendeklarasikan izin CAMERA, mendapatkan ProcessCameraProvider, lalu menggunakan bindToLifecycle.
  • CameraSelector memilih kamera depan atau belakang; PreviewView menampilkan umpan kamera.

Selanjutnya, Anda akan menghubungkan pratinjau langsung yang sebenarnya ke layar.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Ikhtisar CameraX” gratis?

Ya — teks lengkap “Ikhtisar CameraX” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Android Academy, upgrade ke CoddyKit PRO. Kursus Android Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Ikhtisar CameraX”?

Mengapa memilih CameraX daripada API kamera lama. Kamu berlatih Android Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Android Academy?

Tidak diperlukan pengalaman sebelumnya. Android Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Ikhtisar CameraX” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Android Academy ini?

Ya. Setiap pelajaran Android Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Ikhtisar CameraX
  2. Menampilkan Pratinjau Kamera
  3. Mengambil Foto
  4. Merekam Video
← Kembali ke Android Academy