はじめに
テレビ用 Brightcove メディアコントローラーには、巻き戻しボタンと早送りボタンがあります。これらのボタンのいずれかをクリックすると、既定で 3 秒前後にシークします。
いずれかのボタンを押したままにすると、シーク位置は 40 ミリ秒ごとにコンテンツの 3 秒の割合で更新されます。つまり、巻き戻しボタンまたは早送りボタンを 1 秒ごとに押すと 75 秒進みます。
シークボタンの設定
巻き戻しボタンと早送りボタンは、EventType.SEEK_CONTROLLER_CONFIGURATION
イベントを通じて設定できます。
簡単にするために、これらのボタンのいずれかをシークボタンと呼びます。これは、次のプロパティが両方に適用されるためです。
イベントプロパティ | デフォルト値 | 説明 |
---|---|---|
Event.SEEK_DEFAULT |
3000ミリ秒 | シークボタンがシークするデフォルトのシーク値(ミリ秒単位)。 |
Event.SEEK_RELATIVE_ENABLED |
false | 有効にすると、シークの値は、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ミリ秒 | Media EventType.SEEKBAR_DRAGGING_PROGRESS Controllerのシークバーを更新するためにイベントを送信するために使用される時間(ミリ秒単位)。 |
イベントプロパティのカスタマイズ
上記の表に示したイベントプロパティから追加のイベントプロパティが必要な場合があります。期待値を定義し、EventType.SEEK_CONTROLLER_CONFIGURATION
イベントを発生させることでこれを行うことができます。
イベントにカスタムプロパティを追加するには、次の手順を実行します。
-
カスタム値を定義します。
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;
-
プロパティマップを作成し、目的の値を追加し、
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); }
-
アプリがテレビモードになっているかどうかを確認して、シークコントローラーの設定を設定します。
if (BrightcoveMediaController.checkTvMode(mBaseVideoView.getContext())) { setupTelevisionMode(); }