Bab 1: Selamat Datang di Android Camera2
Pelajari mengapa Android Camera2 penting, perbandingannya dengan Camera1 dan CameraX, apa yang dimungkinkannya, dan apa yang akan Anda bangun dalam seri ini.
Bab 2: Memahami Kamera Smartphone
Jelajahi perangkat keras modul kamera di dalam setiap smartphone: lensa, sensor gambar, prosesor ISP, perbedaan antara RAW dan JPEG, desain multi-kamera, dan perjalanan lengkap dari foton hingga foto yang disimpan.
Bab 3: Fotografi Smartphone Modern
Tur fitur komputasional dan optik pada ponsel modern: HDR, bokeh potret, mode malam, gerak lambat, ultra-lebar, telefoto, makro, dan bagaimana fotografi komputasional menggabungkan perangkat keras dan perangkat lunak.
Bab 4: Jelajahi Ponsel Anda Sendiri
Gunakan aplikasi pendamping Android Camera Parameters untuk memeriksa perangkat Anda sendiri. Pelajari cara membaca ID Kamera, memeriksa Tingkat Perangkat Keras, menghitung kamera, memeriksa format yang didukung, frame rate, rentang zoom, dan kemampuan RAW.
Bab 5: Membuat Proyek Camera2 Pertama Anda
Siapkan proyek Android Camera2 lengkap dari awal. Pelajari tentang izin kamera, inisialisasi CameraManager, threading latar belakang dengan HandlerThread, dan konfigurasi proyek yang diperlukan untuk akselerasi perangkat keras TextureView.
Bab 6: Menemukan Kamera
Hitung dan kueri setiap kamera pada perangkat Android menggunakan CameraCharacteristics. Pelajari semantik ID kamera, arah hadap lensa (depan/belakang/eksternal), kamera USB OTG eksternal, dan hierarki tingkat perangkat keras dari LEGACY hingga LEVEL_3.
Bab 7: Membuka Kamera
Bangun koneksi langsung ke perangkat kamera menggunakan openCamera(). Kuasai siklus hidup CameraDevice, implementasikan StateCallback dengan onOpened/onDisconnected/onError, integrasikan buka/tutup dengan Activity onPause/onResume, dan tangani setiap kode kesalahan CameraAccessException dengan kontrol konkurensi berbasis Semaphore.
Bab 8: Menampilkan Pratinjau Kamera
Rendarkan bingkai kamera langsung di layar menggunakan TextureView, SurfaceTexture, Surface, dan CameraCaptureSession. Implementasikan SurfaceTextureListener, koreksi aspek rasio dengan transformasi Matrix di configureTransform, bangun CaptureRequest TEMPLATE_PREVIEW, dan mulai aliran pratinjau dengan setRepeatingRequest.
Bab 9: Mengambil Foto
Ambil foto diam berkualitas tinggi dengan Camera2 menggunakan ImageReader (JPEG), pemicu AE pra-pengambilan, dan mesin status CaptureCallback. Simpan foto dengan MediaStore yang kompatibel dengan Scoped Storage (Android 10+) dan FileOutputStream lama, selalu ingat untuk menutup buffer Image.
Bab 10: Pipeline Camera2
Pembahasan mendalam tentang arsitektur pipeline Camera2 — CaptureRequest, CaptureResult, antrean permintaan, callback hasil, dan alur ujung-ke-ujung dari pengiriman permintaan hingga pemrosesan HAL dan hasil.
Bab 11: Jenis Pengambilan Gambar
Pelajari tiga jenis pengambilan gambar Camera2 — satu kali (capture), burst (captureBurst), dan berulang (setRepeatingRequest) — ditambah template bawaan (TEMPLATE_PREVIEW, TEMPLATE_STILL_CAPTURE, TEMPLATE_RECORD, dan lainnya).
Bab 12: Pembahasan Mendalam CameraCharacteristics
Kuasai CameraCharacteristics — metadata statis tidak berubah yang menjelaskan setiap kamera sebelum Anda membukanya. Tingkat perangkat keras (LEGACY, LIMITED, FULL, LEVEL_3, EXTERNAL), flag kemampuan, pengorganisasian kunci metadata, dan kueri kemampuan saat runtime.
Bab 13: Eksposur
Kuasai dasar-dasar eksposur fotografi—Segitiga Eksposur dari ISO, kecepatan rana, dan bukaan (aperture). Pahami stop EV, aturan Sunny 16, dan bagaimana berbagai kombinasi menciptakan eksposur yang sama dengan pertukaran kreatif.
Bab 14: Eksposur Manual di Camera2
Ambil kendali kreatif penuh atas eksposur dengan API Android Camera2. Pelajari cara menonaktifkan auto-exposure, menyetel ISO manual melalui SENSOR_SENSITIVITY, mengontrol kecepatan rana dalam nanodetik dengan SENSOR_EXPOSURE_TIME, dan bangun contoh Kotlin yang berfungsi untuk timelapse, eksposur panjang, dan bracketing.
Bab 15: Fokus
Kuasai fokus otomatis dan manual di Android Camera2. Pahami mode AF, mesin status AF, urutan pemicu-dan-ambil satu kali, fokus manual dengan dioptri LENS_FOCUS_DISTANCE, jarak hiperfokal, dan membangun slider SeekBar fokus di Kotlin.
Bab 16: Keseimbangan Putih & Warna
Kontrol warna di Android Camera2 dengan preset Auto White Balance dan koreksi warna manual. Pelajari mode AWB, suhu warna (2000K–10000K), transformasi warna 3×3, COLOR_CORRECTION_GAINS, dan kode Kotlin untuk preset matahari terbenam nada hangat dan keseimbangan putih manual penuh.
Bab 17: Pipeline 3A
Orkestrasikan Auto Exposure (AE), Auto Focus (AF), dan Auto White Balance (AWB) ke dalam urutan pengambilan foto diam yang andal. Pelajari pemicu pra-pengambilan (precapture trigger), mode lampu kilat, mesin status AE/AF, dan bangun kode Kotlin kualitas produksi yang mengoordinasikan ketiga A tersebut sebelum setiap bidikan.
Bab 18: Fotografi RAW
Kuasai format RAW_SENSOR, pembuatan file DNG dengan DngCreator, pola Bayer, dan pengambilan RAW+JPEG secara simultan dalam API Android Camera2
Bab 19: Video Kecepatan Tinggi
Bangun pengambilan gambar gerak lambat 120fps dan 240fps dengan CameraConstrainedHighSpeedCaptureSession, createHighSpeedRequestList, dan rentang FPS StreamConfigurationMap dalam API Android Camera2
Bab 20: Multi-Kamera
Jelajahi perangkat multi-kamera logis Android 9+, ID kamera fisik, sinkronisasi sensor APPROXIMATE vs CALIBRATED, peralihan zoom yang mulus, dan pengambilan fisik ganda simultan melalui OutputConfiguration.setPhysicalCameraId() dalam API Camera2
Bab 21: HDR & Ultra HDR
Implementasikan video HDR10 dan HLG via DynamicRangeProfiles, dan foto diam JPEG_R Android 14 (Ultra HDR ISO 21496-1) dengan arsitektur SDR-primary + gain-map untuk foto rentang dinamis tinggi yang kompatibel ke belakang
Bab 22: Ekstensi Kamera
Gunakan CameraExtensionSession untuk fotografi komputasional yang dipercepat OEM: mode Malam, mode potret Bokeh, ekstensi HDR, Retouch Wajah, dan mode Otomatis. Kueri CameraExtensionCharacteristics, kelola latensi, dan bandingkan arsitektur Sesi Standar vs Sesi Ekstensi.
Bab 23: Zero Shutter Lag & Pemrosesan Ulang
Bangun Zero Shutter Lag (ZSL) dengan buffering YUV/PRIVATE melingkar, CONTROL_CAPTURE_INTENT_ZERO_SHUTTER_LAG, sesi pengambilan gambar yang dapat diproses ulang via InputConfiguration, injeksi ulang bingkai ImageWriter, dan createReprocessCaptureRequest untuk pemrosesan ISP pasca-pengambilan yang berat. Juga mencakup switchToOffline() untuk kontinuitas pemrosesan latar belakang.
Bab 24: CameraX
Kuasai CameraX, pustaka kamera sadar-siklus-hidup milik Jetpack yang membungkus Camera2. Pelajari arsitektur UseCase, Camera2Interop untuk menyuntikkan parameter manual, dan kerangka kerja keputusan untuk memilih CameraX vs Camera2.
Bab 25: Pengembangan Kamera Native
Beralih ke native dengan tumpukan kamera NDK Android. Gunakan ACameraManager untuk membuka kamera dari C++, hubungkan memori AHardwareBuffer secara langsung sebagai tekstur Vulkan untuk AR tanpa salinan, dan pahami interop OpenGL/Vulkan untuk pipeline 60fps. Termasuk konteks migrasi EVS otomotif.
Bab 26: Pemrograman Kamera Asinkron
Jinakkan callback hell Camera2 menggunakan coroutine Kotlin dan Flow. Pelajari suspendCancellableCoroutine untuk operasi satu kali (openCamera, createCaptureSession, capture), callbackFlow untuk aliran ImageReader dan CaptureResult yang berkelanjutan, operator combine untuk UI reaktif, dan pola keamanan thread untuk mencegah ANR dan deadlock.
Bab 27: Pengujian Kamera
Panduan pengujian kamera Android yang lengkap. Pahami Camera ITS (Image Test Suite), apa yang divalidasi OEM sebelum pengiriman (kombinasi fitur, pengujian adegan, fusi sensor), pengujian manual CTS Verifier, dan cara menulis pengujian instrumentasi Anda sendiri dengan mock Mockito dan pengujian tingkat perangkat keras berparameter yang berjalan di CI.
Bab 28: Arsitektur Camera2
Final arsitektur agung Camera2. Telusuri seluruh tumpukan dari aplikasi Kotlin Anda turun melalui Binder IPC, Framework, CameraService di native, Camera3Device, HAL3 dengan camera3_device_t, driver kernel V4L2, dan akhirnya sensor fisik, ISP, lensa VCM, dan perangkat keras lampu kilat. Termasuk persyaratan Treble HAL, pembungkus LEGACY HAL1, dan CameraDeviceSetup Android 15. Peta perjalanan pembaca lengkap ke lapisan-lapisan.
Ensiklopedia Metadata Kamera
Panduan referensi lengkap untuk semua kunci metadata CameraCharacteristics penting termasuk kategori Sensor, Lensa, Kontrol, Scaler, Permintaan, Lampu Kilat, JPEG, Statistik, dan Info.