in app/src/main/java/com/amazonaws/services/chime/sdkdemo/fragment/MeetingFragment.kt [883:911]
override fun onActiveSpeakerDetected(attendeeInfo: Array<AttendeeInfo>) {
uiScope.launch {
mutex.withLock {
var needUpdate = false
val activeSpeakers = attendeeInfo.map { it.attendeeId }.toSet()
meetingModel.currentRoster.values.iterator().forEach { attendee ->
if (activeSpeakers.contains(attendee.attendeeId) != attendee.isActiveSpeaker) {
meetingModel.currentRoster[attendee.attendeeId] =
RosterAttendee(
attendee.attendeeId,
attendee.attendeeName,
attendee.volumeLevel,
attendee.signalStrength,
!attendee.isActiveSpeaker
)
needUpdate = true
}
}
if (needUpdate) {
meetingModel.updateRemoteVideoStatesBasedOnActiveSpeakers(attendeeInfo)
onVideoPageUpdated()
subscribeToRemoteVideosInCurrentPage()
rosterAdapter.notifyDataSetChanged()
}
}
}
}