
Android'in ses donanımı soyutlama katmanı (HAL), android.media içindeki sesle ilgili üst düzey çerçeve API'lerini temel ses sürücüsüne ve donanımına bağlar. Bu bölümde, uygulama talimatları ve performansı artırmaya yönelik ipuçları yer almaktadır.
Android ses mimarisi, ses işlevselliğinin nasıl uygulandığını tanımlar ve uygulamada yer alan ilgili kaynak kodunu gösterir.

1. şekil. Android ses mimarisi
- Uygulama çerçevesi
- Uygulama çerçevesi, ses donanımıyla etkileşim kurmak için android.media API'lerini kullanan uygulama kodunu içerir. Bu kod, ses donanımıyla etkileşimde bulunan yerel koda erişmek için dahili olarak ilgili JNI yapıştırıcı sınıflarını çağırır.
- JNI
-
android.media çağrılarıyla ilişkili JNI kodu, ses donanımına erişmek için daha düşük düzeyde yerel kodu çağırır. JNI,
frameworks/base/core/jni/
veframeworks/base/media/jni
konumlarında yer almaktadır. - Yerel çerçeve
-
Yerel çerçeve, android.media paketinin yerel eşdeğerini sağlar ve medya sunucusunun sese özgü hizmetlerine erişmek için Binder IPC proxy'lerini çağırır.
Yerel çerçeve kodu
frameworks/av/media/libmedia
konumunda bulunur. - Binder IPC
-
Binder IPC proxy'leri, süreç sınırları üzerinden iletişimi kolaylaştırır. Proxy'ler
frameworks/av/media/libmedia
konumunda bulunur ve "I" harfiyle başlar. - Medya sunucusu
-
Medya sunucusu, HAL uygulamalarınızla etkileşimde bulunan gerçek kod olan ses hizmetlerini içerir. Medya sunucusu şu konumda:
frameworks/av/services/audioflinger
. - HAL
-
HAL, ses hizmetlerinin çağrı yaptığı standart arayüzü tanımlar ve ses donanımınızın doğru şekilde çalışması için bu arayüzü uygulamanız gerekir. Daha fazla bilgi için audio HAL arayüzüne ve ilgili HAL sürüm dizininin
*.hal
dosyalarındaki yorumlara bakın. - Çekirdek sürücüsü
-
Ses sürücüsü, donanımınız ve HAL uygulamanızla etkileşim kurar. Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS) veya özel bir sürücü (HAL, sürücüden bağımsızdır) kullanabilirsiniz.
Not: ALSA kullanıyorsanız sürücünün kullanıcı bölümü için
external/tinyalsa
'ı öneririz. Bunun nedeni, uyumlu lisanslamasıdır (standart kullanıcı modu kitaplığı GPL lisanslıdır). - Open SL ES'ye dayalı Android'e özgü ses (gösterilmez)
- Bu API, Android NDK'nın bir parçası olarak kullanıma sunulur ve android.media ile aynı mimari düzeydedir.