Location sicher bekommen

  • Antworten:8
Luca T.
  • Forum-Beiträge: 62

17.10.2014, 00:33:50 via Website

Hallo Leute,

ich brauche in einem Intent Service die Location des Users, und benutze dafür momentan diesen Code:

LocationManager lmanager =  (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    Location myLocation = lmanager.getLastKnownLocation(lmanager.getBestProvider(new Criteria(), true));

Das Problem ist, dass der Code unter Umständen null liefert, dann nämlich, wenn der User sein Smartphone z.B. neu startet, und das GPS noch nicht angestellt hat.
Deshalb: Gibt es einen weg sicher an die Location zu kommen?
Danke schonmal im Vorraus.

mfg

Antworten
Fabian Simon
  • Forum-Beiträge: 359

17.10.2014, 09:31:24 via Website

meines Wissen nach kannst du das Handy zwingen GPS einzuschalten. (Google rät aber davon ab )
Ich mach das zum Beispiel mit Bluetooth so ...

Antworten
Luca T.
  • Forum-Beiträge: 62

17.10.2014, 23:46:17 via Website

Leider liefert das GPS erst nach zu langer Zeit eine Ortsposition, auch wenn man den start erzwingt(was ich prinzipiell eigentlich dem Nutzer überlassen möchte).

Antworten
Bob_Bubbles
  • Forum-Beiträge: 17

18.10.2014, 00:27:32 via App

Warum fängst du nicht einfach den Null-Wert ab?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

18.10.2014, 09:08:20 via App

Oder du machst eine while schleife drum herum, dodass diese erst aufhört wenn die Location richtig gelesen wurde.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Luca T.
  • Forum-Beiträge: 62

18.10.2014, 20:14:25 via Website

Aber dann müsste ich ja auch den GPS Start erzwingen, und das möchte ich nicht.
Und die null abfangen bringt auch nichts, weil dann die ganze Funktion nicht mehr erfüllt wird.
Ich habe es jetzt so gemacht, dass ich den Service erst starte, wenn sie fertig geladen hat, mit einem onMapLoadedListener, und gebe dann meine Location mit map.getMyLocation() mit, dass ist sicherlich nicht die optimale Lösung, da der Service damit erst Zeitversetzt anfängt zu arbeiten, aber mir fällt jetzt nichts besseres ein.

Antworten
Gelöschter Account
  • Forum-Beiträge: 271

18.10.2014, 22:08:35 via App

Aber es gibt ja noch die WLAN/Netzwerk Ortung welche nicht so genau aber schneller ist. Wenn das noch nicht genau genug ist, zuerst diesen Abgreifen und ein Bitte Warten, GPS wird gesucht... anzeigen und danach den genauen Standort anzeigen

Nexus 4 - 5.1 Stock Root

Antworten
Luca T.
  • Forum-Beiträge: 62

19.10.2014, 14:04:58 via Website

Ja, das habe ich auch versucht, aber nicht hinbekommen, vlt aber auch einfach falsch geamcht.
Bei mir wars in etwa so:

ArrayList<String> provider = lmanager.getAllProvider();
for(int i = 0; i<provider.size(); i++){
if(lmanager.getLocation(provider.get(i) != null){
myLocation = lmanager.getLocation(provider.get(i);
}
}
Oder muss man die anders abgreifen?

Antworten