以下是 IAudioVolumeDuckNotification 接口的定义:
// 头文件
#include <Audiopolicy.h>
// IAudioVolumeDuckNotification 接口定义
DECLARE_INTERFACE_(IAudioVolumeDuckNotification, IUnknown)
{
STDMETHOD (OnVolumeDuckNotification) (THIS_
_In_ LPCWSTR sessionID,
_In_ UINT32 countCommunicationSessions) PURE;
STDMETHOD (OnVolumeUnduckNotification) (THIS_
_In_ LPCWSTR sessionID) PURE;
};
这个接口包含两个方法:
- OnVolumeDuckNotification:当系统要求音频淡出时调用。参数 sessionID 是淡出的音频会话的唯一标识符,countCommunicationSessions 是通信会话的数量。
- OnVolumeUnduckNotification:当系统取消音频淡出时调用。参数 sessionID 是取消淡出的音频会话的唯一标识符。
开发者可以实现这个接口,然后通过 RegisterDuckNotification 方法注册为音频会话管理器的通知对象。当系统需要通知音频淡出或取消淡出时,将调用相应的方法。
以下是一个简单的示例实现代码框架:
class MyAudioVolumeDuckNotification : public IAudioVolumeDuckNotification
{
public:
STDMETHOD_(ULONG, AddRef)() { return 1; }
STDMETHOD_(ULONG, Release)() { return 0; }
STDMETHOD(QueryInterface)(REFIID riid, void** ppv)
{
if (riid == __uuidof(IUnknown) || riid == __uuidof(IAudioVolumeDuckNotification))
{
*ppv = this;
return S_OK;
}
else
{
*ppv = nullptr;
return E_NOINTERFACE;
}
}
STDMETHOD(OnVolumeDuckNotification)(LPCWSTR sessionID, UINT32 countCommunicationSessions)
{
// 处理音频淡出通知的逻辑
// ...
return S_OK;
}
STDMETHOD(OnVolumeUnduckNotification)(LPCWSTR sessionID)
{
// 处理取消音频淡出通知的逻辑
// ...
return S_OK;
}
};
这个实现中,OnVolumeDuckNotification 方法和 OnVolumeUnduckNotification 方法被调用时,开发者可以在其中处理有关音频淡出或取消淡出的逻辑。
转载请注明出处:http://www.zyzy.cn/article/detail/23919/Win32 API/Audiopolicy.h/IAudioVolumeDuckNotification