Android LocationManager доставляет одно и то же местоположение несколько раз (Nexus 5)

Когда я использую LocationManager на своем телефоне, почти для всех тестовых устройств Nexus 5 LocationManager определяет одно и то же местоположение пару раз в минуту (я прослушиваю местоположение каждые 60 секунд). Чтобы быть ясным код, который я на самом деле использую:

    mLocationManager.requestLocationUpdates(60*1000,
            0,
            criteria),
            mLocationUpdateListener, Looper.getMainLooper());

критерии задаются с сервера и определяют только желаемую точность (Criteria.ACCURACY_COARSE или Criteria.ACCURACY_FINE).

Так что для других моих тестовых устройств (Nexus 4 и Samsung S3) у меня нет проблем с менеджером местоположения. Он всегда предоставляет новую позицию каждые 60 секунд. Но устройства Nexus 5, кажется, кэшируют позицию в какой-то момент, так что я отправляю одно и то же местоположение 5 раз на сервер, хотя я уже нахожусь в нескольких 100 метрах от этого местоположения.

Кто-нибудь знает, в чем может быть проблема? Если вам интересно, я мог бы также добавить код для mLocationUpdateListener, но он просто отправляет местоположение на сервер.

Изменить: местоположение всегда получается в фоновом режиме. Я мог решить эту проблему, открыв Карты Google на переднем плане. Но, конечно, это не может быть решением моей проблемы.

Изменить решение. Похоже, сервисы Play каким-то образом не работали на всех 6 тестовых устройствах Nexus 5. После перезагрузки всех устройств я больше не мог воспроизводить это странное поведение...

Редактировать 2: и снова я натыкаюсь на это поведение, и оно продолжает появляться, даже если я перезагружаю телефоны...


person Stefan Medack    schedule 28.05.2014    source источник


Ответы (1)


Попробуй это

mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationUpdateListener);

person Ramki Anba    schedule 28.05.2014
comment
Привет, Рамки, спасибо за ответ. Я знаю, что мог бы использовать GPS_PROVIDER или NETWORK_PROVIDER напрямую, но я выбрал этот подход, потому что хочу использовать поставщика Fusion от Google. Какой провайдер передает местоположение, практически не важно, но в помещении GPS не может получить фиксацию, а на открытом воздухе сеть иногда просто не работает. Вот почему я выбрал провайдера Fusion. - person Stefan Medack; 28.05.2014
comment
В Nexus 5 включите службу определения местоположения. В противном случае вы получите только последнее известное местоположение. - person Ramki Anba; 28.05.2014
comment
Вы имеете в виду в настройках? Это включено на высокой точности (так же, как на моем Nexus 4, у которого нет этой конкретной ошибки) - person Stefan Medack; 28.05.2014
comment
Да, попробуйте перезагрузить устройство и проверьте еще раз - person Ramki Anba; 28.05.2014
comment
Я не совсем уверен, можно ли исправить ошибку, перезапустив мои 6 телефонов Nexus 5, у всех одна и та же ошибка... - person Stefan Medack; 28.05.2014
comment
Просто попробуйте. Если у службы определения местоположения есть проблема, она будет решена. - person Ramki Anba; 28.05.2014
comment
Похоже, перезагрузка сделала свое дело. Большое спасибо - person Stefan Medack; 28.05.2014