Resumen
En un nivel alto, un complemento se integra con el reproductor escuchando y emitiendo eventos. Un complemento puede escuchar eventos del reproductor y de otros complementos. Un complemento puede emitir eventos para el reproductor y para otros complementos.
Este contenido junto con el código de muestra se encuentra en https://github.com/BrightcoveOS/android-plugin-guide
Arquitectura de complementos
Un complemento debe registrarse con el SDK cuando se crea una instancia. Para registrar un complemento debe emitir un REGISTER_PLUGIN
evento con un PLUGIN_NAME
propiedad. Por ejemplo:
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(Event.PLUGIN_NAME, "my custom plugin");
eventEmitter.emit(EventType.REGISTER_PLUGIN, properties);
La reproducción de video generalmente pasa por un flujo de eventos de ciclo de vida estándar:
Detalles del evento
Un complemento puede escuchar eventos, que inician alguna acción, para cambiar el comportamiento predeterminado del reproductor. Estos eventos incluyen:
WILL_CHANGE_VIDEO
SET_VIDEO
SET_SOURCE
PLAY
PAUSE
SEEK_TO
STOP
El comportamiento predeterminado se puede cambiar evitando que los oyentes predeterminados reciban el evento y / o deteniendo la propagación del evento a los oyentes no predeterminados. Evitar que los oyentes predeterminados reciban el evento se logra llamando al preventDefault()
método. La propagación de eventos se puede detener llamando al stopPropagation()
método. si solo preventDefault()
se llama, se notificará al resto de los oyentes no predeterminados. si solo stopPropagation()
se llama, los oyentes predeterminados aún serán notificados, pero el resto de los oyentes no predeterminados se omitirán. Un complemento también puede utilizar estos métodos para pausar el flujo de eventos normal e insertar un comportamiento adicional, como inicializar el complemento. Un complemento puede reanudar el flujo de eventos emitiendo nuevamente el evento original.
Un complemento también puede escuchar eventos, que indican la finalización de una acción. Estos eventos suelen ser utilizados por complementos de análisis. Los eventos incluyen:
DID_CHANGE_LIST
DID_SELECT_SOURCE
DID_PAUSE
DID_PLAY
DID_SEEK_TO
DID_SET_SOURCE
DID_STOP
PROGRESS
COMPLETED
Interrumpir la reproducción
Un complemento, que desea interrumpir la reproducción del contenido de video, debe usar WILL_INTERRUPT_CONTENT
y WILL_RESUME_CONTENT
. Estos eventos suelen ser utilizados por complementos publicitarios. Un complemento debería emitir WILL_INTERRUPT_CONTENT
para solicitar que se suspenda la reproducción, si se está reproduciendo actualmente, y para solicitar que la visualización del video se haga invisible. Un complemento debería emitir WILL_RESUME_CONTENT
para solicitar que la visualización del video vuelva a ser visible. La WILL_RESUME_CONTENT
El evento debe incluir un ORIGINAL_EVENT
propiedad que se emitirá después de que la vista del video se haga visible. La ORIGINAL_EVENT
debería ser un PLAY
evento para reanudar la reproducción, CUE_POINT
evento para continuar el procesamiento del punto de referencia, o un COMPLETED
evento para completar la reproducción. A SKIP_CUE_POINTS
la propiedad debe agregarse a la ORIGINAL_EVENT
para evitar el procesamiento recursivo de puntos de referencia.
Puntos de referencia
Muchos complementos querrán escuchar CUE_POINT
eventos. Hay tres tipos de puntos de referencia, BEFORE
, POINT_IN_TIME
, y AFTER
. BEFORE
los puntos de referencia se emiten justo antes de que comience la reproducción. POINT_IN_TIME
Los puntos de referencia se emiten cuando la reproducción alcanza la posición del punto de referencia. AFTER
los puntos de referencia se emiten justo después de que se completa la reproducción. Un complemento debería usar WILL_INTERRUPT_CONTENT
y WILL_RESUME_CONTENT
eventos para interrumpir y reanudar la reproducción de contenido cuando se maneja un evento de punto de referencia. En el caso de puntos de referencia antes y después, el evento incluirá un ORIGINAL_EVENT
propiedad, ya sea con un PLAY
evento o un COMPLETED
evento. Los eventos de punto de referencia también incluyen un CUE_POINTS
propiedad con el lote de puntos de referencia. START_TIME
y END_TIME
Las propiedades definen el rango de tiempo del punto de referencia.
Directorio de muestra
La directorio de muestra incluye un proyecto basado en Android Studio con dos módulos:
- SamplePlugin - Un complemento de ejemplo, que se puede utilizar como base para escribir nuevos complementos.
- SamplePluginApplication - Muestra cómo los complementos se incorporan en una aplicación de video de Brightcove y se pueden usar para probar el SamplePlugin o nuevos complementos.
Pasos de implementación
Los pasos para escribir un complemento incluyen:
- Copie el complemento de muestra en un nuevo repositorio.
- Cambie el paquete y los nombres de la clase.
- Actualizar el
TAG
inicializador. - Edite el
@Emits
y@ListensFor
anotaciones para reflejar los eventos que el complemento emite y escucha. - Modifique el constructor según sea necesario.
- Reemplace o quite el
videoView
lógica relacionada según sea necesario. - Modificar
initializeListeners()
agregando y / o restando detectores de eventos según sea necesario. - Compile y distribuya su complemento como .aar archivo para Android Studio.