Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Lernen Sie, wie Sie Änderungen des Audiopegels durch das System erkennen und darauf reagieren können. Ab Windows 10, Version 1803, kann Ihre App erkennen, wann das System den Audiopegel der Audioaufnahme- und Audiowiedergabestreams Ihrer App verringert oder stummschaltet. Beispielsweise kann das System die Datenströme Ihrer App stummschalten, wenn sie in den Hintergrund wechselt.
Informationen zum Aufzeichnen von Audio mithilfe der MediaCapture-Klasse finden Sie unter "Einfache Foto-, Video- und Audioaufnahme mit MediaCapture". Informationen zur Audiowiedergabe mit MediaPlayer finden Sie unter "Wiedergeben von Audio und Video mit MediaPlayer".
Mit der AudioStateMonitor-Klasse können Sie sich registrieren, um ein Ereignis zu empfangen, wenn das System die Lautstärke einer Audioaufnahme oder eines Renderdatenstroms ändert. Rufen Sie eine Instanz von AudioStateMonitor zum Überwachen von Audioaufnahmedatenströmen ab, indem Sie CreateForCaptureMonitoring aufrufen. Rufen Sie eine Instanz zur Überwachung von Audio-Renderströmen ab, indem Sie CreateForRenderMonitoring aufrufen. Registrieren Sie einen Handler für das SoundLevelChanged-Ereignis jedes Monitors, um benachrichtigt zu werden, wenn das Audio für die entsprechende Datenstromkategorie vom System geändert wird.
AudioStateMonitor captureAudioStateMonitor;
AudioStateMonitor renderAudioStateMonitor;
captureAudioStateMonitor = AudioStateMonitor.CreateForCaptureMonitoring();
captureAudioStateMonitor.SoundLevelChanged += CaptureAudioStateMonitor_SoundLevelChanged;
renderAudioStateMonitor = AudioStateMonitor.CreateForRenderMonitoring();
renderAudioStateMonitor.SoundLevelChanged += RenderAudioStateMonitor_SoundLevelChanged;
Im SoundLevelChanged-Handler für den Aufnahmedatenstrom können Sie die SoundLevel-Eigenschaft des AudioStateMonitor-Absenders überprüfen, um die neue Soundebene zu ermitteln. Beachten Sie, dass ein Aufnahmedatenstrom niemals vom System abgesenkt oder "geduckt" werden sollte. Es sollte immer nur stummgeschaltet oder wieder auf die volle Lautstärke umgeschaltet werden. Wenn der Audiodatenstrom stummgeschaltet ist, können Sie eine Aufzeichnung beenden. Wenn der Audiodatenstrom auf die volle Lautstärke wiederhergestellt wird, können Sie die Aufnahme erneut starten.
bool isCapturingAudio = false;
bool capturingStoppedForAudioState = false;
private void CaptureAudioStateMonitor_SoundLevelChanged(AudioStateMonitor sender, object args)
{
switch (sender.SoundLevel)
{
case SoundLevel.Full:
if (capturingStoppedForAudioState)
{
MyStartAudioCapture();
capturingStoppedForAudioState = false;
}
break;
case SoundLevel.Muted:
if (isCapturingAudio)
{
MyStopAudioCapture();
capturingStoppedForAudioState = true;
}
break;
case SoundLevel.Low:
// This should never happen for capture
Debug.WriteLine("Unexpected audio state.");
break;
}
}
Im folgenden Codebeispiel wird eine Implementierung des SoundLevelChanged-Handlers für das Audiorendering veranschaulicht. Je nach App-Szenario und der Art des Inhalts, den Sie wiedergeben, sollten Sie die Audiowiedergabe anhalten, wenn der Soundpegel reduziert wird.
bool contentIsPodcast;
private void RenderAudioStateMonitor_SoundLevelChanged(AudioStateMonitor sender, object args)
{
if ((sender.SoundLevel == SoundLevel.Full) ||
(sender.SoundLevel == SoundLevel.Low && !contentIsPodcast))
{
m_mediaPlayer.Play();
}
else if ((sender.SoundLevel == SoundLevel.Muted) ||
(sender.SoundLevel == SoundLevel.Low && contentIsPodcast))
{
// Pause playback if we�re muted or if we�re playing a podcast and are ducked
m_mediaPlayer.Pause();
}
}
Zugehörige Themen
Windows developer