七个葫芦/Travlet

Travlet物理空间轨迹与旅途探索

Body/Space · 步履铭刻、行程规划与场景手记

记录与规划人在真实物理空间中的穿行(Traverse + Tablet):底层用四级几何滤波与速度分层把行车、骑行与步履拆开,上层结合高德与 OSM 的实地 POI 解算可执行的步程规划与多日行程,最后把当天的轨迹、天气与区域沉淀为可回看的旅途手记与年度足迹。

ANDROIDKOTLIN · ROOM · MAPLIBRE本机v1.0
Travlet 界面截图
模拟器截图 · 单次轨迹:实线步行 + 虚线乘车

01双通道记录与四级滤波

前台录制与后台常驻共用一套抗漂移状态机,不点开始也在记。

  • 两条服务:前台录制记长距离,后台常驻按天分桶(live-YYYYMMDD);录制启动时被动服务自动让位,开机由 BOOT_COMPLETED 重启。
  • 进库前四道门:水平精度 ≤20 m、静止半径 12 m(速度 <0.5 m/s 时合并)、步行位移 8 m、乘车位移 20 m。
  • 孤立跳点先挂起:下一帧若回弹超过一半就判为噪声丢弃,若持续位移则承认它是一次真实移动——地铁出站与高楼漂移由此分开。
  • 位移阈值随速度放宽,否则 2 秒一次、30 km/h 的车载定位会被当成噪声全部丢掉。

02速度分层:步履、骑行与乘车分开算

一条线三种画法,一个数字三种口径。

  • 按两端速度取大者判档:>9 m/s 为乘车(虚线淡墨,不计入步行),4.5–9 m/s 且连续四段一致为骑行(单独线型与里程),其余为步行。
  • 定档有滞后:单段来回跳变要连续 4 段同向才改判,公交靠站减速不会把整段乘车打回步行。
  • 断点恢复按证据判定:静默超过 20 秒且位移小于 60 m 记为原地停留,长时间断流后的合理位移画成浅色连接线,不把路线切成孤岛。
  • 分段阈值随档位变化:步行 400 m、骑行 1200 m、乘车 1500 m 以上才算跳变,15 分钟静默也另起一段。
模拟器截图 · 散步列表:步行 / 车行 / 骑行分列
模拟器截图 · 散步列表:步行 / 车行 / 骑行分列

03探索:看周围的实地兴趣点

先拿到真实坐标与营业信息,再让模型挑理由。

  • 两种底图数据:高德优先,OSM Overpass 兜底;POI 卡带评分、人均、营业时间、照片与入口坐标。
  • 按类别、半径(800 m / 1.5 km / 3 km / 自定义)与级别筛选,中心可选「我的位置」「地图中心」或搜索到的目标。
  • AI 只做挑选与给理由(四档强度:关 / 严格 / 中等 / 宽松),具体坐标与营业信息始终来自地图服务。

04规划:散步、跑步、逛街三条模式

几何交给本地,模型只提名字。

  • 三种配速与停留:散步 4.5 km/h、每站 6 分钟;跑步 10 km/h、不停留;逛街 3.5 km/h、每站 14 分钟。
  • 按预算反推:环线用时先扣掉各站停留,再乘配速得到目标里程;街道距离按 1.3 倍绕行系数估算,避免直线几何低估。
  • 候选点按多个圆形范围并行搜(并发 3),AI 打分后由本地排序选站,再走高德步行分段复核预算。
  • 跑步模式额外附带沿途厕所与便利店,单程散步给出终点附近的最近地铁站。
模拟器截图 · 看周围、规划路线与行程
模拟器截图 · 看周围、规划路线与行程

05行程:多日规划与坐标校验

模型只提议名字,坐标逐个解析,拿不准的显式标记。

  • 只把景点名交给解析器,并以已解析的目的地为锚点做同名校验,避免「同名水库在另一个山谷」。
  • 四道距离闸:单点偏锚点 >60 km 标「远」,与同日其他点相距 >10 km 标「孤立」,偏锚点 >50 km 且离群 >30 km 判为解析错误,>300 km 直接视为幽灵点。
  • 解析失败或可疑的停点不静默删除,以标记行留在计划里,由人手动核对;只有可信坐标才上图。
  • 跨天重复只保留首次出现,后面的标注重复日;行程按城市落库,重新生成即覆盖,可离线查看。

06手记与年度回顾

写的是那天的实况,回顾看的是一年的形状。

  • 手记可由 AI 代笔:语气、篇幅与侧重可调;「锁定段」写死的部分不会被改写成「我去过」。
  • 散步开始时的天气与区域钉在会话上;支持 GPX 导出,整库可导出导入完整 JSON(含速度与行程)。
  • 回顾页给年度次数、里程、走着的时间与天数,逐日热力图(每格一天、色阶表示当日步行里程),按月折叠并附 AI 月度点评。
模拟器截图 · 年度回顾与全年足迹
模拟器截图 · 年度回顾与全年足迹

它把「走过」变成可回看的事实:哪一段是脚走的,哪一段是车带的,哪一天走了多远,都被机器记成了不会记错的样子。

TrackFilter.kt · Walks.kt · Planner.kt · Trips.kt · AltBands.kt · ReviewStats.kt