public final class

TimelineWithUpdatedMediaItem

extends ForwardingTimeline

 java.lang.Object

androidx.media3.common.Timeline

androidx.media3.exoplayer.source.ForwardingTimeline

↳androidx.media3.exoplayer.source.TimelineWithUpdatedMediaItem

Gradle dependencies

compile group: 'androidx.media3', name: 'media3-exoplayer', version: '1.5.0-alpha01'

  • groupId: androidx.media3
  • artifactId: media3-exoplayer
  • version: 1.5.0-alpha01

Artifact androidx.media3:media3-exoplayer:1.5.0-alpha01 it located at Google repository (https://maven.google.com/)

Overview

A Timeline that overrides the MediaItem.

Summary

Fields
from ForwardingTimelinetimeline
from TimelineEMPTY
Constructors
publicTimelineWithUpdatedMediaItem(Timeline timeline, MediaItem mediaItem)

Creates the timeline.

Methods
public abstract Timeline.WindowgetWindow(int windowIndex, Timeline.Window window, long defaultPositionProjectionUs)

Populates a Timeline.Window with data for the window at the specified index.

from ForwardingTimelinegetFirstWindowIndex, getIndexOfPeriod, getLastWindowIndex, getNextWindowIndex, getPeriod, getPeriodCount, getPreviousWindowIndex, getUidOfPeriod, getWindowCount
from TimelinecopyWithSingleWindow, equals, fromBundle, getNextPeriodIndex, getPeriod, getPeriodByUid, getPeriodPosition, getPeriodPosition, getPeriodPositionUs, getPeriodPositionUs, getWindow, hashCode, isEmpty, isLastPeriod, toBundle
from java.lang.Objectclone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait

Constructors

public TimelineWithUpdatedMediaItem(Timeline timeline, MediaItem mediaItem)

Creates the timeline.

Parameters:

timeline: The wrapped Timeline.
mediaItem: The MediaItem that replaced the original one in timeline.

Methods

public abstract Timeline.Window getWindow(int windowIndex, Timeline.Window window, long defaultPositionProjectionUs)

Populates a Timeline.Window with data for the window at the specified index.

Parameters:

windowIndex: The index of the window.
window: The Timeline.Window to populate. Must not be null.
defaultPositionProjectionUs: A duration into the future that the populated window's default start position should be projected.

Returns:

The populated Timeline.Window, for convenience.

Source

/*
 * Copyright 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package androidx.media3.exoplayer.source;

import androidx.media3.common.MediaItem;
import androidx.media3.common.Timeline;
import androidx.media3.common.util.UnstableApi;

/** A {@link Timeline} that overrides the {@link MediaItem}. */
@UnstableApi
public final class TimelineWithUpdatedMediaItem extends ForwardingTimeline {

  private final MediaItem updatedMediaItem;

  /**
   * Creates the timeline.
   *
   * @param timeline The wrapped {@link Timeline}.
   * @param mediaItem The {@link MediaItem} that replaced the original one in {@code timeline}.
   */
  public TimelineWithUpdatedMediaItem(Timeline timeline, MediaItem mediaItem) {
    super(timeline);
    this.updatedMediaItem = mediaItem;
  }

  @SuppressWarnings("deprecation") // Setting deprecated field for backward compatibility.
  @Override
  public Window getWindow(int windowIndex, Window window, long defaultPositionProjectionUs) {
    super.getWindow(windowIndex, window, defaultPositionProjectionUs);
    window.mediaItem = updatedMediaItem;
    window.tag =
        updatedMediaItem.localConfiguration != null
            ? updatedMediaItem.localConfiguration.tag
            : null;
    return window;
  }
}