情况是这样的。我需要优先从卫星上获取GPS。然而,如果在室内,将不会有新的地点收到。我所做的是,如果在2分钟后没有收到新的位置,那么我将切换到网络GPS。然而,如果用户出去,应用程序不会知道,因为它已经从网络GPS监听,它将不再从卫星接收位置。
所以,如果我能听到新的位置更新,天气是从卫星还是从网络,那就更好了。不过如果我能把卫星上的优先排序的话就更好了。
我发现这个问题和选择的答案真的很有帮助:安卓LocationListener从全球定位系统到网络的转换
但有一点让我很困惑。他说:您为两个提供商设置了相同的LocationListener。要从接收位置识别,您需要像这样测试它:
public void onLocationChanged(Location fix) {
if(fix.getProvider().equals(LocationManager.GPS_PROVIDER)){
//here Gps
} else if(fix.getProvider().equals(LocationManager.NETWORK_PROVIDER)){
//here Network
}
}
因此,如果是这样的话,如何禁用仅从网络提供商接收更新?因为如果我使用一个同时监听gps和网络的侦听器,那么当我执行removeUpdates(thatListener)
时,该侦听器将不再接收任何(卫星或网络) gps更新。
但是如果他说我要做两个完全相同的监听器(除了一个是卫星的,一个是网络的),那么我就不需要检查是哪个提供者给出了这个位置,因为每个侦听器都有自己的onLocationChanged
方法。我错过了什么吗?我没有足够的声誉,所以我不能直接评论他的回答
此外,卫星GPS通常需要多长时间才能接收到位置更新?
(非常感谢!)
发布于 2014-09-17 13:49:39
我想新的融合定位提供商是为了满足您的需求而设计的。让谷歌为你做这件事,并且总是带上最好的供应商。你需要安装Google服务,但这基本上没问题。安装Locationservice已经变得更加容易了。关于一个很好的例子,请参见这里。
https://stackoverflow.com/questions/25891976
复制相似问题