Ü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:

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