使用GPS,定位精度仍然很低

时间:2014-11-08 11:21:37

标签: android gps location

我在主要活动中有以下代码:

LocationManager mlocMan = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);                    

if (mlocMan.isProviderEnabled(LocationManager.GPS_PROVIDER)) {                      
   LocationListener mlocListener = new LocationManagerHelper(...);
   mlocMan.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,mlocListener);
}           

在位置监听器中,我有:(将准确度初始化为-1)

if (theAccuracy == -1 || theAccuracy > loc.getAccuracy()) {
   theAccuracy = Math.round(loc.getAccuracy());
   latitude = loc.getLatitude();
   longitude = loc.getLongitude();        
}
updateTimes++;
if (updateTimes == 3) {
   mLocMan.removeUpdates(this);
   updateTimes = 0;
   //get address for location
   theAccuracy = -1;
}   

意思是,在通过GPS进行3次位置更新后,请获取最准确的位置并获取其地址。在模拟器上,我得到20m的固定精度(我使用DDMS发送长/ lat),但这不是现实生活所以我尝试使用我的设备,而第一次(3个请求)给了我确切的地址(开准确度为40米的地方,接下来有时更准确,但地址就在附近。我得到的最好的准确度是29m(发生过一次)大多数时间它超过30岁。这是我的GPS(LG G3)的问题还是有任何其他想法可以使事情在3-4之后变得更准确-5请求?

1 个答案:

答案 0 :(得分:0)

有几个原因:

  1. 您的模拟器没有实际的gps硬件,所以它可能正在使用您的IP地址,所以这就是为什么它似乎已修复。

  2. 手机上的GPS硬件需要预热一点。设置轮询的频率一段时间(1更新一秒或半秒),让它运行几秒钟,然后进行计数测量。

  3. 位置管理器支持硬件和网络查找(wifi / celltowers)。不确定如何将提供商设置为手机的硬件,但如果您使用googlePlayServices gps客户端(LocationClient),则非常简单:

    mLocationRequest = LocationRequest.create();   mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);   mLocationClient.requestLocationUpdates(mLocationRequest,(LocationListener)this);

  4. 您可能正在门口的电脑上进行测试。建筑物肯定会影响GPS的准确性。