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

时间:2013-09-29 19:44:44

标签: android geolocation google-play-services android-location android-geofence

我在使用onAddGeofencesResult(int statusCode, String[] geofenceRequestIds)的{​​{1}}回调中收到错误。

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

  

“添加Geofences:失败,错误代码1000 GeofenceRequestIds = [1,2,1,2]”

从文档(statusCode 1000):

statusCode = 1000

  

现在无法使用地理围栏服务。通常,这是因为用户在设置中关闭了位置访问>位置访问。

     

常数值:1000(0x000003e8)

12 个答案:

答案 0 :(得分:33)

当用户不同意"使用Google'时,您会收到GEOFENCE_NOT_AVAILABLE(代码' 1000')定位服务"在设置 - >位置 - >模式:enter image description here

修复它:

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

答案 1 :(得分:5)

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

答案 2 :(得分:5)

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

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

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

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

答案 3 :(得分:2)

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

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

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

希望这有帮助。

答案 4 :(得分:1)

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

为确保您需要使用Google Play服务installed correctly

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

希望得到这个帮助。

答案 5 :(得分:1)

我犯了愚蠢的错误:

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

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

屏幕截图供参考:

enter image description here enter image description here

希望这会让你清楚。

答案 6 :(得分:1)

发布此答案,因为Android中的设置已发生很大变化。在运行运行API 28的Nexus 5X模拟器时,我两次遇到此错误。通过以下操作,我设法两次解决了该错误:

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

enter image description here

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

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

答案 7 :(得分:0)

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

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

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

此后错误消失了。

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

但是当恢复为Device only时,它再次开始出现此错误。

因此,在模拟器Location mode的情况下,应该将其设置为High accuracyBattery saving

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

enter image description here

答案 8 :(得分:0)

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

Link to code

”,请确保在调用之后,在mainActivity的 onStart 中调用 Geofence.Builder geofencingClient.addGeofences 方法> googleApiClient.connect()。”

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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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

答案 11 :(得分: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.
            }
        }
    }
}