确定哪个应用程序正在使用音频设备
Posted
技术标签:
【中文标题】确定哪个应用程序正在使用音频设备【英文标题】:Determine which application is using audio device 【发布时间】:2016-12-06 21:07:22 【问题描述】:我目前在 macOS 中使用 CoreAudio 来确定是否正在使用特定的音频输入设备。我试图找到更多关于该设备正在使用的情况的信息,但很难找到有关如何执行此操作的任何信息。
1) 是否可以找到当前正在使用特定音频输入设备的应用程序?
2) 是否可以确定应用程序是否正在使用音频设备(输入或输出)并且该设备当前是否在该特定应用程序中静音?
谢谢
【问题讨论】:
我正在尝试使用 c++ 来解决这个问题。但我不知道该怎么做。你有它的参考代码吗? 【参考方案1】:如果应用程序通过kAudioDevicePropertyHogMode
占用了设备(即拥有对它的独占访问权),则与该属性关联的pid_t
的值是占用进程的进程ID(如果设备则为-1没有被占用。)
否则,至少对于输出设备,多个应用程序可以共享设备,并且各种音频流混合在一起。在这种情况下,你能做的最好的事情(据我所知)是检查kAudioDevicePropertyDeviceIsRunningSomewhere
,它会告诉你设备是否正在使用,而不是哪个进程正在使用它。
对于问题 2,静音是音频设备的一个属性,特别是 kAudioDevicePropertyMute
。如果任何应用程序将该属性设置为 true,则设备将对所有应用程序静音。
【讨论】:
以上是关于确定哪个应用程序正在使用音频设备的主要内容,如果未能解决你的问题,请参考以下文章
如何从 iOS 应用程序确定正在使用哪个苹果推送通知服务器 (APNS)