Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Zjistěte, jak systém rozpoznat změny na úrovni zvuku a reagovat na ně. Počínaje Windows 10, verze 1803, dokáže vaše aplikace zjistit, kdy systém sníží nebo ztlumí úroveň hlasitosti zvukového záznamu a zvukové vykreslovací proudy vaší aplikace. Systém může například ztlumit streamy aplikace, když přejde na pozadí.
Další informace o zachytávání zvuku pomocí třídy MediaCapture najdete v tématu Základní fotografie, video a zvukové zachycení pomocí MediaCapture. Informace o přehrávání zvuku pomocí MediaPlayer naleznete v tématu Přehrávání zvuku a videa s MediaPlayer.
AudioStateMonitor třída vám umožňuje se zaregistrovat k přijímání události, když systém upraví hlasitost záznamu zvuku nebo vykreslovacího streamu. Získejte instanci AudioStateMonitor pro monitorování zvukových záznamových proudů zavoláním metody CreateForCaptureMonitoring. Získáte instanci pro monitorování vykreslování zvukových streamů voláním CreateForRenderMonitoring. Zaregistrujte obslužnou rutinu pro událost SoundLevelChanged každého monitoru, aby byla upozorněna, když systém změní zvuk pro odpovídající kategorii streamu.
AudioStateMonitor captureAudioStateMonitor;
AudioStateMonitor renderAudioStateMonitor;
captureAudioStateMonitor = AudioStateMonitor.CreateForCaptureMonitoring();
captureAudioStateMonitor.SoundLevelChanged += CaptureAudioStateMonitor_SoundLevelChanged;
renderAudioStateMonitor = AudioStateMonitor.CreateForRenderMonitoring();
renderAudioStateMonitor.SoundLevelChanged += RenderAudioStateMonitor_SoundLevelChanged;
V obslužné funkci SoundLevelChanged pro zachytávací stream můžete zkontrolovat vlastnost SoundLevel odesílatele AudioStateMonitor, aby se určila nová úroveň zvuku. Mějte na paměti, že záznamový proud by systém nikdy neměl snížit nebo dočasně ztlumit. Měl by být ztlumený nebo přepnut zpět na plnou hlasitost. Pokud je zvukový stream ztlumený, můžete zastavit probíhající zachytávání. Pokud se zvuk obnoví na maximální hlasitost, můžete opět začít nahrávat.
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;
}
}
Následující příklad kódu ukazuje implementaci SoundLevelChanged obslužné rutiny pro vykreslování zvuku. V závislosti na scénáři vaší aplikace a typu obsahu, který přehráváte, může být vhodné pozastavit přehrávání zvuku, když je úroveň zvuku ztišena.
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();
}
}
Související témata
Základní pořizování fotografií, videa a zvukových záznamů s MediaCapture
Windows developer