Ses

Android Ses HAL simgesi

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

Ş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/ ve frameworks/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.