手机配合 ESP32-S3 圆屏的导航项目。安卓现在分成两套独立工程,请按是否需要红绿灯读秒选择;不要把两套源码互相覆盖。iOS 本轮保持原样。
| 选择 | 当前版本 | 源码与构建说明 | 需要什么 |
|---|---|---|---|
| 普通版,不带读秒 | 8.3.26 | android/standard | 本人的包名、签名及高德 Android Key;根目录一键打包默认生成此版 |
| 读秒版 | 8.3.26-single.30 | android/countdown | 同样需自己的 Key 和签名;完整构建入口自动获取 provider.apk,无需另找组件 |
| 1.75 圆屏通用固件 | 7.12.10-pages.4 | 固件说明 · 更新详情 | 微雪 ESP32-S3-Touch-AMOLED-1.75;不能刷到 1.85B 或 M5Stack |
固件下载:7.12.10-pages.4 Release。Windows 下载 MotoNav-1.75-v7.12.10-pages.4-Universal-Flasher.zip,完整解压后双击“一键烧录.bat”。默认应用升级保留设置和配对;首次完整安装会整片擦除,按提示先确认板型和备份。
公开固件使用通用 MotoNav/品牌开机动画,不含维护者个人 Rebel500 图片。 1.85B 仍保留原来的 7.12.3-185B 源码,本轮没有升级或生成其新固件,禁止混刷。
- 修复网页摩托车已规划却未开始后台导航:读秒版 single.30 明确启动所选后台路线,连续确认真实导航状态后才判定启动成功;失败有限重试,已运行的后台导航持续停止时最多恢复两次。停车等灯、回调暂时不来不会触发恢复,用户结束导航后停止监测。普通版、iOS 和固件不涉及这次修复。
- 安卓源码和入口分清楚:普通版是原 8.3.26,加上新固件时间同步;读秒版更新为当前 single.30。两个工程可以分别打开、构建和维护签名,旧读秒目录只保留迁移指引。
- 读秒版带上最近的功能和修复:网页摩托车/驾车选路、60/100/120 模拟速度、手动途经点及搜索加油站、收藏与历史记录、分享验证、导航中返回设置及锁屏恢复处理。修正网页自动途经点靠近转弯时对路口匹配的干扰。
- 圆屏固定页面与主页时钟:音乐在左、首页/导航居中、天气在右;降雨和预警放在天气上下。主页大字 24 小时时间、小字日期;安卓两版认证连接后校时。断连后继续走时,完全关机重启后等待手机重新校时,不将占位符当真实时间。
- 修复开机反复重启:已从实际崩溃转储定位蓝牙初始化阶段的系统任务栈越界,给对应系统任务增加栈余量,其他任务和地图、关机流程不改。共享核心在个人画面版完成 8 次连续重启和用户电池关机再开机验证;公开通用画面版重新编译及检查,不冒充再次刷机实测。
- 保守代码优化:减少后台界面空转、地图相同位置/朝向重复提交及首页时钟重复计算;没有测得可承诺的帧率、温度或续航提升。
读秒属于实验功能,不保证一直有效。 地区与路口覆盖、上游数据、方向、路线、定位、网络或系统后台策略变化都可能使它缺失或失效,缺少的秒数不会捏造。当前虚拟 GPS 回放完成三次真实红灯等待后绿灯起步,另一路口缺持续匹配数据而停止;不等于整条路线或实车路测已经通过。
完整更新说明 · 本轮验证与限制 · 普通版编译说明 · 读秒版完整构建说明
下载安卓小白 PDF 教程(普通版与读秒版分别说明)。两版都提供可直接复制给 WorkBuddy 的提示词;读秒组件现在自动获取,无需自己找文件。
- 不需要读秒:双击根目录
一键打包.bat/一键打包-普通版.bat,或让编译工具构建android/standard。成品在根目录output/。 - 需要读秒:按 读秒版 WorkBuddy 提示词准备环境,再运行
一键打包-读秒版.bat或该目录的build-countdown.py。脚本自动从 组件 Release下载并校验provider.apk,放入android/countdown/inputs/,以后复用缓存。直接 Gradle 生成的是中间 APK,不能当完整安装包。成品在android/countdown/output/。组件是第三方构建依赖,不属于本项目自主开源代码。 - 申请 Key:以每次实际打包输出的包名和证书十六进制 SHA1申请本人高德 Android Key,在 App 的地图 Key 页面填写。普通版可生成个人包名;读秒完整包固定为
com.autonavi.amapauto,SHA1 由本人的签名决定。地图不再使用天地图,不需要天地图 Key。不要照抄维护者或别人的 SHA1。 - 保存升级身份:普通版备份
android/standard/personal.properties和keystore/;读秒版备份android/countdown/.local/debug.keystore。这些文件只留在自己电脑,后续覆盖升级沿用原包名和签名。 - 烧录 1.75:使用上面的独立 ZIP。日常升级选默认应用升级;首次/救砖完整安装会清空数据。同一固件基础导航协议供两种安卓使用;iOS 本轮没有新增时钟适配或真机复测,原源码与原有功能保留。
本项目的自主功能代码全程借助 AI 开发与迭代,由维护者提出需求、进行设备和路测验证。第三方 SDK、库与兼容组件不属于本项目原创,相关来源及许可另列。 本项目自主代码仅供个人非商业使用与学习交流,具体见 许可 和 第三方说明。
使用本套程序请遵守交通法规,默认使用者已知悉并自愿承担使用过程中可能带来的交通事故及其他风险。任何图标、路线和读秒均不能代替现场信号与标志。 详细风险约定见下方原有章节。
以下为历史说明和展示,版本及功能以顶部和本轮说明为准。
- 摩托车规划不用先进入网页:直接在 App 输入起点、目的地和途经点,后台读取高德网页摩托车路线,在 App 内预览并选择方案。遇到登录或验证时仍需本人完成,登录会话保存在本机。
- 新增自行车路线规划:使用高德 SDK 骑行接口,支持真实与模拟导航;不加入电瓶车规划。
- 改善蓝牙连接与重连:优先接续系统已有连接,增加服务发现、通知订阅和连接超时处理,修复部分“手机蓝牙已连接,App 却一直显示正在连接”的情况。
- 保留五个独立设置页面、首页巡航入口、四种地图风格、地图加载状态、轨迹记录/GPX 导出、常用目的地、区级天气及提前到达修复。
- 小屏右侧显示路口读秒:靠近匹配路口约 300 米内,竖排显示左转、直行、右转图标和实际秒数。缺少右转数据时显示灰色图标/灰色实心圆,不显示数字,避免误认为已确认绿灯。
- 导航中可以返回修改设置:收起导航画面后,定位、语音和圆屏传输继续,再通过“返回导航”恢复画面。
- 网页摩托车导航支持路口信息匹配:核对道路、方向与路口位置后再显示对应数据;补回红绿灯地图标记和电子眼/测速/拍照点位。
- 改进读秒卡片闪烁和过期数据清理,处理重复导航播报问题。
- 红绿灯读秒不保证一直有效:上游服务、接口、账号、地区、路口覆盖、网络、定位和系统后台限制变化都可能使其失效;不保证每个路口或每个方向都有数据,无路线巡航读秒仍待实际道路验证。必须以现场交通信号为准。
普通版与读秒实验版源码分开存放,根目录“一键打包”构建普通版。实验版有额外构建输入要求,使用前请阅读 实验版开发说明。
- 对齐非红绿灯功能:原生摩托车起终点/途经点、多方案预览选择,自行车 SDK 规划、真实/模拟导航和偏航重算。
- 增加导航中返回设置与恢复入口,优化独立导航界面;补齐网页电子眼元数据匹配、蓝牙恢复、异常定位和到达保护。
- 保留五页面、四种地图风格、地图加载状态、骑行轨迹/GPX、常用目的地和区级天气;地图统一使用高德。
- 自动优选更自然的中文语音:优先使用系统已提供的 Premium,其次增强语音,最后回退默认普通话;手动选择的音色优先。下载新音色后,下次自动播报重新选择。
- 不包含红绿灯读秒。本轮为源码更新,尚未用 Xcode 编译、未做 iPhone 真机测试、没有新版 IPA;后台取图、音乐及权限能力与安卓存在平台差异。
- 整理主程序结构:图标资源、绘图、地图、页面、通信等拆分到独立文件,便于后续维护;保留计算缓存与绘图优化,不承诺固定帧率。
- 修复网页导航转弯环分段填充:按已收到的距离更新节奏连续过渡;换方向或断更时重置,不额外预测位置。此前实物模拟中用户确认“圆环连续了,其他正常”。
- 车道提醒与转弯倒计时同步开始,仅显示 App 实际提供的车道数据;支持右侧竖排灯卡片及过期清理,普通安卓和 iOS 没有灯包时沿用正常导航。
- 公开版使用通用 MotoNav/品牌开机动画,不包含个人 Rebel 500 开机图片;保留旋转记忆、HID/AMS 音乐、歌词,以及电池五分钟无导航关机、插电不自动关机。
- 本轮只更新 1.75;1.85B 保持 7.12.3-185B,禁止混刷。
本次源码及说明已公开,1.75 通用固件 v7.12.9-junction.11 已补发 成品 Release;安卓 APK、iOS IPA 本轮未发布,历史下载保留原版本。安卓及通用固件已重新构建,相关策略回归通过;iOS 仅完成语法和工程静态检查,虚拟定位回放不等于实车路测。详见 完整更新说明 和 验证记录。
上图为 AI 模拟效果,非实机截图。 手机负责定位、路线与数据处理,圆屏展示导航、天气和音乐控制信息。
- Android 8.3.23-webmotor.4:五个独立页面,首页靠前的巡航入口;新增高德网页摩托车规划、原生路线选择/导航/模拟、偏航后沿用摩托车方式重算。详见 Android 更新与使用说明。
- 地图统一高德:移除 Android 的天地图与 OSM 调用,仅保留罪恶都市、原版、极简黑白、龙珠雷达四种独立风格。原版使用高德 SDK 初始地图截图;圆屏图像受调色板和传输分辨率限制。极简黑白保留道路网和导航线,去掉建筑、绿地、水面与文字。
- 固件 7.12.3:配套四风格的原色显示与协议处理;1.75 合入插电时不自动关机、拔电后重新计满五分钟的处理,保留 iOS HID/AMS/歌词/旋转协议。详见 固件更新与兼容说明。
- 本次是源码发布,不新增 APK、IPA、刷机 ZIP 或固件二进制 Release。已有历史 Release 保留原版本。1.85B 的对应移植源码一并放在原有目录,属于实验适配,不能刷入 1.75 镜像。
网页摩托车功能使用高德网页当前返回的路线数据,并非已获得正式摩托车导航 SDK 权限。网页接口、登录或验证变化可能导致不可用;该历史版不保证完整避开禁摩区,也未提供车道、电子眼、限速牌或红绿灯倒计时。当前版功能以本轮更新说明为准。当前修订已完成编译和自动检查,尚未完成实车道路、锁屏导航与新五页面全流程验证。详情及验证边界见更新说明。
合并 GitHub 7.12.0 的 iOS HID/AMS、歌词和旋转支持,以及 7.8.13 的五分钟无导航关机与防重启修复。修复了旧 7.8.12 在关机时释放蓝牙对象、被迟到断连事件访问后崩溃重启的问题;建议使用该版本的 1.75 用户升级。
Windows 下载独立的一键烧录 ZIP,完整解压后双击“一键烧录.bat”;默认升级保留设置,首次完整刷写会整片擦除。仅适用于微雪 1.75,不适用于 1.85B 或 M5Stack StopWatch。
已对照 Android 8.3.21 公开源码/分享打包版与 iOS 0.13.8 核对协议,504 项音乐/旋转检查、关机计时和烧录工具检查通过。7.12.1 在实物上完成启动与接 USB 五分钟关机观察;7.8.13 的纯电池五分钟关机已由用户确认。该固件的纯电池、两端手机交替连接和道路测试仍待验证。旧个人直装 Android 8.3.21 缺少切换 iPhone 后复位音乐模式的处理,公开源码/分享包已包含该处理。
修复 iOS 将“前方终点”当成真正到达、导致圆屏提前播放到达动画的问题;同时限制重复结束、手动退出和迟到回调。维护者认为这是一个比较重大的 bug,建议旧版用户更新。详见 iOS 0.13.8 更新说明。新版 IPA 由 GitHub 的 macOS 构建流程生成,构建成功后出现在 Releases;仍需用自己的 Apple 账号签名安装。
维护者说明:我认为这是一个比较重大的 bug。 旧版在距离终点约七八百米、仍处于导航时,小屏可能提前显示“已到达”的结算画面,随后又回到导航,容易误导使用者。8.3.21 修复了这个问题:前方终点提示继续作为正常导航,只有本次导航真正结束时才发送一次到达结算。已使用旧版的 Android 用户建议更新。
这次也同步公开 8.3.19 之后新增的地图加载状态提示、骑行轨迹记录与 GPX 导出、常用目的地。入口、使用方法、验证范围及限制见 Android 8.3.21 更新说明。本次更新 Android 源码与说明,iOS 和圆屏固件版本沿用仓库现有版本。
使用本套程序时,请遵守交通法规。使用本套程序,默认使用者已知悉并自愿承担使用过程中可能带来的交通事故及其他风险。 行驶中请勿操作手机或圆屏,设置与查看记录请先安全停车;始终以实际道路、交通信号、标志和现场情况为准,不得仅凭本程序作驾驶判断。
本项目仍可能存在定位、路线、地图、通信或显示错误,不保证导航信息准确、及时、完整。上述风险提示不排除适用法律规定的责任,也不意味着能免除依法不能免除的责任。
用户提供的停车安装实拍。小圆屏可固定在车把附近,具体支架、供电和安装方式由使用者按车辆情况安排。
| 导航与路线 | 音乐控制 | 降水与空气 |
|---|---|---|
![]() |
![]() |
![]() |
| 地图、转向距离、车速及行程环;桌面演示 | 查看曲目,控制上一首、播放/暂停、下一首 | 查看短时降水趋势及空气质量 |
| 天气主页 | 天气预警 | 启动就绪 |
|---|---|---|
![]() |
![]() |
![]() |
| 实况与未来五小时预报;照片经 AI 隐私处理,地名已替换 | 拍摄时显示暂无有效预警 | 照片经 AI 隐私处理,设备后缀已替换 |
天气照片中的数据仅代表拍摄时的显示内容。经过隐私处理的两张图片不是原始照片,界面细节可能有变化。
点击预览可打开对应 MP4。以下均为实机拍摄的桌面演示,视频已静音。
| 导航画面 | 路线与行程环 | 龙珠雷达风格 |
|---|---|---|
![]() |
![]() |
![]() |
两种导航视觉的概念展示,AI 模拟效果,非实机截图。
天气页面概念展示,AI 模拟效果;数据虚构,非实时预报。实际界面、数据可用性和硬件外观以当前软件及设备为准。
- Waveshare ESP32-S3-Touch-AMOLED-1.75,466×466。
正式使用说明以 1.75 英寸板型为准。仓库原有 firmware/boards/185b 同步提供 7.12.3-185B 实验移植源码,360×360、三种面板初始化可编译,尚无本次实物验证;1.75 的外接电源自动关机例外未移植到 1.85B。M5Stack StopWatch 不包含在本仓库。
地图、路线、转向提醒、车速、行程环、巡航、音乐控制和品牌开机动画;保留摩托车、驾车、自行车的路线分享处理。高德网页无法还原原路线时,按界面提示处理,不保证所有分享链接都能还原。
iPhone 新增圆屏 BLE HID 媒体按键,可向当前播放器发送播放/暂停和上一首/下一首,面向 QQ 音乐等播放器使用。导航与媒体按键共用同一 BLE 设备;HID 不读取歌名或确认播放状态。需要系统 HID 配对,QQ 音乐响应及锁屏行为尚待实机验证,详见 配对与使用说明。
天气改用和风天气:实况、未来五小时预报、短时降水、空气质量和官方预警。圆屏天气页轻点循环显示主页、降水/空气、预警摘要;手机可查看完整详情及来源。仍按查看天气触发查询,并使用缓存,不在导航后台持续轮询天气。
从 GitHub Releases 下载 MotoNav-0.13.8-unsigned.ipa,使用自己的 Apple 账号通过 Sideloadly 签名安装。新手可先看中文图文安装教程,签名与续签细节见安装与续签说明。
- 下载仓库 ZIP 并完整解压到较短的本地路径。
- 双击根目录“一键打包.bat”。不需要 Android Studio。
- 首次需要联网下载 JDK、Android SDK、Gradle 和依赖;SDK 许可由官方工具提示,阅读后自行决定是否接受。
- 成功后 output/MotoNav-personal.apk 是安装包,output/Application-info.txt 包含生成的包名和签名 SHA1。
首次打包自动生成专属应用包名与签名。源码命名空间 com.example.motonav 与实际安装包 applicationId 可以不同。
更新前必须备份 android/personal.properties 和整个 android/keystore 文件夹。新版解压后先复制回这两项,再打包,才能沿用包名、证书和地图绑定信息。不要把生成后的个人工程或证书公开上传。
本仓库不包含编译工具、依赖缓存、APK、个人签名或地图天气凭据。国内网络访问部分官方下载站点可能需要额外的网络配置。
已有环境可执行:
.\Build-Personal.ps1 -JavaPath 'D:\Tools\jdk-17' -SdkPath 'D:\Tools\android-sdk' -GradlePath 'D:\Tools\gradle\bin\gradle.bat'已缓存所需依赖时可追加 -Offline。
安装后进入底部“地图 Key”页面配置:
- 高德:Android 平台 SDK Key,绑定实际安装包的包名和发布证书 SHA1。地图、搜索、算路和导航仍依赖高德。
- Android 底图、卫星和沿线离线地图均使用高德 SDK;无需天地图 Key,也没有 OSM 备用取图。龙珠雷达不请求底图。
- 和风:在“和风天气 → 配置”填入自己账号的 API Host 与 API Key,启用天气预报、分钟降水、空气质量和天气预警。凭据不内置。
服务权限、使用范围、请求额度、署名及计费以各服务商现行规则为准。不同用户重新签名并不自动获得服务授权。天气与预警可能延迟,不替代官方最新发布。
本机已安装 Arduino CLI / ESP32 Core 3.3.10 和 esptool 5.3.0。连接微雪 1.75 英寸圆屏的 USB 数据线,在 Finder 中双击根目录 一键烧录固件.command。脚本校验生成镜像的 SHA-256 和应用偏移,只有一个 USB 串口时自动选择,多个串口时要求选择。
默认写入 0x10000 的应用升级镜像,不执行整片擦除,适用于已有相同 16 MB / app3M_fat9M_16MB 分区的 MotoNav。首次完整安装可运行 ./一键烧录固件.command --full,需输入 INSTALL 确认。脚本只支持本仓库的 1.75 英寸板型。
./一键烧录固件.command --check 仅检查工具、固件和串口,不写入设备。固件镜像与清单位于 firmware/dist/175/panel0/;源码仓库不提交这些生成文件,缺少时需先构建并生成清单。HID 配对步骤见 说明。
iOS 与 Android 共用一份圆屏固件,源码位于 firmware/boards/175/MotoNav,第三方库位于 firmware/libraries。手机端 APK 与 IPA 分开发布,详见 通用固件说明。
使用 Arduino CLI,安装 Espressif ESP32 Arduino Core 3.3.10,然后执行:
.\firmware\build.ps1 -Board 175可用 -CliPath、-ConfigFile 指定自己的 Arduino CLI 和配置。输出在 firmware/dist 中。已有相同板型及分区的 MotoNav 使用 app_0x10000 升级镜像;首次安装使用 full_0x0 完整镜像。完整刷写可能覆盖原程序和设置,请先备份。
android/tests/run.ps1 可运行到达判定、地图加载与轨迹采样、巡航计时、地图风格、区县格式和网页摩托车定位跟踪检查;run-webmotor.ps1 另测合成路线解析、途经点和异常数据。轨迹与常用目的地的持久化检查见 android/tests/README.md。天气解析测试见 android/tests/QWeatherClientTest.java,需要完成 App 编译、Kotlin 运行库及 org.json 测试运行库。
天气实现原版已完成 App、1.75 英寸板型固件的编译,以及接口示例数据解析检查;公开命名空间导出已构建验证。上方实拍来自用户提供的设备记录,软件检查与展示素材不代表独立路测或全场景验证通过。
licenses 和各第三方库目录保留原许可及版权声明。高德 SDK 通过构建依赖获取,地图/天气数据按服务商规则使用。品牌标识属于各自权利人。
项目自有代码及原创素材按 非商业使用条款 提供,不采用 MIT/Apache 等允许商业使用的许可。禁止未经许可倒卖源码、固件、安装包,或以付费代刷、打包销售、硬件捆绑销售等方式获利。第三方组件、地图和天气服务仍适用各自的许可及规则。
圆屏 v7.10.0 与 iOS v0.11.0 增加 iPhone AMS 歌曲信息:歌名、歌手、专辑、状态及进度,保留已实测可用的网易云 HID 媒体按键。详见 媒体控制与歌曲信息。
圆屏 v7.10.1 修复 iOS 无级旋转:正确解析 #R,最近四档,精确角度 的第二项,支持 0–359°,兼容旧四档 #R,0~3 和安卓版 #D角度。已安装的 iOS App 无需重装,停止拖动 1.5 秒后固件保存角度,触摸坐标继续按画面角度换算。
圆屏 v7.11.0 合并上述无级旋转修复并增加可选逐句歌词支持。配套 iOS v0.12.0 的媒体控制中“显示逐句歌词”默认关闭,默认布局是上方歌名、下方歌手;开启后使用 LRCLIB 匹配同步歌词,匹配不到时保留默认布局。仅升级固件不会给旧版手机 App 增加歌词开关。
圆屏 v7.12.0 增加歌词 OFF 清理及歌手栏刷新请求,并在 HID 未就绪时使用 iPhone AMS 媒体命令作为备用控制。iOS v0.12.1 增加独立歌词开关回执与重试;详见上述媒体协议说明。
iOS v0.13.7 默认使用高德建筑提取;修复 Retina 截图、相机更新时序与地图覆盖问题,并修复 App 重连错过认证通知、始终不查询圆屏建筑能力的问题。更新已安装到新手机,正常模拟导航已确认建筑地图生成和圆屏 K 回执,并通过固件解码器验证实际发送包。2026-10-17 的 120 km/h 前台模拟收到 42 次完整地图回执,用户确认此轮未再出现底图空白;地图传输延迟仍存在,详见 ios/README.md。












