private void CaptureAudioStateMonitor_SoundLevelChanged(AudioStateMonitor sender, object args) { switch (sender.SoundLevel) { case SoundLevel.Full: if (capturingStoppedForAudioState) { StartAudioCapture(); capturingStoppedForAudioState = false; } break; case SoundLevel.Muted: if (isCapturingAudio) { StopAudioCapture(); capturingStoppedForAudioState = true; } break; case SoundLevel.Low: // This should never happen for capture Debug.WriteLine("Unexpected audio state."); break; } }
//</SnippetDeviceIdCategoryVars> private void RegisterAudioStateMonitorDeviceIdCategory() { //<SnippetSoundLevelDeviceIdCategory> string deviceId = Windows.Media.Devices.MediaDevice.GetDefaultAudioCaptureId(Windows.Media.Devices.AudioDeviceRole.Communications); gameChatAudioStateMonitor = AudioStateMonitor.CreateForCaptureMonitoringWithCategoryAndDeviceId(MediaCategory.GameChat, deviceId); gameChatAudioStateMonitor.SoundLevelChanged += GameChatSoundLevelChanged; //</SnippetSoundLevelDeviceIdCategory> }
//</SnippetAudioStateVars> void RegisterAudioPolicyHandlers() { //<SnippetRegisterAudioStateMonitor> captureAudioStateMonitor = AudioStateMonitor.CreateForCaptureMonitoring(); captureAudioStateMonitor.SoundLevelChanged += CaptureAudioStateMonitor_SoundLevelChanged;; renderAudioStateMonitor = AudioStateMonitor.CreateForRenderMonitoring(); renderAudioStateMonitor.SoundLevelChanged += RenderAudioStateMonitor_SoundLevelChanged;; //</SnippetRegisterAudioStateMonitor> }
protected override async void OnNavigatedTo(NavigationEventArgs e) { await CreateAudioGraph(); string deviceId = Windows.Media.Devices.MediaDevice.GetDefaultAudioCaptureId(Windows.Media.Devices.AudioDeviceRole.Communications); gameChatAudioStateMonitor = AudioStateMonitor.CreateForCaptureMonitoringWithCategoryAndDeviceId(MediaCategory.Other, deviceId); gameChatAudioStateMonitor.SoundLevelChanged += OnSoundLevelChanged; LogPath.Text = Logging.LoggingPath; }
//<SnippetRenderSoundLevelChanged> private void RenderAudioStateMonitor_SoundLevelChanged(AudioStateMonitor sender, object args) { if ((sender.SoundLevel == SoundLevel.Full) || (sender.SoundLevel == SoundLevel.Low && !isPodcast)) { mediaPlayer.Play(); } else if ((sender.SoundLevel == SoundLevel.Muted) || (sender.SoundLevel == SoundLevel.Low && isPodcast)) { // Pause playback if we’re muted or if we’re playing a podcast and are ducked mediaPlayer.Pause(); } }
//<SnippetGameChatSoundLevelChanged> private void GameChatSoundLevelChanged(AudioStateMonitor sender, object args) { switch (sender.SoundLevel) { case SoundLevel.Full: StartAudioCapture(); break; case SoundLevel.Muted: StopAudioCapture(); break; case SoundLevel.Low: // Audio capture should never be "ducked", only muted or full volume. Debug.WriteLine("Unexpected audio state change."); break; } }
private void OnSoundLevelChanged(AudioStateMonitor sender, object args) { switch (sender.SoundLevel) { case SoundLevel.Full: Logging.SingleInstance.LogMessage("Microphone Volume is full"); break; case SoundLevel.Muted: Logging.SingleInstance.LogMessage("Microphone Volume is muted"); break; case SoundLevel.Low: // Audio capture should never be "ducked", only muted or full volume. Logging.SingleInstance.LogMessage("Microphone Volume is low"); break; } }