Skip to content

Place a group call

panzh edited this page Feb 8, 2018 · 6 revisions
  1. 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 {
                //....
            }
        });
  2. Use the spark.memberships().create() API to add people to the Room.

    spark.memberships().create(roomId,null,personEmail,true, (result) -> {
            if (result.isSuccessful()) {
              //....
            } else {
              //....
            }
        });
  3. 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);
            }
            //...
        });
  4. 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");
        }
    }