我即将实施地理围栏的功能,在我完成任何认真的工作之前,我需要知道在第一次过渡后地理围栏是否仍然有效。
该功能的核心是:
每次 我在点P的x米范围内(称之为区域A ),我想行动B < / em>发生。
我需要知道的是
Geofence.NEVER_EXPIRE
添加地理围栏,并确保每次 我都会获得PendingIntent 我无论过去都会进入指定区域时间,重新启动等或
我希望前者是这样的
答案 0 :(得分:9)
好的主张是第一个。如果使用标记NEVER_EXPIRE作为到期时间创建地理围栏,则在触发(通过进入或退出)时不必重新注册它。我100%肯定这一点,我现在刚刚完成编码和测试关于地理围栏的POC。
从文档中,删除地理围栏的唯一方法是达到过期时间或者设备本身将其删除。
到期时间
地理围栏应保持多长时间。一旦 达到到期时间,位置服务删除地理围栏。 大多数情况下,您应该指定到期时间,但您可以 希望为用户的家或工作地点保留永久性地理围栏。
要停止地理围栏监控,请自行删除地理围栏
答案 1 :(得分:6)
请记住,即使在用户卸载应用程序后,NEVER_EXPIRE也会导致地理围栏注册,以防应用程序卸载它们。没有办法删除这些。永远。所以他们会继续耗尽电池。因此,建议设置过期时间并再次设置地理围栏,以防它们在您希望它们到期之前到期。
答案 2 :(得分:1)
请注意,&#34;所有注册的地理围栏将被删除&#34;在THIS情况下(即当用户禁用位置是他的手机设置时)。
建议:在文档的顶部是警告&#34;不推荐使用此类。使用LocationServices。&#34;
答案 3 :(得分:1)
虽然无论您进入/退出地理围栏的次数如何,您都会获得待处理意图(转换),但问题是设备重启会删除所有地理围栏。因此,如果设备重启,您必须使用广播接收器再次重新注册所有地理围栏(您可以通过共享首选项保存)并设置意图过滤器操作
android.intent.action.BOOT_COMPLETED
和许可:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
AndroidManifest.xml中的。
另请注意,即使Google Play服务被杀死+重新启动/升级,系统也会恢复地理位置,但如果您清除其数据则不会。 {&#34}部分的developer docs中也提到了同样的情况;仅在需要时重新注册地理围栏&#34;
另请注意,如果用户切换OR关闭位置/ gps设置,将删除所有地理围栏,并通过提供的待处理意图生成意图。在这种情况下,hasError()api将返回true,getErrorCode()api将返回GEOFENCE_NOT_AVAILABLE。