CoWatchingHandler

@PublicApi
interface CoWatchingHandler


リモートでの同時視聴の更新を処理し、ローカル メディアの状態を照会するためにアドオンアプリが提供するコールバック。

まとめ

パブリック関数

Unit

会議の他の参加者による同時視聴状態の更新を適用します。

Optional<QueriedCoWatchingState!>!

ローカルの同時視聴アクティビティの現在の状態を取得します。

パブリック関数

onCoWatchingStateChanged

fun onCoWatchingStateChanged(state: CoWatchingState!): Unit

会議の他の参加者による同時視聴状態の更新を適用します。

注: ローカルの変更に対して、このメソッドが呼び出されることはありません。

実装例:

// Handle transition to new video.
if (!newState.mediaId().equals(this.videoPlayer.videoUrl)) {
  this.videoPlayer.loadVideo(newState.mediaId());
}

// Only adjust the local video playout if it is sufficiently diverged from the timestamp in the
// applied update.
if (newState
        .mediaPlayoutPosition()
        .minus(this.videoPlayer.videoTimestamp)
        .compareTo(Duration.ofMillis(500))
    > 0) {
  this.videoPlayer.seek(newState.mediaPlayoutPosition());
}

// Update pause state if necessary.
if (newState.playbackState().equals(PLAY) && this.videoPlayer.isPaused) {
  this.videoPlayer.unpause();
} else if (newState.playbackState().equals(PAUSE) && !this.videoPlayer.isPaused) {
  this.videoPlayer.pause();
}
パラメータ
state: CoWatchingState!

プレーヤーに適用する新しい CoWatchingState

onStateQuery

fun onStateQuery(): Optional<QueriedCoWatchingState!>!

ローカルの同時視聴アクティビティの現在の状態を取得します。

定期的に呼び出されるため、パフォーマンスが向上するように書き込む必要があります(100 ミリ秒未満など)。

実装例:

QueriedCoWatchingState myCurrentPlaybackState = QueriedCoWatchingState
    .of(/* mediaPlayoutPosition= *{/} this.videoPlayer.videoTimestamp);
return Optional.of(myCurrentPlaybackState);
戻り値
Optional<QueriedCoWatchingState!>!

現在の同時視聴状態を表す QueriedCoWatchingStateOptionalOptional が空の場合、進行中の同時視聴アクティビティがないことを示します。