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

# RemoteController.OnClientUpdateListener

*** ** * ** ***

` public static interface RemoteController.OnClientUpdateListener `   
` `

|---|
| android.media.RemoteController.OnClientUpdateListener |

<br />

*** ** * ** ***

Interface definition for the callbacks to be invoked whenever media events, metadata and playback status are available.

## Summary

| ### Public methods ||
|---|---|
| ` abstract void` | ` https://developer.android.com/reference/android/media/RemoteController.OnClientUpdateListener#onClientChange(boolean)(boolean clearing) ` Called whenever all information, previously received through the other methods of the listener, is no longer valid and is about to be refreshed. |
| ` abstract void` | ` https://developer.android.com/reference/android/media/RemoteController.OnClientUpdateListener#onClientMetadataUpdate(android.media.RemoteController.MetadataEditor)(https://developer.android.com/reference/android/media/RemoteController.MetadataEditor metadataEditor) ` Called whenever new metadata is available. |
| ` abstract void` | ` https://developer.android.com/reference/android/media/RemoteController.OnClientUpdateListener#onClientPlaybackStateUpdate(int,%20long,%20long,%20float)(int state, long stateChangeTimeMs, long currentPosMs, float speed) ` Called whenever the playback state has changed, and playback position and speed are known. |
| ` abstract void` | ` https://developer.android.com/reference/android/media/RemoteController.OnClientUpdateListener#onClientPlaybackStateUpdate(int)(int state) ` Called whenever the playback state has changed. |
| ` abstract void` | ` https://developer.android.com/reference/android/media/RemoteController.OnClientUpdateListener#onClientTransportControlUpdate(int)(int transportControlFlags) ` Called whenever the transport control flags have changed. |

## Public methods

### onClientChange

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

```
public abstract void onClientChange (boolean clearing)
```

Called whenever all information, previously received through the other methods of the listener, is no longer valid and is about to be refreshed. This is typically called whenever a new `https://developer.android.com/reference/android/media/RemoteControlClient` has been selected by the system to have its media information published.

<br />

| Parameters ||
|---|---|
| `clearing` | `boolean`: true if there is no selected RemoteControlClient and no information is available. <br /> |

### onClientMetadataUpdate

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

```
public abstract void onClientMetadataUpdate (RemoteController.MetadataEditor metadataEditor)
```

Called whenever new metadata is available. See the `https://developer.android.com/reference/android/media/MediaMetadataEditor#putLong(int,%20long)`, `https://developer.android.com/reference/android/media/MediaMetadataEditor#putString(int,%20java.lang.String)`, `https://developer.android.com/reference/android/media/MediaMetadataEditor#putBitmap(int,%20android.graphics.Bitmap)`, and `https://developer.android.com/reference/android/media/MediaMetadataEditor#putObject(int,%20java.lang.Object)` methods for the various keys that can be queried.

<br />

| Parameters ||
|---|---|
| `metadataEditor` | `RemoteController.MetadataEditor`: the container of the new metadata. <br /> |

### onClientPlaybackStateUpdate

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

```
public abstract void onClientPlaybackStateUpdate (int state, 
                long stateChangeTimeMs, 
                long currentPosMs, 
                float speed)
```

Called whenever the playback state has changed, and playback position and speed are known.

<br />

| Parameters ||
|---|---|
| `state` | `int`: one of the playback states authorized in `https://developer.android.com/reference/android/media/RemoteControlClient#setPlaybackState(int)`. <br /> |
| `stateChangeTimeMs` | `long`: the system time at which the state change was reported, expressed in ms. Based on `https://developer.android.com/reference/android/os/SystemClock#elapsedRealtime()`. <br /> |
| `currentPosMs` | `long`: a positive value for the current media playback position expressed in ms, a negative value if the position is temporarily unknown. <br /> |
| `speed` | `float`: a value expressed as a ratio of 1x playback: 1.0f is normal playback, 2.0f is 2x, 0.5f is half-speed, -2.0f is rewind at 2x speed. 0.0f means nothing is playing (e.g. when state is `https://developer.android.com/reference/android/media/RemoteControlClient#PLAYSTATE_ERROR`). <br /> |

### onClientPlaybackStateUpdate

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

```
public abstract void onClientPlaybackStateUpdate (int state)
```

Called whenever the playback state has changed. It is called when no information is known about the playback progress in the media and the playback speed.

<br />

| Parameters ||
|---|---|
| `state` | `int`: one of the playback states authorized in `https://developer.android.com/reference/android/media/RemoteControlClient#setPlaybackState(int)`. <br /> |

### onClientTransportControlUpdate

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

```
public abstract void onClientTransportControlUpdate (int transportControlFlags)
```

Called whenever the transport control flags have changed.

<br />

| Parameters ||
|---|---|
| `transportControlFlags` | `int`: one of the flags authorized in `https://developer.android.com/reference/android/media/RemoteControlClient#setTransportControlFlags(int)`. <br /> |