2012-02-14 53 views
1

我使用LocationListener和返回的位置總是有一個軸承爲0.0Location.getBearing始終0.0

還有什麼我需要做什麼?

我也注意到,4.0.3更新我很少有速度報道。現在,我只是得到位置和準確度/海拔

public void onLocationChanged(Location loc) 
    { 
     Log.d(LOG_TAG, "onLocationChanged"); 

     Position position = new Position(); 

      position.PositionGKey = UUID.randomUUID(); 
      position.GPSTime = new Date(loc.getTime()); 
      position.DeviceTime = new Date(); 
      position.Latitude = loc.getLatitude(); 
      position.Longitude = loc.getLongitude(); 
      position.Altitude = loc.getAltitude(); 
      position.Speed = loc.hasSpeed() ? loc.getSpeed() * 2.23693629 : 0; 
      position.Accuracy = (int)loc.getAccuracy(); 
      position.Bearing = loc.hasBearing() ? loc.getBearing() : 0; 

      // There was cases with speed reported 1000+. Just make it real here, round of obvious errors. 
      if (position.Speed > 120) 
      { 
       position.Speed = 0.0; 
      } 

      PositionData.InsertPosition(getApplicationContext(), position); 

    } 
+0

請發表相關的代碼,你如何得到的位置......我們中的一些人可能會做巫術,但我們絕對不是猜謎:) – m0skit0 2012-02-14 17:24:43

+0

代碼發佈。要點是4.0.3的表現不同。我幾乎沒有得到速度,只是現在我添加軸承,從來沒有看到它記錄.. – katit 2012-02-14 17:30:40

+0

是使用GPS或網絡提供商? – Jakar 2012-02-14 19:38:12

回答

0

使用GPS供應商,軸承通常不更新/恢復,除非該設備物理移動和收益速度(檢查getSpeed())。實際上,1米/秒以上的速度應能產生精確的軸承。我還發現,我不得不偶爾進行民意調查,並檢查GPS提供商的最後一個已知位置,並獲取更新的軸承以獲得正確的讀數。