如何检测 OS X 上的麦克风使用情况?

Meg*_*ron 8 macos cocoa objective-c swift

有没有办法检测 Mac 的麦克风何时在使用中?类似于 Mikro Snitch 的做法?这可以在可可中完成吗?

kgu*_*win 7

这不是真正的 Objective-C 或 Cocoa 解决方案,但如果您愿意进行子流程调用,请尝试以下操作:

ioreg -c AppleHDAEngineInput | grep IOAudioEngineState
Run Code Online (Sandbox Code Playgroud)

您将看到"IOAudioEngineState" = 1音频输入何时处于活动状态。

此外,尝试搜索IOAudioEngineNumActiveUserClients每个接收音频的应用程序增加一个。

  • 我刚刚发现这可能仅适用于内部/内置麦克风......使用蓝牙音频设备时 IOAudioEngineState 保持为零。 (2认同)

The*_*ght 5

有没有办法检测我的 Mac 麦克风何时在使用?

简单的答案 - 是的,但这并不容易!

这可以在 Cocoa 中完成吗?

正如文档所述:-

Cocoa 应用程序层主要负责应用程序的外观及其对用户操作的响应

因此,这不会覆盖麦克风,如果覆盖的话,对于您想要的效果来说,它的电平太高了。

关于如何执行此操作的详细答案对于 Stack Overflow 来说非常复杂且过于宽泛。然而,为了让您朝着正确的方向前进,您需要创建一个IOKit内核扩展驱动程序 ( KEXT ) 并充分了解I/O 注册表