把自己 8 年前的开源项目用 AI 重构了,开源 Android 跑步 APP - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
igofreely

把自己 8 年前的开源项目用 AI 重构了,开源 Android 跑步 APP

  •  
  •   igofreely 10 天前 442 次点击

    https://github.com/igofreely/runner

    HeartRunner 一款基于 BLE (低功耗蓝牙)的实时心率监测 Android 应用,专为跑步运动设计。连接蓝牙心率带,实时追踪心率数据,并通过语音播报提醒你保持在目标心率区间内。支持无心率带独立记录 GPS 轨迹。

    功能特性 BLE 心率设备连接 自动扫描并连接符合标准蓝牙心率协议( UUID 180D )的心率带 实时心率监测 实时显示当前心率,支持 UINT8/UINT16 数据格式 心率区间管理 可配置最大心率与目标区间百分比,心率超出区间时自动提醒 语音播报 基于 TTS 的中文语音提醒,包括定时心率播报与区间越界警告 运动播报 可配置按距离和/或时间间隔播报速度、里程、时间、心率、平均心率、平均速度,与心率区间告警独立且告警优先级更高 心率趋势图 Canvas 绘制的折线图,展示最近 60 次心率数据走势 高德地图 使用 osmdroid + 高德瓦片源,中文地图标注,实时显示位置和运动轨迹 地图全屏 点击全屏按钮可展开地图至全屏查看轨迹详情 WGS-84/GCJ-02 坐标转换 GPS 坐标自动转换为 GCJ-02 ,确保在高德地图上精确显示 独立运动记录 无需连接心率带即可开始记录 GPS 轨迹、速度、里程等数据 数据导出 支持导出 GPX 和 TCX 格式的运动文件,可分享到第三方平台 前台服务 录制时自动启动前台服务,息屏后保持 GPS 和蓝牙连接 Material Design 3 支持动态取色( Android 12+)和深色模式 技术栈 类别 技术 语言 Kotlin UI Jetpack Compose + Material Design 3 架构 MVVM ( ViewModel + StateFlow ) 地图 osmdroid + 高德瓦片源 蓝牙 Android BLE API 异步 Kotlin Coroutines & Flow 语音 Android TextToSpeech 权限 Accompanist Permissions 最低版本 Android 8.0 ( API 26 ) 目标版本 Android 16 ( API 36 ) 项目结构 com.heartrunner.app ├── HeartRunnerApp.kt # Application 初始化,创建通知渠道 ├── ble/ │ └── BleHeartRateManager.kt # BLE 扫描、连接、心率数据解析 ├── data/ │ └── WorkoutData.kt # 运动数据模型(轨迹点) ├── export/ │ └── WorkoutExporter.kt # GPX / TCX 格式导出 ├── location/ │ ├── CoordinateConverter.kt # WGS-84 GCJ-02 坐标转换 │ └── LocationTracker.kt # GPS + 网络定位与轨迹跟踪 ├── service/ │ └── HeartRateService.kt # 前台服务,息屏保活 ├── tts/ │ ├── BroadcastConfig.kt # 运动播报配置(距离/时间触发、播报内容) │ ├── HeartRateAlertLogic.kt # 心率区间判断与警报逻辑 │ └── TtsAlertManager.kt # TTS 语音播报管理 └── ui/ ├── MainActivity.kt # Activity 入口 ├── MainViewModel.kt # 状态管理与业务编排 ├── HeartRunnerScreen.kt # Compose UI 界面(含高德地图) └── theme/ └── Theme.kt # Material 3 主题配置 构建与运行 环境要求 Android Studio Ladybug 或更高版本 JDK 21 Android SDK 36 构建 ./gradlew assembleDebug 安装到设备 ./gradlew installDebug 运行时权限 应用需要以下权限:

    BLUETOOTH_SCAN / BLUETOOTH_CONNECT ( Android 12+) ACCESS_FINE_LOCATION (用于 BLE 扫描和 GPS 轨迹记录) INTERNET / ACCESS_NETWORK_STATE (加载高德地图瓦片) POST_NOTIFICATIONS ( Android 13+,前台服务通知) 使用方式 打开应用,授予蓝牙和位置权限 点击「开始记录」直接开始 GPS 轨迹记录(无需心率带) 如需心率监测,点击「扫描心率带」连接蓝牙心率设备 地图实时显示当前位置和运动轨迹,点击全屏按钮可放大查看 点击设置图标,配置最大心率和目标区间 开启语音播报,应用将自动提醒心率状态 许可证 MIT License

    3 条回复    2026-04-15 22:47:49 +08:00
    igofreely
        1
    igofreely  
    OP
       10 天前
    jasonkxs
        3
    jasonkxs  
       10 天前 via iPhone
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2498 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 01:09 PVG 09:09 LAX 18:09 JFK 21:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86