2014-12-02 51 views
0

根據計算距離,我的應用在我的舊HTC One M7上效果很好。然而,在我妻子的HTC One M8和我的新索尼Xperia Z3上,它計算的距離是關閉的。它告訴我,我已經走得比我真正的更遠了。我在遠足或跑步時注意到了這一點。如果我滑雪,它似乎更準確。我猜測速度與它有關(如果我更快,計算更準確)。LatLng和在新手機上返回不正確值之間的距離

我打電話的方法來更新每個位置變化,這確實這是我的總距離:

float[] distanceResults = new float[3]; 
double distanceResult = 0; 
try 
{ 
    Location.distanceBetween(location.getLatitude(), location.getLongitude(), previousLocation.getLatitude(), previousLocation.getLongitude(), distanceResults); 
    distanceResult = distanceResults[0]; 
} 
catch(IllegalArgumentException e) 
{ 
    distanceResult = 0; 
} 
// add the new distance to the total distance 
totalDistanceValue += distanceResult; 

我不能換我周圍爲什麼它不準確計算上較新的手機頭。我想到的只是計算每20個位置變化的距離,但這似乎是一個貧民窟修復這個......甚至可能不工作。

任何人有什麼想法,爲什麼我的總距離超過它應該在較新的手機上,當我以較慢的速度進行時?

TIA

回答

0

當您需要準確性時,您必須使用位置的準確性。可能你已經看到谷歌地圖上的圈子變得更小,因爲它在你的位置零。該圓圈基於位置的準確性。

@Override 
public void onLocationChanged(Location location) { 
     if (!location.hasAccuracy()) { 
      return; 
     } 
     if (location.getAccuracy() > 4) { 
      return; 
     } 

//process location accurate to 4 meters 
} 
相關問題