Как новичок в кодировании, это мой первый ТАК вопрос, поэтому прошу прощения, если он немного груб по краям, а код менее чем эпичен.
Я издеваюсь над местоположениями в Android и могу успешно издеваться над GPS_PROVIDER. Однако, когда мое насмешливое приложение не запущено, местоположение не возвращается к фактическому положению пользователя. Есть ли способ перестать издеваться над местоположением, чтобы реальная позиция GPS возвращалась и обновлялась как обычно?
Код, который я использую для имитации местоположений (извлечение из активности):
try
{
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 50, 0, lis);
lm.addTestProvider(LocationManager.GPS_PROVIDER, false, false, false, false, true, true, true, Criteria.POWER_LOW, Criteria.ACCURACY_FINE);
loc = new Location(LocationManager.GPS_PROVIDER);
loc.setLatitude(51.5219145);
loc.setLongitude(-0.1285495);
loc.setTime(System.currentTimeMillis());
loc.setAccuracy(10);
loc.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
loc.setTime(System.currentTimeMillis());
loc.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
lm.setTestProviderLocation(LocationManager.GPS_PROVIDER, loc);
}
}, 0, 2000);
}catch(SecurityException e){
e.printStackTrace();
}
Я попытался удалить фиктивного поставщика местоположения с помощью:
lm.setTestProviderEnabled(LocationManager.GPS_PROVIDER, false);
lm.clearTestProviderLocation(LocationManager.GPS_PROVIDER);
if (lm.getProvider(LocationManager.GPS_PROVIDER) != null){
Log.i("REMOVE", "test provider");
lm.removeTestProvider(LocationManager.GPS_PROVIDER);
}
Вышеприведенное работает, но, похоже, ничего не делает. Я подозреваю, что я заменил поставщика местоположения по умолчанию. Есть ли способ восстановить его? Я был бы признателен за любой совет, который вы могли бы предложить. Спасибо.