簡體   English   中英

如何每10秒更新一次GPS位置?

[英]How to update the GPS location for every 10 secs?

我有這些變量,並在onResume方法中進行以下調用:

  private Location userLocation;
  private GeoPoint point;
  private LocationManager manager;
  private LocationListener listener = new LocationListenerC();

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 25, locationListener); 

但是當我在Android模擬器中運行此應用程序時,用戶的位置不會每10秒更新一次。 有人可以幫忙嗎?

參數mindTime並不意味着您將 minTime毫秒接收更新。 這意味着您不會經常收到小於minTime毫秒的更新,但是沒有指定何時獲取它們。 如果LocationManager沒有新的位置每10秒給你一次,它根本就不會給出。 只有在有新位置時,您才會收到更新。

你也在使用minDistance 25表示除非設備移動了至少25米,否則您將不會收到新的更新。 模擬器不移動,因此將此參數設置為0 (這意味着更新不取決於用戶是否移動)。

更新率很大程度上取決於用戶位置。 例如,如果用戶在建築物內,則GPS /網絡提供商可能需要一段時間才能從衛星/基站接收更新。 所以你可能會在更長的時間間隔內獲得更新。 但是,如果用戶在室外且設備信號良好,則更新可能會變得非常頻繁(但每10秒鍾只能獲得1次)

如果您希望每10秒獲取一個位置,則可以每10秒調用一次getLastKnownLocation 如果沒有來自提供商的更新,則位置可能相同。

我認為,條件必須是,時間是10(最小)秒,距離是25(最小)米。

參考:
http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates%28java.lang.String,%20long,%20float,%20android.location.LocationListener%29

minDistance參數還可用於控制位置更新的頻率。 如果它大於0,那么位置提供程序將僅在位置至少改變minDistance米時向您的應用程序發送更新,並且至少已經過了minTime毫秒。 但是,位置提供商使用minDistance參數更難以節省功耗,因此minTime應該是節省電池壽命的主要工具。

執行以下操作,如下所示

   private Location userLocation;
   private GeoPoint point;
   private LocationManager manager;
   private LocationListener listener = new LocationListenerC();

    //Change **locationManager** to **manager** 
    // and **locationListener** to **listener**  in the follwing line
   manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 25, listener); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM