# MediaSessionStatus

Artifact: [androidx.mediarouter:mediarouter](https://developer.android.com/jetpack/androidx/releases/mediarouter) [View Source](https://cs.android.com/search?q=file:androidx/mediarouter/media/MediaSessionStatus.java+class:androidx.mediarouter.media.MediaSessionStatus) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/mediarouter#1.1.0)

*** ** * ** ***


```
public final class MediaSessionStatus
```

<br />

*** ** * ** ***

Describes the playback status of a media session.

This class is part of the remote playback protocol described by the `https://developer.android.com/reference/androidx/mediarouter/media/MediaControlIntent` class.

When a media session is created, it is initially in the `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus#SESSION_STATE_ACTIVE()` state. When the media session ends normally, it transitions to the `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus#SESSION_STATE_ENDED()` state. If the media session is invalidated due to another session forcibly taking control of the route, then it transitions to the `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus#SESSION_STATE_INVALIDATED()` state. Refer to the documentation of each state for an explanation of its meaning.

To monitor session status, the application should supply a `https://developer.android.com/reference/android/app/PendingIntent.html` to use as the `https://developer.android.com/reference/androidx/mediarouter/media/MediaControlIntent#EXTRA_SESSION_STATUS_UPDATE_RECEIVER()` for a given `https://developer.android.com/reference/androidx/mediarouter/media/MediaControlIntent#ACTION_START_SESSION()`.

This object is immutable once created using a `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus.Builder` instance.

## Summary

| ### Nested types |
|---|
| `public final class https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus.Builder` Builder for `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus`. |

| ### Constants |
|---|---|
| `static final int` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus#SESSION_STATE_ACTIVE() = 0` Session state: Active. |
| `static final int` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus#SESSION_STATE_ENDED() = 1` Session state: Ended. |
| `static final int` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus#SESSION_STATE_INVALIDATED() = 2` Session state: Invalidated. |

| ### Public methods |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/os/Bundle.html` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus#asBundle()()` Converts this object to a bundle for serialization. |
| `static @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus#fromBundle(android.os.Bundle)(@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/os/Bundle.html bundle)` Creates an instance from a bundle. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/os/Bundle.html` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus#getExtras()()` Gets a bundle of extras for this status object. |
| `int` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus#getSessionState()()` Gets the session state. |
| `long` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus#getTimestamp()()` Gets the timestamp associated with the status information in milliseconds since boot in the `https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtime()` time base. |
| `boolean` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus#isQueuePaused()()` Returns true if the session's queue is paused. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus#toString()()` |

## Constants

### SESSION_STATE_ACTIVE

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/mediarouter#1.1.0)

```
public static final int SESSION_STATE_ACTIVE = 0
```

Session state: Active.

Indicates that the media session is active and in control of the route.

### SESSION_STATE_ENDED

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/mediarouter#1.1.0)

```
public static final int SESSION_STATE_ENDED = 1
```

Session state: Ended.

Indicates that the media session was ended normally using the `https://developer.android.com/reference/androidx/mediarouter/media/MediaControlIntent#ACTION_END_SESSION()` action.

A terminated media session cannot be used anymore. To play more media, the application must start a new session.

### SESSION_STATE_INVALIDATED

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/mediarouter#1.1.0)

```
public static final int SESSION_STATE_INVALIDATED = 2
```

Session state: Invalidated.

Indicates that the media session was invalidated involuntarily due to another session taking control of the route.

An invalidated media session cannot be used anymore. To play more media, the application must start a new session.

## Public methods

### asBundle

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/mediarouter#1.1.0)

```
public @NonNull Bundle asBundle()
```

Converts this object to a bundle for serialization.

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/os/Bundle.html` | The contents of the object represented as a bundle. |

### fromBundle

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/mediarouter#1.1.0)

```
public static @Nullable MediaSessionStatus fromBundle(@Nullable Bundle bundle)
```

Creates an instance from a bundle.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/android/os/Bundle.html bundle` | The bundle, or null if none. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus` | The new instance, or null if the bundle was null. |

### getExtras

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/mediarouter#1.1.0)

```
public @Nullable Bundle getExtras()
```

Gets a bundle of extras for this status object. The extras will be ignored by the media router but they may be used by applications.

### getSessionState

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/mediarouter#1.1.0)

```
public int getSessionState()
```

Gets the session state.

| Returns |
|---|---|
| `int` | The session state. One of `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus#SESSION_STATE_ACTIVE()`, `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus#SESSION_STATE_ENDED()`, or `https://developer.android.com/reference/androidx/mediarouter/media/MediaSessionStatus#SESSION_STATE_INVALIDATED()`. |

### getTimestamp

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/mediarouter#1.1.0)

```
public long getTimestamp()
```

Gets the timestamp associated with the status information in milliseconds since boot in the `https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtime()` time base.

| Returns |
|---|---|
| `long` | The status timestamp in the `https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtime()` time base. |

### isQueuePaused

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/mediarouter#1.1.0)

```
public boolean isQueuePaused()
```

Returns true if the session's queue is paused.

| Returns |
|---|---|
| `boolean` | True if the session's queue is paused. |

### toString

```
public @NonNull String toString()
```