┌──────────────┐ ┌──────────────────┐
│ SystemUI │ │ App (如 Phira) │
│ AudioTrack │ │ Oboe / AAudio │
└──────┬───────┘ └────────┬─────────┘
│ Xposed Hook │ C++ Native GOT Hook
▼ ▼
┌─────────────────────────────────────────────┐
│ RhythmicEngine │
│ 32-band FFT → Beat Analysis │
│ Adaptive Threshold + Mode Matching │
└─────────────────────┬───────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ VibratorDriver │
│ 8 种振动模式 · Per-mode 频段过滤 │
└─────────────────────────────────────────────┘
| 🔹 链路 | 🎯 Hook 目标 | 🎤 采集方式 | 📊 数据 |
|---|---|---|---|
| SystemUI | com.android.systemui |
Xposed Hook AudioTrack / AAudio | 🎵 全局媒体音频流 |
| App | org.flos.phira 等 |
C++ GOT Hook AAudioStream_write() |
🎮 应用内 Oboe PCM 原始数据 |
两条链路的数据最终汇入同一个 RhythmicEngine,由 BeatAnalyzer 进行 32 频段 FFT 分析,再根据能量分布、节拍检测和自适应阈值匹配到振动模式,驱动马达。
- 🎛️ 32 频段 FFT 实时分析 — 基于 Oboe 原生音频采集,33ms 帧率
- 📳 8 种振动模式 — 💥重长振 / 💢重短振 / 🎵中敲击 / ⚡中等击打 / 🎶上升轻击 / 🔊长脉动 / 🔄情感脉动 / ✨柔和细节
- 🎚️ Per-mode 频段配置 — 每个模式独立设置触发频段范围或手动勾选频段
- 📁 多配置文件系统 — 创建多个配置文件,按应用自动切换(scope-based)
- 📤 配置文件导入导出 — 单个 JSON 或批量 ZIP 打包分享
- 🧠 自适应阈值 — 根据历史能量动态调整触发灵敏度
- 🎨 Miuix UI — Material You 动态取色主题
- 🤖 Android 9+ (API 28+)
- 🔧 LSPosed / EdXposed
- ✅
com.android.systemui作用域已勾选
| 📱 设备 | 🤖 系统版本 | 📝 状态 |
|---|---|---|
| OPPO Reno8 Pro | ColorOS 14.0 | ✅ 已验证 |
| Nothing Phone (3) | Android 16 | ✅ 已验证 |
💡 欢迎提交新设备测试结果!其他机型请自测。
- ⬇️ 从 Releases 下载 APK
- 📦 在 LSPosed 中安装并启用模块
- ☑️ 勾选
com.android.systemui作用域 - 🎮 (可选)勾选目标应用如 Phira 以启用 App 端原生采集
- 🔄 重启 SystemUI 或重启手机
./gradlew assembleDebug📦 APK 输出在 app/build/outputs/apk/debug/app-debug.apk
- 🌐 博客:https://lyonhyrik.github.io/
- 📱 酷安:LyonHyrik
- 💻 GitHub:LyonHyrik