Я пишу программу, которая, среди прочего, использует данные 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?