自訂參考電視應用

Live TV 是一款專為 Android 電視裝置設計的參考電視應用程式。然而,設備製造商可能希望添加更多特定於產品的功能,這些功能未包含在 Live TV 的預設實作中,例如畫面調整、遊戲模式或 3D 模式。為了支援這些設備特定的功能或選項,Live TV 支援以下自訂:

  • 啟用時移模式,允許使用者暫停、快轉和快退。配置時移模式以使用外部儲存而不是內部儲存。
  • 將選項新增至電視選項行。
  • 新增自訂行並在其中新增選項。

注意直播頻道是 Google 對直播電視的實現,可以在具有 Google 服務的裝置上按原樣使用。若要自訂直播頻道,請將這些說明中的com.android.tv.*替換為com.google.android.tv.*

客製化直播電視

要自訂直播電視,目標 Android TV 裝置需要安裝自訂包,該包必須是具有com.android.tv.permission.CUSTOMIZE_TV_APP權限的預先建置系統應用程式。

電視直播會搜尋具有該權限的系統包,檢查資源文件,並偵測該包中標有特定類別Activity進行自訂。

重點: 只需一個套餐即可客製化直播電視。

配置時移模式

時移(特技播放)讓 Android 電視裝置暫停、快轉和快轉頻道播放。在直播電視實作中,可以透過播放控制UI 使用時移。時移功能在直播電視中預設為啟用,但也可以停用。時移也可以配置為僅使用外部儲存。

若要配置時移,請新增字串資源trickplay_mode並將其值設為下列選項之一:

  • enabled :啟用時移。當沒有給出任何選項時,這是預設值。
  • disabled :禁用時移。
  • use_external_storage_only :配置時移以使用外部儲存。
<string name="trickplay_mode">use_external_storage_only</string>
按下方向鍵中心按鈕後,將啟動播放控制 UI。

圖1 。按下方向鍵中心按鈕後,將啟動播放控制UI。

自訂電視選項

裝置製造商可以將直播電視設定的自訂選項新增至現有電視選項選單,例如新增聲音影像設定的捷徑。

要指示自訂選項,請聲明一個意圖過濾器來過濾活動中的類別com.android.tv.category.OPTIONS_ROW 。自訂功能由設備製造商在活動中實現。如果按一下該選項,則會啟動該活動。活動的標題和圖示用於該選項。客製化的電視選項應與現有的 UI 相匹配,以提供最佳的使用者體驗。

注意:一個 Activity 只能處理一個選項,因為由於 Android 的限制,Live TV 無法區分具有相同類別的 Activity 中的意圖過濾器。請參閱處理活動中的多個選項以取得解決方法。

設備製造商還可以透過在AndroidManifest.xml中定義android:priority來在現有選項之前或之後放置自訂選項。定義的優先權值低於 100 的選項顯示在現有項目之前,而值高於 100 則顯示在現有項目之後。多個自訂選項(在現有選項之前或之後)會依其優先順序升序排序。如果選項具有相同的優先級,則它們之間的順序是不確定的。

在此範例中,該選項首先出現在電視選項行中,如果按一下該選項,PictureSettingsActivity 就會啟動。

<activity android:name=".PictureSettingsActivity"
    android:label="@string/activity_label_picture_settings"
          android:theme="@style/Theme.Panel">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_brightness"
        android:label="@string/option_label_brightness"
        android:priority="0">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.OPTIONS_ROW" />
    </intent-filter>
</activity>

自訂電視選項行範例

圖2 .自訂電視選項行範例(亮度和節能)。

自訂電視選項範例。

圖3 .自訂電視選項範例。

處理活動中的多個選項

選項映射到活動的意圖過濾器,反之亦然。由於 Android 不區分具有相同類別和操作的意圖過濾器,因此一個活動僅處理一個選項,即使其中聲明了多個意圖過濾器。若要處理活動中的多個選項,請在AndroidManifest.xml中使用<activity-alias> 。在活動中,使用getIntent().getComponent()來識別點選的選項。

<activity-alias android:name=".AnyUniqueName"
    android:targetActivity=".PictureSettingsActivity">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_energy_saving"
        android:label="@string/option_label_energy_saving"
        android:priority="1">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.OPTIONS_ROW" />
    </intent-filter>
</activity-alias>

建立自訂行

設備製造商可以在電視選項行上方新增和自訂一行。此自訂行是可選的。

行標題

res/values/strings.xml中定義partner_row_title字串。該字串的值用於自訂行標題。

<string name="partner_row_title">Partner Row</string>

自訂選項

若要將自訂選項新增至自訂行,請按照向電視選項選單新增選項的流程進行操作,但將類別名稱變更為com.android.tv.category.PARTNER_ROW

<activity android:name=".ThreeDimensionalSettingDialogActivity"
    android:label="@string/activity_label_3d"
    android:theme="@android:style/Theme.Material.Light.Dialog">
    <intent-filter
        android:icon="@drawable/ic_tvoptions_3d"
        android:priority="0">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="com.android.tv.category.PARTNER_ROW" />
    </intent-filter>
</activity>

可選自訂行範例。

圖4 .可選自訂行範例。

自訂選項對話框範例。

圖5 .自訂選項對話框範例。