CoWatchingHandler

@PublicApi
public interface CoWatchingHandler



원격 공동 시청 업데이트를 처리하고 로컬 미디어의 상태를 쿼리하기 위해 부가기능 앱에서 제공하는 콜백입니다.

요약

공개 메서드

abstract void

회의의 다른 참여자의 공동 시청 상태 업데이트를 적용합니다.

abstract Optional<QueriedCoWatchingState>

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

공개 메서드

onCoWatchingStateChanged

abstract void onCoWatchingStateChanged(CoWatchingState state)

회의의 다른 참여자의 공동 시청 상태 업데이트를 적용합니다.

참고: 이는 로컬 변경사항에 대한 응답으로 호출되지 않습니다.

구현의 예:

// 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();
}
매개변수
CoWatchingState state

플레이어에 적용할 새 CoWatchingState

onStateQuery

abstract Optional<QueriedCoWatchingStateonStateQuery()

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

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

구현의 예:

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

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