Erstellen eines Plugins für das Native SDK für Android

In diesem Thema erfahren Sie, wie Sie ein Plugin für das Native SDK für Android erstellen können.

Überblick

Auf einer hohen Ebene integriert sich ein Plugin in den Player, indem es auf Ereignisse hört und diese ausgibt. Ein Plugin kann Ereignisse vom Player und von anderen Plugins abhören. Ein Plugin kann Ereignisse für den Player und für andere Plugins ausgeben.

Dieser Inhalt zusammen mit dem Beispielcode befindet sich unter https://github.com/BrightcoveOS/android-plugin-guide

Plugin-Architektur

Ein Plugin sollte sich beim SDK registrieren, wenn es instanziiert wird. Um ein Plugin zu registrieren sollte a . ausgeben REGISTER_PLUGIN Veranstaltung mit a PLUGIN_NAME Eigentum. Zum Beispiel:

Map<String, Object> properties = new HashMap<String, Object>();
properties.put(Event.PLUGIN_NAME, "my custom plugin");
eventEmitter.emit(EventType.REGISTER_PLUGIN, properties);

Die Videowiedergabe durchläuft normalerweise einen Standard-Lebenszyklus-Ereignisfluss:

Plugin-Ereignisablauf
Plugin-Ereignisablauf

Veranstaltungsdetails

Ein Plugin kann auf Ereignisse warten, die eine Aktion auslösen, um das Standardverhalten des Players zu ändern. Zu diesen Veranstaltungen gehören:

  • WILL_CHANGE_VIDEO
  • SET_VIDEO
  • SET_SOURCE
  • PLAY
  • PAUSE
  • SEEK_TO
  • STOP

Das Standardverhalten kann geändert werden, indem verhindert wird, dass die Standardlistener das Ereignis empfangen, und/oder indem die Weitergabe des Ereignisses an nicht standardmäßige Listener gestoppt wird. Das Verhindern, dass die Standard-Listener das Ereignis empfangen, wird durch Aufrufen der preventDefault() Methode. Die Ereignisausbreitung kann durch Aufrufen der stopPropagation() Methode. Wenn nur preventDefault() aufgerufen wird, werden die restlichen nicht standardmäßigen Listener benachrichtigt. Wenn nur stopPropagation() aufgerufen wird, werden die Standard-Listener weiterhin benachrichtigt, aber der Rest der Nicht-Standard-Listener wird übersprungen. Ein Plugin kann diese Methoden auch verwenden, um den normalen Ereignisfluss zu unterbrechen und zusätzliches Verhalten einzufügen, z. B. das Plugin zu initialisieren. Ein Plugin kann den Ereignisfluss fortsetzen, indem es das ursprüngliche Ereignis erneut ausgibt.

Ein Plugin kann auch auf Ereignisse warten, die den Abschluss einer Aktion signalisieren. Diese Ereignisse werden normalerweise von Analyse-Plugins verwendet. Zu den Veranstaltungen gehören:

  • DID_CHANGE_LIST
  • DID_SELECT_SOURCE
  • DID_PAUSE
  • DID_PLAY
  • DID_SEEK_TO
  • DID_SET_SOURCE
  • DID_STOP
  • PROGRESS
  • COMPLETED

Wiedergabe unterbrechen

Ein Plugin, das die Wiedergabe von Videoinhalten unterbrechen möchte, sollte verwenden WILL_INTERRUPT_CONTENT und WILL_RESUME_CONTENT. Diese Ereignisse werden typischerweise von Werbe-Plugins verwendet. Ein Plugin sollte ausgeben WILL_INTERRUPT_CONTENT zu verlangen, dass die Wiedergabe unterbrochen wird, falls sie gerade abgespielt wird, und zu verlangen, dass die Videoansicht unsichtbar gemacht wird. Ein Plugin sollte ausgeben WILL_RESUME_CONTENT zu verlangen, dass die Videoansicht wieder sichtbar gemacht wird. Die WILL_RESUME_CONTENT Veranstaltung sollte eine ORIGINAL_EVENT -Eigenschaft, die ausgegeben wird, nachdem die Videoansicht sichtbar gemacht wurde. Die ORIGINAL_EVENT sollte a . sein PLAY Ereignis, um die Wiedergabe fortzusetzen, a CUE_POINT Ereignis, um die Cue-Point-Verarbeitung fortzusetzen, oder a COMPLETED Ereignis, um die Wiedergabe abzuschließen. EIN SKIP_CUE_POINTS Eigenschaft sollte hinzugefügt werden ORIGINAL_EVENT um eine rekursive Cue-Point-Verarbeitung zu verhindern.

Cue-Punkte

Viele Plugins werden darauf hören wollen CUE_POINT Veranstaltungen. Es gibt drei Arten von Cue-Points, BEFORE , POINT_IN_TIME , und AFTER . BEFORE Cue-Punkte werden unmittelbar vor Beginn der Wiedergabe ausgegeben. POINT_IN_TIME Cue-Punkte werden ausgegeben, wenn die Wiedergabe die Position des Cue-Punkts erreicht. AFTER Cue-Punkte werden unmittelbar nach Abschluss der Wiedergabe ausgegeben. Ein Plugin sollte verwenden WILL_INTERRUPT_CONTENT und WILL_RESUME_CONTENT Ereignisse, um die Inhaltswiedergabe zu unterbrechen und fortzusetzen, wenn ein Cue-Point-Ereignis verarbeitet wird. Bei Vorher- und Nachher-Cue-Punkten beinhaltet das Ereignis eine ORIGINAL_EVENT Eigentum, entweder mit a PLAY Veranstaltung oder a COMPLETED Veranstaltung. Cue-Point-Events beinhalten auch a CUE_POINTS -Eigenschaft mit dem Stapel von Cue-Punkten. START_TIME und END_TIME Eigenschaften definieren den Cue-Point-Zeitbereich.

Beispielverzeichnis

Die Beispielverzeichnis enthält ein auf Android Studio basierendes Projekt mit zwei Modulen:

  • BeispielPlugin - Ein Beispiel-Plugin, das als Grundlage zum Schreiben neuer Plugins verwendet werden kann.
  • SamplePluginApplication - Zeigt, wie Plugins in eine Brightcove-Videoanwendung integriert werden und zum Testen des SamplePlugin oder neuer Plugins verwendet werden können.

Umsetzungsschritte

Die Schritte zum Schreiben eines Plugins umfassen:

  1. Kopieren Sie das Beispiel-Plugin in ein neues Repository.
  2. Ändern Sie die Paket- und Klassennamen.
  3. Aktualisieren Sie die TAG Initialisierer.
  4. Bearbeiten Sie die @Emits und @ListensFor Anmerkungen, um die Ereignisse widerzuspiegeln, die das Plugin ausgibt und auf die es lauscht.
  5. Ändern Sie den Konstruktor nach Bedarf.
  6. Ersetzen oder entfernen Sie die videoView zugehörige Logik nach Bedarf.
  7. Ändern initializeListeners() durch Hinzufügen und/oder Subtrahieren von Ereignis-Listenern nach Bedarf.
  8. Kompilieren und verteilen Sie Ihr Plugin als ein .aar Datei für Android Studio.