ภาพรวม

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 ดูข้อมูลเพิ่มเติมได้ที่การกำหนดค่านโยบายเสียง