我在我的应用中实现了一个使用网络提供商的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是否有位置?
谢谢,
答案 0 :(得分:27)
您当然可以为多个提供程序使用相同的侦听器。最好将locationmanager.getProviders
与Criteria
对象一起使用,然后按准确度排序,或者只听取所有这些对象。虽然没有太多实际的区别。
onLocationChanged
回调为您提供了一个Location对象,该对象具有getProvider()
方法,可用于确定其来源。它还有一个getAccuracy()
方法,因此您还可以按照准确度对最近的修补程序进行排序。
答案 1 :(得分:2)
理想情况下,如果您不关心电池使用情况,那么使用两个提供商都可以。正如Daren解释的那样,您可以使用getProvider()和getAccuracy()来过滤坐标。
http://blog.shinetech.com/2011/10/14/a-good-look-at-android-location-data/