Android 10 sürümünde sesin önemli ölçüde yeniden düzenlenmesi gerekir.
daha fazla esneklik sağlamak için politika yöneticisinin sorumluluğundadır:
OEM'e özel yönlendirme stratejileri.
Aynı hacim eğrilerinin kullanıldığı eski akış türü grupları için özelleştirilebilir hacim grupları.
Sabit kodlanmak yerine, ses politikası motoru tarafından bildirilen yönlendirme stratejileri.
Ses politikası motoru tarafından yönetilen ses düzeyi eğrileri ve gruplar.
Ortak kod ve yapılandırılabilir kod arasında gelecekteki bir bölünme için dahili yeniden düzenleme hazırlığı
Ayrıca daha zengin ses cihazı yönetimi
sunabilirsiniz. Örneğin, yalnızca akıllı telefonlarının değil, tüm
daha iyi olur.
Android 7.0, şunun için bir ses politikası yapılandırma dosyası biçimi (XML) sunmuştur:
ses topolojinizi açıklamaktadır.
Önceki Android sürümleri
device/<company>/<device>/audio/audio_policy.conf.
ses cihazlarını beyan etmek için (örneğin,
Galaxy Nexus ses donanımı için bu dosyayı
device/samsung/tuna/audio/audio_policy.conf) tıklayın. Ancak CONF,
karmaşık topolojileri tanımlayamayacak kadar sınırlı, basit, tescilli
gibi sektör genelinde daha fazla ilgi görüyor.
Android 7.0, audio_policy.conf desteğini sonlandırdı ve destek ekledi
daha özel bir XML dosya biçimini kullanarak ses topolojisi tanımlamak için
insan tarafından okunabilir, çok çeşitli düzenleme ve ayrıştırma araçlarına sahiptir ve esnektir
çok karmaşık ses topolojilerini tanımlamaya yeter. Android 7.0
XML seçimi için USE_XML_AUDIO_POLICY_CONF derleme işareti
dosya biçimini kullanın.
XML biçiminin avantajları
CONF dosyasında olduğu gibi, XML dosyası da sayı ve türlerin tanımlanmasını sağlar.
çıkış ve giriş akışı profillerinin, oynatma ve yakalama için kullanılabilen cihazların yanı sıra
ses özellikleri. Ayrıca, XML biçimi aşağıdaki geliştirmeleri de sunar:
Android 10'da birden fazla etkin kayıt uygulaması
izin verilir.
Kayıt başlangıcı, eşzamanlılık durumu nedeniyle hiçbir zaman reddedilmez.
registerAudioRecordingCallback(AudioManager.AudioRecordingCallback cb)
geri çağırma özelliği, müşterileri yakalama yolu değişiklikleri konusunda bilgilendirir.
Aşağıdaki durumlarda, istemci sessiz ses örnekleri alır:
Gizlilik açısından hassas bir kullanım alanı (örneğin, VOICE_COMMUNICATION) etkin.
Müşterinin ön plan hizmeti veya ön plan kullanıcı arayüzü yok.
Özel roller politika tarafından tanınır:
Erişilebilirlik hizmeti: Gizlilik açısından hassas bir kullanım alanı etkin olsa bile kayıt yapılabilir.
Asistan: Kullanıcı arayüzü üstteyse gizlilik açısından hassas olarak değerlendirilir.
Ses profilleri, HDMI basit ses tanımlayıcılarına benzer bir yapıya sahiptir ve farklı bir ses sistemine sahiptir.
Her ses biçimi için örnekleme hızı/kanal maskeleri grubu.
Cihazlar ve akışlar arasındaki tüm olası bağlantıların açık tanımları vardır.
Önceden, örtülü bir kural, aynı HAL'ye bağlı tüm cihazların bağlanmasını mümkün kılıyordu
modülünün, ses politikasının ses yamasıyla istenen bağlantıları kontrol etmesini engelliyor
API'ler. XML biçiminde, topoloji açıklaması bağlantı sınırlamalarını tanımlar.
includes desteği, standart A2DP, USB veya yeniden yönlendirme işleminin yinelenmesini önler
tanımlar.
Hacim eğrileri özelleştirilebilir. Önceden, birim tablolarının kodu sabit kodlanıyordu. XML'de
biçiminde, hacim tablosuyla açıklanır ve özelleştirilebilir.
Şu konumdaki şablon:
frameworks/av/services/audiopolicy/config/audio_policy_configuration.xml.
bu özelliklerin çoğunun kullanıldığını gösterir.
Dosya biçimi ve konumu
Yeni ses politikası yapılandırma dosyası:
audio_policy_configuration.xml ve şurada bulunuyor:
/system/etc. Aşağıdaki örneklerde,
Android 12 ve aşağıdaki sürümler için XML dosya biçimi
Android 12.
Üst düzey yapı, her bir ses HAL'sine (HAL) karşılık gelen modüller içerir.
her modülün karma bağlantı noktalarının, cihaz bağlantı noktalarının ve
güzergahlar:
Karışık bağlantı noktaları, akışlar için olası yapılandırma profillerini açıklar.
Bu dosyalar, oynatma ve kayıt için ses HAL'sinde açılabilir.
Cihaz bağlantı noktaları, eklenebilecek cihazları belirtir
ve isteğe bağlı olarak adres ve ses özelliklerini ekleyin.
Rotalar, karma bağlantı noktası tanımlayıcısından ayrılır.
Cihazlar arası veya cihazdan cihaza akışlarla ilgili açıklamaları etkinleştirme.
Hacim tabloları, çeviri işleminde kullanılan eğriyi tanımlayan basit noktaların listeleridir
dB cinsinden bir hacme geçiş yapar. Ayrı bir dahil etme dosyası, varsayılan
ama belirli bir kullanım alanı ve cihaz kategorisi için her bir eğri
üzerine yazılır.
XML Inclusions (XInclude) yöntemi, ses politikasını dahil etmek için kullanılabilir.
diğer XML dosyalarındaki yapılandırma bilgilerini içerir. Dahil edilen tüm dosyalar
Aşağıdaki kısıtlamalarla yukarıda açıklanan yapıya uygun olmalıdır:
Dosyalar yalnızca üst düzey öğeler içerebilir.
Dosyalar XInclude öğeleri içeremez.
Standart Android Açık Kaynak Projesi'nin (AOSP) kopyalanmasını önlemek için kullanın
Tüm ses politikası yapılandırmasına ilişkin ses HAL modülü yapılandırmaları bilgileri
dosyalarından (bu, hatalara açıktır). Standart ses politikası yapılandırma XML dosyası
aşağıdaki ses HAL'leri için sağlanmıştır:
A2DP:a2dp_audio_policy_configuration.xml
Alt mix'i yeniden yönlendir:rsubmix_audio_policy_configuration.xml
USB:usb_audio_policy_configuration.xml
Ses politikası kodunun düzenlenmesi
AudioPolicyManager.cpp birkaç modüle ayrıldı
Böylece bakımını ve yapılandırmasını kolaylaştırır. Projenin
frameworks/av/services/audiopolicy şunları içeriyor:
daha fazla bilgi edineceksiniz.
Modül
Açıklama
/managerdefault
Herkes için yaygın olarak kullanılan genel arayüzleri ve uygulama davranışını içerir
Motor olarak AudioPolicyManager.cpp ile benzer
sosyal becerilerin ve ortak kavramların soyutlanması.
/common
Temel sınıfları tanımlar (ör. giriş çıkışı ses akışı için veri yapıları
profilleri, ses cihazı tanımlayıcıları, ses yamaları ve ses bağlantı noktaları). Bu, daha önce
AudioPolicyManager.cpp içinde tanımlanır.
/engine
Hangi cihaz ve birimlerin kullanılması gerektiğini tanımlayan kuralları uygular
bir şablon görevi görür. Genel bölümle birlikte standart bir arayüz uygular:
kullanım alanı için uygun cihazı edinme ya da
cihazları veya harici durumları (yani, zorunlu kullanıma yönelik çağrı durumu)
yönlendirme kararını değiştirebilir.
Parametre Çerçevesi'ne dayanan politika motoru uygulaması (aşağıya bakın).
Yapılandırma, Parametre Çerçevesi'ne ve politikanın
XML dosyalarıyla tanımlanır.
/enginedefault
Önceki Android Ses Politikası Yöneticisi'ne dayalı politika motoru uygulaması
hakkında bilgi edindiniz. Bu, varsayılan ayardır ve
Nexus ve AOSP uygulamalarına karşılık gelir.
/service
Bağlayıcı arayüzleri, iş parçacıkları oluşturma ve
arayüze geri çevirebilirsiniz.
Parametre Çerçevesi'ni kullanarak yapılandırma
Ses politikası kodu, anlaşılması kolay ve
tümüyle yapılandırmaya göre tanımlanan bir ses politikasını destekler
dosyası olarak da kaydedebilir. Kuruluş ve ses politikası tasarımı, Intel Parametresi'ni temel alır.
Çerçeve, parametrelerin işlenmesi için eklenti tabanlı ve kural tabanlı bir çerçevedir.
Yapılandırılabilir ses politikasını kullanmak, tedarikçi firmalar OEM'lerin şunları yapmasına olanak tanır:
XML'de bir sistemin yapısını ve parametrelerini açıklama.
Açıklanan erişime ulaşmak için yazın (C++'ta) veya bir arka uç (eklentiyi) yeniden kullanın
parametreleridir.
E-posta teslim etmek için gereken koşulları/kuralları (XML olarak veya alana özgü bir dilde)
belirtilen parametrenin belirli bir değeri alması gerekir.
AOSP,
Çerçeve: Frameworks/av/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/PolicyConfigurableDomains.xml. Örneğin,
ayrıntılı bilgi için
Parametre Çerçevesi.
Android 10 veya önceki sürümlerde yapılandırılabilir ses politikası
USE_CONFIGURABLE_AUDIO_POLICY derleme seçeneği kullanılarak seçilir.
Android 11 veya sonraki sürümlerde ses politikasının sürümü
audio_policy_configuration.xml dosyasında motor seçili.
Yapılandırılabilir ses politikası motorunu seçmek için engine_library değerini ayarlayın
globalConfiguration öğesinin configurable özelliğini
aşağıdaki örnekte olduğu gibi:
Android 6.0, herkese açık bir Numaralandırma ve Seçim API'sini kullanıma sundu.
bağlantı noktası altyapısının en üstünde görünür ve uygulamaya
belirli cihaz çıkışı veya girişi için bir tercih belirtmek üzere
ses kayıtlarını veya parçalarını kaydedebilir.
Android 7.0'da Numaralandırma ve Seçim API'si, CTS testleri tarafından doğrulanır
ve yerel C/C++ (OpenSL ES) ses akışları için yönlendirmeyi içerecek şekilde genişletilir.
Yerel akışların yönlendirme işlemi,
ve desteği sonlandıran AudioRouting arayüzü
özel olarak tanımlanmış AudioTrack ve
AudioRecord sınıf.
Numaralandırma ve Seçim API'si hakkında ayrıntılı bilgi için şuraya bakın:
Android
yapılandırma arayüzleri ve OpenSLES_AndroidConfiguration.h.
Ses yönlendirmeyle ilgili ayrıntılar için bkz.
Ses Yönlendirme.
Çok kanallı destek
Donanımınız ve sürücünüz HDMI üzerinden çok kanallı sesi destekliyorsa şunları yapabilirsiniz:
ses akışının çıkışını doğrudan ses donanımına verir (bu,
İki kanala indirilmemesi için AudioFlinger mikseri.) Ses HAL'si
bir çıkış akış profilinin çok kanallı sesi destekleyip desteklemediğini göstermelidir
özellikler. HAL, özelliklerini ortaya çıkarırsa, varsayılan politika yöneticisi
HDMI üzerinden çok kanallı oynatmaya olanak tanır. Uygulama ayrıntıları için bkz.
device/samsung/tuna/audio/audio_hw.c
Ürününüzün çok kanallı ses çıkışı içerdiğini belirtmek için
cihazınızın çok kanallı çıkışını açıklayan ses politikası yapılandırma dosyası
belirler. Bu örnekte,
frameworks/av/services/audiopolicy/config/primary_audio_policy_configuration_tv.xml.
Bir dinamik kanal maskesi gösterir. Bu, ses politikası yöneticisinin kanalı sorguladığını gösterir.
ve bağlantıdan sonra HDMI havuzunun desteklediği maskeleri gösterir.
Ayrıca, şunlar gibi statik bir kanal maskesi de belirtebilirsiniz:
AUDIO_CHANNEL_OUT_5POINT1 AudioFlinger'ın mikseri,
harici bir ses cihazına gönderildiğinde, otomatik olarak stereo sese
Çok kanallı sesi destekler.
Medya codec'leri
Donanımınızın ve sürücülerinizin desteklediği ses codec'lerinin doğru şekilde yapıldığından emin olun
kullanın. Ayrıntılar için bkz.
Codec'leri
Çerçeve.
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.