in amazon-chime-sdk/src/main/java/com/amazonaws/services/chime/sdk/meetings/internal/audio/DefaultAudioClientObserver.kt [222:252]
override fun onSignalStrengthChange(attendeeUpdates: Array<out AttendeeUpdate>?) {
if (attendeeUpdates == null) return
val newAttendeeSignalMap: Map<String, SignalUpdate> =
attendeeUpdates
.mapNotNull { attendeeUpdate ->
SignalStrength.from(attendeeUpdate.data)?.let {
val attendeeInfo = createAttendeeInfo(attendeeUpdate)
attendeeUpdate.profileId to SignalUpdate(
attendeeInfo,
it
)
}
}.toMap()
val changedAttendeeSignalMap: Map<String, SignalUpdate> =
newAttendeeSignalMap.filter { (key, value) ->
value.signalStrength != currentAttendeeSignalMap[key]?.signalStrength
}
if (changedAttendeeSignalMap.isNotEmpty()) {
val signalUpdates: Array<SignalUpdate> = changedAttendeeSignalMap.values.toTypedArray()
ObserverUtils.notifyObserverOnMainThread(realtimeEventObservers) {
it.onSignalStrengthChanged(
signalUpdates
)
}
}
currentAttendeeSignalMap = newAttendeeSignalMap
}