Place a group call
panzh edited this page Feb 8, 2018
·
6 revisions
-
Use the
spark.rooms().create()
API to create a Room.spark.rooms().create("hello world",null,(result) -> { if (result.isSuccessful()) { Room r = result.getData(); //.... } else { //.... } });
-
Use the
spark.memberships().create()
API to add people to the Room.spark.memberships().create(roomId,null,personEmail,true, (result) -> { if (result.isSuccessful()) { //.... } else { //.... } });
-
Dial a room by room id to make a group call with all peoples in the room.
spark.phone().dial(roomId, MediaOption. audioVideoSharing(new Pair<>(localView,remoteView),shareView), (result) -> { if (result.isSuccessful()) { call = result.getData(); call.setObserver(callObserver); } //... });
-
In order to get the event of a participant in the call, the callback function onCallMembershipChanged is used.
@Override public void onCallMembershipChanged(CallMembershipChangedEvent callMembershipChangeEvent) { CallMembership membership = callMembershipChangeEvent.getCallMembership(); if (callMembershipChangeEvent instanceof MembershipJoinedEvent) { Ln.d("The " + membership.getEmail() + " accept the call and joins to the Room"); } else if (callMembershipChangeEvent instanceof MembershipLeftEvent) { Ln.d("The " + membership.getEmail() + " hangup the call and leaves to the Room"); } else if (callMembershipChangeEvent instanceof MembershipDeclinedEvent) { Ln.d("The " + membership.getEmail() + " decline the call"); } else if (callMembershipChangeEvent instanceof MembershipSendingVideoEvent) { Ln.d("The " + membership.getEmail() + (membership.isSendingVideo() ? " unmute ":" mute " ) + " video"); } else if (callMembershipChangeEvent instanceof MembershipSendingAudioEvent) { Ln.d("The " + membership.getEmail() + (membership.isSendingAudio() ? " unmute ":" mute " ) + " voice"); } else if (callMembershipChangeEvent instanceof MembershipSendingSharingEvent) { Ln.d("The " + membership.getEmail() + (membership.isSendingSharing() ? " start ":" stop " ) + " sharing"); } }