Android Automotive OS (AAOS) สร้างจากสแต็กเสียงหลักของ Android เพื่อรองรับกรณีการใช้งานสำหรับการดำเนินการเป็นระบบสาระบันเทิงในรถยนต์ AAOS มีหน้าที่รับผิดชอบต่อเสียงสาระบันเทิง (นั่นคือ สื่อ การนำทาง และการสื่อสาร) แต่จะไม่รับผิดชอบโดยตรงต่อเสียงกริ่งและคำเตือนที่มีข้อกำหนดด้านความพร้อมใช้งานและเวลาอย่างเข้มงวด
แม้ว่า AAOS จะส่งสัญญาณและกลไกต่างๆ เพื่อช่วยยานพาหนะจัดการเสียง แต่สุดท้ายแล้ว ยานพาหนะจะเป็นผู้ตัดสินใจว่าควรเปิดเสียงใดให้ผู้ขับขี่และผู้โดยสารฟัง เพื่อให้ได้ยินเสียงที่สำคัญต่อความปลอดภัยและเสียงตามข้อกำหนดอย่างถูกต้องโดยไม่ขาดตอน
เนื่องจาก AAOS ใช้ประโยชน์จากสแต็กเสียง Android แอปพลิเคชันของบุคคลที่สามที่เล่นเสียงจึงไม่ต้องดำเนินการใดๆ เพิ่มเติมจากในโทรศัพท์ AAOS จะเป็นผู้จัดการการกำหนดเส้นทางเสียงของแอปพลิเคชันโดยอัตโนมัติตามที่อธิบายไว้ในการกำหนดค่านโยบายเสียง
เนื่องจาก Android จัดการประสบการณ์การใช้งานสื่อของยานพาหนะ แหล่งที่มาของสื่อภายนอก เช่น เครื่องรับวิทยุ ควรแสดงโดยแอปที่จัดการโฟกัสเสียงและเหตุการณ์สำคัญเกี่ยวกับสื่อสำหรับแหล่งที่มาได้
เสียงและสตรีมของ Android
ระบบเสียงยานยนต์จัดการเสียงและสตรีมต่อไปนี้
รูปที่ 1 แผนภาพสถาปัตยกรรมที่เน้นสตรีมเป็นหลัก
Android จะจัดการเสียงที่มาจากแอป Android โดยควบคุมแอปเหล่านั้นและกำหนดเส้นทางเสียงไปยังอุปกรณ์เอาต์พุตที่ HAL โดยอิงตามประเภทเสียง ดังนี้
สตรีมเชิงตรรกะ หรือที่เรียกว่าแหล่งที่มาในการตั้งชื่อเสียงหลักจะติดแท็กด้วยแอตทริบิวต์เสียง
สตรีมจริงหรือที่เรียกว่าอุปกรณ์ในคําศัพท์หลักของเสียงจะไม่มีข้อมูลบริบทหลังจากมิกซ์
เสียงภายนอก (ที่มาจากแหล่งที่มาอิสระ เช่น เสียงกริ่งเตือนให้คาดเข็มขัดนิรภัย) ได้รับการจัดการนอก Android ใต้ HAL หรือแม้แต่ในฮาร์ดแวร์แยกต่างหากเพื่อความน่าเชื่อถือ ผู้ที่ใช้ระบบต้องมีมิกเซอร์ที่ยอมรับสตรีมเสียงจาก Android อย่างน้อย 1 สตรีม จากนั้นรวมสตรีมเหล่านั้นอย่างเหมาะสมกับแหล่งเสียงภายนอกที่รถต้องใช้ Android Control HAL มีกลไกที่แตกต่างออกไปสำหรับเสียงที่สร้างขึ้นนอก Android เพื่อสื่อสารกลับไปยัง Android ดังนี้
- คำขอโฟกัสเสียง
- ข้อจำกัดของอัตราขยายหรือระดับเสียง
- การเปลี่ยนแปลงระดับการขยายสัญญาณและระดับเสียง
การใช้งาน HAL เสียงและมิกเซอร์ภายนอกมีหน้าที่รับผิดชอบในการตรวจสอบว่าได้ยินเสียงภายนอกที่สำคัญต่อความปลอดภัย รวมถึงผสมในสตรีมที่ Android มีให้และส่งไปยังลำโพงที่เหมาะสม
เสียงของ Android
แอปอาจมีโปรแกรมเล่นอย่างน้อย 1 รายการที่โต้ตอบผ่าน Android API มาตรฐาน (เช่น AudioManager สำหรับการควบคุมโฟกัสหรือ MediaPlayer สำหรับสตรีมมิง) เพื่อปล่อยสตรีมเสียงเชิงตรรกะอย่างน้อย 1 รายการ ข้อมูลนี้อาจเป็นโมโนแบบช่องเดียวหรือเซอร์ราวด์ 7.1 แต่จะกำหนดเส้นทางและถือว่าเป็นแหล่งที่มาเดียว สตรีมแอปจะเชื่อมโยงกับ AudioAttributes ซึ่งจะให้คำแนะนำของระบบว่าเสียงควรจะแสดงอย่างไร
ระบบจะส่งสตรีมเชิงตรรกะผ่าน AudioService และกำหนดเส้นทางไปยังสตรีมเอาต์พุตจริงที่มีอยู่เพียง 1 (รายการเดียว) ซึ่งแต่ละรายการคือเอาต์พุตของมิกเซอร์ภายใน AudioFlinger หลังจากมิกซ์แอตทริบิวต์เสียงลงเป็นสตรีมจริงแล้ว แอตทริบิวต์ดังกล่าวจะใช้ไม่ได้อีกต่อไป
จากนั้นระบบจะส่งสตรีมจริงแต่ละรายการไปยัง Audio HAL เพื่อแสดงผลบนฮาร์ดแวร์ ในแอปยานยนต์ ฮาร์ดแวร์การแสดงผลอาจเป็นตัวแปลงรหัสในเครื่อง (คล้ายกับอุปกรณ์เคลื่อนที่) หรือตัวประมวลผลระยะไกลในเครือข่ายจริงของยานพาหนะ ไม่ว่าจะด้วยวิธีใด การติดตั้งใช้งาน Audio HAL มีหน้าที่ส่งข้อมูลตัวอย่างจริงและทำให้เสียงดังขึ้น
สตรีมภายนอก
ระบบอาจส่งสตรีมเสียงที่ไม่ควรกำหนดเส้นทางผ่าน Android (เพื่อการรับรองหรือกำหนดเวลา) ไปยังมิกเซอร์ภายนอกโดยตรง ใน Android 11 ปัจจุบัน HAL สามารถขอโฟกัสสำหรับเสียงภายนอกเหล่านี้เพื่อแจ้งให้ Android ทราบว่าสามารถดำเนินการที่เหมาะสม เช่น การหยุดสื่อชั่วคราวหรือป้องกันไม่ให้ผู้อื่นได้โฟกัส
หากสตรีมภายนอกเป็นแหล่งที่มาของสื่อที่ควรโต้ตอบกับสภาพแวดล้อมเสียงที่ Android สร้างขึ้น (เช่น หยุดการเล่น MP3 เมื่อเปิดเครื่องรับสัญญาณภายนอก) สตรีมภายนอกเหล่านั้นควรแสดงโดยแอป Android แอปดังกล่าวจะขอโฟกัสเสียงในนามของแหล่งที่มาของสื่อแทน HAL และจะตอบสนองต่อการแจ้งเตือนโฟกัสโดยเริ่มและหยุดแหล่งที่มาภายนอกตามที่จำเป็นเพื่อให้สอดคล้องกับนโยบายโฟกัสของ Android
แอปมีหน้าที่จัดการเหตุการณ์ของปุ่มสื่อด้วย เช่น เล่นและหยุดชั่วคราว กลไกที่แนะนำวิธีหนึ่งในการควบคุมอุปกรณ์ภายนอกดังกล่าวคือ
HwAudioSource
ดูข้อมูลเพิ่มเติมได้ที่หัวข้อเชื่อมต่ออุปกรณ์อินพุตใน AAOS
อุปกรณ์เอาต์พุต
ที่ระดับ Audio HAL ประเภทอุปกรณ์ AUDIO_DEVICE_OUT_BUS
จะมีอุปกรณ์เอาต์พุตทั่วไปสำหรับใช้ในระบบเสียงของยานพาหนะ อุปกรณ์รถบัสรองรับพอร์ตที่ระบุที่อยู่ได้ (โดยที่แต่ละพอร์ตคือจุดสิ้นสุดของสตรีมอุปกรณ์จริง) และควรเป็นอุปกรณ์เอาต์พุตประเภทเดียวที่รองรับในรถ
การติดตั้งใช้งานระบบสามารถใช้พอร์ตบัส 1 พอร์ตสำหรับเสียงทั้งหมดของ Android ซึ่งในกรณีนี้ Android จะผสมทุกอย่างเข้าด้วยกันและส่งเป็น 1 สตรีม หรือ HAL อาจจัดเตรียมพอร์ตบัส 1 พอร์ตสําหรับCarAudioContext แต่ละรายการเพื่ออนุญาตให้ส่งเสียงประเภทใดก็ได้พร้อมกัน ซึ่งช่วยให้การติดตั้งใช้งาน HAL สามารถผสมและลดเสียงต่างๆ ได้ตามต้องการ
การกำหนดบริบทเสียงให้กับอุปกรณ์เอาต์พุตทำได้ผ่านไฟล์ car_audio_configuration.xml
ดูข้อมูลเพิ่มเติมได้ที่การกำหนดค่านโยบายเสียง