我正在制作一个应用程序,计算您在地理围栏内停留的时间。检测到进入事件时获取时间戳,并将其与接收到退出事件时获取的时间戳进行比较。
在夏天,这在我的 Galaxy Nexus 上运行良好,但从 11 月(2013 年)开始,我注意到开始出现一些奇怪的行为。我刚刚开始使用新的 Nexus 5 作为我的测试设备,现在我发现退出事件正在发送,而我仍在地理围栏内。地理围栏是 1500m,当退出事件发生时,我记录了我的最后一个已知位置,并且它正好在退出区域内。
这些事件似乎与我的设备睡着并重新打开有关,但我无法真正证明为什么会发生这种情况。我的理论是,位置的准确性可能会降低,因此 Play Services 无法确认我是否在该区域内并触发退出事件。当我的设备重新打开并使用网络/wifi/gps 更新其位置时,它会触发一个新的进入事件。还应该注意的是,当我在某些会议室时,当我的手机放在口袋里时,我有时会在办公室失去手机信号。
我测试了当最后一个已知位置在地理围栏内时忽略退出事件的想法,但我发现这会导致许多正确的退出事件无法正常工作。请求位置更新通常会失败,因为我在里面并且更新通常会超时(尝试大约 2 到 4 分钟)。此外,一旦发送了退出事件,我会在稍后的某个随机时间收到一个新的进入事件,因为 Google Play 已确定我在该区域之外,现在又回到了里面。
有没有人看到过类似的行为或解释了为什么会发生这种情况?由于地理围栏已添加并正常工作,因此我似乎无能为力,但我不能相信退出事件始终是合法的,这让我的时间测量受到质疑。