![Android Ses HAL simgesi](https://source.android.com/static/docs/core/audio/images/ape_fwk_hal_audio.png?authuser=5&hl=tr)
Android'in ses Donanımı Soyutlama Katmanı (HAL), android.media'daki üst düzey, sese özgü çerçeve API'lerini temeldeki ses sürücüsüne ve donanımına bağlar. Bu bölümde performansı artırmaya yönelik uygulama talimatları ve ipuçları yer almaktadır.
Android ses mimarisi, ses işlevselliğinin nasıl uygulandığını tanımlar ve uygulamaya dahil olan ilgili kaynak koduna işaret eder.
![Ses mimarisi](https://source.android.com/static/docs/core/audio/images/ape_fwk_audio.png?authuser=5&hl=tr)
Ş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. Dahili olarak bu kod, ses donanımıyla etkileşime giren yerel koda erişmek için karşılık gelen JNI tutkal 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
içinde 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 yerel bir eşdeğer sağlar. Yerel çerçeve kodu
frameworks/av/media/libmedia
konumunda bulunur. - Bağlayıcı IPC
- Bağlayıcı IPC proxy'leri süreç sınırları üzerinden iletişimi kolaylaştırır. Proxy'ler
frameworks/av/media/libmedia
dizininde bulunur ve "I" harfiyle başlar. - Medya sunucusu
- Medya sunucusu, HAL uygulamalarınızla etkileşime giren gerçek kod olan ses hizmetlerini içerir. Medya sunucusu
frameworks/av/services/audioflinger
konumunda bulunur. - HAL
- HAL, ses hizmetlerinin çağırdığı ve ses donanımınızın doğru çalışması için uygulamanız gereken standart arayüzü tanımlar. Daha fazla ayrıntı için ses HAL arayüzüne ve ilgili HAL sürüm dizinindeki
*.hal
dosyalarındaki açıklamalara bakın. - Çekirdek sürücüsü
- Ses sürücüsü, donanımınız ve HAL uygulamanızla etkileşime girer. Gelişmiş Linux Ses Mimarisini (ALSA), Açık Ses Sistemini (OSS) veya özel bir sürücüyü (HAL, sürücüden bağımsızdır) kullanabilirsiniz.
Not : ALSA kullanıyorsanız, uyumlu lisanslaması nedeniyle sürücünün kullanıcı kısmı için
external/tinyalsa
öneririz (standart kullanıcı modu kitaplığı GPL lisanslıdır). - Open SL ES'yi temel alan Android yerel sesi (gösterilmemiştir)
- Bu API, Android NDK'nın bir parçası olarak kullanıma sunulur ve android.media ile aynı mimari düzeyindedir.