Я использую объединенный провайдер определения местоположения с момента его выпуска, и я им очень доволен (намного лучше, чем старая система). Но я столкнулся со своеобразной проблемой при использовании геозоны в сочетании с LocationClient.lastKnownLocation(). Настройка выглядит следующим образом:
Я сбрасываю несколько геозон вокруг какой-то домашней локации (с увеличением радиуса действия). Когда я получаю намерение пересечь забор, я получаю последнее известное местоположение из LocationClient и работаю с ним. Кроме того, я также зарегистрировался для регулярных обновлений местоположения с режимом обновления PRIORITY_BALANCED_POWER_ACCURACY.
В большинстве случаев это работает отлично, но иногда случается следующее:
Время 000 с - (широта, долгота, точность) = (48,127316,11,5855167,683,0)
Время 120 с - (широта, долгота, точность) = (48,1260497,11,5731745,31,823)
Время 300 с - (широта, долгота, точность) = (48,1217455,11,5641666,143,81)
Время 420 с - (широта, долгота, точность) = (48,1189942,11,559061,36,0)
Время 600 с - (широта, долгота, точность) = (48,127316,11,5855167,683,0)
Обратите внимание, что все эти местоположения извлекаются с помощью получитьПоследнееИзвестноеМестоположение(). Что здесь кажется подозрительным, так это то, что первое и последнее местоположение идентичны (даже в других атрибутах), если быть более точным:
* intent at time 0: *
component: ComponentInfo{package.Class}
key [location]: Location[mProvider=fused,mTime=1373524391934,mLatitude=48.127316,mLongitude=11.5855167,mHasAltitude=false,mAltitude=0.0,mHasSpeed=false,mSpeed=0.0,mHasBearing=false,mBearing=0.0,mHasAccuracy=true,mAccuracy=683.0,mExtras=Bundle[mParcelledData.dataSize=352]]
* intent at time 600: *
component: ComponentInfo{package.Class}
key [location]: Location[mProvider=fused,mTime=1373524994871,mLatitude=48.127316,mLongitude=11.5855167,mHasAltitude=false,mAltitude=0.0,mHasSpeed=false,mSpeed=0.0,mHasBearing=false,mBearing=0.0,mHasAccuracy=true,mAccuracy=683.0,mExtras=Bundle[mParcelledData.dataSize=352]]
* note the ~600 s difference in the timestamp *
Я не понимаю, как это могло произойти, так как между ними были места, которые были более поздними и более точными. Кроме того, новая метка времени в старом местоположении вызывает у меня любопытство... по-видимому, подобные вещи происходили при использовании старого API, но это новое местоположение провайдер просто называется fused
, поэтому я не могу отличить GPS от WPS от датчиков.. , Если это проблема переключения вышек сотовой связи (изложенная в связанном вопросе о старом API), то зачем телефону подключаться к «дальней» вышке, если он видел более близкие вышки?
Почему это происходит?