自訂安卓電視控制項

在本主題中,您將學習如何自訂 Android TV 的倒轉和快轉按鈕。

簡介

用於電視的Brightcove媒體控制器具有快退按鈕和快進按鈕。當您單擊這些按鈕中的任何一個時,默認值為向後或向前搜索3秒。

當您按住任一按鈕時,搜索位置將以每40毫秒3秒鐘的內容更新速率。這意味著每秒鐘按住快退或快進按鈕可將內容推進75秒。

配置搜尋按鈕

快退和快進按鈕可以通過EventType.SEEK_CONTROLLER_CONFIGURATION事件。

為簡單起見,由於以下屬性適用於兩個按鈕,因此我們將這兩個按鈕中的任何一個都稱為“查找”按鈕。

活動屬性 預設值 描述
Event.SEEK_DEFAULT 3000毫秒 搜索按鈕將搜索的默認搜索值(以毫秒為單位)。
Event.SEEK_RELATIVE_ENABLED 假的 如果啟用,則允許搜尋值相對於由EventType.VIDEO_DURATION_CHANGED事件。百分比由Event.SEEK_PERCENTAGE
Event.SEEK_PERCENTAGE 1% 相對於視頻時長的百分比,用於計算默認搜尋值。
Event.SEEK_ON_HOLD_WAIT_TIME 500毫秒 等待按鍵事件的時間(以毫秒為單位)被認為是長按而不是常規按下。
Event.SEEK_ON_HOLD_UPDATE_FREQ 40毫秒 用於發送該郵件的時間(以毫秒為單位)EventType.SEEKBAR_DRAGGING_PROGRESS事件以更新媒體控制器搜索欄。

自定義事件屬性

您可能需要上表中列出的其他事件屬性。您可以通過定義期望值並發出EventType.SEEK_CONTROLLER_CONFIGURATION事件。

要將自定義屬性添加到事件,請按照下列步驟操作:

  1. 定義您的自定義值。

    private static final int DEFAULT_TV_SEEK_TIME = (int) TimeUnit.SECONDS.toMillis(3);
    private static final int DEFAULT_TV_ON_HOLD_WAIT_TIME = (int) TimeUnit.SECONDS.toMillis(1);
    private static final int DEFAULT_TV_SEEK_PERCENTAGE = 1;
    private static final int DEFAULT_TV_ON_HOLD_UPDATE_FREQUENCY_TIME = 500;
    
  2. 包括創建屬性圖,添加所需值並發出EventType.SEEK_CONTROLLER_CONFIGURATION事件。

    private void setupTelevisionMode() {
       Map<String, Object> properties = new HashMap<>();
       properties.put(Event.SEEK_DEFAULT, DEFAULT_TV_SEEK_TIME);
       properties.put(Event.SEEK_RELATIVE_ENABLED, true);
       properties.put(Event.SEEK_PERCENTAGE, DEFAULT_TV_SEEK_PERCENTAGE);
       properties.put(Event.SEEK_ON_HOLD_WAIT_TIME, DEFAULT_TV_ON_HOLD_WAIT_TIME);
       properties.put(Event.SEEK_ON_HOLD_UPDATE_FREQ, DEFAULT_TV_ON_HOLD_UPDATE_FREQUENCY_TIME);
    
       eventEmitter.emit(EventType.SEEK_CONTROLLER_CONFIGURATION, properties);
    }
  3. 檢查您的應用程序是否處於電視模式下以設置搜索控制器配置。

    if (BrightcoveMediaController.checkTvMode(mBaseVideoView.getContext())) {
       setupTelevisionMode();
    }