Araç ses sistemi yapılandırması

Android 10'da car_audio_configuration.xml, değiştirildi car_volumes_groups.xml ve IAudioControl.getBusForContext. Ses politikası dosyaları, genellikle tedarikçi firma bölümünde yer alan ses donanımını yapılandırıldı. Şurada referans verilen tüm cihazlar: car_audio_configuration.xml şurada tanımlanmalıdır: audio_policy_configuration.xml.

Aşağıdaki Şekil 1'de araç ses sistemi hizmetine genel bir bakış gösterilmektedir araç ses hizmetinin araç ses yapılandırmasını okuduğu mimari dosyasını kullanın.

Araba ses sistemi mimarisine genel bakış

Şekil 1. Araba ses mimarisine genel bakış.

Araç ses yapılandırma dosyasını vendor\etc\ konumuna yerleştirin veya Cihazda system\etc\ ve vendor\etc\ bu dosyayı araç ses hizmeti tarafından aranan ilk yer oldu. Araba ses hizmetleri, sesi belirlemek için car_audio_configuration.xml değerini okur yapılandırma.

Araç ses bölgeleri:

  • Her ses bölgesi, benzersiz bir ses bölgesi kimliği içerir.
  • Her ses bölgesi, bir yolcu bölgesiyle eşleştirilebilir.
  • Her alt bölgedeki sesli işlemler birbirinden bağımsızdır:

    • Ses odağı
    • Ses yönlendirme
    • Sesi kısma
  • Araba ses seviyesi grupları:

    • Bir ses grubu içeren tüm ses cihazları birlikte kontrol edilir elde edebiliyorlar. Tüm cihazlar için ses kazancı yapılandırması aynı olması gerekir.

    • Ses cihazlarıyla eşlemeye ses bağlamı. Ses içeriği oluşturmak için bunu kullanın ses kullanımlarını bir çıkış cihazıyla eşleştiren bir mix oluşturmanız gerekir.

    • Tüm sesli bağlamlar bir alt bölge içinde temsil edilmelidir. Bu da bu özellikleri de değiştirebilirsiniz.

Ses bağlamları

AAOS seslerin yapılandırmasını basitleştirmek için benzer kullanımlar gruplandırılmıştır CarAudioContexts hedefine. Bu ses bağlamları proje boyunca Yönlendirme, ses düzeyi grupları, ses odağı ve kısma özelliklerini tanımlamak için CarAudioService üzerine konuşalım. AAOS'deki statik ses bağlamları aşağıda listelenmiştir.

Bu tabloda, ses bağlamları ve kullanımları arasındaki eşleme açıklanmaktadır. Vurgulanmış satır, yeni bir sistem kullanımı için sağlanır.

CarAudioContext İlişkilendirilmiş Özellik Kullanımları
MÜZİK UNKNOWN
GAME
MEDIA
NAVIGATION ASSISTANCE_NAVIGATION_GUIDANCE
SES_KOMUTU ASSISTANT
ASSISTANCE_ACCESSIBILITY
ÇAĞRI_ÇIKARMA NOTIFICATION_RINGTONE
ARA VOICE_COMMUNICATION
VOICE_COMMUNICATION_SIGNALING
ALARM ALARM
BİLDİRİM NOTIFICATION
NOTIFICATION_*
SİSTEM_SESİ ASSISTANCE_SONIFICATION
ACİL DURUM EMERGENCY
GÜVENLİK SAFETY
VEHICLE_STATUS VEHICLE_STATUS
DUYURU ANNOUNCEMENT

AAOS yönlendirmesini etkinleştir

AAOS tabanlı yönlendirmeyi kullanmak için audioUseDynamicRouting işaretini true:

<resources>
    <bool name="audioUseDynamicRouting">true</bool>
</resources>

false, yönlendirme ve CarAudioService miktarının büyük bir kısmı devre dışı bırakıldığında ve AAOS düştüğünde varsayılan AudioService davranışına geri dönelim.

Birincil bölge

Varsayılan olarak tüm sesler birincil bölgeye yönlendirilir. Yalnızca bir birincil alt bölge Bu değer, yapılandırmada isPrimary="true" Birincil alt bölgeye otomatik olarak Audiomanager.PRIMARY_AUDIO_ZONE

Örnek yapılandırma (sürüm 2)

Örneğin, bir aracın birincil bölge ve arka koltuk olmak üzere iki bölgesi olabilir. eğlence sistemidir. Bu senaryoda, isabetli metin oluşturmak için car_audio_configuration.xml sürüm 2 aşağıdaki gibidir:

<audioZoneConfiguration version="2.0">
       <zone name="primary zone" isPrimary="true">
           <volumeGroups>
               <group>
                   <device address="bus0_media_out">
                       <context context="music"/>
                       <context context="announcement"/>
                   </device>
                   <device address="bus3_call_ring_out">
                       <context context="call_ring"/>
                   </device>
                   <device address="bus6_notification_out">
                       <context context="notification"/>
                   </device>
               </group>
               <group>
                   <device address="bus1_navigation_out">
                       <context context="navigation"/>
                   </device>
                   <device address="bus2_voice_command_out">
                       <context context="voice_command"/>
                   </device>
               </group>
               <group>
                   <device address="bus4_call_out">
                       <context context="call"/>
                   </device>
               </group>
               <group>
                   <device address="bus5_alarm_out">
                       <context context="alarm"/>
                   </device>
               </group>
               <group>
                   <device address="bus7_system_sound_out">
                       <context context="system_sound"/>
                       <context context="emergency"/>
                       <context context="safety"/>
                       <context context="vehicle_status"/>
                   </device>
               </group>
           </volumeGroups>
       </zone>
        <zone name="rear seat zone" audioZoneId="1">
           <volumeGroups>
               <group>
                   <device address="bus100_rear_seat">
                       <context context="music"/>
                       <context context="navigation"/>
                       <context context="voice_command"/>
                       <context context="call_ring"/>
                       <context context="call"/>
                       <context context="alarm"/>
                       <context context="notification"/>
                       <context context="system_sound"/>
                       <context context="emergency"/>
                       <context context="safety"/>
                       <context context="vehicle_status"/>
                       <context context="announcement"/>
                   </device>
               </group>
           </volumeGroups>
    </zones>
</audioZoneConfiguration>

Bu örnekte birincil bölge, bazı ses bağlamlarını cihazlar. Bu, HAL'nin farklı ileri işleme süreçleri uygulamasına ve aracın donanımını kullanarak çıktıyı her bir cihazda karıştırabilirsiniz. Cihazlar birkaç ses grubuna göre ayarlanmıştır: medya, navigasyon, ve sistem sesleri olabilir. Sistem, useFixedVolume, ardından her grubun ses düzeyleri HAL'ye iletilir bu cihazların çıkışına uygulanacak.

Birincil alt bölge için sistem seslerinin diğer seslerden ayrı olmasını öneririz. seslere dokunun. Bu sayede araç seslerinin daha yüksek öncelikli olarak ele alınmasını sağlarsınız. Araç ses hizmeti, araç sesleriyle ilgili bu ayrımları zaten yönetimi açısından önemlidir. Örneğin, acil durum ses odağı isteği, başka bir odaklanma isteğinden daha yüksek önceliğe sahip.

İşinizi basit tutmak için, ikincil bölge örneğindeki tüm ses bağlamları tek bir cihaza ve bir ses grubuna yönlendirilir.

yolcu bölgesi ses yapılandırması

Android 11'de car_audio_configuration.xml, audioZoneId ve occupantZoneId olmak üzere iki yeni alan var. audioZoneId kullanabilirsiniz ses bölgesi yönetimini kontrol edebilirsiniz. Yapılandırmak için occupantZoneId kullanabilirsiniz yönlendirmesi gerekir.

Yukarıdaki ses yapılandırması yeniden gözden geçiriliyor, ancak yolcu bölgesi kimliği ve ses bölgesi kimliği eşlemesi, hacim grubu tanımları aşağıdaki gibi ayarlanabilir.

<audioZoneConfiguration version="2.0">
       <zone name="primary zone" isPrimary="true" occupantZoneId="0">
         ...
       </zone>
       <zone name="rear seat zone" audioZoneId="1" occupantZoneId="1">
         ...
       </zone>
    </zones>
</audioZoneConfiguration>

Yukarıdaki yapılandırmada birincil alt bölge 0'daki yolcu bölgesiyle bir eşleme tanımlanmaktadır. ve audioZoneId 1 - occupantZoneId 1. Genel olarak, yolcu bölgesi ve ses bölgesi yapılandırılabilir. Ancak, eşlemenin iletişim kurabilirsiniz. Bu iki yeni alanı tanımlayan kurallar aşağıda listelenmiştir.

  • Birincil alt bölge için audioZoneId her zaman PRIMARY_AUDIO_ZONE kimliğidir. Eğer isPrimary="true" tanımlanmışsa audioZoneId gerekli değildir.

  • audioZoneId ve occupantZoneId numaraları tekrarlanamaz.

  • audioZoneId ve occupantZoneId yalnızca bire bir eşlemeye sahip olabilir.

Android 14 araç ses yapılandırması

Android 14'te AAOS, OEM eklenti hizmetini kullanıma sundu. Böylece, araba tarafından denetlenen ses davranışlarını daha etkin bir şekilde yönetebilirsiniz ses hizmeti var. Yeni eklenti hizmetleriyle birlikte aşağıdaki değişiklikler de araç ses yapılandırma dosyasına eklendi:

  • OEM tarafından tanımlanan araç sesi bağlamı
  • Birincil olmayan alt bölge dinamik yapılandırmaları

OEM tarafından tanımlanmış araç sesi bağlamı

Android'de esnek ses yapılandırması etkinleştirmek için 14, araç ses hizmeti, ses kullanımlarının yukarıda tanımlanan statik Ses bağlamlarından farklı şekilde gruplandırılır. OEM tarafından tanımlanan bu bağlam, car_audio_configuration.xml içinde tanımlanabilir. emin olun.

Bunun yerine, o anda tanımlanan statik ses bağlamları kullanılır. Genel OEM tarafından tanımlanan araç ses bağlamının biçimi aşağıda gösterilmiştir.

OEM bağlamlarının her biri, ses özellikleri listesiyle birlikte bir name gerektirir. belirli kullanım biçimleridir. Yukarıdaki örnekte iki bağlam tanımlanır:

<carAudioConfiguration version="3">
    <oemContexts>
        <oemContext name="media">
            <audioAttributes>
                <usage value="AUDIO_USAGE_MEDIA" />
    <usage value="AUDIO_USAGE_UNKNOWN"/>
            </audioAttributes>
        </oemContext>
        <oemContext name="game">
            <audioAttributes>
                <usage value="AUDIO_USAGE_GAME" />
            </audioAttributes>
        </oemContext>
...
  • media bağlam, AUDIO_USAGE_MEDIA ve AUDIO_USAGE_UNKNOWN içeriyor
  • game bağlam yalnızca AUDIO_USAGE_GAME değerini içerir

Bağlam, car_audio_configuration.xml öğesinin üst kısmında tanımlanmalıdır dosyası olarak kaydedebilirsiniz. OEM bağlamları tanımlandığında araç ses yapılandırmasının geri kalanı devam edebilir. Araç ses bağlamı için aşağıdaki kurallar geçerlidir:

  • OEM bağlam tanımları isteğe bağlıdır. Statik Ses bağlamı kullanılır.

  • Bağlam adlarını tekrarlamayın.

  • Ses özelliği kullanımını birden fazla bağlama atamayın.

  • AudioAttributes içinde tanımlanan tüm ses kullanımları, bilmek önemlidir.

Daha net ifade etmek gerekirse, android.audio.policy.configuration.V7_0.AudioUsage OEM ses bağlamı için ses kullanımının dize temsili kullanılmalıdır belirler. Gelecekte, yeni ses özelliği kullanımları Android'den taşıma sırasında hataları azaltmak için en uygun bağlam sürümünü kullanır.

OEM eklentisini daha da genişletmek için OEM tarafından tanımlanan bağlam sunulsa da ses hizmeti olmadan da OEM eklenti hizmeti olmadan kullanılabilir. Ses statik ses hizmetinin davranışına benzer:

  • Ses odağı etkileşimleri. Ses özelliği, kullanıcının en iyi ses odağı etkileşim matrisi tarafından ayarlanan eşleme davranışını gösterir. Örneğin, Ses odağı bölümüne bakın.

  • Ses düzeyi denetimi ses özelliği, en iyi eşleşmeyi belirlemek için kullanılır:

    • OEM tarafından tanımlanan bağlama göre hacim grubu.
    • Statik birim listesinin önceliği yapılandırıldı.
  • Sesi kısma davranışı:

    • Geçerli ses odağının ses özelliği kullanımı, araç ses yapılandırmasında tanımlandığı şekilde ses cihazı bilgilerini çıkışı dosyası olarak kaydedebilirsiniz.

    • Ses özelliği, karşılık gelen statik bağlamı ördek ile eşlemek için kullanılır. veya statik ses kısma matrisine göre değiştirilir.

Dinamik ses bölgesi yapılandırmaları

Android 14'te dinamik ses bölgelerine yer vermek için ses bölgelerini tanımlayan araç ses yapılandırma şeması Ayrıca sürüm 3'e güncellendi. Yeni şema için bir yapılandırmanın ayarlanması gerekir tıklayın.

<carAudioConfiguration version="3">
    <!-- optional OEM context -->
    <oemContexts>
      <oemContext name="media">
        <audioAttributes>
          <usage value="AUDIO_USAGE_MEDIA" />
          <usage value="AUDIO_USAGE_UNKNOWN"/>
        </audioAttributes>
      </oemContext>
      <oemContext name="game">
        <audioAttributes>
          <usage value="AUDIO_USAGE_GAME" />
        </audioAttributes>
      </oemContext>
...
    </oemContexts>
  <zones>
    <zone name="primary zone" isPrimary="true" occupantZoneId="0">
      <zoneConfigs>
        <zoneConfig name="primary zone config 0" isDefault="true">
          <volumeGroups>
            <group>
              <device address="bus0_media_out">
                <context context="media"/>
            <context context="game"/>
                <context context="announcement"/>
              </device>
              <device address="bus6_notification_out">
                <context context="notification"/>
              </device>
            </group>
  ...
      </zoneConfigs>
    </zone
  </zones>

Daha fazla bilgi edinmek için device/generic/car/emulator/audio/car_audio_configuration.xml Başlamak için kalan süre: Android 14, birincil alt bölgede yalnızca bir (1) olabilir yapılandırma. Birincil olmayan alt bölgelerin birden fazla yapılandırması olabilir. Aşağıdakiler kurallar araç sesi yapılandırmaları için geçerlidir:

  • Birincil ses bölgesinin yalnızca bir yapılandırması olabilir.

  • Birincil olmayan ses bölgelerinin birden fazla yapılandırması olabilir.

  • Her ses bölgesi ve ses bölgesi yapılandırması için ad benzersiz olmalıdır.

  • Bir ses bölgesinde, ses yapılandırmaları farklılık gösterebilir:

    • Birim grubu ayarlarının aynı olması gerekmez.
    • Ses bağlamı atamasının aynı olması gerekmez.
  • Ses çıkış cihazı adları, bölgeler veya yapılandırmalar arasında benzersiz olmalıdır. CEVAP cihaz adı, ses yapılandırmasında veya alt bölgelerde yalnızca bir kez görünmelidir.

  • Aynı ses grubuna ait ses cihazları aynı sese sahip olmalıdır kazanç yapılandırmaları elde eder.

  • Tüm ses bağlamları (OEM veya statik) her ses için atanmalıdır yapılandırma.

ziyaret edin.

Yönlendirme uyumluluğu

car_audio_configuration.xml uygulamasının yeni sürümleri yeni özellikler özelliklerini kullandığınızda, eski dosyaları yeni sürümlerinde kullanmaya devam edebilirsiniz. AAOS'ye dokunun. Android'in yeni sürümlerine güncellenen OEM'ler car_audio_configuration.xml dosyası yükleyin.

Şurada bulunan yeni bilgileri gerektiren yeni bir özelliği kullanmak için: car_audio_configuration.xml, sürümün güncellenmesi gerekiyor. Kullanmaya çalışılıyor bir dosyanın, söz konusu dosya sürümünde desteklenmeyen bilgiler içeren eski bir sürümü Araba servisi başlatıldığında IllegalStateException hatası verir. İstisna mesajı, hangi bilgilerin kullanıldığı ve hangi minimum sürümün gerektiğini belirtmiştik.