Удаление Mock GPS Provider не восстанавливает Real GPS

Я пишу программу, которая, среди прочего, использует данные GPS из вторичного источника. Я реализовал это с помощью API-интерфейса Mock Location:

LocationManager locationManager = ...

locationManager.addTestProvider(LocationManager.GPS_PROVIDER, false, false, false, false, false, true, true, Criteria.POWER_LOW, Criteria.ACCURACY_FINE);

locationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true);
locationManager.setTestProviderStatus(LocationManager.GPS_PROVIDER, LocationProvider.AVAILABLE, null, System.currentTimeMillis());

Location location = ...
location.setLatitude(...);
location.setLongitude(...);
... // etc.
locationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, location);

Хорошая новость: это прекрасно работает! Были вечеринки, конфетти и оркестр. Плохая новость: если я решу, что хочу снова использовать основной источник GPS, удаление этого макета, похоже, не сработает; вместо этого я никогда не получаю новых обновлений GPS. Это как если бы основной источник GPS был отключен путем добавления макета, а удаление макета никогда не включало его снова.

locationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, false);
locationManager.clearTestProviderEnabled(LocationManager.GPS_PROVIDER);
locationManager.clearTestProviderLocation(LocationManager.GPS_PROVIDER);
locationManager.removeTestProvider(LocationManager.GPS_PROVIDER);

Есть ли еще один шаг, который необходимо выполнить для восстановления основного источника GPS?


person Kaz Dragon    schedule 21.02.2014    source источник


Ответы (1)


Проблема оказалась в неправильном поведении стороннего компонента. Я хотел бы опубликовать код, говорящий, что изменилось, но я лично буквально ничего не менял, поэтому реальная проблема не была связана с Android API.

person Kaz Dragon    schedule 25.02.2014