8. ダウンロードイベント/コールバック
お知らせ
このドキュメントは機械翻訳で作成された下書きであり、現在レビュー中です。機械翻訳の特性上、一部の内容が不正確であったり、韓国語の原文と異なる場合があります。より正確な情報については、韓国語のドキュメントをご参照ください。
ダウンロードパイプラインの実行中に発生するトラフィック状態の変化と DRM 検証イベントをアプリケーションレイヤーへ通知するコールバックインターフェースの連携方法を説明します。 SDK は役割に応じて、大きく 2 種類のリスナーコールバックインターフェースを提供します。
ダウンロード進行イベントリスナー
MultiKollusStorageListenerを実装して、ファイルのバックグラウンド受信の進行状態および完了/失敗を追跡します。
各コールバックメソッドは、状態変化をリアルタイムに反映しているKollusContentの最新オブジェクトソースとともに渡されます。
リアルタイムの進行率情報は、受信したオブジェクト内のcontent.getDownloadPercent()プロパティ値、またはcontent.getReceivingSize() / content.getFileSize()の演算を通じて直接取得できます。
public interface MultiKollusStorageListener {
void onComplete(KollusStorage storage, KollusContent content);
void onProgress(KollusStorage storage, KollusContent content);
void onError(KollusStorage storage, KollusContent content, int nErrorCode);
}
DRM イベントリスナー
MultiKollusPlayerDRMListenerを実装して、DRM 検証結果と失効イベントを受信します。
public interface MultiKollusPlayerDRMListener {
int DCB_INFO_DELETE = 0; // Force deletion of content due to kind2 or kind3 response
int DCB_INFO_EXPIRED = 1; // Force expiration due to kind3 response
int DCB_INFO_RESET = 2; // Content reset due to kind3 response
void onDRM(KollusStorage storage, String request, String response);
void onDRMInfo(KollusStorage storage, KollusContent content, int nInfoCode);
}
参考文書
コールバック内部の分岐条件にバインドされるkind1, kind2, kind3の詳細仕様は、DRM Download Callbackドキュメントを参照してください。
イベント・コールバック対応表
| 標準イベント | 実際のコールバック位置 |
|---|---|
| ダウンロード開始 | storage.download(mck)メソッドが 0 以上を返した直後 |
| 進行率変更 | MultiKollusStorageListener.onProgress(storage, content) |
| ダウンロード一時停止 | 専用コールバックなし(キャンセルと同様) |
| ダウンロード再開 | 専用コールバックなし(開始と同様) |
| ダウンロード完了 | MultiKollusStorageListener.onComplete(storage, content) |
| ダウンロード失敗 | MultiKollusStorageListener.onError(storage, content, errorCode) |
| ライセンス失効 | MultiKollusPlayerDRMListener.onDRMInfo(storage, content, DCB_INFO_EXPIRED) |
| ライセンス更新結果 | updateDownloadDRMInfo呼び出し時に渡したKollusPlayerDRMUpdateListener |
リスナーコールバックの登録と解除
Android コンポーネント(Activity/Service)のライフサイクルに合わせてリスナーを登録・解除する必要があります。
@Override
protected void onCreate(...) {
...
multiStorage.registerKollusStorageListener(mStorageListener);
multiStorage.registerKollusPlayerDRMListener(mDRMListener);
}
@Override
protected void onDestroy() {
multiStorage.unregisterKollusStorageListener(mStorageListener);
multiStorage.unregisterKollusPlayerDRMListener(mDRMListener);
...
}