• 1.6.0 471d8310d7

    lxh2875931338 released this 2026-07-21 00:06:10 +08:00 | 11 commits to main since this release

    [1.6.0] - 2026-07-20

    新增

    • 魅族 21 Note 机型适配:新增 21 Note 特征字识别,设计容量 5500mAh

      • 21 Note 运行 Flyme 12.6 版本,日志格式与 21 系列一致
      • 支持 learned_cap 字段直接读取,与 21 / 21 Pro 逻辑相同
      • 已加入 DeviceMatching 机型映射表
    • 更新日志页面:内置 CHANGELOG.md 渲染,版本历史一目了然

      • 使用 flutter_markdown 解析,支持标准 Markdown 格式
      • 滚动进度条:实时显示阅读进度,提升浏览体验
      • 进入页面自动请求 120Hz 高刷新率,滑动更流畅(Flyme LTPO 适配)
      • 滚动时呼吸动画维持高刷感知,停止后自动恢复省电策略
    • AppBar 菜单重构:刷新按钮左移,右侧新增三点菜单

      • 更新日志:已可用
      • 深色模式:占位(1.7.0 实现)
      • 关于:占位(1.7.0 实现)
    • 原生层高刷控制:新增 MethodChannel 通道,支持 Dart 侧动态申请/释放 120Hz

      • 进入更新日志页面自动触发
      • 退出页面自动释放,不影响系统省电策略

    已确认完美支持(更新)

    机型 容量来源 设计容量
    魅族 20 / 20 Pro / 20 INFINITY remaining_cap + status=Full 4700 / 5000 / 4800 mAh
    魅族 21 / 21 Pro learned_cap 4800 / 5050 mAh
    魅族 21 Note(新增) learned_cap 5500 mAh

    优化

    • UI 拆分:将 BatteryHealthPage 的 UI 部分抽离至独立文件,降低耦合度
    • 动画简化:移除复合动画控制器(AnimationController),改用轻量 AnimatedOpacity 控制充电条目显隐
    • 更新日志性能:缓存 Markdown 渲染结果,避免重复解析
    • LTPO 适配:通过进度条微动 + 原生层 preferredRefreshRate,解决更新日志页面降频卡顿问题

    🐛 修复

    • 修复更新日志页面因 ListView + shrinkWrap 导致的 unbounded height 渲染异常
    • 修复充电条目动画状态残留导致的显示异常
    • 修复部分 TextStylecolorforeground 混用导致的渲染断言错误

    📊 影响范围

    • device_matching.dart:新增 21 Note 机型映射
    • battery_health_page.dart:AppBar 重构,动画简化
    • battery_data_layout.dart(新增):UI 布局抽离
    • changelog_page.dart(新增):更新日志页面
    • MainActivity.kt:新增原生高刷控制通道
    • pubspec.yaml:新增 flutter_markdown 依赖,添加 assets/CHANGELOG.md

    📌 备注

    • 已在魅族21 Note Flyme 12.6 上测试通过,日志解析正常
    Downloads
  • 1.5.3 b390311827

    lxh2875931338 released this 2026-07-19 20:17:41 +08:00 | 19 commits to main since this release

    机型匹配情况

    已确认完美支持

    • 魅族 20 / 20 Pro / 20 INFINITY
    • 魅族 21 / 21 Pro

    ⚠️ 部分支持(测试中)

    • 魅族 18 / 18s / 18 Pro / 18s Pro(日志存在,字段解析适配中)
    • 魅族 16s(需回退原厂固件验证)

    确认不支持

    • 魅族 21 Note(星纪团队固件,日志格式乱码无法识别,导致异常)
    • 魅族 22(系统未生成 mbattery_charger 目录)

    📌 说明

    • 适配状态仅针对 BMS 日志可读性,与手机硬件本身无关
    • 部分旧机型(如 16 系)若无日志生成,则无法使用本工具
    • 后续若发现其他机型可用,将持续补充
    Downloads
  • 1.5.2 ae9bb2dfa1

    lxh2875931338 released this 2026-07-14 23:06:46 +08:00 | 25 commits to main since this release

    [1.5.2] - 2026-07-14

    新增

    • 浪漫雅圆字体,工程内文件为FlymeFont.ttf

    🎨 UI 优化

    • 字体体系重构:数字全局替换为 FlymeFont(浪漫雅圆),中文保留 HarmonyOS Sans SC
      • 健康度百分比、容量数值、循环次数、电压/温度读数均使用 FlymeFont
      • 中文/单位/符号保持 HarmonyOS Sans SC,确保阅读舒适度
    • 温标符号修正:温度显示由 °C(度符号 + C)改为专用字符 (U+2103),与 FlymeFont 原生适配
    • 容量行视觉权重优化
      • 当前容量与设计容量数字使用 FlymeFont(字号 20,字重 300)
      • mAh 单位改用 HarmonyOS Sans SC(字号 16,字重 500),与 cycles 保持一致
      • 整行颜色统一为 rgb(95, 95, 95),弱化视觉重量,突出健康度大数字
    • 电压/温度极值显示优化:数值与单位统一使用 FlymeFont,箭头符号保留 HarmonyOS

    🐛 修复

    • 修复 FlymeFont 数字 1 在部分场景下显示为红色的问题(字体内部颜色预设)
    • 修复容量行 designCap(设计容量)未正确应用 FlymeFont 的问题
    • 修复部分 TextStylecolorforeground 混用导致的渲染断言错误
    • 统一主界面与二级页面状态栏样式

    📊 影响范围

    • battery_summary.dart:健康度/循环/容量显示样式重构
    • battery_info_panel.dart:电压/温度显示字体统一
    • charge_detail_page.dart:数值字体统一
    • trend_chart.dart:坐标轴数字字体统一

    📌 备注

    • 本次更新纯 UI 优化,不影响数据读取与计算逻辑
    Downloads
  • 1.5.0 4857aa5d1b

    lxh2875931338 released this 2026-07-08 23:53:33 +08:00 | 29 commits to main since this release

    [1.5.0] - 2026-07-09

    🐛 修复

    • 修复有线充电功率计算单位错误(µV × µA 计算时少除 1000,导致功率放大 1000 倍,属于潜藏bug,外面看不出问题)
    • 修复魅族 21 系列 learned_cap 因受 status=Full 限制导致容量未及时更新的问题
    • learned_cap 优先级提升:在所有状态行中优先匹配,不再局限于 status=Full

    优化

    • 有线充电功率显示重构:
      • 主界面:≈{实际功率}w/{请求功率}w(例:≈30w/65w
      • 二级页面:拆分为“请求档位”(≈80w/L-10)和“实际功率”(≈30w)两行
      • USB 慢充保持 ≈7.5w 不变
    • UI 统一:
      • 统一主界面与二级页面状态栏背景色
      • 统一主界面与二级页面 AppBar 背景色为 Colors.white
      • 状态栏图标保持深色(Brightness.dark
    Downloads
  • 1.4.7 46f8dbc67e

    lxh2875931338 released this 2026-07-07 08:35:45 +08:00 | 34 commits to main since this release

    [1.4.7] - 2026-07-07

    🐛 修复

    • 修复魅族 20 系列在「今日无充满记录」时,电压极值、温度极值、循环次数显示为 0 的问题
    • 修复字段提取与容量提取耦合导致的备用机场景数据丢失

    优化

    • 字段提取(cycle / tbat / vbat / 极值)与容量提取(cap)解耦
    • 无论当日是否有 status=Full,均从 validLines 中提取常规字段
    • 容量单独处理:有值则更新,无值则复制前一日数据

    📊 影响范围

    • BatteryHealthPage.readBatteryCapacity 重构
    • CapacityExtractor 保持不变(1.4.5 已优化)
    • BatteryDataService / DatabaseService 保持不变
    Downloads
  • 1.4.5 3d2f665e76

    lxh2875931338 released this 2026-07-05 23:47:54 +08:00 | 37 commits to main since this release

    1.4.5 - 2026-07-05

    🐛 修复

    • 修复魅族 20 系列无法识别 learned_cap 导致健康度显示异常的问题
    • 修复备用机场景下因不充电导致健康度每日跳动的问题

    优化

    • 容量提取仅从 status=Full 行采样,数据更准确(BMS 校准态)
    • 支持 remaining_cap 单位自动识别(µAh / mAh),兼容 20/21 系列日志格式
    • 无充电日自动沿用最近一次有效容量数据,健康度曲线更平滑

    🧪 测试

    已在魅族 20 Pro(备用机)连续四天未充电,数值稳定
    等待其他同设备的朋友参与测试

    Downloads
  • 1.4.0 2b34b6c8b6

    lxh2875931338 released this 2026-07-05 01:23:13 +08:00 | 41 commits to main since this release

    1.4.0 — SAF 权限改造

    🚀 移除

    • MANAGE_EXTERNAL_STORAGE 权限:移除全盘存储权限,符合 Android 11+ 存储规范,提升应用兼容性

    新增

    • SAF 文件夹授权:通过 Storage Access Framework 引导用户授权 mbattery_charger 文件夹,无需申请全局存储权限
    • 授权持久化:授权 URI 保存至 SharedPreferences,应用重启后自动恢复,无需重复授权
    • Kotlin 原生 SAF 实现:使用 startActivityForResult + onActivityResult 处理文件夹选择,兼容 Android 5.0+
    • URI 跨重启恢复:通过 restoreUri 方法将 Dart 端缓存的 URI 传递给 Kotlin 端,确保 safUri 始终有效

    🐛 修复

    • 20 系兼容性问题:理论上将彻底解决魅族 20 系列无法读取日志文件的问题
    • 授权弹窗残留:优化对话框关闭逻辑,授权成功后自动关闭弹窗,不再残留
    • 应用重启后数据丢失:修复重启后电压、温度、循环次数全部为 0 的问题

    🎨 优化

    • 状态栏样式:状态栏统一为白色背景、深色图标,与应用主题保持一致
    • AppBar 沉浸式:AppBar 背景与页面主体颜色统一,消除视觉色差

    📦 版本说明

    • 开发分支:1.3.0-dev.11.3.0-dev.x → 合并为 1.4.0
    • 下个版本 1.5.0 将开始功率计算逻辑补充

    🔜 下一个版本预告

    • 1.5.0:功率计算逻辑补充,档位映射完善
    • 1.6.0:更新日志页面(Markdown 渲染)
    • 2.0.0:数据看板扩展(月/季/年趋势、折线图)
    Downloads
  • 1.3.0 17c728565c

    1.3.0 Stable

    lxh2875931338 released this 2026-07-04 12:40:50 +08:00 | 56 commits to main since this release

    🐛 修复

    • 0-8点跨天数据读取:统一使用 UTC 时间生成日志文件名,彻底解决凌晨时段无法读取当日数据的问题(影响所有机型)
    • FLOAT 模式误标为 PPS:real_type 优先级调整为最高,FLOAT/SDP 正确显示为 USB 充电,不再错误显示 PPS
    • 旧日志污染修复:时间窗口以充电插入时刻为基准向前看,排除旧日志干扰,确保充电状态准确

    优化

    • 时间窗口精确定位:充电开始后 3 分钟内的日志才有效,避免历史数据污染当前状态
    • 插入识别逻辑优化:插入瞬间清空旧类型,显示“识别中...”,等待新日志落盘后自动刷新

    📦 版本说明

    • 开发分支:1.2.0-dev.11.2.0-dev.3 → 合并为 1.3.0
    • 下个版本 1.4.0 将开始 SAF 权限改造(解决 20 系兼容性)

    🔜 下一个版本预告及大致展望

    • 1.4.0:SAF 权限改造,彻底解决魅族 20 系列无法读取日志的问题
    • 1.5.0:功率计算逻辑补充,档位映射完善
    • 2.0.0:数据看板扩展(月/季/年趋势、折线图、充电曲线)
    Downloads
  • 1.2.0 feede517dc

    lxh2875931338 released this 2026-07-03 22:10:56 +08:00 | 69 commits to main since this release

    1.0.0:软件方向、UI定义完成
    1.1.0:15天趋势显示

    1.2.0 (2026-07-02)

    🐛 修复

    • UTC 时区修正:统一使用 UTC 时间生成日志文件名,彻底解决 0 点后无法读取当日数据的问题
    • 时间窗口优化:日志时间戳与系统当前时间统一采用 UTC 比较,确保 3 分钟窗口判断准确
    • 电压/温度读取恢复:修复因时区错位导致的数据全零显示问题

    优化

    • 协议识别增强:在原先有线充电识别功能的基础上,增加无线充电 wls_type 字段识别,并支持通用匹配,自动识别 EPPMZ_EPPBPP 等变体协议
    • 功率计算逻辑补充:有线充电档位映射表新增 27W、33W 等档位,匹配更精准
    • UI 反馈优化:充电状态提示更清晰,区分“识别中...”与“读取中...”
    Downloads