problem: gps onLocationChanged listener wird nur einmal aufgerufen

  • Antworten:5
floatec
  • Forum-Beiträge: 360

04.07.2010, 19:44:41 via Website

hollo zusammen,

vielleicht kann mir hier jemand helfen

habe folgendne code in einer app eingebunden....

jedoch wird der listener auf standordänderungen nur 1 mal aufgerufen...hatte schon mal jemand des problem?...oder sieht was ich falsch mache...
1LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
2
3
4 LocationProvider provider = lm.getProvider("gps");
5 lm.requestLocationUpdates("gps",
6 5000, // 1min
7 1, // 10m
8 new LocationListener(){
9
10
11
12
13 public void onLocationChanged(Location arg0) {
14 if(lat_old!=0&&lng_old!=0&&bRuns&&arg0.getLatitude()!=0&&arg0.getLongitude()!=0);{
15 KM+=gps2m((float)arg0.getLatitude(), (float)arg0.getLongitude(), lat_old, lng_old);
16 Toast.makeText(getApplication(), KM+"", Toast.LENGTH_LONG).show();
17 etKM.setText(""+(KM/1000));
18 }
19 lat_old=(float)arg0.getLatitude();
20 lng_old=(float)arg0.getLongitude();
21 }
22
23 public void onProviderEnabled(String provider) {
24 // TODO Auto-generated method stub
25
26 }
27
28 public void onProviderDisabled(String provider) {
29 // TODO Auto-generated method stub
30
31 }
32
33 public void onStatusChanged(String provider, int status, Bundle extras) {
34 // TODO Auto-generated method stub
35 if(status==GpsStatus.GPS_EVENT_STOPPED){
36 Context context = getApplicationContext();
37 CharSequence text = "gps stopped";
38 int duration = Toast.LENGTH_LONG;
39 Toast.makeText(context, text, duration).show();
40 }
41 }
42
43 });

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

04.07.2010, 20:31:17 via Website

Hi,

mal ein paar Anmerkungen:

- Deine Kommentare bei 5000, // 1min und 1, // 10m passen nicht wirklich *g*
- Deine if-Abfrage hat mit dem Komma da am Ende so gut wie gar keinen Sinn :)

So..und woher weißt du jetzt dass onLocationChanged nur 1 x aufgerufen wird? Würde da mal direkt am Anfang ein Log-Eintrag machen!

Wo läuft die App, im Emulator? Wie änderst du die Position? Konsole?

Antworten
floatec
  • Forum-Beiträge: 360

04.07.2010, 20:43:29 via Website

Sebastian N.
Hi,

mal ein paar Anmerkungen:

- Deine Kommentare bei 5000, // 1min und 1, // 10m passen nicht wirklich *g*
blöd wenn man dinge ändert aber die kommentare nicht^^
Sebastian N.

- Deine if-Abfrage hat mit dem Komma da am Ende so gut wie gar keinen Sinn :)
ohh...stimmt...ach wenns kein komma sondenr nen simikolon ist ;-)
Sebastian N.

So..und woher weißt du jetzt dass onLocationChanged nur 1 x aufgerufen wird? Würde da mal direkt am Anfang ein Log-Eintrag machen!
hab nen breakpoint gesetzt...wozu gibts denn nen debug modus^^
Sebastian N.

Wo läuft die App, im Emulator? Wie änderst du die Position? Konsole?
ja emulator über console mit geo fix

danke schonmal für deine bemühungen Sebastian

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

04.07.2010, 22:35:46 via Website

Patrick Müller

ohh...stimmt...ach wenns kein komma sondenr nen simikolon ist ;-)
Wahh, habe ich echt Komma geschrieben? Auweia! (ich schieb`s mal auf die Hitze :D )

Also dann weiß ich auch nicht, tut mir leid, dann musst du wohl auf Antworten von jmd. anderem warten...
An sich ist an dem Code ja nicht viel dran ;/
Exceptions sind zufällig auch nicht im Logcat zu sehen? :P (gerade weil du ja auch sagst dass sie beim ersten Mal aufgerufen wird - gps2m ?! )

Antworten
floatec
  • Forum-Beiträge: 360

04.07.2010, 22:38:38 via Website

Sebastian N.
Patrick Müller

ohh...stimmt...ach wenns kein komma sondenr nen simikolon ist ;-)
Wahh, habe ich echt Komma geschrieben? Auweia! (ich schieb`s mal auf die Hitze :D )

Also dann weiß ich auch nicht, tut mir leid, dann musst du wohl auf Antworten von jmd. anderem warten...
An sich ist an dem Code ja nicht viel dran ;/
Exceptions sind zufällig auch nicht im Logcat zu sehen? :P (gerade weil du ja auch sagst dass sie beim ersten Mal aufgerufen wird - gps2m ?! )

ne eben nciht...seh im logcat das die gps daten auch am gerät ankommen....

gps2m errechnet mir die distanz zwischen 2 punkten und gibt sie in metern zurück^^

das hanze soll ihrgendwann mal nen taxameter geben^^

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

05.07.2010, 12:01:56 via Website

onLocationChanged listener wird nur einmal aufgerufen


Ändere doch mal deine Überschrift, so wie ich dich verstehe wird das Interface schon aufgerufen, man würde es mittels Debugging oder Log Eintrag sehen können!

lat_old und lng_old sind sicherlich 0 anfangs, er wird also nicht in den Bedingung-block springen, andere Fehler wurden auch schon genannt!

hth,
Mac

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten