5 Commits

5 changed files with 45 additions and 5 deletions
-4
View File
@@ -1,4 +0,0 @@
{
"cmake.ignoreCMakeListsMissing": true,
"gitlens.codeLens.enabled": false
}
+24
View File
@@ -40,6 +40,30 @@
--- ---
## 机型匹配情况 ## 机型匹配情况
| 机型 | 系统版本 | 容量来源 | 设计容量 | 状态 |
|---|---|---|---|---|
| 魅族 22 | Flyme 12.x | 系统未生成 `mbattery_charger` 目录 | — | ❌ 不支持 |
| 魅族 21 | Flyme 12.x | `learned_cap` | 4800 mAh | ✅ 与 21 Pro 同步获得支持 |
| 魅族 21 Pro | Flyme 12.x | `learned_cap` | 5050 mAh | ✅ 完美支持 |
| 魅族 21 Note | Flyme 12.x | `learned_cap` | 5500 mAh | ✅ 1.6.0 新增支持 |
| 魅族 21 Note | Flyme 10 / 11 | 日志格式异常 | — | ❌ 不支持 |
| 魅族 20 | Flyme 12.x | `remaining_cap` + `status=Full` | 4700 mAh | ✅ 1.4.0 首次支持 |
| 魅族 20 Pro | Flyme 12.x | `remaining_cap` + `status=Full` | 5000 mAh | ✅ 1.4.0 首次支持 |
| 魅族 20 INFINITY | Flyme 12.x | `remaining_cap` + `status=Full` | 4800 mAh | ✅ 1.5.3 字段匹配 |
| 魅族 18 / 18s / 18 Pro / 18s Pro / 18X | Flyme 9 / 10 | 日志存在,字段适配中 | 4000 / 4500 mAh | ⚠️ 等待测试中 |
| 魅族 17 / 17Pro | Flyme 8 / 9 / 10 | 等待群友提供字段信息 | 4500 / 4500mAh | ⚠️ 待验证 |
| 魅族 16th / 16th Plus / 16X / 16s / 16sPro / 16Xs / 16T | Flyme 8 / 9 | 需回退原厂固件验证 | 3600 mAh | ⚠️ 待验证 |
### 📌 说明
-**完美支持**:已通过实机验证,日志解析正常,所有字段完整
- ⚠️ **测试中**:日志存在但字段格式与 20/21 系不同,需要进一步适配
- ⚠️ **待验证**:理论上可能支持,需要实机反馈确认
-**不支持**:系统未生成 BMS 日志目录,或日志格式无法解析
- **系统版本说明**:Flyme 12.x 及以上版本日志格式统一,Flyme 10/11 及以下版本日志格式可能存在差异
目前据群友反馈已知: 目前据群友反馈已知:
- 魅族22无mbattery_charger目录生成,无法实时计算相应百分比,因此已在最近版本去除相关匹配信息 - 魅族22无mbattery_charger目录生成,无法实时计算相应百分比,因此已在最近版本去除相关匹配信息
- 魅族18在后续的版本中关闭了mbattery_log生成,疑似无效,老版本可能支持 - 魅族18在后续的版本中关闭了mbattery_log生成,疑似无效,老版本可能支持
+18
View File
@@ -2,6 +2,11 @@
### ✨ 新增 ### ✨ 新增
- **魅族 21 Note 机型适配**:新增 `21 Note` 特征字识别,设计容量 5500mAh
- 21 Note 运行 Flyme 12.6 版本,日志格式与 21 系列一致
- 支持 `learned_cap` 字段直接读取,与 21 / 21 Pro 逻辑相同
- 已加入 `DeviceMatching` 机型映射表
- **更新日志页面**:内置 `CHANGELOG.md` 渲染,版本历史一目了然 - **更新日志页面**:内置 `CHANGELOG.md` 渲染,版本历史一目了然
- 使用 `flutter_markdown` 解析,支持标准 Markdown 格式 - 使用 `flutter_markdown` 解析,支持标准 Markdown 格式
- 滚动进度条:实时显示阅读进度,提升浏览体验 - 滚动进度条:实时显示阅读进度,提升浏览体验
@@ -17,6 +22,14 @@
- 进入更新日志页面自动触发 - 进入更新日志页面自动触发
- 退出页面自动释放,不影响系统省电策略 - 退出页面自动释放,不影响系统省电策略
### ✅ 已确认完美支持(更新)
| 机型 | 容量来源 | 设计容量 |
|---|---|---|
| 魅族 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 部分抽离至独立文件,降低耦合度 - **UI 拆分**:将 `BatteryHealthPage` 的 UI 部分抽离至独立文件,降低耦合度
@@ -32,12 +45,17 @@
### 📊 影响范围 ### 📊 影响范围
- `device_matching.dart`:新增 21 Note 机型映射
- `battery_health_page.dart`AppBar 重构,动画简化 - `battery_health_page.dart`AppBar 重构,动画简化
- `battery_data_layout.dart`(新增):UI 布局抽离 - `battery_data_layout.dart`(新增):UI 布局抽离
- `changelog_page.dart`(新增):更新日志页面 - `changelog_page.dart`(新增):更新日志页面
- `MainActivity.kt`:新增原生高刷控制通道 - `MainActivity.kt`:新增原生高刷控制通道
- `pubspec.yaml`:新增 `flutter_markdown` 依赖,添加 `assets/CHANGELOG.md` - `pubspec.yaml`:新增 `flutter_markdown` 依赖,添加 `assets/CHANGELOG.md`
### 📌 备注
- 本次更新为 1.6.0 封版版本,后续将聚焦 1.7.0(深色模式 + 关于页面)
- 21 Note 在 Flyme 12.6 上测试通过,日志解析正常 ✅
---- ----
## [1.5.3] - 2026-07-19 ## [1.5.3] - 2026-07-19
+2
View File
@@ -3,6 +3,7 @@ class DeviceMatching {
/// 根据机型返回设计容量(mAh) /// 根据机型返回设计容量(mAh)
static int getDesignCapacity(String model) { static int getDesignCapacity(String model) {
if (model.contains('21 Pro')) return 5050; if (model.contains('21 Pro')) return 5050;
if (model.contains('21 Note')) return 5500;
if (model.contains('21')) return 4800; if (model.contains('21')) return 4800;
if (model.contains('20 Pro')) return 5000; if (model.contains('20 Pro')) return 5000;
if (model.contains('20 Inf')) return 4800; if (model.contains('20 Inf')) return 4800;
@@ -29,6 +30,7 @@ class DeviceMatching {
/// 根据机型返回显示名称 /// 根据机型返回显示名称
static String getModelName(String model) { static String getModelName(String model) {
if (model.contains('21 Pro')) return '魅族21 Pro'; if (model.contains('21 Pro')) return '魅族21 Pro';
if (model.contains('21 Note')) return '魅族21 Note';
if (model.contains('21')) return '魅族21'; if (model.contains('21')) return '魅族21';
if (model.contains('20 Pro')) return '魅族20 Pro'; if (model.contains('20 Pro')) return '魅族20 Pro';
if (model.contains('20 Inf')) return '魅族20 Infinity'; if (model.contains('20 Inf')) return '魅族20 Infinity';
+1 -1
View File
@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts # In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix. # of the product and file versions while build-number is used as the build suffix.
version: 1.5.3 version: 1.6.0
environment: environment:
sdk: ^3.9.2 sdk: ^3.9.2