我有一个应用程序是一项服务,我想要做的就是在用户运动时启动服务,速度超过10英里/小时(或我想要的任何值)。
我不想做的是继续轮询GPS,因为如果我这样做,电池会快速耗尽。
我可以使用哪些选项来执行此操作?不会耗尽电池的现实选择会很棒!感谢您的帮助。
答案 0 :(得分:2)
最小化不得不经常收听位置更新(GPS)的一种方法是,您可以根据从加速度计获得的反馈来打开/关闭位置更新。例如,当您使用加速度计打破设定的移动阈值时,您可以开始侦听位置更新并检查设备是否移动得足够快。如果没有,您可以关闭位置更新。
这里有一些优化,例如“如果加速度计阈值在30秒前被破坏,则忽略”,这样您就不会因打开位置更新而导致抖动。
以下是Accelerometer Usage的开发人员示例。
答案 1 :(得分:1)
没有GPS的一个想法是创建类似步进计数器的东西:
然后你需要知道他的“步长”并计算他在一分钟内完成的步数。然后,将步数乘以一步的长度,然后得到meters/minute
1 meter / minute = 0.0372822715 mph
这也可以使用米/秒:
1 meter / second = 2.23693629 mph
当然,这仅在用户实际上正在跑/骑/骑自行车时才有效,而且不是很准确。如果你想检查他驾车或乘船旅行的速度,这是行不通的。
答案 2 :(得分:0)
你可以做到的一种方法是Inertial Navigation,但是内置传感器足以准确测量任何重要信息是值得怀疑的。
另一种方法是引用你的设备和无线接入点之间的距离,我正在和一个说这种方法精确到微米的人说话。但是,它提出了自己的问题。快速变得复杂,特别是如果你不是直线移动,而且你必须有一些WAP。
我认为GPS是最可行的选择。