2016-08-22 4 views
0

Hi ich versuche, einen Code zu schreiben, um den aktuellen Standort des Benutzers zu erhalten. Ich habe dieses Tutorial http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/ eng und funktioniert, aber wenn ich in den Thread-Code und ich ändere die Lat und Lon von den erweiterten Kontrollen in Android Studio es alle 5 Sekunden aktualisieren, aber das lat und lon bleibt immer noch bei 0,0 0,Standort Update auf Thread alle paar Sekunden auf Android

Unten finden Sie den Code mit dem Gewinde

if(gps.canGetLocation()) 
    { 

     Thread t = new Thread() { 

      @Override 
      public void run() { 
       try { 
        while (!isInterrupted()) { 
         Thread.sleep(5000); 
         runOnUiThread(new Runnable() { 
          @Override 
          public void run() { 
           if(Double.toString(gps.getLatitude()) != null && Double.toString(gps.getLongitude()) != null){ 
            realLatitude = gps.getLatitude(); 
            realLongitude = gps.getLongitude(); 
            lblShowLat.setText(Double.toString(realLatitude)); 
            lblShowLon.setText(Double.toString(realLongitude)); 
            System.out.println(Double.toString(realLatitude) + " "+ Double.toString(realLongitude)); 

            updateDateTime(); 
           } 
           // Toast.makeText(getApplicationContext(), "Refresh ", Toast.LENGTH_LONG).show(); 
          } 
         }); 
        } 
       } catch (InterruptedException e) { 
       } 
      } 
     }; 

     t.start(); 

    } 

    else 
    { 
     gps.showSettingAlert(); 
    } 

Antwort

0

1) Sie keine aktualisierten Ort alle 5 s erhalten können. Das Telefon aktualisiert den Standort nicht häufig. GPS ist in der Regel alle 30s-1 Minute

2) Das Tutorial, das Sie verwenden, ist wirklich kaputt. Dieser Code sollte niemals verwendet werden, und jede Kopie davon sollte in Flammen verbrannt werden. Ich habe eine detaillierte Aufschlüsselung, warum dieser Code hier schrecklich ist: http://gabesechansoftware.com/location-tracking/ Ich habe auch einen besseren Weg, es dort zu tun.

3) Der richtige Weg für Sie ist, sich für Standortaktualisierungen zu registrieren und Ihren Server zu aktualisieren, wenn Ihr Standort aktualisiert wird und nicht nach einem festen Zeitplan.

4) Ohne zu tun, was in 3 ist, gibt es keine Möglichkeit, Ihren Code arbeiten zu lassen. Es basiert auf getLastKnownLocation, die möglicherweise nicht funktioniert. Aber wenn es am Anfang nicht funktioniert, wird es sich niemals selbst reparieren. Die einzige sichere Verwendung dafür ist, sie optimistisch als Optimierung zu verwenden. Wenn Sie tatsächlich einen Speicherort benötigen, sollten Sie immer Updates anfordern, erwarten Sie nie, dass diese Funktion funktioniert.

+0

Hallo, danke für Ihre Antwort. Tut mir leid, ich bin noch ein Anfänger in Android .. Könntest du mir helfen und begleiten? –

Verwandte Themen