Personalizar los controles de Android TV

En este tema, aprenderá a personalizar los botones de rebobinado y avance rápido para Android TV.

Introducción

El Brightcove Media Controller para TV tiene un botón de rebobinado y un botón de avance rápido. Cuando hace clic en cualquiera de estos botones, el valor predeterminado es buscar 3 segundos hacia atrás o hacia adelante.

Cuando presiona y mantiene presionado cualquiera de los botones, la posición de búsqueda se actualizará a una velocidad de 3 segundos de contenido cada 40 milisegundos. Esto significa que mantener presionado el botón de rebobinado o avance rápido cada segundo avanza la potencia de 75 segundos.

Configurar los botones de búsqueda

Los botones de rebobinado y avance rápido se pueden configurar a través del EventType.SEEK_CONTROLLER_CONFIGURATION evento.

Para simplificar, nos referiremos a cualquiera de estos botones como el botón de búsqueda, ya que las siguientes propiedades se aplican a ambos.

Propiedad del evento Valor por defecto Descripción
Event.SEEK_DEFAULT 3000 ms El valor de búsqueda predeterminado en milisegundos que buscará el botón de búsqueda.
Event.SEEK_RELATIVE_ENABLED falso Si está habilitado, permite que el valor de búsqueda sea relativo a la duración del video establecida por el EventType.VIDEO_DURATION_CHANGED evento. El porcentaje lo establece Event.SEEK_PERCENTAGE.
Event.SEEK_PERCENTAGE 1% El porcentaje relativo a la duración del video utilizado para calcular el valor de búsqueda predeterminado.
Event.SEEK_ON_HOLD_WAIT_TIME 500 ms El tiempo en milisegundos que se esperará para que el evento de tecla se considere una pulsación larga en lugar de una pulsación normal.
Event.SEEK_ON_HOLD_UPDATE_FREQ 40 ms El tiempo en milisegundos utilizado para enviar el EventType.SEEKBAR_DRAGGING_PROGRESS evento para actualizar la barra de búsqueda del controlador de medios.

Personalizar las propiedades del evento

Es posible que desee propiedades de eventos adicionales a las que se enumeran en la tabla anterior. Puede hacerlo definiendo los valores esperados y emitiendo el EventType.SEEK_CONTROLLER_CONFIGURATION evento.

Para agregar propiedades personalizadas al evento, siga estos pasos:

  1. Defina sus valores personalizados.

    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. Incluir un método para crear el mapa de propiedades, agregar los valores deseados y emitir el EventType.SEEK_CONTROLLER_CONFIGURATION evento.

    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. Verifique si su aplicación está en modo TV para configurar la configuración del controlador de búsqueda.

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