Creación de un complemento para Native SDK para Android

En este tema, aprenderá a crear un complemento para Native SDK para Android.

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:

Flujo de eventos de complemento
Flujo de eventos de complemento

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:

  1. Copie el complemento de muestra en un nuevo repositorio.
  2. Cambie el paquete y los nombres de la clase.
  3. Actualizar el TAG inicializador.
  4. Edite el @Emits y @ListensFor anotaciones para reflejar los eventos que el complemento emite y escucha.
  5. Modifique el constructor según sea necesario.
  6. Reemplace o quite el videoView lógica relacionada según sea necesario.
  7. Modificar initializeListeners() agregando y / o restando detectores de eventos según sea necesario.
  8. Compile y distribuya su complemento como .aar archivo para Android Studio.