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

# TransferCallback

*** ** * ** ***

Kotlin \|[Java](https://developer.android.com/reference/android/media/MediaRouter2.TransferCallback "View this page in Java")

```
abstract class TransferCallback
```

|---|---|
| [kotlin.Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html) ||
| ↳ | [android.media.MediaRouter2.TransferCallback](https://developer.android.com/reference/kotlin/android/media/MediaRouter2.TransferCallback#) |

Callback for receiving events on media transfer.

## Summary

| Public constructors ||
|---|---|
| `https://developer.android.com/reference/kotlin/android/media/MediaRouter2.TransferCallback#TransferCallback()()` <br /> |

| Public methods ||
|---|---|
| open [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | `https://developer.android.com/reference/kotlin/android/media/MediaRouter2.TransferCallback#onStop(android.media.MediaRouter2.RoutingController)(controller: https://developer.android.com/reference/kotlin/android/media/MediaRouter2.RoutingController)` Called when a media routing stops. |
| open [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | `https://developer.android.com/reference/kotlin/android/media/MediaRouter2.TransferCallback#onTransfer(android.media.MediaRouter2.RoutingController,%20android.media.MediaRouter2.RoutingController)(oldController: https://developer.android.com/reference/kotlin/android/media/MediaRouter2.RoutingController, newController: https://developer.android.com/reference/kotlin/android/media/MediaRouter2.RoutingController)` Called when a media is transferred between two different routing controllers. |
| open [Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | `https://developer.android.com/reference/kotlin/android/media/MediaRouter2.TransferCallback#onTransferFailure(android.media.MediaRoute2Info)(requestedRoute: https://developer.android.com/reference/kotlin/android/media/MediaRoute2Info)` Called when `https://developer.android.com/reference/kotlin/android/media/MediaRouter2#transferTo(android.media.MediaRoute2Info)` failed. |

## Public constructors

### TransferCallback

```
TransferCallback()
```

## Public methods

### onStop

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

```
open fun onStop(controller: MediaRouter2.RoutingController): Unit
```

Called when a media routing stops. It can be stopped by a user or a provider. App should not continue playing media locally when this method is called. The `controller` is released before this method is called.

| Parameters ||
|---|---|
| `controller` | [MediaRouter2.RoutingController](https://developer.android.com/reference/kotlin/android/media/MediaRouter2.RoutingController): the controller that controlled the stopped media routing. This value cannot be `null`. |

### onTransfer

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

```
open fun onTransfer(
    oldController: MediaRouter2.RoutingController, 
    newController: MediaRouter2.RoutingController
): Unit
```

Called when a media is transferred between two different routing controllers. This can happen by calling `https://developer.android.com/reference/kotlin/android/media/MediaRouter2#transferTo(android.media.MediaRoute2Info)`.

Override this to start playback with `newController`. You may want to get the status of the media that is being played with `oldController` and resume it continuously with `newController`. After this is called, any callbacks with `oldController` will not be invoked unless `oldController` is the `https://developer.android.com/reference/kotlin/android/media/MediaRouter2#getSystemController()`. You need to `https://developer.android.com/reference/kotlin/android/media/MediaRouter2.RoutingController#release()` `oldController` before playing the media with `newController`.

| Parameters ||
|---|---|
| `oldController` | [MediaRouter2.RoutingController](https://developer.android.com/reference/kotlin/android/media/MediaRouter2.RoutingController): the previous controller that controlled routing. This value cannot be `null`. |
| `newController` | [MediaRouter2.RoutingController](https://developer.android.com/reference/kotlin/android/media/MediaRouter2.RoutingController): the new controller to control routing. This value cannot be `null`. |

**See Also**

- `https://developer.android.com/reference/kotlin/android/media/MediaRouter2#transferTo(android.media.MediaRoute2Info)`

### onTransferFailure

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

```
open fun onTransferFailure(requestedRoute: MediaRoute2Info): Unit
```

Called when `https://developer.android.com/reference/kotlin/android/media/MediaRouter2#transferTo(android.media.MediaRoute2Info)` failed.

| Parameters ||
|---|---|
| `requestedRoute` | [MediaRoute2Info](https://developer.android.com/reference/kotlin/android/media/MediaRoute2Info): the route info which was used for the transfer. This value cannot be `null`. |