Xamarin Forms - Получить местоположение устройства каждые 10 секунд (когда приложение работает на переднем плане / фоне) - PullRequest
0 голосов
/ 11 марта 2020

Я создал приложение форм Xamarin. Приложение должно периодически (каждые 10 сек c) получать местоположение устройства (iOS и Android). Как мне этого добиться? Я знаю, что есть несколько библиотек, например: Xamarin.Essentials, но я не могу решить, сколько раз это место должно быть занято.

Также должна быть возможность получить локальное устройство, когда приложение Xamarin Form работает в фоновом режиме (на IOS и Android).

1 Ответ

0 голосов
/ 30 марта 2020

Для 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 и выше. см здесь

...