Android中GPS_PROVIDER或NETWORK_PROVIDER的位置不一致

时间:2016-03-02 11:28:21

标签: java android google-maps gps geolocation

我想做什么

  • 使用Service以指定的时间间隔获取用户位置,以便只要应用程序正在运行Location就可以检索

我正面临的问题

  • 即使我长时间在同一地点,每次LatitudeLongitude更改为Accuracy级别
  • 由于这个原因,即使用户没有更改其位置,如果我正在Location中绘制GoogleMap,它会使我的缩放级别18.0f < / LI>
  • mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentLatLon, 18.0f));

我尝试过stackoverflow Link Onestackoverflow Link Two中提到的方法
但即使我坐在同一个位置并定期检索位置,Lat和Lon也不同像这样,在每个纬度的末尾看到突出显示的值

纬度:12.8379 283 长:经度:77.6647 266

纬度:12.8379 233 长:经度:77.6647 368

纬度:12.8379 285 长:经度:77.6647 506

纬度:12.8379 245 长:经度:77.6647 546

但仍然每次Accuracy不同而且Lat Lon略有变化。

由于我的代码试验与链接中提到的完全相同,我不仅仅是复制粘贴。如何解决

2 个答案:

答案 0 :(得分:4)

GPS的准确性并不是绝对的,因此即使是静态设备也会在连续读数中显示不同的位置。请尝试以下方法:

  1. 您可以通过读取加速度计来添加检测移动设备是否静止的方法 - 如果两个读数之间的差值大于某个阈值 - 设备正在移动。如果它太小 - 它不会移动。要确定增量 - 将设备放在桌子上并查看您获得的值。
  2. 忽略关闭读数 - 以良好的准确度读取第一个读数(<20m或您确定的其他值)并将其用作参考 - 如果下一个读数给出非常小的距离,接近参考(<10m或以下)其他价值),忽略它。如果它更大 - 将其设置为新参考。

答案 1 :(得分:0)

尝试设置Accuracy_HIGH并设置时间限制和距离限制 尝试使用谷歌地方融合api进行与位置相关的工作。 请参阅此处: - http://coderzpassion.com/android-location-using-google-play-services/