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

Sơ đồ sau minh họa các thành phần tương tác với Media:

Thành phần hệ thống

Hình 1. Các thành phần hệ thống

Các yếu tố trong hình này được mô tả trong bảng:

Thành phần Sự miêu tả
Màn hình chính Đại diện cho các bề mặt khác trong giao diện người dùng ô tô hiển thị và điều khiển phương tiện hiện đang phát. Trong AOSP, đây là màn hình chính hiển thị khi hệ thống khởi động. Từ màn hình này, người dùng có thể xem chi tiết về mục phương tiện đang được phát và thực hiện một nhóm hành động tiêu chuẩn và tùy chỉnh có giới hạn (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 tùy chọn điều hướng giao diện người dùng toàn cầu chẳng hạn như điều hướng đến Phương tiện.
Trợ lý Android cung cấp cơ chế để các ứng dụng trợ lý giọng nói khác nhau tương tác với hệ thống. Các ứng dụng này có thể tương tác với Nguồn phương tiện ở chế độ nền (ví dụ: phát bài hát dưới dạng lệnh thoại) hoặc điều hướng đến Phương tiện ở nền trước (ví dụ: khi ứ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 ứng dụng Nguồn phương tiện cụ thể).
Trình khởi chạy ứng dụng Tất cả ứng dụng Android đều khởi động trong Trình khởi chạy ứng dụng, bao gồm cả Nguồn phương tiện. Phương tiện có thể hiển thị bộ chọn Nguồn phương tiện của riêng mình, bổ sung hoặc thay thế Trình khởi chạy ứng dụng làm nơi bắt đầu cho 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 định vị và cài đặt ứng dụng mới trên thiết bị Android. Đối với phương tiện, sau khi cài đặt ứng dụng, người dùng sẽ được chuyển hướng đến Phương tiện để hoàn tất quá 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 truyền thông Dịch vụ hệ thống Android theo dõi và kiểm soát các phiên truyền thông từ tất cả các nguồn truyền thông. Nó cung cấp các cơ chế để phát hiện khi nào Nguồn phương tiện trở thành nguồn phương tiện nền trước . Phương tiện và tất cả các ứng dụng khác hiển thị nguồn phương tiện hiện đang phát (ví dụ: Màn hình chính), hãy sử dụng Trình quản lý phiên phương tiện để phát hiện những sự kiện này và cập nhật giao diện người dùng tương ứng. Nguồn phương tiện tương tác với Trình quản lý phiên phương tiện bằng API phiên phương tiện .
Đài Ứng dụng chuyên dụng để tương tác với phần cứng radio. Radio tìm kiếm các đài phát thanh, nhanh chóng chọn các đài được xác định gần đây và chuyển đổi giữa các băng tần radio. 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ụ đánh lạc hướng người lái xe Dịch vụ hệ thống Android dùng để áp đặt các hạn chế UX dựa trên trạng thái lái của ô tô. Đối với UX cài đặt và đăng nhập nguồn phương tiện (trong đó màn hình được điều khiển trực tiếp bởi các nguồn phương tiện), dịch vụ này đảm bảo không hiển thị nội dung không an toàn khi ô tô ở trạng thái lái xe. OEM có thể tùy 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ủ màn hình chặn).

Luồng người dùng

Ra mắt ứng dụng truyền thông

Quá trình khởi chạy Media xuất hiện bên dưới.

Ra mắt ứng dụng truyền thông

Hình 2. Khởi chạy ứng dụng đa phương tiện

Phương tiện phải được khởi chạy bằng cách sử dụng CAR_INTENT_ACTION_MEDIA_TEMPLATE ẩn sau đây. Mục đích này có thể có các thông tin bổ sung sau:

  • android.car.intent.extra.MEDIA_COMPONENT ( tùy chọn ). Chuỗi bổ sung để thể hiện tên thành phần được làm phẳng của MediaBrowserService trong ứng dụng phương tiện mà Phương tiện sẽ kết nối. Nếu không được cung cấp, Media sẽ hiển thị ứng dụng media hiện được chọn. Mục đích này được sử dụng từ các điểm đầu vào sau:

    • Giao diện người dùng hệ thống. Được sử dụng để quay lại trải nghiệm Media hoặc để bắt đầu sử dụng nó lần đầu tiên. Trong trường hợp này, Intent ở trên sẽ được sử dụng mà không có bất kỳ tính năng bổ sung nào để khiến Media hiển thị ứng dụng media 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ể điều hướng đến Media để hiển thị ứng dụng media hiện được chọn. Trong mọi trường hợp, Ý định ngầm định không có phần bổ sung sẽ được kích hoạt.

    • Trình khởi chạy ứng dụng. Khi người dùng chọn một ứng dụng đa phương tiện từ Trình khởi chạy ứng dụng, mục đích trên sẽ bao gồm phần bổ sung CAR_EXTRA_MEDIA_COMPONENT 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 nó. Để biết chi tiết, hãy xem phần bên dưới, Tích hợp Trình khởi chạy ứng dụng với Phương tiện.

Trình khởi chạy ứng dụng để tích hợp phương tiện

Ứ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 khởi chạy ứng dụng (hoặc trình khởi chạy ứ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 phương tiện:

  • Trình khởi 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 các gói này, Trình khởi 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 được sử dụng để tìm nạp các hoạt động khác.

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

    Tính đến thời điểm viết bài này, không có ứng dụng nguồn phương tiện nào có thể cung cấp hoạt động của trình khởi chạy.

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

Tùy chọn cấu hình và luồng đăng nhập

Ứng dụng đa phương tiện có thể bao gồm hoạt động Cài đặt được tối ưu hóa cho xe. Hoạt động như vậy có thể được sử dụng để triển khai các luồng người dùng không được API Android Media xử lý, ví dụ:

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

Luồng đăng nhập

Hình 3. Luồng đăng nhập

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 mục đích 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>

Phương tiện truyền thông phải thực hiện logic sau:

  • Kiểm tra xem ứng dụng đa phương tiện hiện được chọn có bao gồm hoạt động với Bộ lọc ý định nhất định hay không.

  • Nếu vậy, hãy cho phép người dùng điều hướng đến hoạt động.

  • Nếu Hạn chế UX trên ô tô có hiệu lực (ví dụ: ô tô đang di chuyển), khả năng chi trả này sẽ bị tắt vì hoạt động Cài đặt không phải là Giao diện người dùng được tối ưu hóa cho người lái.

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

Phương tiện tương tác với các ứng dụng phương tiện thông qua API phiên phương tiện của Android. Là một phần của 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 media.

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 mã lỗi cụ thể (xem chi tiết bên dưới). Khi điều này xảy ra, Phương tiện hiển thị mô tả lỗi và khả năng điều hướng đến hoạt động đăng nhập do ứng dụng phương tiện triển khai.

Ứng dụng có thể sử dụng luồng tương tự 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ủ).

Xử lý lỗi

Hình 4. Xử lý lỗi

Là một phần của quá trình xử lý lỗi PlaybackState thông thường, Phương tiệ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 báo hiệu rằng ứng dụng đa phương tiện yêu cầu đăng nhập để tiếp tục hoạt động. Có thể nhận được các mã lỗi khác, mã này sẽ cho biết các loại tình huống lỗi khác.

  • Thông báo lỗi PlaybackState (do ứng dụng đa phương tiện đặt bằng phương thức PlaybackStateCompat.Builder#setErrorMessage ) chứa phần giải thích mà con người có thể đọc được (ví dụ: "Bạn chưa đăng nhập."). Thông báo này phải được hiển thị cho người dùng và nó phải được tối ưu hóa sự phân tâm khi lái xe (DO).

  • Theo tùy chọn, PlaybackState có thể bao gồm các tính năng bổ sung sau (do ứng dụng đa phương tiện đặt bằng phương thức PlaybackStateCompat.Builder#setExtras ) bằng các phím 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ó thể đọc được để hiển thị trên nút mà người dùng chạm vào để bắt đầu luồng đăng nhập.

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

  • Trạng thái PlaybackState bằng STATE_ERROR . Điều này báo hiệu rằng 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.