GPS-Beispiel gesucht

  • Antworten:13
Klaus Neumann
  • Forum-Beiträge: 30

26.09.2011, 19:40:20 via Website

Hallo,

ich suche nach einem funktionierdem Beispiel welches mir Daten des GPS liefert.
Ich möchte mir für das joggen die Durschnittszeit des letzen Kilometer ansagen lassen, und dachte das wär ein schönes Beispiel um mich mal in android einzuarbeiten...

Gruß
Klaus

Antworten
tom_cat
  • Forum-Beiträge: 11.132

26.09.2011, 19:45:36 via Website

Hallo Klaus,

ein herzliches Willkommen auf AndroidPIT und viel Spaß bei uns.

Da Deine Frage wie eine Programmierfrage klingt, verschiebe ich den Thread mal in das entsprechende Forum. Wenn ich falsch liege, sage kurz bescheid.

Natürlicher Verstand kann fast jeden Grad von Bildung ersetzen, aber keine Bildung den natürlichen Verstand. Arthur Schopenhauer App Reviews nach Einsatzzweck und hier noch das: Das-AndroidPITiden-Buch

Antworten
Klaus Neumann
  • Forum-Beiträge: 30

26.09.2011, 20:20:20 via Website

Hallo,

jaklar ist ne Entwicklungsfrage...

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

26.09.2011, 20:40:49 via Website

Dazu gibt es im Web jede Menge Teil-Beispiele.

* Du benötigst einen lokalen Service in dem die Aufzeichnung stattfindet und der weiterläuft wenn der Benutzer das Gerät in den Ruhezustand versetzt bzw. die sichtbaren Activities Deiner App verlässt.

* Dazu benötigst Du einen Kommunikationskanal vom Service zu Deinen Activities um diese über aktuelle Daten informieren zu können. Ich mache das immer über BroadcastReceiver (zum Beispiel in meinem GaCoMo das auch von Joggern verwendet wird - Screenshots hier: https://www.wuala.com/Android%20Apps%20Screenshots/GaCoMo/de/?key=z8nP8i9BDUZl).

* Die Location Updates liefern die Koordinaten und den Zeitpunkt der Aufzeichnung - aus zwei Koordinaten kannst Du mit einer statischen Funktion (distanceBetween) die Entfernung berechnen lassen und dann mit Hilfe der Zeiten alles ausrechnen.

* Wenn Du diese Daten aufzeichnen willst dann benötigst Du noch den SQLiteOpenHelper.

Das ist jetzt alles sehr oberflächlich da das alles nicht mundgerecht zu bekommen ist, da muss man schon etwas Hirnschmalz reinstecken. Das Thema geht auch jeder anders an. Ich wollte zum Beispiel nicht das diese Profi-Radfahrer auf Ihren 180km Radtouren Millionen Informationen in die Datenbank schaufeln und Ihr Handy zumüllen, auf der anderen Seite sollen die Daten aber noch sehr präzise bleiben. Also lasse ich mir alle 7m und 2sec einen Location Update geben ermittele daraus exakte Werte und speichere in der Datenbank aber ein Aggregat auf einem etwas höheren Niveau.

Im Übrigen halte ich das für ein sehr sportliches erstes Projekt.

Bei Fragen - auf diesem Kanal.

— geändert am 26.09.2011, 20:42:49

Antworten
Klaus Neumann
  • Forum-Beiträge: 30

27.09.2011, 07:17:17 via Website

Hallo,

ich habe das Beispiel hier mal ausprobiert.
Leider bekommen ich beim Starten der App einen Fehler (Die Anwendung wurde unerwartet beendet).
Zu meinen Vorkenntnissen: Habe ein Android HelloWorld erfolgreich zum laufen bekommen.
Ich musste das @Override vor den Methoden den LocationListener entfernen, da Eclipse sonst mekkerte...

Wäre froh wenn ich das schon mal zum laufen bekomme würde...

gruß
Klaus

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

27.09.2011, 07:25:32 via App

Kennst du das Logcat? Das findest du unter Window > Open Perspective > DDMS.
Poste mal die Fehlermeldung, die da erscheint, wenn die App abstürzt.
Lg Ansgar

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

27.09.2011, 08:53:52 via Website

Das Entfernen des @Override ist nicht notwendig - Du hast einen Fehler in Deiner App. Solche Fehler kann man nicht aus der Ferne - zudem ohne eine Zeile Code zu sehen - lösen. Diesen Fehler findest Du nicht im LogCat da der Fehler schon zur Compile-Zeit auftritt.

Irgendetwas rund um extends, implements oder der für diese App eingestellten Android Version stimmt nicht.

Antworten
Klaus Neumann
  • Forum-Beiträge: 30

28.09.2011, 18:56:30 via Website

Hallo,

ich habe das Beispiel zu laufen bekommen. Zeigt mir die Werte an :-).
Das override muss natürlich weg, das es kein override ist. Dann habe ich noch die layout.xml anpassen müssen (textInfo-Element)
und die permission in die Manifest.xml. Soweit habe ich das schon mal verstanden.
Jetzt benötige ich halt eine Funktion um ein training zu starten, und dann muss ich noch an die Werte der zurückgelegten Strecke kommen...

Kann mir da jemand helfen?

Gruß
Klaus
Und danke für die schnellen Antworten...!!

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

28.09.2011, 19:27:39 via App

Hm,
als nächstes brauchst du eigentlich einen Service, der im Hintergrund die Position abruft, daran misst und letzendlich spricht. Eine Activity um den Service zu konfigurieren, starten und zu schließen wäre sicher auch nicht schlecht :P
Oder was meinst du?
Lg Ansgar

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

28.09.2011, 23:20:23 via Website

@Klaus: Du meinst diese Methoden?

1locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
2locationListener = new LocationListener() {
3
4 @Override
5 public void onLocationChanged(final Location location) {
6 }
7
8 @Override
9 public void onProviderDisabled(final String provider) {}
10
11 @Override
12 public void onProviderEnabled(final String provider) {}
13
14 @Override
15 public void onStatusChanged(final String provider, final int status, final Bundle bundle) {}
16};

... und weshalb genau sind das natürlich keine Overrides? Dieser Teil stammt ohne den Methodeninhalt 1:1 aus einem meiner Services.

Gruß
Harald

Antworten
Klaus Neumann
  • Forum-Beiträge: 30

30.09.2011, 19:56:50 via Website

Hallo Harald,

ich verstehe das ehrlich gesagt jetzt auch nicht mehr. Aber Eclipse mekkert, wenn ich das @Override nicht entferne.
Warum?
Gruß
Klaus

Antworten
Klaus Neumann
  • Forum-Beiträge: 30

30.09.2011, 20:04:09 via Website

Hallo Ansgar,
ich werde jetzt am Wochenende noch ein bissl lesen über Android und hoffe das ich dann was gelernt habe.
Ich stelle mir das so vor, das ich einen Knopf drücke:'training starten', und dann die zurückgelegte Strecke, die Zeit seit dem Button-Klick,
die letzte Zeit für den Kilometer angezeigt und auch angesagt wird. Und irgendwie wäre nicht schlecht, wenn man alle Zeiten aller Kilometer auf dem Display sehen kann...

Gruß
klaus

Antworten
Klaus Neumann
  • Forum-Beiträge: 30

11.10.2011, 19:55:29 via Website

Hallo,

ich komme eigentlich schon ganz gut voran, alles wird schon angezeigt, berechnet und auch über Text2Speech ausgegeben.
Was ich jetzt noch benötige ist halt das weiterlaufen lassen, wenn ich z.B eine andere Anwendung starte (Musik abspielen)
Also das mit dem Service habe ich noch nicht.


[quote=Harald Wilhelm]Dazu gibt es im Web jede Menge Teil-Beispiele.

* Du benötigst einen lokalen Service in dem die Aufzeichnung stattfindet und der weiterläuft wenn der Benutzer das Gerät in den Ruhezustand versetzt bzw. die sichtbaren Activities Deiner App verlässt.

Gruß
Klaus

Antworten