# ImaServerSideAdInsertionMediaSource.AdsLoader.Builder

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

*** ** * ** ***


```
class ImaServerSideAdInsertionMediaSource.AdsLoader.Builder
```

<br />

*** ** * ** ***

Builder for building an `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader`.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder#Builder(android.content.Context,androidx.media3.common.AdViewProvider)(context: https://developer.android.com/reference/android/content/Context.html!, adViewProvider: https://developer.android.com/reference/kotlin/androidx/media3/common/AdViewProvider!)` Creates an instance. |

| ### Public functions |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader!` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder#build()()` Returns a new `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi @https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder#setAdErrorListener(com.google.ads.interactivemedia.v3.api.AdErrorEvent.AdErrorListener)(adErrorListener: https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdErrorEvent.AdErrorListener.html!)` Sets the optional `https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdErrorEvent.AdErrorListener.html` that will be passed to `https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/BaseManager.html#addAdErrorListener-com.google.ads.interactivemedia.v3.api.AdErrorEvent.AdErrorListener-` when the stream manager becomes available. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi @https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder#setAdEventListener(com.google.ads.interactivemedia.v3.api.AdEvent.AdEventListener)(adEventListener: https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdEvent.AdEventListener.html!)` Sets the optional `https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdEvent.AdEventListener.html` that will be passed to `https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/BaseManager.html#addAdEventListener-com.google.ads.interactivemedia.v3.api.AdEvent.AdEventListener-` when the stream manager becomes available. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder#setAdsLoaderState(androidx.media3.exoplayer.ima.ImaServerSideAdInsertionMediaSource.AdsLoader.State)( state: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.State! )` Sets the optional state to resume with. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi @https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder#setCompanionAdSlots(java.util.Collection<com.google.ads.interactivemedia.v3.api.CompanionAdSlot>)( companionAdSlots: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-collection/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-collection/index.html<https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/CompanionAdSlot.html!>! )` Sets the slots to use for companion ads, if they are present in the loaded ad. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi @https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder#setEnableCustomTabs(boolean)(enableCustomTabs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Sets whether to enable custom tabs for the ad click-through URLs. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi @https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder#setFocusSkipButtonWhenAvailable(boolean)(focusSkipButtonWhenAvailable: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Sets whether to focus the skip button (when available) on Android TV devices. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi @https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder#setImaSdkSettings(com.google.ads.interactivemedia.v3.api.ImaSdkSettings)(imaSdkSettings: https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/ImaSdkSettings.html!)` Sets the IMA SDK settings. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi @https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder#setPauseAdSlot(com.google.ads.interactivemedia.v3.api.AdSlot)(pauseAdSlot: https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdSlot.html!)` Sets the slot to use for pause ads. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi @https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder#setStreamEventListener(androidx.media3.exoplayer.ima.ImaServerSideAdInsertionMediaSource.StreamEventListener)( streamEventListener: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.StreamEventListener! )` Sets the optional `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.StreamEventListener` that will be called for stream events. |

## Public constructors

### Builder

```
Builder(context: Context!, adViewProvider: AdViewProvider!)
```

Creates an instance.

| Parameters |
|---|---|
| `context: https://developer.android.com/reference/android/content/Context.html!` | A context. |
| `adViewProvider: https://developer.android.com/reference/kotlin/androidx/media3/common/AdViewProvider!` | A provider for `https://developer.android.com/reference/android/view/ViewGroup.html` instances. |

## Public functions

### build

```
fun build(): ImaServerSideAdInsertionMediaSource.AdsLoader!
```

Returns a new `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader`.

### setAdErrorListener

```
@UnstableApi
@CanIgnoreReturnValue
fun setAdErrorListener(adErrorListener: AdErrorEvent.AdErrorListener!): ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!
```

Sets the optional `https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdErrorEvent.AdErrorListener.html` that will be passed to `https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/BaseManager.html#addAdErrorListener-com.google.ads.interactivemedia.v3.api.AdErrorEvent.AdErrorListener-` when the stream manager becomes available.

Note: This method can be considered a stable API as long as the `https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdErrorEvent.AdErrorListener.html` is provided by the IMA library. We can't declare this method stable because we don't have the same guarantee from the library we depend on.

| Parameters |
|---|---|
| `adErrorListener: https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdErrorEvent.AdErrorListener.html!` | The `https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdErrorEvent.AdErrorListener.html`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | This builder, for convenience. |

### setAdEventListener

```
@UnstableApi
@CanIgnoreReturnValue
fun setAdEventListener(adEventListener: AdEvent.AdEventListener!): ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!
```

Sets the optional `https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdEvent.AdEventListener.html` that will be passed to `https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/BaseManager.html#addAdEventListener-com.google.ads.interactivemedia.v3.api.AdEvent.AdEventListener-` when the stream manager becomes available.

Note: This method can be considered a stable API as long as the `https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdEvent.AdEventListener.html` is provided by the IMA library. We can't declare this method stable because we don't have the same guarantee from the library we depend on.

| Parameters |
|---|---|
| `adEventListener: https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdEvent.AdEventListener.html!` | The ad event listener. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | This builder, for convenience. |

### setAdsLoaderState

```
@CanIgnoreReturnValue
fun setAdsLoaderState(
    state: ImaServerSideAdInsertionMediaSource.AdsLoader.State!
): ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!
```

Sets the optional state to resume with.

The state can be received when `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader#release()` the `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader`.

| Parameters |
|---|---|
| `state: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.State!` | The state to resume with. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | This builder, for convenience. |

### setCompanionAdSlots

```
@UnstableApi
@CanIgnoreReturnValue
fun setCompanionAdSlots(
    companionAdSlots: (Mutable)Collection<CompanionAdSlot!>!
): ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!
```

Sets the slots to use for companion ads, if they are present in the loaded ad.

| Parameters |
|---|---|
| `companionAdSlots: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-collection/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-collection/index.html<https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/CompanionAdSlot.html!>!` | The slots to use for companion ads. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | This builder, for convenience. |

| See also |
|---|---|
| `https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/BaseDisplayContainer.html#setCompanionSlots-java.util.Collection&lt;com.google.ads.interactivemedia.v3.api.CompanionAdSlot&gt;-` |   |

### setEnableCustomTabs

```
@UnstableApi
@CanIgnoreReturnValue
fun setEnableCustomTabs(enableCustomTabs: Boolean): ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!
```

Sets whether to enable custom tabs for the ad click-through URLs. The default value is `false`.

| Parameters |
|---|---|
| `enableCustomTabs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether to enable custom tabs for the ad click-through URLs. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | This builder, for convenience. |

| See also |
|---|---|
| `https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdsRenderingSettings.html#setEnableCustomTabs-boolean-` |   |

### setFocusSkipButtonWhenAvailable

```
@UnstableApi
@CanIgnoreReturnValue
fun setFocusSkipButtonWhenAvailable(focusSkipButtonWhenAvailable: Boolean): ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!
```

Sets whether to focus the skip button (when available) on Android TV devices. The default setting is `true`.

| Parameters |
|---|---|
| `focusSkipButtonWhenAvailable: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether to focus the skip button (when available) on Android TV devices. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | This builder, for convenience. |

| See also |
|---|---|
| `https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdsRenderingSettings.html#setFocusSkipButtonWhenAvailable-boolean-` |   |

### setImaSdkSettings

```
@UnstableApi
@CanIgnoreReturnValue
fun setImaSdkSettings(imaSdkSettings: ImaSdkSettings!): ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!
```

Sets the IMA SDK settings.

If this method is not called, the `https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/ImaSdkFactory.html#createImaSdkSettings--` will be used with the language set to `https://developer.android.com/reference/kotlin/androidx/media3/common/util/Util#getSystemLanguageCodes()`.

| Parameters |
|---|---|
| `imaSdkSettings: https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/ImaSdkSettings.html!` | The `https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/ImaSdkSettings.html`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | This builder, for convenience. |

### setPauseAdSlot

```
@UnstableApi
@CanIgnoreReturnValue
fun setPauseAdSlot(pauseAdSlot: AdSlot!): ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!
```

Sets the slot to use for pause ads.

| Parameters |
|---|---|
| `pauseAdSlot: https://developers.google.com/interactive-media-ads/docs/sdks/android/client-side/api/reference/com/google/ads/interactivemedia/v3/api/AdSlot.html!` | The slot to use for pause ads. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | This builder, for convenience. |

### setStreamEventListener

```
@UnstableApi
@CanIgnoreReturnValue
fun setStreamEventListener(
    streamEventListener: ImaServerSideAdInsertionMediaSource.StreamEventListener!
): ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!
```

Sets the optional `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.StreamEventListener` that will be called for stream events.

| Parameters |
|---|---|
| `streamEventListener: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.StreamEventListener!` | The stream event listener. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.AdsLoader.Builder!` | This builder, for convenience. |