public VideoViewModel(bool isCallInitiator, User mainUser, List<User> users, VideoChatMessage videoMessage, bool isVideoCall) { this.isVideoCall = isVideoCall; this.videoMessage = videoMessage; this.isCallInitiator = isCallInitiator; this.mainUser = mainUser; this.users = users; this.AnswerCommand = new Command(this.AnswerCommandExecute,CanCommandExecute); this.EndOfCallCommand = new Command(this.EndOfCallCommandExecute, CanCommandExecute); this.RejectCommand = new Command(this.RejectCommandExecute,CanCommandExecute); }
public VideoPage(bool isCallInitiator, User mainUser, List <User> users, VideoChatMessage videoMessage, bool isVideoCall) { InitializeComponent(); this.mainUser = mainUser; this.users = users; this.isCallInitiator = isCallInitiator; this.initiateVideoMessage = videoMessage; this.isVideoCall = isVideoCall; App.CallHelperProvider.InitVideoContainer(videoContainer); }
public VideoViewModel(bool isCallInitiator, User mainUser, List <User> users, VideoChatMessage videoMessage, bool isVideoCall) { this.isVideoCall = isVideoCall; this.videoMessage = videoMessage; this.isCallInitiator = isCallInitiator; this.mainUser = mainUser; this.users = users; this.AnswerCommand = new Command(this.AnswerCommandExecute, CanCommandExecute); this.EndOfCallCommand = new Command(this.EndOfCallCommandExecute, CanCommandExecute); this.RejectCommand = new Command(this.RejectCommandExecute, CanCommandExecute); }
public VideoPage(bool isCallInitiator, User mainUser, List<User> users, VideoChatMessage videoMessage, bool isVideoCall) { InitializeComponent(); this.mainUser = mainUser; this.users = users; this.isCallInitiator = isCallInitiator; this.initiateVideoMessage = videoMessage; this.isVideoCall = isVideoCall; App.CallHelperProvider.InitVideoContainer(videoContainer); }
private void IncomingDropMessage(object sender, VideoChatMessage e) { //if (e.Caller == e.Sender.ToString()) //{ Device.BeginInvokeOnMainThread(() => App.SetUsersPage()); //} //else //{ // users = users.Where(u => u.Id != e.Sender).ToList(); // if (users.Any()) // { // Device.BeginInvokeOnMainThread(() => App.SetUsersPage()); // } //} }
private void DropCall(object sender, VideoChatMessage e) { VideoChatState = VideoChatState.None; if (this.CurrentCall != null) { if (e.Sender == Int32.Parse(e.Caller)) { this.CurrentCall.UnlinkAll(); } else { this.CurrentCall.Unlink(e.Sender.ToString()); } } InvokeDropCallMessage(sender, e); }
public void ConnectToIncomingCall(VideoChatMessage e) { StartLocalMedia((error) => { // TODO: temp err if (!string.IsNullOrEmpty(error)) { Debug.WriteLine("Error CAll: " + error); return; } // Incoming new call this.CurrentCall = new ConferenceWrapper(e.SessionId, localMedia); this.CurrentCall.LinkUpEvent += OnLinkUp; this.CurrentCall.LinkDownEvent += OnLinkDown; this.CurrentCall.ReceiveSdpEvent += OnReceiveSdp; this.CurrentCall.ReceiveIceCandidateEvent += OnReceiveIceCandidate; this.CurrentCall.ReceiveOfferAnwer(e.Sdp, true, e.Caller); }); }
private void InvokeIncomingEvent(object sender, VideoChatMessage e, User callerUser, List <User> opponents) { var handler = IncomingCallMessageEvent; if (handler != null) { var incomingCall = new IncomingCall() { VideoChatMessage = e, Caller = callerUser, Opponents = opponents }; handler.Invoke(sender, incomingCall); } Device.BeginInvokeOnMainThread(() => { callOutgoingAudioTimer.Stop(); callIncomingAudioTimer.Start(); }); }
private void InvokeDropCallMessage(object sender, VideoChatMessage e) { var handler = IncomingDropMessageEvent; if (handler != null) { handler.Invoke(sender, e); } Device.BeginInvokeOnMainThread(() => { callOutgoingAudioTimer.Stop(); callIncomingAudioTimer.Stop(); }); if (e.Signal == SignalType.hangUp) { DependencyService.Get <IAudio>().PlayAudioFile(EndCallFileName); } else if (e.Signal == SignalType.reject) { DependencyService.Get <IAudio>().PlayAudioFile(BusyFileName); } }
private void OnVideoMessageReceived(object sender, VideoChatMessage e) { //if (e.Caller != OpponentId) // return; //Dateifi.LogProvider.Instance().LogEvent("Signal type: " + e.Signal + " Guid: " + e.Guid + "; Receiver: " + e.Receiver + "; Caller: " + e.Caller); //if (VideoChatState == VideoChatState.SendOffer && e.Signal == SignalType.call) // return; //if (e.Signal == SignalType.reject || e.Signal == SignalType.hangUp) //{ // hangUpCall.Invoke(); // VideoChatState = VideoChatState.None; // if (conference != null) // { // conference.UnlinkAll(); // } // if (localMedia != null) // { // localMedia.LocalMediaStream.MuteAudio(); // } //} //else if (e.Signal == SignalType.call || e.Signal == SignalType.accept) //{ // // Входящий сигнал, и текущее состояние не активен // if (VideoChatState == VideoChatState.None) // { // SessionId = e.Guid; // //if (await requestStartvideo ()) { // VideoChatState = VideoChatState.WaitAnswer; // OfferAnswer offer = new OfferAnswer(); // offer.SdpMessage = e.Sdp; // offer.IsOffer = true; // conference.ReceiveOfferAnswer(offer, e.Caller.ToString()); // //} else { // // webSyncClient.Reject (SessionId, OpponentId); // //} // } // else if (VideoChatState == VideoChatState.SendOffer) // { // VideoChatState = VideoChatState.Complete; // OfferAnswer answer = new OfferAnswer(); // answer.SdpMessage = e.Sdp; // answer.IsOffer = false; // conference.ReceiveOfferAnswer(answer, e.Caller.ToString()); // } //} //else if (e.Signal == SignalType.iceCandidates) //{ // foreach (var iceCandidate in e.IceCandidates) // { // var candidate = new Candidate(); // candidate.SdpCandidateAttribute = iceCandidate.Candidate; // candidate.SdpMediaIndex = iceCandidate.SdpMLineIndex != null ? int.Parse(iceCandidate.SdpMLineIndex) : 0; // SessionId = e.Guid; // conference.ReceiveCandidate(candidate, e.Caller.ToString()); // } //} //Dateifi.LogProvider.Instance().LogEvent("End OnHeadlineMessageReceive"); }
public static void SetVideoCall(bool isCallInitiator, User mainUser, List<User> opponents, VideoChatMessage videoMessage, bool isVideoCall = true) { var page = new VideoPage(isCallInitiator, mainUser, opponents, videoMessage, isVideoCall); Current.MainPage = page; }
public static void SetVideoCall(bool isCallInitiator, User mainUser, List <User> opponents, VideoChatMessage videoMessage, bool isVideoCall = true) { var page = new VideoPage(isCallInitiator, mainUser, opponents, videoMessage, isVideoCall); Current.MainPage = page; }
private void OnVideoChatMessageReceived(object sender, VideoChatMessage e) { //if (e.Caller != OpponentId) // return; // Check if message missing and not actual from other call if (e.SessionId != this.sessionId && this.sessionId != null) { return; } // Reject incoming call when current user call if (e.Signal == SignalType.call && VideoChatState != VideoChatState.None) { if (sessionId == e.SessionId) { return; } this.webSyncClient.Reject(e.SessionId, e.Caller, e.Caller, e.OpponentsIds.ToList(), Device.OS.ToString().ToLower()); // Check if user already call to this user now if (opponents != null && opponents.FirstOrDefault(u => u.Id.ToString() == e.Caller) != null) { DropCall(sender, e); } return; } if ((e.Signal == SignalType.reject || e.Signal == SignalType.hangUp) && this.sessionId != null) { DropCall(sender, e); } else if ((e.Signal == SignalType.call && this.sessionId == null) || (e.Signal == SignalType.accept && this.sessionId != null)) { // Входящий сигнал, и текущее состояние не активен if (VideoChatState == VideoChatState.None) { var callerIdInRequestCall = e.Caller; var callerUser = App.UsersInRoom.FirstOrDefault(u => u.Id == Int32.Parse(callerIdInRequestCall)); if (callerUser != null) { this.IsConnecting = true; VideoChatState = VideoChatState.WaitAnswer; var opponents = new List <User>(); foreach (var id in e.OpponentsIds) { var user = App.UsersInRoom.FirstOrDefault(u => u.Id == Int32.Parse(id)); if (user != null) { opponents.Add(user); } } InvokeIncomingEvent(sender, e, callerUser, opponents); } //if (await requestStartvideo ()) { //VideoChatState = VideoChatState.WaitAnswer; //OfferAnswer offer = new OfferAnswer(); //offer.SdpMessage = e.Sdp; //offer.IsOffer = true; //Conference.ReceiveOfferAnswer(offer, e.Caller.ToString()); //} else { // WebSyncClient.Reject (SessionId, OpponentId); //} } else if (VideoChatState == VideoChatState.SendOffer) { VideoChatState = VideoChatState.Complete; this.CurrentCall.ReceiveOfferAnwer(e.Sdp, false, e.Sender.ToString()); //OfferAnswer answer = new OfferAnswer(); //answer.SdpMessage = e.Sdp; //answer.IsOffer = false; //Conference.ReceiveOfferAnswer(answer, e.Caller.ToString()); } } else if ((e.Signal == SignalType.iceCandidates) && this.sessionId != null) { //foreach (var iceCandidate in e.IceCandidates) //{ // var candidate = new Candidate(); // candidate.SdpCandidateAttribute = iceCandidate.Candidate; // candidate.SdpMediaIndex = iceCandidate.SdpMLineIndex != null ? int.Parse(iceCandidate.SdpMLineIndex) : 0; // SessionId = e.Guid; // Conference.ReceiveCandidate(candidate, e.Caller.ToString()); //} if (e.IceCandidates == null) { return; } this.CurrentCall.ReceiveIceCandidate(e.IceCandidates, e.Sender.ToString()); } }