Android'in kamera donanımı soyutlama katmanı (HAL), android.hardware.camera2 içindeki üst düzey kamera çerçevesi API'lerini temel kamera sürücünüze ve donanımınıza bağlar. Android 13'ten itibaren kamera HAL arayüzü geliştirme sürecinde AIDL kullanılır. Android 8.0'da Treble tanıtıldı. Bu sürümde, Kamera HAL API'si, HAL arayüzü açıklama dili (HIDL) tarafından tanımlanan sabit bir arayüze geçirildi. Daha önce Android 7.0 ve önceki sürümler için bir kamera HAL modülü ve sürücüsü geliştirdiyseniz kamera işlem hattında önemli değişiklikler olduğunu unutmayın.
AIDL kamera HAL'ı
Android 13 veya sonraki sürümlerin yüklü olduğu cihazlarda kamera çerçevesi, AIDL kamera HAL'lerini destekler. Kamera çerçevesi, HIDL kamera HAL'lerini de destekler ancak Android 13 veya sonraki sürümlerde eklenen kamera özellikleri yalnızca AIDL kamera HAL arayüzleri aracılığıyla kullanılabilir. Android 13 veya sonraki sürümlere yükseltilen cihazlarda bu tür özellikleri uygulamak için cihaz üreticilerinin HAL işlemlerini HIDL kamera arayüzlerini kullanmaktan AIDL kamera arayüzlerini kullanmaya taşıması gerekir.
AIDL'nin avantajları hakkında bilgi edinmek için HAL'ler için AIDL başlıklı makaleyi inceleyin.
AIDL kamera HAL'ını uygulama
AIDL kamera HAL'sinin referans uygulaması için
hardware/google/camera/common/hal/aidl_service/
başlıklı makaleyi inceleyin.
AIDL kamera HAL spesifikasyonları aşağıdaki konumlarda bulunur:
- Kamera sağlayıcı:
hardware/interfaces/camera/provider/aidl/
- Kamera cihazı:
hardware/interfaces/camera/device/aidl/
- Kamera meta verileri:
hardware/interfaces/camera/metadata/aidl/
- Sık kullanılan veri türleri:
hardware/interfaces/camera/common/aidl/
AIDL'ye geçen cihazlarda, cihaz üreticilerin kod yapısına bağlı olarak Android SELinux politikasını (sepolicy) ve RC dosyalarını değiştirmesi gerekebilir.
AIDL kamera HAL'sini doğrulama
AIDL kamera HAL uygulamanızı test etmek için cihazın tüm CTS ve VTS testlerini geçtiğinden emin olun. Android 13, AIDL VTS testini kullanıma sunar.
test,
VtsAidlHalCameraProvider_TargetTest.cpp
.
Camera HAL3 özellikleri
Android Camera API'nin yeniden tasarlanmasının amacı, uygulamaların Android cihazlardaki kamera alt sistemini kontrol etme yeteneğini önemli ölçüde artırırken API'yi daha verimli ve sürdürülebilir hale getirmek için yeniden düzenlemektir. Bu ek kontrol, Android cihazlarda yüksek kaliteli kamera uygulamaları oluşturmayı kolaylaştırır. Bu uygulamalar, kalite ve performansı en üst düzeye çıkarmak için mümkün olduğunda cihaza özel algoritmalar kullanmaya devam ederken birden fazla üründe güvenilir bir şekilde çalışabilir.
Kamera alt sisteminin 3. sürümü, işlem modlarını tek bir birleşik görünümde yapılandırır. Bu görünüm, önceki modların herhangi birini ve seri çekim modu gibi diğer modları uygulamak için kullanılabilir. Bu sayede odak ve pozlama konusunda daha iyi kullanıcı kontrolü sağlanır ve gürültü azaltma, kontrast ve keskinleştirme gibi daha fazla işlem sonrası düzenleme yapılabilir. Ayrıca bu basitleştirilmiş görünüm, uygulama geliştiricilerin kameranın çeşitli işlevlerini kullanmasını kolaylaştırır.
API, kamera alt sistemini gelen kare yakalama isteklerini karelere 1:1 oranında dönüştüren bir işlem hattı olarak modeller. İstekler, bir karenin yakalanması ve işlenmesiyle ilgili tüm yapılandırma bilgilerini kapsar. Çözünürlük ve piksel biçimi, manuel sensör, lens ve flaş kontrolü, 3A çalışma modları, RAW->YUV işleme kontrolü, istatistik oluşturma vb. bu kapsamdadır.
Basit bir ifadeyle, uygulama çerçevesi kamera alt sisteminden bir kare ister ve kamera alt sistemi sonuçları bir çıkış akışına döndürür. Ayrıca, her sonuç grubu için renk alanları ve lens gölgelendirmesi gibi bilgileri içeren meta veriler oluşturulur. 3. kamera sürümünü, 1. kamera sürümünün tek yönlü akışına giden bir kanal olarak düşünebilirsiniz. Her yakalama isteğini, sensör tarafından yakalanan ve aşağıdaki şekilde işlenen bir görüntüye dönüştürür:
- Yakalamayla ilgili meta verileri içeren bir sonuç nesnesi.
- Her biri kendi hedef yüzeyinde olmak üzere, 1 ila N arasında görüntü verisi arabelleği.
Olası çıkış yüzeyleri kümesi önceden yapılandırılmıştır:
- Her yüzey, sabit çözünürlüklü bir görüntü arabellekleri akışının hedefidir.
- Aynı anda yalnızca az sayıda yüzey çıkış olarak yapılandırılabilir (~3).
İstek, istenen tüm yakalama ayarlarını ve bu istek için görüntü arabelleklerinin gönderileceği çıkış yüzeylerinin listesini (toplam yapılandırılmış küme içinden) içerir. İstek tek seferlik (capture()
ile) veya süresiz olarak tekrarlanabilir (setRepeatingRequest()
ile). Yakalamalar, tekrarlanan isteklere göre önceliklidir.

1. şekil. Kamera çekirdeği işlem modeli
Camera HAL1'e genel bakış
Kamera alt sisteminin 1. sürümü, üst düzey kontrollerle ve aşağıdaki üç çalışma moduyla kara kutu olarak tasarlanmıştır:
- Önizle
- Video Kaydı
- Sabit görüntü yakalama
Her modun biraz farklı ve çakışan özellikleri vardır. Bu durum, iki çalışma modu arasında yer alan seri çekim modu gibi yeni özelliklerin uygulanmasını zorlaştırıyordu.

Şekil 2. Kamera bileşenleri
Android 7.0, birçok cihaz hâlâ bu katmanı kullandığı için kamera HAL1'i desteklemeye devam ediyor. Ayrıca Android kamera hizmeti, her iki HAL'nin (1 ve 3) uygulanmasını destekler. Bu, daha az özellikli bir ön kamerayı kamera HAL1 ile, daha gelişmiş bir arka kamerayı ise kamera HAL3 ile desteklemek istediğinizde kullanışlıdır.
Her biri kendi sürüm numarasına sahip birden fazla bağımsız kamera cihazını listeleyen tek bir kamera HAL modülü (kendi sürüm numarasıyla) vardır. 2 veya daha yeni cihazları desteklemek için 2 veya daha yeni bir kamera modülü gerekir. Bu tür kamera modüllerinde farklı kamera cihazı sürümleri olabilir (Android'in her iki HAL'nin de uygulanmasını desteklediğini söylerken kastettiğimiz budur).