本文提供AliPlayerKit主要介面的詳細說明,包括核心API、插槽系統、視頻源、播放器介面、狀態儲存、事件系統、日誌系統、預先載入介面、生命週期策略和策略系統。
AliPlayerKit為所有核心API(包括類和方法)提供了完善的代碼注釋。在Android Studio等IDE中,可通過懸停提示或Quick Documentation等功能查看相關說明,從而提升開發效率;同時,也使API對AI編程工具更加友好,有助於AI編程工具更好地理解API語義。
核心API
AliPlayerKit(全域介面)
AliPlayerKit是全域設定類,提供全域配置和初始化入口,是整個播放器架構的唯一全域入口。
初始化方法
方法 | 參數 | 傳回值 | 說明 |
| context: 應用上下文 | void | 初始化全域設定,應在Application.onCreate()中調用。 |
狀態查詢
方法 | 參數 | 傳回值 | 說明 |
| - | boolean | 檢查是否已初始化。 |
| - | Context | 擷取ApplicationContext。 |
| - | String | 擷取Kit版本號碼。 |
| - | String | 擷取底層SDK版本號碼。 |
| - | String | 擷取裝置ID。 |
配置方法
方法 | 參數 | 傳回值 | 說明 |
| enable:是否啟用 | void | 設定Debug模式。 |
| - | boolean | 檢查Debug模式是否啟用。 |
| enable:是否啟用 | void | 設定日誌面板顯示。 |
| - | boolean | 檢查日誌面板是否啟用。 |
| disable:是否禁止 | void | 設定是否禁止截屏。 |
| - | boolean | 檢查是否禁止截屏。 |
| viewType:檢視類型 | void | 設定播放器檢視類型。 |
| - | PlayerViewType | 擷取當前播放器檢視類型。 |
| callback:全域初始化回調 | void | 設定全域初始化配置回調,詳情請參見自訂配置 |
緩衝管理
方法 | 參數 | 傳回值 | 說明 |
| - | void | 清除播放器緩衝 |
全域API
方法 | 參數 | 傳回值 | 說明 |
| - | IPlayerLogger | 擷取全域日誌執行個體。 |
| - | IPlayerPreloader | 擷取全域預先載入執行個體。 |
| logger: 日誌執行個體 | void | 設定自訂日誌實現。 |
| preloader: 預先載入執行個體 | void | 設定自訂預先載入實現。 |
AliPlayerView(View - 視圖組件)
AliPlayerView是核心的播放器視圖組件,負責UI展示和插槽管理。作為MVC架構中的View層,它負責渲染播放器介面並管理UI組件。
控制器綁定
方法 | 參數 | 傳回值 | 說明 |
| controller | void | 綁定控制器(自動使用預設插槽) |
| - | void | 解除綁定 UI,僅解除視圖與控制器的關聯 |
生命週期
方法 | 參數 | 傳回值 | 說明 |
| lifecycleOwner | boolean | 綁定生命週期。 |
其他方法
方法 | 參數 | 傳回值 | 說明 |
| - | boolean | 處理返回鍵事件,返回 true 表示已處理。 |
| - | SlotManager | 擷取插槽管理器。 |
AliPlayerController(Controller - 控制器)
AliPlayerController是播放控制器,負責播放邏輯和狀態管理。作為MVC架構中的Controller層,它協調View和Model之間的互動。
構造方法
方法 | 參數 | 說明 |
| context: 應用上下文 | 建立控制器(使用預設生命週期策略)。 |
| context, lifecycleStrategy | 建立控制器(自訂生命週期策略)。 |
配置與初始化
方法 | 參數 | 傳回值 | 說明 |
| model: 播放資料 | void | 配置播放資料。 |
| - | AliPlayerModel | 擷取當前播放資料配置。 |
| - | IMediaPlayer | 擷取播放器執行個體。 |
| - | void | 銷毀播放器。 |
狀態管理
方法 | 參數 | 傳回值 | 說明 |
| - | IPlayerStateStore | 擷取播放器狀態儲存。 |
| - | StrategyManager | 擷取策略管理器。 |
視圖設定
方法 | 參數 | 傳回值 | 說明 |
| displayView | void | 設定播放器顯示視圖。 |
| surface | void | 設定播放器 Surface。 |
| - | void | 通知Surface已變化。 |
生命週期方法
方法 | 參數 | 傳回值 | 說明 |
| - | void | 手動處理恢複(非 LifecycleOwner 情境)。 |
| - | void | 手動處理暫停(非 LifecycleOwner 情境)。 |
AliPlayerModel(Model - 資料模型)
AliPlayerModel是播放器資料模型,封裝播放配置資料。作為MVC架構中的Model層,它封裝了播放器所需的所有配置資料。採用Builder模式建立執行個體。
Builder方法
方法 | 參數 | 說明 |
| 視頻來源物件 | 設定視頻資源(必填)。 |
| 情境類型 | 設定播放情境類型。 |
| 封面圖 URL | 設定封面圖地址。 |
| 視頻標題 | 設定視頻標題。 |
| 是否自動播放 | 設定是否自動播放。 |
| 跟蹤 ID | 設定跟蹤標識。 |
| 起播位置 | 設定起播位置(毫秒)。 |
| 是否硬體解碼 | 設定是否硬體解碼。 |
| 是否允許休眠 | 設定是否允許螢幕休眠。 |
| 執行個體配置回調 | 設定執行個體級播放器配置回調(可選),詳情請參見自訂配置。 |
| - | 構建 AliPlayerModel 執行個體。 |
屬性擷取方法
方法 | 傳回值 | 說明 |
| VideoSource | 擷取視頻資來源物件。 |
| int | 擷取播放情境類型。 |
| String | 擷取封面圖地址。 |
| String | 擷取視頻標題。 |
| boolean | 擷取是否自動播放。 |
| String | 擷取跟蹤 ID。 |
| long | 擷取起播位置。 |
| boolean | 擷取是否硬體解碼。 |
| boolean | 擷取是否允許螢幕休眠。 |
插槽系統
插槽系統是AliPlayerKit的UI擴充機制,允許開發人員自訂播放器的各個UI組件。
SlotManager(插槽管理介面)
SlotManager 是插槽系統的統一入口,提供插槽的註冊、可見度控制和管理能力,通過 AliPlayerView.getSlotManager() 擷取。
註冊方法
方法 | 參數 | 說明 |
| type, builder | 註冊插槽構建器(lambda 形式,覆蓋預設實現) |
| type, slotClass | 通過反射註冊插槽類 |
| type, layoutId | 通過布局資源 ID 註冊插槽 |
| type, builder | 註冊自訂插槽類型 |
| type | 登出插槽,返回被移除的構建器 |
| type | 查詢插槽類型是否登入 |
可見度控制方法
方法 | 參數 | 說明 |
| type: 插槽類型 | 隱藏整個插槽 |
| type: 插槽類型 | 顯示之前隱藏的插槽 |
| type, elementKeys | 隱藏插槽內特定元素 |
| type, elementKeys | 顯示插槽內之前隱藏的元素 |
| type, elementKeys | 設定插槽的隱藏元素集合(覆蓋式) |
| map | 大量設定多個插槽的隱藏元素 |
管理方法
方法 | 參數 | 傳回值 | 說明 |
| - | void | 清除所有登入的插槽(從空白開始) |
| - | void | 重建所有插槽 |
| slotType: 插槽類型 | View | 擷取指定類型的插槽視圖 |
| sceneType: 情境類型 | void | 更新情境類型並重建插槽 |
ISlot(插槽介面)
自訂插槽需實現 ISlot 介面,定義插槽的生命週期。
方法 | 說明 |
| 插槽被附加到宿主時調用。 |
| 插槽從宿主分離時調用。 |
| 播放資料繫結時調用。 |
| 播放資料解除綁定時調用。 |
推薦繼承 BaseSlot 來實現自訂插槽,架構會自動管理事件訂閱生命週期。
SlotType(插槽類型)
常量 | 說明 |
| 播放 Surface 視圖插槽:用於顯示播放器視頻內容的核心視圖。 |
| 全屏管理插槽:負責管理播放器的全屏切換邏輯。 |
| 手勢控制插槽:用於處理播放器手勢控制(單擊、雙擊、長按、拖動等)。 |
| 橫屏觀看提示插槽:提示使用者全屏觀看橫屏視頻。 |
| 封面圖插槽:用於顯示視頻封面圖。 |
| 中心顯示插槽:用於顯示中心地區的狀態資訊(如倍速、亮度、音量等)。 |
| 播放狀態插槽:用於顯示播放狀態(如錯誤提示、載入中等)。 |
| 日誌面板插槽:用於顯示播放器日誌資訊,便於調試。 |
| 頂部控制欄插槽:顯示返回按鈕、標題、設定等。 |
| 底部控制欄插槽:顯示播放控制、進度條、全屏切換等。 |
| 設定菜單插槽:用於顯示設定菜單(如倍速、清晰度、鏡像、旋轉等)。 |
| 選項面板插槽:用於橫屏情境下顯示倍速/清晰度等選項的獨立選擇面板。 |
SceneType(播放情境)
常量 | 值 | 說明 |
| 0 | 點播情境:常規視頻播放,支援所有播放控制功能。 |
| 1 | 直播情境:即時直播流播放,不支援進度拖拽、倍速等。 |
| 2 | 列表播放情境:視頻列表中的播放器,禁用垂直手勢。 |
| 3 | 受限播放情境:限制時間軸操作,適用於教育培訓等。 |
| 4 | 最小化播放情境:僅播放視圖,無任何 UI。 |
PlayerViewType(播放器檢視類型)
常量 | 說明 |
| AliDisplayView(推薦):官方顯示視圖組件,相容性和效能更優。 |
| SurfaceView:獨立渲染線程,不支援動畫。 |
| TextureView:支援動畫和變換,適合需要視圖動畫的情境。 |
視頻源
VideoSourceFactory(視頻源工廠)
方法 | 參數 | 傳回值 | 說明 |
| vid, playAuth | VideoSource | 建立VidAuth視頻源(推薦)。 |
| vid, accessKeyId, accessKeySecret, securityToken, region | VideoSource | 建立VidSts視頻源。 |
| url: 視頻 URL | VideoSource | 建立URL視頻源。 |
生產環境建議使用VidAuth方式。該方式安全性更高,並可結合阿里雲VOD服務實現端雲協同,提供更豐富的播放能力。詳見多視頻源支援文檔。
VideoSource(視頻源)
方法 | 傳回值 | 說明 |
| boolean | 檢查視頻源是否有效。 |
| int | 擷取視頻源類型。 |
| String | 擷取視頻源 ID。 |
播放器介面
IMediaPlayer(媒體播放器介面)
IMediaPlayer定義了播放器的核心操作介面,通過AliPlayerController.getPlayer()擷取。
播放控制
方法 | 參數 | 說明 |
| - | 開始播放。 |
| - | 暫停播放。 |
| - | 播放/暫停切換。 |
| - | 停止播放。 |
| - | 重播。 |
| positionMs | 跳轉到指定位置(毫秒)。 |
| - | 釋放播放器資源。 |
資料來源
方法 | 參數 | 說明 |
| model | 設定視頻資料來源。 |
視圖設定
方法 | 參數 | 說明 |
| displayView | 設定顯示視圖。 |
| surface | 設定渲染 Surface。 |
| - | 通知 Surface 已變化。 |
播放設定
方法 | 參數 | 說明 |
| speed | 設定播放速度(0.3 ~ 3.0)。 |
| loop | 設定迴圈播放。 |
| mute | 設定靜音。 |
| scaleType | 設定渲染填充模式。 |
| mirrorType | 設定鏡像模式。 |
| rotation | 設定旋轉角度。 |
| trackQuality | 選擇清晰度。 |
| - | 截圖。 |
狀態查詢
方法 | 傳回值 | 說明 |
| String | 擷取播放器唯一標識 |
| IPlayerStateStore | 擷取狀態儲存介面 |
| T | 擷取底層原生播放器執行個體,用於在 |
ScaleType(渲染填充模式)
常量 | 值 | 說明 |
| 0 | 展開填充視圖。 |
| 1 | 等比完整顯示(可能留黑邊)。 |
| 2 | 等比填充(可能裁剪)。 |
MirrorType(鏡像模式)
常量 | 值 | 說明 |
| 0 | 無鏡像 |
| 1 | 水平鏡像 |
| 2 | 垂直鏡像 |
Rotation(旋轉角度)
常量 | 值 | 說明 |
| 0 | 0度。 |
| 90 | 90度。 |
| 180 | 180度。 |
| 270 | 270度。 |
狀態儲存介面
IPlayerStateStore(播放器狀態儲存)
IPlayerStateStore 提供播放器狀態的唯讀訪問,通過 AliPlayerController.getStateStore() 或 IMediaPlayer.getStateStore() 擷取。
播放狀態
方法 | 傳回值 | 說明 |
| PlayerState | 擷取當前播放狀態。 |
| long | 擷取視頻總時間長度(毫秒)。 |
| long | 擷取當前播放位置(毫秒)。 |
| float | 擷取當前播放速度。 |
視頻設定
方法 | 傳回值 | 說明 |
| VideoSize | 擷取視頻尺寸(可能為 null)。 |
| int | 擷取當前旋轉角度。 |
| int | 擷取當前填充模式。 |
| int | 擷取當前鏡像模式。 |
播放設定
方法 | 傳回值 | 說明 |
| boolean | 是否迴圈播放。 |
| boolean | 是否靜音。 |
| boolean | 是否全屏。 |
清晰度
方法 | 傳回值 | 說明 |
| List | 擷取清晰度列表。 |
| int | 擷取當前清晰度索引。 |
PlayerState(播放狀態)
常量 | 說明 |
| 未知狀態:播放器狀態未知或未初始化。 |
| 空閑狀態:播放器已建立但尚未初始化,或已釋放資源。 |
| 初始化中:播放器正在初始化,準備載入視頻資源。 |
| 已初始化:播放器已完成初始化,但尚未準備播放。 |
| 準備中:播放器正在準備視頻資源,解析視頻資訊。 |
| 已準備:播放器已完成準備,可以開始播放。 |
| 播放中:播放器現正播放視頻。 |
| 暫停:播放器已暫停播放。 |
| 播放完成:視頻播放已完成。 |
| 停止:播放器已停止播放。 |
| 錯誤:播放器發生錯誤。 |
事件系統
PlayerEventBus(事件匯流排)
PlayerEventBus是全域事件匯流排,用於播放器事件的發布和訂閱。
訂閱者法
方法 | 參數 | 說明 |
| eventType, listener | 訂閱指定類型事件。 |
| eventType, listener | 取消訂閱指定事件。 |
| listener | 取消該監聽器的所有訂閱。 |
| - | 清除所有訂閱(謹慎使用)。 |
發布方法
方法 | 參數 | 說明 |
| event | 發布事件 |
查詢方法
方法 | 傳回值 | 說明 |
| int | 擷取指定事件類型的訂閱者數量。 |
| boolean | 檢查是否有訂閱者。 |
PlayerCommand(播放命令)
播放命令用於控制播放器行為,通過PlayerEventBus.post()發布。
命令類 | 參數 | 說明 |
| playerId | 播放命令。 |
| playerId | 暫停命令。 |
| playerId | 播放/暫停切換。 |
| playerId | 停止命令。 |
| playerId | 重播命令。 |
| playerId, position | 跳轉命令(position 單位:毫秒)。 |
| playerId, speed | 設定播放速度(0.3 ~ 3.0)。 |
| playerId | 截圖命令。 |
| playerId, loop | 設定迴圈播放。 |
| playerId, mute | 設定靜音。 |
| playerId, scaleType | 設定渲染填充模式。 |
| playerId, mirrorType | 設定鏡像模式。 |
| playerId, rotation | 設定旋轉角度。 |
| playerId, trackQuality | 切換清晰度。 |
使用樣本
// 發布播放命令
PlayerEventBus.getInstance().post(new PlayerCommand.Play(playerId));
// 發布跳轉命令
PlayerEventBus.getInstance().post(new PlayerCommand.Seek(playerId, 5000));
// 設定播放速度
PlayerEventBus.getInstance().post(new PlayerCommand.SetSpeed(playerId, 1.5f)); PlayerEvents(播放事件)
播放器狀態變化會通過事件發布,可訂閱監聽。
事件類別 | 屬性 | 說明 |
| oldState, newState | 播放狀態變化。 |
| duration | 播放器準備完成。 |
| - | 首幀渲染完成。 |
| width, height | 視頻尺寸變化。 |
| duration, currentPosition, bufferedPosition | 播放資訊更新。 |
| errorCode, errorMsg | 錯誤事件。 |
| - | 開始載入。 |
| percent, netSpeed | 載入進度。 |
| - | 載入結束。 |
| speed | 設定速度完成。 |
| result, snapshotPath, width, height | 截圖完成。 |
| loop | 設定迴圈完成。 |
| mute | 設定靜音完成。 |
| scaleType | 設定填充模式完成。 |
| mirrorType | 設定鏡像完成。 |
| rotation | 設定旋轉完成。 |
| trackQualityList | 清晰度列表更新。 |
| trackIndex | 清晰度選擇完成。 |
使用樣本
// 訂閱播放事件
PlayerEventBus.getInstance().subscribe(PlayerEvents.Prepared.class, event -> {
long duration = event.duration; // 視頻總時間長度
});
// 訂閱錯誤事件
PlayerEventBus.getInstance().subscribe(PlayerEvents.Error.class, event -> {
int code = event.errorCode;
String msg = event.errorMsg;
}); 日誌系統
IPlayerLogger(日誌介面)
IPlayerLogger提供全域日誌配置能力,通過AliPlayerKit.getLogger()擷取。
方法 | 參數 | 傳回值 | 說明 |
| enable | void | 啟用/禁用控制台日誌。 |
| - | boolean | 檢查控制台日誌是否啟用。 |
| level | void | 設定記錄層級。 |
| - | int | 擷取當前記錄層級。 |
| callback | void | 設定日誌回調監聽器。 |
LogLevel(記錄層級)
常量 | 值 | 說明 |
| 0 | 最詳細資訊層級,輸出所有調試資訊。 |
| 1 | 調試層級。 |
| 2 | 資訊層級。 |
| 3 | 警告層級。 |
| 4 | 錯誤層級。 |
| 100 | 禁用所有日誌。 |
預先載入介面
IPlayerPreloader(預先載入介面)
IPlayerPreloader提供全域預先載入管理能力,通過AliPlayerKit.getPreloader()擷取。
方法 | 參數 | 傳回值 | 說明 |
| task, listener | String | 添加預先載入任務,返回任務 ID。 |
| taskId | void | 取消指定任務。 |
| taskId | void | 暫停指定任務。 |
| taskId | void | 恢複指定任務。 |
PreloadCallback(預先載入回調)
方法 | 參數 | 說明 |
| taskId, source | 預先載入完成。 |
| taskId, source, code, message | 預先載入錯誤。 |
| taskId, source | 預先載入取消。 |
播放器生命週期策略
IPlayerLifecycleStrategy(播放器生命週期策略介面)
IPlayerLifecycleStrategy定義播放器執行個體的生命週期管理原則,用於最佳化播放器執行個體的建立和複用。
方法 | 參數 | 傳回值 | 說明 |
| factory | void | 初始化策略。 |
| context, uniqueId | IMediaPlayer | 擷取播放器執行個體。 |
| player, uniqueId, force | void | 回收播放器執行個體。 |
| - | void | 清空所有資源。 |
| context, count | void | 預先載入播放器執行個體。 |
內建策略
策略類 | 說明 |
| 預設策略:每次建立新執行個體,用完立即銷毀。 |
| 複用池策略:適合列表流式播放。 |
| ID 繫結原則:ID 與執行個體一一對應。 |
| 單例策略:全域唯一執行個體。 |
詳見播放器生命週期策略文檔。
策略系統
StrategyManager(策略管理器)
StrategyManager負責管理所有策略的生命週期,通過AliPlayerController.getStrategyManager()擷取。
方法 | 參數 | 傳回值 | 說明 |
| strategy | void | 註冊策略 |
| strategy | void | 登出策略 |
| name | IStrategy | 根據名稱擷取策略 |
| context | void | 啟動所有策略 |
| - | void | 停止所有策略 |
| - | void | 重設所有策略 |
| context | void | 更新上下文並重啟策略 |
| - | void | 銷毀管理器 |
| - | int | 擷取策略數量 |
| - | boolean | 檢查是否已啟動 |
IStrategy(策略介面)
方法 | 說明 |
| 擷取策略名稱稱。 |
| 策略啟動時調用。 |
| 策略停止時調用。 |
| 策略重設時調用。 |
自訂配置
OnGlobalInitCallback(全域初始化配置回調)
全域初始化配置回調介面,在 AliPlayerKit.init() 完成後觸發,僅執行一次。
方法 | 說明 |
| 全域初始化完成後的配置回調 |
註冊方式:AliPlayerKit.setOnGlobalInit(OnGlobalInitCallback callback)
OnPlayerConfigCallback(執行個體級播放器配置回調)
執行個體級播放器配置回調介面,在 configure() 中 setDataSource() 之後觸發。
方法 | 參數 | 說明 |
| player - 播放器執行個體 |
|
註冊方式:AliPlayerModel.Builder.onPlayerConfig(OnPlayerConfigCallback callback)
詳情請參見自訂配置。