# 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)

*** ** * ** ***


```
class DownloadHelper.Factory
```

<br />

*** ** * ** ***

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

## Summary

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

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

## Public constructors

### Factory

```
Factory()
```

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

## Public functions

### create

```
fun create(mediaItem: MediaItem!): DownloadHelper!
```

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

| Parameters |
|---|---|
| `mediaItem: https://developer.android.com/reference/kotlin/androidx/media3/common/MediaItem!` | The `https://developer.android.com/reference/kotlin/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

```
fun create(mediaSource: MediaSource!): DownloadHelper!
```

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

| Parameters |
|---|---|
| `mediaSource: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource!` | A `https://developer.android.com/reference/kotlin/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
fun setDataSourceFactory(dataSourceFactory: DataSource.Factory?): DownloadHelper.Factory!
```

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

A `https://developer.android.com/reference/kotlin/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/kotlin/androidx/media3/datasource/cache/CacheDataSource.Factory` for the `https://developer.android.com/reference/kotlin/androidx/media3/datasource/cache/Cache` into which downloads will be written.

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

### setDebugLoggingEnabled

```
@CanIgnoreReturnValue
fun setDebugLoggingEnabled(debugLoggingEnabled: Boolean): DownloadHelper.Factory!
```

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

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

### setDrmSessionManager

```
@CanIgnoreReturnValue
fun setDrmSessionManager(drmSessionManager: DrmSessionManager?): DownloadHelper.Factory!
```

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

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

### setLoadExecutor

```
@CanIgnoreReturnValue
fun setLoadExecutor(loadExecutor: Supplier<ReleasableExecutor!>!): DownloadHelper.Factory!
```

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

| Parameters |
|---|---|
| `loadExecutor: https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html<https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/util/ReleasableExecutor!>!` | 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/kotlin/androidx/media3/exoplayer/util/ReleasableExecutor` for loading. |

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

### setRenderersFactory

```
@CanIgnoreReturnValue
fun setRenderersFactory(renderersFactory: RenderersFactory?): DownloadHelper.Factory!
```

Sets a `https://developer.android.com/reference/kotlin/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/kotlin/androidx/media3/exoplayer/offline/DownloadHelper.Factory!` | This factory, for convenience. |

### setTrackSelectionParameters

```
@CanIgnoreReturnValue
fun setTrackSelectionParameters(
    trackSelectionParameters: TrackSelectionParameters!
): DownloadHelper.Factory!
```

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

This is only used for adaptive streams.

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