amazon-chime-sdk / com.amazonaws.services.chime.sdk.meetings.device / DeviceController

# DeviceController

`interface DeviceController`

DeviceController keeps track of the devices being used for audio device (e.g. built-in speaker), video input (e.g. camera)). The list functions return MediaDevice objects. Changes in device availability are broadcast to any registered DeviceChangeObserver.

### Functions

#### addDeviceChangeObserver | Adds an observer to receive callbacks about device changes. `abstract fun addDeviceChangeObserver(observer: DeviceChangeObserver): Unit`
#### chooseAudioDevice | Selects an audio device to use. `abstract fun chooseAudioDevice(mediaDevice: MediaDevice): Unit`
#### getActiveAudioDevice | Get the active input/output audio device in the meeting, return null if there isn't any. `abstract fun getActiveAudioDevice(): MediaDevice?`
#### getActiveCamera | Get the currently active camera, if any. This will return null if using a custom source, e.g. one passed in via AudioVideoControllerFacade.startLocalVideo `abstract fun getActiveCamera(): MediaDevice?`
#### listAudioDevices | Lists currently available audio devices. `abstract fun listAudioDevices(): List<MediaDevice>`
#### removeDeviceChangeObserver | Removes an observer to stop receiving callbacks about device changes. `abstract fun removeDeviceChangeObserver(observer: DeviceChangeObserver): Unit`
#### switchCamera | Switches the currently active camera. This will no-op if using a custom source, e.g. one passed in via AudioVideoControllerFacade.startLocalVideo `abstract fun switchCamera(): Unit`

### Inheritors

#### AudioVideoFacade | `interface AudioVideoFacade : AudioVideoControllerFacade, RealtimeControllerFacade, DeviceController, VideoTileControllerFacade, ActiveSpeakerDetectorFacade, ContentShareController, EventAnalyticsFacade`
#### DefaultDeviceController | `class DefaultDeviceController : DeviceController`