Search in sources :

Example 11 with Window

use of com.google.android.exoplayer2.Timeline.Window in project react-native-video by react-native-community.

the class ReactExoplayerView method releasePlayer.

private void releasePlayer() {
    if (player != null) {
        isPaused = player.getPlayWhenReady();
        shouldRestorePosition = false;
        playerWindow = player.getCurrentWindowIndex();
        playerPosition = C.TIME_UNSET;
        Timeline timeline = player.getCurrentTimeline();
        if (!timeline.isEmpty() && timeline.getWindow(playerWindow, window).isSeekable) {
            playerPosition = player.getCurrentPosition();
        }
        player.release();
        player.setMetadataOutput(null);
        player = null;
        trackSelector = null;
    }
    progressHandler.removeMessages(SHOW_PROGRESS);
    themedReactContext.removeLifecycleEventListener(this);
    audioBecomingNoisyReceiver.removeListener();
}
Also used : Timeline(com.google.android.exoplayer2.Timeline)

Example 12 with Window

use of com.google.android.exoplayer2.Timeline.Window in project LeafPic by HoraApps.

the class CustomPlayBackController method previous.

private void previous() {
    Timeline currentTimeline = player.getCurrentTimeline();
    if (currentTimeline == null) {
        return;
    }
    int currentWindowIndex = player.getCurrentWindowIndex();
    currentTimeline.getWindow(currentWindowIndex, window);
    if (currentWindowIndex > 0 && (player.getCurrentPosition() <= MAX_POSITION_FOR_SEEK_TO_PREVIOUS || (window.isDynamic && !window.isSeekable))) {
        player.seekToDefaultPosition(currentWindowIndex - 1);
    } else {
        player.seekTo(0);
    }
}
Also used : Timeline(com.google.android.exoplayer2.Timeline)

Example 13 with Window

use of com.google.android.exoplayer2.Timeline.Window in project LeafPic by HoraApps.

the class CustomPlayBackController method updateNavigation.

private void updateNavigation() {
    if (!isVisible() || !isAttachedToWindow) {
        return;
    }
    Timeline timeline = player != null ? player.getCurrentTimeline() : null;
    boolean haveNonEmptyTimeline = timeline != null && !timeline.isEmpty();
    boolean isSeekable = false;
    boolean enablePrevious = false;
    boolean enableNext = false;
    if (haveNonEmptyTimeline && !player.isPlayingAd()) {
        int windowIndex = player.getCurrentWindowIndex();
        timeline.getWindow(windowIndex, window);
        isSeekable = window.isSeekable;
        enablePrevious = isSeekable || !window.isDynamic || player.getPreviousWindowIndex() != C.INDEX_UNSET;
        enableNext = window.isDynamic || player.getNextWindowIndex() != C.INDEX_UNSET;
    }
    // TODO: 12/16/17
    setButtonEnabled(enablePrevious && false, previousButton, true);
    setButtonEnabled(enableNext && false, nextButton, true);
    setButtonEnabled(fastForwardMs > 0 && isSeekable, fastForwardButton, false);
    setButtonEnabled(rewindMs > 0 && isSeekable, rewindButton, false);
    progressBar.setEnabled(isSeekable);
}
Also used : Timeline(com.google.android.exoplayer2.Timeline)

Aggregations

Timeline (com.google.android.exoplayer2.Timeline)12 Uri (android.net.Uri)1 Handler (android.os.Handler)1 Period (com.google.android.exoplayer2.Timeline.Period)1 Window (com.google.android.exoplayer2.Timeline.Window)1 BehindLiveWindowException (com.google.android.exoplayer2.source.BehindLiveWindowException)1 SinglePeriodTimeline (com.google.android.exoplayer2.source.SinglePeriodTimeline)1 HlsUrl (com.google.android.exoplayer2.source.hls.playlist.HlsMasterPlaylist.HlsUrl)1 HlsMediaPlaylist (com.google.android.exoplayer2.source.hls.playlist.HlsMediaPlaylist)1 Segment (com.google.android.exoplayer2.source.hls.playlist.HlsMediaPlaylist.Segment)1 StreamElement (com.google.android.exoplayer2.source.smoothstreaming.manifest.SsManifest.StreamElement)1 DataSpec (com.google.android.exoplayer2.upstream.DataSpec)1 TimestampAdjuster (com.google.android.exoplayer2.util.TimestampAdjuster)1 CookieHandler (java.net.CookieHandler)1