如何确定用户是否在运动中

时间:2011-08-12 16:00:17

标签: android gps

我有一个应用程序是一项服务,我想要做的就是在用户运动时启动服务,速度超过10英里/小时(或我想要的任何值)。

我不想做的是继续轮询GPS,因为如果我这样做,电池会快速耗尽。

我可以使用哪些选项来执行此操作?不会耗尽电池的现实选择会很棒!感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

最小化不得不经常收听位置更新(GPS)的一种方法是,您可以根据从加速度计获得的反馈来打开/关闭位置更新。例如,当您使用加速度计打破设定的移动阈值时,您可以开始侦听位置更新并检查设备是否移动得足够快。如果没有,您可以关闭位置更新。

这里有一些优化,例如“如果加速度计阈值在30秒前被破坏,则忽略”,这样您就不会因打开位置更新而导致抖动。

以下是Accelerometer Usage的开发人员示例。

答案 1 :(得分:1)

没有GPS的一个想法是创建类似步进计数器的东西:

  • 用户将手机放在裤兜里。
  • 每次手机detects a shake,用户都会迈出一步。

然后你需要知道他的“步长”并计算他在一分钟内完成的步数。然后,将步数乘以一步的长度,然后得到meters/minute

1 meter / minute = 0.0372822715 mph

这也可以使用米/秒:

1 meter / second = 2.23693629 mph

当然,这仅在用户实际上正在跑/骑/骑自行车时才有效,而且不是很准确。如果你想检查他驾车或乘船旅行的速度,这是行不通的。

答案 2 :(得分:0)

你可以做到的一种方法是Inertial Navigation,但是内置传感器足以准确测量任何重要信息是值得怀疑的。

另一种方法是引用你的设备和无线接入点之间的距离,我正在和一个说这种方法精确到微米的人说话。但是,它提出了自己的问题。快速变得复杂,特别是如果你不是直线移动,而且你必须有一些WAP。

我认为GPS是最可行的选择。