admin管理员组文章数量:1625101
让 IOS 设备模拟自己在操场跑步
- 背景
- 我的解决方案:
- 其他解决方案:
- 具体步骤
- 1. 在 Xcode 上新建一个含GPX文件的 IOS 项目
- 2. Google 地图密集 标一圈操场,获得位置信息
- 3. Google Map 坐标转换
- 3. 防反作弊识别
- 4. 缺点
- 5. 改进
背景
新学期学校日常体育锻炼打卡形式改变,成了使用 APP 每周在学校的操场跑 2 次 3.5 公里以上。一来自己新学期的锻炼形式变成了在健身房锻炼,防霾 + 保护膝盖;二来3.5公里实在太长,虽然实际跑的话可能 2.7 公里就会判定为 3.5 公里;三来每天要定时定点去跑,打乱了自己的安排;四来最初使用阶段,pyq 经常有吐槽软件不好使用。
于是我就去谷歌 IOS 设备能不能模拟 GPS,让 APP 误以为是你在跑。
我的解决方案:
IOS 模拟 GPS 跑圈
其他解决方案:
模拟传感器摇动 / 摇步器 —— ugly
解析 APP,找到数据上传接口,直接上传数据 —— too hard
具体步骤
1. 在 Xcode 上新建一个含GPX文件的 IOS 项目
GPX 文件可以在 IOS 设备连接 mac,并处于开发者模式 IOS 进行模拟定位
具体如何创建 gpx 文件可参考:http://pingguohe/2017/10/13/GPX-mock.html
遇到问题:如何模拟跑圈?
解决办法:
2. Google 地图密集 标一圈操场,获得位置信息
大概标了40个点,沿操场一圈,虽然(费时间 + 丑陋),但是没有找到好的方便方法
大致思路就是每两个点之间走直线,但是因为标点密集,最后可以近似为沿操场走
3. Google Map 坐标转换
Google map 中提取的坐标似乎无法直接在 GPX 中使用,需要转换过格式
试了几个在线转换的工具,发现下面这个可以比较好的进行转化:
https://mapstogpx/index.php#
这个网站可以直接将 Google Map 里分享的路线转化为 GPX 可用的代码
但是这里我只要位置信息,所以需要另写一个脚本,单独提取位置信息(直接坐标转化的我试了几个都不行,发现这个可以我就懒得再找了)
遇到问题:gpx 默认的速度很快,如何控制速度?
解决办法:参考 https://stackoverflow/questions/9439495/when-using-gpx-in-xcode-to-simulate-location-changes-is-there-a-way-to-control 中的第二条回答
3. 防反作弊识别
思路:跑每圈的时候,每个标定点坐标、两点之间时间随机偏移;每次使用都重新生成一个新的 gpx 文件,避免跑步数据重合
4. 缺点
必须把手机连接 mac,且因为使用非官版连接线,连接可能会断掉,需要在运行的时候偶尔留意一下是否在正常跑了
断开连接后,IOS 设备的位置信息可能会一直停在那里(iphone xs max无),想要恢复正常定位,需要(删掉软件+重启) or 在 Xcode 上把模拟 GPS 关掉再重新跑一遍
5. 改进
路线机器识别没有问题,但是人眼识别还是过于整齐,路线的首尾单独设计可能效果更好
自动化
Charlie
10.8
海宁
版权声明:本文标题:让 IOS 设备模拟自己在操场跑步 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1728918893a1179875.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论