Windows 中有一个设置可以在应用程序拨打或接听电话时调节其他应用程序的音量:
如果我正在编写一个可以拨打/接听电话的应用程序,我如何确保 Windows 检测到这一点并根据此设置降低其他应用程序的音量?是否有我需要调用的 API?创建音频流的某种特殊方法?
我浏览了一些 WASAPI 和 Core Audio API 文档,但没有成功。 WASAPI 有独占模式流,但这些似乎比我在这里要的要强一点,因为它们会将所有其他音频静音。
IMMDeviceEnumerator::GetDefaultAudioEndpoint
请求 eCommunications
角色将为您提供默认通信设备,您可以调用 Activate
来创建 IAudioClient
。有关将数据推送到此流的更多详细信息,请参阅 MSDN 上的渲染示例。微软开发人员在here的评论中推荐了这种方法。
如果您已经有一个音频客户端实例传递给您,您可以调用
IAudioClient2::SetClientProperties
。
IAudioClientDuckingControl::SetDuckingOptionsForCurrentStream
允许您根据需要关闭音频闪避,同时仍被归类为通信流。