建構適用於 Android Automotive OS 的影片應用程式

Stay organized with collections Save and categorize content based on your preferences.

Android Automotive OS 可讓使用者在停妥車輛後透過資訊娛樂系統執行影片應用程式。

在 Android Automotive OS 模擬器上測試應用程式

如要開始針對 Android Automotive OS 建構應用程式,建議您先在 Android Automotive OS 模擬器中測試手機和平板電腦適用的現有行動應用程式。如要設定模擬器,請按照測試車輛專用 Android 應用程式一文的步驟操作,然後再依據這些操作說明執行應用程式。

執行應用程式時,請留意相容性問題,例如:

  • 資訊娛樂系統畫面會以固定方向呈現。根據車輛應用程式品質指南的規定,應用程式應支援直向和橫向的螢幕畫面。
  • 其他裝置的 API 可能不適用於 Android Automotive OS。舉例來說,某些 Google Play 服務 API 就不適用於 Android Automotive OS。如要進一步瞭解如何處理這些問題,請參閱「停用功能」一節的內容。

設定應用程式的資訊清單檔案

如要指定 Android Automotive OS,應用程式必須含有一些資訊清單項目。備妥這些項目後,您就能使用獨立的 Automotive 版本類型,將指定 Android Automotive OS 的應用程式提交至 Play 商店接受人工審查,確保該應用程式可在車上安全使用。詳情請參閱「發布車輛專用 Android 應用程式」一文。

必須具備 Android Automotive OS 功能

如要在車用 Play 商店上架專為 Android Automotive OS 建構的影片應用程式,則必須在 AndroidManifest.xml 檔案中納入以下 <uses-feature><uses-library> 元素。

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

如果應用程式提交至非車用測試群組,就無法宣告 <uses-feature> 元素,原因在於這些應用程式無法以汽車專用硬體進行測試。因此,如要將同一個應用程式發布到車用和非車用裝置上,應用程式必須產生至少兩個變種版本:一種用於車用裝置,另一種用於行動裝置 (手機和平板電腦)。如要進一步瞭解如何建立這些個別變種版本,請參閱下列說明文件:

應用程式的兩個變種版本可共用相同的套件名稱,但必須使用不同的版本代碼,因為這些變種版本會分別上傳到 Play 商店測試群組。

此外,如未提供獨立的變種版本,應用程式可改為使用不同套件名稱,以區分行動裝置和車輛的 APK 或應用程式套件。如要瞭解各種做法的優缺點,請參閱媒體應用程式開發人員指南中的「套件名稱」一節。

除了上述元素外,針對 Android Automotive OS 建構的應用程式也必須在 <manifest> 根元素中納入以下 <uses-feature> 元素。

<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"/>

如果您以明確的方式將這些功能設為非必要功能,就能確保應用程式不會與 Android Automotive OS 裝置中的可用硬體功能衝突。

將應用程式標示為影片應用程式

為說明您的車用應用程式可用於播放影片,請在專案的 res/xml/ 目錄中加入名稱為 automotive_app_desc.xml 的 XML 檔案,這個檔案應包含以下內容:

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

接著,請在資訊清單的 <application> 元素中加入下列 <meta-data> 元素,以參照 XML 檔案:

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

確認沒有分心因素已排除的活動

影片應用程式目前只能在車輛停妥後使用。因此,所有 <activity> 元素都「不能」包含以下 <meta-data> 元素:

<!-- NOT ALLOWED -->
<meta-data
  android:name="distractionOptimized"
  android:value="true"/>

如果沒有這項中繼資料,OS 就會在車輛進入行車模式時自動封鎖應用程式活動,以免駕駛分心。對您的應用程式而言,這會是一種 onPause 生命週期回呼,請確認應用程式在這段期間一併暫停播放影片及音訊。

為 Android Automotive OS 最佳化應用程式

為了盡可能讓使用者享有最佳體驗,您可能需要考量應用程式是否在車上執行,據此啟用或停用特定功能。

停用功能

在 Android Automotive OS 發布的現有行動應用程式可能包含某些不相關或無法使用的功能。舉例來說,車輛通常不會授權讓應用程式存取攝影機。此外,Android Automotive OS 上只能使用 Google Play 的部分功能,詳情請參閱「車輛專用 Google Play 服務」一文。

您可以使用 PackageManager.hasSystemFeature API 檢查 FEATURE_AUTOMOTIVE 功能,偵測應用程式是否在 Android Automotive OS 上執行。

Kotlin

val packageManager: PackageManager = ... // Get a PackageManager from a Context
val isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
if (isCar) {
  // Enable or disable a given feature
}

Java

PackageManager packageManager = ... // Get a PackageManager from a Context
boolean isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
if (isCar) {
  // Enable or disable a given feature
}

此外,如果應用程式中也有 Android Auto 元件,您或許可以使用 Car App Library 中的 CarConnection API 偵測應用程式是否在 Android Automotive OS 或 Android Auto 上執行,或者是否未與任何車輛連線。

針對子母畫面 (PiP) 功能,請按照既定的最佳做法檢查該功能是否可用,並適當採取相應行動。

處理離線情況

雖然有越來越多車輛都能連上網際網路,但應用程式仍要具備離線執行的能力,以便因應沒有網路連線的情況,例如:

  • 車輛製造商可能會透過訂閱套裝組合 (使用者可自行決定是否購買) 提供行動數據方案。
  • 使用者可能啟用了行動數據,但或許只能在特定區域使用,就像手機上的行動數據一樣。
  • 車上不一定會有 Wi-Fi 無線電裝置。即使車上有這類裝置,汽車也可能不在 Wi-Fi 訊號範圍內,或者原始設備製造商 (OEM) 可能偏好使用行動網路,因而停用了 Wi-Fi。

因此,應用程式應該要能處理上述情況並優雅降級,例如提供離線內容。詳情請參閱「最佳化網路的最佳做法」。

在 Android Automotive OS 上測試影片應用程式

一般而言,開發人員可按照測試車輛專用 Android 應用程式一文提供的指示進行操作。目前只有 Android Studio 提供的 SDK 32 模擬器包含 android-automotive-video 程式庫,因此需將其用於測試。更低版本的 SDK 模擬器不允許對具有所需影片庫的應用程式進行 adb 安裝,儘管它可能包含在這些 OS 等級的生產車輛中。

常見問題

是否支援 Widevine 數位版權管理?

是,Android Automotive OS 支援 Widevine 數位版權管理 L3。