Miband-OPlusBridge

Miband-OPlusBridge

把小米运动健康能用 SPP 连上的手环接到 ColorOS 设备空间 和 OPPO 健康。

在设备空间里管理这只手环,查看连接与电量,并把步数、心率、睡眠写入 OPPO 健康;手机通知和来电可以转到手环,当前播放由桥接自己的通知监听同步到手环。手环查找手机会走 OPPO 健康自己的响铃,健康设备页也可以让这只手环响。日常不必再打开小米运动健康。小米手环 11 已实机验证。手环 8 / 8 Pro / 9 / 9 Pro / 10 / 10 Pro 及 NFC、活力版只要官方重连是 SPP 或 GATT + WearAuthV2、且没有 OOB 额外认证,即可导入接管。

包名:io.github.miam1ku.mibandoplusbridge

源码:https://github.com/MiaM1ku/Miband-OPlusBridge

点击链接加入群聊【Miband-OPlusBridge】:https://qm.qq.com/q/eEk3EsgSH0

安装

  1. 安装 LSPosed(Zygisk)。
  2. 安装本模块 APK,在 LSPosed 中启用,作用域勾选:
    • com.heytap.mydevices(设备空间)
    • com.heytap.health(OPPO 健康)
    • com.mi.health(导入绑定时需要)
  3. 在 KernelSU 里对本应用授权。
  4. 打开「小米手环桥接」:检查 Root → 导入已配对手环 → 添加到健康。导入时会记录连接参数;若首页提示「连接参数丢失」,先恢复官方管理,再在小米运动健康中重连一次手环。
  5. 强停「设备空间」和「OPPO 健康」后再打开。 旧包名 io.github.oplusband.bridge 与本包不能共存数据。换包后需重新导入。

协议测试

首页「常用」→ 协议测试:

  • 设备信息(名称、型号、固件、电量、连接;MAC 只显示末位)
  • 测试通知 / 撤回
  • 测试来电 / 结束来电
  • 测试查找手机 / 停止查找(OPPO 健康自己的响铃)
  • 发送测试音乐
  • 检查更新(GitHub Releases)

手环需已连接。

首页「常用」→ 发送调试日志到 QQ:生成本机连接日志并交给 QQ。只保留最近三次模块启动,含连接阶段和通知、音乐失败原因,不含 token、MAC、nonce、标题或正文。

发布

打 tag 后 GitHub Actions 会构建并创建 Release:

git tag 3-1.0.0
git push origin 3-1.0.0

LSPosed 仓库 tag 格式:{versionCode}-{versionName}。

仓库 Secrets:

  • OPLUSBAND_KEYSTORE_BASE64
  • OPLUSBAND_STORE_PASSWORD
  • OPLUSBAND_KEY_ALIAS
  • OPLUSBAND_KEY_PASSWORD

许可证

AGPL-3.0-or-later。见 LICENSE。

Releases

98-1.8.2

Stable

10/22/2026, 4:07:36 PM

  1. 界面重做:首页依次是手环状态和一个主按钮、首次设置清单、待处理事项、功能、帮助、管理、高级设置。天气、设备详情、独立连接诊断、协议测试按同一结构重排,按钮放进所属卡片。
  2. 界面跟随系统深色模式;连接状态改用标签表示,等待连接时直接写出下一步。「立即同步」直接重连。「协议测试」在首页 → 高级设置 → 调试。
  3. 提示改成先说明当前状态、再给出下一步操作,用词换成正面说法。状态码文案集中在 ui/Copy,CopyStyleTest 扫描源码守住措辞。

Assets

1

97-1.8.1

Stable

10/22/2026, 3:29:00 PM

  1. 从本地数据库读取密钥可以完成。1.8.0 里应用自己的 su 看不到小米运动健康的数据目录,读取会失败;现在改到全局挂载空间执行。
  2. 手环 8 及以后导入后直接使用已确认的蓝牙参数,不必再采集连接参数。下一步是添加到健康。
  3. 锁屏方式变更导致旧加密密钥失效时,会重新生成密钥并保存这次导入。

Assets

1

96-1.8.0

Stable

10/22/2026, 2:49:44 PM

  1. 导入绑定改为用 root 读取小米运动健康本地数据库里的手环密钥,不必再打开官方应用等它把密钥送出来。读完会删掉临时拷贝。
  2. 手环 8 没有城市列表时(天气指令 10/5 返回 status 1),改为写入当前城市并继续发送预报,不再当成拒绝。图标分片的应答改在上传特征上接收;某一片图标超时不再拆掉整条连接。

Assets

1

95-1.7.10

Stable

10/22/2026, 11:59:57 AM

  1. 小米手环 8(含 NFC)不再在握手后十几秒自己断开。写特征上的普通 ACK 不再把连接拆掉;活动文件若在历史解析就绪前到达,会先留住,会话打开后再确认。
  2. 已被系统拦截的来电不再当成正在响铃的来电转到手环。
  3. 不再按天删除分钟步数。健康这张表的删除不区分设备,以前会把当天所有设备的分钟,包括手机自己的,一起清掉。
  4. 健康自己的设备卡片短暂查不到时,不再立刻把桥接卡片加回去。

Assets

1

94-1.7.9

Stable

10/17/2026, 12:51:48 PM

  1. 同步时手环插进睡眠里的 1 到 5 分钟清醒,会并回前面那段睡眠。超过 5 分钟的清醒不动。
  2. 手环没给分期的小睡仍算睡眠时长,但不再算进浅睡分钟。健康图表没有「未分期」这个颜色,色条仍写成浅睡。
  3. 当天步数取日汇总和分钟合计里更大的一个。日汇总之后新走的步,只要分钟文件里有,就会进总数。
  4. 原来整份丢掉的逐秒心率,按分钟平均写进心率。

下次打开桥接会按存档重算睡眠阶段。

Assets

1

91-1.7.8

Stable

10/12/2026, 8:31:08 PM

  1. 有步数的分钟重新标成锻炼分钟,半小时锻炼图按这些分钟画柱。下次同步会重写已经导入的天。

Assets

1

90-1.7.7

Stable

10/12/2026, 1:12:09 PM

  1. 已经存下来的骑行会再读一遍本地文件。速度按米每秒换算,详情里的实时速度图和最快速度用这份结果。
  2. 同一开始时间如果还有一条写在旧设备编号下,会先删掉,避免打开到没有速度的那条。

Assets

1

88-1.7.6

Stable

10/12/2026, 11:42:21 AM

  1. 手表的日常分钟按官方写成 Watch,步行类型收成 -1,不再并进手机的步行统计。手环仍是 Band、类型 1。有步数的分钟不再当成锻炼。
  2. 骑行速度按米每秒读,速度图不再贴在坐标轴底部。超过中位数 4 倍的尖刺丢掉。

Assets

1

87-1.7.5

Stable

10/12/2026, 9:53:34 AM

  1. 骑行详情补上实时速度图。速度按每公里秒数换算,最快速度用手环摘要里的最快配速。已经同步过的骑行,打开健康后会再读一遍本地文件。
  2. 热更新留下的桥接卡片会撤掉。健康已经有这张设备卡时,不再留着空的那张。

Assets

1

86-1.7.4

Stable

10/12/2026, 9:27:55 AM

  1. 手表来电时重新连上蓝牙耳机协议。接通后把通话声音转到手表,结束再放回手机。手环仍只用原来的来电通知。

Assets

1

85-1.7.3

Stable

10/12/2026, 4:33:49 AM

  1. 省电白名单按整段包名核对,并读完整份名单。恢复官方管理时,只撤掉桥接自己加上的那一项。
  2. 健康的通知策略改到单独的线程上推,通知转发不再被防抖卡住。
  3. 步数按调用方给出的时区算今天。
  4. V1 加密计数用尽后断开并重新认证。
  5. 恢复官方管理失败时,界面会说明小米运动健康还停在停用。从采集入口恢复成功后才打开资料窗口。
  6. 手环回包放不下,或 BLE 写入没有回调时,这次连接记为失败。
  7. 模块偏好整文件读入,再用一次替换写回。
  8. 运动时长和卡路里按健康界面上的单位写入。
  9. 钩子装不上时记到 LSPosed 日志。健康自己的通知监听还没列入名单时,保留它原来的开启路径。

Assets

1

84-1.7.2

Stable

10/12/2026, 3:37:45 AM

  1. 设备空间里,健康已经有这只手环时不再另出一张。连接和电量写在健康那张卡上。
  2. 控制中心磁贴用系统自带的手环或手表图,并放大到磁贴里。

Assets

1

83-1.7.1

Stable

10/12/2026, 3:16:38 AM

  1. 手环 8 Pro 的户外骑行和自由训练可以解析。骑行用这份手环实际写出的运动报告 v5 和 GPS v2。自由训练 v8 只保留对得上的前半段。
  2. 设备空间里,手环显示手环图标,手表显示手表图标。
  3. 锁屏心率小组件显示这只手环最近一次心率。步数小组件显示手环和手机当天步数里更大的那个。

Assets

1

82-1.7.0

Stable

10/11/2026, 4:53:55 PM

  1. 模块改用 libxposed API 102(现代 Xposed API)。需要支持 API 102 的框架,例如 Vector。只支持旧版 Xposed API 的 LSPosed 不会再加载本模块。
  2. 支持热重载:以后更新模块,OPPO 健康和设备空间不用再强停,框架会在运行中换上新代码。
  3. 拿到 root 后,本应用会给自己和 OPPO 健康打开 ColorOS「自启动」和「关联启动」。更新后 OPPO 健康能自己拉起桥接,不用再手动打开本应用。
  4. 从 1.6.8 及以前升级:装好后先打开一次本应用(迁移旧设置),再强停一次 OPPO 健康和设备空间。

Assets

1

81-1.6.8

Stable

10/11/2026, 3:52:54 PM

  1. 户外跑步、健走、徒步、户外骑行的轨迹会画在 OPPO 健康的这条运动记录上。
  2. 更新后强停一次模块,再打开一次,等手环连上同步。

Assets

1

80-1.6.7

Stable

10/11/2026, 2:56:32 PM

  1. 户外跑步、健走、徒步、户外骑行、室内跑步、自由活动、跳绳、泳池游泳会写入 OPPO 健康的运动记录。只有单次总结,没有轨迹。
  2. 更新后强停一次模块,再打开一次,等手环连上同步。

Assets

1

79-1.6.6

Stable

10/11/2026, 9:35:12 AM

  1. 手环要应用图标时,按它给出的尺寸和像素格式把图标传过去。新应用不用再空等图标超时。
  2. 更新后强停一次模块,再打开一次。

Assets

1

78-1.6.5

Stable

10/11/2026, 9:02:13 AM

  1. 时钟的计时器和秒表不再当成闹铃。这两个前台服务和闹铃用同一个通知频道,以前一开计时手环就一直震。
  2. 闹钟响铃还是原来的通知。
  3. 更新后强停一次模块,再打开一次。时钟也要重新打开。

Assets

1

77-1.6.4

Stable

10/11/2026, 2:14:10 AM

  1. 睡眠分期按一分钟一行写入。以前整段写成一行,健康算分时把空档当成清醒,睡眠评分是 0。
  2. 入睡和醒来改成睡眠日里的分钟数。以前写成毫秒,这些汇总不同步。
  3. 补上睡眠指数、睡眠心率汇总和睡眠日统计,数值从手环这一晚的窗口算出来。
  4. 手环的睡眠呼吸率写入健康,已保存的原始记录也会补一次。
  5. 同一晚先有分期、后面只有汇总时,两段都会写入。隔开超过 20 分钟的睡眠分成不同时段,中间不再被拉成浅睡。
  6. 更新后强停一次模块,再打开一次。

Assets

1

76-1.6.3

Stable

10/10/2026, 3:11:33 PM

  1. 添加到健康时,空的小米 userId 不再拦住。认证包里本来就没有这个字段。
  2. 密钥如果是带空格的十六进制,或 16 字节 Base64,导入和添加时会改成 32 位十六进制。
  3. 地区是空的、地址不是大写 MAC、密钥格式仍不对时,首页会写出是哪一项。调试日志里有 bridge BINDING_CHECK,不含地址和密钥。
  4. 更新后强停一次模块,再打开一次。

Assets

1

75-1.6.2

Stable

10/10/2026, 8:00:01 AM

  1. 手环空闲大约 30 秒就会断开。m66nfc 1.8.124 不会因为没收到包就拆连接,是应用自己的读超时把连接掐了。直播会话现在继续等,只有链路真断才结束。
  2. 蓝牙错误以前要静默等 2 分钟才重连。现在按普通掉线重连,大约 3 秒。
  3. 更新后强停一次模块,再打开一次。

Assets

1

74-1.6.1

Stable

10/9/2026, 11:55:32 AM

  1. 分钟步数和卡路里柱可以写进 OPPO 健康了。删除接口把删掉的行数当成错误码,所以有数据的日子会在写入前失败。这一版只对分钟明细(表 1001)在删除后再读这个时间窗。窗是空的,才算删除成功。感谢 Osilvfe 报告这个问题。
  2. 睡眠、步数日汇总和压力还是看原来的回调。这三张表的删除调用并不删行。按时间窗是否为空来判断,睡眠重写会停住,压力清理也会每 2 秒重试一次。
  3. 某一分钟删不干净时,这一版按覆盖继续写。已经变成 0 的那一分钟可能还留着。
  4. 更新后强停一次模块,再打开一次。OPPO 健康也要重新打开。

Assets

1

73-1.6.0

Stable

10/9/2026, 11:38:58 AM

  1. 通知跟着 OPPO 健康的开关和白名单走。健康自己的监听优先;模块监听只在健康没连上时兜底,并套用同一套内容过滤。健康还没把设置交过来之前,先全部推送。
  2. 系统里列了健康的通知使用权但实际没批下来时,首页会提示关掉再打开一次。
  3. 账号组件不再在应用上下文还没挂上时初始化失败。设备页的「无网络」和「我的」消息 403 都是令牌拿不到,这一版会等上下文准备好再初始化。
  4. 更新后强停一次模块,再打开一次。OPPO 健康也要重新打开。

Assets

1

61-1.5.4

Stable

10/9/2026, 8:30:17 AM

  1. 入口诊断日志改成同时写 logcat 和 LSPosed 日志。以前小米运动健康那条链路只有 android.util.Log,LSPosed 不转发这个标签,所以「模块没注入」和「注入成功但没动作」在日志里长得一样。现在多两个探针:PACKAGE_LOADED(注入成功才打)、ATTACH(attach 回调真的执行才打)。
  2. 更新后强停一次模块,再打开一次。小米运动健康也要重新打开,钩子才会装上。
  3. 已知问题:小米运动健康导入绑定的失败原因还在排查,本版只有诊断日志,不修复导入。

Assets

1

60-1.5.3

Stable

10/8/2026, 4:19:12 PM

  1. 应用消息改回由本机通知监听转发。健康 6.9.40 只把本模块自己的通知交过来,而且这个应用在健康里是关的。
  2. 更新后强停一次模块,再打开一次。

Assets

1

59-1.5.2

Stable

10/8/2026, 2:46:35 PM

  1. 应用消息重新从 OPPO 健康转到手环。健康 6.9.40 把通知交给 NotificationEventManager,原来在这里直接截断,转发没有执行。
  2. 更新后强停一次模块,再打开一次。健康也要重新打开,钩子才会装上。

Assets

1

58-1.5.1

Stable

10/6/2026, 2:28:30 AM

  1. 换城市后,手表天气位置跟着手机走。新城市放在第一位,上一次自动定位的城市会删掉,手动添加的其他城市留着。
  2. 更新后强停一次模块,再打开一次。

Assets

1

57-1.5.0

Stable

10/6/2026, 2:17:02 AM

  1. 睡眠按协议版本 11 写入。同一段里不超过 20 分钟的空隙接成一张卡片,超过 20 分钟另起一张。不满 120 分钟是零星小睡。
  2. 不再替健康 App 补云端 token。云同步仍走它自己的账号 SDK。
  3. 划掉模块卡片后前台服务保持,通知监听断开后重绑。启动时用 root 加入 Doze 白名单并允许后台运行。
  4. 改成 MAC 设备号之前的旧睡眠记录仍算这只手环,不会整段跳过。
  5. 更新后强停一次模块和「OPPO 健康」,再打开一次。

Assets

1

56-1.4.10

Stable

10/5/2026, 4:49:12 PM

  1. 启动时账号 SDK 还没初始化,健康会把已登录写成游客。本地还有登录标记或真实 SSO 时,这次写入会被丢掉。
  2. 空的设备快照不再当成未注册,设备列表不会被清掉。
  3. 更新后强停一次「OPPO 健康」,再打开一次。

Assets

1

55-1.4.9

Stable

10/5/2026, 3:13:03 PM

  1. 健康记录按 OPPO 手环写入。日汇总用 sportMode -3,睡眠只写 sleepState,小睡和主睡眠分开留。
  2. 设备号改为蓝牙 MAC,并写入当前账号的绑定表。关掉模块后,健康 App 仍按这只手环读取。
  3. 不再把心率、睡眠、血氧、压力误发成错误的云同步类型。云开关仍要自己打开。
  4. 未同意健康协议时,不再强行退出游客,避免把 SSO 写成占位符。
  5. 更新后强停一次「OPPO 健康」,再打开一次。

Assets

1

54-1.4.8

Stable

10/5/2026, 9:18:59 AM

  1. 手环点开勿扰会被马上关掉。手机还是关的时候,桥接把关的规则发了回去。
  2. 手机状态没变、手环已经是另一边时,不再覆盖手环。
  3. root 改为 cmd notification set_dnd。直接写 zen_mode 会被系统改回去。
  4. 更新后强停一次「OPPO 健康」,再打开一次。

Assets

1

53-1.4.7

Stable

10/5/2026, 9:03:07 AM

  1. 手环打开勿扰时,手机没有跟着开。桥接进程写不了 zen_mode。
  2. 先由健康进程写。健康写不上,再用 root 执行 settings put global zen_mode。
  3. 更新后强停一次「OPPO 健康」,再打开一次。

Assets

1

52-1.4.6

Stable

10/5/2026, 8:49:24 AM

  1. 手机勿扰有时同步不到手环。规则时间用了毫秒低 32 位,比手环自己的规则旧,手环把这条丢掉。现在改成 Unix 秒。
  2. 同步开关的应答还没回来就发规则,手环会丢掉。现在等应答后再发。
  3. 查询回来的手环本地勿扰,不再当成你在手环上关掉手机勿扰。

Assets

1

51-1.4.5

Stable

10/5/2026, 6:54:37 AM

  1. 健康的通知监听已在系统设置里,但启动调用被一起吃掉,服务没绑上,手机通知到不了手环。测试通知不受影响。
  2. 现在只拦住关闭。组件如果被关掉会重新打开,并重新绑定监听。
  3. 更新后强停一次「OPPO 健康」,再打开一次。

Assets

1

50-1.4.4

Stable

10/4/2026, 6:35:59 AM

  1. 历史文件数到 2048 个就拒绝新文件,磁盘只占了约 1MB。11:18 之后的数据因此存不进去。
  2. 写入新文件前,删掉最老的、已经导入完成的原始文件。还没导入完的不删。文件数上限仍然是 2048。
  3. 更新后强停一次「小米手环桥接」,再打开一次。否则连接进程还是旧的。

Assets

1

49-1.4.3

Stable

10/4/2026, 6:11:14 AM

  1. 系统账号仍登录时,每次打开健康都把游客态放回去。以前只恢复一次,之后每次冷启动又被写成游客。
  2. 不再在写成游客的钩子里缓存账号。那一下会重入登录页并闪退,要点第二次、健康重启后才恢复登录。
  3. 健康库暂时打不开时,这一轮历史同步会结束并在下一轮重试。同步成功后清掉「存储不可用,健康同步已暂停」。
  4. 更新后强停一次「小米手环桥接」,再打开一次健康。否则连接进程和健康里的钩子还是旧的。

Assets

1

48-1.4.2

Stable

10/3/2026, 3:18:36 PM

  1. 连接后的实时统计流(8/45)改成一次性:收到第一条带步数的 8/47 就发 8/46,等不到 30 秒也发。以前这个流一直开着,手环就一直在测心率,那些每分钟心率又写进当天活动文件,被导入 OPPO 健康后看着像全天都在测。
  2. 当天步数仍以 8/1、8/2 拉到的日报为准,8/47 只是顺手取一次。
  3. 更新后强停一次「小米手环桥接」,再打开一次。否则连接进程还是旧的。

Assets

1

47-1.4.1

Stable

10/1/2026, 3:46:30 PM

  1. 免打扰规则改成小米运动健康用的 manual_zen_rule,激活时间用毫秒的低 32 位。之前发的是手环自己的 watch_manual,手环回了成功但界面不动。
  2. 手环询问静音时,按当前免打扰状态回复。
  3. 手环要音乐时立刻回上一次曲目;还没有曲目就回空闲。
  4. 更新后强停一次「小米手环桥接」,再打开一次。否则连接进程还是旧的。

Assets

1

46-1.4.0

Stable

10/1/2026, 2:49:22 PM

  1. 免打扰按健康 6.9.40 的开关读。focusmode_switch、focusmode_switch_new、op_breath_mode_status 任一为 1,就按开同步到手环,不再只看 zen_mode。
  2. 音乐钩子在健康的各个进程里都能接到播放信息,不再只装在 transport 进程。
  3. 健康文件先解密再校验,避免把活动通道上的密文当成文件丢掉。
  4. 已验证 OPPO 健康 6.9.40。
  5. 更新后强停一次「小米手环桥接」,再打开一次。否则连接进程还是旧的。

Assets

1

45-1.3.10

Stable

10/1/2026, 1:28:45 PM

  1. 手环返回的城市编号不再只认 weathercn 加 9 位数字。accu: 这类也会保留,并先用 10/6 原样写回。
  2. 列表仍然是空的时候,先发 10/7 把当前城市登记上去,再发预报。10/7 回状态 1(不支持单独加城市)或 3(已经有了)不再把整次同步判失败。
  3. 更新后强停一次「小米手环桥接」,再打开一次。否则连接进程还是旧的。

Assets

1

44-1.3.9

Stable

10/1/2026, 1:22:28 PM

  1. 小米手环 8 NFC 认证通过后不再因为两帧同时写蓝牙而断开。确认包和下一帧改成排队,等上一帧写完再发。
  2. 更新后强停一次「小米手环桥接」,再打开一次。否则连接进程还是旧的。

Assets

1

43-1.3.8

Stable

10/1/2026, 12:51:38 PM

  1. 小米手环 8 走 GATT 时能完成认证。明文 nonce 带上加密标志,并先协商 MTU。一帧放不下就分片发送,回包补确认。
  2. 更新后强停一次「小米手环桥接」,再打开一次。否则连接进程还是旧的。

Assets

1

42-1.3.7

Stable

10/1/2026, 6:50:50 AM

  1. 睡眠图同一天只留更长的一段,小睡不再接到主睡眠上。重叠的分期改成前后衔接,深睡和浅睡不再叠成两层。睡眠日里的旧行由健康的运动进程直接删掉,表 1010 的删除接口删不掉。
  2. 导入写完后刷新已经打开的健康首页。今日步数再写入首页实际读取的汇总,手环步数更大时推进首页缓存。
  3. 控制中心可以添加「手环」。下拉或点一下会拉起连接,不会断开。
  4. 系统账号还在时,健康开机向导不能再把账号写成游客。
  5. 更新后强停一次「小米手环桥接」和 OPPO 健康,再打开一次。否则钩子还是旧的。

Assets

1

41-1.3.6

Stable

9/30/2026, 7:05:20 PM

  1. 设备空间和 OPPO 健康扫类不再用 DexFile。Zygisk Next 打开链接器模式后,dlopen 宿主 odex 会在链接器里 abort,Java 的 catch 接不住,两个应用会被打死。现在只读 apk 里的 classes*.dex。
  2. 健康还在、桥接前台服务被系统杀掉时,健康读卡片或转发通知会把服务拉起来。后台限制拦住时用 root 启动。服务也会把掉线的健康进程拉回来。
  3. 会话还没就绪的通知先留着,连上后续发。普通通知最多留 60 秒,来电 15 秒。发出前被清掉的不再补发。
  4. 更新后强停一次设备空间和 OPPO 健康,再打开一次「小米手环桥接」。否则钩子和前台服务还是旧的。

Assets

1

40-1.3.5

Stable

9/30/2026, 4:58:44 PM

  1. 步数、活动消耗、锻炼时长按分钟写入 OPPO 健康,由健康按半小时画柱;有活动的小时记一次活动次数。设备类型为 Band。
  2. 每日汇总改记手环自己的步行记录,不再写入手机计步的 -2 桶。消耗按健康的千卡刻度存储。
  3. 更新后强停一次「小米手环桥接」,并重新打开一次 OPPO 健康,否则健康里的钩子还是旧代码。

Assets

1

39-1.3.4

Stable

9/30/2026, 6:21:35 AM

  1. 手机通知改回由 OPPO 健康转发。本应用的通知监听不再把应用通知推到手环。
  2. 更新后强停一次「小米手环桥接」,并重新打开一次 OPPO 健康,否则健康里的钩子还是旧代码。

Assets

1

38-1.3.3

Stable

9/30/2026, 6:10:33 AM

  1. 手机通知改由本应用自己的通知监听转发,不必把 OPPO 健康留在后台。健康里关掉的应用,要等健康再处理过一次通知后才会停。首页「通知使用权:未开启」点进去打开。
  2. 能解析第 4 版睡眠摘要。同一晚有多份记录时,留下较新的那份分期,不再把新旧分期一起删掉。
  3. 手环不回报实时入睡时,等睡眠记录同步后再暂停音乐。已经醒来,或桥接重启之后,同一晚不会再暂停一次。
  4. 连续压力里数值为 0 的空分钟会从 OPPO 健康里删掉。
  5. 更新后强停一次「小米手环桥接」,并重新打开一次 OPPO 健康,否则前台服务和健康里的钩子还是旧代码。

Assets

1

37-1.3.2

Stable

9/29/2026, 6:57:59 PM

  1. 小米手环 8 的两条 BLE 通知改为写完一条再写下一条。原先连着写会被系统拒绝,连接停在 BLE_NOTIFY_FAILED。
  2. 更新后强停一次「小米手环桥接」,否则前台服务里还是旧的连接代码。

Assets

1

36-1.3.1

Stable

9/29/2026, 6:15:04 PM

  1. 小米手环 8 这类纯 BLE 重连不再要求系统蓝牙配对还在,用已导入的密钥连接。SPP 仍要求系统配对。
  2. 连接失败后留在前台服务里重连,不再退出进程。健康不会再把桥接界面从后台拉起来。
  3. 通知只留一条折叠的「手环已连接」。保存健康文件时不再改这条通知。
  4. 更新后需要强停一次「健康」和「小米手环桥接」,否则健康进程和本模块服务里还是旧代码。

Assets

1

35-1.3.0

Stable

9/29/2026, 3:32:48 PM

  1. 没转发过的通知不再给手环发清除。来电清除仍会发。
  2. 通知白名单改到后台读。本模块、android、Phone Link、SystemUI 这类缓存里没有的包不再被当成关了开关。只有包不存在才拦截;线程或数据库错误记 OHEALTH_ALLOWLIST_UNAVAILABLE,不再丢通知。
  3. 同一勿扰状态 1 秒内的第二次同步直接丢掉。广播和 zen_mode 各打一次时只剩一轮规则,2 秒后仍补发一次。
  4. 睡眠被别的设备占用或已经写过时,记 OHEALTH_SLEEP_NIGHT_SKIPPED,原因是 other-device 或 already-ours。
  5. 相同的音乐帧,强制刷新也在 100ms 内只发一次。超过这个窗口的进度更新仍会发。
  6. 这次会话里已经存过的活动文件,下次列表里再出现也不下载。天气 30 分钟空闲轮询如果预报没变就停在本地,不发 10/*。手表自己来要、刚连上、手动同步仍完整发送。电量轮询保留。
  7. 经典蓝牙没有让应用进入 sniff 的接口,链路空闲时由控制器自己进。BLE 在服务发现后改为低功耗间隔。
  8. 把手环日报里的活动消耗、活动次数、距离和分时步数写入 OPPO 健康。锻炼时长这份日报里没有,不编造。
  9. 更新后需要强停一次「健康」和「小米手环桥接」,否则健康进程和本模块服务里还是旧代码。

Assets

1

34-1.2.11

Stable

9/29/2026, 10:52:49 AM

  1. 「下次闹钟」通知和稍后倒计时(-1018)不再当成正在响的闹钟发给手环
  2. 手环在稍后期间点关闭,会按这次响铃的日程取消手机上的稍后定时器
  3. 健康或设备空间的 UID 下挂了多个包时,仍允许读取设备卡片,避免健康里不显示手环
  4. 健康第一次读到设备快照会记入模块日志(OHEALTH_DEVICE_SNAPSHOT)
  5. 更新后需要强停一次「健康」和「时钟」,否则这两个进程里还是旧模块

Assets

1

32-1.2.9

Stable

9/29/2026, 5:07:48 AM

  1. 睡眠段被健康按开始分钟合并后,仍写入当日统计,不再被一段旧的结束时间卡住
  2. 去掉每 5 秒的免打扰查询,空闲时电量和历史同步改为 30 分钟
  3. 首页可打开「入睡后暂停音乐」:手环报入睡后暂停手机播放,醒来不自动续播
  4. 更新后需要强停一次「健康」,否则健康进程里还是旧模块

Assets

1

31-1.2.8

Stable

9/28/2026, 5:39:22 PM

  1. 时钟通知不再被健康的总开关丢掉,响铃直接发闹钟协议
  2. 更新后需要强停一次「健康」,否则健康进程里还是旧模块

Assets

1

30-1.2.7

Stable

9/28/2026, 5:03:10 PM

  1. OPPO 时钟响铃改发闹钟协议,不再被健康白名单当成普通通知丢掉
  2. 这条响铃通知消失时,手环上的同一次闹钟关闭
  3. 调试日志记下时钟、健康、设备空间和本模块的版本,以及时钟钩子是否挂上

Assets

1

29-1.2.6

Stable

9/28/2026, 4:35:53 PM

  1. 手环关闭或稍后响闹钟时,改由时钟响铃时留下的回执停掉手机闹钟
  2. 系统时钟收不到普通应用的内容通知,16.19.4 和 16.19.12 都走这条回执

Assets

1

28-1.2.5

Stable

9/28/2026, 4:01:00 PM

  1. 控制中心点手环时,按动作找到健康里的详情面板,不再写死类名
  2. 设备卡片改用手环图标,不再显示成手机
  3. 健康里点登录如果重启,模块日志会记下跳转和崩溃栈

Assets

1

27-1.2.4

Stable

9/28/2026, 3:58:28 PM

  1. 手机免打扰和手环互相同步,手环用自己的 watch_manual 规则
  2. 手机闹钟响铃会送到手环;手环关闭或稍后响,会停掉手机上同一次响铃

Assets

1

26-1.2.3

Stable

9/28/2026, 12:57:45 PM

  1. 任意已登录的 OPPO 健康账号都会写入,切换账号不再暂停采集
  2. 未发送的记录跟着当前账号走
  3. 健康已经登录但没有回调账号时,导入会自己读取当前账号

Assets

1

25-1.2.2

Stable

9/28/2026, 11:51:12 AM

  1. 来电从流体云卡片识别,不再把看不懂的通知丢掉
  2. 去电直接发去电状态,不再先当成来电
  3. 接通后先关掉来电界面,再显示通话中
  4. 修复设备详情因透明主题打不开

Assets

1

v1.2.1

Stable

9/28/2026, 10:56:19 AM

  1. 消息推送修正为推送应用程序名
  2. 修正来电通知状态识别
  3. 修复OPPO健康掉登录
  4. 增加更多的调试日志便于排查问题

Assets

1

v1.2.0

Stable

9/28/2026, 6:47:22 AM

1.2.0

  • 通知没推到手环时,调试日志会写明原因:没有设备快照、总开关、应用开关、亮屏不推送、重要性太低、会话没就绪、勿扰、内容过大。不再只有手表协议。
  • 调试日志只保留最近三次模块启动。不含 token、MAC、nonce、标题或正文。
  • 当前播放改由桥接自己的通知监听读取。健康自己的音乐监听没起来时,手环也能看到正在播放的会话。
  • 打开健康里的通知页时,如果没有当前设备 MAC,会用手环的 MAC。列表是空的时候不再直接闪退。

源码:https://github.com/MiaM1ku/Miband-OPlusBridge/releases/tag/23-1.2.0

装好后强停一次 OPPO 健康。

Assets

1

v1.1.9

Stable

9/28/2026, 6:11:03 AM

1.1.9

  • 健康里的「亮屏不推送」现在会生效。开关关闭且手机亮着、没锁屏时,通知不再转到手环。来电不受这个开关影响。
  • 通知进程还没有设备快照时不再把通知直接丢掉。
  • 后台进程启动时读到空账号,不再当成退出登录。
  • 音乐同步改到健康实际监听播放的 transport 进程。手环上停着的测试曲目会被当前会话换掉;没有会话就清掉。

源码:https://github.com/MiaM1ku/Miband-OPlusBridge/releases/tag/21-1.1.9

装好后强停一次 OPPO 健康。

Assets

1

v1.1.6

Stable

9/28/2026, 5:44:38 AM

1.1.6

  • 当前播放走 OPPO 健康自己的音乐控制:健康已经在听的曲目、播放状态和音量会同步到小米手环,手环上的播放、暂停、上下一首和音量也交回健康原来的按键处理。
  • 手环查找手机会调用 OPPO 健康自己的响铃。健康设备页的「查找设备」可以让这只手环响,再点一次停止。
  • 相对 1.1.3:小米手环 8 Pro 的活动文件会确认,心率数据不会停在步数汇总。

源码:https://github.com/MiaM1ku/Miband-OPlusBridge/releases/tag/18-1.1.6

装好后强停一次 OPPO 健康,模块钩子才会换上。

Assets

1

1.0.1

Stable

9/27/2026, 9:07:54 AM

心率/血氧/压力导入不再被睡眠写入或健康库服务未就绪挡住。

导入绑定同时记录 SPP 连接参数;缺快照时首页会要求采集连接参数。

Assets

1

v1.1.3

Stable

9/28/2026, 3:55:57 AM

1.1.3

  • 小米手环 9 Pro、Redmi Watch 6 等 SPP V2 设备在电量请求后不再因为收包序号跳变直接断开。序号超前时按官方 TransportL1 回 NAK,同一序号再出现或计数回绕则对齐后继续会话。
  • 小米手环 8 Pro 的分钟明细(daily details v1–v3)现在能解析心率、血氧和压力。步数汇总逻辑不变。

源码:https://github.com/MiaM1ku/Miband-OPlusBridge/releases/tag/15-1.1.3

Assets

1

v1.1.2

Stable

9/27/2026, 6:02:41 PM

1.1.2

  • SPP V1(8 Pro 等)和 BLE 写入后按真实序号确认,电量刷新以及心率、血氧、压力、睡眠文件同步不再卡在列表请求。SPP V2(10 / 10 Pro / 11)本来就有传输层 ACK,不受这个问题影响。
  • 真实应用通知仍按 OPPO 健康里的总开关和应用开关转发。开关值无论是布尔还是 0/1 都会认。
  • 手机勿扰开启时不推送普通通知,并把勿扰状态同步到手环。来电不受这条限制。
  • 健康、设备空间、小米运动健康与已验证版本不一致时只提示一次,点「我知道了」后不再出现,不强制升级。

源码:https://github.com/MiaM1ku/Miband-OPlusBridge/releases/tag/14-1.1.2

Assets

1

v1.1.0

Stable

9/27/2026, 5:08:44 PM

1.1.0

  • 尝试兼容小米手环全系里官方重连是 SPP 或 GATT + WearAuthV2、且没有 OOB 的机型:8 / 8 Pro / 9 / 9 Pro / 10 / 10 Pro / 11,以及 NFC、活力版。连接时按采集到的 profile 走 SPP V2、SPP V1 或 BLE,不再只认手环 11。
  • 修复 SPP V1(手环 8 Pro,以及所有 SppTaskQueueV1)和 BLE 加密命令缺少计数、鉴权后第一条业务命令被拒绝、界面一直离线的问题。SPP V2(手环 11、10 Pro 等)不走这条路径。
  • 首页「常用」可一键生成调试日志并发送到 QQ。日志只有阶段、型号、队列和帧类型,不含 token、MAC 或 nonce。

1.0.8

  • 恢复设备空间卡片的 XML 资源和启动图标。

1.0.7

  • 修复手环 8 / 10 Pro 导入时 token 和已采集 SPP 分帧被判失败的问题。

1.0.6

  • 手环 8 Pro 可以按已采集的 SPP V1 观察结果完成导入,不再要求先读到固件版本。

1.0.5

  • 增加手环 8 / 9 / 10 的显示名,以及 SPP V1、纯 BLE(fe95)实时会话。
  • 资源打包不再强制本机 keystore。

1.0.3

  • 不再把实时会话钉死在手环 11。官方重连是安全 SPP + WearAuthV2、无 OOB 的手环都可以导入接管。

1.0.2

  • 修复 OHealth 导入绑定,并打开原生设备面板。

1.0.1

  • 睡眠或健康库服务未就绪时仍导入心率。
  • 导入时采集 SPP 连接参数,避免接管后因快照丢失而离线。

1.0.0

  • 首个公开发布。把已绑定的小米手环接到 ColorOS 设备空间和 OPPO 健康。

Assets

1