2017-08-05 21 views
10

Tháng trước bộ mã hóa địa lý đã bắt đầu thất bại mỗi lần với lỗi "lỗi không thành công" và tôi dường như không thể giải quyết được lỗi này. Tôi đã xem xét java.io.IOException: grpc failed nhưng nó đã không thực sự giải quyết vấn đề.Geocoder grpc không thành công

Đối exampel mã

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

Tôi đã có cùng mã trong nhiều năm, nhưng nó chỉ là thời gian gần đây nó đã ngừng làm việc khi tôi biên dịch lại ứng dụng và thử nghiệm trên một giả lập hoặc thiết bị thực.

Nếu tôi biên dịch chống lại SDK 25, sử dụng công cụ xây dựng 25, nó hoạt động trên trình giả lập với SDK 25. Nhưng nếu tôi thử giả lập SDK 24, 26 hoặc bất kỳ phiên bản SDK nào khác, nó sẽ thất bại với "grpc failed" . Tôi đã cố gắng để tạo ra một thiết bị ảo mới vv nhưng cùng một vấn đề.

Tôi không biết cách khắc phục sự cố và vấn đề là gì.

Thiết lập hiện tại: targetSDK/compileSDK 25, công cụ xây dựng 25.0.3, Android Studio 2.3.3, trình mô phỏng thông thường. (Tôi đã thử các công cụ xây dựng khác và các phiên bản SDK, nhưng vẫn còn vấn đề)

Bất kỳ ý tưởng nào?

+0

có thể trùng lặp của [java.io.IOException: grpc thất bại] (https://stackoverflow.com/questions/45012289/java-io-ioexception-grpc-failed) –

+0

@SimonRolin Không, Xem câu trả lời được chấp nhận và nhận xét bên dưới. –

Trả lời

1

Sự cố có thể là bạn đang cố gắng sử dụng bộ mã hóa địa lý trong chuỗi chính, nếu bạn đang sử dụng IntentService bạn có tùy chọn URL này để tạo trong quy trình khác mặc dù bạn luôn có thể sử dụng Asynctask hoặc tương tự.

+0

Tôi sử dụng AsyncTask và nó hoạt động hoàn hảo trên các thiết bị. Trên các trình giả lập, nó ngẫu nhiên thất bại với thông báo lỗi IOException, mặc dù nó không nhất quán. Ví dụ, nó chỉ làm việc 3/5 lần trên trình mô phỏng và 5/5 lần trên thiết bị. Nó chắc chắn có vẻ giống như một vấn đề giả lập trong trường hợp của tôi. – Ewald

0

Liên quan đến Dịch vụ của Google Play trên thiết bị ảo. Sử dụng API25 và phiên bản 7.1.1 để tìm giải pháp.

Dưới đây là các ví dụ;

Khi tôi cố gắng trên Genymotion và Dịch vụ Google Play bị vô hiệu hóa trên thiết bị ảo (Lỗi: Dịch vụ không sẵn):

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

Khi tôi cố gắng trên Genymotion và Dịch vụ Google Play được kích hoạt (Lỗi: grpc không thành công):

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

Khi tôi cố gắng trên AVD Manager và Dịch vụ Google Play được kích hoạt (Không có lỗi):

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

Các vấn đề liên quan