ใช้งาน UI ของระบบ

Android Automotive มี UI ระบบใหม่ที่พัฒนาขึ้นสำหรับยานพาหนะโดยเฉพาะ องค์ประกอบส่วนใหญ่ UI ของระบบจะทำงานร่วมกับบริการเฟรมเวิร์กอย่างแน่นหนา UI ของระบบหมายถึง ที่แสดงบนหน้าจอที่ไม่ได้เป็นส่วนหนึ่งของแอป UI ระบบยานยนต์ (ใน แพ็กเกจองค์ประกอบ CarSystemUI) คือส่วนขยายของ UI ระบบ Android (ในแพ็กเกจ UI ระบบ) ซึ่งได้รับการปรับแต่งมาสำหรับยานพาหนะโดยเฉพาะ

UI ระบบคืออะไร

คอมโพเนนต์เฉพาะสำหรับ UI ระบบยานยนต์ ได้แก่

ส่วนประกอบ คำอธิบาย
UI หน้าจอล็อก คัดกรองผู้ใช้ที่ผ่านการตรวจสอบสิทธิ์ไปยังบัญชีผู้ใช้ที่เฉพาะเจาะจง
แถบนำทาง แถบระบบที่สามารถจัดวางได้ทางด้านซ้าย ด้านล่าง หรือด้านขวาของหน้าจอ และ สามารถรวมปุ่มข้อมูลประกอบสำหรับการไปยังแอปต่างๆ สลับแผงการแจ้งเตือน และ ให้การควบคุมยานพาหนะ (เช่น HVAC) ซึ่งแตกต่างจาก UI ระบบ Android ซึ่งมีปุ่ม "กลับ" "หน้าแรก" และ "สแต็กแอป"
แถบสถานะ แถบระบบที่วางอยู่ตามหน้าจอซึ่งทำหน้าที่เป็นแถบนำทาง แถบสถานะยังมีฟังก์ชันที่สนับสนุนดังนี้
  • ไอคอนการเชื่อมต่อ รวมถึงการเชื่อมต่อบลูทูธ, Wi-Fi และฮอตสปอต/อุปกรณ์เคลื่อนที่
  • แผงการแจ้งเตือนแบบดึงลง เช่น การปัดลงจากด้านบนของหน้าจอ
  • การแจ้งเตือนล่วงหน้า (HUN)
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 จะให้บริการจุดแรกเข้าของอินเทอร์เฟซผู้ใช้ในการเปลี่ยนผู้ใช้ได้ แต่บางครั้งผลลัพธ์ก็อาจได้รับ ไม่พึงประสงค์ ควรทำดังนี้

  1. OEM จะสร้างและแสดงหน้าจอการโหลดที่กำหนดเอง (หรือกล่องโต้ตอบ)
    • OEM จะเปิดหน้าจอการโหลดแบบกำหนดเองเมื่อผู้ใช้เลือกวิธีสำหรับ UX โดยเฉพาะ ซึ่งสามารถปิดบังได้เมื่อการเปลี่ยนเปลี่ยนเสร็จสมบูรณ์
    • OEM จะต้องกำหนดลำดับความสำคัญ ตามต้องการ เช่น ประเภทกรอบเวลาที่มีลำดับความสำคัญสูงกว่า ลำดับความสำคัญ ลำดับความสำคัญไม่สามารถเกินกว่าคีย์การ์ดได้
  2. OEM กำหนด config_customUserSwitchUi=true ในเฟรมเวิร์กหลัก config.xml ตามที่อธิบายไว้ใน config_customuserswitchui เพื่อ เฟรมเวิร์กจะไม่แสดง CarUserSwitchingDialog

ปรับแต่งหน้าจอล็อก

หน้าจอล็อกเป็นส่วนสำคัญของ UI ของระบบ ซึ่ง OEM ปรับแต่งได้ หากต้องการปรับแต่งขั้นตอน ให้เริ่มต้นด้วย frameworks/base/packages/CarSystemUI/

ปรับแต่งการตั้งค่าของผู้ใช้ครั้งแรก

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