Çok bölgeli ses yönlendirme

Araba ses hizmeti, kullanımı kolaylaştırmak için Temel Ses dinamik ses politikasını kullanır daha iyi olur.

  • Her yolcu için ayrı bir ses çalınır. Buna çok bölgeli ses denir. her bölgede sesin eşzamanlı olarak oynatılmasına izin verilir.

  • Dinamik ses bölgesi yapılandırması.

  • Yolcu birincil bölgesi ses yayını.

  • Yolcunun sesli aynası.

Her kullanım örneğinde araç ses hizmeti, dinamik ses politikasını kullanarak Sesi, belirlenen çıkış cihazına otomatik olarak yönlendirir.

Çok bölgeli ses

Çok bölgeli ses, birden fazla kullanıcının AAOS ile aynı anda etkileşim kurmasına olanak tanır. CEVAP Çıkış cihazları grubu bir alt bölgeyle ilişkilendirilir ve her alt bölgede ses korunur odak ve ses düzeyi. Yolcular, sürücü koltuğundayken seslerini dinleyebilir birincil bölgedeki başka bir kaynağı (genellikle ana kabin) dinler.

Çok bölgeli ses mimarisi

Araç ses hizmeti mimarisi

Şekil 1. Araba ses hizmeti mimarisi.

Araba ses bölgeleri; ses çıkışlarının, ses odağının ve diğer öğelerin yönetebileceğiniz ses ayarları bulunur. Yönlendirme amacıyla, her alt bölge, aşağıda açıklandığı şekilde bir ses çıkış yolu cihazları grubu olarak tanımlanır ses politikası yapılandırması. Cihazlar, her ses bölgesi tanımına göre değişir. Şekil 1'de, 1 ile 5 arasındaki veri yolu cihazları sıfır alt bölgesinde, 6 - 6 arasındaki veri yolu cihazlarıdır 8 numaralı bölge birinci bölgeye, 9 ile 11 arasındaki otobüs cihazları ise ikinci bölgeye ait.

Araç ses sistemi yapılandırması

Genellikle çıkış cihazları bir ses bölgesine atanır. Her bir ses bölgesi car_audio_configuration.xml adresinde tanımlanmıştır. Aşağıdaki kod snippet'inde bir araba gösteriliyor Şekil 1 için ses yapılandırması:

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone0" audioZneId="0" occupantZoneId="0">
            <zoneConfigs>
                <zoneConfig name="config0" isDefault="true">
                   <volumeGoups>
                        <group>
                            <device address="bus_1">
                                <context context="music"/>
                            </device>
                        </group>
                        <group>
                            <device address="bus_2">
                                <context context="navigation"/>
                            </device>
                        </group>
                        ...
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
        <zone name="Zone1" audioZoneId="1" occupantZoneId="1">
            <zoneConfigs>
                <zoneConfig name="config0" isDefault="true">
                    <volumeGroups>
                        <group>
                            <device address="bus_6">
                                <context context="music"/>
                            </device>
                        </group>
                        <group>
                            <device address="bus_7">
                                <context context="navigation"/>
                           </device>
                       </group>
                       ...
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
        ...
    ...
   </zones>
</carAudioConfiguration>

occupantZoneId, şu kuruluş tarafından yönetilen bir araba hizmeti tanımıdır: CarOccupantZoneManager. Arabalarda bir kullanıcı için eşleme tanımlamak üzere kullanılır: belirli bir koltuk konumuna getirmemiz gerekir. CarOccupantZoneService ayrıca şunları da tanımlar: kullanıcının bulunduğu bölgeden ekranlara, diğer çevre birimlerine ve Kullanıcı bir ekrana giriş yapar. Ses bölgesinde şunlar bulunur:

  • Ses bölgesi kimliği ve yolcu bölgesi kimliği.

    • Ses bölgesini yolcu bölgesiyle (koltuk, ekranlar ve diğer çevre birimleri) eşler
    • Giriş yapıldıktan sonra, hangi kullanıcı kimliğine atanan kullanıcı kimliğini ses bölgesiyle eşleyin
  • Ses yapılandırmalarının listesi. Her ses yapılandırmasında ses düzeyi grupları. Her ses grubu grubunda bir dizi ses yolu cihazı bulunur.

    • Ses düzeyi değiştirildiğinde, gruptaki tüm ses cihazları şurada kontrol edilir: aynı şekilde ele alacağız.

    • Her ses cihazına bir ses özellikleri listesi atanır. Bu bu bilgiler, ses politikası mix'lerini farklı şekillerde oluşturmak için atanmış ses özellikleri.

Bu yapılandırma, farklı ses özelliği kullanımlarının her alt bölgede farklı çıkış cihazları kullanabilirsiniz. Kullanım alanına bağlı olarak farklı Sesler eşzamanlı olarak çalınabilir. Örneğin, ana sayfanızı kabin (birincil bölge) yalnızca sürücüye en yakın hoparlörlerde Eşzamanlı ses çalındığında Navigasyon şuraya gönderilirken ana kabin, medyayı dinlemeye devam eder gerekir.

Çok bölgeli sesli yolcu girişi iş akışı

Aşağıdaki sıra şemasında, yolcu kendi ekranına giriş yapar:

resim

Şekil 2.

Bu sırada, kullanıcı girişi, araç ses hizmetine yolcu bölgesi hizmeti.

  1. Araç ses hizmeti (belirli bir ses bölgesi için) Kullanıcı cihazını kaldırmak için AudioPolicy#removeUserIdDeviceAffinity API ilgi alanları. Bu API bir kullanıcı kimliği alır. Bu durumda, önceki alt bölgenin belirtir.

  2. AudioPolicy#setUserIdDeviceAffinity API, yeni kullanıcıyı bir belirli bir alt bölge için kullanıcı kimliğini ve tüm cihazları alan alt bölge yapılandırma.

Dinamik bölge yapılandırmaları

Android 14'te dinamik bölge yapılandırmaları OEM'lerin yolcular için farklı cihaz grupları yapılandırmasına olanak tanımak amacıyla kullanıma sunuldu. Kullanım alanı, arka koltuktaki yolcuların arka koltuklar arasında geçiş yapmasına olanak tanır Koltuk hoparlörü ve arka koltuk kulaklığı çevre birimi.

Bu durumda iki yapılandırma gerekir. Arka koltuk için birer tane kulaklık ve kulaklık çevre birimi. Belirli bir kullanıcının sesi yönlendirilir yalnızca bir yapılandırmaya uygulayabilirsiniz.

Dinamik alt bölge yapılandırması
iş akışı

Şekil 3. Dinamik alt bölge yapılandırma iş akışı.

Şekil 3'te dinamik alt bölge yapılandırmasının mimarisi gösterilmiştir iş akışını takip edin. 1. ses bölgesi Config 0 ve Config 1 olmak üzere iki yapılandırma içeriyor sırasıyla çıkış cihazının hoparlörü ve başlığı ile ilişkilendirilmiş.

Giriş yaptıktan sonra kullanıcıya otomatik olarak varsayılan yapılandırma atanır. Kullanıcı genellikle bir sistem kullanıcı arayüzü aracılığıyla yapılandırmaları değiştirmeyi seçtiğinde araç ses hizmeti, iki yapılandırma arasındaki geçişi yürütür. Burada çıkış cihazı Z1 hoparlör ile Z1 koltuk arasında geçiş yapar.

Aşağıdaki kod snippet'i bu dinamik bölge yapılandırmasının ayarlarını gösterir.

<carAudioConfiguration version="3">
    <zones>
        <zone name="Zone1" audioZoneId="1" occupantZoneId="1">
            <zoneConfigs>
                <zoneConfig name="Zone 1 Config 0" isDefault="true">
                    <volumeGroups>
                        <group>
                            <device address="bus_100">
                                <context context="music"/>
                                    ***
                            </device>
                        </group>
                    </volumeGroups>
                </zoneConfig>
                <zoneConfig name="Zone 1 Config 1">
                    <volumeGroups>
                        <group>
                            <device address="bus_101">
                                <context context="music"/>
                                    ***
                            </device>
                        </group>
                    </volumeGroups>
                </zoneConfig>
            </zoneConfigs>
        </zone>
    </zones>

Araç ses yöneticisi, ses yapılandırmalarının yönetimini kolaylaştırmak için API'leri kullanarak yapılandırmaların yönetilmesini sağlar:

  • Bir alt bölge için kullanılabilen sorgu yapılandırmaları.
  • Sorgu şu anda bir alt bölge için yapılandırma ayarında.
  • Farklı bir yapılandırmaya geçin.

Bir sistem kullanıcı arayüzü uygulaması veya hizmeti, ses bölgesine ayarlayın. Query API, bu ikisini yolcuya da gösterir. Kullanıcı bir komuta dokunarak farklı bir yapılandırma seçebilir. yapılandırmalısınız.

Dinamik alt bölge yapılandırması
iş akışı

4.Şekil Dinamik alt bölge yapılandırma iş akışı.

Birincil bölgedeki yolcu ses yayını

Birincil bölge yolcu ses yayını, Android 14'te kullanıma sunulan bir özelliktir. yolcuların medya seslerini birincil bölgeye yayınlamasına olanak tanıyor. Burada yolcunun medya sesi ana kabine yayınlanabileceğinden emin olmak için kontrolü tamamen sizde olur.

Aşağıdaki şekilde, birincil sunucu oluşturma için mimarinin basitleştirilmiş bir sürümü bölgedeki yolcu medya ses yayını.

Dinamik alt bölge yapılandırması
iş akışı

5. Şekil. Dinamik alt bölge yapılandırma iş akışı.

Resimde, sürücüye ait medya çıkış cihazının Bu durum yalnızca yolcu birincil bölgeye ayarlıyken yaşanır yatırım yapmanız önemlidir. Dinamik ses politikası ayrıca sürücüsü için cihaz yakın ilgi alanlarına hiçbir değişiklik uygulanmaz. Örneğin, yolcu çıkış cihazları listesi şu şekilde değiştirilir:

  • Yolcu için medya çıkış cihazı cihaz listesinden kaldırıldı
  • Sürücü için medya çıkış cihazı, cihaz listesine eklendi
  • Yolcu ses bölgeleri için kalan çıkış cihazları cihaz listesinde kalıyor

Bu yeni cihaz listesi, yolcuya AudioPolicy#setUserIdDeviceAffinity API. API'ye iletilen parametreler: cihaz listesi ve yolcu kullanıcı kimliği. Ses sisteminin sesi politika hizmeti, medya kanalı için hangi ses mix'inin seçileceğini sorgular yolcuyla ilişkilendirilen medya ses mix'i, alt bölgesi seçildi.

Birincil bölge ses yayını için temel bir gereksinim, birincil bölgenin medyasının çıkış cihazı, diğer ses özelliği kullanımlarından izole edilir. Aksi halde diğer ses özellikleri de bu karışıma eklenir. Mix seçimi ses sistemi tarafından yapıldığında tüm sesler mix ana kabinde oynatılmak üzere seçilir.

Yolcu bölgesinde ses yansıtma

Ses yansıtma özelliği, yolcuların sesi paylaşmasını sağlar. Yansıtma özelliği Tüm yolcuların dinleyebilmesi için her ses bölgesinde ses verilerini kopyalar olmasını sağlar. Bu örnekte ses odağı yolcularla paylaşılır dahil edilir.

Ayna yönlendirme

Ses yansıtmanın etkinleştirilmesi için en az iki yolcu gerekir. Kullanıcı yalnızca iki yolcu ses bölgesine sahip bir ses yapılandırması çıkış cihazı kullanın. Yukarıdaki tanıma göre, iki eşzamanlı yansıtma başlatılabilir.

Aşağıdaki şekilde, çok bölgeli ses yansıtma için basitleştirilmiş bir şema gösterilmektedir yolculuğa çıkıyordu. Her iki yolcunun sesi aynaya yönlendiriliyor cihaz, bus_1000. Audio HAL, sinyali kaynak alt bölgelerine kopyalar.

Dinamik alt bölge yapılandırması
iş akışı

6. Şekil. Dinamik alt bölge yapılandırma iş akışı.

Bu rota yalnızca yolcular yansıtma modundayken etkinleştirilir. Eğer ise ses bölgesine karşılık gelen cihazlar yolculara atanır. Yansıtma bir yolcu için ilk kez etkinleştirildiğinde AudioPolicy#setUserIdDeviceAffinity API, yönlendirmeyi değiştirir:

  • Yolcu için medya çıkış cihazı cihaz listesinden kaldırıldı.
  • Yansıtma çıkış cihazı, cihaz listesine eklendi.
  • Yolcu ses bölgesi için kalan çıkış cihazları cihaz listesinde kalır.

API, cihaz listesiyle birlikte cihazların güncellenmiş listesi ile çağrılır ve yolcunun kullanıcı kimliği. Aşağıdaki resimde ses yansıtma iş akışı.

Sesi yansıtma iş akışı

7.Şekil Sesi yansıtma iş akışı.

Şekil 7'de, araç ses yöneticisinin ses yansıtmayı yönetmeye yönelik API'leri adlı bir e-posta alırsınız. Daha ayrıntılı ifade etmek gerekirse, CarAudioManager#enableMirrorForAudioZones için yansıtma.

Araç ses hizmeti, kullanıcı yolcular için ses yönlendirmesini 'ne başvurun. Araba ses hizmeti, ayrıca ses HAL'sine bir sinyal göndererek aynadaki sesi yapılandırıp ilgili cihaza kopyalayın alt bölgeler.

Yukarıdaki resimde, araç ses hizmeti mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20.

ve

bus_1000 kaynak otobüs, bus_10 ve bus_20 ise varış noktası görebilirsiniz.

Dizi şemasında, AudioManager#setParameters API, ses üzerinden HAL'ye ulaşır geliştirmenizi sağlar.

Ses aynası devre dışı bırakıldığında aşağıdaki sinyal gönderilir. mirroring_src=bus_1000;mirroring=off Bu sinyal, HAL tarafından şu amaçlarla kullanılabilir: ses yansıtma etkin olmadığında ses yinelemeyi devre dışı bırakma. Sesi tanımlamak için araba ses yapılandırma dosyası, ses kayıt dosyası gibi mirroringDevices, aşağıdaki snippet'te gösterildiği gibi.

Bu snippet'te, yansıtılan iki cihaz tanımlanmıştır: bus_1000 ve bus_2000, Böylece dört yolcunun ses yansıtma özelliğini kullanabilmesi gerekiyor.

<carAudioConfiguration version="3">
   <mirroringDevices>
       <mirroringDevice address="bus_1000"/>
       <mirroringDevice address="bus_2000"/>
   </mirroringDevices>
  <zones>
    ....
  </zones>
</carAudioConfiguration>