2013-02-01 50 views
-2

我正在使用this link进行定位服务,它的工作原理如何在每5分钟后获取位置?

现在我想创建一个BackgroundService,它调用每5分钟后获取一个位置的函数。 我想我需要使用Timer来做到这一点,请告诉我如何管理这个位置类之间的5分钟间隙。

+1

使用大写锁定只是让你的问题变得更糟。 – Eli

+0

嘿家伙我是新来的请回答我..........如果可行 –

+0

这种问题是不欢迎在Stackoverflow。请阅读常见问题如何问一个好问题 – Eli

回答

0

使用:

Timer timer = new Timer(); 
       timer.schedule(new TimerTask() { 
        public void run() { 
//your code to get lat long 

        } 
       }, 0, 500000); 
+0

先生,谢谢你这个宝贵的答复....这个创建一个继续调用 –

+0

定时器计时器=新的计时器(); timer.schedule(新的TimerTask(){ 公共无效的run(){// 你的代码来获得纬度长 \t \t的LocationManager =(的LocationManager)getSystemService(Context.LOCATION_SERVICE); \t \t \t \t LocationListener的新= GPSLocationListenere(); \t \t \t \t locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000 * 120,5,LocationListener的); } },0,500000); } –

1
public class LocationService extends Service {  
    private Timer timer; 
    private long UPDATE_INTERVAL ; 
    public static final String Stub = null; 
    LocationManager mlocmag; 
    LocationListener mlocList ; 
    private double lat,longn; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     webService = new WebService(); 
     mlocmag = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     mlocList = new MyLocationList(); 

     Location loc = mlocmag.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
     if (loc == null) { 
      loc = mlocmag.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
     } 
     timer = new Timer();  // location. 
     UpdateWithNewLocation(loc); // This method is used to get updated 
     mlocmag.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,mlocList); 
    } 

    @Override 
    public IBinder onBind(Intent arg0) { 
     return null; 
    } 



    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     if (timer != null) { 
      timer.cancel(); 
     } 
     mlocmag.removeUpdates(mlocList); 
    } 

    @Override 
    public boolean stopService(Intent name) { 
     return super.stopService(name); 
    } 

    private void UpdateWithNewLocation(final Location loc) { 
     final SharedPreferences prefs = getSharedPreferences(Const.COMMON_SHARED, Context.MODE_PRIVATE); 
     userId = prefs.getString(Const.COMMON_USERID, null); 
     gps = prefs.getInt(Const.COMMON_GPS, 0); 

     UPDATE_INTERVAL = 500000; 

     timer.scheduleAtFixedRate(new TimerTask() { 
      @Override 
      public void run() { 
     if (loc != null) { 
      final double latitude = loc.getLatitude(); // Updated lat 
      final double longitude = loc.getLongitude(); // Updated long 

      String response = null ; 
       if (lat != latitude || longn != longitude) { 

        response = webService.updateLatandLong(userId, latitude, longitude); 
        lat = latitude; 
        longn = longitude; 

       } 
     } 

     else { 
      String latLongStr = "No lat and longitude found"; 
     } 

    } 
     }, 0, UPDATE_INTERVAL); 
    } 


    public class MyLocationList implements LocationListener { 

     public void onLocationChanged(Location arg0) { 
      UpdateWithNewLocation(arg0); 
     } 

     public void onProviderDisabled(String provider) { 
      Toast.makeText(getApplicationContext(), "GPS Disable ", 
        Toast.LENGTH_LONG).show(); 
     } 

     public void onProviderEnabled(String provider) { 
      Toast.makeText(getApplicationContext(), "GPS enabled", 
        Toast.LENGTH_LONG).show(); 
     } 

     public void onStatusChanged(String provider, int status, Bundle extras) { 

     } 

    } 
}