Для Android вы можете попробовать запустить Службу, которая использует LocationManager со значением Android, чтобы начать прослушивание изменений местоположения. Вы можете указать интервал времени и минимальное расстояние, которое вы хотите отслеживать.
Этот раздел помог мне понять, как его использовать. Для меня это отправка обновлений местоположения, даже когда приложение было приостановлено (физическое устройство работает Android 6.1).
Чтобы получить местоположение, я сделал мой Сервис 'LocationListener' и реализовал интерфейс ILocationListener-интерфейс следующим образом:
[Service]
public class TestService : Service, ILocationListener
{
public override IBinder OnBind(Intent intent)
{
return null;
}
public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
{
// start your location updates with the locationManager here
return StartCommandResult.Sticky; // remember to return sticky for the service to run when app is suspended
}
public override void OnDestroy() { }
...
public void OnLocationChanged(Location location)
{
// react to location changes here
}
public void OnProviderDisabled(string provider) { }
public void OnProviderEnabled(string provider) { }
public void OnStatusChanged(string provider, Availability status, Bundle extras) { }
}
Для получения дополнительной информации о фоновом режиме и о том, как настроить сервис, прочитайте this .
Важно отметить, что заключается в том, что locationUpdates не всегда синхронизированы (иногда это занимает более 10 секунд), поскольку вы просто задаете минимальное время, а ОС обрабатывает Запрос основан на его возможностях. Но это было не так уж плохо.
Обновление: похоже, это не работает для Android 8.0 и выше. см здесь