34

我在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)

4

12 回答 12

39

GEOFENCE_NOT_AVAILABLE当用户不同意“设置”->“位置”->“模式”中的“使用 Google 位置服务”时,您会得到(代码“1000”):在此处输入图像描述

要解决这个问题:

  • 转到设置->位置->模式
    在此处输入图像描述
  • 设置“仅限设备(使用 GPS 确定您的位置)”
  • 设置任何其他选项以获取弹出窗口(例如“高精度(使用 GPS、Wi-Fi 和移动网络确定位置”)
  • 显示“使用 Google 的位置服务”对话框
  • 选择“同意”
于 2014-11-27T11:15:42.863 回答
12

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

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

在此处输入图像描述

  1. 打开提高位置准确性”

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

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

于 2019-03-03T00:22:47.180 回答
6

有点晚了,但刚才我遇到了这个问题。我的猜测是:

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

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

如果您关闭假 GPS,地理围栏支持将再次启用。

于 2016-11-15T05:39:58.390 回答
5

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

于 2013-10-23T22:43:17.893 回答
2

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

我遇到了同样的问题,只需转到设置 --> 位置并确保选择高精度模式即可解决此问题。

PS Device only 模式不够好,需要 High accuracy 模式。

希望这可以帮助。

于 2014-02-25T16:57:18.850 回答
1

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

可以肯定的是,您需要正确安装Google Play 服务。

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

希望这有帮助。

于 2013-10-02T15:56:03.240 回答
1

未启用位置服务时也会发生此错误。您需要将其设置为启用。

于 2020-07-15T10:06:02.630 回答
0

对于我的 targetSdkVersion 28 和 minSdkVersion 24,这是在运行 Pixel XL API 27 的模拟器上对我有用的:

High accuracySettings -> Location -> Mode. 最初它被设置为Device only.

这弹出了一条带有AgreeDisagree选项的消息。我选择了Agree

之后,错误消失了。

我尝试了另一种选择Battery Saving。这也很好用。

但是当恢复到 时Device only,它又开始给出这个错误。

所以在模拟器的情况下Location mode应该设置为High accuracyor Battery saving

在我的实际设备上,即 Nexus 6P 设备上,它已经设置为High accuracy,我还没有检查过Device only.

在此处输入图像描述

于 2019-10-26T00:02:49.873 回答
0

按照此官方链接进行地理围栏广播。

https://developer.android.com/training/location/geofencing#java

“确保在调用googleApiClient.connect()后,在 mainActivity的onStart中调用Geofence.BuildergeofencingClient.addGeofences方法。”

最后,如果您在设置中设置位置模式,即仅 GPS 或 wifi。您将收到此错误。(如果您使用模拟器)选择高精度模式,您将能够添加地理围栏。希望这可以帮助。祝你好运。

于 2019-11-17T15:34:22.873 回答
0

对于 android oreo 到 android S 确保访问设置高优先级

fun ceksetting(){
val builder = LocationSettingsRequest.Builder()
        .addLocationRequest(locationRequest)
val locationRequest = LocationRequest()
    locationRequest!!.interval = 50000
    locationRequest!!.fastestInterval = 50000
    locationRequest!!.smallestDisplacement = 170f // 170 m = 0.1 mile
    locationRequest!!.priority = LocationRequest.PRIORITY_HIGH_ACCURACY //set according to your app function
    val client: SettingsClient = LocationServices.getSettingsClient(requireActivity())
    val task: Task<LocationSettingsResponse> = client.checkLocationSettings(builder.build())
    task.addOnSuccessListener { locationSettingsResponse ->
       //here call your geofence
    }

    task.addOnFailureListener { exception ->
        if (exception is ResolvableApiException){
            // Location settings are not satisfied, but this can be fixed
            // by showing the user a dialog.
            try {
                // Show the dialog by calling startResolutionForResult(),
                // and check the result in onActivityResult().
                exception.startResolutionForResult(requireActivity(),
                    REQUEST_CHECK_SETTINGS)
            } catch (sendEx: IntentSender.SendIntentException) {
                // Ignore the error.
            }
        }
    }
}
于 2021-04-16T21:21:31.310 回答
0

在 Android 9.0 中:我阅读了 MinistryOfChaps 的答案,我尝试这样做了一个小时,但它对我没有用。所以我关闭了我的应用程序,关闭了“提高位置准确性”,关闭了扫描 > wi-fi 扫描和蓝牙扫描,我也关闭了我的用户位置。在此之后,我打开所有这些选项,我的地理围栏终于开始工作了

于 2020-06-29T17:13:27.440 回答
0

我犯了一个愚蠢的错误:

发生错误是因为设备没有 GPS(定位服务)的权限。

有关地理围栏 API 的更多详细信息,请点击此处

截图供参考:

在此处输入图像描述 在此处输入图像描述

希望这会让你清楚。

于 2015-12-24T11:40:32.913 回答