GPS Koordinaten in View updaten

  • Antworten:5
Michael H
  • Forum-Beiträge: 127

08.08.2012, 09:12:54 via Website

Hallo zusammen

Habe einen Service der mithilfe eines LocationManagers GPS-Koordinaten einsammelt. Diese werden in einer Datenbank abgelegt. Nun möchte ich die neuste Koordinate immer im InfoScreen meiner InfoActivity (sofern diese aktuell offen ist) anzeigen. Natürlich muss sich die View auch beim öffnen mit der neusten Koordinate bestücken lassen.

Bis jetzt habe ich das über ein "Transfer-Objekt" gelöst, in welchem ich die Instanz der ViewKlasse referenziere und sofern diese Vorhanden ist mit einem try-catch die View mit der GPS-Koordinate aktualisiere.

Nun will ich das eigentlich mit einem Broadcast lösen. Jedoch habe ich dort das Problem dass ein Intent kein Location Objekt aufnehmen kann.
Welche "eleganten" Möglichkeiten habe ich um die View zu aktualisieren.

Vielen Dank und Gruss

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

08.08.2012, 09:59:44 via Website

Natürlich geht das mit einem Intent - x-mal genau so gemacht:

1Intent intent = new Intent();
2intent.putExtra("LATITUDE", location.getLatitude());
3intent.putExtra("LONGITUDE", location.getLongitude());
4intent.putExtra("SPEED", location.getSpeed());
5// ...
6
7intent.setAction(<TAG>);
8sendBroadcast(intent);

Siehe auch: BroadcastReceiver: "Befehle" von Activity an Service senden und vice versa

— geändert am 08.08.2012, 10:02:45

Antworten
Michael H
  • Forum-Beiträge: 127

08.08.2012, 16:18:32 via Website

Ach cool!

Habe bis jetzt nur BroadcastReceiver gebraucht welche die Intents empfangen und kein sendBroadcast(Intent). Funktioniert super! Vielen Dank
Nur hab ich noch ein Problem. Wenn ich die Activity öffne, will ich die letzte GPS Koordinate anzeigen. Nun erscheinen keine Koordinaten, bis der nächste Broadcast gesendet wird. Wie machst Du das jeweils?

Gruss Michi

Antworten
Markus B.
  • Forum-Beiträge: 636

08.08.2012, 17:09:11 via App

Hi, dann speicher die letzten Werte einfach z.B. sharedPreferences oder in einer sqlite.
Dann zeigst du beim Starten der Activity den letzten Stand an und aktualisierst danach weiter.

Gruß,
Markus

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

08.08.2012, 17:26:05 via App

In der Situation war ich noch nie. In meinen Apps arbeite ich bislang mit Strecken und nicht mit Positionen. Der Aufzeichnungsservice speichert immer alle Koordinaten in der SQLite, die interessierten Activities erhalten jeden Location-Update per Broadcast. Wenn der Benutzer via Notification zu einer Map-Activity wechselt wird die gesamte Strecke aus der DB geladen und dann angezeigt.

Was macht denn Deine App? Gehts nur um die letzte Position dann nimm die Preferences, speicherst Du hingegen die komplette Strecke dann hol die letzte Location aus der DB.

Antworten
Michael H
  • Forum-Beiträge: 127

09.08.2012, 08:14:51 via Website

Zuerst einmal das mit den Intents (sendBroadcast()) funktioniert super toll. Gefällt mir gut, diese Lösung. :)

Die App hat ein InfoScreen, in welchem die letzte GPS Koordinate dargestellt werden soll. Daher werde ich, wie von Euch vorgeschlagen die letzte Position jeweils in den SharedPreferences sichern.

Vielen Dank für Eure Tipps!

Antworten