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!>!

로컬 공동 시청 활동의 현재 상태를 검색합니다.

이는 정기적으로 호출되므로 성능 기준에 맞게 작성되어야 합니다 (예: 100ms 미만).

구현의 예:

QueriedCoWatchingState myCurrentPlaybackState = QueriedCoWatchingState
    .of(/* mediaPlayoutPosition= *{/} this.videoPlayer.videoTimestamp);
return Optional.of(myCurrentPlaybackState);
반환 값
Optional<QueriedCoWatchingState!>!

현재 공동 시청 상태를 설명하는 QueriedCoWatchingState개 중 Optional번째입니다. Optional가 비어 있으면 진행 중인 공동 시청 활동이 없음을 나타냅니다.