Android Automotive OS (AAOS) สร้างขึ้นจากสแต็กเสียงหลักของ Android เพื่อรองรับกรณีการใช้งานสำหรับระบบสาระบันเทิงในรถยนต์ AAOS มีหน้าที่รับผิดชอบต่อเสียงสาระบันเทิง (นั่นคือ สื่อ การนำทาง และการสื่อสาร) แต่จะไม่รับผิดชอบโดยตรงต่อเสียงกริ่งและคำเตือนที่มีข้อกำหนดด้านความพร้อมใช้งานและเวลาอย่างเข้มงวด
แม้ว่า AAOS จะมีสัญญาณและกลไกที่ช่วยให้ยานพาหนะจัดการเสียงได้ แต่สุดท้ายแล้ว ยานพาหนะจะต้องตัดสินใจว่าควรเปิดเสียงใดให้ผู้ขับขี่และผู้โดยสารฟัง เพื่อให้ได้ยินเสียงที่สำคัญต่อความปลอดภัยและเสียงตามข้อกำหนดอย่างถูกต้องโดยไม่ขาดตอน
เนื่องจาก AAOS ใช้ประโยชน์จากสแต็กเสียง Android แอปพลิเคชันของบุคคลที่สามที่เล่นเสียงจึงไม่ต้องดำเนินการใดๆ เพิ่มเติมจากในโทรศัพท์ AAOS จะจัดการการกำหนดเส้นทางเสียงของแอปพลิเคชันโดยอัตโนมัติตามที่อธิบายไว้ในการกำหนดค่านโยบายเสียง
เนื่องจาก Android จัดการประสบการณ์การใช้งานสื่อของยานพาหนะ แหล่งที่มาของสื่อภายนอก เช่น เครื่องรับวิทยุ ควรแสดงโดยแอปที่จัดการโฟกัสเสียงและเหตุการณ์สำคัญเกี่ยวกับสื่อสำหรับแหล่งที่มาได้
เสียงและสตรีมของ Android
ระบบเสียงยานยนต์จัดการเสียงและสตรีมต่อไปนี้
รูปที่ 1 แผนภาพสถาปัตยกรรมที่เน้นสตรีม
Android จะจัดการเสียงที่มาจากแอป Android โดยควบคุมแอปเหล่านั้นและกำหนดเส้นทางเสียงไปยังอุปกรณ์เอาต์พุตที่ HAL โดยอิงตามประเภทเสียง ดังนี้
สตรีมเชิงตรรกะหรือที่เรียกว่าแหล่งที่มาในคําศัพท์หลักของเสียงจะติดแท็กแอตทริบิวต์เสียง
สตรีมจริงหรือที่เรียกว่าอุปกรณ์ในคําศัพท์หลักของเสียงจะไม่มีข้อมูลบริบทหลังจากมิกซ์
เสียงภายนอก (ที่มาจากแหล่งที่มาอิสระ เช่น เสียงกริ่งเตือนให้คาดเข็มขัดนิรภัย) ได้รับการจัดการนอก Android ใต้ HAL หรือแม้แต่ในฮาร์ดแวร์แยกต่างหากเพื่อความน่าเชื่อถือ ผู้ติดตั้งระบบต้องจัดหามิกเซอร์ที่รับอินพุตเสียงอย่างน้อย 1 สตรีมจาก Android แล้วรวมสตรีมเหล่านั้นเข้ากับแหล่งเสียงภายนอกที่รถต้องการอย่างเหมาะสม 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
ดูข้อมูลเพิ่มเติมได้ที่การกำหนดค่านโยบายเสียง