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

Sơ đồ sau đây minh hoạ các thành phần tương tác với Media:

Thành phần hệ thống

Hình 1. Thành phần hệ thống

Các phần tử trong hình này được mô tả trong bảng:

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ô hiển thị và điều khiển nội dung nghe nhìn đang phát. Trong AOSP, đây là màn hình chính hiển thị 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 thi 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 tuỳ chọn điều hướng giao diện người dùng chung, chẳng hạn như điều hướng đến Media (Nội dung nghe nhìn).
Trợ lý Android cung cấp các cơ chế để các ứng dụng trợ lý giọng nói 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 nội dung nghe nhìn ở chế độ nền (ví dụ: phát một bài hát theo lệnh thoại) hoặc chuyển đến Nguồn nội dung nghe nhìn ở chế độ nền trước (ví dụ: khi ứng dụng trợ lý thoạ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, bao gồm cả Nguồn nội dung nghe nhìn. Nội dung nghe nhìn có thể trình bày bộ chọn Nguồn nội dung nghe nhìn riêng, bổ sung hoặc thay thế Trình chạy ứng dụng làm điểm bắt đầu cho nội dung nghe nhì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 hướng đến Media để 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 phát nội dung đa phương tiện Dịch vụ hệ thống Android theo dõi và kiểm soát các phiên phát nội dung nghe nhìn từ tất cả nguồn nội dung nghe nhìn. Lớp này 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ả ứ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), hãy sử dụng Trình quản lý phiên phát nội dung nghe nhìn để phát hiện các 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 đa phương tiện tương tác với Trình quản lý phiên đa phương tiện thông qua API phiên đa phương tiện.
Đài phát Ứng dụng chuyên biệt để tương tác với phần cứng đài phát. Ứng dụng Radio tìm kiếm các đài phát thanh, nhanh chóng chọn các đài phát thanh được xác định gần đây và chuyển đổi giữa các băng tần phát thanh. Các thành phần giao diện người dùng mà cả Đài và Nội dung nghe nhìn đều dùng chung cho phép người dùng chuyển đổi giữa hai trải nghiệm này.
Công cụ phân tâm người lái xe Dịch vụ hệ thống Android dùng để áp dụng 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 giao diện người dùng đăng nhập và cài đặt nguồn nội dung đa phương tiện (trong đó màn hình do các nguồn nội dung đa phương tiện trực tiếp kiểm soát), 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ô ở trạng thái lái xe. Nhà sản xuất thiết bị gốc (OEM) có thể tuỳ chỉnh định nghĩa của các trạng thái này và cách hệ thống phản ứng trong những trường hợp 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

Chạy ứng dụng đa phương tiện

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

Chạy ứng dụng đa phương tiện

Hình 2. Chạy ứng dụng đa phương tiện

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

  • android.car.intent.extra.MEDIA_COMPONENT (không bắt buộc). Chuỗi bổ sung để biểu thị tên thành phần được làm phẳng của MediaBrowserService trong ứng dụng đa phương tiện mà Media sẽ kết nối. Nếu không được cung cấp, Media sẽ hiển thị ứng dụng đa phương tiện đang được chọn. Ý định này được sử 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 trải nghiệm nội dung nghe nhìn hoặc bắt đầu sử dụng lần đầu. Trong trường hợp này, Ý định ở trên sẽ được sử dụng mà không cần thêm bất kỳ thông tin nào để khiến Media hiển thị ứng dụng đa phương tiện hiện đã 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 phần Nội dung đa phương tiện để hiển thị ứng dụng đa phương tiện đang được chọn. Trong mọi trường hợp, Ý định ngầm ẩn mà 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 từ Trình chạy ứng dụng, ý định ở trên sẽ bao gồm CAR_EXTRA_MEDIA_COMPONENT bổ sung chứa ứng dụng đa phương tiện đã chọn. Media sẽ chỉ định ứng dụng nà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 về việc tích hợp Trình chạy ứng dụng với nội dung đa phương tiệ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 tương đương) phải triển khai logic đặc biệt để giải quyết việc 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 các 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 các gói triển khai hoạt động android.intent.category.LAUNCHER. Nếu một ứng dụng cung cấp 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 đa phương tiện nào có thể cung cấp 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 tuỳ chọn cấu hình

Ứng dụng đa phương tiện có thể bao gồm hoạt động Cài đặt được tối ưu hoá cho xe. Bạn có thể sử dụng hoạt động như vậy để triển khai các luồng người dùng không được Android Media API giải quyết, 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ụ

Quy trình đăng nhập

Hình 3. Quy trình đă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 ý đị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 ứ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 tính năng 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 API Phiên đa phương tiện của Android. Trong API này, Media sẽ nhận được một đối tượng PlaybackState để thông báo 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 tính nă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 quy trình 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

Trong quá trình xử lý lỗi PlaybackState thông thường, Media phải kiểm tra dữ liệu đầu vào sau.

  • Mã lỗi PlaybackState bằng PlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED. Điều này cho biết rằng ứng dụng đa phương tiện yêu cầu đă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 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 hiển thị cho người dùng và phải được tối ưu hoá để giảm tình trạng mất tập trung khi lái xe (DO).

  • Không bắt buộc, PlaybackState có thể bao gồm các thành 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 nhằm bắt đầu quy trình đăng nhập.

    • android.media.extras.ERROR_RESOLUTION_ACTION_INTENT. Đặt bằng PendingIntent để 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 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 hoàn tất quy trình đăng nhập.