Прослушиватель местоположения Android в фоне приложения - PullRequest
2 голосов
/ 27 марта 2019

Я хочу реализовать в моем приложении приемник местоположения, который будет работать в фоновом режиме, даже когда приложение закрыто. Я нашел много результатов для реализации прослушивателя местоположения, но я все еще не уверен.

Мой вариант использования - определить местоположение всеми возможными способами, будь то GPS, поставщик сети или любой другой способ. Приложение должно периодически обновлять местоположение в фоновом режиме

Я нашел пример, подобный приведенному ниже, чтобы получить точное местоположение:

    LocationManager lm = getSystemService(Context.LOCATION_SERVICE);
    LocationListener ll = new mylocationlistener();
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);

Еще несколько примеров по ссылке ниже:

https://zgrepcode.com/examples/android/android/location/locationmanager-implementations

это работает не очень точно, слушатель не работает в фоновом режиме.

Так это лучший способ получить местоположение на заднем плане? Большинство постов, которые я нашел, кажутся старыми, есть ли у нас лучший способ реализовать фоновый слушатель местоположения в новых API?

Я искал в StackOverflow то же самое, но не нашел ни одного релевантного поста. Если есть пост, отвечающий на тот же вопрос, пожалуйста, поделитесь ссылкой. Или дайте мне знать, как лучше всего это реализовать.

Заранее спасибо: -)

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Я сделал приложение, используя Jobscheduler.Это работает.Но это имеет некоторый конфликт, когда другое приложение likenavigation sw использует диспетчер местоположения.Сейчас я ищу решение.

0 голосов
/ 27 марта 2019

Приложения могут получать обновления местоположения только несколько раз в час . Google очень защищает эту информацию. Также активный GPS, разряжает много батареи, поэтому AGPS, возможно, является лучшим вариантом, если это делается вручную.

Обновления местоположения предоставляются фоновым приложениям только несколько раз в час.

Приложение считается находящимся на переднем плане , если любое из следующего: true :

  • У него есть видимая активность, независимо от того, запущена она или приостановлена.
  • Имеет службу переднего плана.
  • Другое приложение переднего плана подключается к приложению либо путем привязки к одной из его служб, либо с использованием одного из его поставщиков контента. Например, если приложение переднего плана связывается с любым из следующих компонентов в другом приложении, то это другое приложение считается находящимся на переднем плане, редактор метода ввода (IME), служба обоев, прослушиватель уведомлений, служба голоса или текста.

Если ни одно из этих условий не выполняется, приложение считается фоновым.

Попробуйте использовать FusedLocationProviderClient, но это зависит от Сервисов Google Play . Это лучший вариант. Вы можете узнать больше об этом здесь

...