Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sistem tarafından yapılan ses düzeyi değişikliklerini algılamayı ve yanıtlamayı öğrenin. Windows 10, sürüm 1803'den itibaren uygulamanız, sistemin uygulamanızın ses yakalama ve ses işleme akışlarının ses düzeyini ne zaman düşürebileceğini veya kapatabileceğini algılayabilir. Örneğin, sistem arka plana geçtiğinde uygulamanızın akışlarının sesini kapatabilir.
AudioStateMonitor sınıfı, sistem bir ses yakalama veya oluşturma akışının ses seviyesini değiştirdiğinde bir etkinlik almak üzere kaydolmanızı sağlar. Ses yakalama akışlarını izlemek için
AudioStateMonitor captureAudioStateMonitor;
AudioStateMonitor renderAudioStateMonitor;
captureAudioStateMonitor = AudioStateMonitor.CreateForCaptureMonitoring();
captureAudioStateMonitor.SoundLevelChanged += CaptureAudioStateMonitor_SoundLevelChanged;
renderAudioStateMonitor = AudioStateMonitor.CreateForRenderMonitoring();
renderAudioStateMonitor.SoundLevelChanged += RenderAudioStateMonitor_SoundLevelChanged;
Yakalama akışının SoundLevelChanged işleyicisinde, AudioStateMonitor gönderenin SoundLevel özelliğini denetleyerek yeni ses düzeyini belirleyebilirsiniz. Unutmayın ki bir yakalama akışı sistem tarafından asla ses seviyesi düşürülmemeli veya arka plana itilmemelidir. Ya ses kapatılmalı ya da tam ses seviyesine geri getirilmeli. Ses akışı sessize alınmışsa, devam eden yakalama işlemini durdurabilirsiniz. Ses akışı tam ses düzeyine geri yüklenirse yakalamaya yeniden başlayabilirsiniz.
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;
}
}
Aşağıdaki kod örneği, ses işleme için SoundLevelChanged işleyicisinin bir uygulamasını gösterir. Uygulama senaryonuza ve çaldığınız içeriğin türüne bağlı olarak, ses seviyesi kısıldığında ses çalmayı duraklatmak isteyebilirsiniz.
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();
}
}
İlgili konular
MediaCapture ile Temel fotoğraf, video ve ses yakalama
Windows developer