CameraX'e Genel Bakış
Eski kamera API'leri yerine neden CameraX kullanılır?
CameraX'e Genel Bakış, CoddyKit'te ücretsiz bir Android Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Android Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Android Academy kursu toplamda 4 dersten oluşur.
Neden CameraX?
Bir Android uygulamasına kamera eklemek eskiden oldukça zahmetliydi. Eski android.hardware.camera2 API'si güçlüdür ancak son derece ayrıntılıdır ve piyasadaki binlerce cihazda farklı şekilde çalışır.
CameraX, Camera2'nin üzerinde çalışan, size basit, yaşam döngüsünü bilen ve tutarlı bir API sunan bir Jetpack kitaplığıdır. Bu kursta canlı önizleme göstermek, fotoğraf çekmek ve video kaydetmek için CameraX kullanacaksınız.
CameraX'in Çözdüğü Sorunlar
CameraX üç hedef doğrultusunda tasarlanmıştır:
- Kullanım kolaylığı — Camera2'ye kıyasla çok daha az tekrarlayan kod.
- Tutarlılık — Google, CameraX'i geniş bir cihaz laboratuvarında test eder; böylece sorunlu cihazlar öngörülebilir şekilde davranır.
- Yaşam döngüsünü izleme — kamera ekranınızın yaşam döngüsüyle birlikte otomatik olarak başlar ve durur; böylece kamerayı açık bırakmazsınız.
Ne istediğinizi (önizleme, fotoğraf veya video) belirtirsiniz; CameraX bunu mevcut cihazda nasıl yapacağını belirler.
Üç Temel Kullanım Senaryosu
CameraX, kullanım senaryoları etrafında yapılandırılmıştır. Kullanım senaryosu, kamera işlevinin kendi içinde bütünlük taşıyan bir parçasıdır. En önemli üçü şunlardır:
Preview— kameranın gördüklerini ekranda gösterir.ImageCapture— fotoğraf çeker.VideoCapture— video kaydeder.
İhtiyacınız olan kullanım senaryolarını oluşturur ve bunları kameraya birlikte bağlarsınız.
// 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.Bağımlılıkları Ekleme
CameraX çeşitli yapıtlar hâlinde sunulur. Bunları modülünüzün build.gradle.kts dosyasına eklersiniz. Tipik bir kurulumda temel kitaplık, camera2 arka ucu, yaşam döngüsü bütünleştirmesi ve görünüm yardımcıları eklenir.
Çakışmaları önlemek için tüm CameraX yapıtlarını aynı sürümde tutun.
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")
}İzinleri Tanımlama
Kamerayı kullanmak için CAMERA iznini AndroidManifest.xml dosyanızda tanımlamanız gerekir. Video da kaydediyorsanız RECORD_AUDIO iznine ihtiyacınız olabilir.
Bunlar çalışma zamanı izinleridir — onları tanımlamak yeterli değildir; kullanıcıdan çalışma zamanında da istemeniz gerekir (bu konu sonraki derslerde ele alınacaktır).
<!-- 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
CameraX'in giriş noktası ProcessCameraProvider'dır. Kullanım senaryolarını kameraya ve ekranınızın yaşam döngüsüne bağlar.
Onu, ListenableFuture döndüren getInstance() ile eşzamansız olarak alırsınız. Kotlin'de bir iş birimi içinde await() kullanarak sonucu bekleyebilirsiniz.
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.camera.core.ExperimentalGetImage
suspend fun Context.getCameraProvider(): ProcessCameraProvider {
return ProcessCameraProvider.getInstance(this).await()
}Kullanım Senaryolarını Yaşam Döngüsüne Bağlama
Sağlayıcıyı aldıktan sonra kullanım senaryolarınızı bir LifecycleOwner'a ve bir CameraSelector'a (ön veya arka kamera) bağlarsınız.
Bağlama işlemi yaşam döngüsünü izlediğinden CameraX, ekranınız görünür olduğunda kamerayı otomatik olarak açar ve görünür olmadığında kapatır; elle temizleme yapmanız gerekmez.
val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
cameraProvider.unbindAll()
cameraProvider.bindToLifecycle(
lifecycleOwner,
cameraSelector,
preview,
imageCapture
)Kamera Seçme
Bir CameraSelector, CameraX'e hangi fiziksel kameranın kullanılacağını bildirir. En yaygın iki seçenek varsayılan arka ve varsayılan ön kameralardır.
Belirli özellikleri zorunlu kılan özel bir seçici de oluşturabilirsiniz; ancak varsayılanlar neredeyse tüm uygulamalar için yeterlidir.
// 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: Görüntüleme Yüzeyi
CameraX, canlı önizlemeyi bir PreviewView içine işler. Bu, yüzey, ölçeklendirme ve döndürme işlemlerini sizin için yöneten normal bir Android View'dır.
Jetpack Compose'da bunu, klasik bir View'ı bileşime yerleştirmenizi sağlayan AndroidView ile gömersiniz. Bunu bir sonraki derste tamamen kuracaksınız.
AndroidView(
factory = { context ->
PreviewView(context).apply {
scaleType = PreviewView.ScaleType.FILL_CENTER
}
},
modifier = Modifier.fillMaxSize()
)Uygulamada Yaşam Döngüsünü İzleme
CameraX'in pratik açıdan en büyük avantajı yaşam döngüsünü izlemesidir. Camera2 ile kamerayı onResume içinde elle açmanız ve onPause içinde serbest bırakmanız gerekirdi; bunu unutmak çökmelere veya takılı kalan bir kameraya neden olabilirdi.
CameraX'te bir kez bindToLifecycle kullandığınızda çerçeve bunların tümünü yönetir. Kullanıcı başka bir ekrana geçtiğinde kamera otomatik olarak serbest bırakılır; geri döndüğünde yeniden açılır.
// 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)Zihinsel Modeliniz
Kursun geri kalanında şu modeli aklınızda tutun:
- Bir
ProcessCameraProvideralın. - İhtiyacınız olan kullanım senaryolarını oluşturun (
Preview,ImageCapture,VideoCapture). - Bir
CameraSelectorseçin. - Her şeyi birbirine bağlamak için
bindToLifecyclekullanın.
Her CameraX özelliği, bu dört adımın bir çeşidinden ibarettir.
Kısa Kontrol
CameraX temellerini anlayıp anlamadığınızı test edin.
Özet
Artık CameraX'in genel yapısını anlıyorsunuz:
- CameraX, Camera2'yi daha basit, daha tutarlı ve yaşam döngüsünü bilen bir API ile sarmalar.
- Kullanım senaryoları üzerine kuruludur:
Preview,ImageCaptureveVideoCapture. - CameraX yapıtlarını eklersiniz,
CAMERAiznini tanımlarsınız, birProcessCameraProvideralırsınız vebindToLifecyclekullanırsınız. - Bir
CameraSelectorön ve arka kamera arasında seçim yapar; birPreviewViewgörüntü akışını gösterir.
Sırada ekranda gerçek bir canlı önizleme oluşturacaksınız.
Sıkça Sorulan Sorular
“CameraX'e Genel Bakış” dersi ücretsiz mi?
Evet — “CameraX'e Genel Bakış” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Android Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Android Academy kursu toplamda 4 dersten oluşur.
“CameraX'e Genel Bakış” dersinde ne öğreneceğim?
Eski kamera API'leri yerine neden CameraX kullanılır? Android Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Android Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Android Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“CameraX'e Genel Bakış” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Android Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Android Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- CameraX'e Genel Bakış
- Kamera Önizlemesi Gösterme
- Fotoğraf Çekme
- Video Kaydetme