# DefaultPlaybackSessionManager

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/analytics/DefaultPlaybackSessionManager.java+class:androidx.media3.exoplayer.analytics.DefaultPlaybackSessionManager)

*** ** * ** ***

<br />

```
@UnstableApi
class DefaultPlaybackSessionManager : PlaybackSessionManager
```

<br />

*** ** * ** ***

Default `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/PlaybackSessionManager` which instantiates a new session for each window in the timeline and also for each ad within the windows.

By default, sessions are identified by Base64-encoded, URL-safe, random strings.

## Summary

| ### Constants |
|---|---|
| `const https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!>!` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManager#DEFAULT_SESSION_ID_GENERATOR()` Default generator for unique session ids that are random, Based64-encoded and URL-safe. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManager#DefaultPlaybackSessionManager()()` Creates session manager with a `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManager#DEFAULT_SESSION_ID_GENERATOR()` to generate session ids. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManager#DefaultPlaybackSessionManager(com.google.common.base.Supplier<java.lang.String>)(sessionIdGenerator: https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!>!)` Creates session manager. |

| ### Public functions |
|---|---|
| `synchronized https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManager#belongsToSession(androidx.media3.exoplayer.analytics.AnalyticsListener.EventTime,java.lang.String)( eventTime: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime!, sessionId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html! )` Returns whether an event time belong to a session. |
| `synchronized https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManager#finishAllSessions(androidx.media3.exoplayer.analytics.AnalyticsListener.EventTime)(eventTime: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime!)` Finishes all existing sessions and calls their respective `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/PlaybackSessionManager.Listener#onSessionFinished(androidx.media3.exoplayer.analytics.AnalyticsListener.EventTime,java.lang.String,boolean)` callback. |
| `synchronized https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html?` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManager#getActiveSessionId()()` Returns the session identifier of the session that is currently actively playing, or ` null` if there no such session. |
| `synchronized https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManager#getSessionForMediaPeriodId(androidx.media3.common.Timeline,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)( timeline: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline!, mediaPeriodId: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId! )` Returns the session identifier for the given media period id. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManager#setListener(androidx.media3.exoplayer.analytics.PlaybackSessionManager.Listener)(listener: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/PlaybackSessionManager.Listener!)` Sets the listener to be notified of session updates. |
| `synchronized https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManager#updateSessions(androidx.media3.exoplayer.analytics.AnalyticsListener.EventTime)(eventTime: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime!)` Updates or creates sessions based on a player `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime`. |
| `synchronized https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManager#updateSessionsWithDiscontinuity(androidx.media3.exoplayer.analytics.AnalyticsListener.EventTime,int)( eventTime: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime!, @https://developer.android.com/reference/kotlin/androidx/media3/common/Player.DiscontinuityReason reason: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` Updates or creates sessions based on a position discontinuity at `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime`. |
| `synchronized https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManager#updateSessionsWithTimelineChange(androidx.media3.exoplayer.analytics.AnalyticsListener.EventTime)( eventTime: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime! )` Updates or creates sessions based on a `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline` change at `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime`. |

## Constants

### DEFAULT_SESSION_ID_GENERATOR

```
const val DEFAULT_SESSION_ID_GENERATOR: Supplier<String!>!
```

Default generator for unique session ids that are random, Based64-encoded and URL-safe.

## Public constructors

### DefaultPlaybackSessionManager

```
DefaultPlaybackSessionManager()
```

Creates session manager with a `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManager#DEFAULT_SESSION_ID_GENERATOR()` to generate session ids.

### DefaultPlaybackSessionManager

```
DefaultPlaybackSessionManager(sessionIdGenerator: Supplier<String!>!)
```

Creates session manager.

| Parameters |
|---|---|
| `sessionIdGenerator: https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!>!` | A generator for new session ids. All generated session ids must be unique. |

## Public functions

### belongsToSession

```
synchronized fun belongsToSession(
    eventTime: AnalyticsListener.EventTime!,
    sessionId: String!
): Boolean
```

Returns whether an event time belong to a session.

| Parameters |
|---|---|
| `eventTime: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime!` | The `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime`. |
| `sessionId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!` | A session identifier. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether the event belongs to the specified session. |

### finishAllSessions

```
synchronized fun finishAllSessions(eventTime: AnalyticsListener.EventTime!): Unit
```

Finishes all existing sessions and calls their respective `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/PlaybackSessionManager.Listener#onSessionFinished(androidx.media3.exoplayer.analytics.AnalyticsListener.EventTime,java.lang.String,boolean)` callback.

| Parameters |
|---|---|
| `eventTime: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime!` | The event time at which sessions are finished. |

### getActiveSessionId

```
synchronized fun getActiveSessionId(): String?
```

Returns the session identifier of the session that is currently actively playing, or ` null` if there no such session.

### getSessionForMediaPeriodId

```
synchronized fun getSessionForMediaPeriodId(
    timeline: Timeline!,
    mediaPeriodId: MediaSource.MediaPeriodId!
): String!
```

Returns the session identifier for the given media period id.

Note that this will reserve a new session identifier if it doesn't exist yet, but will not call any `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/PlaybackSessionManager.Listener` callbacks.

| Parameters |
|---|---|
| `timeline: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline!` | The timeline, `mediaPeriodId` is part of. |
| `mediaPeriodId: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId!` | A `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId`. |

### setListener

```
fun setListener(listener: PlaybackSessionManager.Listener!): Unit
```

Sets the listener to be notified of session updates. Must be called before the session manager is used.

| Parameters |
|---|---|
| `listener: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/PlaybackSessionManager.Listener!` | The `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/PlaybackSessionManager.Listener` to be notified of session updates. |

### updateSessions

```
synchronized fun updateSessions(eventTime: AnalyticsListener.EventTime!): Unit
```

Updates or creates sessions based on a player `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime`.

Call `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/PlaybackSessionManager#updateSessionsWithTimelineChange(androidx.media3.exoplayer.analytics.AnalyticsListener.EventTime)` or `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/PlaybackSessionManager#updateSessionsWithDiscontinuity(androidx.media3.exoplayer.analytics.AnalyticsListener.EventTime,int)` if the event is a `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline` change or a position discontinuity respectively.

| Parameters |
|---|---|
| `eventTime: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime!` | The `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime`. |

### updateSessionsWithDiscontinuity

```
synchronized fun updateSessionsWithDiscontinuity(
    eventTime: AnalyticsListener.EventTime!,
    @Player.DiscontinuityReason reason: Int
): Unit
```

Updates or creates sessions based on a position discontinuity at `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime`.

Should be called instead of `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/PlaybackSessionManager#updateSessions(androidx.media3.exoplayer.analytics.AnalyticsListener.EventTime)` if a position discontinuity occurred.

| Parameters |
|---|---|
| `eventTime: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime!` | The `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime` of the position discontinuity. |
| `@https://developer.android.com/reference/kotlin/androidx/media3/common/Player.DiscontinuityReason reason: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The `https://developer.android.com/reference/kotlin/androidx/media3/common/Player.DiscontinuityReason`. |

### updateSessionsWithTimelineChange

```
synchronized fun updateSessionsWithTimelineChange(
    eventTime: AnalyticsListener.EventTime!
): Unit
```

Updates or creates sessions based on a `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline` change at `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime`.

Should be called instead of `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/PlaybackSessionManager#updateSessions(androidx.media3.exoplayer.analytics.AnalyticsListener.EventTime)` if a `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline` change occurred.

| Parameters |
|---|---|
| `eventTime: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime!` | The `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/analytics/AnalyticsListener.EventTime` with the timeline change. |