Mở rộng ứng dụng đa phương tiện của bạn sang Android cho Ô tô

Đưa ứng dụng của bạn lên các xe chạy Android Auto hoặc Android Automotive OS. Sử dụng một cấu trúc ứng dụng phù hợp cho cả hai trường hợp để mọi người đều có thể trải nghiệm ứng dụng của bạn.

Android cho Ô tô là gì?

Ứng dụng đa phương tiện cho ô tô có thể đưa ra cách để người dùng kết nối cuộc sống số của họ một cách liền mạch với ô tô. Bằng cách mở rộng các ứng dụng dành cho điện thoại để có thể dùng được trên ô tô, bạn sẽ tạo ra trải nghiệm tốt hơn cho người dùng. Bạn có thể thực hiện việc này bằng cách tích hợp với Android Auto hoặc Android Automotive OS.

Các ứng dụng Android cho ô tô phải tránh làm người lái xe mất tập trung. Bạn có thể giảm thiểu sự phân tâm bằng cách làm theo các phương pháp hay nhất, chẳng hạn như sử dụng lệnh thoại và thiết kế hình ảnh rất thiết thực. Bằng cách này, ứng dụng đa phương tiện của bạn có thể hiển thị thông tin kịp thời cho người lái xe chỉ khi thông tin đó có liên quan và sử dụng các mẫu có thể dự đoán được cho các thao tác phổ biến.

Android Auto

Android Auto cung cấp trải nghiệm ứng dụng được tối ưu hoá cho người lái xe đối với những người dùng cài đặt ứng dụng Android Auto trên điện thoại Android và có hệ thống âm thanh nổi trên ô tô hoặc sản phẩm thay thế tương thích. Họ có thể dùng ứng dụng của bạn ngay trên màn hình ô tô bằng cách kết nối điện thoại. Bạn cho phép Android Auto kết nối với ứng dụng dành cho điện thoại bằng cách tạo các dịch vụ mà Android Auto dùng để hiển thị giao diện được tối ưu hoá cho người lái xe.

Android Automotive OS

Android Automotive OS là hệ thống thông tin giải trí dựa trên Android được tích hợp sẵn trong các xe. Hệ thống của xe là một thiết bị độc lập chạy hệ điều hành Android được tối ưu hoá cho hoạt động lái xe. Với Android Automotive OS, người dùng sẽ cài đặt ứng dụng của bạn ngay trên ô tô thay vì trên điện thoại.

Danh mục ứng dụng được hỗ trợ

Ứng dụng đa phương tiện cho phép người dùng duyệt qua và phát nhạc, đài, sách nói và các nội dung âm thanh khác trên ô tô. Để biết thêm thông tin, hãy xem bài viết Tạo ứng dụng phát âm thanh cho ô tô. Bạn cũng có thể xem thêm thông tin trong bài viết Tạo ứng dụng đa phương tiện cho ô tô.

Ứng dụng đa phương tiện được tạo bằng MediaLibraryServiceMediaSession. Trên Android Automotive OS, bạn cũng có thể tạo màn hình đăng nhập và màn hình cài đặt (để sử dụng khi xe đậu) bằng cách sử dụng Khung hiển thị hoặc Compose.

Ứng dụng video cho phép người dùng xem video phát trực tuyến trong khi xe đậu. Mục đích cốt lõi của các ứng dụng này là hiển thị video phát trực tuyến. Các ứng dụng này được tạo bằng Khung hiển thị hoặc Compose. Để biết thêm thông tin, hãy xem bài viết Tạo ứng dụng phát video cho Android Automotive OS. Bạn có thể xem thêm thông tin tại bài viết Tạo ứng dụng video cho Android Automotive OS.

Xây dựng ứng dụng phát âm thanh cho ô tô

Hướng dẫn này giả định rằng bạn đã có một ứng dụng phát nội dung đa phương tiện cơ bản. Nếu bạn chưa có, để bắt đầu, hãy chuyển đến phần Tạo ứng dụng trình phát nội dung đa phương tiện cơ bản.

Hướng dẫn này cung cấp cho bạn thông tin về những việc bạn cần làm, bao gồm cả đường liên kết đến các tài nguyên khác có hướng dẫn cụ thể.

Thành phần phát

Media3 cung cấp một số thành phần chính cho các trường hợp sử dụng phát. Bạn sẽ quen thuộc với các lớp tạo nên các thành phần này nếu đã từng làm việc với các thư viện nội dung nghe nhìn Android trước đây.

Sơ đồ sau đây minh hoạ cách các thành phần này kết hợp với nhau trong một ứng dụng thông thường.

Các thành phần khác nhau của một ứng dụng đa phương tiện sử dụng Media3 kết nối với nhau theo một số cách đơn giản nhờ việc chia sẻ giao diện và lớp.
Hình 1: Thành phần ứng dụng đa phương tiện

Để biết thêm thông tin, hãy xem phần Thành phần phát.

Triển khai MediaLibraryServiceMediaLibrarySession

MediaLibraryService cung cấp một API chuẩn hoá để phân phát và cho phép truy cập vào thư viện nội dung nghe nhìn của bạn. Bạn phải thực hiện việc này khi thêm tính năng hỗ trợ cho Android Auto hoặc Android Automotive OS vào ứng dụng đa phương tiện, vì các nền tảng này cung cấp giao diện người dùng an toàn cho người lái xe riêng cho thư viện nội dung đa phương tiện. Để biết thêm thông tin về cách triển khai và sử dụng MediaLibraryService, hãy xem phần Phân phát nội dung bằng MediaLibraryService.

Để điều khiển chế độ phát, hãy sử dụng phiên phát nội dung nghe nhìn. API MediaSession cung cấp cách thức tương tác phổ biến với trình phát âm thanh hoặc trình phát video. Thư viện Jetpack Media3 bao gồm MediaLibrarySession, mở rộng MediaSession để thêm các API duyệt nội dung.

Việc kết nối một phiên phát nội dung đa phương tiện với một trình phát cho phép ứng dụng quảng cáo chế độ phát nội dung đa phương tiện bên ngoài và nhận lệnh phát từ các nguồn bên ngoài như Android Auto, Android Automotive OS hoặc Trợ lý Google. Để biết thêm thông tin, hãy xem phần Kiểm soát và quảng cáo tính năng phát bằng MediaSessionSử dụng MediaLibrarySession.

Ở mức tối thiểu, phiên phát nội dung đa phương tiện của bạn phải khai báo khả năng hỗ trợ các lệnh sau của trình phát:

Hướng dẫn Bật bộ điều khiển chế độ phát mô tả các cách bạn có thể tuỳ chỉnh bộ điều khiển chế độ phát trong ô tô.

Khi kết nối với ứng dụng của bạn, Android Auto hoặc Android Automotive OS sẽ yêu cầu hiển thị một thư viện nội dung. Thao tác này sẽ kích hoạt phương thức gọi lại onGetLibraryRoot(). Bạn có thể nhanh chóng trả về một mục nội dung đa phương tiện gốc để cho phép truy cập vào thư viện. Phương thức gọi lại onGetChildren() được gọi khi Android Auto hoặc Android Automotive OS đang cố gắng duyệt xem các cấp sâu hơn của thư viện nội dung.

Các nền tảng này thực thi các giới hạn bổ sung về cấu trúc thư viện nội dung của bạn. Để biết thông tin chi tiết về cách tuỳ chỉnh cách hiển thị thư viện nội dung, hãy xem hướng dẫn Tạo dịch vụ trình duyệt nội dung nghe nhìn.

Khai báo tính năng hỗ trợ Android Auto

Sử dụng mục nhập tệp kê khai sau đây để khai báo rằng ứng dụng dành cho điện thoại của bạn hỗ trợ Android Auto:

<application>
    ...
    <meta-data android:name="com.google.android.gms.car.application"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

Mục nhập tệp kê khai này là một tệp XML khai báo những chức năng của ô tô mà ứng dụng hỗ trợ. Để cho biết rằng bạn có một ứng dụng đa phương tiện, hãy thêm tệp XML có tên automotive_app_desc.xml vào thư mục res/xml/ trong dự án. Tệp này phải bao gồm nội dung sau:

<automotiveApp>
    <uses name="media"/>
</automotiveApp>

Khai báo tính năng hỗ trợ Android Automotive OS

Bạn cần tạo một mô-đun dành cho ô tô vì không phải tất cả logic trong ứng dụng của bạn đều có thể được chia sẻ với ứng dụng dành cho ô tô. Một số thành phần của Android Automotive OS (chẳng hạn như tệp kê khai) có các yêu cầu riêng theo nền tảng. Hãy tạo một mô-đun có thể tách biệt mã cho các thành phần này với mã khác trong dự án của bạn (ví dụ như mã dùng trong ứng dụng dành cho thiết bị di động).

Làm theo các bước sau để thêm mô-đun ô tô vào dự án:

  1. Trong Android Studio, hãy nhấp vào File > New > New Module (Tệp > Mới > Mô-đun mới).
  2. Chọn Automotive Module (Mô-đun Automotive), rồi nhấp vào Next (Tiếp theo).
  3. Nhập Application/Library name (Tên thư viện/ứng dụng). Đây là tên ứng dụng mà người dùng sẽ nhìn thấy trên Android Automotive OS.
  4. Nhập Module name (Tên mô-đun).
  5. Điều chỉnh Package name (Tên gói) cho phù hợp với ứng dụng.
  6. Chọn API 28: Android 9.0 (Pie) cho Minimum SDK (SDK tối thiểu), sau đó nhấp vào Next (Tiếp theo).

    Mọi ô tô hỗ trợ Android Automotive OS đều chạy trên Android 9 (API cấp 28) trở lên. Vì vậy, việc chọn giá trị này sẽ nhắm đến mọi ô tô tương thích.

  7. Chọn No Activity (Không có hoạt động) rồi nhấp vào Finish (Hoàn tất).

Sau khi tạo mô-đun trong Android Studio, hãy mở AndroidManifest.xml trong mô-đun ô tô mới:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.media">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

</manifest>

Phần tử application chứa một số thông tin tiêu chuẩn về ứng dụng cùng một phần tử uses-feature khai báo việc hỗ trợ Android Automotive OS. Lưu ý rằng không có hoạt động nào được khai báo trong tệp kê khai.

Nếu bạn triển khai một hoạt động cài đặt hoặc đăng nhập, hãy thêm những hoạt động đó vào đây. Các hoạt động này được hệ thống kích hoạt bằng ý định tường minh và là hoạt động duy nhất bạn khai báo trong tệp kê khai cho ứng dụng trên Android Automotive OS.

Sau khi thêm hoạt động cài đặt hoặc đăng nhập, hãy hoàn thiện tệp kê khai bằng cách thiết lập thuộc tính android:appCategory="audio" trong phần tử application rồi thêm các phần tử uses-feature sau:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.media">

    <application
        android:allowBackup="true"
        android:appCategory="audio"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

    <uses-feature
        android:name="android.hardware.wifi"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.screen.portrait"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.screen.landscape"
        android:required="false" />

</manifest>

Việc thiết lập tường minh các tính năng này thành required="false" sẽ đảm bảo rằng ứng dụng của bạn không xung đột với các tính năng phần cứng hiện có trong thiết bị chạy Automotive OS.

Hãy sử dụng mục kê khai sau đây để khai báo rằng ứng dụng của bạn có hỗ trợ Android Automotive OS:

<application>
    ...
    <meta-data android:name="com.android.automotive"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

Mục kê khai này là một tệp XML khai báo những chức năng cho ô tô mà ứng dụng của bạn hỗ trợ.

Để cho biết rằng bạn có một ứng dụng đa phương tiện, hãy thêm tệp XML có tên automotive_app_desc.xml vào thư mục res/xml/ trong dự án. Đưa nội dung sau đây vào tệp này:

<automotiveApp>
    <uses name="media"/>
</automotiveApp>

Bộ lọc ý định

Android Automotive OS sử dụng ý định tường minh để kích hoạt các hoạt động trong ứng dụng đa phương tiện. Đừng thêm bất kỳ hoạt động nào có bộ lọc ý định CATEGORY_LAUNCHER hoặc ACTION_MAIN vào tệp kê khai.

Các hoạt động tương tự như trong ví dụ sau thường nhắm đến điện thoại hoặc một số thiết bị di động khác. Hãy khai báo các hoạt động này trong mô-đun xây dựng ứng dụng điện thoại, chứ không phải trong mô-đun xây dựng ứng dụng cho Android Automotive OS.

<activity android:name=".MyActivity">
<intent-filter>
<!-- You can't use either of these intents for Android Automotive OS -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<!--
In their place, you can include other intent filters for any activities
that your app needs for Android Automotive OS, such as settings or
sign-in activities.
-->
</intent-filter>
</activity>

Các bước tiếp theo

Giờ đây, khi đã có ứng dụng cho Android Auto và Android Automotive OS, bạn nên thực hiện thêm các bước để tối ưu hoá ứng dụng nhằm đảm bảo an toàn hơn khi sử dụng trong khi lái xe. Để biết thêm các đề xuất giúp đảm bảo trải nghiệm người dùng an toàn và thuận tiện, hãy xem hướng dẫn kỹ thuật về Thao tác bằng giọng nói, Biện pháp bảo vệ khỏi sự phân tâmXử lý lỗi.

Tạo ứng dụng phát video cho Android Automotive OS

Vì ứng dụng video được phân loại riêng biệt với ứng dụng đa phương tiện trên ô tô, nên bạn cần lưu ý một số yêu cầu cụ thể đối với ứng dụng video, như mô tả trong phần Tạo ứng dụng đỗ xe cho Android Automotive OSTạo ứng dụng video cho Android Automotive OS. Bạn cần làm theo hướng dẫn sau.

Đánh dấu ứng dụng của bạn là ứng dụng video

Để thể hiện rằng ứng dụng của bạn hỗ trợ video, hãy thêm tệp XML tên là automotive_app_desc.xml vào thư mục res/xml/ trong dự án. Trong tệp này, hãy đưa vào nội dung sau đây:

<automotiveApp>
    <uses name="video"/>
</automotiveApp>

Sau đó, trong phần tử application của tệp kê khai, hãy thêm phần tử meta-data sau đây tham chiếu đến tệp XML:

<meta-data android:name="com.android.automotive"
    android:resource="@xml/automotive_app_desc"/>