sending extra an requestLocationUpdates intentService unterbricht Standortaktualisierungen

9

Ich habe Probleme beim Senden einer Zeichenfolge mit meinem PendingIntent , die ich an LocationServices.FusedLocationApi.requestLocationUpdates(GoogleApiClient client, LocationRequest request, PendingIntent callbackIntent) übergebe.

Es scheint, dass der Username extra, den ich auf die Intent setze, den Speicherort, den requestLocationUpdates versucht, an meine IntentService zu übergeben, wie intent.getParcelableExtra(FusedLocationProviderApi.KEY_LOCATION_CHANGED) returns null .

ausgibt

BEARBEITEN

Ich habe versucht, eine User -Klasse zu erstellen, die Parcelable implementiert und sie als Extra hinzufügt:

%Vor%

und ich habe auch versucht, das Parcelable User in ein Bundle einzufügen, wie es in diesem Fehlerbericht per Kommentar vorgeschlagen wurde Ссылка :

%Vor%

in meinem Dienst:

%Vor%

Allerdings hat keiner dieser Ansätze einen Unterschied gemacht. Immer, wenn ich etwas extra auf meine Absicht lege, wird der Ort nie zu der Absicht hinzugefügt, wenn die Aktualisierungen stattfinden.

Ich habe diese IntentService eingerichtet, um die Aktualisierung von Standorten zu übernehmen:

%Vor%

Wenn der Benutzer auf eine Schaltfläche klickt, wird startLocationUpdates in meiner Hauptaktivität aufgerufen:

Hauptaktivitätsklasse:

%Vor%

Das alles funktioniert gut und gut; Wenn der Benutzer den Knopf drückt, wird toggleLocationUpdates aufgerufen, was LocationServices.FusedLocationApi.requestLocationUpdates aufruft, was mein LocationUpdateService aufruft, wo ich den Ort abrufen kann.

Das Problem kommt, als ich versucht habe, einen String extra in meine Intent einzufügen, indem ich Intent.putExtra (String, String) verwende:

Hauptaktivitätsklasse:

%Vor%

BEARBEITEN Ich hatte den nächsten Satz als Anweisung und nicht als Frage gestartet: "Ich benutze ..."

Verwende ich den richtigen Ansatz, um einige zusätzliche Daten an diese Standortaktualisierung mit IntentService zu senden, oder gibt es eine vernünftigere Vorgehensweise?

Ist das ein Fehler oder nur eine schlechte Dokumentation?

    
techjeffharris 16.06.2015, 00:09
quelle

1 Antwort

-1

Die Verwendung des IntentService, der mit der FusedLocationProviderAPI gekoppelt ist, führt zu Problemen. In den Entwicklerdokumenten mit dem Titel Empfangen von Standortaktualisierungen :

  

Abhängig von der Form der Anforderung der verknüpfte Standortanbieter   ruft entweder den LocationListener.onLocationChanged() -Rückruf auf   Methode und übergibt es ein Location-Objekt oder gibt eine PendingIntent das aus   enthält den Standort in seinen erweiterten Daten. Die Genauigkeit und Häufigkeit   der Updates werden von den Standortberechtigungen beeinflusst, die Sie haben   angefordert und die Optionen, die Sie im Standortanforderungsobjekt festlegen

Außerdem wird ein PendingIntent verwendet, um Berechtigungen für einen anderen Codeabschnitt ( FusedLocationProviderAPI in Google Play Services) zu erweitern, um ihren Code innerhalb Ihrer apk auszuführen. Ein IntentService wird verwendet, um einen Dienst zu starten, der im Rahmen Ihrer apk definiert ist.

Die Methode erfordert also eine Implementierung von LocationListener für Vordergrundaktualisierungen oder eine PendingIntent für Hintergrundaktualisierungen, die mit einem Broadcastempfänger gekoppelt sind.

Dies ist ein funktionierendes Beispiel für einige Methoden, die verwendet werden, um Ortsaktualisierungen von einem PendingIntent in Verbindung mit zusätzlichen Werten anzufordern.

Hinweis: LocalStorage.java ist eine Dienstprogrammklasse zum Speichern lokaler Variablen. Sie ist nicht Teil der Android API

GPS-Plotter

%Vor%

BackgroundLocationReceiver

%Vor%

BEARBEITEN Die folgende Methode erstellt eine LocationRequest, die zum Aufrufen der Methode requestLocationUpdates()

erforderlich ist %Vor%

BEARBEITEN Nach einer langen Diskussion im Chat mit Catherine kamen wir zu dem Schluss, dass die google play services-Bibliothek 7.5 einen Fehler hat, der den Parcelable Extra Location, der von FusedLocationProviderAPI übergeben wurde, nicht verarbeitet, wenn andere Extras in den Intent eingefügt werden. 7.0 bietet diese Fähigkeit jedoch. Sie sagte, dass sie einen Bug einreichen wird und wir sehen, wie lange das Android-Team braucht, um

zu lösen     
andrewdleach 15.08.2015, 16:10
quelle