我正在使用the Google Play Services APIs处理具有地理围栏功能的应用。
一般来说效果很好,除了我经常收到"误报",这意味着我很快就会收到EXIT事件,然后是ENTER事件,即使设备实际上在地理围栏内并且没有移动。
当我开始收听DWELL事件而不是ENTER(游荡时间为3分钟)时,情况有所改善。我用围栏的半径为100米。
但是这样做时,我仍然会收到错误的EXIT事件。理想情况下,我希望拥有相当于游荡时间的东西,但是对于EXIT事件(只有当设备已经被看到围栏时至少x分钟才被通知EXIT事件的能力)。我认为这可以解决问题;遗憾的是,API没有这样的功能。
这个问题是常见问题,可以采取哪些措施来解决问题?
答案 0 :(得分:2)
当确定当前的地理位置取决于手机所连接的手机信号塔时,会出现问题。如果你的手机切换了手机信号塔并且它们彼此相距很远,那么google serverice会假设你已经移动了。
我通过在对事件做出反应之前引入时间延迟解决了类似的问题:
清除计时器(如果处于活动状态),然后在发生事件时启动。
事件处理在定时器事件发生时完成,并且仅当新事件状态与previos事件状态不同时
示例:如果您的计时器有5分钟的延迟,则将忽略低于延迟时间的所有事件更改。如果输入了previos计时器事件并且输入了新的计时器事件,则不执行任何操作。
答案 1 :(得分:0)
我遇到了类似的问题。我目前正在试验几种解决方案。一个是使用https://pathsense.com。另一种是根据触发位置的准确性过滤掉地理围栏事件。根据k3b的理论,地理围栏事件是由于基于单元塔的位置而触发的。如果这是真的,我相信不确定性会很高,因为一个单元塔有一个半径1英里的东西。如果您将位置模式设置为仅传感器,也可能会被反驳,这样它只会将GPS用于数据。
到目前为止,我还没有从我的测试中得出任何结论。使用我提到的过滤,我已经能够将误报减少大约80%,但它仍然每天都会发生,这对于消费者应用来说是不可接受的。