在 Android 中同时使用 GPS 和 Network Provider

Posted

技术标签:

【中文标题】在 Android 中同时使用 GPS 和 Network Provider【英文标题】:Use GPS and Network Provider at the same time in Android 【发布时间】:2011-06-03 11:46:10 【问题描述】:

我已经在我的应用中实现了一个位置监听器,它使用了网络提供者。

这一切都很好,因为我想要一个快速的位置并且使用 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 是否已获取位置信息?

谢谢,

【问题讨论】:

【参考方案1】:

您当然可以为多个提供者使用同一个侦听器。将locationmanager.getProvidersCriteria 对象一起使用可能会更好,然后按准确性排序或只听所有这些。不过实际差别不大。

onLocationChanged 回调为您提供一个 Location 对象,该对象有一个 getProvider() 方法,您可以使用它来确定它来自哪里。它还有一个getAccuracy() 方法,因此您还可以按准确度对最近的修复进行排序。

【讨论】:

【参考方案2】:

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

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

【讨论】:

将此添加为对daren回答的评论会更清楚 这真的应该是达人回答中添加的评论。

以上是关于在 Android 中同时使用 GPS 和 Network Provider的主要内容,如果未能解决你的问题,请参考以下文章

在谷歌地图android中使用gps移动标记

如何同时使用 GPS 和 NETWORK_PROVIDER,并且结果几乎没有错误

gps 使用网络提供商和 gps 提供商?

android打开网页,并保存当前位置源码

在android中使用gps安全定位

在 android 中获取更新位置和禁用 GPS 后如何获取?