# fit-tool **Repository Path**: daizhizhou/fit-tool ## Basic Information - **Project Name**: fit-tool - **Description**: FIT 码表文件读取、可视化与按时间截取(WPF / Android / Python) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-18 - **Last Updated**: 2026-09-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FitTool — 码表 FIT 文件处理工具 读取 Garmin / 码表 `.fit` 活动文件,可视化心率/速度/功率等曲线,并按时间截取片段后重新导出为合法 FIT 文件。 ## 界面预览 Windows(WPF): ![FitTool 曲线](docs/screenshots/wpf-chart.png) ![FitTool 启动页](docs/screenshots/wpf-home.png) Android(Flutter Material 3,底栏四页:活动 / 视图 / 截取 / 设置): | 活动 | 视图 | |:---:|:---:| | ![活动](docs/screenshots/android-activity.png) | ![视图](docs/screenshots/android-view.png) | | **截取** | **设置** | | ![截取](docs/screenshots/android-clip.png) | ![设置](docs/screenshots/android-settings.png) | 演示视频(迈金 C506SE,2026-09-06 实骑): - Windows:[docs/demo/wpf-magene-c506se.mp4](docs/demo/wpf-magene-c506se.mp4) - Android:[docs/demo/flutter-magene-c506se.mp4](docs/demo/flutter-magene-c506se.mp4) > 四页预览图仍是上一版实机截图,布局与当前 Flutter 页一致。 ## 功能 - 打开并解析 FIT Activity 文件 - 展示运动摘要(时长、距离、心率、功率等) - 曲线可视化,拖动竖线或滑块选择时间范围 - 截取片段并重算 Lap / Session / Activity 汇总后导出 - Windows:调用官方 [fit-sdk-tools](https://github.com/garmin/fit-sdk-tools) 的 `FitCSVTool.jar` 导出 CSV、`ActivityRepairTool.jar` 修复损坏文件 - Android:同能力的 APK(Flutter Material 3,底栏四页:活动 / 视图 / 截取 / 设置) ## 技术栈 | 平台 | SDK / 工具 | |------|------------| | Windows | [garmin-fit-sdk](https://pypi.org/project/garmin-fit-sdk/)(官方 Python SDK)+ [fit-sdk-tools](https://github.com/garmin/fit-sdk-tools) JAR | | Android | Flutter + 官方 [com.garmin:fit](https://repo1.maven.org/maven2/com/garmin/fit/)(Java SDK,宿主侧解码/截取/导出) | ## Windows 使用 ### 推荐:WPF 版 预编译包在 [Releases](https://gitee.com/daizhizhou/fit-tool/releases): - **自包含** `FitTool-windows-x64.exe`:约 69 MB,无需预装 .NET - **依赖框架** `FitTool-windows-fd.zip`:约 1.6 MB,需 [.NET 8 Desktop Runtime](https://dotnet.microsoft.com/download/dotnet/8.0) 本机有 SDK 时也可直接跑源码: ```bat run_wpf.bat ``` 重新发布: ```bat publish_wpf.bat ``` 产物在 `dist\wpf-sc\`(自包含)和 `dist\wpf-fd\`(依赖框架)。工程源码:`wpf\FitTool.Wpf\`(Garmin.FIT.Sdk + OxyPlot) ### 备选:Python GUI - Python 3.10+ - Java 8+(用于 FitCSVTool / ActivityRepairTool) ### 安装(Python) ```bat pip install -r requirements.txt ``` ### 启动 Python GUI ```bat run_windows.bat ``` 或: ```bat set PYTHONPATH=src python -m gui.app ``` ### 命令行截取(Python,可选) ```bat set PYTHONPATH=src python -m fit_processor.cli examples\Activity.fit --start "2021-07-20 21:20:00" --end "2021-07-20 21:35:00" -o out_clip.fit ``` ## Android APK 手机端已改为 **Flutter** 工程,位于 `flutter/`。FIT 解码、截取、导出仍走官方 Java SDK(`com.garmin:fit`),通过 MethodChannel 接到 Dart UI。旧的 `android/` Compose 工程保留作对照,不再作为发布包来源。 ### 已构建的安装包 - [Releases](https://gitee.com/daizhizhou/fit-tool/releases) 附件 `FitTool-android.apk`(arm64,约 **17 MB**) - 仓库根目录同样保留一份,便于直接 `adb install` 底栏四页:**活动 / 视图 / 截取 / 设置**。设置页可切换: - **语言**:中文 / English / Русский / Español / 日本語 / 한국어 / Français / Italiano(默认中文) - **主题**:自动(按时间)/ 浅色 / 深色(默认自动:06:00–18:00 浅色,其余深色) 安装: ```bat adb install -r FitTool-android.apk ``` 若手机上已装旧包,`versionCode` 已升到 12,可直接覆盖。 ### 命令行构建 需要 **Flutter SDK**、**JDK 17+** 与 Android SDK: ```bat cd flutter set PUB_HOSTED_URL=https://pub.flutter-io.cn set FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn set JAVA_HOME= set ANDROID_HOME= flutter pub get flutter build apk --release --target-platform android-arm64 ``` 产物:`flutter\build\app\outputs\flutter-apk\app-release.apk`(复制到仓库根目录并命名为 `FitTool-android.apk`) ## 目录结构 ``` FitTool/ tools/ # FitCSVTool.jar / ActivityRepairTool.jar examples/ # 示例 FIT / CSV src/ fit_processor/ # 解码、截取、重编码、官方工具封装 gui/ # Windows CustomTkinter 界面 android/ # 旧版 Kotlin + Compose(对照用) flutter/ # 当前 Android:Flutter Material 3 run_windows.bat requirements.txt ``` ## 说明 - 截取会过滤 Record,并重建 timer 起止事件与汇总消息,便于上传到常见运动平台。 - 开发者字段(Developer Fields)在重编码时会被剥离,避免缺少 Field Description 导致校验失败。 - 官方文档:[FIT SDK](https://developer.garmin.com/fit) · [FitCSVTool](https://developer.garmin.com/fit/fitcsvtool/) ## License 本工具代码可按项目需要自行使用。`tools/` 下的 Garmin 官方 JAR 与 Profile 遵循 Garmin FIT SDK 许可(见 `_sdk_tools/LICENSE.txt`)。