Skip to content

Repository files navigation

SoundIntact

LSPosed 模块,阻止 VoIP 应用劫持系统音频路由,保护后台媒体播放质量。

问题背景

VoIP 应用(微信、QQ、KOOK 等)通话时会强制系统进入 MODE_IN_COMMUNICATION,导致:

  • 后台媒体音质严重劣化(蓝牙 SCO 下尤为严重,48kHz+ 降至 8/16kHz)
  • 音频焦点抢占,背景音乐被压低或暂停
  • 强制单声道降混

部分厂商(如三星 Sound Assistant)提供了多音源开关,但大多数系统没有原生解决方案。adb appops set TAKE_AUDIO_FOCUS ignore 在较新的 Android 版本上也已失效。

工作原理

通过 LSPosed 在目标应用进程内 Hook Android 音频 API:

Hook 作用
AudioModeHook setMode(IN_COMMUNICATION/IN_CALL)MODE_NORMAL
AudioAttributesHook USAGE_VOICE_COMMUNICATIONUSAGE_MEDIACONTENT_TYPE_SPEECHCONTENT_TYPE_MUSIC
AudioFocusHook 拦截 requestAudioFocus,伪造成功而不实际抢占焦点
AudioTrackHook STREAM_VOICE_CALLSTREAM_MUSICAudioSource.VOICE_COMMUNICATIONMIC

目标应用

默认内置以下应用的作用域:

  • 微信 (com.tencent.mm)
  • QQ (com.tencent.mobileqq)
  • KOOK (com.kookapp.app)
  • OOPZ (com.weilaishanhai.oopz)
  • Mumla (se.lublin.mumla)

模块使用动态作用域,理论上适用于任何会抢占音频通信模式的 VoIP 应用,可在 LSPosed Manager 中自行添加作用域,并在模块设置界面按应用开关。

安装

  1. 设备需要 Root + LSPosed
  2. Releases 下载 APK 安装
  3. 在 LSPosed Manager 中启用模块,勾选目标应用
  4. 重启设备

注意事项

  • 请勿将 System Framework、Telecom、Bluetooth 加入作用域,否则会影响正常通话
  • 通话时建议使用有线/蓝牙耳机,因为通信模式的回声消除 (AEC) 会被跳过
  • NDK 层的 AAudioStream 调用不在 Hook 范围内

License

MIT

About

LSPosed module to prevent VoIP apps from hijacking audio routing

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages