概要
高いレベルでは、プラグインはイベントをリッスンして放出することによって、プレーヤーと統合されます。プラグインは、プレーヤーや他のプラグインからのイベントをリッスンすることができます。プラグインは、プレーヤーや他のプラグインのイベントを放出することができます。
このコンテンツとサンプルコードについては 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_VIDEOSET_VIDEOSET_SOURCEPLAYPAUSESEEK_TOSTOP
デフォルトの動作を変更するには、デフォルトリスナーがイベントを受信できないようにしたり、デフォルト以外のリスナーへのイベントの伝播を停止したりします。デフォルトのリスナーがイベントを受信しないようにするには、preventDefault()メソッドを呼び出します。イベント伝播は、stopPropagation()メソッドを呼び出すことで停止できます。preventDefault()だけが呼び出された場合、デフォルト以外の残りのリスナーに通知されます。stopPropagation()だけが呼び出された場合、デフォルトのリスナーに通知されますが、デフォルト以外のリスナーの残りの部分はスキップされます。プラグインは、これらのメソッドを使用して、通常のイベントフローを一時停止し、プラグインの初期化などの追加の動作を挿入することもできます。プラグインは、元のイベントを再度放出することで、イベントフローを再開できます。
プラグインは、アクションの完了を通知するイベントをリッスンすることもできます。これらのイベントは、通常、分析プラグインによって使用されます。イベントには次のものがあります。
DID_CHANGE_LISTDID_SELECT_SOURCEDID_PAUSEDID_PLAYDID_SEEK_TODID_SET_SOURCEDID_STOPPROGRESSCOMPLETED
再生を中断する
ビデオコンテンツの再生を中断したいプラグインは、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多くのプラグインはイベントをリッスンしたいでしょう。キューポイントには、、BEFOREPOINT_IN_TIME、の3種類がありますAFTER。BEFOREキューポイントは、再生が始まる直前に放出されます。POINT_IN_TIMEキューポイントは、再生がキューポイントの位置に達したときに放出されます。AFTERキューポイントは、再生が完了した直後に放出されます。プラグインは使用する必要がありますWILL_INTERRUPT_CONTENTとWILL_RESUME_CONTENTキューポイントイベントを処理するときにコンテンツの再生を中断および再開するイベント。前と後のキューポイントの場合、ORIGINAL_EVENTPLAYイベントにはイベントまたはイベントを含むプロパティが含まれます。COMPLETEDイベント。キューポイントイベントには、CUE_POINTSキューポイントのバッチを持つプロパティ。START_TIMEそしてEND_TIMEプロパティは、キューポイントの時間範囲を定義します。
サンプルディレクトリ
サンプルディレクトリには、次の 2 つのモジュールを持つ Android Studio ベースのプロジェクトが含まれています。
- SamplePlugin -新しいプラグインを書くための基礎として使用することができるサンプルプラグイン、。
- SamplePluginApplication -プラグインが Brightcove 動画アプリケーションにどのように組み込まれ、SamplePlugin または新しいプラグインをテストするために使用できるかを示します。
実装手順
プラグインを書く手順は次のとおりです。
- サンプルプラグインを新しいリポジトリにコピーします。
- パッケージ名とクラス名を変更します。
TAGイニシャライザを更新します。- 編集する
@Emitsそして@ListensForプラグインが発行およびリッスンするイベントを反映するアノテーション。 - 必要に応じてコンストラクタを変更します。
- 必要に応じて、
videoView関連するロジックを置き換えるか削除します。 - 必要に応じて、イベントリスナーを追加または減算して変更します
initializeListeners()。 - Android Studio 用の.aar ファイルとしてプラグインをコンパイルして配布します。