Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Ctors](https://developer.android.com/reference/android/media/session/PlaybackState.Builder#pubctors) \| [Methods](https://developer.android.com/reference/android/media/session/PlaybackState.Builder#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/media/session/PlaybackState.Builder#inhmethods)

# PlaybackState.Builder

*** ** * ** ***

` public static final class PlaybackState.Builder `   
` extends https://developer.android.com/reference/java/lang/Object ` ` `

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.media.session.PlaybackState.Builder |

<br />

*** ** * ** ***

Builder for `https://developer.android.com/reference/android/media/session/PlaybackState` objects.

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder#Builder()() ` Creates an initially empty state builder. |
| ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder#Builder(android.media.session.PlaybackState)(https://developer.android.com/reference/android/media/session/PlaybackState from) ` Creates a builder with the same initial values as those in the from state. |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder#addCustomAction(java.lang.String,%20java.lang.String,%20int)(https://developer.android.com/reference/java/lang/String action, https://developer.android.com/reference/java/lang/String name, int icon) ` Add a custom action to the playback state. |
| ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder#addCustomAction(android.media.session.PlaybackState.CustomAction)(https://developer.android.com/reference/android/media/session/PlaybackState.CustomAction customAction) ` Add a custom action to the playback state. |
| ` https://developer.android.com/reference/android/media/session/PlaybackState` | ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder#build()() ` Build and return the `https://developer.android.com/reference/android/media/session/PlaybackState` instance with these values. |
| ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder#setActions(long)(long actions) ` Set the current actions available on this session. |
| ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder#setActiveQueueItemId(long)(long id) ` Set the active item in the play queue by specifying its id. |
| ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder#setBufferedPosition(long)(long bufferedPosition) ` Set the current buffered position in ms. |
| ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder#setErrorMessage(java.lang.CharSequence)(https://developer.android.com/reference/java/lang/CharSequence error) ` Set a user readable error message. |
| ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder#setExtras(android.os.Bundle)(https://developer.android.com/reference/android/os/Bundle extras) ` Set any custom extras to be included with the playback state. |
| ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder#setState(int,%20long,%20float)(int state, long position, float playbackSpeed) ` Set the current state of playback. |
| ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | ` https://developer.android.com/reference/android/media/session/PlaybackState.Builder#setState(int,%20long,%20float,%20long)(int state, long position, float playbackSpeed, long updateTime) ` Set the current state of playback. |

### Inherited methods

From class ` https://developer.android.com/reference/java/lang/Object ` ` https://developer.android.com/reference/java/lang/Object` ` https://developer.android.com/reference/java/lang/Object#clone()() `

Creates and returns a copy of this object.
` boolean` ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) `

Indicates whether some other object is "equal to" this one.
` void` ` https://developer.android.com/reference/java/lang/Object#finalize()() `

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
` final https://developer.android.com/reference/java/lang/Class<?>` ` https://developer.android.com/reference/java/lang/Object#getClass()() `

Returns the runtime class of this `Object`.
` int` ` https://developer.android.com/reference/java/lang/Object#hashCode()() `

Returns a hash code value for the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#notify()() `

Wakes up a single thread that is waiting on this object's monitor.
` final void` ` https://developer.android.com/reference/java/lang/Object#notifyAll()() `

Wakes up all threads that are waiting on this object's monitor.
` https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/java/lang/Object#toString()() `

Returns a string representation of the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait()() `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*.

## Public constructors

### Builder

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Builder ()
```

Creates an initially empty state builder.

<br />

### Builder

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Builder (PlaybackState from)
```

Creates a builder with the same initial values as those in the from state.

<br />

| Parameters ||
|---|---|
| `from` | `PlaybackState`: The state to use for initializing the builder. <br /> |

## Public methods

### addCustomAction

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public PlaybackState.Builder addCustomAction (String action, 
                String name, 
                int icon)
```

Add a custom action to the playback state. Actions can be used to expose additional functionality to `https://developer.android.com/reference/android/media/session/MediaController` beyond what is offered by the standard transport controls.

e.g. start a radio station based on the current item or skip ahead by 30 seconds.

<br />

| Parameters ||
|---|---|
| `action` | `String`: An identifier for this action. It can be sent back to the `https://developer.android.com/reference/android/media/session/MediaSession` through `https://developer.android.com/reference/android/media/session/MediaController.TransportControls#sendCustomAction(java.lang.String,%20android.os.Bundle)`. <br /> |
| `name` | `String`: The display name for the action. If text is shown with the action or used for accessibility, this is what should be used. <br /> |
| `icon` | `int`: The resource action of the icon that should be displayed for the action. The resource should be in the package of the `https://developer.android.com/reference/android/media/session/MediaSession`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | this <br /> |

### addCustomAction

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public PlaybackState.Builder addCustomAction (PlaybackState.CustomAction customAction)
```

Add a custom action to the playback state. Actions can be used to expose additional functionality to `https://developer.android.com/reference/android/media/session/MediaController` beyond what is offered by the standard transport controls.

An example of an action would be to start a radio station based on the current item or to skip ahead by 30 seconds.

<br />

| Parameters ||
|---|---|
| `customAction` | `PlaybackState.CustomAction`: The custom action to add to the `https://developer.android.com/reference/android/media/session/PlaybackState`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | this <br /> |

### build

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public PlaybackState build ()
```

Build and return the `https://developer.android.com/reference/android/media/session/PlaybackState` instance with these values.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/session/PlaybackState` | A new state instance. <br /> |

### setActions

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public PlaybackState.Builder setActions (long actions)
```

Set the current actions available on this session. This should use a bitmask of possible actions.

- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_SKIP_TO_PREVIOUS`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_REWIND`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PLAY`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PAUSE`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_STOP`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_FAST_FORWARD`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_SKIP_TO_NEXT`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_SEEK_TO`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_SET_RATING`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PLAY_PAUSE`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PLAY_FROM_MEDIA_ID`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PLAY_FROM_SEARCH`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_SKIP_TO_QUEUE_ITEM`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PLAY_FROM_URI`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PREPARE`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PREPARE_FROM_MEDIA_ID`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PREPARE_FROM_SEARCH`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PREPARE_FROM_URI`
- `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_SET_PLAYBACK_SPEED`

<br />

<br />

| Parameters ||
|---|---|
| `actions` | `long`: The set of actions allowed. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_STOP` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PAUSE` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PLAY` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_REWIND` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_SKIP_TO_PREVIOUS` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_SKIP_TO_NEXT` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_FAST_FORWARD` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_SET_RATING` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_SEEK_TO` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PLAY_PAUSE` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PLAY_FROM_MEDIA_ID` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PLAY_FROM_SEARCH` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_SKIP_TO_QUEUE_ITEM` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PLAY_FROM_URI` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PREPARE` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PREPARE_FROM_MEDIA_ID` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PREPARE_FROM_SEARCH` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_PREPARE_FROM_URI` - `https://developer.android.com/reference/android/media/session/PlaybackState#ACTION_SET_PLAYBACK_SPEED` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | this <br /> |

### setActiveQueueItemId

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public PlaybackState.Builder setActiveQueueItemId (long id)
```

Set the active item in the play queue by specifying its id. The default value is `https://developer.android.com/reference/android/media/session/MediaSession.QueueItem#UNKNOWN_ID`

<br />

| Parameters ||
|---|---|
| `id` | `long`: The id of the active item. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | this <br /> |

### setBufferedPosition

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public PlaybackState.Builder setBufferedPosition (long bufferedPosition)
```

Set the current buffered position in ms. This is the farthest playback point that can be reached from the current position using only buffered content.

<br />

| Parameters ||
|---|---|
| `bufferedPosition` | `long`: The position in ms that playback is buffered to. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | this <br /> |

### setErrorMessage

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public PlaybackState.Builder setErrorMessage (CharSequence error)
```

Set a user readable error message. This should be set when the state is `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_ERROR`.

<br />

| Parameters ||
|---|---|
| `error` | `CharSequence`: The error message for display to the user. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | this <br /> |

### setExtras

Added in [API level 22](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public PlaybackState.Builder setExtras (Bundle extras)
```

Set any custom extras to be included with the playback state.

<br />

| Parameters ||
|---|---|
| `extras` | `Bundle`: The extras to include. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | this <br /> |

### setState

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public PlaybackState.Builder setState (int state, 
                long position, 
                float playbackSpeed)
```

Set the current state of playback.

The position must be in ms and indicates the current playback position within the item. If the position is unknown use `https://developer.android.com/reference/android/media/session/PlaybackState#PLAYBACK_POSITION_UNKNOWN`. The update time will be set to the current `https://developer.android.com/reference/android/os/SystemClock#elapsedRealtime()`.

The speed is a multiple of normal playback and should be 0 when paused and negative when rewinding. Normal playback speed is 1.0.

The state must be one of the following:

- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_NONE`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_STOPPED`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_PLAYING`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_PAUSED`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_FAST_FORWARDING`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_REWINDING`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_BUFFERING`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_ERROR`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_CONNECTING`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_SKIPPING_TO_PREVIOUS`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_SKIPPING_TO_NEXT`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_SKIPPING_TO_QUEUE_ITEM`

<br />

<br />

| Parameters ||
|---|---|
| `state` | `int`: The current state of playback. Value is one of the following: - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_NONE` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_STOPPED` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_PAUSED` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_PLAYING` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_FAST_FORWARDING` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_REWINDING` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_BUFFERING` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_ERROR` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_CONNECTING` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_SKIPPING_TO_PREVIOUS` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_SKIPPING_TO_NEXT` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_SKIPPING_TO_QUEUE_ITEM` |
| `position` | `long`: The position in the current item in ms. <br /> |
| `playbackSpeed` | `float`: The current speed of playback as a multiple of normal playback. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | this <br /> |

### setState

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public PlaybackState.Builder setState (int state, 
                long position, 
                float playbackSpeed, 
                long updateTime)
```

Set the current state of playback.

The position must be in ms and indicates the current playback position within the item. If the position is unknown use `https://developer.android.com/reference/android/media/session/PlaybackState#PLAYBACK_POSITION_UNKNOWN`. When not using an unknown position the time at which the position was updated must be provided. It is okay to use `https://developer.android.com/reference/android/os/SystemClock#elapsedRealtime()` if the current position was just retrieved.

The speed is a multiple of normal playback and should be 0 when paused and negative when rewinding. Normal playback speed is 1.0.

The state must be one of the following:

- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_NONE`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_STOPPED`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_PLAYING`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_PAUSED`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_FAST_FORWARDING`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_REWINDING`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_BUFFERING`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_ERROR`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_CONNECTING`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_SKIPPING_TO_PREVIOUS`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_SKIPPING_TO_NEXT`
- `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_SKIPPING_TO_QUEUE_ITEM`

<br />

<br />

| Parameters ||
|---|---|
| `state` | `int`: The current state of playback. Value is one of the following: - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_NONE` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_STOPPED` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_PAUSED` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_PLAYING` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_FAST_FORWARDING` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_REWINDING` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_BUFFERING` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_ERROR` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_CONNECTING` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_SKIPPING_TO_PREVIOUS` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_SKIPPING_TO_NEXT` - `https://developer.android.com/reference/android/media/session/PlaybackState#STATE_SKIPPING_TO_QUEUE_ITEM` |
| `position` | `long`: The position in the current item in ms. <br /> |
| `playbackSpeed` | `float`: The current speed of playback as a multiple of normal playback. <br /> |
| `updateTime` | `long`: The time in the `https://developer.android.com/reference/android/os/SystemClock#elapsedRealtime()` timebase that the position was updated at. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/session/PlaybackState.Builder` | this <br /> |