private void addRemoteParticipant(final RemoteParticipant remoteParticipant) {
// Observe remote participant events
remoteParticipant.setListener(remoteParticipantListener());
for (final RemoteDataTrackPublication remoteDataTrackPublication :
remoteParticipant.getRemoteDataTracks()) {
/*
* Data track messages are received on the thread that calls setListener. Post the
* invocation of setting the listener onto our dedicated data track message thread.
*/
if (remoteDataTrackPublication.isTrackSubscribed()) {
dataTrackMessageThreadHandler.post(() -> addRemoteDataTrack(remoteParticipant,
remoteDataTrackPublication.getRemoteDataTrack()));
}
}
}
private void addParticipant(Room room, RemoteParticipant remoteParticipant) {
WritableMap event = new WritableNativeMap();
event.putString("roomName", room.getName());
event.putString("roomSid", room.getSid());
event.putMap("participant", buildParticipant(remoteParticipant));
pushEvent(this, ON_PARTICIPANT_CONNECTED, event);
/*
* Start listening for participant media events
*/
remoteParticipant.setListener(mediaListener());
for (final RemoteDataTrackPublication remoteDataTrackPublication :
remoteParticipant.getRemoteDataTracks()) {
/*
* Data track messages are received on the thread that calls setListener. Post the
* invocation of setting the listener onto our dedicated data track message thread.
*/
if (remoteDataTrackPublication.isTrackSubscribed()) {
dataTrackMessageThreadHandler.post(() -> addRemoteDataTrack(remoteParticipant,
remoteDataTrackPublication.getRemoteDataTrack()));
}
}
}