【问题标题】:Android - Geofence trigger when lost gpsAndroid - 丢失 GPS 时触发地理围栏
【发布时间】:2016-06-13 10:33:25
【问题描述】:

我使用谷歌简单代码“创建和监控地理围栏”,一切正常,但我有一个问题,当设备丢失 gps 信号第二次触发事件将其计为退出,而当信号返回将计入作为输入

即使它仍在地理围栏内,我想我也无法避免这种情况 那么有人知道这种行为是否可以抑制吗?

还有一个额外的问题,我在 stackoverflow 地理围栏问题中阅读了很多,这些问题使用 BroadcastReceiver 比 Service 更好地接收转换 现在我使用服务接收,它工作正常,是否需要将其更改为广播接收器?

【问题讨论】:

    标签: android google-api gps android-geofence


    【解决方案1】:

    这是 Google 地理围栏有时依赖不良网络位置点的问题。我对此here 有一个潜在的解决方案。这不是 100%,但它确实有助于抑制地理围栏跳跃。

    至于你问题的第二部分,我不知道你是指 IntentService 还是只是一个服务。如果是服务,我会推荐使用 IntentService 或 BroadcastReceiver。 IntentServices 主要用于在后台线程上执行任务,其中 BroadcastReceivers 旨在重新启动进程(如果它不是被用户强制终止),并执行快速任务来处理意图。两者都是自给自足的,并在任务完成后立即自我毁灭。但要回答您的问题,不,您没有必须使用 BroadcastReceiver,但这样做是更好的做法。

    【讨论】:

    • 感谢您的回复真的很有帮助,是的,我的意思是 IntentServices,但您的回答中有一部分我不太明白“是在转换事件上进行 gps 呼叫”您所说的 gps 是什么意思打电话?
    • 当你得到错误出口时,使用 LocationManager 调用 GPS 点。如果您在地理围栏之外找到一个点,请执行退出代码块。如果您的点仍在地理围栏中,只需将地理围栏重置为相同的中心点,但将地理围栏扩大 25m。确保你的地理围栏有一个最大尺寸,因为你不想要比你真正想要的更大的东西。
    • 我明白了,但是让地理围栏更大真的有必要吗?因为我的地理围栏现在有 200 半径,我不想让它更大
    • 如果有那么大,没有。如果你有一些小的东西,比如 50m。
    • 我明白了,最后一个问题,当更新地理围栏时算作输入还是会再次发送输入通知?
    猜你喜欢
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多