
Android'in ses donanım soyutlama katmanı (HAL), android.media içindeki üst düzey, sese özel çerçeve API'lerini temel ses sürücüsüne ve donanıma bağlar. Bu bölümde, uygulama talimatları ve performansı iyileştirmeyle ilgili ipuçları yer alır.
Android ses mimarisi, ses işlevinin nasıl uygulandığını tanımlar ve uygulamayla ilgili kaynak kodu gösterir.

Şekil 1. 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şime geçen yerel koda erişmek için dahili olarak ilgili JNI yapıştırıcı sınıflarını çağırır.
- JNI
-
android.media ile ilişkili JNI kodu, ses donanımına erişmek için alt düzey yerel kodu çağırır. JNI,
frameworks/base/core/jni/
veframeworks/base/media/jni
'te bulunur. - Yerel çerçeve
-
Yerel çerçeve, medya sunucusunun sese özgü hizmetlerine erişmek için Binder IPC proxy'lerini çağırarak android.media paketine eşdeğer bir yerel çerçeve sağlar.
Yerel çerçeve kodu
frameworks/av/media/libmedia
konumundadır. - Cilt IPC
-
Binder IPC proxy'leri, işlem sınırları üzerinden iletişimi kolaylaştırır. Proxy'ler
frameworks/av/media/libmedia
konumundadır ve "I" harfi ile başlar. - Medya sunucusu
-
Medya sunucusu, HAL uygulamalarınızla etkileşime geçen gerçek kod olan ses hizmetlerini içerir. Medya sunucusu
frameworks/av/services/audioflinger
adresinde bulunuyor. - HAL
-
HAL, ses hizmetlerinin çağırdığı ve ses donanımınızın düzgün çalışması için uygulamanız gereken standart arayüzü tanımlar. Daha fazla bilgi için ses 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. Gelişmiş Linux Ses Mimarisi'ni (ALSA), Açık Ses Sistemi'ni (OSS) veya özel bir sürücü kullanabilirsiniz (HAL sürücüye bağımlı değildir).
Not: ALSA kullanıyorsanız uyumlu lisanslaması nedeniyle sürücünün kullanıcı bölümü için
external/tinyalsa
kullanmanızı öneririz (standart kullanıcı modu kitaplığı GPL lisanslıdır). - Open SL ES'e dayalı Android doğal sesi (gösterilmiyor)
- Bu API, Android NDK'nın bir parçası olarak kullanıma sunulur ve android.media ile aynı mimari düzeyindedir.