02-27 16:29:49.568: D/looping(10966): 110355
02-27 16:29:49.568: E/Exception in getLocationDetails -(10966): Service not Available
02-27 16:29:49.573: D/looping(10966): 110356
02-27 16:29:49.573: E/Exception in getLocationDetails -(10966): Service not Available
02-27 16:29:49.573: D/looping(10966): 110357
02-27 16:29:49.573: E/Exception in getLocationDetails -(10966): Service not Available
und natürlich habe ich alle erforderlichen Berechtigungen hinzugefügt:
Ich probiere das an Samsung Galaxy Note GT-N7000 (Version 4.0.4)
Fehlen mir irgendwelche Einstellungen? Bezogen auf das Gerät oder die Anwendung ? Oder passiert das meistens? Wenn ja, gibt es eine bessere Lösung, um dies zu beheben?
Danke schön
Nein. Ich sehe seit einigen Minuten Ausfälle. Versuchen Sie, Ihr Gerät neu zu starten?
– Reno
27. Februar 13 um 11:36 Uhr
isPresent() kehrt zurück True stets. Und doch sagt es Service not available. Aber nach dem Neustart des Geräts funktioniert es einwandfrei. Seltsam. Wie soll ein User das wissen 🙁
– Archie.bpgc
27. Februar 13 um 12:03 Uhr
Gab es jemals eine bessere Lösung als einen Neustart? Ich habe das gleiche Problem. Beim Testen sind wir auf dieses Problem auf zwei Telefonen gestoßen, und ein Neustart behebt das Problem. Ich denke nicht, dass es eine sehr gute Lösung ist, den Benutzer dazu zu bringen, sein Telefon neu zu starten. Gibt es eine andere Objektalternative zum GeoCoder-Objekt?
– JohnathanKong
29. November 13 um 22:16 Uhr
@JohnathanKong Verwenden Sie dies http://maps.google.com/maps/api/geocode/json?address=" + address + "&ka&sensor=false als Rückfall
– Archie.bpgc
30. November 13 um 5:40 Uhr
Reno
Der eigentliche Grund dafür Geocoder nicht funktioniert hat, weil die NetworkLocator wurde im Einsatz getötet. Wahrscheinlich aufgrund von weniger Speicher oder vielleicht haben Sie den Task-Manager verwendet, um alle Dienste zu beenden?
Ich bin mir nicht sicher, aber das ist eine Vermutung. Ich habe das schon einmal gesehen. Letztes Jahr habe ich einen Reconnect-Mechanismus geschrieben, um die NetworkLocator.apk zu laden und an die zu binden GeocoderService. Ich denke, diese Änderung wurde nicht in JellyBean übernommen, sodass dieses Problem weiterhin besteht.
Es kann nur durch Neustart gelöst werden. (Der NetworkLocationService wird beim Booten geladen)
Bearbeiten: Sie werden dieses Problem in JBP oder KK nicht sehen, dieser Dienst wird in die Playstore-App verschoben.
Bußgeld. Aber ich habe andere kartenbezogene Apps wie z Karten, Lokal..etc, Sie alle funktionierten gut. Kann daran liegen, dass ich Basic verwende android.location.Geocoder und sie könnten verwenden some google service libraries?? Wenn das der Fall ist, habe ich gerade angefangen zu verwenden google-play-services.jar unterstützt das solche Methoden? Danke schön
– Archie.bpgc
27. Februar 13 um 12:53 Uhr
Ich meine. wenn es ein Problem mit NetworkLocationService wie du gesagt hast. Die anderen kartenbasierten Apps müssen sich genauso verhalten haben
– Archie.bpgc
27. Februar 13 um 13:03 Uhr
Google Maps hat ein eigenes eingebautes NLS. Das war eines der ersten Dinge, die ich überprüft habe
– Reno
27. Februar 13 um 19:14 Uhr
wie kann ich das explizit abschalten NetworkLocator? Weil ich eine Problemumgehung für mein oben genanntes Problem habe. Das will ich jetzt testen. Kann den Fall aber nicht reproduzieren.
– Archie.bpgc
11. März 13 um 13:38 Uhr
Sie können dies reproduzieren, indem Sie laufende Dienste beenden (ich habe das Linux-cmd für das Beenden von Prozessen verwendet). Um den Netzwerkanbieter zu deaktivieren, können Sie in den Einstellungen zu den Ortungsdiensten gehen.
– Reno
12. März 13 um 5:10 Uhr
Mugen
Problemumgehung mit direktem Zugriff auf Google Maps:
public static LatLng getLocationFromString(String address)
throws JSONException {
HttpGet httpGet = new HttpGet(
"http://maps.google.com/maps/api/geocode/json?address="
+ URLEncoder.encode(address, "UTF-8") + "&ka&sensor=false");
HttpClient client = new DefaultHttpClient();
HttpResponse response;
StringBuilder stringBuilder = new StringBuilder();
try {
response = client.execute(httpGet);
HttpEntity entity = response.getEntity();
InputStream stream = entity.getContent();
int b;
while ((b = stream.read()) != -1) {
stringBuilder.append((char) b);
}
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
JSONObject jsonObject = new JSONObject(stringBuilder.toString());
double lng = ((JSONArray) jsonObject.get("results")).getJSONObject(0)
.getJSONObject("geometry").getJSONObject("location")
.getDouble("lng");
double lat = ((JSONArray) jsonObject.get("results")).getJSONObject(0)
.getJSONObject("geometry").getJSONObject("location")
.getDouble("lat");
return new LatLng(lat, lng);
}
public static List<Address> getStringFromLocation(double lat, double lng)
throws ClientProtocolException, IOException, JSONException {
String address = String
.format(Locale.ENGLISH, "http://maps.googleapis.com/maps/api/geocode/json?latlng=%1$f,%2$f&sensor=true&language="
+ Locale.getDefault().getCountry(), lat, lng);
HttpGet httpGet = new HttpGet(address);
HttpClient client = new DefaultHttpClient();
HttpResponse response;
StringBuilder stringBuilder = new StringBuilder();
List<Address> retList = null;
response = client.execute(httpGet);
HttpEntity entity = response.getEntity();
InputStream stream = entity.getContent();
int b;
while ((b = stream.read()) != -1) {
stringBuilder.append((char) b);
}
JSONObject jsonObject = new JSONObject(stringBuilder.toString());
retList = new ArrayList<Address>();
if ("OK".equalsIgnoreCase(jsonObject.getString("status"))) {
JSONArray results = jsonObject.getJSONArray("results");
for (int i = 0; i < results.length(); i++) {
JSONObject result = results.getJSONObject(i);
String indiStr = result.getString("formatted_address");
Address addr = new Address(Locale.getDefault());
addr.setAddressLine(0, indiStr);
retList.add(addr);
}
}
return retList;
}
Danke, es hat das Problem mit meinem s3 mini gelöst, das sich weigerte, den Geocoder-Dienst zu verwenden. Aber es funktioniert nur, wenn es in einer asynchronen Aufgabe verwendet wird.
– Ruocco
23. Mai ’15 um 14:33 Uhr
Starten Sie das Gerät neu und das Problem wird behoben.
Bestätigt! Natürlich, falls der Backend-Dienst auf dem Gerät präsentiert wird – Geocoder.isPresent()
– Максим Петлюк
21. Februar 18 um 15:48 Uhr
Semashko
Die API löst eine Ausnahme „Dienst nicht verfügbar“ aus, wenn ein solcher Dienst auf dem Gerät nicht verfügbar ist. Methode verwenden isPresent() um die Existenz des Dienstes zu überprüfen.
Der Grund dafür ist, dass die Geocoder-Klasse im Kern-Android-Framework vorhanden ist, aber vom Code abhängt, der von den Google-APIs bereitgestellt wird, um ordnungsgemäß zu funktionieren. Selbst wenn Ihr AVD die Google-APIs enthält, muss Ihr Projekt dennoch für dieses spezifische Build-Ziel erstellt werden.
dnocode
Dienst nicht verfügbar – Geocoder Android Wenn ich diesen Fehler in einigen gekochten Roms erhalte, habe ich diese Bibliothek geschrieben, von der ich hoffe, dass sie nützlich sein könnte. https://github.com/dnocode/gapis
.
7840800cookie-checkDienst beim Aufrufen von geoCoder.getFromLocation() nicht verfügbaryes
Nein. Ich sehe seit einigen Minuten Ausfälle. Versuchen Sie, Ihr Gerät neu zu starten?
– Reno
27. Februar 13 um 11:36 Uhr
isPresent()
kehrt zurückTrue
stets. Und doch sagt esService not available
. Aber nach dem Neustart des Geräts funktioniert es einwandfrei. Seltsam. Wie soll ein User das wissen 🙁– Archie.bpgc
27. Februar 13 um 12:03 Uhr
Gab es jemals eine bessere Lösung als einen Neustart? Ich habe das gleiche Problem. Beim Testen sind wir auf dieses Problem auf zwei Telefonen gestoßen, und ein Neustart behebt das Problem. Ich denke nicht, dass es eine sehr gute Lösung ist, den Benutzer dazu zu bringen, sein Telefon neu zu starten. Gibt es eine andere Objektalternative zum GeoCoder-Objekt?
– JohnathanKong
29. November 13 um 22:16 Uhr
@JohnathanKong Verwenden Sie dies
http://maps.google.com/maps/api/geocode/json?address=" + address + "&ka&sensor=false
als Rückfall– Archie.bpgc
30. November 13 um 5:40 Uhr