Added in [API level 24](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Nested Classes](https://developer.android.com/reference/android/media/AudioRouting#nestedclasses) \| [Methods](https://developer.android.com/reference/android/media/AudioRouting#pubmethods)

# AudioRouting

*** ** * ** ***


`
public


interface
AudioRouting
`


`


`

|---|
| android.media.AudioRouting |

|---|
| Known indirect subclasses [AudioRecord](https://developer.android.com/reference/android/media/AudioRecord), [AudioTrack](https://developer.android.com/reference/android/media/AudioTrack), [MediaPlayer](https://developer.android.com/reference/android/media/MediaPlayer), [MediaRecorder](https://developer.android.com/reference/android/media/MediaRecorder) |---|---| | [AudioRecord](https://developer.android.com/reference/android/media/AudioRecord) | The AudioRecord class manages the audio resources for Java applications to record audio from the audio input hardware of the platform. | | [AudioTrack](https://developer.android.com/reference/android/media/AudioTrack) | The AudioTrack class manages and plays a single audio resource for Java applications. | | [MediaPlayer](https://developer.android.com/reference/android/media/MediaPlayer) | MediaPlayer class can be used to control playback of audio/video files and streams. | | [MediaRecorder](https://developer.android.com/reference/android/media/MediaRecorder) | Used to record audio and video. | |

<br />

*** ** * ** ***

AudioRouting defines an interface for controlling routing and routing notifications in
AudioTrack and AudioRecord objects.

## Summary

| ### Nested classes ||
|---|---|
| ` interface` | `https://developer.android.com/reference/android/media/AudioRouting.OnRoutingChangedListener` Defines the interface by which applications can receive notifications of routing changes for the associated `https://developer.android.com/reference/android/media/AudioRouting`. |

| ### Public methods ||
|---|---|
| ` abstract void` | ` https://developer.android.com/reference/android/media/AudioRouting#addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener,%20android.os.Handler)(https://developer.android.com/reference/android/media/AudioRouting.OnRoutingChangedListener listener, https://developer.android.com/reference/android/os/Handler handler) ` Adds an `https://developer.android.com/reference/android/media/AudioRouting.OnRoutingChangedListener` to receive notifications of routing changes on this AudioTrack/AudioRecord. |
| ` abstract https://developer.android.com/reference/android/media/AudioDeviceInfo` | ` https://developer.android.com/reference/android/media/AudioRouting#getPreferredDevice()() ` Returns the selected output/input specified by `https://developer.android.com/reference/android/media/AudioRouting#setPreferredDevice(android.media.AudioDeviceInfo)`. |
| ` abstract https://developer.android.com/reference/android/media/AudioDeviceInfo` | ` https://developer.android.com/reference/android/media/AudioRouting#getRoutedDevice()() ` Returns an `https://developer.android.com/reference/android/media/AudioDeviceInfo` identifying the current routing of this AudioTrack/AudioRecord. |
| ` default https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/media/AudioDeviceInfo>` | ` https://developer.android.com/reference/android/media/AudioRouting#getRoutedDevices()() ` Returns a List of `https://developer.android.com/reference/android/media/AudioDeviceInfo` identifying the current routing of this AudioTrack/AudioRecord. |
| ` abstract void` | ` https://developer.android.com/reference/android/media/AudioRouting#removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener)(https://developer.android.com/reference/android/media/AudioRouting.OnRoutingChangedListener listener) ` Removes an `https://developer.android.com/reference/android/media/AudioRouting.OnRoutingChangedListener` which has been previously added to receive rerouting notifications. |
| ` abstract boolean` | ` https://developer.android.com/reference/android/media/AudioRouting#setPreferredDevice(android.media.AudioDeviceInfo)(https://developer.android.com/reference/android/media/AudioDeviceInfo deviceInfo) ` Specifies an audio device (via an `https://developer.android.com/reference/android/media/AudioDeviceInfo` object) to route the output/input to/from. |

## Public methods

### addOnRoutingChangedListener

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

```
public abstract void addOnRoutingChangedListener (AudioRouting.OnRoutingChangedListener listener, 
                Handler handler)
```

Adds an `https://developer.android.com/reference/android/media/AudioRouting.OnRoutingChangedListener` to receive notifications of routing
changes on this AudioTrack/AudioRecord.

<br />

| Parameters ||
|---|---|
| `listener` | `AudioRouting.OnRoutingChangedListener`: The `https://developer.android.com/reference/android/media/AudioRouting.OnRoutingChangedListener` interface to receive notifications of rerouting events. <br /> |
| `handler` | `Handler`: Specifies the `https://developer.android.com/reference/android/os/Handler` object for the thread on which to execute the callback. If `null`, the `https://developer.android.com/reference/android/os/Handler` associated with the main `https://developer.android.com/reference/android/os/Looper` will be used. <br /> |

### getPreferredDevice

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

```
public abstract AudioDeviceInfo getPreferredDevice ()
```

Returns the selected output/input specified by `https://developer.android.com/reference/android/media/AudioRouting#setPreferredDevice(android.media.AudioDeviceInfo)`. Note that this
is not guaranteed to correspond to the actual device being used for playback/recording.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/AudioDeviceInfo` | <br /> |

### getRoutedDevice

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

```
public abstract AudioDeviceInfo getRoutedDevice ()
```

Returns an `https://developer.android.com/reference/android/media/AudioDeviceInfo` identifying the current routing of this
AudioTrack/AudioRecord.
Note: The query is only valid if the AudioTrack/AudioRecord is currently playing.
If it is not, `getRoutedDevice()` will return null.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/AudioDeviceInfo` | <br /> |

### getRoutedDevices

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

```
public List<AudioDeviceInfo> getRoutedDevices ()
```

Returns a List of `https://developer.android.com/reference/android/media/AudioDeviceInfo` identifying the current routing of this
AudioTrack/AudioRecord.
Note: The query is only valid if the AudioTrack/AudioRecord is currently playing.
If it is not, `getRoutedDevices()` will return an empty List.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/media/AudioDeviceInfo>` | This value cannot be `null`. <br /> |

### removeOnRoutingChangedListener

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

```
public abstract void removeOnRoutingChangedListener (AudioRouting.OnRoutingChangedListener listener)
```

Removes an `https://developer.android.com/reference/android/media/AudioRouting.OnRoutingChangedListener` which has been previously added
to receive rerouting notifications.

<br />

| Parameters ||
|---|---|
| `listener` | `AudioRouting.OnRoutingChangedListener`: The previously added `https://developer.android.com/reference/android/media/AudioRouting.OnRoutingChangedListener` interface to remove. <br /> |

### setPreferredDevice

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

```
public abstract boolean setPreferredDevice (AudioDeviceInfo deviceInfo)
```

Specifies an audio device (via an `https://developer.android.com/reference/android/media/AudioDeviceInfo` object) to route
the output/input to/from.

<br />

| Parameters ||
|---|---|
| `deviceInfo` | `AudioDeviceInfo`: The `https://developer.android.com/reference/android/media/AudioDeviceInfo` specifying the audio sink or source. If deviceInfo is null, default routing is restored. <br /> |

| Returns ||
|---|---|
| `boolean` | true if succesful, false if the specified `https://developer.android.com/reference/android/media/AudioDeviceInfo` is non-null and does not correspond to a valid audio device. <br /> |