2013-07-09 115 views
1

我有我的主要活動驗證碼,它會顯示在textviews位置數據:計算行駛距離-Android

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_live); 
    startactivity(); 
    } 

startctivity功能:

private void startactivity() 
{ 

      GPSTracker gps = new GPSTracker(Live.this); 

      if(gps.canGetLocation()) 
      { 
       double latitude = gps.getLatitude(); 
       double longitude = gps.getLongitude(); 

       Toast.makeText(getApplicationContext(), "Your Location is: \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show(); 
      } 
      else 
      { 
       gps.showSettingsAlert(); 
      } 

} 

我創建了一個單獨的類GPSTracker。用於查找位置的java。

canGetLocation()是一個函數,用於檢查是否有可用的提供者。 getLatitude()查找緯度,getLongitude()查找經度。

這些函數的工作,我得到的'緯度'和'經度'變量的值。

現在GPSTracker類中的onLocationChanged(位置位置)爲空。

我想計算通過這種方法移動的距離: What is the best way to calculate distance travelled over a period of time?

但我由OLD_LOCATION和NEW_LOCATION變量是如何使用的困惑。 這是如何工作的,以及如何使用當前的函數/類來實現該功能?

回答

0

您可以將您的整個檢查放在onLocationChanged()之內,然後您可以檢查閾值,因爲即使靜置一段時間您也會漂流。也許只有當距離前一個位置的距離大於100米時才增加行駛距離。

然後設置一個監聽器,並通過監聽器將onLocationChanged()更新到您的活動。這可以用來更新一些簡單的東西,比如屏幕頂部的顯示行程距離的文本視圖。

不確定是否有從經緯度到度量標準的內置轉換,如果是的話,您可以使用它。否則,您可能需要查看可以在GPS座標與行駛距離之間進行轉換的快速公式。

1

要獲得行駛距離,您只需對old_location和new_location之間的距離進行求和。 F.E. new_location是您實際從onLocationChanged收到的位置。如果收到新的位置,它就成爲old_location,等等。你可以使用Location.distanceBetween()方法來獲得這兩點之間的距離。

請記住,GPS信號具有準確度的變化。

編輯:

因爲這個話題是非常廣泛試試這個: 這裏有一個很好的Tutorial與位置API取得聯繫。如果你想更深入地嘗試Google Samples

+0

是的,我理解的概念,但我無法通過編碼部分。 我必須在哪裏聲明和初始化這些位置。哪個方法返回新的位置?我必須對舊事做些什麼?在onLocationChanged()或startactivity()中。如果onLocationChanged在不同的類中,onLocationChanged仍然可以工作嗎?因爲我們不必調用它。 –