自訂參考電視應用程式

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 權限的預先建構系統應用程式。

Live TV 會搜尋含有此權限的系統套件、檢查資源檔案,並偵測標示為特定類別的套件活動,以便處理自訂內容。

重點:只有一個套裝方案可自訂電視直播。

設定時間移轉模式

時間移轉 (TrickPlay) 功能可讓 Android 電視裝置暫停、倒轉及快轉頻道播放內容。在 Live TV 實作中,可透過 播放控制項使用時間移轉功能。根據預設,直播電視會啟用時間轉移功能,但可以停用。時間移轉功能也可以設定為只使用外部儲存空間。

如要設定時間轉換,請新增字串資源 trickplay_mode,並將其值設為下列任一選項:

  • enabled:啟用時間轉換功能。這是在未提供任何選項時的預設值。
  • disabled:停用時間轉移功能。
  • use_external_storage_only:設定時間移轉功能,以便使用外部儲存空間。
<string name="trickplay_mode">use_external_storage_only</string>
按下 D-Pad 中央按鈕後,系統會啟用播放控制項 UI。

圖 1. 按下方向鍵中央按鈕後,系統會啟用「Play 控制項」UI。

自訂電視選項

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

如要指出自訂選項,請宣告意圖篩選器,篩選活動中的 com.android.tv.category.OPTIONS_ROW 類別。自訂功能是由裝置製造商在活動中實作。點選選項後,系統就會啟動活動。系統會使用活動的標題和圖示做為選項。自訂的 TV 選項應與現有的 UI 相符,才能提供最佳使用者體驗。

注意:由於 Android 限制,Live TV 無法區分相同類別活動中的意圖篩選器,因此活動只能處理一個選項。如要瞭解解決方法,請參閱「在活動中處理多個選項」。

裝置製造商也可以在 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:自訂選項對話方塊範例。