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 dành cho ô tô có thể mang đến cho người dùng một cách để 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 tương tự cho điện thoại dùng được trên ô tô, bạn có thể tạo ra trải nghiệm người dùng tốt hơn. 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 gây phân tâm cho người lái xe. 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 chỉ có thể hiện thông tin kịp thời cho người lái khi thông tin đó phù hợp và sử dụng các mẫu có thể dự đoán 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 cũng như 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ô.

Các ứ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) 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. Những ứ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 trong bài viết Tạo ứng dụng video cho Android Automotive OS.

Tạo ứ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ó ứng dụng trình phát nội dung đa phương tiện cơ bản, 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 để bắt đầu.

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ả các đường liên kết đến những 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 lại. Các lớp tạo nên các thành phần này sẽ quen thuộc với bạn nếu bạn từng làm việc với các thư viện nội dung nghe nhìn trê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 của một ứng dụng đa phương tiện sử dụng Media3 sẽ kết nối với nhau theo một số cách đơn giản do việc chia sẻ giao diện và lớp.
Hình 1: Thành phần của ứng dụng đa phương tiện

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

Triển khai một MediaLibraryServiceMediaLibrarySession

MediaLibraryService cung cấp một API chuẩn để 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. Đây là yêu cầu bắt buộc khi thêm tính năng hỗ trợ 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 riêng cho thư viện nội dung nghe nhìn của bạn. Để biết thêm thông tin về cách triển khai và sử dụng MediaLibraryService, hãy xem bài viết 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 đa phương tiện. API MediaSession cung cấp một cách thức tương tác chung với trình phát âm thanh hoặc video. Thư viện Jetpack Media3 bao gồm MediaLibrarySession, thư viện này mở rộng MediaSession để thêm API duyệt nội dung.

Khi kết nối một phiên phát nội dung nghe nhìn với trình phát, ứng dụng sẽ có thể quảng cáo nội dung nghe nhì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 tính năng hỗ trợ cho 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 trên ô 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ị thư viện nội dung. Thư viện 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 nghe nhì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 qua 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 thêm các giới hạn về cấu trúc trong 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 đa phương tiệ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 ô tô vì không phải tất cả logic trong ứng dụng của bạn đều có thể 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) sẽ có yêu cầu riêng của nền tảng. 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, chẳng hạn như mã được sử dụng cho ứ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 hoạt động cài đặt hoặc đăng nhập, hãy thêm các hoạt động đó tại đây. Các hoạt động này được hệ thống kích hoạt bằng cách sử dụng ý định tường minh và là các 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ợ.

Để thể hiện việc 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 dành cho đ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 dành cho Android Auto và Android Automotive OS, có thể bạn muốn thực hiện thêm các bước để tối ưu hoá ứng dụng sao cho an toàn hơn khi dùng khi lái xe. Để biết thêm đề xuất nhằm đả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ệ chống 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 các bài viết 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 các 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 có tên 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"/>