in app/src/main/java/com/amazonaws/ivs/basicbroadcast/viewModel/MainViewModel.kt [252:281]
fun microphoneSelectionChanged(position: Int) {
Log.d(TAG, "Microphone device changed")
if (position < context.getAvailableMicrophoneSize()) {
val device = context.getSelectedMicrophone(position)
Log.d(TAG, "Selected device ${device.deviceId}")
microphoneDevice?.let {
if (it.deviceId != device.deviceId && session != null) {
try {
session?.exchangeDevices(it, device) { microphone ->
Log.d(TAG, "Device attached ${microphone.descriptor.deviceId}")
microphoneDevice = microphone.descriptor
if (isMuted) {
microphone as AudioDevice
microphone.setGain(0f)
}
}
} catch (e: BroadcastException) {
Log.d(TAG, "Microphone exchange exception $e")
attachMicrophoneDevice(device)
}
}
}
if (microphoneDevice == null) {
attachMicrophoneDevice(device)
}
if (session == null) microphoneDevice = device
}
}