在网络与 gps 提供商之间连接
Posted
技术标签:
【中文标题】在网络与 gps 提供商之间连接【英文标题】:Connecting between the network to the gps provider 【发布时间】:2013-01-16 20:51:36 【问题描述】:如果我从上一个位置移动 200 米,我创建了一个应用程序,它每 10 分钟生成一个位置。 它基于网络和 gps 提供商。
我的问题是,如果我长时间在同一个地方,就会发生错误。 让我们假设 gps 提供商生成了一个精度为 600 的位置,而网络提供商生成了一个精度为 800 的位置。 我的应用程序将选择 gps 提供商,下一次 gps 生成位置的时间是我通过 200 个无线电但看起来网络位置不断生成位置,其中一些可能更准确,然后我的位置发生了变化而我在同一个地方。
这是一个问题,因为在同一个地方呆了几个小时会为我生成位置音调而不是 1(这是我正在寻找的)。
我没有附上代码,因为我猜这是更理论的问题。
编辑代码附件
更新请求:
mLocationManager.requestLocationUpdates(provider, TEN_SECONDS*6*10, TEN_METERS*20, listener);
在位置之间进行选择:
if(gpsLocation == null || gpsLocation.getAccuracy() > 1000)
if(!(networkLocation == null || networkLocation.getAccuracy() > 1000))
location = networkLocation;
else
if(networkLocation == null)
if(gpsLocation.getAccuracy() < 1000)
location = gpsLocation;
else
if(gpsLocation.getAccuracy() < networkLocation.getAccuracy() && gpsLocation.getAccuracy() < 500)
location = gpsLocation;
else
if(networkLocation.getAccuracy() < 1000)
location = networkLocation;
if(location!=null)
Message.obtain(mHandler,
UPDATE_LATLNG,
location.getLatitude() + ", " + location.getLongitude()).sendToTarget();
if (mGeocoderAvailable)
doReverseGeocoding(location);
这里是处理程序:
mHandler = new Handler()
public void handleMessage(Message msg)
if(msg.what == UPDATE_ADDRESS)
LocationService.this.address = (String) msg.obj;
new SendLocation(LocationService.this.id,(String)msg.obj); //sends location to the db
LocationService.this.gpsLocation = null;
LocationService.this.networkLocation = null;
;
【问题讨论】:
【参考方案1】:如果您通过 GPS 提供商获取位置,它会更准确,因此,如果下次您通过网络提供商获取位置并且相差超过 500 米,则将其存储为值,如果位置更小比这个值是由网络提供商给出的跳过它。如果位置由 GPS 提供,则将其存储为当前位置。
【讨论】:
以上是关于在网络与 gps 提供商之间连接的主要内容,如果未能解决你的问题,请参考以下文章
网络连接已关闭,但位置提供者是 NetworkProvider