การตั้งค่าสถานะ AAOS ของเสียง การตั้งค่าสถานะ AAOS ของการกำหนดค่าเสียง

Android Automotive OS (AAOS) ใช้แฟล็กและการกำหนดค่าเพื่อเปิดใช้ฟีเจอร์ต่างๆ โดยเริ่มจากการกำหนดเส้นทางแบบไดนามิกไปยังแฟล็กฟีเจอร์ทั่วไป เช่น การควบคุมระดับเสียงจากบริการรถยนต์ มีการอธิบายแฟล็กการกำหนดค่า AAOS ปัจจุบันสำหรับการจัดการเสียงไว้ที่นี่

ธง วัตถุประสงค์
audioUseDynamicRouting กำหนดไว้ในไฟล์กำหนดค่าบริการรถยนต์เพื่อ เปิดใช้งานการกำหนดเส้นทาง AAOS ต้องตั้งค่าคอนฟิกเป็น true เมื่อปิดใช้งาน false การกำหนดเส้นทางและ CarAudioService ส่วนใหญ่ และระบบปฏิบัติการจะกลับไปใช้ลักษณะการทำงานเริ่มต้นที่อธิบายไว้ใน การกำหนดค่านโยบายเสียง
audioUseCarVolumeGroupMuting กำหนดไว้ในไฟล์กำหนดค่าบริการรถยนต์เพื่อเปิดใช้งานการปิดเสียงกลุ่มวอลุ่มแต่ละกลุ่ม เมื่อตั้งค่าเป็น false (ค่าเริ่มต้น) การปิดเสียงของกลุ่มวอลุ่มแต่ละกลุ่มจะถูกปิดใช้งาน การปิดเสียงจะเป็นการสลับการปิดเสียงหลักแทน เมื่อตั้งค่าเป็น true การปิดเสียงกลุ่มระดับเสียงของรถยนต์จะถูกเปิดใช้งาน และสามารถปิดเสียงแต่ละกลุ่มระดับเสียงแยกกันได้ เมื่อ true จะต้องดำเนินการปิดเสียงกลุ่มวอลุ่มที่ Audio Control HAL
audioUseHalDuckingSignals กำหนดไว้ในไฟล์กำหนดค่าบริการรถยนต์เพื่อเปิดใช้งาน IAudioControl#onDevicesToDuckChange API เพื่อแจ้ง HAL เมื่อต้องหลบ เมื่อ true (ค่าเริ่มต้น) API จะรับสัญญาณที่ระบุว่าอุปกรณ์เอาต์พุตใดที่จะหลบและการใช้งานใดที่คงโฟกัสไว้ เมื่อเป็น false จะไม่มีการเรียก API API จะไม่ถูกเรียกเว้นแต่ว่า Audio Control HAL จะใช้การหลบเลี่ยง
config_oemCarService กำหนดไว้ในไฟล์กำหนดค่าบริการรถยนต์ ซึ่งเป็นชื่อส่วนประกอบสำหรับบริการปรับแต่ง OEM OEM สามารถเลือกใช้บริการนี้เพื่อปรับแต่งการดำเนินการให้บริการรถยนต์สำหรับนโยบายต่างๆ หาก OEM เลือกใช้ส่วนประกอบนี้ พวกเขาจะต้องใช้บริการเพื่อขยาย OemCarService ที่ car-lib เปิดเผย จากนั้นจึงใช้บริการส่วนประกอบที่จำเป็น สำหรับบริการเครื่องเสียงรถยนต์โดยเฉพาะ OEM สามารถใช้บริการย่อยด้านเสียงเพื่อจัดการการทำงานของเสียงได้ สำหรับรายละเอียด โปรดดู บริการปลั๊กอินเครื่องเสียงรถยนต์ หากชื่อส่วนประกอบไม่ถูกต้อง CarService จะไม่เชื่อมต่อกับบริการ OEM ใด ๆ ชื่อส่วนประกอบต้องไม่ใช่แพ็คเกจของบุคคลที่สาม จะต้องติดตั้งไว้ล่วงหน้า
audioVolumeAdjustmentContextsVersion

กำหนดไว้ในไฟล์กำหนดค่าบริการรถยนต์ การกำหนดค่าเพื่อเลือกเวอร์ชันของรายการลำดับความสำคัญบริบทการปรับระดับเสียง

เวอร์ชัน 1 มีบริบทเสียงทั้งหมด ตามลำดับนี้:

  • NAVIGATION
  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
  • CALL_RING
  • SYSTEM_SOUND
  • SAFETY
  • ALARM
  • NOTIFICATION
  • VEHICLE_STATUSEMERGENCY

เวอร์ชัน 2 จำกัดเฉพาะบริบทต่อไปนี้ ตามลำดับนี้

เวอร์ชันเริ่มต้นคือ 1

  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
audioPersistMasterMuteState กำหนดไว้ในไฟล์กำหนดค่าบริการรถยนต์ การกำหนดค่าเพื่อคงสถานะปิดเสียงส่วนกลาง เมื่อ true (ค่าเริ่มต้น) Android จะคืนค่าสถานะปิดเสียงส่วนกลางขณะบูต เมื่อ audioUseCarVolumeGroupMuting เป็น true สิ่งนี้จะไม่มีผลกระทบต่อการเปลี่ยนแปลงการปิดเสียงที่มีอยู่ เนื่องจากการเปลี่ยนแปลงการปิดเสียงจะขึ้นอยู่กับกลุ่มวอลุ่มแต่ละกลุ่ม ค่าเริ่มต้นถูกตั้งค่าเป็น true และจะต้องถูกเขียนทับเมื่อไม่ควรคงการปิดเสียงหลักไว้สำหรับอุปกรณ์
audioVolumeKeyEventTimeoutMs

กำหนดไว้ในไฟล์กำหนดค่าบริการรถยนต์ การกำหนดค่าเพื่อระบุการหมดเวลาเป็นมิลลิวินาที ในขณะที่กลุ่มวอลุ่มของรถยนต์ถือว่าใช้งานอยู่สำหรับการเปลี่ยนแปลงการควบคุมระดับเสียงในระหว่างเหตุการณ์ปุ่มปรับระดับเสียง การกำหนดค่าถูกใช้ดังนี้:

  • การหมดเวลาใช้เพื่อกำหนดว่าการเล่น (ระดับเสียงที่เกี่ยวข้องกับการใช้เสียงของการเล่น) ยังคงสามารถพิจารณาสำหรับการเลือกระดับเสียงอัตโนมัติหลังจากที่หยุดเล่นแล้วหรือไม่
  • การหมดเวลายังใช้เป็นระยะเวลาหยุดชั่วคราวที่จำเป็นระหว่างการปรับระดับเสียงอัตโนมัติเพื่อเปลี่ยนสิ่งที่ผู้ใช้กำลังปรับ

ค่าเริ่มต้นคือ 3000 มิลลิวินาที และควรปรับโดย OEM เพื่อปรับแต่งประสบการณ์ผู้ใช้

audioUseCarVolumeGroupEvent กำหนดไว้ในไฟล์กำหนดค่าบริการรถยนต์ การกำหนดค่าเพื่อเปิดใช้งานเหตุการณ์การติดต่อกลับไปยังกลุ่มวอลุ่ม เมื่อ true ไคลเอนต์จะได้รับการโทรกลับผ่าน ICarVolumeGroupEvent ไปยังเหตุการณ์ที่ส่งผลกระทบต่อกลุ่มวอลุ่ม เมื่อเปิดใช้งาน:

  • เราขอแนะนำอย่างยิ่งให้ผู้จำหน่ายสนับสนุน IAudioControl#setModuleChangeCallback และ IAudioControl#registerGainCallback สำหรับเหตุการณ์และการเปลี่ยนแปลงฮาร์ดแวร์เสียง
  • เมื่อทั้ง CarVolumeCallback และ CarVolumeGroupEventCallback ได้รับการลงทะเบียนโดยแอปเดียวกัน ดัชนีกลุ่มวอลุ่มและการโทรกลับแบบปิดเสียงของกลุ่มวอลุ่มจะต้องผ่าน CarVolumeGroupEventCallback เท่านั้น ดังนั้น เราขอแนะนำอย่างยิ่งให้แอปทั้งหมดย้ายไปยังอินเทอร์เฟซการติดต่อกลับใหม่เพื่อให้มั่นใจถึงประสิทธิภาพที่สม่ำเสมอ
  • ค่าเริ่มต้นคือ false เราขอแนะนำให้คุณตั้งค่านี้เป็น true เนื่องจาก API สำหรับรองรับการเรียกกลับวอลุ่มแบบเดิมเลิกใช้งานแล้ว และจะถูกลบออกทั้งหมดในเร็วๆ นี้

config_useFixedVolume กำหนดใน frameworks/base/core/res/res/values/config.xml ต้องตั้งค่าเป็น true เพื่อให้บริการเครื่องเสียงรถยนต์สามารถจัดการการควบคุมระดับเสียงได้ เมื่อไม่ได้ตั้งค่าแฟล็ก config_useFixedVolume หรือตั้งค่าเป็น false (ค่าเริ่มต้น) แอพจะสามารถเรียกใช้ API การจัดการโวลุ่ม AudioManager และเปลี่ยนระดับเสียงตามประเภทสตรีมในมิกเซอร์ซอฟต์แวร์ สิ่งนี้อาจไม่พึงปรารถนาเนื่องจากอาจมีผลกระทบต่อแอปอื่นๆ และความจริงที่ว่าการลดระดับเสียงในตัวผสมซอฟต์แวร์อาจส่งผลให้บิตที่มีนัยสำคัญน้อยลงในสัญญาณเมื่อได้รับที่แอมพลิฟายเออร์ฮาร์ดแวร์ อุปกรณ์ใหม่ที่ยังไม่ได้กำหนดค่าและตั้งค่าเป็น true จะได้รับการเปลี่ยนแปลงระดับเสียงผ่านระดับเสียง AudioManager และ API การปิดเสียง
config_handleVolumeKeysInWindowManager กำหนดไว้ใน frameworks/base/core/res/res/values/config.xml จะต้องตั้งค่าเป็น true เพื่ออนุญาตให้บริการเครื่องเสียงรถยนต์สกัดกั้นเหตุการณ์ปุ่มปรับระดับเสียง หากตั้งค่าเป็น false (ค่าเริ่มต้น) เหตุการณ์คีย์ระดับเสียงสามารถส่งต่อไปยังแอปเบื้องหน้าได้ และอาจนำไปสู่ผลลัพธ์ที่ไม่พึงประสงค์จากการจัดการเหตุการณ์คีย์ระดับเสียงภายนอกบริการเครื่องเสียงรถยนต์

การกำหนดค่าบริการเครื่องเสียงรถยนต์

ก่อน Android 13 การกำหนดค่าบริการรถยนต์จะถูกเขียนทับด้วยการซ้อนทับการกำหนดค่าผลิตภัณฑ์ (หากต้องการเรียนรู้เพิ่มเติม ดู การปรับแต่งบิลด์ด้วยการซ้อนทับทรัพยากร ) สำหรับ packages/services/Car/service/res/values/config.xml

PRODUCT_PACKAGE_OVERLAYS := <path_to_overlay>

ตำแหน่งของไฟล์กำหนดค่าจาก <path_to_overlay> ไปยังตำแหน่งจริงควรมี packages/services/Car/service/res/values/

บริการรถยนต์ RRO

AAOS รองรับ การซ้อนทับทรัพยากรรันไทม์ ตั้งแต่ Android 13 ใช้ RRO เพื่อเปลี่ยนค่าของการกำหนดค่าเครื่องเสียงรถยนต์ ตัวอย่างเช่น ดู RRO สำหรับการอ้างอิง cuttlefish ในยานยนต์ใน device/google/cuttlefish/shared/auto/rro_overlay/ การกำหนดค่า audioUseDynamicRouting ถูกแทนที่ใน device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/values/config.xml

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

แผนที่ซ้อนทับทรัพยากรมีอยู่ใน device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/xml/overlays.xml :

<overlay>
...
  <item target="bool/audioUseDynamicRouting"
value="@bool/audioUseDynamicRouting" />
...
</overlay>

รายการซ้อนทับทรัพยากรที่กำหนดไว้ใน device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/AndroidManifest.xml มี targetPackage ที่ตั้งค่าเป็น com.android.car.updatable

ดูแหล่งข้อมูลเหล่านี้สำหรับข้อมูลเพิ่มเติม:

API ที่เปิดใช้งานคุณสมบัติ

วิธีการคืน true หากเปิดใช้งานคุณสมบัติบนอุปกรณ์ มิฉะนั้นจะ false ใน CarAudioManager#isAudioFeatureEnabled API พารามิเตอร์ที่ส่งผ่านจะต้องเป็นหนึ่งใน:

  • AUDIO_FEATURE_DYNAMIC_ROUTING
  • AUDIO_FEATURE_VOLUME_GROUP_MUTING
  • AUDIO_FEATURE_OEM_AUDIO_SERVICE
  • AUDIO_FEATURE_VOLUME_GROUP_EVENTS
  • AUDIO_FEATURE_AUDIO_MIRRORING