在Android中添加地理围栏时出错(状态码1000)

问题描述 投票:28回答:7

我在使用onAddGeofencesResult(int statusCode, String[] geofenceRequestIds)statusCode = 1000回调中收到错误。

我启用了GPS和WiFi。我也有Google Play服务,我可以跟踪我的位置并请求更新。为什么我无法添加地理围栏?我甚至无法从文档示例应用程序添加地理围栏。我收到以下Toast消息:

“添加地理栅栏:失败,错误代码1000 GeofenceRequestIds = [1,2,1,2]”

从文档(statusCode 1000):

public static final int GEOFENCE_NOT_AVAILABLE

地理围栏服务现在不可用。通常这是因为用户在设置>位置访问中关闭了位置访问权限。

常数值:1000(0x000003e8)

android geolocation google-play-services android-location android-geofence
7个回答
33
投票

当用户在“设置” - >“位置 - >模式”中不同意“使用Google”位置服务时,您会获得GEOFENCE_NOT_AVAILABLE(代码为“1000”):

要解决这个问题:

  • 转到设置 - >位置 - >模式
  • 设置“仅限设备(使用GPS确定您的位置)”
  • 设置任何其他选项以获取弹出窗口(例如“高精度(使用GPS,Wi-Fi和移动网络确定位置”))
  • 显示对话框“”使用Google“位置服务”
  • 选择“同意”

5
投票

当我试图在模拟器上运行这个应用程序时,我得到了statusCode 1000。解决这个问题的方法是进入Settings-> locations和access->检查模拟器上的enable wifi和gps选项,它会修复它


5
投票

稍晚一点,但刚才我有这个问题。我的猜测是:

你在测试中使用任何类型的假GPS(Lockito,模拟器等)?

我花了几个小时才发现假位置似乎禁用了Geofence支持!如果您不在真正的位置,则无法注册或触发地理围栏。

如果您关闭假GPS,Geofence支持将再次启用。


3
投票

由于Android中的设置已经发生了很大变化,因此发布此答案。当我运行运行API 28的Nexus 5X仿真器时,我遇到了这个错误两次。我设法通过执行以下操作来解决它:

  1. 关闭您正在开发的应用程序(不要让它在后台)
  2. 转到设置 - >安全和位置 - >位置 - >高级 - > Google位置准确度。关闭“提高位置准确性”。

enter image description here

  1. 打开'提高位置准确度'

在我采取这些步骤后,再次打开您的应用程序并添加地理围栏。

编辑:几个月后我再次遇到这个问题,有时模拟器很顽固,实际上并没有正确打开位置准确性,以允许谷歌的Geofence API识别它被打开。在定位精度有效之前,我已经开启和关闭了“提高定位精度”至少10次。


2
投票

您实际上在您的问题中给出了答案:地理围栏服务现在不可用。通常这是因为用户在设置>位置访问中关闭了位置访问权限。

我有同样的问题,只是去设置 - >位置,并确保我选择高精度模式解决了这个问题。

PS Device only模式不够好,需要高精度模式。

希望这可以帮助。


1
投票

首先,您的手机必须兼容:A compatible Android device that runs Android 2.2 or higher and includes Google Play Store.

可以肯定的是,您需要拥有Google Play服务installed correctly

有时,只需重新启动手机即可解决此问题。

希望这有帮助。


1
投票

我犯了愚蠢的错误:

发生错误,因为设备没有GPS(位置服务)权限。

有关Geofencing API here的更多详细信息。

屏幕截图供参考:

enter image description here enter image description here

希望这会让你清楚。

© www.soinside.com 2019 - 2024. All rights reserved.