【问题标题】:Location accuracy remains low using GPS使用 GPS 定位精度仍然很低
【发布时间】:2014-11-08 11:21:37
【问题描述】:

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

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);
}           

在位置监听器中我有这个:(theAccuracy 被初始化为 -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 发送 long/lat),但这不是现实生活,所以我尝试使用我的设备,而第一次(3 个请求)给了我确切的地址(当场) 40m 精度,下一个有时更准确,但地址就在附近。我得到的最佳精度是 29m(发生一次),大部分时间都在 30 以上。这是我的 GPS(LG G3)的问题,还是有任何其他想法可以在 3-4-5 请求后使事情更准确?

【问题讨论】:

    标签: android gps location


    【解决方案1】:

    几个原因:

    1. 你的模拟器没有真正的 gps 硬件,所以它可能使用你的 IP 地址,所以它看起来是固定的。

    2. 手机上的 GPS 硬件需要预热一下。将轮询频率设置为一点(每秒更新一次,或半秒),并让它运行几秒钟,然后再进行计数测量。

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

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

    4. 您可能正在门口的计算机上进行测试。建筑物肯定会影响 GPS 精度。

    【讨论】:

    • 1.模拟器当然不是现实生活 2. 所以在 minTime 参数中你建议我应该放 1 而不是 0?当您说热身时,您的意思是从我打开 GPS 或从我的第一个请求开始? 3. 谷歌播放服务与常规请求一样不准确,但重量更大,没有明显的好处。我不需要不断的位置请求,所以这不符合我的需求。 4. 我站在我家的窗户附近,讽刺的是,第一次尝试给了我完美的结果,接下来的……嗯……不太完美。
    • 1.预热我的意思是垃圾邮件一些gps请求,自第一个请求以来的时间不是基准。 2. 我不能告诉你靠近窗户是好是坏。 GPS被计算为两颗卫星之间的增量,如果一颗卫星有一条清晰的线穿过你的窗户,另一颗穿过墙壁,这可能比两颗卫星都穿过墙壁更糟糕。 3. 使用谷歌客户端,重复请求有非常明显的收敛性。不知道是热身还是内部收敛算法。
    • 我会尝试在户外检查一下。同时,您是否建议我提出超过 3 个请求?你建议我设置什么 minTime?
    • 在我的应用程序中,在 S5 上,我有一个地理标记功能,从冷(gps 关闭)开始,每 0.5 秒左右进行一次最大收敛轮询最多需要 10 秒。我在室外最大收敛时获得了大约 2m 的精度,但在第一秒或两秒内,精度与 96m 一样糟糕(室内,在计算机上)。大约 4-5 秒后,它几乎总是在 10m 以下。
    猜你喜欢
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2012-10-20
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多