internal void UpdateAudioButtons() { AudioRoute availAudioRoutes = AudioRoute.None; AudioRoute currentAudioRoute = AudioRoute.None; SipAVCall avCall = null; SipService sipService = BackgroundProcessController.Instance.SipService; if (sipService != null) { avCall = sipService.SipActiveAVCall; if (avCall != null) { availAudioRoutes = sipService.AvailableAudioRoutes; currentAudioRoute = sipService.AudioRoute; } } IsEarpieceButtonEnabled = ((availAudioRoutes & AudioRoute.Earpiece) != AudioRoute.None); IsSpeakerButtonEnabled = ((availAudioRoutes & AudioRoute.Speakerphone) != AudioRoute.None); IsBluetoothButtonEnabled = ((availAudioRoutes & AudioRoute.Bluetooth) != AudioRoute.None); EarpieceButtonBorder = (currentAudioRoute == AudioRoute.Earpiece) ? accentBrush : borderBrush; SpeakerButtonBorder = (currentAudioRoute == AudioRoute.Speakerphone) ? accentBrush : borderBrush; BluetoothButtonBorder = (currentAudioRoute == AudioRoute.Bluetooth) ? accentBrush : borderBrush; }
void mNativeEventsListener_onAVCallEvent(object sender, SipAVCallEventArgs e) { this.Dispatcher.BeginInvoke((System.Threading.ThreadStart) delegate { mViewModel.CallState = e.State; if ((e.State == SipAVCallState.Incoming || e.State == SipAVCallState.InCall) && !(mViewModel is CallStatusViewModel)) { SipService sipService = BackgroundProcessController.Instance.SipService; if (sipService != null) { SipAVCall avCall = sipService.SipActiveAVCall; if (avCall != null && avCall.UriRemote != null) { mViewModel.Page.NavigationService.Navigate(new Uri(NavigationUri.BuildReceiveCallUriString("/CallPage.xaml", avCall.UriRemote.getUserName(), avCall.WithVideo), UriKind.Relative)); return; } } } if (mViewModel is CallStatusViewModel) { (mViewModel as CallStatusViewModel).Update(); } if (e.SipCode > 299) { mViewModel.CallStateText = e.Description; } }); }
private void HangUpButton_Click(object sender, System.Windows.RoutedEventArgs e) { ((CallStatusViewModel)this.ViewModel).IsHangUpButtonEnabled = false; SipService sipService = BackgroundProcessController.Instance.SipService; SipAVCall avCall = (sipService != null) ? sipService.SipActiveAVCall : null; if (avCall != null) { avCall.HangUp(null); } }
private void HoldButton_Click(object sender, System.Windows.RoutedEventArgs e) { SipService sipService = BackgroundProcessController.Instance.SipService; SipAVCall avCall = (sipService != null) ? sipService.SipActiveAVCall : null; if (avCall != null) { if ((avCall.HoldState & SipHoldStateState.LocalHeld) != SipHoldStateState.LocalHeld) { avCall.Hold(null); } else { avCall.Resume(null); } } }
virtual internal void Update() { String remotePartyDisplayName = null; String remotePartyNumber = null; SipService sipService = rtServiceManager.Instance.SipService; SipAVCallState callState = SipAVCallState.None; SipSessionState registrationState = SipSessionState.None; if (sipService != null) { registrationState = sipService.RegistrationState; SipAVCall avCall = rtServiceManager.Instance.SipService.SipActiveAVCall; if (avCall != null) { if (avCall.UriRemote != null) { remotePartyDisplayName = avCall.UriRemote.getDisplayName(); remotePartyNumber = avCall.UriRemote.getUserName(); if (String.IsNullOrEmpty(remotePartyDisplayName)) { remotePartyDisplayName = remotePartyNumber; } } callState = avCall.State; } } RegistrationState = registrationState; if (!String.IsNullOrEmpty(remotePartyDisplayName)) // Keep previsous text { RemotePartyDisplayName = remotePartyDisplayName; } if (!String.IsNullOrEmpty(remotePartyNumber)) // Keep previsous text { RemotePartyNumber = remotePartyNumber; } if (callState != SipAVCallState.None)// Keep previsous text { CallState = callState; } }
override internal void Update() { base.Update(); bool mediaActivated = false; bool callActived = false; bool videoActivated = false; SipAVCall avCall = null; SipHoldStateState holdState = SipHoldStateState.None; CameraSensorLocation cameraLocation = CameraSensorLocation.Front; SipService sipService = BackgroundProcessController.Instance.SipService; if (sipService != null) { avCall = sipService.SipActiveAVCall; } if (avCall != null) { mediaActivated = (avCall.State == SipAVCallState.InCall || avCall.State == SipAVCallState.EarlyMedia); callActived = (avCall.State != SipAVCallState.Terminated && avCall.State != SipAVCallState.Terminating); videoActivated = (mediaActivated && avCall.WithVideo); holdState = avCall.HoldState; cameraLocation = sipService.CameraLocation; } IsHangUpButtonEnabled = callActived; IsHoldButtonEnabled = mediaActivated; IsHoldButtonChecked = ((holdState & SipHoldStateState.LocalHeld) == SipHoldStateState.LocalHeld); IsCameraToggleButtonEnabled = videoActivated; LittleHeadVisibility = videoActivated ? Visibility.Visible : Visibility.Collapsed; LittleHeadPreviewUri = videoActivated ? (cameraLocation == CameraSensorLocation.Back ? rearFacingCameraStreamUri : frontFacingCameraStreamUri) : null; CameraLocation = cameraLocation; BigHeadVisibility = videoActivated ? Visibility.Visible : Visibility.Collapsed; BigHeadPreviewUri = videoActivated ? renderStreamUri : null; HoldState = holdState; UpdateAudioButtons(); }