Android Automotive cung cấp giao diện người dùng hệ thống mới được phát triển dành riêng cho xe. Hầu hết các thành phần của Giao diện người dùng hệ thống được kết hợp chặt chẽ với các dịch vụ khung. System UI (Giao diện người dùng hệ thống) là bất kỳ phần tử hiển thị trên màn hình nhưng không thuộc ứng dụng. Giao diện người dùng Automotive System (trong giao diện Gói phần tử CarSystemUI) là một tiện ích của Giao diện người dùng hệ thống Android (trong gói Giao diện người dùng hệ thống), được tuỳ chỉnh riêng cho xe.
Giao diện người dùng hệ thống là gì?
Các thành phần dành riêng cho giao diện người dùng của Automotive System bao gồm:
Thành phần | Mô tả |
---|---|
Giao diện người dùng màn hình khoá | Màn hình mà qua đó người dùng được xác thực để truy cập vào một tài khoản người dùng cụ thể. |
Thanh điều hướng | Thanh hệ thống có thể được đặt ở bên trái, dưới cùng hoặc bên phải màn hình và có thể bao gồm các nút thuộc tính để điều hướng đến các ứng dụng khác nhau, bật/tắt bảng thông báo và cung cấp các thiết bị điều khiển xe (chẳng hạn như HVAC). Giao diện này khác với giao diện người dùng hệ thống của Android phương thức triển khai này, cung cấp các nút Quay lại, Trang chủ và ngăn xếp ứng dụng. |
Thanh trạng thái | Thanh hệ thống được đặt dọc theo màn hình và đóng vai trò là thanh điều hướng. Chiến lược phát hành đĩa đơn
thanh trạng thái cũng cung cấp chức năng hỗ trợ:
|
Giao diện người dùng hệ thống | Đề cập đến bất kỳ phần tử nào xuất hiện trên màn hình không thuộc một ứng dụng. |
Giao diện người dùng của Trình chuyển đổi người dùng | Màn hình mà qua đó người dùng có thể chọn một người dùng khác. |
Giao diện người dùng âm lượng | Hộp thoại xuất hiện khi người lái xe sử dụng các nút âm lượng vật lý để thay đổi âm lượng trên thiết bị. |
Giao diện người dùng hệ thống hoạt động như thế nào?
Giao diện người dùng hệ thống là một ứng dụng Android sẽ chạy khi thiết bị đang bật nguồn. Chiến lược phát hành đĩa đơn được khởi động thông qua sự phản chiếu của SystemServer (Máy chủ hệ thống). Dưới đây là các điểm truy cập phù hợp nhất để người dùng thấy được trong Giao diện người dùng hệ thống. Sử dụng các thành phần này để tuỳ chỉnh giao diện người dùng của hệ thống Android nhằm phục vụ các chức năng dành riêng cho Automotive.
config_statusBarComponent
config_systemUIFactoryComponent
CarSystemUI là một phần mở rộng của gói System UI, nghĩa là các lớp và gói CarSystemUI có thể sử dụng và ghi đè các tài nguyên trong gói Giao diện người dùng hệ thống.
Tuỳ chỉnh giao diện người dùng hệ thống
Lớp phủ
Mặc dù bạn có thể sửa đổi mã nguồn Android để tuỳ chỉnh Giao diện người dùng hệ thống, làm như vậy khiến việc áp dụng các bản cập nhật Android trong tương lai trở nên khó khăn và phức tạp hơn. Thay vào đó, Android hỗ trợ sử dụng thư mục lớp phủ, cho phép bạn thay thế các tệp tài nguyên mà không cần sửa đổi mã nguồn. Trong hệ thống xây dựng Android, hệ thống lớp phủ sẽ ghi đè các tệp trong một một cách có sự kiểm soát. Tất cả các tệp đã sửa đổi đều được xác định rõ ràng mà không cần duyệt qua toàn bộ cây mã nguồn AOSP (Dự án nguồn mở Android).
Các tệp lớp phủ phải được đặt trong thư mục PRODUCT_PACKAGE_OVERLAYS
và phải có
các thư mục con giống hệt như cấu trúc gốc AOSP ban đầu. Cho Android
10 trở lên, PRODUCT_PACKAGE_OVERLAYS
được đặt thành:
PRODUCT_PACKAGE_OVERLAYS := packages/services/Car/car_product/overlay
Giao diện người dùng Automotive System sử dụng tài nguyên từ Giao diện người dùng hệ thống và các gói CarSystemUI, có nghĩa là tài nguyên từ mỗi vị trí có thể bị ghi đè bằng lớp phủ để ảnh hưởng đến giao diện người dùng của Automotive System.
Để thay thế một tệp, hãy sao chép cấu trúc thư mục của tệp đang được thay thế trong
Thư mục /overlay
mà bạn đã chỉ định, sau đó đưa thư mục thay thế vào thư mục đó
thư mục. Ví dụ: để thay thế:
frameworks/base/packages/CarSystemUI/res/layout/super_status_bar.xml
Thêm tệp super_status_bar.xml
thay thế nằm trong:
packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/
Để thay thế frameworks/base/packages/SystemUI/res/values/config.xml
,
(trong Giao diện người dùng hệ thống, không phải CarSystemUI), thêm tệp config.xml
thay thế vào:
packages/services/Car/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/
hoặc
packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/
Dưới đây là nội dung mô tả về hai điểm truy cập tuỳ chỉnh chính.
Thanh điều hướng
Giao diện người dùng Automotive System có thể có 3 thanh điều hướng ở bên trái, dưới cùng và bên phải màn hình. Chế độ hiển thị của từng thanh hệ thống được bật/tắt với các cấu hình sau:
config_enableLeftSystemBar
config_enableBottomSystemBar
config_enableRightSystemBar
Mỗi thanh có một trạng thái được cấp phép và không được cấp phép, có thể được tuỳ chỉnh bằng cách phủ các tệp bố cục tương ứng:
car_left_system_bar.xml
car_left_system_bar_unprovisioned.xml
car_system_bar.xml
(bố cục cho thanh điều hướng dưới cùng)car_system_bar_unprovisioned.xml
car_right_system_bar.xml
car_right_system_bar_unprovisioned.xml
Những bố cục này phải chứa
com.android.systemui.car.systembar.CarSystemBarView
ở cấp cao nhất, có thể
bao gồm mọi chế độ xem cần thiết khác. Các nút bên trong thanh điều hướng có thể được đưa vào bằng cách sử dụng
com.android.systemui.car.systembar.CarSystemBarButton
.
Các thành phần hiển thị này được tăng cường trong CarSystemBar#createSystemBar
,
nếu thiết bị được cấp phép phù hợp cho một người dùng cụ thể.
Thanh trạng thái
Hãy coi thanh trạng thái là thanh điều hướng có thêm chức năng. Không giống như thanh điều hướng thì thanh trạng thái không có cờ để tắt. Bạn có thể sửa đổi thanh trạng thái bằng:
car_top_navigation_bar.xml
car_top_navigation_bar_unprovisioned.xml
Những bố cục này phải chứa com.android.systemui.statusbar.car.CarNavigationBarView
ở cấp cao nhất. Thanh trạng thái chứa các biểu tượng trạng thái. Để thay đổi kích thước của một biểu tượng, hãy điều chỉnh tỷ lệ
biểu tượng một cách nhất quán với hệ số tỷ lệ thay vì chỉ định kích thước cụ thể. Ví dụ: trong một lớp phủ
tệp /overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml
, hãy thêm
các kích thước sau để tăng gấp đôi kích thước của các biểu tượng:
<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>
Thanh trạng thái nằm trong lớp cửa sổ đặc biệt cũng bao gồm
bảng thông báo, trình chuyển đổi người dùng, thông báo quan trọng (HUN) và
bàn phím. Các bố cục khác nhau cho những bố cục này được bao gồm trong
super_status_bar.xml
.
Thay đổi mã nguồn giao diện người dùng hệ thống
Lớp phủ có thể không có sự linh hoạt cần thiết để tuỳ chỉnh đầy đủ hành vi của Giao diện người dùng hệ thống.
Cảnh báo. Khó cập nhật các thay đổi đối với mã nguồn Android trong các bản phát hành Android sau này. Bạn nên mở rộng mã giao diện người dùng của Automotive System thay vì trực tiếp sửa đổi mã. Bằng cách này, mã nguồn giao diện người dùng của Automotive System có thể được nâng cấp mà không bị xung đột hợp nhất, vì tất cả các hoạt động tuỳ chỉnh đều được triển khai thông qua các nền tảng API đã biết.
Bạn có thể tuỳ chỉnh hầu hết các khía cạnh của Giao diện người dùng hệ thống thông qua hai điểm truy cập sau đây:
config_statusBarComponent
config_systemUIFactoryComponent
Ví dụ: nếu bạn tạo một lớp có tên
com.android.systemui.statusbar.car.custom.CustomCarStatusBar
,
kéo dài CarStatusBar
, cập nhật config_statusBarComponent
thành điểm
cho thành phần mới này. Việc mở rộng lớp này cho phép tuỳ chỉnh hầu hết các phần tử liên quan
vào thanh hệ thống và logic thông báo.
Tương tự, bạn có thể tạo CustomCarSystemUIFactory
rồi đặt vào
config_systemUIFactoryComponent
. Hãy sử dụng lớp này để cập nhật chức năng của
Giao diện người dùng âm lượng và màn hình khoá.
Tuỳ chỉnh tính năng chuyển đổi và mở khoá người dùng
Tài liệu sau đây mô tả cách tuỳ chỉnh trải nghiệm chuyển đổi người dùng.
Thuật ngữ | Mô tả |
---|---|
Khóa bàn phím | Hộp thoại toàn màn hình để ngăn việc vô tình tương tác với ứng dụng trên nền trước. Bảo vệ quyền riêng tư của từng người dùng khi thiết lập nhiều người dùng. |
Đang tải hộp thoại | Màn hình tải xuất hiện khi chuyển đổi giữa các Người dùng. |
Màn hình khoá, trình trả lại | Màn hình yêu cầu người dùng nhập mã PIN, hình mở khoá hoặc mật khẩu. |
Người dùng | Người dùng Android. |
Bộ chọn người dùng | Màn hình bộ chọn người dùng hiển thị khi khởi động thiết bị. |
Trình chuyển đổi người dùng | Trình chuyển đổi người dùng hiển thị khi chuyển màn hình từ trình đơn Cài đặt nhanh. |
Tuỳ chỉnh tính năng chuyển đổi người dùng
Bàn phím và bộ trả bóng
Trong Android Automotive OS, màn hình Bàn phím có bộ chọn người dùng chỉ hiển thị khi người dùng nhấp vào nút Cancel (Huỷ) trên màn hình khoá. Màn hình Bàn phím được hiển thị dưới đây.
Hình 1. Màn hình bảo vệ bàn phím
Màn hình khoá có trình trả lại sẽ hiển thị khi người dùng đã chọn loại quyền riêng tư cần dùng mở khoá thiết bị, như minh hoạ dưới đây.
Hình 2. Màn hình khoá.
Khi bạn đặt khoá để bật hoặc tắt nguồn theo cách thủ công, hãy làm theo hướng dẫn sau:
adb shell input keyevent 26
Bộ chọn người dùng
Màn hình bộ chọn người dùng xuất hiện khi có một thiết bị tích hợp với thanh trạng thái Giao diện người dùng hệ thống của ô tô
và Maps sẽ khởi động lại. Để tìm hiểu thêm, hãy xem
FullscreenUserSwitcher
.
Hình 3. Màn hình bộ chọn người dùng
Bạn có thể tuỳ chỉnh bố cục của màn hình này theo
car_fullscreen_user_switcher.xml
.
Màn hình tải
Màn hình tải hiển thị bất cứ khi nào người dùng được chuyển đổi, bất kể điểm truy cập. Cho
chẳng hạn như thông qua bộ chọn người dùng hoặc màn hình Cài đặt. Màn hình tải là một phần không thể thiếu của
giao diện người dùng hệ thống khung và ánh xạ tới lớp công khai có tên
CarUserSwitchingDialog
.
Xem Hình 3 ở trên là một ví dụ.
Bạn có thể tuỳ chỉnh giao diện bằng
Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog
.
Để thiết lập người dùng Android, quy trình ban đầu của Trình hướng dẫn thiết lập cho phép người lái xe thiết lập người dùng đặt tên cho chính họ. Sau đó, nếu người lái xe liên kết người dùng Android với Tài khoản Google, tên được chọn từ tài khoản đó. Tuy nhiên, nếu người lái xe chỉ định một tên (ví dụ: DriverB), sau đó liên kết tên người dùng đó với Tài khoản Google của họ bằng tên của Maddy, tên được gán ban đầu (DriverB) sẽ không thay đổi vì tên đó đã được đặt rõ ràng. Tài xế chỉ có thể thay đổi tên trên trình đơn Cài đặt.
Có thể tuỳ chỉnh bố cục trong car_user_switching_dialog.xml.
OEM có thể che giấu thanh trạng thái và điều hướng bằng cách sử dụng giao diện có tên
NoActionBar.Fullscreen
.
(Đây là giao diện người dùng hệ thống gốc, được cập nhật cho giao diện người dùng tham chiếu của ô tô.) Để biết thêm thông tin, hãy xem
Tuỳ chỉnh.
Mặc dù OEM có thể cung cấp điểm truy cập giao diện người dùng để chuyển đổi người dùng, nhưng đôi khi kết quả có thể không mong muốn. Nếu điều này xảy ra:
- OEM sẽ tạo và hiển thị màn hình (hoặc hộp thoại) tải tuỳ chỉnh.
- Dành riêng cho trải nghiệm người dùng, OEM khởi chạy màn hình tải tuỳ chỉnh khi người dùng chọn phương tiện để nút chuyển mà có thể được ẩn đi khi quá trình chuyển đổi người dùng hoàn tất.
- OEM phải đặt mức độ ưu tiên theo lựa chọn ưu tiên của họ. Ví dụ: loại cửa sổ có mức độ ưu tiên cao hơn. Mức độ ưu tiên mức độ ưu tiên không thể vượt quá mức ưu tiên của Bàn phím.
- OEM đặt
config_customUserSwitchUi=true
trong khung cốt lõiconfig.xml
như được mô tả trongconfig_customuserswitchui
. Là một thì khung này sẽ không hiển thịCarUserSwitchingDialog
.
Tuỳ chỉnh màn hình khoá
Màn hình khoá là một phần không thể thiếu của Giao diện người dùng hệ thống mà OEM có thể tuỳ chỉnh.
Để tuỳ chỉnh quy trình, hãy bắt đầu với frameworks/base/packages/CarSystemUI/
.
Tuỳ chỉnh chế độ thiết lập của người dùng lần đầu tiên
Trình hướng dẫn thiết lập sẽ thực hiện quá trình thiết lập cho người dùng lần đầu tiên. Bạn cũng có thể tuỳ chỉnh phần này. Bạn có thể sử dụng API UserManager để tạo một người dùng. Trong một số trường hợp, tính năng này có thể được triển khai ở chế độ nền, nhờ đó tinh giản hoá quá trình Trình hướng dẫn thiết lập.