このトピックでは、AliPlayerKit の主要な API について説明します。コア API、スロットシステム、ビデオソース、プレーヤーインターフェイス、状態ストレージ、イベントシステム、ロギングシステム、プリロードインターフェイス、ライフサイクルポリシー、ストラテジーシステムについて説明します。
AliPlayerKit は、すべてのコア API (クラスとメソッドを含む) に完全なコードコメントを提供します。Android Studio などの IDE では、ホバーヒントやクイックドキュメント機能を使用してこれらのコメントを表示し、開発効率を向上させることができます。これらのコメントにより、AI プログラミングツールが API にアクセスしやすくなり、API のセマンティクスをより深く理解できるようになります。
コア API
AliPlayerKit (グローバルインターフェイス)
AliPlayerKit クラスは、グローバルな構成と初期化を提供します。これは、プレーヤーフレームワーク全体で唯一のグローバルエントリーポイントです。
初期化メソッド
メソッド | パラメーター | 戻り値 | 説明 |
| context:アプリケーションコンテキスト | void | グローバル設定を初期化します。このメソッドは Application.onCreate() で呼び出します。 |
ステータスクエリ
メソッド | パラメーター | 戻り値 | 説明 |
| - | boolean | 初期化が完了したかどうかを確認します。 |
| - | Context | アプリケーションコンテキストを取得します。 |
| - | String | キットのバージョン番号を取得します。 |
| - | String | 基盤となる SDK のバージョン番号を取得します。 |
| - | String | デバイス ID を取得します。 |
構成メソッド
メソッド | パラメーター | 戻り値 | 説明 |
| enable:特徴を有効にするかどうかを指定します。 | void | デバッグモードを有効または無効にします。 |
| - | boolean | デバッグモードが有効かどうかを確認します。 |
| enable:有効にするには true に設定します | void | ログパネルを表示または非表示にします。 |
| - | boolean | ログパネルが有効かどうかを確認します。 |
| disable:特徴を無効にするかどうかを指定します。 | void | スナップショットを有効または無効にします。 |
| - | boolean | スナップショットが無効かどうかを確認します。 |
| viewType:ビュータイプ | void | プレーヤービュータイプを設定します。 |
| - | PlayerViewType | 現在のプレーヤービュータイプを取得します。 |
キャッシュ管理
メソッド | パラメーター | 戻り値 | 説明 |
| - | void | プレーヤーのキャッシュをクリアします。 |
グローバル API
メソッド | パラメーター | 戻り値 | 説明 |
| - | IPlayerLogger | グローバルロガーインスタンスを取得します。 |
| - | IPlayerPreloader | グローバルプリローダーインスタンスを取得します。 |
| logger:ロガーインスタンス | void | カスタムロガー実装を設定します。 |
| preloader:プリローダーインスタンス | void | カスタムプリローダー実装を設定します。 |
AliPlayerView (ビューコンポーネント)
AliPlayerView クラスは、コアプレーヤーのビューコンポーネントです。UI レンダリングとスロット管理を処理します。MVC アーキテクチャのビューレイヤーとして、プレーヤー UI をレンダリングし、UI コンポーネントを管理します。
コントローラーのバインド
メソッド | パラメーター | 戻り値 | 説明 |
| controller, model | void | デフォルト UI を使用してコントローラーとデータをバインドします。 |
| controller, model, registry | void | カスタム UI を使用してコントローラーとデータをバインドします。 |
| - | void | バインドを解除し、リソースを解放します。 |
ライフサイクル
メソッド | パラメーター | 戻り値 | 説明 |
| lifecycleOwner | boolean | ライフサイクルをバインドします。 |
その他のメソッド
メソッド | パラメーター | 戻り値 | 説明 |
| - | boolean | 戻るボタンの押下を処理します。処理された場合は true を返します。 |
| - | ISlotManager | スロットマネージャーを取得します。 |
AliPlayerController (コントローラー)
AliPlayerController クラスは、再生ロジックと状態管理をコントロールします。MVC アーキテクチャのコントローラーレイヤーとして、ビューレイヤーとモデルレイヤー間のインタラクションを調整します。
コンストラクター
メソッド | パラメーター | 説明 |
| context:アプリケーションコンテキスト | デフォルトのライフサイクルポリシーを使用してコントローラーを作成します。 |
| context, lifecycleStrategy | カスタムのライフサイクルポリシーを使用してコントローラーを作成します。 |
構成と初期化
メソッド | パラメーター | 戻り値 | 説明 |
| model:再生データ | void | 再生データを構成します。 |
| - | AliPlayerModel | 現在の再生データ構成を取得します。 |
| - | IMediaPlayer | プレーヤーインスタンスを取得します。 |
| - | void | プレーヤーを削除します。 |
状態管理
メソッド | パラメーター | 戻り値 | 説明 |
| - | IPlayerStateStore | プレーヤー状態ストアを取得します。 |
| - | StrategyManager | ストラテジーマネージャーを取得します。 |
ビュー設定
メソッド | パラメーター | 戻り値 | 説明 |
| displayView | void | ディスプレイビューを設定します。 |
| surface | void | Surface を設定します。 |
| - | void | Surface が変更されたことを通知します。 |
ライフサイクルメソッド
メソッド | パラメーター | 戻り値 | 説明 |
| - | void | LifecycleOwner コンテキスト外で手動で再生を再開します。 |
| - | void | LifecycleOwner コンテキスト外で手動で再生を一時停止します。 |
AliPlayerModel (データモデル)
AliPlayerModel クラスは、再生構成データをカプセル化します。MVC アーキテクチャのモデルレイヤーとして、プレーヤーに必要なすべての構成データを保持します。インスタンスの作成にはビルダーパターンを使用します。
ビルダーメソッド
メソッド | パラメーター | 説明 |
| ビデオソースオブジェクト | ビデオソースを設定します。必須です。 |
| シーンタイプ | 再生シーンタイプを設定します。 |
| サムネイル URL | サムネイル URL を設定します。 |
| ビデオタイトル | ビデオタイトルを設定します。 |
| 自動再生 | 自動再生を有効にするかどうかを設定します。 |
| トレース ID | トレース ID を設定します。 |
| 開始位置 | 開始位置をミリ秒単位で設定します。 |
| ハードウェアデコードが有効か? | ハードウェアデコードを有効にするかどうかを設定します。 |
| 休止状態はサポートされているか? | 画面スリープを許可するかどうかを設定します。 |
| - | AliPlayerModel インスタンスをビルドします。 |
プロパティアクセサー
メソッド | 戻り値 | 説明 |
| VideoSource | ビデオソースオブジェクトを取得します。 |
| int | 再生シーンタイプを取得します。 |
| String | サムネイル URL を取得します。 |
| String | ビデオタイトルを取得します。 |
| boolean | 自動再生が有効かどうかを取得します。 |
| String | トレース ID を取得します。 |
| long | 開始位置を取得します。 |
| boolean | ハードウェアデコードが有効かどうかを取得します。 |
| boolean | 画面スリープが許可されているかどうかを取得します。 |
スロットシステム
スロットシステムは、AliPlayerKit の UI 拡張メカニズムです。これにより、プレーヤーの個々の UI コンポーネントをカスタマイズできます。
ISlotManager (スロット管理インターフェイス)
ISlotManager インターフェイスは、スロット管理機能を提供します。AliPlayerView.getSlotManager() から取得します。
メソッド
パラメーター
戻り値
説明
rebuildSlots()-
void
SlotRegistry を変更した後、すべてのスロットを再ビルドします。
getSlotView(SlotType)slotType:スロットタイプ
View
指定されたタイプのスロットビューを取得します。
bindData(AliPlayerModel)model:再生データ
void
再生データをスロットシステムにバインドします。
unbindData()-
void
再生データのバインドを解除します。
updateSceneType(int)sceneType:シーンタイプ
void
シーンタイプを更新し、スロットを再ビルドします。
SlotRegistry (スロットレジストリ)
SlotRegistry クラスは、カスタムスロットを登録します。これを AliPlayerView.attach() に渡します。
登録メソッド
メソッド | パラメーター | 説明 |
| type, builder | スロットビルダーを登録します。 |
| type, slotClass | スロットクラスを登録します。クラスはリフレクションを使用して作成されます。 |
| type, layoutId | レイアウトリソースをスロットとして登録します。 |
管理メソッド
メソッド | 戻り値 | 説明 |
| SlotBuilder | スロットビルダーの登録を解除します。 |
| boolean | 登録されているかどうかを確認できます。 |
| void | すべての登録をクリアします。 |
| int | 登録されているスロットの数を取得します。 |
ISlot (スロットインターフェイス)
カスタムスロットは、そのライフサイクルを定義するために ISlot インターフェイスを実装する必要があります。
メソッド | 説明 |
| スロットがホストにアタッチされたときに呼び出されます。 |
| スロットがホストからデタッチされたときに呼び出されます。 |
| 再生データがバインドされたときに呼び出されます。 |
| 再生データのバインドが解除されたときに呼び出されます。 |
カスタムスロットを実装するには、BaseSlot を拡張することを推奨します。フレームワークはイベントサブスクリプションのライフサイクルを自動的に管理します。
SlotType (スロットタイプ)
定数 | 説明 |
| プレーヤーサーフェスビュースロット:ビデオコンテンツのレンダリングに使用されるコアビューです。 |
| フルスクリーン管理スロット:フルスクリーン切り替えロジックを管理します。 |
| ジェスチャーコントロールスロット:タップ、ダブルタップ、長押し、ドラッグなどのジェスチャーコントロールを処理します。 |
| 横向き視聴ヒントスロット:ユーザーに横向きビデオをフルスクリーンで視聴するように促します。 |
| カバー画像スロット:ビデオのカバー画像を表示します。 |
| 中央表示スロット:再生速度、輝度、ボリュームなど、中央エリアにステータス情報を表示します。 |
| 再生状態スロット:エラーメッセージや読み込みインジケーターなどの再生状態情報を表示します。 |
| ログパネルスロット:デバッグ用にプレーヤーのログ情報を表示します。 |
| 上部コントロールバー:戻るボタン、タイトル、設定を表示します。 |
| 下部コントロールバー:再生コントロール、プログレスバー、フルスクリーン切り替えを表示します。 |
| 設定メニュースロット:再生速度、解像度、ミラーリング、回転オプションなどの設定メニューを表示します。 |
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 メソッドを使用してください。セキュリティが向上し、Alibaba Cloud 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 | 状態ストアインターフェイスを取得します。 |
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 | シークコマンド。位置はミリ秒単位です。 |
| 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 スコープポリシー:1 つのインスタンスを 1 つの ID にバインドします。 |
| シングルトンポリシー:グローバルインスタンスは 1 つだけです。 |
詳細については、「プレーヤーライフサイクルポリシー」をご参照ください。
ストラテジーシステム
StrategyManager (ストラテジーマネージャー)
StrategyManager クラスは、すべてのストラテジーのライフサイクルを管理します。AliPlayerController.getStrategyManager() から取得します。
メソッド | パラメーター | 戻り値 | 説明 |
| strategy | void | ストラテジーを登録します。 |
| strategy | void | ポリシーの登録解除 |
| name | IStrategy | 名前でストラテジーを取得します。 |
| context | void | すべてのストラテジーを開始します。 |
| - | void | すべてのストラテジーを停止します。 |
| - | void | すべてのストラテジーをリセットします。 |
| context | void | コンテキストを更新し、ストラテジーを再起動します。 |
| - | void | マネージャーを削除します |
| - | int | 登録されているストラテジーの数を取得します。 |
| - | boolean | 開始されたかどうかを確認できます。 |
IStrategy (ストラテジーインターフェイス)
メソッド | 説明 |
| ストラテジー名を取得します。 |
| ストラテジーが開始されるときに呼び出されます。 |
| ストラテジーが停止するときに呼び出されます。 |
| ストラテジーがリセットされるときに呼び出されます。 |