2012-02-14 47 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提供商的最后一个已知位置,并获取更新的轴承以获得正确的读数。