概覽
在較高級別,插件通過偵聽和發出事件與播放器集成。插件可以偵聽來自播放器和其他插件的事件。插件可以為播放器和其他插件發出事件。
此內容以及示例代碼位於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
屬性,將在視頻視圖可見後發出。的ORIGINAL_EVENT
應該是PLAY
恢復播放的事件,CUE_POINT
繼續提示點處理的事件,或者COMPLETED
事件以完成播放。一種SKIP_CUE_POINTS
屬性應添加到ORIGINAL_EVENT
以防止遞歸提示點處理。
提示點
許多插件都想听CUE_POINT
事件。提示點分為三種類型,BEFORE
,POINT_IN_TIME
和AFTER
。BEFORE
提示點在播放開始之前發出。POINT_IN_TIME
當播放到達提示點的位置時會發出提示點。AFTER
播放完成後立即發出提示點。插件應使用WILL_INTERRUPT_CONTENT
和WILL_RESUME_CONTENT
事件在處理提示點事件時中斷並恢復內容播放。對於提示點之前和之後,事件將包括ORIGINAL_EVENT
屬性,具有PLAY
事件或COMPLETED
事件。提示點事件還包括CUE_POINTS
屬性和一批提示點。START_TIME
和END_TIME
屬性定義提示點時間範圍。
樣本目錄
的樣本目錄包括一個基於Android Studio的項目,其中包含兩個模塊:
- 樣品插件 -一個示例插件,可以用作編寫新插件的基礎。
- SamplePluginApplication -顯示如何將插件合併到Brightcove視頻應用程序中,以及如何將其用於測試SamplePlugin或新插件。
實施步驟
編寫插件的步驟包括:
- 將樣本插件複製到新的存儲庫。
- 更改包和類的名稱。
- 更新
TAG
初始化程序。 - 編輯
@Emits
和@ListensFor
註釋以反映插件發出和監聽的事件。 - 根據需要修改構造函數。
- 更換或卸下
videoView
相關邏輯。 - 修改
initializeListeners()
通過根據需要添加和/或減去事件偵聽器。 - 編譯並分發您的插件.aar Android Studio的文件。