Android Automotive มี UI ระบบใหม่ที่พัฒนาขึ้นสำหรับยานพาหนะโดยเฉพาะ องค์ประกอบส่วนใหญ่ UI ของระบบจะทำงานร่วมกับบริการเฟรมเวิร์กอย่างแน่นหนา UI ของระบบหมายถึง ที่แสดงบนหน้าจอที่ไม่ได้เป็นส่วนหนึ่งของแอป UI ระบบยานยนต์ (ใน แพ็กเกจองค์ประกอบ CarSystemUI) คือส่วนขยายของ UI ระบบ Android (ในแพ็กเกจ UI ระบบ) ซึ่งได้รับการปรับแต่งมาสำหรับยานพาหนะโดยเฉพาะ
UI ระบบคืออะไร
คอมโพเนนต์เฉพาะสำหรับ UI ระบบยานยนต์ ได้แก่
ส่วนประกอบ | คำอธิบาย |
---|---|
UI หน้าจอล็อก | คัดกรองผู้ใช้ที่ผ่านการตรวจสอบสิทธิ์ไปยังบัญชีผู้ใช้ที่เฉพาะเจาะจง |
แถบนำทาง | แถบระบบที่สามารถจัดวางได้ทางด้านซ้าย ด้านล่าง หรือด้านขวาของหน้าจอ และ สามารถรวมปุ่มข้อมูลประกอบสำหรับการไปยังแอปต่างๆ สลับแผงการแจ้งเตือน และ ให้การควบคุมยานพาหนะ (เช่น HVAC) ซึ่งแตกต่างจาก UI ระบบ Android ซึ่งมีปุ่ม "กลับ" "หน้าแรก" และ "สแต็กแอป" |
แถบสถานะ | แถบระบบที่วางอยู่ตามหน้าจอซึ่งทำหน้าที่เป็นแถบนำทาง
แถบสถานะยังมีฟังก์ชันที่สนับสนุนดังนี้
|
UI ระบบ | หมายถึงองค์ประกอบใดๆ ที่แสดงอยู่บนหน้าจอที่ไม่ได้เป็นส่วนหนึ่งของแอป |
UI ตัวสลับผู้ใช้ | หน้าจอที่ผู้ใช้เลือกผู้ใช้รายอื่นได้ |
UI ระดับเสียง | กล่องโต้ตอบที่แสดงเมื่อคนขับใช้ปุ่มปรับระดับเสียงเพื่อเปลี่ยนระดับเสียงบน อุปกรณ์ |
UI ระบบทำงานอย่างไร
UI ระบบเป็นแอป Android ที่ทำงานเมื่ออุปกรณ์เปิดอยู่ เริ่มต้นจากการพิจารณา SystemServer จุดแรกเข้าที่เกี่ยวข้องมากที่สุดสำหรับด้านที่ผู้ใช้มองเห็นของ UI ของระบบมีดังต่อไปนี้ ใช้คอมโพเนนต์เหล่านี้เพื่อปรับแต่ง UI ระบบ Android สำหรับความสามารถเฉพาะของ Automotive
config_statusBarComponent
config_systemUIFactoryComponent
CarSystemUI เป็นส่วนขยายของแพ็กเกจ UI ระบบ ซึ่งหมายความว่าคลาสและ ทรัพยากรในแพ็กเกจ UI ของระบบสามารถใช้และลบล้างโดยแพ็กเกจ CarSystemUI ได้
ปรับแต่ง UI ระบบ
การวางซ้อน
แม้ว่าคุณจะสามารถแก้ไขซอร์สโค้ดของ Android เพื่อปรับแต่ง UI ของระบบได้ การทำเช่นนี้ทำให้การอัปเดต Android ในอนาคตทำได้ยากและซับซ้อนมากขึ้น แต่ Android รองรับการใช้ไดเรกทอรีซ้อนทับ ซึ่งช่วยให้คุณแทนที่ไฟล์ทรัพยากรได้โดยไม่ต้อง การแก้ไขซอร์สโค้ด ในระบบบิลด์ของ Android ระบบวางซ้อนจะลบล้างไฟล์ใน ที่ควบคุมได้ ไฟล์ที่แก้ไขแล้วทั้งหมดจะได้รับการระบุอย่างชัดเจนโดยไม่ข้ามส่วนเนื้อหา แผนผังของซอร์สโค้ด AOSP
ต้องวางไฟล์โฆษณาซ้อนทับไว้ในไดเรกทอรี PRODUCT_PACKAGE_OVERLAYS
และต้องมี
โฟลเดอร์ย่อยเดียวกันกับโครงสร้างรูท AOSP เดิมทุกประการ สำหรับ Android
10 ขึ้นไป PRODUCT_PACKAGE_OVERLAYS
ได้รับการตั้งค่าเป็น:
PRODUCT_PACKAGE_OVERLAYS := packages/services/Car/car_product/overlay
UI ระบบยานยนต์ใช้ทรัพยากรจาก UI ระบบ และแพ็กเกจ CarSystemUI ซึ่งหมายความว่าทรัพยากรจากแต่ละตำแหน่งอาจถูกลบล้างด้วยการวางซ้อนเพื่อให้ส่งผลต่อ รูปลักษณ์ของ UI ระบบยานยนต์
ในการแทนที่ไฟล์ ให้จำลองโครงสร้างไดเรกทอรีของไฟล์ที่กำลังถูกแทนที่ใน
/overlay
ไดเรกทอรีที่คุณระบุ แล้วรวมการแทนที่ใน
ไดเรกทอรี ตัวอย่างเช่น หากต้องการแทนที่
frameworks/base/packages/CarSystemUI/res/layout/super_status_bar.xml
เพิ่มไฟล์ super_status_bar.xml
ทดแทนใน
packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/
หากต้องการแทนที่ frameworks/base/packages/SystemUI/res/values/config.xml
(ใน UI ระบบ ไม่ใช่ CarSystemUI) ให้เพิ่มไฟล์ config.xml
ทดแทนไปยัง
packages/services/Car/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/
หรือ
packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/
คุณสามารถดูคำอธิบายของจุดแรกเข้าของการปรับแต่งหลัก 2 จุดได้ที่ด้านล่าง
แถบนำทาง
UI ระบบยานยนต์มีแถบนำทาง 3 แถบทางด้านซ้าย ด้านล่าง และด้านขวาของ บนหน้าจอ จะมีการสลับการมองเห็นแถบระบบแต่ละแถบด้วยการกำหนดค่าต่อไปนี้
config_enableLeftSystemBar
config_enableBottomSystemBar
config_enableRightSystemBar
แต่ละแถบจะมีสถานะจัดสรรและไม่ได้จัดสรร ซึ่งสามารถปรับแต่งได้โดยวางซ้อน ไฟล์เลย์เอาต์ที่เกี่ยวข้อง
car_left_system_bar.xml
car_left_system_bar_unprovisioned.xml
car_system_bar.xml
(เลย์เอาต์สำหรับแถบนำทางด้านล่าง)car_system_bar_unprovisioned.xml
car_right_system_bar.xml
car_right_system_bar_unprovisioned.xml
เลย์เอาต์เหล่านี้ต้องมี
com.android.systemui.car.systembar.CarSystemBarView
ที่ระดับบนสุด ซึ่งสามารถ
ให้ใส่มุมมองอื่นๆ ที่จำเป็น คุณสามารถรวมปุ่มในแถบนำทางได้โดยใช้
com.android.systemui.car.systembar.CarSystemBarButton
ยอดดูเหล่านี้สูงกว่าความเป็นจริงในเดือนCarSystemBar#createSystemBar
หากมีการจัดสรรอุปกรณ์อย่างเหมาะสมสำหรับผู้ใช้ที่กำหนด
แถบสถานะ
ให้ถือว่าแถบสถานะเป็นแถบนำทางที่มีฟังก์ชันเพิ่มเติม ไม่เหมือนกับการนำทาง แสดงว่าแถบสถานะไม่มีธงบอกสถานะให้ปิดใช้งาน คุณแก้ไขแถบสถานะได้ด้วยสิ่งต่อไปนี้
car_top_navigation_bar.xml
car_top_navigation_bar_unprovisioned.xml
เลย์เอาต์เหล่านี้ต้องมี com.android.systemui.statusbar.car.CarNavigationBarView
ที่ระดับบนสุด แถบสถานะจะมีไอคอนสถานะต่างๆ หากต้องการเปลี่ยนขนาดของไอคอน ให้ปรับขนาด
ไอคอนในแบบเดียวกันด้วยค่าตัวคูณมาตราส่วนแทนการระบุขนาดที่เจาะจง เช่น ในโฆษณาซ้อนทับ
/overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml
ให้เพิ่ม
ขนาดต่อไปนี้เพื่อเพิ่มขนาดไอคอนเป็น 2 เท่า:
<resources> <!-- The amount by which to scale up the status bar icons.--> <item name="status_bar_icon_scale_factor" format="float" type="dimen">2</item> </resources>
แถบสถานะอยู่ในเลเยอร์หน้าต่างพิเศษที่ประกอบไปด้วย
แผงการแจ้งเตือน ตัวสลับผู้ใช้ การแจ้งเตือนล่วงหน้า (HUN) และ
การล็อกปุ่มกด เลย์เอาต์แบบต่างๆ จะรวมอยู่ใน
super_status_bar.xml
การเปลี่ยนแปลงซอร์สโค้ด UI ระบบ
การวางซ้อนอาจไม่ให้ความยืดหยุ่นที่จำเป็นในการปรับแต่งลักษณะการทำงานของ UI ระบบอย่างเพียงพอ
การแจ้งเตือน การเปลี่ยนแปลงซอร์สโค้ดของ Android อัปเดตได้ยาก ใน Android รุ่นต่อๆ ไป เราขอแนะนำให้คุณขยายโค้ด UI ของระบบยานยนต์ แทนที่จะแก้ไขโค้ดโดยตรง วิธีนี้จะทำให้ซอร์สโค้ด UI ของระบบยานยนต์ที่เกี่ยวข้อง สามารถอัปเกรดโดยมีความขัดแย้งของการรวมน้อยที่สุด เนื่องจากการกำหนดค่าทั้งหมดจะนำไปใช้ผ่าน แพลตฟอร์ม API ที่รู้จัก
คุณสามารถปรับแต่ง UI ระบบส่วนใหญ่ได้จาก 2 จุดแรกเข้านี้
config_statusBarComponent
config_systemUIFactoryComponent
เช่น ถ้าคุณสร้างชั้นเรียนชื่อ
com.android.systemui.statusbar.car.custom.CustomCarStatusBar
ซึ่ง
ขยาย CarStatusBar
อัปเดต config_statusBarComponent
เป็นจุด
กับคอมโพเนนต์ใหม่นี้ การขยายคลาสนี้จะทำให้สามารถปรับแต่งองค์ประกอบส่วนใหญ่ที่เกี่ยวข้องกับ
ไปยังแถบระบบและตรรกะการแจ้งเตือน
ในทำนองเดียวกัน คุณสามารถสร้าง CustomCarSystemUIFactory
และวางไว้ใน
config_systemUIFactoryComponent
ใช้ชั้นเรียนนี้เพื่ออัปเดตฟังก์ชันการทำงานของ
VolumeUI และหน้าจอล็อก
ปรับแต่งการเปลี่ยนและปลดล็อกผู้ใช้
เนื้อหาต่อไปนี้อธิบายวิธีปรับแต่งประสบการณ์การสลับผู้ใช้
คำศัพท์ | คำอธิบาย |
---|---|
การล็อกปุ่มกด | กล่องโต้ตอบแบบเต็มหน้าจอเพื่อป้องกันการโต้ตอบกับแอปที่ทำงานอยู่เบื้องหน้าโดยไม่ตั้งใจ ปกป้องความเป็นส่วนตัวของผู้ใช้แต่ละรายเมื่อมีการตั้งค่าผู้ใช้หลายคน |
กำลังโหลดกล่องโต้ตอบ | หน้าจอการโหลดที่แสดงเมื่อมีการสลับระหว่างผู้ใช้ |
หน้าจอล็อก การตีกลับ | หน้าจอที่กำหนดให้ผู้ใช้ป้อน PIN, รูปแบบ หรือรหัสผ่าน |
ผู้ใช้ | ผู้ใช้ Android |
เครื่องมือเลือกผู้ใช้ | หน้าจอเครื่องมือเลือกผู้ใช้ที่แสดงเมื่อเปิดอุปกรณ์ |
ตัวสลับผู้ใช้ | ตัวสลับผู้ใช้แสดงขึ้นเมื่อเปลี่ยนหน้าจอจากการตั้งค่าด่วน |
ปรับแต่งการสลับผู้ใช้
การล็อกปุ่มกดและเบาะแส
ใน Android Automotive OS หน้าจอ Keyguard ที่มีเครื่องมือเลือกผู้ใช้จะแสดงเท่านั้น เมื่อผู้ใช้คลิกปุ่ม "ยกเลิก" บนหน้าจอล็อก หน้าจอการล็อกปุ่มจะแสดงด้านล่างนี้
รูปที่ 1 หน้าจอการล็อก
หน้าจอล็อกที่มีรูปตีกลับจะแสดงขึ้นเมื่อผู้ใช้เลือกประเภทความเป็นส่วนตัวที่จะ ปลดล็อกอุปกรณ์ตามที่แสดงด้านล่าง
รูปที่ 2 หน้าจอล็อก
เมื่อตั้งค่าล็อกให้เปิดหรือปิดการทำงานด้วยตนเอง ให้ทําตามวิธีการต่อไปนี้
adb shell input keyevent 26
เครื่องมือเลือกผู้ใช้
หน้าจอเครื่องมือเลือกผู้ใช้จะปรากฏขึ้นเมื่ออุปกรณ์เป็นส่วนสำคัญในแถบสถานะ UI ของระบบของรถยนต์
และ Maps จะรีบูต ดูข้อมูลเพิ่มเติมได้ที่
FullscreenUserSwitcher
รูปที่ 3 หน้าจอเครื่องมือเลือกผู้ใช้
เลย์เอาต์ของหน้าจอนี้สามารถปรับแต่งได้ใน
car_fullscreen_user_switcher.xml
การโหลดหน้าจอ
หน้าจอการโหลดจะปรากฏขึ้นเมื่อมีการสลับผู้ใช้ ไม่ว่าจุดแรกเข้าจะเป็นอย่างไร สำหรับ
เช่น ผ่านเครื่องมือเลือกผู้ใช้หรือหน้าจอการตั้งค่า หน้าจอการโหลดเป็นส่วนสำคัญใน
เฟรมเวิร์ก UI ระบบและแมปกับชั้นเรียนสาธารณะที่มีสิทธิ์
CarUserSwitchingDialog
ดูรูปที่ 3 ด้านบนเป็นตัวอย่าง
สามารถปรับแต่งธีมด้วย
Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog
หากต้องการตั้งค่าผู้ใช้ Android ขั้นตอนเบื้องต้นของวิซาร์ดการตั้งค่าจะช่วยให้คนขับตั้งค่าผู้ใช้ได้ เป็นชื่อของตัวเอง หากคนขับเชื่อมโยงผู้ใช้ Android กับบัญชี Google ชื่อถูกเลือกจากบัญชีนั้น แต่หากไดรเวอร์ระบุชื่อ เช่น DriverB จากนั้นเชื่อมโยงชื่อผู้ใช้นั้นกับบัญชี Google ด้วยชื่อของ Maddy ชื่อเดิมที่กำหนด (DriverB) จะไม่มีการเปลี่ยนแปลงเนื่องจากมีการตั้งชื่อไว้อย่างชัดเจน ผู้ขับขี่ สามารถเปลี่ยนชื่อได้ในเมนูการตั้งค่าเท่านั้น
ปรับแต่งเลย์เอาต์ได้ใน car_user_switching_dialog.xml.
OEM สามารถปกปิดสถานะและแถบนำทางโดยใช้ธีมที่ชื่อว่า
NoActionBar.Fullscreen
(นี่คือ UI ของระบบดั้งเดิมที่ได้รับการอัปเดตสำหรับ UI อ้างอิงของรถยนต์) สำหรับข้อมูลเพิ่มเติม โปรดดู
การปรับแต่ง
แม้ว่า OEM จะให้บริการจุดแรกเข้าของอินเทอร์เฟซผู้ใช้ในการเปลี่ยนผู้ใช้ได้ แต่บางครั้งผลลัพธ์ก็อาจได้รับ ไม่พึงประสงค์ ควรทำดังนี้
- OEM จะสร้างและแสดงหน้าจอการโหลดที่กำหนดเอง (หรือกล่องโต้ตอบ)
- OEM จะเปิดหน้าจอการโหลดแบบกำหนดเองเมื่อผู้ใช้เลือกวิธีสำหรับ UX โดยเฉพาะ ซึ่งสามารถปิดบังได้เมื่อการเปลี่ยนเปลี่ยนเสร็จสมบูรณ์
- OEM จะต้องกำหนดลำดับความสำคัญ ตามต้องการ เช่น ประเภทกรอบเวลาที่มีลำดับความสำคัญสูงกว่า ลำดับความสำคัญ ลำดับความสำคัญไม่สามารถเกินกว่าคีย์การ์ดได้
- OEM กำหนด
config_customUserSwitchUi=true
ในเฟรมเวิร์กหลักconfig.xml
ตามที่อธิบายไว้ในconfig_customuserswitchui
เพื่อ เฟรมเวิร์กจะไม่แสดงCarUserSwitchingDialog
ปรับแต่งหน้าจอล็อก
หน้าจอล็อกเป็นส่วนสำคัญของ UI ของระบบ ซึ่ง OEM ปรับแต่งได้
หากต้องการปรับแต่งขั้นตอน ให้เริ่มต้นด้วย frameworks/base/packages/CarSystemUI/
ปรับแต่งการตั้งค่าของผู้ใช้ครั้งแรก
วิซาร์ดการตั้งค่าจะดำเนินการตั้งค่าผู้ใช้ครั้งแรก ซึ่งสามารถปรับแต่งได้ด้วย คุณสามารถ ให้ใช้ UserManager API เพื่อสร้างผู้ใช้ ในบางกรณี สิ่งนี้สามารถนำมาใช้ในเบื้องหลังได้ จึงทำให้มีความคล่องตัวยิ่งขึ้น ขั้นตอนของวิซาร์ดการตั้งค่า