如果我从上一个位置移动 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;
}
}
};