Naudio:无法将 AudioSessionEventHandler 注册到 DefaultAudioEndpoint 的 AudioSessionControl 对象

问题描述

当我将事件处理程序注册到应用程序启动时已经运行的音频会话时,没有任何反应。

public class Program
{

    public  MMDeviceEnumerator mme = new MMDeviceEnumerator();
    public  MMDevice mmDevice;
    public AudioSessionEventHandler aseh = new AudioSessionEventHandler();
    
    
    public Program()
    {
        mmDevice = mme.GetDefaultAudioEndpoint(DataFlow.Render,Role.Multimedia);
        
        for (int i = 0; i < mmDevice.AudioSessionManager.Sessions.count; i++)
        {
            if(mmDevice.AudioSessionManager.Sessions[i].IsSystemSoundsSession) {continue; }
            mmDevice.AudioSessionManager.Sessions[i].RegisterEventClient(aseh);
        
        }
    }
    
    public class AudioSessionEventHandler : IAudioSessionEventHandler
    {
        //Interface implementations
    }
}

例如,当会话的音量发生变化时,什么也不会发生。我只设法将事件处理程序注册到在程序运行时启动的音频会话:

mmDevice.AudioSessionManager.OnSessionCreated += AudioSessionManager_OnSessionCreated;
public AudioSessionEvents ase = new AudioSessionEvents();
   .
   .
   .
private void AudioSessionManager_OnSessionCreated(object sender,IAudioSessionControl newSession)
{                     
     newSession.RegisteraudioSessionNotification(ase);        
}

public class AudioSessionEvents : IAudioSessionEvents
{
    //Interface implementations
}

感谢任何帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)