IAudioDeviceManager
Interface that may be used to manage audio devices, i.e. see current active device, select another active device and get the list of available devices.
Voximplant Android SDK supports the following devices:
- earpiece
- speaker
- wired headset
- bluetooth headset
Default audio device
The earpiece is the default audio device for devices that supports telephony feature (android phones). The speaker is the default audio device for android tablets.
Before a call
In case if the audio device was not selected via IAudioDeviceManager.selectAudioDevice(AudioDevice), it will be selected according to the
following priority order:
- bluetooth (if connected)
- wired headset (if connected)
- earpiece (if available)
- speaker
In case if audio device was selected via IAudioDeviceManager.selectAudioDevice(AudioDevice) and then a higher priority device is connected, the new device will be used for a call. For example, speaker was selected and then bluetooth headset is connected, in this case bluetooth device will be used for a call.
During the call
In case if new audio device (wired headset or bluetooth headset) is connected, active
audio device is switched to the new connected audio device.
In case if active audio device is disconnected (wired or bluetooth headset), active audio device will be selected
according to the priority order.
In case if active audio device is selected via IAudioDeviceManager.selectAudioDevice(AudioDevice), active audio device
is switched to the selected device.
In case if active audio device is selected via IAudioDeviceManager.selectAudioDevice(AudioDevice) and then new
audio device is connected (wired or bluetooth headset), active audio device is switched to the new
audio device. If wired or bluetooth headset will be disconnected during the same call,
previously selected audio device becomes active.
For example:
- wired headset is connected
- call is started -> wired headset is active device
- speaker is selected as active device -> speaker is active device
- bluetooth headset is connected -> bluetooth is active device
- bluetooth headset is disconnected -> speaker is active device
Limits:
- IAudioDeviceManager should be used only after IClient initialization via Voximplant.getClientInstance(Executor, Context, ClientConfig)
- The plug in/out of a wired headset and bluetooth devices is monitored only if a connection to the Voximplant Cloud is active
- It is not possible to select an earpiece while wired headset is connected
Methods
addAudioDeviceEventsListener
Since 2.3.4void addAudioDeviceEventsListener(IAudioDeviceEventsListener listener)
Add IAudioDeviceEventsListener listener to handle audio device changes events.
Parameters
listener:
IAudioDeviceEventsListener
getActiveDevice
Since 2.3.4AudioDevice getActiveDevice()
Returns active audio device during the call or audio device that will be used for a call if there is no calls at this moment.
Please note that active audio device can be later changed if new device is connected. In this case IAudioDeviceEventsListener.onAudioDeviceChanged(AudioDevice) will be triggered to notify about new active device.
Returns
Return:
AudioDeviceSelected active audio device
getAudioDevices
Since 2.3.4List<AudioDevice> getAudioDevices()
Returns the list of available audio devices.
Returns
Return:
List<AudioDevice>Current list of available audio devices
removeAudioDeviceEventsListener
Since 2.3.4void removeAudioDeviceEventsListener(IAudioDeviceEventsListener listener)
Remove IAudioDeviceEventsListener listener.
Parameters
listener:
IAudioDeviceEventsListener
selectAudioDevice
Since 2.3.4void selectAudioDevice(AudioDevice audioDevice)
Changes selection of the current active audio device. There are two cases:
- before a call. The method doesn't activate an audio device, it just selects (i.e. points to) the audio device that will be activated
- during a call. If the selected audio device is available, the method activates this audio device.
When the call is ended, selected audio device is reset to the default one.
Please note that active audio device can be later changed if new device is connected. In this case IAudioDeviceEventsListener.onAudioDeviceChanged(AudioDevice) will be triggered to notify about new active device.
Parameters
audioDevice:
AudioDeviceAudio device to be set active
setAudioFocusChangeListener
void setAudioFocusChangeListener(IAudioFocusChangeListener listener)
Set IAudioFocusChangeListener listener to handle audio focus change events.
Parameters
listener:
IAudioFocusChangeListenerIAudioFocusChangeListener listener or null.