web-dev-qa-db-ja.com

ジオコーダーgrpcが失敗しました

その先月、ジオコーダーは毎回「grpc failed」エラーで失敗し始めましたが、解決できないようです。 Java.io.IOException:grpc failed を見ましたが、実際には問題を解決しませんでした。

Exampelコードについて

Geocoder geocoder = new Geocoder(context, Locale.getDefault());
addresses = geocoder.getFromLocation(lat, lng, 1); // Here if fails with "grpc failed"

私は何年も同じコードを持っていましたが、アプリを再コンパイルしてエミュレーターまたは実際のデバイスでテストすると、機能しなくなりました。

ビルドツール25を使用してSDK 25に対してコンパイルすると、SDK 25を使用するエミュレーターで動作します。しかし、SDK 24、26または他のSDKバージョンを使用してエミュレーターを実行すると、「grpc failed」で失敗します。新しい仮想デバイスなどを作成しようとしましたが、同じ問題があります。

私はそれを修正する方法と問題が何であるか見当がつかない。

現在の設定:targetSDK/compileSDK 25、ビルドツール25.0.3、Android Studio 2.3.3、通常のエミュレーター。(他のビルドツールとSDKバージョンを試しましたが、まだ問題が残っています)

何か案は?

12
Mackan

問題は、メインスレッドでGeocoderを使用しようとしていることです。IntentServiceを使用している場合、別のプロセスで作成する [〜#〜] url [〜#〜] オプションいつでもAsynctaskなどを使用できます。

2
Cifus

まあ、これは遅すぎるかもしれませんし、答えを探している他の誰かにとっては、私の場合はインターネットの問題でした。インターネット接続が悪かった

1
user7764270

これは、仮想デバイス上のGoogle Play Serviceに関連しています。 ソリューションにはAPI25とバージョン7.1.1を使用してください。

以下に例を示します。

Genymotionでを試して、仮想デバイスでGoogle Play Servicesが無効になったとき(エラー:サービスが利用できません):

10-07 07:13:30.023 3481-3481/com.unalfaruk.mapexample I/System.out: Your Location: 65.96992333333333 -18.540028333333332
10-07 07:13:30.023 3481-3481/com.unalfaruk.mapexample W/System.err: Java.io.IOException: Service not Available
10-07 07:13:30.024 3481-3481/com.unalfaruk.mapexample W/System.err:     at Android.location.Geocoder.getFromLocation(Geocoder.Java:136)
10-07 07:13:30.024 3481-3481/com.unalfaruk.mapexample W/System.err:     at com.unalfaruk.mapexample.MapsActivity$1.onLocationChanged(MapsActivity.Java:71)
10-07 07:13:30.024 3481-3481/com.unalfaruk.mapexample W/System.err:     at Android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.Java:297)

enter image description here

Genymotionでを試して、Google Play Servicesを有効にすると(エラー:grpc failed):

10-07 07:18:56.325 2694-2694/com.unalfaruk.mapexample I/System.out: Your Location: 65.96669666666666 -15.0
10-07 07:18:57.670 2694-2694/com.unalfaruk.mapexample W/System.err: Java.io.IOException: grpc failed
10-07 07:18:57.670 2694-2694/com.unalfaruk.mapexample W/System.err:     at Android.location.Geocoder.getFromLocation(Geocoder.Java:136)
10-07 07:18:57.670 2694-2694/com.unalfaruk.mapexample W/System.err:     at com.unalfaruk.mapexample.MapsActivity$1.onLocationChanged(MapsActivity.Java:71)
10-07 07:18:57.670 2694-2694/com.unalfaruk.mapexample W/System.err:     at Android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.Java:297)

enter image description here

AVD Managerでを試して、Google Play Servicesが有効になっている場合(エラーなし):

10-07 14:20:14.769 3159-3159/com.unalfaruk.mapexample I/System.out: Your Location: 37.421998333333335 -122.08400000000002
10-07 14:20:15.220 3159-3159/com.unalfaruk.mapexample I/System.out: Your Adress: Address[addressLines=[0:"1600 Amphitheatre Parkway",1:"Mountain View, CA 94043",2:"USA"],feature=1600,admin=California,sub-admin=null,locality=Mountain View,thoroughfare=Amphitheatre Parkway,postalCode=94043,countryCode=US,countryName=United States,hasLatitude=true,latitude=37.422329,hasLongitude=true,longitude=-122.0843055,phone=null,url=null,extras=null]

enter image description here

0
Faruk ÜNAL