# DefaultDrmSessionManager.Builder

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/drm/DefaultDrmSessionManager.java+class:androidx.media3.exoplayer.drm.DefaultDrmSessionManager.Builder)

*** ** * ** ***


```
public final class DefaultDrmSessionManager.Builder
```

<br />

*** ** * ** ***

Builder for `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager` instances.

See `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#Builder()` for the list of default values.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#Builder()()` Creates a builder with default values. |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager` | `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#build(androidx.media3.exoplayer.drm.MediaDrmCallback)(https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback mediaDrmCallback)` Builds a `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager` instance. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setKeyRequestParameters(java.util.Map<java.lang.String,java.lang.String>)( @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/util/Map.html<https://developer.android.com/reference/java/lang/String.html, https://developer.android.com/reference/java/lang/String.html> keyRequestParameters )` Sets the key request parameters to pass as the last argument to `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm#getKeyRequest(byte[],java.util.List<androidx.media3.common.DrmInitData.SchemeData>,int,java.util.HashMap<java.lang.String,java.lang.String>)`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setLoadErrorHandlingPolicy(androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy)( https://developer.android.com/reference/androidx/media3/exoplayer/upstream/LoadErrorHandlingPolicy loadErrorHandlingPolicy )` Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/LoadErrorHandlingPolicy` for key and provisioning requests. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setMultiSession(boolean)(boolean multiSession)` Sets whether this session manager is allowed to acquire multiple simultaneous sessions. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setPlayClearSamplesWithoutKeys(boolean)(boolean playClearSamplesWithoutKeys)` Sets whether clear samples within protected content should be played when keys for the encrypted part of the content have yet to be loaded. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setSessionKeepaliveMs(long)(long sessionKeepaliveMs)` Sets the time to keep `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSession` alive when they're not in use. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setUseDrmSessionsForClearContent(int...)( @https://developer.android.com/reference/androidx/media3/common/C.TrackType int[] useDrmSessionsForClearContentTrackTypes )` Sets whether this session manager should attach `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSession` to the clear sections of the media content. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setUuidAndExoMediaDrmProvider(java.util.UUID,androidx.media3.exoplayer.drm.ExoMediaDrm.Provider)( https://developer.android.com/reference/java/util/UUID.html uuid, https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.Provider exoMediaDrmProvider )` Sets the UUID of the DRM scheme and the `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.Provider` to use. |

## Public constructors

### Builder

```
public Builder()
```

Creates a builder with default values. The default values are:

- `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setKeyRequestParameters(java.util.Map<java.lang.String,java.lang.String>)`: An empty map.
- `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setUuidAndExoMediaDrmProvider(java.util.UUID,androidx.media3.exoplayer.drm.ExoMediaDrm.Provider)`: `https://developer.android.com/reference/androidx/media3/common/C#WIDEVINE_UUID()`.
- `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setUuidAndExoMediaDrmProvider(java.util.UUID,androidx.media3.exoplayer.drm.ExoMediaDrm.Provider)`: `https://developer.android.com/reference/androidx/media3/exoplayer/drm/FrameworkMediaDrm#DEFAULT_PROVIDER()`.
- `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setMultiSession(boolean)`: `false`.
- `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setUseDrmSessionsForClearContent(int...)`: No tracks.
- `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setPlayClearSamplesWithoutKeys(boolean)`: `true`.
- `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setLoadErrorHandlingPolicy(androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy)`: `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/DefaultLoadErrorHandlingPolicy`.
- `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder#setSessionKeepaliveMs(long)`: `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager#DEFAULT_SESSION_KEEPALIVE_MS()`.

## Public methods

### build

```
public DefaultDrmSessionManager build(MediaDrmCallback mediaDrmCallback)
```

Builds a `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager` instance.

### setKeyRequestParameters

```
@CanIgnoreReturnValue
public DefaultDrmSessionManager.Builder setKeyRequestParameters(
    @Nullable Map<String, String> keyRequestParameters
)
```

Sets the key request parameters to pass as the last argument to `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm#getKeyRequest(byte[],java.util.List<androidx.media3.common.DrmInitData.SchemeData>,int,java.util.HashMap<java.lang.String,java.lang.String>)`. May be null if not parameters need to be passed.

Custom data for PlayReady should be set under `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager#PLAYREADY_CUSTOM_DATA_KEY()`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/util/Map.html<https://developer.android.com/reference/java/lang/String.html, https://developer.android.com/reference/java/lang/String.html> keyRequestParameters` | A map with parameters. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder` | This builder. |

### setLoadErrorHandlingPolicy

```
@CanIgnoreReturnValue
public DefaultDrmSessionManager.Builder setLoadErrorHandlingPolicy(
    LoadErrorHandlingPolicy loadErrorHandlingPolicy
)
```

Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/LoadErrorHandlingPolicy` for key and provisioning requests.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/LoadErrorHandlingPolicy loadErrorHandlingPolicy` | A `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/LoadErrorHandlingPolicy`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder` | This builder. |

### setMultiSession

```
@CanIgnoreReturnValue
public DefaultDrmSessionManager.Builder setMultiSession(boolean multiSession)
```

Sets whether this session manager is allowed to acquire multiple simultaneous sessions.

Users should pass false when a single key request will obtain all keys required to decrypt the associated content. `multiSession` is required when content uses key rotation.

| Parameters |
|---|---|
| `boolean multiSession` | Whether this session manager is allowed to acquire multiple simultaneous sessions. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder` | This builder. |

### setPlayClearSamplesWithoutKeys

```
@CanIgnoreReturnValue
public DefaultDrmSessionManager.Builder setPlayClearSamplesWithoutKeys(boolean playClearSamplesWithoutKeys)
```

Sets whether clear samples within protected content should be played when keys for the encrypted part of the content have yet to be loaded.

| Parameters |
|---|---|
| `boolean playClearSamplesWithoutKeys` | Whether clear samples within protected content should be played when keys for the encrypted part of the content have yet to be loaded. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder` | This builder. |

### setSessionKeepaliveMs

```
@CanIgnoreReturnValue
public DefaultDrmSessionManager.Builder setSessionKeepaliveMs(long sessionKeepaliveMs)
```

Sets the time to keep `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSession` alive when they're not in use.

It can be useful to keep sessions alive during playback of short clear sections of media (e.g. ad breaks) to avoid opening new DRM sessions (and re-requesting keys) at the transition back into secure content. This assumes the secure sections before and after the clear section are encrypted with the same keys.

Defaults to `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager#DEFAULT_SESSION_KEEPALIVE_MS()`. Pass `https://developer.android.com/reference/androidx/media3/common/C#TIME_UNSET()` to disable keep-alive.

| Parameters |
|---|---|
| `long sessionKeepaliveMs` | The time to keep `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSession`s alive before fully releasing, in milliseconds. Must be \>0 or `https://developer.android.com/reference/androidx/media3/common/C#TIME_UNSET()` to disable keep-alive. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder` | This builder. |

### setUseDrmSessionsForClearContent

```
@CanIgnoreReturnValue
public DefaultDrmSessionManager.Builder setUseDrmSessionsForClearContent(
    @C.TrackType int[] useDrmSessionsForClearContentTrackTypes
)
```

Sets whether this session manager should attach `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSession` to the clear sections of the media content.

Using `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSession` for clear content avoids the recreation of decoders when transitioning between clear and encrypted sections of content.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/media3/common/C.TrackType int[] useDrmSessionsForClearContentTrackTypes` | The track types (`https://developer.android.com/reference/androidx/media3/common/C#TRACK_TYPE_AUDIO()` and/or `https://developer.android.com/reference/androidx/media3/common/C#TRACK_TYPE_VIDEO()`) for which to use a `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSession` regardless of whether the content is clear or encrypted. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder` | This builder. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException.html` | If `useDrmSessionsForClearContentTrackTypes` contains track types other than `https://developer.android.com/reference/androidx/media3/common/C#TRACK_TYPE_AUDIO()` and `https://developer.android.com/reference/androidx/media3/common/C#TRACK_TYPE_VIDEO()`. |

### setUuidAndExoMediaDrmProvider

```
@CanIgnoreReturnValue
public DefaultDrmSessionManager.Builder setUuidAndExoMediaDrmProvider(
    UUID uuid,
    ExoMediaDrm.Provider exoMediaDrmProvider
)
```

Sets the UUID of the DRM scheme and the `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.Provider` to use.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/util/UUID.html uuid` | The UUID of the DRM scheme. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.Provider exoMediaDrmProvider` | The `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.Provider`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder` | This builder. |