Ses

Android Audio HAL simgesi

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.

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