【问题标题】:GeoCoder Service not Available地理编码器服务不可用
【发布时间】:2013-08-17 10:19:47
【问题描述】:

GeoCoder 服务不可用

我正在使用GeoCoder 来获取AddressLocation。 不幸的是,该方法触发了IOException saying: "Service not Available"

This StackOverFlow thread 解释了发生了什么,因为我对其进行了彻底的测试(用户权限、构建版本、重新启动、GeoCoding API 限制等)。

您可以在以下位置找到的Google Play-Services(或LocationService)已崩溃或停止。它会自行重启,但忘记将 GeoCoderService 绑定到 NetworkLocator。

此错误的“解决方案”是重启 Android 手机,因为重启时 GeoCoderService 会绑定到 NetworkLocater。 当然,我不认为这是一个解决方案。

问题

我的问题是,LocationService 一开始是如何崩溃或停止的?

我所做的是手动强制停止 Google Play-Service,一些设备重新启动了 LocationService,但有些没有。

不工作(没有重新启动 LocationService)

  • 4.0.3 三星 Galaxy Note (GT-N7000)
  • 4.0.4三星平板GT-P7100
  • 4.1.2 关系 S
  • 4.1.2 三星 Galaxy S III (GT-I9300)

工作中(确实重启了 LocationService)

  • 2.3.5 HTC Wildfired S
  • 4.0.3 宏基A500
  • 4.1.1 三星 Galaxy Note II (GT-7100)
  • 4.1.2 三星 Galaxy S II (GT-I9105P)
  • 4.2.2三星平板GT-P7500
  • 4.2.2 Nexus 7
  • 4.3 银河系

有人知道Google Play服务(LocationService)在运行一段时间后崩溃或停止的原因吗?

我已经将此问题上报到 b.Android.com 并亲自联系了 Android 开发人员。

我看到我的问题已经在其他帖子中讨论过,但没有得出任何结论:

【问题讨论】:

标签: android geocoding google-play-services android-location google-geocoder


【解决方案1】:

再次重新启动设备检查(我遇到了同样的问题。)

【讨论】:

    【解决方案2】:

    有些设备不支持地理编码器,所以您需要做的是创建自己的地理编码器。

    基本上你需要创建一个异步任务来向 google 请求地址并处理 json 响应。

    使用查询,我做这样的事情:

    public void asyncJson(String address){
            address = address.replace(" ", "+");
    
            String url = "http://maps.googleapis.com/maps/api/geocode/json?address="+ address +"&sensor=true";
    
            aq.ajax(url, JSONObject.class, new AjaxCallback<JSONObject>() {
    
                    @Override
                    public void callback(String url, JSONObject json, AjaxStatus status) {                        
    
                            if(json != null){
    
                                     //here you work with the response json
                                     JSONArray results = json.getJSONArray("results");                               
                                    Toast.makeText(context, results.getJSONObject(1).getString("formatted_address"));
    
                            }else{                                
                                    //ajax error, show error code
                                    Toast.makeText(aq.getContext(), "Error:" + status.getCode(), Toast.LENGTH_LONG).show();
                            }
                    }
            });        
    }
    

    【讨论】:

      【解决方案3】:

      您可以将装有 Android 4.1.2 的三星 Galaxy S II 添加到您的不工作列表中。这是一个烦人的错误,解决方法是直接访问 GMaps API。从我的角度来看,当用户使用内置任务管理器杀死所有应用程序以释放资源/内存时,就会发生这种情况。

      【讨论】:

        【解决方案4】:

        尝试重启 Manege Apps 上的“网络位置”服务。

        【讨论】:

          【解决方案5】:

          我有同样的错误,添加以下权限来解决它。

          <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
          <uses-permission android:name="android.permission.INTERNET" />
          

          【讨论】:

            【解决方案6】:

            您可以使用Google Maps Services

            Android SDK 中的 Geocoder 是由设备厂商实现的,有些厂商不想理会它。

            UPD:Google 地图服务不适用于 Android,因此您可以使用 Mapbox Geocoder

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-04-06
              • 2014-02-15
              • 2011-12-18
              • 2011-09-21
              相关资源
              最近更新 更多