TrafficManager

TrafficManager 是一个 LSPosed 模块,用于根据 Wi-Fi SSID/BSSID 规则自动切换默认数据卡(SIM1/SIM2)

功能特性

  • 支持按 / 匹配规则SSIDBSSID
  • 支持规则优先级()priority
  • 支持冷却时间防抖()cooldownSec
  • 支持离开 Wi-Fi 策略(、、)leaveDelaySecleaveMissThresholdrevertOnLeave
  • 切卡链路支持:
    • LSPosed 广播桥接(优先)
    • Root 命令兜底
  • 支持实时状态显示与“一键学习当前 Wi-Fi 规则”
  • 支持日志导出与切卡事件通知
  • 支持省电模式 / 常驻模式切换

当前适配范围

  • 当前版本仅适配小米澎湃 OS 3(HyperOS 3)
  • 其他 ROM 或系统版本暂未做完整兼容验证,可能出现作用域、权限或系统接口差异导致的不生效问题。

环境要求

  • 安卓10+
  • Root(建议开启,以提高兼容性)
  • LSPosed(建议 Zygisk 版本)
  • 建议双卡设备

构建

  1. 将 LSPosed API jar 放到:app/libs/api-82.jar
  2. 构建 Debug 包:
.\gradlew.bat :app:assembleDebug

输出 APK:

  • app/build/outputs/apk/debug/app-debug.apk

安装与启用

  1. 安装 APK
  2. 在 LSPosed 中启用模块
  3. 勾选推荐作用域(内置):
    • com.android.phone
    • com.xiaomi.phone
    • com.qti.phone
    • com.qualcomm.qti.telephonyservice
    • com.android.services.telephony
    • com.android.telephony
  4. 如果仍不生效,可手动额外勾选 作用域尝试兼容android
  5. 重启设备
  6. 打开 App,配置规则并开启自动切卡

省电/常驻模式说明

  • 省电模式:不启动前台常驻服务,不显示常驻通知;依赖系统广播触发,可能延迟或漏触发
  • 常驻模式:前台服务常驻更稳定、实时性更好;需要常驻通知且耗电更高

基础配置示例

{
  "enabled": true,
  "powerSaveMode": true,
  "screenOnIntervalSec": 20,
  "screenOffIntervalSec": 90,
  "cooldownSec": 90,
  "leaveDelaySec": 180,
  "leaveMissThreshold": 3,
  "revertOnLeave": true,
  "fixedLeaveSlot": null,
  "noWifiSlot": 0,
  "noWifiImmediate": true,
  "logRetentionDays": 7,
  "logMaxMb": 10,
  "appendDefaultRootTemplates": true,
  "rootCommandTemplates": [
    "cmd phone set-default-data-subscription {subId}",
    "cmd phone set-data-subscription {subId}",
    "settings put global multi_sim_data_call {slot}"
  ],
  "rules": [
    {
      "id": "home_wifi",
      "priority": 100,
      "ssid": "MyHomeWiFi",
      "bssid": null,
      "targetSlot": 0
    }
  ]
}
  • enabled: 是否开启自动切卡。
  • powerSaveMode: true 表示更依赖系统广播触发的省电策略,false 则常驻服务更稳定。
  • screenOnIntervalSec / screenOffIntervalSec: 屏幕亮/灭时触发检查的频率。
  • cooldownSec: 同一规则命中后的冷却时长,防止抖动。
  • leaveDelaySec / leaveMissThreshold: 离开 Wi-Fi 后经过多少时间、漏报次数才认为脱离。
  • revertOnLeave: 离开 Wi-Fi 后是否还原原先使用的数据卡。
  • fixedLeaveSlot: 离开 Wi-Fi 时强制切到的卡(null 表示按逻辑决定)。
  • noWifiSlot / noWifiImmediate: 无 Wi-Fi 时的目标卡与是否立即切换。
  • logRetentionDays / logMaxMb: 日志保留天数与单日志大小上限。
  • appendDefaultRootTemplates: 是否在自定义 root 指令后自动补齐内置默认模板。
  • rootCommandTemplates: root 兜底时使用的系统命令模板(可保留多条)。
  • rules: Wi-Fi 规则列表, 越大优先级越高, 0/1 表示 SIM1/SIM2。prioritytargetSlot

常见排查

  • 确认定位权限、附近设备(Wi-Fi)权限已授予
  • 确认系统“定位总开关”已开启
  • 查看日志目录:Android/data/com.laros.lsp.traffics/files/logs/
  • 若 LSPosed 链路失败,检查 root 兜底链路是否可用
  • 若自定义 包含 / ,会被安全拦截以避免误改方向锁定rootCommandTemplatesaccelerometer_rotationuser_rotation

无 Wi-Fi 切卡说明

  • 设置 可在 未连接任何 Wi-Fi 时自动切换到指定卡槽noWifiSlot
  • 触发条件受 与 影响(避免频繁抖动)leaveDelaySecleaveMissThreshold
  • 若希望无 Wi-Fi 立即切换,可设置 (不受 限制)noWifiImmediate: truecooldownSec
  • App「高级」页提供“无 Wi-Fi 立即切换”开关
  • App「高级」页提供目标卡槽选择(关闭 / SIM1 / SIM2)

下一步开发计划(TODO)

  • 增加更多 ROM 兼容适配(AOSP / OneUI / ColorOS 等)
  • 增加作用域与链路自检页(自动提示缺失项)
  • 增加规则调试模式(展示命中过程与未命中原因)
  • 增加配置导入导出与版本迁移能力
  • 增加更细粒度的通知与日志筛选
  • 补齐自动化测试与兼容性回归用例

更新日志

  • 新增设置/高级配置/自检/关于页面,统一布局与导航
  • 切卡结果校验与会话状态持久化,失败通知更准确
  • 增强 Wi-Fi 快照诊断日志与导出入口
LSP中文网版权所有,原文地址https://lsposed.cn/1198
© 版权声明
THE END
如有模块失效 请及时在下方留言反馈!!!
点赞0赞赏 分享
有什么话想说呢 抢沙发

请登录后发表评论

    请登录后查看评论内容