最後の場所から 200 メートル移動した場合に 10 分ごとに場所を生成するアプリケーションを作成しました。これは、ネットワークと GPS プロバイダーに基づいています。
私の問題は、同じ場所に長時間いると何か問題が発生することです。GPS プロバイダーが 600 の精度で位置を生成し、ネットワーク プロバイダーが 800 の精度で位置を生成するとします。私のアプリは gps プロバイダーを選択し、gps が次に位置を生成するのは、200 個の無線を通過したときですが、ネットワークの位置が位置を生成し続けているように見え、それらのいくつかはより正確である可能性があり、その後位置が変更されます同じ場所にいるのに。
同じ場所に何時間も滞在すると、1 ではなく場所のトーンが生成されるため、これは問題です (これが私が探しているものです)。
私が推測するより理論的な質問であるため、コードを添付しませんでした。
EDITコード添付
更新リクエスト:
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;
}
}
};