2016-10-10 49 views
-3

我嘗試了很多代碼,其中沒有一個能夠工作。我試過這個:如何在Android應用程序中獲得速度

//This is in another void 
Location location = new Location(LocationManager.GPS_PROVIDER); 
        location.setSpeed(0); 
        Greitis(location); 

//This is in CountDownTimer which has onTick every 1 second 
public void Greitis(Location location) { 
     if (location.hasSpeed()) { 
      speed.setText(location.getSpeed() * 3.6 + " Km/h"); 
     } 
    } 

任何人都可以說爲什麼它不工作或寫我如何正確獲得速度。

+0

有很多輝煌的解決方案都在那裏第一次發佈之前做一些研究(至少搜索)。 –

回答

0

getSpeed()只返回使用setSpeed(int)設置的值(在您的情況下始終爲0)。

如果你想獲得更多或更少的精確的速度,有2種方式:

  1. 使用加速度計
  2. 計算速度自己

如果你不想使用GPS(通常是個好主意),你應該選擇選項1.但是數字2不是很複雜。只需存儲兩個GPS點,延遲時間爲T。比你的速度(根據speed = distance/time

speed = sqrt((point2.x - point1.x)^2 + (point2.y - point1.y)^2)/T 

因爲distancepoint1point2之間的距離

+0

這個公式是二維的,GPS座標是角度([wiki](https://en.wikipedia.org/wiki/Geographic_coordinate_system)),兩個地理點之間的距離是世界表面上的距離(球面距離)([wiki](https://en.wikipedia.org/wiki/Haversine_formula)和[link1](https://www.math.ksu.edu/~dbski/writing s/haversine.pdf)或[link2](http://www.movable-type.co.uk/scripts/latlong.html))。 –

相關問題