如何提高Android中的GPS定位精度

时间:2010-08-05 07:00:26

标签: android gps

您正在开发使用GPS位置的应用。我的测试设备是Nexus One和Htc Mytouch 3g Slide。

那么有谁知道如何提高GPS定位精度?

3 个答案:

答案 0 :(得分:4)

请参阅此帖子:Google Maps & apps with mapview have different current positions

您是在谈论自己的应用程序或Google地图应用程序中的MapView吗? 在您自己的地图中,使用网络提供商和gps提供商来获取位置。 Gps只能在自由天空下在室外工作,并且更准确,而网络提供商也可以在室内工作但不太准确。

另请阅读:http://forum.sdx-developers.com/android-2-1-development/cdma-lockup-wifi-use-wireless-networks-and-gps!/msg22834/#msg22834

答案 1 :(得分:4)

从API 9开始,您可以为 setAccuracy 方法使用一些常量

lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_HIGH);  
lm.getBestProvider(criteria, true);

ACCURACY_HIGH 小于100米
ACCURACY_MEDIUM 介于100 - 500米之间 ACCURACY_LOW 大于500米

这里是details

答案 2 :(得分:4)

虽然自从API 9确实在准确度设置方面存在一些新的可能性,但@dev mz所说的将不起作用。您不能直接在criteria.setAccuracy中使用新常量。相反,您可以使用这些新功能:

        //All your normal criteria setup
        Criteria criteria = new Criteria();
        //Use FINE or COARSE (or NO_REQUIREMENT) here
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setPowerRequirement(Criteria.POWER_LOW);
        criteria.setAltitudeRequired(true);
        criteria.setSpeedRequired(true);
        criteria.setCostAllowed(true);
        criteria.setBearingRequired(true);

        //API level 9 and up
        criteria.setHorizontalAccuracy(Criteria.ACCURACY_HIGH);
        criteria.setVerticalAccuracy(Criteria.ACCURACY_HIGH);
        criteria.setBearingAccuracy(Criteria.ACCURACY_LOW);
        criteria.setSpeedAccuracy(Criteria.ACCURACY_HIGH);

至于您的问题,请注意我们正在讨论传入位置更新的标准。这实际上不会改善GPS数据的质量,因为这是设备/硬件/网络特定的。它就像过滤地理定位的过滤器一样。