it-swarm.com.de

NETWORK_PROVIDER liefert keine aktualisierten Speicherorte

LocationManager locationManager = (LocationManager)getApp().getSystemService(Context.LOCATION_SERVICE); //getApp() returns my Application object
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER , 1, 1, this);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1, 1, this);

Das ist der Code, den ich zum Zuhören verwende. Wenn GPS aktiviert ist, funktioniert alles gut. Wenn ich jedoch GPS deaktiviere und mich auf den Standort des Netzwerks stütze, führt dies zu veralteten Ergebnissen - in diesem Fall vor zwei Tagen. Ich kann es nicht aktualisieren. Wenn Sie getLastKnownLocation aufrufen, werden dieselben veralteten Ergebnisse zurückgegeben.

Google Maps-Updates sind in Ordnung, daher weiß ich, dass es sich nicht um ein Hardware/System-Konfigurationsproblem handelt.

Ich habe gegoogelt und ein paar Leute mit ähnlichen Problemen gefunden, aber keine Antworten. Ich habe versucht, mein Projekt auf API-Ebene 8 (2.2) sowie 15 (4.0.3) auszurichten. Gleiche Ergebnisse Mein Telefon führt ICS aus.

Ich habe auch versucht, die Anforderung für GPS_PROVIDER zu entfernen, sowie Anforderungen für alles in getAllProviders () aufzunehmen. Gleicher Deal.

Irgendeine Idee, warum NETWORK_PROVIDER nicht aktualisiert wird? Jede Hilfe wäre sehr dankbar.

(P.S. Nein, normalerweise verwende ich nicht "1, 1" als Zeit-/Entfernungsparameter; ich habe es gerade beim Debuggen geändert.)

EDIT: Ich habe vergessen zu erwähnen, dass ja, isProviderEnabled () gibt true zurück.

47
hersh

Ich habe endlich einen Weg gefunden, dieses Problem zu lösen (siehe meine Frage hier ).

In meinem Fall auf dem S3 Galaxy Mini gab es ähnliche Symptome (keine Standortaktualisierungen vor dem Neustart ...) wie die oben beschriebenen. Der Standort wurde in den meisten Fällen nicht mehr aktualisiert, wenn das Gerät einen niedrigen Stromverbrauch erreicht hat, aber manchmal ist es auch passiert, wenn das Telefon voll aufgeladen war .. Natürlich ist dies ein Problem in der LocationManager. Es ist mir gelungen, LocationManager zu umgehen, indem ich die neue Google Play Services-API für Standorte (LocationClient-Klasse) verwendete. 

Dies ist wahrscheinlich der Grund, warum die Standortaktualisierungen immer noch mit Google Maps zusammenarbeiteten, da Google Maps bereits vor seiner Veröffentlichung die Google Play Services-API verwendete.

Ich empfehle Ihnen, diesem Link zu folgen, der zeigt, wie Play Services-API verwendet wird, um Standorte abzurufen, anstatt LocationManager zu verwenden, wenn dieses Problem auftritt.

Ich habe Standortaktualisierungen mit Play Services ausgeführt und es gab absolut keine Probleme mehr - ich bekomme regelmäßig regelmäßige Standortaktualisierungen.

Beachten Sie, dass dies erfordert, dass der Nutzer Google Play auf seinem Gerät installiert haben muss, sodass Kindles und dergleichen außerhalb des Bildes erscheinen. Es erfordert auch ein Minimum von Android 2.2.

23
NumberFour

Wenn Sie an einem neuen Telefon arbeiten, müssen Sie überprüfen, ob Sie alle Vereinbarungen in der Google Maps-App akzeptiert haben. Andernfalls erhalten Sie keine Updates von NETWORK_PROVIDER.

0
knagode

Ich vermute derzeit, dass es removeUpdates(listener) beim Herunterfahren der App oder bei Aktivität ondestroy nicht gegeben ist. Ich habe dafür gesorgt, das umzusetzen und hoffe, dass es behoben wird. Ich kann an nichts anderes denken.

--edit --.__ Dies konnte leider nicht behoben werden.

0
Peterdk

1) Zuerst prüfen Sie, ob Sie die oben angegebene Erlaubnis erteilt haben . 2) Sie müssen sicherstellen, dass das Internet in Ihrem Mobilteil funktioniert. 3.

public void getLocationByNetworkProvider()
{       
    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 10, new LocationListener() {
        public void onStatusChanged(String provider, int status, Bundle extras) {
            // TODO Auto-generated method stub


        public void onProviderEnabled(String provider) {
            // TODO Auto-generated method stub

        }

        public void onProviderDisabled(String provider) {
            // TODO Auto-generated method stub

        }

        public void onLocationChanged(Location location) {
         location.getLatitude();                                location.getLongitude();

        }
    });     

}`
0
User10001