# DownloadHelper.Factory

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

*** ** * ** ***


```
public final class DownloadHelper.Factory
```

<br />

*** ** * ** ***

A factory of `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper`.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory#Factory()()` Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory`. |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory#create(androidx.media3.common.MediaItem)(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem)` Creates a new `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper` | `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory#create(androidx.media3.exoplayer.source.MediaSource)(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource mediaSource)` Creates a new `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory#setDataSourceFactory(androidx.media3.datasource.DataSource.Factory)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory dataSourceFactory)` Sets a `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` used to load the manifest for adaptive streams or the `https://developer.android.com/reference/androidx/media3/extractor/SeekMap` for progressive streams. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory#setDebugLoggingEnabled(boolean)(boolean debugLoggingEnabled)` Sets whether to log debug information. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory#setDrmSessionManager(androidx.media3.exoplayer.drm.DrmSessionManager)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager drmSessionManager)` Sets a `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory#setLoadExecutor(com.google.common.base.Supplier<androidx.media3.exoplayer.util.ReleasableExecutor>)(https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html<https://developer.android.com/reference/androidx/media3/exoplayer/util/ReleasableExecutor> loadExecutor)` Sets a supplier for an `https://developer.android.com/reference/androidx/media3/exoplayer/util/ReleasableExecutor` that is used for loading the media. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory#setRenderersFactory(androidx.media3.exoplayer.RenderersFactory)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory renderersFactory)` Sets a `https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory` creating the renderers for which tracks are selected. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory#setTrackSelectionParameters(androidx.media3.common.TrackSelectionParameters)( https://developer.android.com/reference/androidx/media3/common/TrackSelectionParameters trackSelectionParameters )` Sets a `https://developer.android.com/reference/androidx/media3/common/TrackSelectionParameters` for selecting tracks for downloading. |

## Public constructors

### Factory

```
public Factory()
```

Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory`.

## Public methods

### create

```
public DownloadHelper create(MediaItem mediaItem)
```

Creates a new `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem` | The `https://developer.android.com/reference/androidx/media3/common/MediaItem` to download. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | If the corresponding module is missing for DASH, HLS or SmoothStreaming media items. |
| `https://developer.android.com/reference/java/lang/IllegalArgumentException.html` | If the `dataSourceFactory` is null for adaptive streams. |

### create

```
public DownloadHelper create(MediaSource mediaSource)
```

Creates a new `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource mediaSource` | A `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` to be prepared. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | If the corresponding module is missing for DASH, HLS or SmoothStreaming media items. |
| `https://developer.android.com/reference/java/lang/IllegalArgumentException.html` | If the `dataSourceFactory` is null for adaptive streams. |

### setDataSourceFactory

```
@CanIgnoreReturnValue
public DownloadHelper.Factory setDataSourceFactory(@Nullable DataSource.Factory dataSourceFactory)
```

Sets a `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` used to load the manifest for adaptive streams or the `https://developer.android.com/reference/androidx/media3/extractor/SeekMap` for progressive streams. The default is `null`.

A `https://developer.android.com/reference/androidx/media3/datasource/DataSource.Factory` is required for adaptive streams or when requesting partial downloads for progressive streams. In the latter case, this has to be a `https://developer.android.com/reference/androidx/media3/datasource/cache/CacheDataSource.Factory` for the `https://developer.android.com/reference/androidx/media3/datasource/cache/Cache` into which downloads will be written.

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory` | This factory, for convenience. |

### setDebugLoggingEnabled

```
@CanIgnoreReturnValue
public DownloadHelper.Factory setDebugLoggingEnabled(boolean debugLoggingEnabled)
```

Sets whether to log debug information. The default is `false`.

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory` | This factory, for convenience. |

### setDrmSessionManager

```
@CanIgnoreReturnValue
public DownloadHelper.Factory setDrmSessionManager(@Nullable DrmSessionManager drmSessionManager)
```

Sets a `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager`. Used to help determine which tracks can be selected. The default is `null`.

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory` | This factory, for convenience. |

### setLoadExecutor

```
@CanIgnoreReturnValue
public DownloadHelper.Factory setLoadExecutor(Supplier<ReleasableExecutor> loadExecutor)
```

Sets a supplier for an `https://developer.android.com/reference/androidx/media3/exoplayer/util/ReleasableExecutor` that is used for loading the media.

| Parameters |
|---|---|
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html<https://developer.android.com/reference/androidx/media3/exoplayer/util/ReleasableExecutor> loadExecutor` | A `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html` that provides an externally managed `https://developer.android.com/reference/androidx/media3/exoplayer/util/ReleasableExecutor` for loading. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory` | This factory, for convenience. |

### setRenderersFactory

```
@CanIgnoreReturnValue
public DownloadHelper.Factory setRenderersFactory(@Nullable RenderersFactory renderersFactory)
```

Sets a `https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory` creating the renderers for which tracks are selected. The default is `null`.

This is only used for adaptive streams.

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory` | This factory, for convenience. |

### setTrackSelectionParameters

```
@CanIgnoreReturnValue
public DownloadHelper.Factory setTrackSelectionParameters(
    TrackSelectionParameters trackSelectionParameters
)
```

Sets a `https://developer.android.com/reference/androidx/media3/common/TrackSelectionParameters` for selecting tracks for downloading. The default is `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper#DEFAULT_TRACK_SELECTOR_PARAMETERS()`.

This is only used for adaptive streams.

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/offline/DownloadHelper.Factory` | This factory, for convenience. |