Skip to content

Choose a tag to compare

@clansty clansty released this 29 Oct 15:29

第一个版本。

HyperOS / MIUI 上,小爱 / AI 助理自动接听的电话被对方挂断时,Telecom 会在通话流上放一声「嘟」并震一下 —— 静音和勿扰都拦不住。这个模块把这两下干掉,且只对 AI 接听的通话生效,自己接的电话行为不变。

原理

  • 声音:CallAudioManager.playToneForDisconnectedCall() → InCallTonePlayer(toneId=2) → ToneGenerator(TONE_PROP_PROMPT),走 VOICE_CALL 流(所以静音/勿扰无效)
  • 震动:MiuiRinger.onCallStateChanged() → vibrateWhenConnectOrDisconnect() → HapticCompat.performExtHapticFeedback(206)
  • 两者都只在「对方挂断」(DisconnectCause.Code == REMOTE)时触发,自己挂断本来就没有
  • 用 TelecomServiceImpl.acceptRingingCallInternal() 的调用方包名(com.miui.voiceassist)判断是不是 AI 接听

细节和排查记录见 README。

安装

adb install --no-incremental telecom-ai-call-mute-v1.0.0.apk

--no-incremental 不能省:adb install 走 Incremental Install 时 APK 是 incfs 按需喂页的,LSPosed 守护进程打不开它(Failure to parse package archive),模块等于不存在,而且不会报错。

然后在 LSPosed 里启用「AI 通话静音」→ 重启。作用域已静态声明为「系统框架」,不需要手动勾选。

要求

  • KernelSU / Magisk + Zygisk + LSPosed 2.x(libxposed API 101/102)
  • 测试环境:Xiaomi 17(2509FPN0BC)/ HyperOS 4.0.4.0 / Android 17