Thành phần hệ thống và luồng người dùng

Các thành phần tương tác với Nội dung nghe nhìn được mô tả trong bảng sau:

Thành phần Mô tả
Màn hình chính Biểu thị các nền tảng khác trong giao diện người dùng ô tô, nơi hiển thị và kiểm soát nội dung nghe nhìn đang phát. Trong AOSP, đây là màn hình chính xuất hiện khi hệ thống khởi động. Trên màn hình này, người dùng có thể xem thông tin chi tiết về mục nội dung nghe nhìn đang phát và thực hiện một số hành động tiêu chuẩn và tuỳ chỉnh (ví dụ: Phát và Tạm dừng).
Giao diện người dùng hệ thống Cung cấp chức năng bao gồm các lựa chọn điều hướng giao diện người dùng chung, chẳng hạn như điều hướng đến Nội dung nghe nhìn.
Trợ lý Android cung cấp các cơ chế để nhiều ứng dụng trợ lý giọng nói tương tác với hệ thống. Những ứng dụng này có thể tương tác với Nguồn nội dung nghe nhìn ở chế độ nền (ví dụ: phát một bài hát do lệnh thoại), hoặc chuyển đến Nội dung nghe nhìn ở chế độ nền trước (ví dụ: khi một ứng dụng trợ lý giọng nói được hướng dẫn hiển thị giao diện người dùng của một Nguồn nội dung nghe nhìn cụ thể).
Trình chạy ứng dụng Tất cả ứng dụng Android đều khởi động trong Trình chạy ứng dụng, kể cả Nguồn nội dung nghe nhìn. Ứng dụng đa phương tiện có thể trình bày bộ chọn Nguồn đa phương tiện của riêng mình, bổ sung hoặc thay thế Trình chạy ứng dụng làm nơi bắt đầu cho nội dung đa phương tiện.
Cửa hàng Google Play Khi GAS đang được sử dụng, đây là nơi người dùng tìm và cài đặt các ứng dụng mới trong thiết bị Android. Đối với nội dung nghe nhìn, sau khi cài đặt ứng dụng, người dùng sẽ được chuyển đến Nội dung nghe nhìn để hoàn tất quy trình đăng nhập hoặc bắt đầu tương tác với ứng dụng.
Trình quản lý phiên đa phương tiện Dịch vụ hệ thống Android theo dõi và kiểm soát các phiên nội dung nghe nhìn từ mọi nguồn nội dung nghe nhìn. Nó cung cấp các cơ chế để phát hiện thời điểm Nguồn nội dung đa phương tiện trở thành nguồn nội dung đa phương tiện nền trước. Nội dung nghe nhìn và tất cả các ứng dụng khác hiển thị nguồn nội dung nghe nhìn đang phát (ví dụ: Màn hình chính) đều sử dụng Trình quản lý phiên phát nội dung nghe nhìn để phát hiện những sự kiện này và cập nhật giao diện người dùng cho phù hợp. Nguồn nội dung nghe nhìn tương tác với Trình quản lý phiên nội dung nghe nhìn thông qua Media Session API.
Đài phát Ứng dụng chuyên dụng để tương tác với phần cứng đài phát. Tìm kiếm đài phát thanh, nhanh chóng chọn các đài phát thanh vừa xác định và chuyển đổi giữa các băng tần. Các thành phần giao diện người dùng được cả Radio và Media chia sẻ cho phép người dùng chuyển đổi giữa hai trải nghiệm.
Công cụ phân tâm của người lái xe Dịch vụ hệ thống Android được dùng để áp đặt các quy tắc hạn chế về trải nghiệm người dùng dựa trên trạng thái lái xe của ô tô. Đối với UX đăng nhập và cài đặt nguồn nội dung nghe nhìn (trong đó màn hình được kiểm soát trực tiếp bởi các nguồn nội dung nghe nhìn), dịch vụ này đảm bảo không có nội dung không an toàn nào xuất hiện khi ô tô đang ở trạng thái lái xe. Các OEM có thể tuỳ chỉnh định nghĩa về các trạng thái này và cách hệ thống phản ứng trong những tình huống này (ví dụ: bằng cách hiển thị lớp phủ chặn màn hình).

Luồng người dùng

Khởi chạy ứng dụng nghe nhìn

Bạn phải chạy nội dung nghe nhìn bằng CAR_INTENT_ACTION_MEDIA_TEMPLATEngầm sau đây. Ý định này có thể có thông tin sau dưới dạng dữ liệu bổ sung:

  • android.car.intent.extra.MEDIA_COMPONENT (không bắt buộc). Dữ liệu bổ sung dạng chuỗi để biểu thị tên thành phần được rút gọn của một MediaBrowserService trong ứng dụng đa phương tiện mà Media sẽ kết nối. Nếu bạn không cung cấp, Media sẽ hiển thị ứng dụng đa phương tiện hiện được chọn. Ý định này được dùng từ các điểm truy cập sau:

    • Giao diện người dùng hệ thống. Dùng để quay lại chế độ Media hoặc bắt đầu sử dụng chế độ này lần đầu tiên. Trong trường hợp này, Intent ở trên sẽ được dùng mà không có bất kỳ dữ liệu bổ sung nào để khiến Media hiển thị ứng dụng đa phương tiện hiện được chọn.

    • Màn hình chính, Trợ lý và Trung tâm thông báo. Người dùng có thể chuyển đến phần Nội dung nghe nhìn để hiển thị ứng dụng nội dung nghe nhìn hiện được chọn. Trong mọi trường hợp, Intent ngầm ẩn không có phần bổ sung sẽ được kích hoạt.

    • Trình chạy ứng dụng. Khi người dùng chọn một ứng dụng đa phương tiện trong Trình chạy ứng dụng, ý định ở trên sẽ bao gồm phần bổ sung CAR_EXTRA_MEDIA_COMPONENT. Phần bổ sung này chứa ứng dụng đa phương tiện đã chọn. Phương tiện chỉ định đây là ứng dụng mới được chọn và kết nối với ứng dụng đó. Để biết thông tin chi tiết, hãy xem phần bên dưới: Tích hợp Trình chạy ứng dụng với Nội dung nghe nhìn.

Tích hợp trình chạy ứng dụng với Media

Ứng dụng đa phương tiện không được phép cung cấp bất kỳ hoạt động nào được chú thích bằng danh mục android.intent.category.LAUNCHER. Do đó, Trình chạy ứng dụng (hoặc ứng dụng tương đương) phải triển khai logic đặc biệt để giải quyết vấn đề tích hợp nguồn nội dung nghe nhìn:

  • Trình chạy ứng dụng phải quét hệ thống để tìm các gói triển khai MediaBrowserService.SERVICE_INTERFACE. Đối với những gói này, Trình chạy ứng dụng sẽ tìm nạp biểu tượng dịch vụ tương tự như biểu tượng dùng để tìm nạp các hoạt động khác.

  • Sau đó, Trình chạy ứng dụng sẽ kết hợp các gói này với những gói triển khai các hoạt động android.intent.category.LAUNCHER. Nếu một ứng dụng cung cấp một phương thức triển khai MediaBrowserService và một hoạt động trong trình chạy, thì dịch vụ sẽ được ưu tiên.

    Tại thời điểm viết bài này, không có ứng dụng nguồn nội dung nghe nhìn nào có thể cung cấp một hoạt động trong trình chạy.

  • Bạn có thể tìm thấy ví dụ về logic này trong mã AOSP tại AppLauncherUtils#getAllLauncherApps().

Quy trình đăng nhập và các lựa chọn về cấu hình

Các ứng dụng đa phương tiện có thể bao gồm một hoạt động Cài đặt được tối ưu hoá cho xe. Hoạt động như vậy có thể được dùng để triển khai các luồng người dùng không được giải quyết bằng API Đa phương tiện của Android, ví dụ:

  • Đăng nhập
  • Đăng xuất
  • Chuyển đổi tài khoản
  • Màn hình mà người dùng hiện đang đăng nhập (nếu có)
  • Cấu hình dịch vụ

Hoạt động Cài đặt này được ứng dụng đa phương tiện khai báo bằng bộ lọc ý định sau:

<activity android:name=".AppSettingsActivity"
          android:exported="true
          android:theme="@style/SettingsActivity"
           android:label="@string/app_settings_activity_title">
   <intent-filter>
       <action android:name="android.intent.action.APPLICATION_PREFERENCES"/>
   </intent-filter>
</activity>

Nội dung nghe nhìn phải triển khai logic sau:

  • Kiểm tra để đảm bảo rằng ứng dụng đa phương tiện hiện được chọn có một hoạt động với Bộ lọc ý định đã cho.

  • Nếu có, hãy cho phép người dùng chuyển đến hoạt động đó.

  • Nếu Các hạn chế về trải nghiệm người dùng trên ô tô đang có hiệu lực (ví dụ: ô tô đang di chuyển), thì bạn nên tắt thành phần này vì hoạt động Cài đặt không phải là Giao diện người dùng được tối ưu hoá cho người lái xe.

Xử lý lỗi và yêu cầu đăng nhập

Nội dung nghe nhìn tương tác với các ứng dụng đa phương tiện thông qua Android Media Session API. Trong API này, Media nhận được một đối tượng PlaybackState. Đối tượng này truyền đạt trạng thái hiện tại của ứng dụng đa phương tiện.

Quá trình đăng nhập bắt đầu khi ứng dụng đa phương tiện thay đổi PlaybackState thành STATE_ERROR, bao gồm cả một mã lỗi cụ thể (xem thông tin chi tiết bên dưới). Khi điều này xảy ra, Media sẽ hiển thị nội dung mô tả lỗi và một thành phần cho phép người dùng chuyển đến hoạt động đăng nhập do ứng dụng đa phương tiện triển khai.

Các ứng dụng có thể sử dụng chính quy trình này để báo hiệu các tình huống lỗi khác (ví dụ: lỗi kết nối máy chủ).

Trong quá trình xử lý lỗi PlaybackState thông thường, Nội dung nghe nhìn phải kiểm tra đầu vào sau.

  • Mã lỗi PlaybackState bằng PlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED. Điều này cho biết ứng dụng đa phương tiện yêu cầu người dùng đăng nhập để tiếp tục hoạt động. Bạn có thể nhận được các mã lỗi khác, cho biết các loại tình huống lỗi khác.

  • Thông báo lỗi PlaybackState (do các ứng dụng đa phương tiện đặt bằng phương thức PlaybackStateCompat.Builder#setErrorMessage) chứa nội dung giải thích dễ hiểu (ví dụ: "Bạn chưa đăng nhập"). Thông báo này phải xuất hiện với người dùng và phải được tối ưu hoá để giảm sự xao nhãng khi lái xe (DO).

  • PlaybackState có thể bao gồm các phần bổ sung sau (do các ứng dụng đa phương tiện đặt bằng phương thức PlaybackStateCompat.Builder#setExtras) với các khoá sau.

    • android.media.extras.ERROR_RESOLUTION_ACTION_LABEL. Đặt thành một chuỗi chứa thông báo mà con người đọc được để hiển thị trên nút mà người dùng chạm vào để bắt đầu quy trình đăng nhập.

    • android.media.extras.ERROR_RESOLUTION_ACTION_INTENT. Đặt bằng PendingIntent để được kích hoạt khi người dùng nhấp vào nút nêu trên. PendingIntent này trỏ đến một hoạt động đăng nhập tuỳ chỉnh do cùng một ứng dụng đa phương tiện triển khai.

  • Trạng thái PlaybackState bằng STATE_ERROR. Điều này cho biết không thể thực hiện thao tác nào khác cho đến khi quá trình đăng nhập hoàn tất.