Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pelajari cara mendeteksi dan merespons perubahan tingkat audio oleh sistem. Dimulai dengan Windows 10 versi 1803, aplikasi Anda dapat mendeteksi kapan sistem menurunkan atau membisukan tingkat audio untuk tangkapan dan render audio aplikasi Anda. Misalnya, sistem dapat membisukan aliran aplikasi Anda ketika sedang berjalan di latar belakang.
Untuk mempelajari tentang merekam audio menggunakan kelas
Kelas AudioStateMonitor memungkinkan Anda untuk mendaftar untuk menerima peristiwa ketika sistem memodifikasi volume pengambilan audio atau aliran render. Dapatkan instans AudioStateMonitor
AudioStateMonitor captureAudioStateMonitor;
AudioStateMonitor renderAudioStateMonitor;
captureAudioStateMonitor = AudioStateMonitor.CreateForCaptureMonitoring();
captureAudioStateMonitor.SoundLevelChanged += CaptureAudioStateMonitor_SoundLevelChanged;
renderAudioStateMonitor = AudioStateMonitor.CreateForRenderMonitoring();
renderAudioStateMonitor.SoundLevelChanged += RenderAudioStateMonitor_SoundLevelChanged;
Dalam penangan SoundLevelChanged untuk stream tangkap, Anda dapat memeriksa properti SoundLevel dari pengirim AudioStateMonitor untuk menentukan tingkat suara baru. Perhatikan bahwa stream tangkapan tidak boleh diturunkan volumenya oleh sistem. Ini hanya boleh dibisukan atau dialihkan kembali ke volume penuh. Jika aliran audio dibisukan, Anda dapat menghentikan pengambilan yang sedang berlangsung. Jika aliran audio dipulihkan ke volume penuh, Anda dapat mulai mengambil lagi.
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;
}
}
Contoh kode berikut mengilustrasikan implementasi handler
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();
}
}
Topik terkait
Pengambilan foto, video, dan audio Dasar dengan MediaCapture
Windows developer