Cài đặt ô tô ( packages/apps/Car/Settings
) được cung cấp riêng cho Hệ điều hành ô tô Android (AAOS). Cài đặt ô tô khác với Cài đặt điện thoại ( packages/apps/Settings
). Mặc dù Cài đặt ô tô chứa một số cài đặt điện thoại quen thuộc, Cài đặt ô tô cung cấp giao diện người dùng trực quan dành cho ô tô , tối ưu hóa sự phân tâm của người lái xe và nhiều điểm nhập tùy chỉnh cho OEM.
Ngoài tổng quan về Cài đặt ô tô được cung cấp bên dưới, hãy xem các chủ đề liên quan sau để tìm hiểu thêm về Cài đặt ô tô:
- Thêm cài đặt ô tô
- Sắp xếp lại cài đặt ô tô
- Tối ưu hóa sự phân tâm trong cài đặt ô tô
- Lập chỉ mục tìm kiếm cài đặt ô tô
- Tùy chỉnh khung kép
Kiến trúc và hướng dẫn
Hầu hết các trang trong Cài đặt ô tô được triển khai dưới dạng một loạt các đoạn mở rộng Cài đặt , mỗi trang có hoạt động riêng được xác định trong CarSettingActivities . Các hoạt động tĩnh này được mở rộng từ BaseCarSettingsActivity . Mặc dù có một số ngoại lệ đối với quy tắc này, chẳng hạn như một số đoạn đặc biệt mở rộng BaseFragment thay vì SettingsFragment
và một số Hoạt động nằm bên ngoài CarSettingActivities , tất cả đều phải được coi là ngoại lệ (không phải là mẫu cần tuân theo).
Tùy chọn tĩnh
Tùy chọn tĩnh được xác định trong XML bằng cách sử dụng thẻ Tùy chọn hoặc CarUiPreference . Việc triển khai SettingsFragment
sử dụng phương thức getPreferenceScreenResId()
để xác định tệp XML nào chứa danh sách tùy chọn tĩnh cần hiển thị.
Tùy chọn động
Tùy chọn động sử dụng thẻ PreferenceGroup hoặc triển khai PreferenceGroup.
Trong ứng dụng CarSettings, tùy chọn động thể hiện một tập hợp tùy chọn thông thường hướng người dùng đến các trang bổ sung trong CarSettings nhưng đã được thêm thông qua Bộ điều khiển tùy chọn thay vì trong XML. Một ví dụ là tùy chọn Quản lý bàn phím trong tùy chọn Ngôn ngữ & phương thức nhập sẽ tự động thêm các phương thức nhập vào trang tùy chọn dựa trên việc các phương thức nhập này có được phép hay không.
Thanh hành động
Phần trên cùng của mỗi màn hình cài đặt đều có một thanh tác vụ, thanh này có thể chứa điều hướng "quay lại", tiêu đề màn hình và các tiện ích tác vụ bổ sung (ví dụ: các nút và công tắc). Các thanh hành động này tương tự như ActionBar do Android cung cấp nhưng thực chất là các chế độ xem tùy chỉnh. Trong Android 11 trở lên, thanh công cụ này được bao gồm trong bố cục đế khung, chứa các chế độ xem cho thanh công cụ và bố cục khung cho phần còn lại của nội dung ứng dụng.
Các tiện ích hành động bổ sung là các lớp MenuItem và phải được tạo trong onCreate
của SettingsFragment
hoặc BaseFragment
tương ứng. Các thuộc tính như khả năng hiển thị, trạng thái, v.v. phải được kiểm soát bởi các setter trong logic nghiệp vụ của SettingsFragment
.
// ExampleSettingsFragment.java public class ExampleSettingsFragment extends SettingsFragment { @Override protected List<MenuItem> getToolbarMenuItems() { return Collections.singletonList(mClearConfirmButton); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mButton = new MenuItem.Builder(getContext()) .setTitle(R.string.text) .setOnClickListener(mOnClickListener) .setUxRestrictions(CarUxRestrictions.UX_RESTRICTIONS_NO_SETUP) .build(); } private void updateState() { button.setVisible(false); } }
Các thanh hành động có hỗ trợ Tối ưu hóa sự phân tâm trong Cài đặt ô tô . Đặt UXRestrictions trong MenuItem.Builder
khi tạo.
Bộ điều khiển tùy chọn
Mỗi trang cài đặt có thể chứa một số Tùy chọn khác nhau.
Xem hình ảnh sau đây để biết các thành phần này có liên quan như thế nào:
Hình 1. Các thành phần CarSettings
PreferenceController
là thành phần nhận biết vòng đời giúp gói gọn logic nghiệp vụ liên quan đến Tùy chọn cụ thể. PreferenceControllers
chỉ có thể được đính kèm với Preference có liên quan thông qua XML.
// example_settings_fragment.xml <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto" android:title="@string/example_settings_title"> <Preference android:key="@string/pk_example_preference_key" android:title="@string/example_preference_title" settings:controller="com.android.car.settings.example.ExamplePreferenceController"/> </PreferenceScreen>
Cài đặt ô tô ngăn chặn rõ ràng việc tạo PreferenceController
thông qua mã để giúp sửa đổi cấu trúc phân cấp Cài đặt dễ dàng hơn với những thay đổi tối thiểu đối với mã Java.
Có thể PreferenceController
cần một số dữ liệu động để hoạt động chính xác. Ví dụ: PreferenceController
tắt thông báo cho một ứng dụng cần biết ứng dụng nào sẽ hoạt động. Bởi vì PreferenceControllers
luôn được xác định trong XML nên không có cách nào để cung cấp các đối số hàm tạo bổ sung. Thay vào đó, những giá trị bổ sung này được cung cấp thông qua các setter công khai trên PreferenceController
và được thiết lập bằng phương thức use(...)
từ SettingsFragment
.
// ExamplePreferenceController.java public class ExamplePreferenceContorller extends PreferenceController<Preference> { private ExampleArg mExampleArg; public ExamplePreferenceController(...) { ... } public void setExampleArg(ExampleArg exampleArg) { mExampleArg = exampleArg; } } // ExampleSettingsFragment.java public class ExampleSettingsFragment extends SettingsFragment { @Override @XmlRes protected int getPreferenceScreenResId() { Return R.xml.example_settings_fragment; } @Override public void onAttach(Context context) { ExampleArg arg = (ExampleArg) getArguments().getSerializeable(ARG_KEY); ExamplePreferenceController controller = use(ExamplePreferenceController.class, R.string.pk_example_preference_key); controller.setExampleArg(arg); } }
Phương thức use(...)
được sử dụng càng thường xuyên thì càng khó giữ được mục tiêu ban đầu là có thể sắp xếp lại hệ thống phân cấp cài đặt với những thay đổi tối thiểu đối với mã Java, bởi vì các phần lớn của mã đoạn hiện có cần phải được được sao chép vào đoạn mới được tạo. Một cách để giảm thiểu khó khăn khi thực hiện việc này là:
- Giảm thiểu việc sử dụng
use(...)
. - Cố gắng giữ mọi lệnh gọi
use(...)
ở một nơi trong đoạn (ví dụ: trong phương thứconAttach()
).
Xử lý ý định
Tất cả các ý định mà ứng dụng Cài đặt ô tô sẽ xử lý đều được xác định trong tệp kê khai . Ý định thường được xác định và xử lý giống như hầu hết các ứng dụng Android tiêu chuẩn, với tất cả các hoạt động và bộ lọc ý định được xác định trong tệp kê khai.
Thay đổi đoạn gốc
Nếu muốn, biểu tượng Thoát có thể được hiển thị hoặc ẩn bằng cách sử dụng config_show_settings_root_exit_icon
.
Tùy chỉnh chủ đề
Tùy chỉnh các thuộc tính và tài nguyên khác
Ứng dụng Cài đặt ô tô chủ yếu sử dụng CarSettingTheme
, một phần mở rộng của Theme.CarUi
. Chủ đề này được sử dụng để chuẩn hóa giao diện của các ứng dụng hệ thống nhằm đảm bảo tính nhất quán trong hệ thống.
Tùy chỉnh tùy chọn
Việc tùy chỉnh tùy chọn trải rộng trên các vị trí bổ sung sau:
- Bố cục của một số lớp tùy chọn cơ sở được xác định trong
car_preference
và được phủ lên cho các bản dựng ô tô. Mọi bố cục tùy chỉnh cho các lớp ưu tiên cơ sở đều có thể được thay thế tại đây. - Cài đặt ô tô sử dụng một số tùy chọn tùy chỉnh được xác định chủ yếu trong gói
common
. Những lớp này phải được phủ lên trong mô-đun Cài đặt ô tô một cách riêng biệt với các lớp ưu tiên cơ bản.