Introduction
The Brightcove Media Controller for TV has a rewind button and a fast-forward button. When you click either of these buttons, the default is to seek 3 seconds backward or forward.
When you press and hold either button, the seek position will update at a rate of 3 seconds of content every 40 milliseconds. This means that holding either the rewind or fast-forward button each second advances the cotent 75 seconds.
Configuring seek buttons
The rewind and fast-forward buttons can be configured through the EventType.SEEK_CONTROLLER_CONFIGURATION
event.
For simplicity, we’ll refer to either of these buttons as the seek button since the following properties apply to both.
Event property | Default value | Description |
---|---|---|
Event.SEEK_DEFAULT |
3000 ms | The default seek value in milliseconds the seek button will seek to. |
Event.SEEK_RELATIVE_ENABLED |
false | If enabled, allows the seek value to be relative to the video duration set by the EventType.VIDEO_DURATION_CHANGED event. The percentage is set by Event.SEEK_PERCENTAGE . |
Event.SEEK_PERCENTAGE |
1% | The percentage relative to the video duration used to calculate the default seek value. |
Event.SEEK_ON_HOLD_WAIT_TIME |
500 ms | The time in milliseconds to be waited for the key event to be considered a long press instead of a regular press. |
Event.SEEK_ON_HOLD_UPDATE_FREQ |
40 ms | The time in milliseconds used to send the EventType.SEEKBAR_DRAGGING_PROGRESS event to update the Media Controller seek bar. |
Customizing event properties
You may want additional event properties from those listed in the table above. You can do that by defining the expected values and emitting the EventType.SEEK_CONTROLLER_CONFIGURATION
event.
To add custom properties to the event, follow these steps:
-
Define your custom values.
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;
-
Include a method to create the properties map, add the desired values and emit the
EventType.SEEK_CONTROLLER_CONFIGURATION
event.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); }
-
Check if your app is in TV mode to setup the seek controller configuration.
if (BrightcoveMediaController.checkTvMode(mBaseVideoView.getContext())) { setupTelevisionMode(); }