在Android中同时使用GPS和网络提供商

时间:2011-01-04 15:49:04

标签: android geolocation gps location

我在我的应用中实现了一个使用网络提供商的locationlistener。

这一切都运行正常,因为我想快速找到一个位置,而使用GPS提供商需要很长时间。

但我已经在我的应用程序中找到了一个位置必须准确(最多5-10米)的点。

我想知道是否可以同时将GPS提供商与网络提供商一起使用,然后获得两者的最佳结果? 当GPS提供商向我提供GPS位置时,是否也可以通知我?

基本上是这样的:

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);

这是否可以使用相同的重写onLocationChanged()?

我怎样才能看到GPS是否有位置?

谢谢,

2 个答案:

答案 0 :(得分:27)

您当然可以为多个提供程序使用相同的侦听器。最好将locationmanager.getProvidersCriteria对象一起使用,然后按准确度排序,或者只听取所有这些对象。虽然没有太多实际的区别。

onLocationChanged回调为您提供了一个Location对象,该对象具有getProvider()方法,可用于确定其来源。它还有一个getAccuracy()方法,因此您还可以按照准确度对最近的修补程序进行排序。

答案 1 :(得分:2)

理想情况下,如果您不关心电池使用情况,那么使用两个提供商都可以。正如Daren解释的那样,您可以使用getProvider()和getAccuracy()来过滤坐标。

http://blog.shinetech.com/2011/10/14/a-good-look-at-android-location-data/