Android 地理围栏示例应用程序仅在使用 GPS 打开另一个应用程序时才有效
Posted
技术标签:
【中文标题】Android 地理围栏示例应用程序仅在使用 GPS 打开另一个应用程序时才有效【英文标题】:Android Geofencing sample app only works if another app is open using GPS 【发布时间】:2014-09-10 20:20:41 【问题描述】:我正在使用Geofence API Sample application,它已经在运行,而且似乎工作正常。我确实对其进行了修改以使用 BroadcastReceiver 而不是 IntentService。
但只有在我打开其他一些使用 GPS 的应用程序(例如地图或 GPS 测试器应用程序)时,我才会收到通知。
如果我没有打开这些应用程序中的任何一个并且我走进地理围栏区域,则不会发生任何事情。但只要我启动其中一个,我会在几秒钟内收到通知。
【问题讨论】:
您在未修改的原始应用程序中遇到同样的问题吗?还是这与您更改为使用BroadcastReceiver
有关?如果是这样,当您说“获取通知”时,您具体测试的程度如何?
@CommonsWare 在未修改的应用程序中得到了相同的结果(请注意,我必须在应用程序清单中添加元数据标签才能让它运行。这是我下载方式的唯一变化它虽然)。实际上,我切换到广播接收器是因为我正在四处寻找以尝试解决此问题,并发现了许多建议,即接收器帮助人们使地理围栏回调更一致地工作。当地理围栏触发器触发时,示例代码(和我的接收器)会向通知栏发送通知。所以我唯一的测试是我是否会收到该通知。
如果您真的要走进地理围栏区域,请尝试定义一个更大的区域并在移动的车辆中。如果已注册的地理围栏会基于有限的移动触发大量 GPS 活动,我会感到惊讶,并且网络提供商对于小型地理围栏区域可能过于不准确。
【参考方案1】:
我最终创建了一项服务,该服务通过以相对较快的间隔请求位置更新来强制 GPS 保持活跃。
虽然对于“真正的”应用程序而言,这无疑是一项糟糕的工作。它适用于我的目的。在其中我需要能够向观众展示概念的工作证明,这阻碍了我使用进一步分散的地理点的能力。
【讨论】:
【参考方案2】:即使我在进入地理围栏或退出地理围栏时也很难获得地理围栏通知。通知总是延迟,直到我找到一个非常好的位置库,称为little-fluffy-location-library,它可以满足我的目的。位置更新将是定期向您的应用广播。
根据文档,它说:
该库通过使用 Froyo 的被动位置侦听器(仅适用于 Android 2.2 及更高版本,因此它最适合使用它)来工作,该侦听器侦听手机上其他应用程序请求的位置更新。大约每 15 分钟将最准确的位置广播到您的应用程序。如果一个小时内没有从其他应用收到位置更新,则库会强制自己更新位置。
我认为你应该试试这个库,如果它适合你,请告诉我!!
【讨论】:
您知道当前版本的 android API 是否仍需要此库?我有同样的问题。 GeoFence 仅在其他应用(例如 Google 地图)使用位置服务时触发。以上是关于Android 地理围栏示例应用程序仅在使用 GPS 打开另一个应用程序时才有效的主要内容,如果未能解决你的问题,请参考以下文章
地理围栏(Android 示例应用程序)java.lang.ClassNotFoundException MainActivity