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

เปิดใช้บริการปลั๊กอิน OEM ใหม่สำหรับรถยนต์ใน Android 14 ส่วนประกอบบางอย่างของรถที่จะกำหนดค่า เพื่อเสียงโดยเฉพาะ มีการนำบริการปลั๊กอินมาใช้ ซึ่งทำให้ OEM กำหนดค่าได้อย่างยืดหยุ่น การจัดการเสียงในอุปกรณ์ AAOS

  • การควบคุมโฟกัสเสียง
  • การควบคุมระดับเสียงและการปิดเสียง
  • การควบคุมการลดเสียง

สถาปัตยกรรมบริการปลั๊กอินสำหรับรถยนต์

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

ภาพ

บริการรถยนต์เริ่มต้นบริการรถยนต์ OEM โดยค้นหาส่วนประกอบที่กำหนดไว้ใน config_oemCarService หากไม่มีการกำหนดค่า แปลว่าไม่มีบริการ OEM และจะไม่มีการเริ่มบริการ คอมโพเนนต์ต้องขยาย OemCarService บริการเสียงรถยนต์ต้องเขียนทับ API สำหรับการรับ OEM ระบบเสียงรถยนต์ บริการ:

public final class OemCarServiceImp extends OemCarService {
    @Override
    public OemCarAudioFocusService getOemAudioFocusService();

    @Override
    public OemCarAudioDuckingService getOemAudioDuckingService();

    @Override
    public OemCarAudioVolumeService getOemAudioVolumeService();
}

สำหรับ ตัวอย่าง โปรดดู แอปทดสอบข้อมูลอ้างอิงที่กำหนดไว้ใน packages/services/Car/tests/OemCarServiceTestApp

แม้ว่าบริการจะเริ่มต้นโดยศูนย์บริการรถยนต์ บริการจะไม่ทำโดยอัตโนมัติ รับช่วงสิทธิ์ที่มีให้สำหรับบริการเครื่องเสียงรถยนต์ ดังนั้น การค้นหาใดๆ คุณควรได้รับสิทธิ์ที่จำเป็นจากบริการ OEM พร้อมกับ Google Analytics ตัวอย่างเช่น โปรดดู packages/services/Car/data/etc/com.android.car.oemcarservice.testapp.xml

บริการเครื่องเสียงรถยนต์ที่มีสถาปัตยกรรมบริการ OEM

ใน AAOS บริการเสียงรถยนต์จะจัดการการดำเนินการต่อไปนี้

  • การกำหนดเส้นทางเสียง
  • โฟกัสอัตโนมัติ
  • การลดเสียง
  • ระดับเสียงและปิดเสียง

ก่อน Android 14 ลักษณะการทำงานนี้คงที่เป็นส่วนใหญ่ จะแก้ไขได้ผ่านการตั้งค่าเท่านั้น แม้ว่าจะเป็นเฉพาะบางกรณีเท่านั้น Android 14 เปิดตัวกลไกสำหรับเครื่องเสียงในรถ ในการสื่อสารกับคอมโพเนนต์ที่ OEM กำหนด ซึ่งจะจัดการสิ่งต่อไปนี้

  • โฟกัสอัตโนมัติ
  • การลดเสียง
  • ระดับเสียงและปิดเสียง

ภาพด้านล่างแสดงสถาปัตยกรรมง่ายๆ สำหรับบริการเครื่องเสียงรถยนต์ และ บริการ OEM รถยนต์ บริการเครื่องเสียงรถยนต์กำหนดฮุกต่างๆ ที่เรียกใช้ได้ บริการระบบเสียง OEM ในรถยนต์เพื่อจัดการพฤติกรรมของเสียง รายการหลังเกิดขึ้นเพียง หากมีการกำหนดส่วนประกอบบริการเครื่องเสียงรถยนต์ OEM ที่เกี่ยวข้อง มิเช่นนั้น แอตทริบิวต์ บริการเสียงรถยนต์จะใช้ลักษณะการทำงานเริ่มต้น

ภาพ

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

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

บริการเครื่องเสียงรถยนต์จะโทรหาศูนย์บริการรถยนต์จาก OEM การโทรเหล่านี้ เกิดขึ้นข้ามกระบวนการต่างๆ ซึ่งต้องใช้การสื่อสารระหว่างกระบวนการ (IPC) IPC จะเพิ่มเวลาในการตอบสนองให้กับการโทรแต่ละครั้ง สิ่งสำคัญคือการลดเวลาในการตอบสนองในฟิลด์ บริการ OEM

เนื่องจากบริการเสียงรถยนต์ที่โทรหาบริการ OEM บล็อกอยู่ บริการ OEM ไม่ควรเรียกใช้บริการเสียงติดรถยนต์ในการประเมิน API โดยตรง แต่ บริการระบบเสียงติดรถยนต์จะให้ข้อมูลที่จำเป็นเพื่อให้การโทรระหว่าง กระบวนการ 2 อย่างใช้เพียงการเดินทางในทิศทางเดียว

คำจำกัดความของบริการเครื่องเสียงรถยนต์จาก OEM

บริการโฟกัสเครื่องเสียงรถยนต์จาก OEM

บริการเครื่องเสียงรถยนต์จัดการคำขอโฟกัสเสียงจากแอปด้วยการลงทะเบียน ผู้ฟังนโยบายเสียงโดยเฉพาะ บริการเครื่องเสียงรถยนต์มีกลไกในการจัดการ พฤติกรรมการโฟกัสตามแบบคงที่ เมทริกซ์การโต้ตอบ เมทริกซ์จะระบุการโต้ตอบที่แตกต่างกัน 3 ประเภท

  • การโต้ตอบพร้อมกัน จุดโฟกัสจะคงโฟกัสได้เหมือนเดิม

  • การโต้ตอบสุดพิเศษ คำขอโฟกัสขาเข้ารับโฟกัสจาก ตัวยึดโฟกัสปัจจุบัน

  • ปฏิเสธการโต้ตอบ คำขอโฟกัสที่เข้ามาใหม่ถูกปฏิเสธตาม ตัวยึดโฟกัสปัจจุบัน

แม้ว่าวิธีนี้จะเพียงพอสําหรับกรณีการใช้งานด้านยานยนต์บางกรณี แต่ก็ไม่ได้เติมเต็ม ความต้องการในการโต้ตอบที่อาจแตกต่างกันไปตามข้อกำหนด OEM สำหรับกรณีนี้ เรา แนะนำ OemCarAudioFocusService:

public interface OEmCarAudioFocusService {
    OemCarAuddioFocusResults evaluateAudioFocusRequest(
        OemCarAudioFocusEvaluationRequest request);
    
    void notifyAudioFocusChange(
        List<AudioFocusEntry> holder,
        List<AudioFocusEntry> losers, int zoneId);
}

เรียก API evaluateAudioFocusRequest จากบริการเสียงรถยนต์ได้ทุกเมื่อ มีคำขอสำหรับการโฟกัสเสียงที่ต้องได้รับการประเมิน ซึ่งมีอยู่ 2 แนวทาง API ที่บล็อกผลการค้นหาที่จะแสดง คำขอมีข้อมูล เกี่ยวกับสถานะปัจจุบันของสแต็กเสียง:

ข้อมูลนี้สามารถใช้เพื่อประเมิน newFocusRequest เมื่อเทียบกับ ผู้ถือโฟกัสปัจจุบันใน focusHolders และผู้เสียโฟกัสปัจจุบันใน focusLosers API ควรแสดงผลลัพธ์ดังนี้

class OemCarAudioFocusResult {
    int audioZoneId;
    int audioFocusEvaluationResults;
    AudioFocusEntry focusResult;
    List<AudioFocusEntry> newLosers;
    List<AudioFocusEntry> newlyBlocked;
}

ส่วนนี้มีข้อมูลเกี่ยวกับผลการประเมินจริงใน audioFocusEvaluationResults ซึ่งระบุว่าคำขอปัจจุบันมี ได้รับสิทธิ์แล้ว ล่าช้า หรือล้มเหลว การเปลี่ยนแปลงใดๆ ในชุดโฟกัสปัจจุบัน ควรตั้งค่าในรายการ newLosers และ newlyBlocked ทั้งนี้ขึ้นอยู่กับลักษณะ ของการเปลี่ยนแปลงสแต็ก

โดยที่ newLosers มีรายการซึ่งก่อนหน้านี้มีโฟกัสอยู่ แต่ ควรสูญเสียโฟกัสไม่ว่าจะถาวรหรือชั่วคราว การสูญเสียโฟกัสถาวร จะถูกนำออกจากสแต็กโฟกัสเสียงอีก และผู้สูญเสียโฟกัสแบบชั่วคราว จะย้ายไปยังสแต็ก "แพ้โฟกัส" ปัจจุบันจนกว่าจะกลับมาโฟกัสหรือ ออกจากผู้ขอโฟกัสเดิม อย่างไรก็ตาม ผู้ฟังที่มีสมาธิสำหรับ คำขอจะไม่ได้รับการโฟกัสที่เกี่ยวข้อง

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

API รายการที่ 2 ซึ่งก็คือ notifyAudioFocusChange เป็นวิธีเดียวที่จะเรียกใช้ทุกๆ คำขอโฟกัสเสียงหรือยกเลิก API ใช้เพื่อแจ้งข้อมูลแก่บริการ OEM เป็นส่วนใหญ่ เกี่ยวกับการเปลี่ยนแปลงโฟกัส ซึ่งอาจส่งผลต่อลักษณะการทำงานของบริการระบบเสียงสำหรับรถยนต์ของ OEM

แนวทางสำหรับการประเมินจุดมุ่งเน้น

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

  • โดยไม่โฟกัสเสียงที่มีลำดับความสำคัญสูง (เช่น การโทร) ฉุกเฉินหรือความปลอดภัย) แอปควรมีโฟกัสเสียงได้ ชั่วคราวหรือถาวร

  • ขณะที่โฟกัสสื่อทำงานอยู่ แอปจะส่งคำขอดังต่อไปนี้

    • การใช้งานการโทร ควรรับโฟกัสพร้อมกันได้ หรือโดยเฉพาะ

    • โฟกัสการใช้งานการนำทาง ควรจะได้รับการโฟกัส พร้อมกันหรือเฉพาะเท่านั้น

    • โฟกัสการใช้งาน Assistant ควรจะสามารถรับโฟกัสได้ พร้อมกันหรือเฉพาะเท่านั้น

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

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

บริการระดับเสียงรถยนต์จาก OEM

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

เรามีรายการลำดับความสำคัญสูง 2 รายการ รายการแรกจะพิจารณาเสียงทั้งหมด บริบทตามลำดับนี้ โดยรายการจะแสดงเรียงจากมากไปหาน้อย ลำดับความสำคัญที่ด้านบน และลำดับความสำคัญต่ำสุดอยู่ด้านล่าง ตัวอย่างเช่น หาก เสียงการนำทางและเสียงเพลงก็ทำงานพร้อมกัน ระดับเสียงการนำทางมีการเปลี่ยนแปลงระหว่างเหตุการณ์ปุ่มปรับระดับเสียง

  1. การไปยังรายการต่างๆ
  2. โทร
  3. เพลง
  4. ประกาศ
  5. คำสั่งเสียง
  6. เสียงเรียกเข้า
  7. เสียงของระบบ
  8. ความปลอดภัย
  9. สัญญาณเตือน
  10. การแจ้งเตือน
  11. สถานะยานพาหนะ
  12. ฉุกเฉิน

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

  1. โทร
  2. สื่อ
  3. ประกาศ
  4. คำสั่งเสียง

รายการนี้ยังแสดงตามลำดับจากมากไปน้อยอีกด้วย วัตถุประสงค์ของรายการซีคอนนี้ คือช่วยให้สามารถเปลี่ยนเสียงทั่วไป ผ่านเหตุการณ์สําคัญได้ ไม่ปกติ อาจเป็นเสียงที่มีระยะเวลาสั้นกว่า สามารถจัดการได้ผ่านการตั้งค่าเสียง UI เท่านั้น

ตั้งค่าระดับเสียงเวอร์ชันจริงได้ด้วย การกำหนดค่า audioVolumeAdjustmentContextsVersion การกำหนดค่าอาจเป็น ตั้งค่าเป็น 1 หรือ 2 (2 เป็นค่าเริ่มต้น)

หากต้องการความยืดหยุ่นมากขึ้นในการจัดการปริมาณ OemCarAudioVolumeService เปิดตัวใน Android 14 ดังนี้

public interface OemCarAudioVolumeService {
    OemCarvolumeChangeInfo getSuggestedGroupForVolumeChange(
OemCarAudioVolumeRequest request, int volumeAdjustment);
}

บริการระดับเสียงในรถของ OEM มีวิธีเดียว คือ volumeAdjustment และ OemCarAudioVolumeRequest:

class OemCarAudioVolumeRequest {
    int audioZoneId;
    int callState;
    List<AudioAttributes> activePlaybackAttributes;
    List<AudioAttributes> duckedAttributes;
    List<CarVolumeGroupInfo> volumeGroupState;
}

activePlaybackAttributes ของคำขอมีแอตทริบิวต์เสียงที่ใช้งานอยู่ ขณะนี้ duckedAttributes ทั้งหมดมีแอตทริบิวต์เสียงแบบฝัง volumeGroupState มีสถานะปัจจุบันของกลุ่มวอลุ่ม คำขอ แสดงสถานะปัจจุบันของการซ้อนเสียง และสามารถใช้เพื่อระบุ ควรเปลี่ยนกลุ่มระดับเสียงใด ผลลัพธ์ควรแสดงผลใน OemCarVolumeChangeInfo:

class OemCarVolumeChangeInfo {
    boolean change;
    CarVolumeGroupInfo volumeGroupChanged;
}

บูลีน change จะระบุว่าปริมาณมีการเปลี่ยนแปลงหรือไม่ true บ่งชี้ว่า มีการเปลี่ยนแปลงและควรอัปเดตกลุ่มระดับเสียง volumeGroupChanged คือกลุ่มระดับเสียงจริงที่ควรเปลี่ยน ช่วงเวลานี้ ควรเปลี่ยนตามพารามิเตอร์ volumeAdjustment เดิม ที่ส่งไปยัง API ตัวอย่างเช่น หากผลลัพธ์ระบุว่าการนำทาง ควรปิดเสียงกลุ่มระดับเสียง บูลีนจะเป็น true และรายการที่แสดงผล กลุ่มระดับเสียงควรเป็นกลุ่มนั้นสำหรับการนำทาง

บริการดักดูรถของ OEM

บริการเครื่องเสียงรถยนต์จัดการการลดเสียงโดยตรวจสอบการเปลี่ยนแปลงโฟกัสของเสียงและ กำลังส่งสัญญาณไปยัง HAL AudioControl เกี่ยวกับอุปกรณ์เสียงที่จะนำมาใช้ เมื่อเปลี่ยนโฟกัส ระบบจะประเมินตัวยึดตำแหน่งที่ใช้งานอยู่ทั้งหมดเพื่อระบุ ซึ่งควรจะค่อยๆ เลือนตามชุดของการลดแบบคงที่นี้ กฎดังนี้

  • เสียงฉุกเฉินเป็นเป็ดทุกอย่างยกเว้นเสียงโทร
  • ความปลอดภัยลดทุกอย่างยกเว้นเสียงฉุกเฉิน
  • การนำทางเป็นทุกอย่างยกเว้นเสียงเพื่อความปลอดภัยและเสียงฉุกเฉิน
  • โทรหาเป็ดทุกอย่างยกเว้นเสียงความปลอดภัย เหตุฉุกเฉิน และเสียงนำทาง
  • เสียงสายเรียกเข้าเป็ด
  • เพลงและประกาศควรย่อมาจากทุกสิ่ง

กฎเหล่านี้ไม่ได้ครอบคลุมทั้งหมดและ OEM ยังคงเป็นผู้รับผิดชอบในการกำหนด ควรลดเสียงตามหลักเกณฑ์เหล่านี้อย่างไร OEM สามารถควบคุม คำแนะนำอย่างเข้มงวดมากขึ้นตามข้อกำหนดที่มีให้ OemCarDuckingService เปิดตัวใน Android 14 ดังนี้

class OemCarAudioDuckingService {
List<AudioAttributes>   evaluateAttributesToDuck(
        OemCarAudioVolumeRequest request);
}

เรียก API นี้จากบริการเสียงรถยนต์เมื่อมีการเปลี่ยนแปลงการโฟกัสเสียง นำกลับมาใช้ซ้ำ OemCarAudioVolumeRequest ที่แนะนำใน บริการปริมาณรถยนต์ของ OEM และมี เพื่อประกอบการตัดสินใจเกี่ยวกับแอตทริบิวต์ที่จะนำมาใช้ รายการ แอตทริบิวต์เสียงที่จะ Duck จาก API ถูกเปรียบเทียบกับสถานะเสียงปัจจุบัน:

  • แอตทริบิวต์เสียงที่ถูกตัดออกในปัจจุบัน:

    • ในรายการ เรายังคงเป็น Duck อยู่
    • ไม่อยู่ในรายการ ปิดการลดเสียง
  • ไม่ได้ตัดแอตทริบิวต์เสียงในขณะนี้:

    • อยู่ในรายการ เป็ด
    • ไม่อยู่ในรายการ ปิดการลดเสียง

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

ภาพด้านล่างแสดงแผนภาพลำดับการลดเสียงแบบง่าย การควบคุมสำหรับคำขอโฟกัสเมื่อใช้บริการการลด OEM

ภาพ

ลำดับจะเริ่มต้นเมื่อแอปขอ จัดการโฟกัสเสียง ผ่าน API โปรแกรมจัดการเสียงสาธารณะ ส่งต่อคำขอไปยังเครื่องเสียงในรถแล้ว บริการเพื่อพิจารณาผลลัพธ์ เมื่อเลือกโฟกัสเสียงได้ การลดเสียง ประเมินโดยบริการเสียงรถยนต์ที่เรียก OemCarAudioDuckingService ไปยัง ประเมินว่าควรตัดแอตทริบิวต์เสียงใด เมื่อมีการแสดงผลลัพธ์กลับมา จาก evaluateAttributesToDuck API ระบบจะคำนวณอุปกรณ์เสียงจนถึง Duck และสุดท้ายก็ส่งข้อมูลไปยัง AudioControl เพื่อใช้การลดปัญหา ฮาร์ดแวร์เสียง

การใช้ข้อมูลอ้างอิงบริการเครื่องเสียงรถยนต์ของ OEM

AAOS นำเสนอการใช้ข้อมูลอ้างอิงของบริการรถยนต์ OEM ใน packages/services/Car/tests/OemCarServiceTestApp ซึ่งใช้ OemCarService พร้อมด้วย OemCarAudioFocusService OemCarAudioDuckingService และ OemCarAudioVolumeService อย่างหลัง แต่ละบริการใช้และไฟล์ XML เพื่อโหลดลักษณะการทำงานแบบคงที่ ตัวอย่างเช่น OemCarAudioFocusServiceImp จะโหลด oem_focus_config.xml มีเมทริกซ์การโต้ตอบ ใช้เมทริกซ์เพื่อประเมินคำขอโฟกัส เมื่อมีการเรียก evaluateAudioFocusRequest

ข้อมูลอ้างอิงการแก้ไขข้อบกพร่องของแอปทดสอบ

แอปทดสอบบริการรถยนต์ OEM เป็นส่วนหนึ่งของซอร์สโค้ด AOSP OEM สามารถ เปลี่ยนแปลงไปตามความต้องการ สำหรับการแก้ไขข้อบกพร่อง ให้ใช้ config_oemCarService การกำหนดค่าเพื่อเปิดใช้แอปทดสอบ

<!-- This is the component name for the OEM customization service. OEM can choose to implement
this service to customize car service behavior for different policies. If OEMs choose to
implement it, they have to implement a service extending OemCarService exposed by car-lib,
and implement the required component services.
If the component name is invalid, CarService would not connect to any OEM service.
Component name can not be a third party package. It should be pre-installed -->
<string name="config_oemCarService" translatable="false">
com.android.car.oemcarservice.testapp/.OemCarServiceImpl
</string>

ในการยืนยันบริการ OEM รถยนต์ ใช้คำสั่ง dump ของบริการรถยนต์สำหรับ บริการ OEM:

adb shell dumpsys car_service --oem-service

ผลลัพธ์อาจคล้ายกับผลลัพธ์ด้านล่าง

***CarOemProxyService dump***
  mIsFeatureEnabled: true
  mIsOemServiceBound: true
  mIsOemServiceReady: true
  mIsOemServiceConnected: true
  mInitComplete: true
  OEM_CAR_SERVICE_CONNECTED_TIMEOUT_MS: 5000
  OEM_CAR_SERVICE_READY_TIMEOUT_MS: 5000
  mComponentName: com.android.car.oemcarservice.testapp/.OemCarServiceImpl

บูลีนแต่ละบูลีนในข้อมูล dump แต่ละกลุ่มจะระบุสถานะของฟีเจอร์ และบริการ ตัวอย่างเช่น ข้อมูลดัมพ์ mIsOemServiceReady จะระบุว่า บริการพร้อมใช้งานแล้ว โดยที่ true ระบุว่าบริการพร้อมใช้งานแล้วและ false แสดงว่ายังไม่พร้อมใช้งาน