Пример #1
0
 public void OnVoipState(VoipState voipState)
 {
     if (_foregroundChannel == null)
     {
         _foregroundChannel = _container.Resolve<IForegroundChannel>();
     }
     _foregroundChannel.OnVoipState(voipState);
 }
Пример #2
0
        private void OnVoipStateUpdate(VoipState voipState)
        {
            RunOnUiThread(async() =>
            {
                _currentVoipState = voipState.State;

                switch (voipState.State)
                {
                case VoipStateEnum.LocalRinging:
                    await PlaySound(true);
                    ShowAsParallel = false;
                    UpdateSelection();
                    break;

                case VoipStateEnum.RemoteRinging:
                    await PlaySound(false);
                    ShowAsParallel = false;
                    UpdateSelection();
                    break;

                case VoipStateEnum.Idle:
                    await StopSound();
                    ShowAsParallel = LayoutService.Instance.LayoutType == LayoutType.Parallel;
                    UpdateSelection();
                    break;

                case VoipStateEnum.EstablishOutgoing:
                case VoipStateEnum.EstablishIncoming:
                    await StopSound();
                    break;

                case VoipStateEnum.HangingUp:
                case VoipStateEnum.ActiveCall:
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            });
        }
Пример #3
0
        private void OnStateUpdated(VoipManager sender, VoipState newState)
        {
            this.BeginOnUIThread(() =>
            {
                switch (newState)
                {
                case VoipState.WaitInit:
                case VoipState.WaitInitAck:
                    _state             = newState;
                    StateLabel.Content = Strings.Resources.VoipConnecting;
                    break;

                case VoipState.Established:
                    _state             = newState;
                    StateLabel.Content = "00:00";

                    SignalBarsLabel.Visibility = Visibility.Visible;
                    StartUpdatingCallDuration();

                    sender.SetIncomingVideoOutput(BackgroundPanel);
                    break;

                case VoipState.Failed:
                    //switch (sender.GetLastError())
                    //{
                    //    case libtgvoip.Error.Incompatible:
                    //    case libtgvoip.Error.Timeout:
                    //    case libtgvoip.Error.Unknown:
                    //        _state = newState;
                    //        StateLabel.Content = Strings.Resources.VoipFailed;
                    //        break;
                    //}
                    break;
                }
            });
        }
Пример #4
0
 public void OnVoipState(VoipState voipState)
 {
     ForegroundClient.OnVoipState(voipState);
 }
        private void OnVoipStateUpdate(VoipState voipState)
        {
            switch (voipState.State)
            {
            case VoipStateEnum.Idle:
                CallState = CallState.Idle;
                IsOtherConversationInCallMode = false;
                LocalSwapChainPanelHandle     = 0;
                RemoteSwapChainPanelHandle    = 0;
                break;

            case VoipStateEnum.LocalRinging:
                if (voipState.PeerId == UserId)
                {
                    CallState = CallState.LocalRinging;
                    UnMuteCommandExecute();     //Start new calls with mic enabled
                    IsVideoEnabled        = voipState.IsVideoEnabled;
                    IsAudioOnlyCall       = !voipState.IsVideoEnabled;
                    LocalNativeVideoSize  = new Size(0, 0);
                    RemoteNativeVideoSize = new Size(0, 0);
                    LocalFrameRate        = "N/A";
                    RemoteFrameRate       = "N/A";
                }
                else
                {
                    IsOtherConversationInCallMode = true;
                }
                break;

            case VoipStateEnum.RemoteRinging:
                if (voipState.PeerId == UserId)
                {
                    CallState = CallState.RemoteRinging;
                    UnMuteCommandExecute();     //Start new calls with mic enabled
                    IsVideoEnabled        = voipState.IsVideoEnabled;
                    LocalNativeVideoSize  = new Size(0, 0);
                    RemoteNativeVideoSize = new Size(0, 0);
                    LocalFrameRate        = "N/A";
                    RemoteFrameRate       = "N/A";
                }
                else
                {
                    IsOtherConversationInCallMode = true;
                }
                break;

            case VoipStateEnum.EstablishOutgoing:
                if (voipState.PeerId == UserId)
                {
                    CallState = CallState.Connected;
                }
                else
                {
                    IsOtherConversationInCallMode = true;
                }
                break;

            case VoipStateEnum.EstablishIncoming:
                if (voipState.PeerId == UserId)
                {
                    CallState            = CallState.Connected;
                    IsVideoEnabled       = voipState.IsVideoEnabled;
                    IsAudioOnlyCall      = !voipState.IsVideoEnabled;
                    IsSelfVideoAvailable = IsVideoEnabled;
                    IsPeerVideoAvailable = IsVideoEnabled;
                }
                else
                {
                    IsOtherConversationInCallMode = true;
                }
                break;

            case VoipStateEnum.HangingUp:
                if (voipState.PeerId == UserId)
                {
                    CallState = CallState.Connected;
                }
                else
                {
                    IsOtherConversationInCallMode = true;
                }
                break;

            case VoipStateEnum.ActiveCall:
                if (voipState.PeerId == UserId)
                {
                    CallState            = CallState.Connected;
                    IsSelfVideoAvailable = IsVideoEnabled;
                    IsPeerVideoAvailable = voipState.IsVideoEnabled;
                }
                else
                {
                    IsOtherConversationInCallMode = true;
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
 public void OnVoipState(VoipState state)
 {
     SendToForeground(state);
 }
Пример #7
0
 public void OnVoipState(VoipState state)
 {
     RunOnUiThread(() => OnVoipStateUpdate?.Invoke(state));
 }