ColorOS 录音增强

一个作用于 ColorOS 系统录音机(com.coloros.soundrecorder)的 LSPosed 模块。

通话录音入库后自动触发"录音转文本",无需手动逐条点击;录音列表右上角菜单支持一键批量转文本;原生搜索原本只能搜"摘要",本模块为其注入了转写正文全文搜索能力。

模块无界面、无桌面图标,全部功能均在录音机进程内通过 Hook 实现。

仓库只放打包的apk, 源代码请查看: 源代码

alt text

✨ 功能

1. 一键批量转文本

在录音列表(BrowseFragment)右上角展开菜单中注入两个菜单项(位于"设置"下方):

菜单项 行为
转文本 扫描全部通话录音(最新优先),跳过已转完的,取最多 10 条未转的批量触发
转全部 同上但不设上限,库里所有未转的通话录音全部入队

批量任务由事件驱动的串行队列(ConvertQueue)逐条推进:每条转写完成后(Hook 完成回调)延迟 3s 再触发下一条,长录音也会等到真正转完才继续;另设超时保底防止队列卡死。

2. 转写正文全文搜索

原生搜索只能命中"摘要"(AI 生成,非全部录音都有)。本模块在后台为每份转写 txt 建立 SQLite FTS 索引,并将命中结果伪装成摘要条目注入原生搜索结果:

  • 关键词高亮、点击跳转播放页等 UI 全部复用宿主原生逻辑,零自定义界面;
  • 注入条目统一打上「转文本:」标签,与原生"摘要"区分;
  • 转写完成 / 录音删除时增量同步索引(Hook 落库口与删除口),另有一次搜索前懒对账兜底清理。

📱 兼容性

  • 宿主:ColorOS 系统录音机 com.coloros.soundrecorder,实际开发与测试基于 17.8.8 版本;
  • 框架:LSPosed(libxposed 现代 API,API ≥ 102);
  • 其他 ColorOS / realme UI 版本未逐一验证,类名漂移时依赖 DexKit 兜底,欢迎反馈 issue。

🔨 构建

要求:JDK 17 + Android SDK 37(AGP 9 已内置 Kotlin 编译支持)。

./gradlew assembleRelease
  • 版本号全自动:versionCode = 当前分支提交总数,versionName = 最近的 v* tag(如 v1.2 → 1.2),无需手动维护;

  • 正式签名:在项目根目录创建 keystore.properties(已被 gitignore,不进仓库):

    storeFile=release.jks
    storePassword=xxxxxx
    keyAlias=xxxxxx
    keyPassword=xxxxxx

    该文件不存在时自动回退 debug 签名,便于本地验证。

📥 安装

  1. 构建 APK 后安装到手机(或从 Releases 下载);
  2. 在 LSPosed 中启用本模块;
  3. 作用域勾选 ColorOS 录音机(com.coloros.soundrecorder,模块声明为静态作用域,一般会自动勾选);
  4. 重启系统界面或重启手机,打开录音机验证。

验证方式:打开录音机后,在 LSPosed 管理器日志中能看到 module loaded / hooked ... 等日志;通话录音入库后数秒内出现"转文本已完成"提示。

📄 许可证

MIT License © 2026 Frank2222

⚠️ 免责声明

本项目仅供学习交流与个人使用,通过 Hook 技术修改第三方应用行为,与 OPPO / ColorOS 无任何关联。使用本模块产生的任何后果由使用者自行承担,请勿用于非法用途。

Releases

1.0-11

Stable

10/22/2026, 3:37:38 PM

支持一键转文本, 搜索功能已增强,现在可以搜索转文本中的内容, 以前只能搜索摘要

建议把录音机APP放在前台,最次也要小窗运行,小窗不可贴边

ColorOS后台会暂停进程, 放后台大概率转文本失败, 并且后台后断网, 就只能用离线模型了

Assets

1