【问题标题】:Error adding geofences in Android (status code 1000)在 Android 中添加地理围栏时出错(状态码 1000)
【发布时间】:2013-10-05 14:57:46
【问题描述】:

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

我已启用 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


    【解决方案1】:

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

    修复它:

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

    【讨论】:

    • 那不是很有帮助的评论,什么不起作用,帽子设备,什么操作系统?
    • 我在GeofencingClient.addGeofences() 之后得到Status{statusCode=unknown status code: 1000, resolution=null},并且模拟器的模式设置为Device only。模拟器图像使用带有 Google API 的 Android 7.1.1
    • 更新:我刚刚将Settings -> Location -> Mode 设置为High Accuracy,我能够成功设置地理围栏! (我讨厌在 Android 上使用 GPS!)
    • 我发现在真实设备上,使用Device only 可以很好地设置地理围栏。 (Battery Saving 也是如此)
    • @SomeoneSomewhere 在 Galaxy S6 上使用 Device only 模式时,我得到相同的状态代码 1000
    【解决方案2】:

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

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

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

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

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

    【讨论】:

    • 对于 APK 28 模拟器,切换此选项可修复错误。
    • @user836003 以后会问别人这个问题,你是不是需要多次切换才能起作用?
    • 截至今天(2020 年 3 月 20 日),问题仍在接受投票;假设这个答案仍然是相对的。
    • 截至今天,仍然收到点赞;假设这个答案仍然是相对的。
    【解决方案3】:

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

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

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

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

        希望这会有所帮助。

        【讨论】:

          【解决方案6】:

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

          为了确定,您需要有 Google Play 服务installed correctly

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

          希望对您有所帮助。

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              【解决方案8】:

              我犯了一个愚蠢的错误:

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

              有关地理围栏 API here 的更多详细信息。

              截图供参考:

              希望这会让你清楚。

              【讨论】:

                【解决方案9】:

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

                我在Settings -> Location -> Mode 中选择了High accuracy。最初设置为Device only

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

                之后错误就消失了。

                我尝试了另一个选项Battery Saving。这也很好用。

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

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

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

                【讨论】:

                  【解决方案10】:

                  点击此官方链接进行地理围栏广播。

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

                  “请确保在调用 googleApiClient.connect()。”

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

                  【讨论】:

                    【解决方案11】:

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

                    【讨论】:

                      【解决方案12】:

                      对于 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.
                                  }
                              }
                          }
                      }
                      

                      【讨论】:

                        猜你喜欢
                        • 2018-06-21
                        • 2019-11-01
                        • 2019-05-28
                        • 1970-01-01
                        • 1970-01-01
                        • 2019-03-24
                        • 1970-01-01
                        • 2012-11-16
                        • 1970-01-01
                        相关资源
                        最近更新 更多