在 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.getProviders
与Criteria
对象一起使用可能会更好,然后按准确性排序或只听所有这些。不过实际差别不大。
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的主要内容,如果未能解决你的问题,请参考以下文章