2011-03-03 65 views
2

在我的應用程序中,我需要創建一個android服務來定期獲取移動用戶的當前位置(經度和緯度)。該服務應每5分鐘獲取用戶的位置。我如何在後臺運行的Android服務中執行此操作。這是正確的做法嗎?運行服務以獲取位置詳細信息

+0

@Reno:也許,這一切都取決於他的用途和他對用戶的承諾。信息既不好,也不壞。只是使用該信息即可。 – 2011-03-03 11:03:01

+0

究竟是什麼問題。這是一個長期的問題... – Farhan 2011-03-03 11:07:11

+0

在我的應用程序中,我需要創建一個android服務來定期獲取移動用戶的當前位置(經度和緯度)。該服務應每5分鐘獲取一次用戶的位置。 – avdroidDev 2011-03-03 11:25:35

回答

0

你可以寫一個私人/內部類(服務內)實現LocationListener的,並在服務的調用onStart meethod可以requestLocationUpdates將被你的聽衆聽了

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
MyLocationListener listener = new MyLocationListener(); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, minDistance, listener); 
0
LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     LocationListener mlocListener = new MyLocationListener(); 
     mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener); 
} 
public class MyLocationListener implements LocationListener 
    { 


     @Override 
     public void onLocationChanged(Location loc) 
     { 
      Log.i("**************************************", "Location changed"); 

      loc.getLatitude(); 
      loc.getLongitude(); 
      String Text = "My current location is: " +"Latitude = " + loc.getLatitude() + "Longitude = " + loc.getLongitude();    
      Toast.makeText(getApplicationContext(), Text, Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onProviderDisabled(String provider) 
     { 
      Toast.makeText(getApplicationContext(), "Gps Disabled", Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onProviderEnabled(String provider) 
     { 
      Toast.makeText(getApplicationContext(), "Gps Enabled", Toast.LENGTH_SHORT).show(); 
     } 

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

    } 
0

你不不需要服務來實現這一點。爲了每5分鐘獲取一次位置信息,在您的應用程序中,您可以實施位置偵聽程序。在設置位置管理器時,您可以指定minTime = 5mins (300000 ms)。方法將每5分鐘或當距離爲change > minDistance時被調用,該距離先發生。

LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
MyLocationListener listener = new MyLocationListener(); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 300000, minDistance, listener);