概要
高いレベルでは、プラグインはイベントをリッスンして放出することによって、プレーヤーと統合されます。プラグインは、プレーヤーや他のプラグインからのイベントをリッスンすることができます。プラグインは、プレーヤーや他のプラグインのイベントを放出することができます。
このコンテンツとサンプルコードについては https://github.com/BrightcoveOS/android-plugin-guide
プラグインアーキテクチャ
プラグインは、インスタンス化されたときに SDK に登録する必要があります。プラグインを登録するには、REGISTER_PLUGIN
とのイベントPLUGIN_NAME
プロパティ。例は次のとおりです。
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(Event.PLUGIN_NAME, "my custom plugin");
eventEmitter.emit(EventType.REGISTER_PLUGIN, properties);
ビデオの再生は、通常、標準のライフサイクルイベントフローを経由します。
イベントの詳細
プラグインは、プレイヤーのデフォルトの動作を変更するために、いくつかのアクションを開始するイベントをリッスンすることができます。これらのイベントには次のものがあります。
WILL_CHANGE_VIDEO
SET_VIDEO
SET_SOURCE
PLAY
PAUSE
SEEK_TO
STOP
デフォルトの動作を変更するには、デフォルトリスナーがイベントを受信できないようにしたり、デフォルト以外のリスナーへのイベントの伝播を停止したりします。デフォルトのリスナーがイベントを受信しないようにするには、preventDefault()
メソッドを呼び出します。イベント伝播は、stopPropagation()
メソッドを呼び出すことで停止できます。preventDefault()
だけが呼び出された場合、デフォルト以外の残りのリスナーに通知されます。stopPropagation()
だけが呼び出された場合、デフォルトのリスナーに通知されますが、デフォルト以外のリスナーの残りの部分はスキップされます。プラグインは、これらのメソッドを使用して、通常のイベントフローを一時停止し、プラグインの初期化などの追加の動作を挿入することもできます。プラグインは、元のイベントを再度放出することで、イベントフローを再開できます。
プラグインは、アクションの完了を通知するイベントをリッスンすることもできます。これらのイベントは、通常、分析プラグインによって使用されます。イベントには次のものがあります。
DID_CHANGE_LIST
DID_SELECT_SOURCE
DID_PAUSE
DID_PLAY
DID_SEEK_TO
DID_SET_SOURCE
DID_STOP
PROGRESS
COMPLETED
再生を中断する
ビデオコンテンツの再生を中断したいプラグインは、WILL_INTERRUPT_CONTENT
とを使用する必要がありますWILL_RESUME_CONTENT
。これらのイベントは、通常、広告プラグインで使用されます。プラグインは、WILL_INTERRUPT_CONTENT
再生を中断し、現在再生中の場合は再生を停止し、ビデオビューを非表示にすることを要求するために放出する必要があります。プラグインは、WILL_RESUME_CONTENT
ビデオビューを再び表示するように要求するために放出する必要があります。WILL_RESUME_CONTENT
イベントには、ORIGINAL_EVENT
ビデオビューが表示されるようにした後に放出されるプロパティを含める必要があります。NS ORIGINAL_EVENT
する必要がありますPLAY
再生を再開するイベント、CUE_POINT
キューポイント処理を続行するイベント、またはCOMPLETED
再生を完了するためのイベント。NS SKIP_CUE_POINTS
プロパティをに追加する必要がありますORIGINAL_EVENT
再帰的なキューポイント処理を防ぐため。
キューポイント
CUE_POINT
多くのプラグインはイベントをリッスンしたいでしょう。キューポイントには、、BEFORE
POINT_IN_TIME
、の3種類がありますAFTER
。BEFORE
キューポイントは、再生が始まる直前に放出されます。POINT_IN_TIME
キューポイントは、再生がキューポイントの位置に達したときに放出されます。AFTER
キューポイントは、再生が完了した直後に放出されます。プラグインは使用する必要がありますWILL_INTERRUPT_CONTENT
とWILL_RESUME_CONTENT
キューポイントイベントを処理するときにコンテンツの再生を中断および再開するイベント。前と後のキューポイントの場合、ORIGINAL_EVENT
PLAY
イベントにはイベントまたはイベントを含むプロパティが含まれます。COMPLETED
イベント。キューポイントイベントには、CUE_POINTS
キューポイントのバッチを持つプロパティ。START_TIME
そしてEND_TIME
プロパティは、キューポイントの時間範囲を定義します。
サンプルディレクトリ
サンプルディレクトリには、次の 2 つのモジュールを持つ Android Studio ベースのプロジェクトが含まれています。
- SamplePlugin -新しいプラグインを書くための基礎として使用することができるサンプルプラグイン、。
- SamplePluginApplication -プラグインが Brightcove 動画アプリケーションにどのように組み込まれ、SamplePlugin または新しいプラグインをテストするために使用できるかを示します。
実装手順
プラグインを書く手順は次のとおりです。
- サンプルプラグインを新しいリポジトリにコピーします。
- パッケージ名とクラス名を変更します。
TAG
イニシャライザを更新します。- 編集する
@Emits
そして@ListensFor
プラグインが発行およびリッスンするイベントを反映するアノテーション。 - 必要に応じてコンストラクタを変更します。
- 必要に応じて、
videoView
関連するロジックを置き換えるか削除します。 - 必要に応じて、イベントリスナーを追加または減算して変更します
initializeListeners()
。 - Android Studio 用の.aar ファイルとしてプラグインをコンパイルして配布します。