我想实现一个locationListener,它将根据可用性在网络和GPS提供商之间切换.
例如,如果GPS未启用,我希望它使用网络,但一旦GPS打开,我希望它停止监听来自网络的位置更新,并开始从GPS听.
同样地,一旦GPS被关闭,我希望它从网络开始监听更新.
那可能吗?
Subquestion
GPS是否与网络一样快提供位置修复?
解决方法
当然,您只需要获取网络和GPS的提供商,并传递您要定位到的位置.Manager.requestLocationUpdates().
当您想停止监听某个提供程序时,请使用locationManager.requestLocationUpdates()中指定的侦听器对象调用locationManager.removeUpdates().
网络:
Criteria crit = new Criteria(); crit.setPowerRequirement(Criteria.POWER_LOW); crit.setAccuracy(Criteria.ACCURACY_COARSE); String provider = locationManager.getBestProvider(crit,false);
全球定位系统:
Criteria crit2 = new Criteria(); crit2.setAccuracy(Criteria.ACCURACY_FINE); provider2 = locationManager.getBestProvider(crit2,false);
您可以使用LocationManager.isProviderEnabled() doc查看是否启用/禁用适当的提供程序. LocationManager文档中有更多的信息可用.
GPS通常比网络慢得多,因为你必须找到3个遥远的卫星等.