Ürün Haberleri
CameraX 1.5 ile tanışın: Güçlü video kaydı ve profesyonel düzeyde görüntü yakalama
Okuma süresi: 7 dakika
CameraX ekibi, 1.5 sürümünün yayınlandığını duyurmaktan heyecan duyuyor. Bu son güncelleme, profesyonel düzeydeki özellikleri parmaklarınızın ucuna getirirken kamera oturumunu her zamankinden daha kolay yapılandırmanıza odaklanıyor.
Video kaydı özelliği sayesinde kullanıcılar artık kolayca etkileyici ağır çekim veya yüksek kare hızlı videolar çekebilir. Daha da önemlisi, yeni Feature Group API (Özellik Grubu API'si) sayesinde 10 bit HDR ve 60 FPS gibi karmaşık kombinasyonları güvenle etkinleştirebilir, böylece desteklenen cihazlarda tutarlı sonuçlar elde edebilirsiniz.
Görüntü yakalama konusunda, işlenmemiş ve sıkıştırılmamış DNG (RAW) dosyalarını yakalama desteği sayesinde maksimum esneklik elde edersiniz. Ayrıca, güçlü kamera uzantılarını kullanırken bile Ultra HDR çıkışından yararlanabilirsiniz.
Bu özelliklerin temelinde, kamera kurulumunu ve yeniden yapılandırmayı kolaylaştıran yeni SessionConfig API yer alıyor. Şimdi bu heyecan verici yeni özelliklerin ayrıntılarına geçelim.
Güçlü Video Kaydı: Yüksek Hız ve Özellik Kombinasyonları
CameraX 1.5, video özelliklerini önemli ölçüde genişleterek daha yaratıcı ve sağlam kayıt deneyimleri sunuyor.
Ağır çekim ve yüksek kare hızlı video
En çok beklenen özelliklerimizden biri olan ağır çekim video özelliği artık kullanıma sunuldu. Artık yüksek hızlı videolar (ör. 120 veya 240 fps) çekip bunları doğrudan etkileyici ağır çekim videolar olarak kodlayabilirsiniz. Alternatif olarak, son derece akıcı videolar üretmek için aynı yüksek kare hızında kayıt yapabilirsiniz.
VideoCapture API'sini biliyorsanız bu işlemi uygulamak kolaydır.
1. Yüksek Hızlı Destek Kontrolü: Cihazın bu özelliği destekleyip desteklemediğini sorgulamak için yeni Recorder.getHighSpeedVideoCapabilities() yöntemini kullanın.
val cameraInfo = cameraProvider.getCameraInfo(cameraSelector)
val highSpeedCapabilities = Recorder.getHighSpeedVideoCapabilities(cameraInfo)
if (highSpeedCapabilities == null) {
// This camera device does not support high-speed video.
return
}2. Kullanım alanını yapılandırın ve bağlayın: Döndürülen videoCapabilities'u (desteklenen video kalitesi bilgilerini içerir) kullanarak HighSpeedVideoSessionConfig oluşturun. Ardından, cameraInfo.getSupportedFrameRateRanges() aracılığıyla desteklenen kare hızı aralıklarını sorgulamanız ve istediğiniz aralığı ayarlamanız gerekir. Ağır çekim videolar kaydetmek için setSlowMotionEnabled(true) işlevini çağırın. Aksi takdirde yüksek kare hızlı videolar kaydedilir. Son adım, videoyu kaydetmeye başlamak için normal Recorder.prepareRecording().start() simgesini kullanmaktır.
val preview = Preview.Builder().build()
val quality = highSpeedCapabilities
.getSupportedQualities(DynamicRange.SDR).first()
val recorder = Recorder.Builder()
.setQualitySelector(QualitySelector.from(quality)))
.build()
val videoCapture = VideoCapture.withOutput(recorder)
val frameRateRange = cameraInfo.getSupportedFrameRateRanges(
HighSpeedVideoSessionConfig(videoCapture, preview)
).first()
val sessionConfig = HighSpeedVideoSessionConfig(
videoCapture,
preview,
frameRateRange = frameRateRange,
// Set true for slow-motion playback, or false for high-frame-rate
isSlowMotionEnabled = true
)
cameraProvider.bindToLifecycle(
lifecycleOwner, cameraSelector, sessionConfig)
// Start recording slow motion videos.
val recording = recorder.prepareRecording(context, outputOption)
.start(executor, {})Uyumluluk ve Sınırlamalar
Yüksek hızlı kayıt için belirli CameraConstrainedHighSpeedCaptureSession ve CamcorderProfile desteği gerekir. Kötü bir kullanıcı deneyimini önlemek için her zaman özellik kontrolü yapın ve yüksek hızlı kaydı yalnızca desteklenen cihazlarda etkinleştirin. Bu özellik şu anda neredeyse tüm Pixel cihazların arka kameralarında ve diğer üreticilerin belirli modellerinde desteklenmektedir.
Daha fazla bilgi için blog yayınını inceleyin.
Özellikleri güvenle birleştirin: Feature Group API
CameraX 1.5, özellik uyumluluğuyla ilgili tahminleri ortadan kaldıran Feature Group API'yi sunar. Android 15'in özellik kombinasyonu sorgusu API'sine dayalı olarak artık birden fazla özelliği birlikte güvenle etkinleştirebilir ve kararlı bir kamera oturumu sağlayabilirsiniz. Özellik grubu şu anda HDR (HLG), 60 FPS, önizleme sabitleme ve Ultra HDR'yi desteklemektedir. Örneğin, Pixel 10 ve Galaxy S25 serisinde HDR, 60 fps ve önizleme sabitleme özelliklerini aynı anda etkinleştirebilirsiniz. Gelecekteki geliştirmelerde 4K kayıt ve ultra geniş yakınlaştırma özelliklerinin yer alması planlanmaktadır.
Özellik grubu API'si iki temel kullanım alanını destekler:
1. Kullanım Alanı: En İyi Kaliteye Öncelik Verme
Özelliklerin mümkün olan en iyi kombinasyonunu kullanarak çekim yapmak istiyorsanız öncelikli bir liste sağlayabilirsiniz. CameraX, bu özellikleri sırayla etkinleştirmeye çalışır ve cihazın tam olarak desteklediği ilk kombinasyonu seçer.
val sessionConfig = SessionConfig(
useCases = listOf(preview, videoCapture),
preferredFeatureGroup = listOf(
GroupableFeature.HDR_HLG10,
GroupableFeature.FPS_60,
GroupableFeature.PREVIEW_STABILIZATION
)
).apply {
// (Optional) Get a callback with the enabled features to update your UI.
setFeatureSelectionListener { selectedFeatures ->
updateUiIndicators(selectedFeatures)
}
}
processCameraProvider.bindToLifecycle(activity, cameraSelector, sessionConfig)Bu örnekte CameraX, özellikleri şu sırayla etkinleştirmeye çalışır:
- HDR + 60 FPS + Önizleme Sabitleme
- HDR + 60 FPS
- HDR + Önizleme Sabitleme
- HDR
- 60 FPS + Önizleme Sabitleme
- 60 FPS
- Sabitlemeyi önizleme
- Yok
2. Kullanım Alanı: Kullanıcıya Yönelik Ayarlar Kullanıcı Arayüzü Oluşturma
Artık uygulamanızın ayarlar kullanıcı arayüzünde hangi özellik kombinasyonlarının desteklendiğini doğru şekilde yansıtabilir ve aşağıdaki resimde gösterildiği gibi desteklenmeyen seçenekler için açma/kapatma düğmelerini devre dışı bırakabilirsiniz.
Bir açma/kapatma düğmesinin grileştirilip grileştirilmeyeceğini belirlemek için özellik kombinasyonu desteğini kontrol etmek üzere aşağıdaki kodları kullanın. Başlangıçta her bir özelliğin durumunu sorgulayın. Bir özellik etkinleştirildikten sonra, uyumluluk kısıtlamaları nedeniyle açma/kapatma düğmelerinin grileştirilmesi gerekip gerekmediğini görmek için kalan özellikleri etkinleştirilen özelliklerle birlikte yeniden sorgulayın.
fun disableFeatureIfNotSuported(
enabledFeatures: Set<GroupableFeature>,
featureToCheck:GroupableFeature
) {
val sessionConfig = SessionConfig(
useCases = useCases,
requiredFeatureGroup = enabledFeatures + featureToCheck
)
val isSupported = cameraInfo.isFeatureGroupSupported(sessionConfig)
if (!isSupported) {
// disable the toggle for featureToCheck
}
}Daha fazla bilgi için lütfen Özellik Grubu blog yayınını inceleyin.
Diğer video iyileştirmeleri
- Eşzamanlı Kamera İyileştirmeleri: CameraX 1.5.1 ile artık kompozisyon modu dışındaki her SingleCameraConfig için Önizleme + ImageCapture + VideoCapture kullanım alanlarını eşzamanlı olarak bağlayabilirsiniz. Ayrıca, kompozisyon modunda (CompositionSettings ile aynı kullanım alanları) artık nihai kompozisyon sonucuna uygulanan
CameraEffectöğesini ayarlayabilirsiniz. - Dinamik Sessize Alma: Artık
PendingRecording.withAudioEnabled(boolean initialMuted)tuşunu kullanarak kaydı sessiz başlatabilir ve kullanıcının daha sonraRecording.mute(boolean muted)tuşunu kullanarak sesi açmasına izin verebilirsiniz. - Yetersiz depolama alanı işleme özelliği iyileştirildi: CameraX artık
VideoRecordEvent.Finalize.ERROR_INSUFFICIENT_STORAGEhatasını güvenilir bir şekilde gönderiyor. Böylece uygulamanız, depolama alanının az olduğu durumlarda sorunsuz bir şekilde çalışabiliyor ve kullanıcıyı bilgilendirebiliyor. - Zayıf Işıkta Geliştirme: Desteklenen cihazlarda (ör. Pixel 10 serisi) karanlık ortamlarda önizleme ve video akışlarını otomatik olarak aydınlatmak için CameraControl.enableLowLightBoostAsync'i etkinleştirebilirsiniz.
Profesyonel Kalitede Resim Yakalama
CameraX 1.5, maksimum kalite ve esneklik isteyen geliştiriciler için ImageCapture'da önemli yükseltmeler sunuyor.
DNG (RAW) yakalama ile yaratıcı kontrolü serbest bırakın
CameraX, artık DNG (RAW) yakalamayı destekleyerek sonradan işleme üzerinde tam kontrol sağlar. Bu sayede, doğrudan kamera sensöründen işlenmemiş ve sıkıştırılmamış görüntü verilerine erişebilir, profesyonel düzeyde düzenleme ve renk derecelendirme yapabilirsiniz. API, DNG dosyasının tek başına yakalanmasını veya eşzamanlı JPEG ve DNG çıkışlarının yakalanmasını destekler. JPEG ve DNG dosyalarını aynı anda yakalama hakkında bilgi edinmek için aşağıdaki örnek koda bakın.
val capabilities = ImageCapture.getImageCaptureCapabilities(cameraInfo)
val imageCapture = ImageCapture.Builder().apply {
if (capabilities.supportedOutputFormats
.contains(OUTPUT_FORMAT_RAW_JPEG)) {
// Capture both RAW and JPEG formats.
setOutputFormat(OUTPUT_FORMAT_RAW_JPEG)
}
}.build()
// ... bind imageCapture to lifecycle ...
// Provide separate output options for each format.
val outputOptionRaw = /* ... configure for image/x-adobe-dng ... */
val outputOptionJpeg = /* ... configure for image/jpeg ... */
imageCapture.takePicture(
outputOptionRaw,
outputOptionJpeg,
executor,
object : ImageCapture.OnImageSavedCallback {
override fun onImageSaved(results: OutputFileResults) {
// This callback is invoked twice: once for the RAW file
// and once for the JPEG file.
}
override fun onError(exception: ImageCaptureException) {}
}
)Kamera Uzantıları için Ultra HDR
Hem Kamera Uzantıları'nın (ör. Gece Modu) çarpıcı hesaplamalı fotoğrafçılığını hem de Ultra HDR'nin mükemmel renk ve dinamik aralığını bir arada kullanın. Bu özellik artık Pixel 9/10 serisi ve Samsung S24/S25 serisi gibi birçok yeni premium Android telefonda destekleniyor.
// Support UltraHDR when Extension is enabled.
val extensionsEnabledCameraSelector = extensionsManager
.getExtensionEnabledCameraSelector(
CameraSelector.DEFAULT_BACK_CAMERA, ExtensionMode.NIGHT)
val imageCapabilities = ImageCapture.getImageCaptureCapabilities(
cameraProvider.getCameraInfo(extensionsEnabledCameraSelector)
val imageCapture = ImageCapture.Builder()
.apply {
if (imageCapabilities.supportedOutputFormats
.contains(OUTPUT_FORMAT_JPEG_ULTRA_HDR) {
setOutputFormat(OUTPUT_FORMAT_JPEG_ULTRA_HDR)
}
}.build()Temel API ve Kullanılabilirlik Geliştirmeleri
Yeni bir yapılandırma yöntemi: SessionConfig
Yukarıdaki örneklerde görüldüğü gibi, SessionConfig, CameraX 1.5'te yeni bir kavramdır. Yapılandırmayı merkezileştirir ve API'yi iki temel şekilde basitleştirir:
- Artık Manuel
unbind()Çağrı Yok: CameraX API'leri yaşam döngüsünün farkındadır. Etkinlik veya diğerLifecycleOwneryok edildiğinde kullanım alanlarınızın bağlantısını örtülü olarak "kaldırır". Ancak kullanım alanlarını güncellemek veya kameralar arasında geçiş yapmak için yeniden bağlamadan önce hâlâunbind()veyaunbindAll()'ı çağırmanız gerekir. Artık CameraX 1.5 ile yeni birSessionConfigbağladığınızda CameraX, oturumu sizin için sorunsuz bir şekilde güncelleyerek bağlantıyı kaldırma çağrılarına gerek kalmaz. - Belirleyici kare hızı kontrolü: Yeni
SessionConfigAPI, kare hızını yönetmek için belirleyici bir yöntem sunar. Yalnızca bir ipucu olan öncekisetTargetFrameRateyönteminin aksine, bu yeni yöntem, belirtilen kare hızı aralığının başarılı bir yapılandırmanın ardından uygulanacağını garanti eder. Doğruluğu sağlamak içinCameraInfo.getSupportedFrameRateRanges(SessionConfig)kullanarak desteklenen kare hızlarını sorgulamanız gerekir. CameraX, tamSessionConfigdeğerini ileterek akış yapılandırmalarına göre desteklenen aralıkları doğru bir şekilde belirleyebilir.
Kamera ile Beste özelliği artık kararlı
Jetpack Compose'u ne kadar çok sevdiğinizi biliyoruz. Bu nedenle, camera-compose kitaplığının artık 1.5.1 sürümünde kararlı olduğunu duyurmaktan heyecan duyuyoruz. Bu sürümde, moveableContentOf ve Pager gibi Compose özellikleriyle CameraXViewfinder kullanımıyla ilgili kritik hata düzeltmelerinin yanı sıra önizleme uzatma sorunu da giderildi. Gelecekteki sürümlerde camera-compose'ya daha fazla özellik eklemeye devam edeceğiz.
ImageAnalysis ve CameraControl'da İyileştirmeler
- Fener Gücü Ayarı: Yeni API'ler sayesinde cihazın feneri üzerinde ayrıntılı kontrol elde edin. CameraInfo.getMaxTorchStrengthLevel() kullanarak desteklenen maksimum gücü sorgulayabilir, ardından CameraControl.setTorchStrengthLevel() ile istediğiniz seviyeyi ayarlayabilirsiniz.
- NV21 desteği
ImageAnalysis: Artık NV21 görüntü biçimini doğrudanImageAnalysis'den isteyebilirsiniz. Bu sayede diğer kitaplıklar ve API'lerle entegrasyon kolaylaşır. Bu özellik,ImageAnalysis.Builder.setOutputImageFormat(OUTPUT_IMAGE_FORMAT_NV21)çağrılarak etkinleştirilir.
Başlangıç Adımları
Bağımlılıklarınızı bugün CameraX 1.5'e güncelleyin ve heyecan verici yeni özellikleri keşfedin. Neler oluşturacağınızı görmek için sabırsızlanıyoruz.
CameraX 1.5'i kullanmak için lütfen libs.versions.toml dosyanıza aşağıdaki bağımlılıkları ekleyin. (Birçok kritik hata düzeltmesi ve eşzamanlı kamera iyileştirmesi içeren 1.5.1 sürümünü kullanmanızı öneririz.)
[versions]
camerax = "1.5.1"
[libraries]
..
androidx-camera-core = { module = "androidx.camera:camera-core", version.ref = "camerax" }
androidx-camera-compose = { module = "androidx.camera:camera-compose", version.ref = "camerax" }
androidx-camera-view = { module = "androidx.camera:camera-view", version.ref = "camerax" }
androidx-camera-lifecycle = { group = "androidx.camera", name = "camera-lifecycle", version.ref = "camerax" }
androidx-camera-camera2 = { module = "androidx.camera:camera-camera2", version.ref = "camerax" }
androidx-camera-extensions = { module = "androidx.camera:camera-extensions", version.ref = "camerax" }Ardından bunları modülünüzün build.gradle.kts bağımlılıklarına ekleyin:
dependencies {
..
implementation(libs.androidx.camera.core)
implementation(libs.androidx.camera.lifecycle)
implementation(libs.androidx.camera.camera2)
implementation(libs.androidx.camera.view) // for PreviewView
implementation(libs.androidx.camera.compose) // for compose UI
implementation(libs.androidx.camera.extensions) // For Extensions
}Sorularınız mı var veya CameraX ekibiyle mi iletişime geçmek istiyorsunuz? CameraX geliştiricileri tartışma grubuna katılın veya hata raporu gönderin:
Okumaya devam edin
-
Ürün Haberleri
Google I/O, her yıl Android geliştirme de dahil olmak üzere ekosistemler ve ürünlerle ilgili yeni duyurular ve kaynaklar sunar. Geliştirme süreci yapay zeka ve aracı destekli araçlara doğru kayarken Android için nasıl geliştirme yapmaya karar verirseniz verin sizi daha iyi desteklemek için tekliflerimizi genişlettik.
Simona Milanovic • Okuma süresi: 2 dakika
-
Ürün Haberleri
Google I/O 2026'da, Android ekosistemindeki en son gelişmelerin, geliştirme verimliliğini en üst düzeye çıkarırken uygulamanızın kalitesini artırmanıza nasıl yardımcı olabileceğini gösterdik.
Ataul Munim • Okuma süresi: 3 dk.
-
Ürün Haberleri
Google I/O 2026'da Android'in işletim sisteminden zeka sistemine geçişini tanıttık. Ayrıca, sistemle yerel olarak akıllı deneyimler oluşturmanın ve Google'ın yapay zeka gücünü uygulamalarınıza taşımanın yollarını gösterdik.
Jingyu Shi • Okuma süresi: 2 dakika
Gelişmelerden haberdar olun
Android geliştirmeyle ilgili en son analizleri her hafta gelen kutunuza alın.