in amazon-chime-sdk/src/main/java/com/amazonaws/services/chime/sdk/meetings/internal/audio/DefaultAudioClientObserver.kt [189:220]
override fun onVolumeStateChange(attendeeUpdates: Array<out AttendeeUpdate>?) {
if (attendeeUpdates == null) return
val newAttendeeVolumeMap: Map<String, VolumeUpdate> =
attendeeUpdates.mapNotNull { attendeeUpdate ->
VolumeLevel.from(attendeeUpdate.data)?.let {
val attendeeInfo = createAttendeeInfo(attendeeUpdate)
attendeeUpdate.profileId to VolumeUpdate(
attendeeInfo,
it
)
}
}.toMap()
val changedAttendeeVolumeMap: Map<String, VolumeUpdate> =
newAttendeeVolumeMap.filter { (key, value) ->
value.volumeLevel != currentAttendeeVolumeMap[key]?.volumeLevel
}
onAttendeesMuteStateChange(changedAttendeeVolumeMap)
if (changedAttendeeVolumeMap.isNotEmpty()) {
val volumeUpdates: Array<VolumeUpdate> = changedAttendeeVolumeMap.values.toTypedArray()
ObserverUtils.notifyObserverOnMainThread(realtimeEventObservers) {
it.onVolumeChanged(
volumeUpdates
)
}
}
currentAttendeeVolumeMap = newAttendeeVolumeMap
}