14

地理编码器服务不可用

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

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

您可以在以下位置找到的Google Play-Services(或LocationService):Android 设置 ->(管理)应用程序 -> 正在运行的进程,已崩溃或停止。它会自行重启,但忘记将 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 连结 7
  • 4.3 银河系

有谁知道谷歌播放服务(LocationService)在运行一段时间后崩溃或停止的原因是什么?

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

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

4

6 回答 6

3

再次重新启动设备检查(我面临同样的问题。)

于 2015-04-08T13:01:36.620 回答
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();
                        }
                }
        });        
}
于 2013-11-27T15:27:30.677 回答
1

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

于 2013-11-20T08:11:29.940 回答
0

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

<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 
<uses-permission android:name="android.permission.INTERNET" />
于 2014-08-19T09:09:15.577 回答
0

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

于 2013-11-21T11:00:13.843 回答
0

您可以使用谷歌地图服务

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

UPD: Google Maps Services 不打算在 Android 中使用,因此您可以使用Mapbox Geocoder

于 2017-04-20T21:03:55.913 回答