in amazon-chime-sdk/src/main/java/com/amazonaws/services/chime/sdk/meetings/device/DefaultDeviceController.kt [180:208]
override fun getActiveAudioDevice(): MediaDevice? {
if (buildVersion >= Build.VERSION_CODES.N) {
if (audioManager.activeRecordingConfigurations.isNotEmpty()) {
val device =
audioManager.activeRecordingConfigurations.firstOrNull { config -> config.audioDevice != null }?.audioDevice
if (device != null) {
val type = device.type
var mediaDeviceType: MediaDeviceType = MediaDeviceType.fromAudioDeviceInfo(type)
if (type == AudioDeviceInfo.TYPE_BUILTIN_MIC) {
// Built-in mic has two case speaker, built-in receiver
mediaDeviceType = if (audioManager.isSpeakerphoneOn) {
MediaDeviceType.fromAudioDeviceInfo(AudioDeviceInfo.TYPE_BUILTIN_SPEAKER)
} else {
MediaDeviceType.fromAudioDeviceInfo(AudioDeviceInfo.TYPE_BUILTIN_EARPIECE)
}
}
return listAudioDevices().firstOrNull {
it.type == mediaDeviceType
}
}
// Some android devices doesn't have audio device for speaker
if (audioManager.isSpeakerphoneOn) return listAudioDevices().firstOrNull {
it.type == MediaDeviceType.AUDIO_BUILTIN_SPEAKER
}
}
}
return null
}