ภาพรวม

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 หลังจากมิกซ์แอตทริบิวต์เสียงลงในสตรีมเชิงกายภาพแล้ว แอตทริบิวต์เหล่านั้นจะใช้งานไม่ได้อีกต่อไป

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

สตรีมภายนอก

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

หากสตรีมภายนอกเป็นแหล่งที่มาของสื่อที่ควรโต้ตอบกับสภาพแวดล้อมเสียงที่ Android สร้างขึ้น (เช่น หยุดการเล่น MP3 เมื่อเปิดจูนเนอร์ภายนอก) สตรีมภายนอกเหล่านั้นควรแสดงด้วยแอป Android แอปดังกล่าวจะขอโฟกัสเสียงในนามของแหล่งที่มาของสื่อแทน HAL และจะตอบสนองต่อการแจ้งเตือนโฟกัสโดยการเริ่มและหยุดแหล่งที่มาภายนอกตามความจำเป็นเพื่อให้สอดคล้องกับนโยบายโฟกัสของ Android

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

อุปกรณ์เอาต์พุต

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

การติดตั้งใช้งานระบบสามารถใช้พอร์ตบัส 1 พอร์ตสำหรับเสียงทั้งหมดของ Android ซึ่งในกรณีนี้ Android จะมิกซ์ทุกอย่างเข้าด้วยกันและส่งเป็นสตรีมเดียว หรือ HAL สามารถจัดเตรียมพอร์ตบัส 1 พอร์ตสำหรับ CarAudioContext แต่ละรายการเพื่อให้ส่งเสียงประเภทต่างๆ ได้พร้อมกัน ซึ่งจะช่วยให้การติดตั้งใช้งาน HAL สามารถมิกซ์และลดระดับเสียงต่างๆ ได้ตามต้องการ

การกำหนดบริบทเสียงให้กับอุปกรณ์เอาต์พุตจะทำผ่านไฟล์ car_audio_configuration.xml ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ การกำหนดค่าเกี่ยวกับนโยบายเสียง