Skip to content

yty16/MicWatch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

MicWatch

一个监控麦克风占用状态的 ClassIsland 插件。

当你想知道「现在到底是哪个程序在用我的麦克风」时,MicWatch 会替你盯着。它只读取系统给出的麦克风占用状态,并把这一信息变成 ClassIsland 规则系统里可以用的条件——不会录制、不会保存、也不会上传任何声音


它能做什么

  • 监控指定麦克风 —— 在设置页里挑选你想盯着的那个麦克风,插件会持续监听它是否正在被其它程序占用。
  • 暴露成 ClassIsland 规则 —— 注册一条名为「麦克风是否被使用」的规则,可以接到文本组件、提醒、自动化等任何依赖规则的地方。
  • 指定设备 —— 支持在多麦克风环境下只关注其中一个(例如只盯外接领夹麦,忽略内置阵列)。
  • 随启动自启 —— 开启「自动开启监控」后,ClassIsland 每次启动都会自动恢复对所选麦克风的监控。
  • 匹配进程名(可选) —— 规则可以细化到「当 某个特定程序 正在使用麦克风时」才成立,方便做精准的条件触发。

系统要求

项目 版本
操作系统 Windows 10 1703(内部版本 15063)及以上
ClassIsland 2.0 及以上
运行环境 已随 ClassIsland 提供的 .NET 运行时

依赖 Windows Core Audio (WASAPI) 的音频会话机制来检测麦克风占用,因此仅支持 Windows 平台。


安装

  1. 前往 Releases 下载 MicWatch.cipx
  2. 在 ClassIsland 的「应用设置 → 插件」中拖入或选择该文件完成安装。
  3. 重启 ClassIsland 使插件生效。

使用

安装完成后,打开 ClassIsland 的应用设置,找到 MicWatch 设置页:

  1. 从下拉列表中选择要监控的麦克风设备(列表为空时点击「刷新」重新枚举)。
  2. 点击「开启监控」开始监听;想停下时点「关闭监控」。
  3. 状态区会实时显示当前麦克风是否被占用,以及占用它的进程名。
  4. 勾选「自动开启监控」,下次 ClassIsland 启动时会自动用已选设备开始监控。

在规则里使用

插件向 ClassIsland 注册了规则 麦克风是否被使用(id:micwatch.ismicinuse):

  • 当所选麦克风正被任意程序占用时,规则成立。
  • 若勾选规则设置中的「匹配进程名」并填写进程名,则仅在该进程占用麦克风时才成立。

常见玩法:

  • 把规则接到文本组件,麦克风被占用时显示「🎙 麦克风使用中」;
  • 接到自动化,麦克风突然被未知程序占用时弹提醒,防止误开麦。

自动化触发器

除了上面的「规则」,MicWatch 还向 ClassIsland 的自动化提供了两个独立的触发器,可在自动化设置的「触发器」里选用:

触发器 id 触发时机
当麦克风被调用时 micwatch.trigger.micstarted 被监控的麦克风从「空闲」变为「被占用」的瞬间(上升沿)
当麦克风关闭时 micwatch.trigger.micstopped 被监控的麦克风从「被占用」变为「空闲」的瞬间(下降沿)

两者都是边沿触发:只在状态切换的那一刻触发一次,不会在麦克风持续使用中反复触发。配合自动化的「行动」(如显示提醒、运行程序、切换窗口位置等),即可实现例如:

  • 麦克风一被打开,立刻弹提醒「麦克风已开启,注意隐私」;
  • 麦克风关闭后,自动把窗口移回原位 / 关闭相关提示。

触发器基于设置页选定的那一个麦克风。请确保已开启监控(勾选「自动开启监控」或手动「开启监控」),否则状态不会变化、触发器也不会触发。


隐私说明

本插件只调用系统接口查询麦克风的占用状态,整个过程中:

  • 不打开任何音频采集端点;
  • 不读取、不缓存、不上传任何音频样本;
  • 仅向本地 ClassIsland 进程提供「是否被占用 / 占用进程名」这一最小信息。

工作原理(简述)

MicWatch 基于 Windows Core Audio (WASAPI) 的音频会话机制。当一个程序开始采集麦克风时,系统会在该音频端点设备上创建一个音频会话 (audio session)。插件通过 IAudioSessionManager2 枚举这些会话即可得知麦克风是否被占用、以及是哪个进程在用——这与 Windows 任务栏右上角的「麦克风使用中」指示器是同一套底层机制。

整个过程插件不会打开音频流、不读取任何音频数据,仅查询会话状态。为避免漏掉状态跳变,插件以 500ms 间隔轮询会话,并在上升/下降沿触发规则与自动化。


从源码构建

基于 .NET 8 与 ClassIsland.PluginSdk 2.0.0.2(对应 ClassIsland 2.0.x 运行时)。

git clone https://github.com/yty16/MicWatch.git
cd MicWatch/MicWatch
dotnet build -c Release

构建完成后,插件包位于 cipx/MicWatch.cipx,可直接在 ClassIsland 中安装。


仓库:https://github.com/yty16/MicWatch

欢迎提 Issue 与 PR。


致谢

本插件基于 流焰xwx 的 CameraActivityMonitor 修改而来,将其「摄像头占用监控」的实现思路适配为「麦克风占用监控」。原项目以 AGPLv3 许可证发布。

About

一个用于监控麦克风占用状态的ClassIsland插件。 通过 Windows 的 Media Foundation 传感器活动监控接口监听麦克风当前是否正在被其它程序使用,并把这个状态提供给 ClassIsland 的规则系统。

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages