2017-12-27 8 views
0

Ich benutze Android Studio. Ich verwende locationManager.requestLocationUpdates (...), um den Standort zu ermitteln.Gibt es eine Möglichkeit, den Standort alle x Minuten zu erhalten, auch wenn keine Änderungen vorgenommen werden?

Ich mag so etwas wie dies zu tun:

//print location every 5 minutes 
12:10am lat=10.23652 long=21.25441 
12:15am lat=10.23652 long=21.25441 
12:20am lat=15.21456 long=58.21452 
12:25am lat=12.24752 long=27.24587 
12:30am lat=12.24752 long=27.24587 
12:35am lat=12.24752 long=27.24587 
... 

Ich bin nicht daran interessiert zu wissen, ob die Lage geändert, ich will nur sich alle x Minuten drucken.

+0

einfach Ihren Code in einen neuen Thread packen und alle 5 Minuten anrufen. – Barns

+0

Benötigen Sie es auch im Hintergrund, wenn die App geschlossen ist? – user3277530

+0

ja, ich brauche es im Hintergrund –

Antwort

0

Eine Lösung könnte einen Handler mit einem postDelayed enthalten. Es ist wichtig, alle Rückrufe zu entfernen!

versuchen, etwas wie folgt aus:

private boolean continueLoop = true; 
private Handler myHandler = new Handler(); 

private void startLocationManager() { 
    try{ 
     Log.d(TAG, "startLocationManager - Started"); 
     // here the delay (in this example it is effectively the interval) 
     int minutes = 5; 
     int delay = 1000 * 60 * minutes; 
     myHandler.postDelayed(mAutoLocationManager, delay); 
    } 
    catch(Exception ex){ 
     Log.e(TAG, ex.getMessage()); 
    } 
} 

private Runnable mAutoLocationManager = new Runnable() { 
    public void run() { 
     if(continueLoop){ 
      // preform the scan for the location coordinates 
      startYourLocationCoordinates(); 

      //re-trigger the call to start a new interval 
      startLocationManager(); 
     { 
    } 
}; 

// Make certain that you remove the callback when you leave the activity -- maybe in onPause() 
private void stopAutoDownloadManager(){ 
    try{ 
     myHandler.removeCallbacks(mAutoLocationManager); 
    } 
    catch(Exception ex){ 
     Log.e(TAG, ex.getMessage()); 
    } 
} 
+0

ok, danke, ich werde das versuchen –

Verwandte Themen