# FakeAdaptiveMediaSource

Artifact: [androidx.media3:media3-test-utils](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/test/utils/FakeAdaptiveMediaSource.java+class:androidx.media3.test.utils.FakeAdaptiveMediaSource)

*** ** * ** ***

<br />

```
@UnstableApi
public class FakeAdaptiveMediaSource extends FakeMediaSource
```

<br />

|---|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) ||||
| ↳ | [androidx.media3.exoplayer.source.BaseMediaSource](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource) |||
|   | ↳ | [androidx.media3.test.utils.FakeMediaSource](https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource) ||
|   |   | ↳ | [androidx.media3.test.utils.FakeAdaptiveMediaSource](https://developer.android.com/reference/androidx/media3/test/utils/FakeAdaptiveMediaSource) |

*** ** * ** ***

Fake `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` that provides a given timeline. Creating the period returns a `https://developer.android.com/reference/androidx/media3/test/utils/FakeAdaptiveMediaPeriod` from the given `https://developer.android.com/reference/androidx/media3/exoplayer/source/TrackGroupArray`.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/test/utils/FakeAdaptiveMediaSource#FakeAdaptiveMediaSource(androidx.media3.common.Timeline,androidx.media3.exoplayer.source.TrackGroupArray,androidx.media3.test.utils.FakeChunkSource.Factory)( https://developer.android.com/reference/androidx/media3/common/Timeline timeline, https://developer.android.com/reference/androidx/media3/exoplayer/source/TrackGroupArray trackGroupArray, https://developer.android.com/reference/androidx/media3/test/utils/FakeChunkSource.Factory chunkSourceFactory )` |

| ### Public methods |
|---|---|
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/FakeAdaptiveMediaSource#releaseMediaPeriod(androidx.media3.exoplayer.source.MediaPeriod)(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod mediaPeriod)` Releases a media period created by `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#createMediaPeriod(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId,androidx.media3.exoplayer.source.TrackGroupArray,androidx.media3.exoplayer.upstream.Allocator,androidx.media3.exoplayer.source.MediaSourceEventListener.EventDispatcher,androidx.media3.exoplayer.drm.DrmSessionManager,androidx.media3.exoplayer.drm.DrmSessionEventListener.EventDispatcher,androidx.media3.datasource.TransferListener)`. |

| ### Protected methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` | `https://developer.android.com/reference/androidx/media3/test/utils/FakeAdaptiveMediaSource#createMediaPeriod(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId,androidx.media3.exoplayer.source.TrackGroupArray,androidx.media3.exoplayer.upstream.Allocator,androidx.media3.exoplayer.source.MediaSourceEventListener.EventDispatcher,androidx.media3.exoplayer.drm.DrmSessionManager,androidx.media3.exoplayer.drm.DrmSessionEventListener.EventDispatcher,androidx.media3.datasource.TransferListener)( https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId id, https://developer.android.com/reference/androidx/media3/exoplayer/source/TrackGroupArray trackGroupArray, https://developer.android.com/reference/androidx/media3/exoplayer/upstream/Allocator allocator, https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener.EventDispatcher mediaSourceEventDispatcher, https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager drmSessionManager, https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener.EventDispatcher drmEventDispatcher, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/datasource/TransferListener transferListener )` Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` for this media source. |

### Inherited Constants

From [androidx.media3.test.utils.FakeMediaSource](https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource) `static final https://developer.android.com/reference/androidx/media3/common/MediaItem` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#FAKE_MEDIA_ITEM()`

The media item used by the fake media source.

### Inherited fields

From [androidx.media3.exoplayer.source.BaseMediaSource](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource) `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/upstream/BandwidthMeter` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#bandwidthMeter()` `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/analytics/PlayerId` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#playerId()` From [androidx.media3.test.utils.FakeMediaSource](https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource) `@https://checkerframework.org/api/org/checkerframework/checker/nullness/qual/MonotonicNonNull.html https://developer.android.com/reference/androidx/media3/common/Timeline` `@https://checkerframework.org/api/org/checkerframework/checker/nullness/qual/MonotonicNonNull.html
https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#timeline()`

### Inherited methods

From [androidx.media3.exoplayer.source.BaseMediaSource](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource) `final void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#addDrmEventListener(android.os.Handler,androidx.media3.exoplayer.drm.DrmSessionEventListener)(

https://developer.android.com/reference/android/os/Handler.html handler,

https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener eventListener

)`

Adds a `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener` to the list of listeners which are notified of DRM events for this media source.
`final void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#addEventListener(android.os.Handler,androidx.media3.exoplayer.source.MediaSourceEventListener)(

https://developer.android.com/reference/android/os/Handler.html handler,

https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener eventListener

)`

Adds a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener` to the list of listeners which are notified of media source events.
`final https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener.EventDispatcher` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#createDrmEventDispatcher(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)(

@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId

)`

Returns a `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener.EventDispatcher` which dispatches all events to the registered listeners with the specified `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId`
`final https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener.EventDispatcher` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#createDrmEventDispatcher(int,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)(

int windowIndex,

@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId

)`

Returns a `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener.EventDispatcher` which dispatches all events to the registered listeners with the specified window index and `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId`.
`final https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener.EventDispatcher` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#createEventDispatcher(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId)`

Returns a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener.EventDispatcher` which dispatches all events to the registered listeners with the specified `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId`.
`final https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener.EventDispatcher` `[createEventDispatcher](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#createEventDispatcher(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId,long))(

https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId,

long mediaTimeOffsetMs

)`

**This method is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#createEventDispatcher(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)` instead.

<br />

`final https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener.EventDispatcher` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#createEventDispatcher(int,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)(

int windowIndex,

@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId

)`

Returns a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener.EventDispatcher` which dispatches all events to the registered listeners with the specified window index and `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId`.
`final https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener.EventDispatcher` `[createEventDispatcher](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#createEventDispatcher(int,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId,long))(

int windowIndex,

@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId,

long mediaTimeOffsetMs

)`

**This method is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#createEventDispatcher(int,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)` instead.

<br />

`final void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#disable(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller)(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaSourceCaller caller)`

Disables the source for the creation of `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod`.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#disableInternal()()`

Disables the source, see `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#disable(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller)`.
`final void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#enable(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller)(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaSourceCaller caller)`

Enables the source for the creation of `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod`.
`void` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#enableInternal()()`

Enables the source, see `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#enable(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller)`.
`final https://developer.android.com/reference/androidx/media3/exoplayer/upstream/BandwidthMeter` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#getBandwidthMeter()()`

Returns the `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/BandwidthMeter` that is used by this media source.
`final https://developer.android.com/reference/androidx/media3/exoplayer/analytics/PlayerId` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#getPlayerId()()`

Returns the `https://developer.android.com/reference/androidx/media3/exoplayer/analytics/PlayerId` of the player using this media source.
`final boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#isEnabled()()`

Returns whether the source is enabled.
`final void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#prepareSource(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller,androidx.media3.exoplayer.analytics.PlayerId,androidx.media3.exoplayer.upstream.BandwidthMeter)(

https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaSourceCaller caller,

https://developer.android.com/reference/androidx/media3/exoplayer/analytics/PlayerId playerId,

https://developer.android.com/reference/androidx/media3/exoplayer/upstream/BandwidthMeter bandwidthMeter

)`

Registers a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaSourceCaller`.
`final boolean` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#prepareSourceCalled()()`

Returns whether the source has `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#prepareSource(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller,androidx.media3.exoplayer.analytics.PlayerId,androidx.media3.exoplayer.upstream.BandwidthMeter)` called.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#refreshSourceInfo(androidx.media3.common.Timeline)(https://developer.android.com/reference/androidx/media3/common/Timeline timeline)`

Updates timeline and manifest and notifies all listeners of the update.
`final void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#releaseSource(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller)(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaSourceCaller caller)`

Unregisters a caller, and disables and releases the source if no longer required.
`final void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#removeDrmEventListener(androidx.media3.exoplayer.drm.DrmSessionEventListener)(https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener eventListener)`

Removes a `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener` from the list of listeners which are notified of DRM events for this media source.
`final void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#removeEventListener(androidx.media3.exoplayer.source.MediaSourceEventListener)(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener eventListener)`

Removes a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener` from the list of listeners which are notified of media source events.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#setBandwidthMeter(androidx.media3.exoplayer.upstream.BandwidthMeter)(https://developer.android.com/reference/androidx/media3/exoplayer/upstream/BandwidthMeter bandwidthMeter)`

Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/BandwidthMeter` to be used by this media source.
`final void` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#setPlayerId(androidx.media3.exoplayer.analytics.PlayerId)(https://developer.android.com/reference/androidx/media3/exoplayer/analytics/PlayerId playerId)`

Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/analytics/PlayerId` of the player using this media source.
From [androidx.media3.test.utils.FakeMediaSource](https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource) `void` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#assertMediaPeriodCreated(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId)`

Assert that a media period for the given id has been created.
`void` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#assertReleased()()`

Assert that the source and all periods have been released.
`boolean` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#canUpdateMediaItem(androidx.media3.common.MediaItem)(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem)`

Returns whether the `https://developer.android.com/reference/androidx/media3/common/MediaItem` for this source can be updated with the provided item.
`https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#createPeriod(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId,androidx.media3.exoplayer.upstream.Allocator,long)(

https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId id,

https://developer.android.com/reference/androidx/media3/exoplayer/upstream/Allocator allocator,

long startPositionUs

)`

Returns a new `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` identified by `periodId`.
`static https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#createWithWindowId(java.lang.Object)(https://developer.android.com/reference/java/lang/Object.html windowId)`

Convenience method to create a `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource` with the given window id.
`https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId>` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#getCreatedMediaPeriods()()`

Returns a list of `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId`s, with one element for each created media period.
`@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/Timeline` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#getInitialTimeline()()`

Returns the initial placeholder timeline that is returned immediately when the real timeline is not yet known, or null to let the player create an initial timeline.
`https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#getLastCreatedActiveMediaPeriod()()`

Returns the last created active `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod`.
`https://developer.android.com/reference/androidx/media3/common/MediaItem` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#getMediaItem()()`

Returns the `https://developer.android.com/reference/androidx/media3/common/MediaItem` whose media is provided by the source.
`@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/Timeline` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#getTimeline()()` `boolean` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#isPrepared()()`

Returns whether the source is currently prepared.
`boolean` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#isSingleWindow()()`

Returns true if the media source is guaranteed to never have zero or more than one window.
`void` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#maybeThrowSourceInfoRefreshError()()`

Throws any pending error encountered while loading or refreshing source information.
`synchronized void` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#prepareSourceInternal(androidx.media3.datasource.TransferListener)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/datasource/TransferListener mediaTransferListener)`

Starts source preparation and enables the source, see `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#prepareSource(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller,androidx.media3.exoplayer.analytics.PlayerId,androidx.media3.exoplayer.upstream.BandwidthMeter)`.
`void` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#releasePeriod(androidx.media3.exoplayer.source.MediaPeriod)(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod mediaPeriod)`

Releases the period.
`void` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#releaseSourceInternal()()`

Releases the source, see `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#releaseSource(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller)`.
`synchronized void` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#setAllowPreparation(boolean)(boolean allowPreparation)`

Sets whether the next call to `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#prepareSource(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller,androidx.media3.exoplayer.analytics.PlayerId,androidx.media3.exoplayer.upstream.BandwidthMeter)` is allowed to finish.
`void` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#setCanUpdateMediaItems(boolean)(boolean canUpdateMediaItems)`

Sets whether the source allows to update its `https://developer.android.com/reference/androidx/media3/common/MediaItem` via `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#updateMediaItem(androidx.media3.common.MediaItem)`.
`void` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#setNewSourceInfo(androidx.media3.common.Timeline)(https://developer.android.com/reference/androidx/media3/common/Timeline newTimeline)`

Sets a new timeline.
`synchronized void` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#setNewSourceInfo(androidx.media3.common.Timeline,boolean)(https://developer.android.com/reference/androidx/media3/common/Timeline newTimeline, boolean sendManifestLoadEvents)`

Sets a new timeline.
`void` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#setPeriodDefersOnPreparedCallback(boolean)(

boolean periodDefersOnPreparedCallback

)`

Sets whether the created `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaPeriod` should defer to call `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod.Callback#onPrepared(androidx.media3.exoplayer.source.MediaPeriod)`.
`void` `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#updateMediaItem(androidx.media3.common.MediaItem)(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem)`

Updates the `https://developer.android.com/reference/androidx/media3/common/MediaItem` for this source.
From [androidx.media3.exoplayer.source.MediaSource](https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource) `void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[prepareSource](https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#prepareSource(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller,androidx.media3.datasource.TransferListener,androidx.media3.exoplayer.analytics.PlayerId))(

https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaSourceCaller caller,

@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/datasource/TransferListener mediaTransferListener,

https://developer.android.com/reference/androidx/media3/exoplayer/analytics/PlayerId playerId

)`

**This method is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#prepareSource(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller,androidx.media3.exoplayer.analytics.PlayerId,androidx.media3.exoplayer.upstream.BandwidthMeter)` instead.

<br />

## Public constructors

### FakeAdaptiveMediaSource

```
public FakeAdaptiveMediaSource(
    Timeline timeline,
    TrackGroupArray trackGroupArray,
    FakeChunkSource.Factory chunkSourceFactory
)
```

## Public methods

### releaseMediaPeriod

```
public void releaseMediaPeriod(MediaPeriod mediaPeriod)
```

Releases a media period created by `https://developer.android.com/reference/androidx/media3/test/utils/FakeMediaSource#createMediaPeriod(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId,androidx.media3.exoplayer.source.TrackGroupArray,androidx.media3.exoplayer.upstream.Allocator,androidx.media3.exoplayer.source.MediaSourceEventListener.EventDispatcher,androidx.media3.exoplayer.drm.DrmSessionManager,androidx.media3.exoplayer.drm.DrmSessionEventListener.EventDispatcher,androidx.media3.datasource.TransferListener)`.

## Protected methods

### createMediaPeriod

```
protected MediaPeriod createMediaPeriod(
    MediaSource.MediaPeriodId id,
    TrackGroupArray trackGroupArray,
    Allocator allocator,
    MediaSourceEventListener.EventDispatcher mediaSourceEventDispatcher,
    DrmSessionManager drmSessionManager,
    DrmSessionEventListener.EventDispatcher drmEventDispatcher,
    @Nullable TransferListener transferListener
)
```

Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` for this media source.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId id` | The identifier of the period. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/TrackGroupArray trackGroupArray` | The `https://developer.android.com/reference/androidx/media3/exoplayer/source/TrackGroupArray` supported by the media period. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/Allocator allocator` | An `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/Allocator` from which to obtain media buffer allocations. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener.EventDispatcher mediaSourceEventDispatcher` | An `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener.EventDispatcher` to dispatch media source events. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager drmSessionManager` | A `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager` to allow DRM interactions. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener.EventDispatcher drmEventDispatcher` | An `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener.EventDispatcher` to dispatch DRM events. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/datasource/TransferListener transferListener` | The transfer listener which should be informed of any data transfers. May be null if no listener is available. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` | A new `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod`. |