Android Automotive เป็นโซลูชันแพลตฟอร์มสาระบันเทิงในรถยนต์ที่มาพร้อมกับ Android Open Source Project (AOSP) บทความในหัวข้อนี้จะแนะนำแนวคิดหลักและส่วนประกอบที่ได้รับจาก Android Automotive System UI และแอปหลักที่จำเป็นในการสร้างระบบ Human Machine Interface (HMI) ที่มีประสิทธิภาพสำหรับ OEM, นักพัฒนาบุคคลที่สาม และผู้ใช้ปลายทาง
- คู่มือการรวมโฮสต์ AOSP App Host อนุญาตให้แอปรถยนต์ของ 3P แสดงผลส่วนประกอบอินเทอร์เฟซผู้ใช้ (UI) สไตล์ OEM ในนามของแอป
- โครงสร้างการตั้งค่ารถยนต์ การตั้งค่ารถยนต์มีอินเทอร์เฟซผู้ใช้ที่มองเห็นรถยนต์เป็นศูนย์กลาง การเพิ่มประสิทธิภาพการรบกวนผู้ขับขี่ขั้นพื้นฐาน และจุดเริ่มต้นการปรับแต่งเพิ่มเติมสำหรับ OEM
- คู่มือการรวมไลบรารี UI ของรถยนต์ ไลบรารี UI ของรถยนต์มีเฟรมเวิร์กการพัฒนา UI เพื่อช่วยให้แอพทั้งหมดที่มีอยู่ในรถมีความสอดคล้องและปรับแต่งได้
- ปรับแต่งไอคอนระบบแถบสถานะ แถบสถานะเป็นส่วนประกอบของ UI ระบบ Android ที่ใช้แสดงข้อมูลสำคัญแก่ผู้ใช้อย่างต่อเนื่อง เรียนรู้วิธีปรับแต่งไอคอนระบบแถบสถานะ
- การแจ้งเตือนล่วงหน้า เรียนรู้วิธีปรับแต่งการแจ้งเตือนล่วงหน้า
- โปรแกรมโทรออก ใช้แอประบบ Android นี้เพื่อใช้ประสบการณ์การเพิ่มประสิทธิภาพการรบกวน (DO) สำหรับการโทรผ่านบลูทูธ การเรียกดูรายชื่อติดต่อ และการจัดการการโทร
- สื่อ . ด้วยการตั้งค่าและบริการเพียงไม่กี่อย่าง นักพัฒนาจึงสามารถขยายแอพสื่อที่มีอยู่ได้ แม้ว่าแอพจะต้องเป็นไปตามเทมเพลต Automotive Media แต่นักพัฒนาก็สามารถปรับแต่งสีเทมเพลต แบบอักษร ไอคอน และอื่นๆ เพื่อสร้างประสบการณ์แบบแบรนด์ได้
- การแจ้งเตือน เรียนรู้วิธีเปลี่ยนรูปลักษณ์และการกำหนดค่าของการแจ้งเตือน
คำศัพท์เฉพาะทาง
ข้อกำหนดเหล่านี้ใช้ใน HMI และบทความที่เกี่ยวข้อง:
ภาคเรียน | คำนิยาม |
---|---|
แอพหลัก | ชุดแอปหลักที่สำคัญต่อการทำงานของระบบ รวมถึงการตั้งค่า วิทยุ HVAC สื่อ โปรแกรมโทรออก และคีย์บอร์ด |
เอกสารคำจำกัดความความเข้ากันได้ (CDD) | ระบุข้อกำหนดที่ต้องปฏิบัติตามเพื่อให้อุปกรณ์เข้ากันได้กับ Android เวอร์ชันล่าสุด |
ชุดทดสอบความเข้ากันได้ (CTS) | ชุดทดสอบเชิงพาณิชย์ฟรี พร้อมให้ดาวน์โหลดแล้วที่ ดาวน์โหลดชุดทดสอบความเข้ากัน ได้ |
การปรับแต่ง | แบบฝึกหัดการปรับเปลี่ยนการนำ AOSP ไปใช้ให้ตรงตามข้อกำหนดของ OEM โดยทั่วไป สิ่งนี้เกี่ยวข้องกับการใช้การซ้อนทับทรัพยากรเพื่อใช้การเปลี่ยนแปลงที่สวยงาม ในขณะเดียวกันก็รับประกันการปฏิบัติตาม CDD, CTS และแนวทางประสบการณ์ผู้ใช้ที่เกี่ยวข้องทั้งหมด |
แอพฮีโร่ | ชุดแอปหลักที่สำคัญต่อทุกด้านของ Android รวมถึงฟังก์ชันการทำงาน ความสามารถในการอัปเกรด ระบบนิเวศของนักพัฒนาบุคคลที่สาม และผู้ใช้ปลายทาง แอพฮีโร่ประกอบด้วยการแจ้งเตือน การตั้งค่า สื่อ และศูนย์การสื่อสาร/ตัวโทรออก การใช้งาน AOSP ที่สอดคล้องกันควรมีคุณภาพการผลิต |
การซ้อนทับทรัพยากร | หากต้องการส่งผลต่อการเรนเดอร์อินเทอร์เฟซผู้ใช้ ให้ใช้กลไกนี้เพื่อเปลี่ยนสี เปลี่ยนขนาด เปิดใช้งานการวาด และใช้ทรัพยากรเลย์เอาต์ใน เวลาคอมไพล์ (ทั่วไปที่สุด) หรือขณะรันไทม์ (Runtime Resource Overlays (RRO)) |
UI ของระบบ | อินเทอร์เฟซผู้ใช้ภายนอกแอปที่เป็นของระบบ เช่น แถบนำทาง แถบสถานะ หน้าจอล็อค และกล่องโต้ตอบระดับเสียง |
ธีม | คอลเลกชันสีและสไตล์ที่ใช้ในการกำหนดรูปลักษณ์ของส่วนประกอบและแอปที่สืบทอดธีม |
ประสบการณ์ผู้ใช้ (UX) | สาขาการออกแบบส่วนติดต่อผู้ใช้ (UI) และการใช้งาน |
การปรับแต่ง
การใช้ AOSP ของ System UI และแอประบบหลักอื่นๆ ทำหน้าที่เป็นรากฐานที่แข็งแกร่งสำหรับการเริ่มต้นกระบวนการพัฒนา HMI การปรับเปลี่ยนการใช้งาน AOSP (โดยหลักๆ ผ่านการใช้ทรัพยากรซ้อนทับ) เพื่อให้เป็นไปตามข้อกำหนดด้านตราสินค้า ธุรกิจ และกฎหมายของ OEM เรียกว่า การปรับแต่ง
แม้ว่าระบบโดยรวมจะได้รับการออกแบบและสร้างขึ้นให้มีความยืดหยุ่น แต่ส่วนประกอบต่างๆ คาดว่าจะได้รับการปรับแต่งตามระดับที่แตกต่างกัน:
UI ของระบบ OEM สามารถปรับแต่งหรือแทนที่การใช้งาน AOSP ภายในขอบเขตที่กำหนดโดย CDD และ CTS และแนวทางปฏิบัติ UX อื่น ๆ ที่เกี่ยวข้อง
แอประบบที่ไม่ใช่ฮีโร่ (หรือที่เรียกว่า ข้อมูลอ้างอิง ) OEM สามารถปรับแต่งหรือแทนที่การใช้งาน AOSP ได้
แอพฮีโร่ แต่ละแอปมาพร้อมกับชุดแนวทางการปรับแต่งโดยละเอียด OEM ได้รับการสนับสนุนอย่างยิ่งให้ใช้การนำ AOSP ไปใช้ จากนั้นปรับแต่งภายในขอบเขตที่กำหนดโดยแนวปฏิบัติเหล่านั้น
การกำหนดค่าความหนาแน่น
เพื่อให้แน่ใจว่าองค์ประกอบ UI จะแสดงผลอย่างถูกต้องตามการกำหนดค่าการแสดงผลจริง ต้องตั้งค่าคุณสมบัติความหนาแน่นเป็นบัคเก็ต ( Display Metrics ) ที่ตรงกับความหนาแน่นทางกายภาพมากที่สุด เช่น รายการนี้ในไฟล์บิลด์:
PRODUCT_PROPERTY_OVERRIDES := \ ro.sf.lcd_density=160
เครื่องยนต์ข้อ จำกัด UX
CarUxRestrictionsManager จัดเตรียมตะขอสำหรับแอปเพื่อรับฟังการเปลี่ยนแปลงที่เกี่ยวข้องกับสถานะการขับขี่เพื่อปรับเปลี่ยนประสบการณ์ผู้ใช้อย่างเหมาะสม OEM สามารถซ้อนทับไฟล์การกำหนดค่าได้ที่ packages/services/Car/service/res/xml/car_ux_restrictions_map.xml
เพื่อส่งผลต่อการทำงานของระบบ
ธีมของระบบ
ธีมที่กำหนดชุดเริ่มต้นของรายการทั้งระบบ เช่น สีและลักษณะข้อความ คือ DeviceDefault OEM ได้รับการสนับสนุนให้เริ่มกระบวนการปรับแต่งโดยรวมโดยการปรับเปลี่ยนธีม DeviceDefault ตามค่าเริ่มต้น UI ของระบบและแอประบบทั้งหมดใน AOSP จะสืบทอดมาจากธีมนี้ แอประบบที่พัฒนาโดย OEM ยังได้รับการสนับสนุนให้สืบทอด DeviceDefault แอพที่พัฒนาโดยบุคคลที่สามไม่คาดว่าจะสืบทอด DeviceDefault แต่จะใช้ Theme.Car ที่ให้ไว้ในไลบรารี androidx.car
แทน ไฟล์จะอยู่ดังนี้:
- แกน .
/frameworks/base/core/res/res/values/themes_device_defaults.xml
- สี .
/frameworks/base/core/res/res/values/colors_car.xml
- สไตล์
/frameworks/base/core/res/res/values/styles_car.xml
- ผ้าคลุมรถ.
/packages/services/Car/car_product/overlay/.../values/themes_device_defaults.xml
OEM คาดว่าจะมีโครงสร้างโอเวอร์เลย์แบบขนานไปยังไดเร็กทอรี car_product
ในไดเร็กทอรีผู้จำหน่ายของตน ซึ่งจะขยายการซ้อนทับ car_product
เพิ่มเติม
แอพ Theme Playground
แอปนี้ปรับปรุงกระบวนการปรับแต่งธีม DeviceDefault
ให้ดีขึ้นโดยการแสดงภาพคุณลักษณะของธีมทั้งหมดในที่เดียว นอกจากนี้ นักพัฒนาสามารถแก้ไขปัญหาธีมได้อย่างรวดเร็วโดยการเปรียบเทียบการแสดงผลสไตล์บางสไตล์ในแอปนี้เมื่อเปรียบเทียบกับแอประบบอื่นๆ แอพนี้สามารถดูได้ที่:
/packages/services/Car/tests/ThemePlayground
UI ของระบบ
System UI รวม UI ทั้งหมดภายใต้ /frameworks/base
โดยส่วนใหญ่อยู่ใน /frameworks/base/packages/CarSystemUI
ซึ่งรวมถึงแถบนำทาง แถบสถานะ หน้าจอล็อค กล่องโต้ตอบระดับเสียง โทสต์ ตัวเลือกผู้ใช้ และกล่องโต้ตอบสิทธิ์ OEM สามารถปรับแต่งส่วนประกอบ UI ของระบบได้อย่างกว้างขวางผ่านการซ้อนทับและธีมของทรัพยากร โดยที่แต่ละองค์ประกอบต้องอยู่ภายในข้อกำหนดของ CDD, CTS และแนวทาง UX อื่นๆ ที่เกี่ยวข้อง
แอพระบบ
Android Automotive ประกอบด้วยชุดแอประบบหลักที่สำคัญต่อการทำงานของระบบโดยรวม ในจำนวนนี้ ศูนย์การสื่อสาร สื่อ การแจ้งเตือน และการตั้งค่า ถือเป็นแอป ฮีโร่
- ศูนย์สื่อสาร
- เครื่องปรับอากาศ
- IME (แป้นพิมพ์)
- ตัวเรียกใช้ (หน้าจอหลัก)
- เครื่องเล่นสื่อท้องถิ่น
- สื่อ
- ผู้สื่อสาร
- การแจ้งเตือน
- วิทยุ
- การตั้งค่า
หน้าจอหลัก
หน้าจอหลักหรือที่เรียกว่า Car Launcher คือหน้า Landing Page สำหรับประสบการณ์ HMI การใช้งาน AOSP ทำหน้าที่เป็นข้อมูลอ้างอิงเท่านั้น และ OEM คาดว่าจะแทนที่การใช้งานด้วยตนเอง ซึ่งมักจะรวมการนำทาง การเล่นสื่อ การสื่อสาร และสถานะของระบบอื่น ๆ ตามความจำเป็น บ่อยครั้งที่แอป Car Launcher จะแสดงแอปที่มีอยู่ในระบบ หากต้องการเรียนรู้วิธีจัดการกับเหตุการณ์ต่างๆ เช่น ล่าสุด การเปลี่ยนแปลงแพ็กเกจ และแอป ที่ไม่มีส่วนหัว (ไม่มีกิจกรรมตัวเรียกใช้งาน) โปรดดูการใช้งานข้อมูลอ้างอิง
การแจ้งเตือน
การแจ้งเตือนเป็นองค์ประกอบสำคัญของระบบปฏิบัติการ Android และโครงสร้างเดียวกัน (รวมถึงการแจ้งเตือนล่วงหน้า รายการ/ศูนย์การแจ้งเตือน API การแจ้งเตือน การจัดอันดับ และการดำเนินการแบบอินไลน์) ได้รวมอยู่ใน Android Automotive แล้ว สำหรับรายละเอียด โปรดดู ภาพรวมการแจ้งเตือน บนมือถือ เพื่อเพิ่มประสิทธิภาพกรณีการใช้งานด้านยานยนต์ จึงมีการปรับเปลี่ยนดังต่อไปนี้ (เมื่อเทียบกับกลุ่มการแจ้งเตือนแบบมือถือ):
ลดเนื้อหาการแจ้งเตือนโดยรวมที่ผู้ใช้มองเห็นได้ การลบการเล่นสื่อที่กำลังดำเนินอยู่ การนำทางอย่างต่อเนื่อง และการแจ้งเตือนบริการเบื้องหน้า "ไม่สำคัญ" (ความสำคัญของ LOW และต่ำกว่า) ของแอประบบจากรายการการแจ้งเตือน/ศูนย์ ด้วยความเข้าใจว่าการแจ้งเตือนเหล่านี้ซ้ำซ้อน (เช่น คลัสเตอร์ที่แสดงสถานะสื่อ ) หรือไม่มีประโยชน์
การลบการควบคุมตามบริบทที่ซับซ้อน (เช่น การกดแบบยาวและการควบคุมตามความยาวการปัด)
เคารพการกำหนดค่ากลไกการจำกัด UX
- การแสดงตัวอย่างเนื้อหาการแจ้งเตือนข้อความอาจถูกซ่อนตามสถานะไดรฟ์
- สตริงทั้งหมดต่อยอดที่ความยาวสูงสุด
การเพิ่มหมวดหมู่การแจ้งเตือนใหม่สำหรับรถยนต์ใน Android 9 โดยเฉพาะ มีให้เฉพาะกับแอประบบที่รวมกลุ่มซึ่งทำงานเป็น
android.uid.system
เท่านั้นCATEGORY_CAR_EMERGENCY
อยู่ในอันดับต้นๆ ของรายการแจ้งเตือน ข้ามการควบคุมห้ามรบกวน (DND)-
CATEGORY_CAR_WARNING
อยู่ในอันดับที่ต่ำกว่าเหตุฉุกเฉินและเหนือสิ่งอื่นใด (ข้าม DND) CATEGORY_CAR_INFORMATION
จัดอันดับด้วยการแจ้งเตือนที่เหลือตาม "ความสำคัญ" และความใหม่
การใช้งานสแต็กการแจ้งเตือนตั้งแต่ต้นทางถึงปลายทาง ตั้งแต่ API การแจ้งเตือนไปจนถึง UI ถือเป็นแอป ฮีโร่ เพื่อรับประกันความสามารถในการทำงานร่วมกันของ API ที่สอดคล้องกันใน HU ทั้งหมด และเพื่อเพิ่มความสามารถในการอัปเกรดสูงสุด OEM ขอแนะนำอย่างยิ่งให้ใช้งาน AOSP แล้วปรับแต่งเพียงเล็กน้อย
การปรับแต่ง
ใช้ธีม DeviceDefault มาตรฐานและการซ้อนทับทรัพยากร ปุ่มปรับแต่งพฤติกรรมมีจำนวนจำกัดมากที่:
packages/apps/Car/Notification/res/values/config.xml
การตั้งค่า
แอปการตั้งค่า ( การตั้งค่ารถยนต์ ) เป็นหนึ่งในแอป ฮีโร่ ที่แสดงปุ่มควบคุม ซึ่งผู้ใช้สามารถใช้เพื่อกำหนดค่าแง่มุมต่างๆ ของระบบปฏิบัติการ Android และส่วนอื่นๆ ของรถได้ แอปการตั้งค่าเผยให้เห็นฟีเจอร์มากกว่า 200 รายการในระบบปฏิบัติการ ซึ่งเชื่อมโยงอย่างแน่นหนากับ Android รุ่นหลักแต่ละรุ่น เพื่อเปิดใช้งานความสามารถในการอัปเกรดและเพื่อหลีกเลี่ยงการกระจายตัว OEM ได้รับการสนับสนุนอย่างยิ่งให้ใช้งาน AOSP แล้วปรับแต่ง (แทนที่จะแยกการใช้งาน)
การปรับแต่ง
แอปการตั้งค่าคำนึงถึงการปรับแต่งและเปิดเผยช่องทางต่างๆ สำหรับการปรับแต่ง
ธีม เปิดใช้งานการปรับแต่งภาพวิธีการเรนเดอร์ออบเจ็กต์การตั้งค่าแต่ละประเภท รวมถึง:
Preference.DeviceDefault.CheckBoxPreference
Preference.DeviceDefault.DialogPreference.EditTextPreference
การปรับแต่งลำดับชั้น เพื่อเปิดใช้งาน:
เปิดตัวเป็นส่วนย่อยของรากที่กำหนดเอง ซ้อนทับค่าของ
config_settings_hierarchy_root_fragment
ในไฟล์ชื่อSettings/res/values/config.xml
การปรับแต่งรายการต่างๆ เช่น ลำดับ การจัดกลุ่ม ข้อความ และไอคอน
Settings/res/xml/*.xml
การฉีดแบบคงที่ ในขณะที่ตั้งค่าโปรเจ็กต์โอเวอร์เลย์ OEM สามารถเพิ่มหน้าจอที่เป็นกรรมสิทธิ์โดยการกำหนดและเพิ่มคลาส Fragment และ Controller เพิ่มเติมให้กับลำดับชั้น
การฉีดแบบไดนามิก หากแอปแยกต่างหาก (
apk
) โฮสต์หน้าจอการตั้งค่าที่ต้องเชื่อมโยงจากแอปการตั้งค่าหลัก แอปที่แยกต่างหากนั้นสามารถแทรกแบบไดนามิกได้ สำหรับข้อมูลเพิ่มเติม โปรดดูที่ การตั้งค่าแบบไดนามิก
สื่อ
Media เป็นแอป ฮีโร่ ที่มอบประสบการณ์ผู้ใช้ส่วนหน้าในนามของแอปสื่อที่ใช้ MediaSession
และ MediaBrowser
API แอพสื่ออาจเป็นแอพของบุคคลที่สาม (เช่น Spotify และ Pandora) รวมถึงแหล่งสื่ออื่น ๆ เช่น การสตรีม Bluetooth (BT) และสื่อในเครื่อง
แอพสื่อหลายร้อยรายการพร้อมใช้งานใน Android Auto ( Projection ) ซึ่งทั้งหมดใช้ API สื่อเหล่านี้ตามที่อธิบายไว้ใน การให้การเล่นเสียงสำหรับรถยนต์ Media API พัฒนาไปตามรุ่น Android หลักแต่ละรุ่นและไลบรารี Androidx รุ่น ต่างๆ เพื่อรับประกันการทำงานร่วมกันของ API ในแอปสื่อทั้งหมดและ Android เวอร์ชันในอนาคต เราขอแนะนำให้ OEM ใช้งาน AOSP แล้วปรับแต่ง
การปรับแต่ง
ธีมมาตรฐานผ่านธีม DeviceDefault ยังใช้กับสื่อด้วย นอกจากนี้ การปรับแต่งรูปลักษณ์เพิ่มเติมยังสามารถทำได้ด้วยการซ้อนทับทรัพยากร หากการปรับแต่งนั้นอยู่ภายในขอบเขตของแนวทาง UX
สื่อ USB และแหล่งสื่อ
เท่าที่เป็นไปได้ ขอแนะนำเป็นอย่างยิ่งให้เสียบแหล่งสื่อเหล่านี้เข้ากับสื่อผ่านการใช้งาน MediaSession
และ MediaBrowser
API (ซึ่งเป็นจริงกับแอปสื่อของบริษัทอื่น) ดูแอป LocalMediaPlayer ใน AOSP แอปนี้แสดงไฟล์สื่อในเครื่องและแสดงเป็นแหล่งในสื่อ