Как отслеживать (если возможно) устройство Android (последние версии) в фоновом режиме через равные промежутки времени? - PullRequest
1 голос
/ 17 апреля 2020

Предпосылка

Пользователь всегда должен быть проинформирован об использовании его конфиденциальных данных (таких как сбор местоположения в фоновом режиме), этот вопрос призван лучше понять последние ограничения, введенные в Android использовании местоположения и фоновые операции.

Проблема

Возможно ли (в Android последних версиях) создать службу отслеживания местоположения , которая будет отслеживать местоположение устройства, независимо от того, состояние приложения ( передний план / фон ) или состояние устройства ( режим ожидания или режим ожидания, корзины приложений ), чтобы иметь возможность согласованно определять местоположение?

Если предположить, что соединение GPS и inte rnet включено и доступно, возможно ли собирать данные о местоположении, скажем, каждые 10 минут, или устройство, переходящее в режим ожидания или режим ожидания, в любом случае ограничит возможности приложения через некоторое время и откладывать операции (например, сетевые операции), делая невозможным постоянное Обновления местоположения?

В последних android версиях, начиная с Android 8.0 (API 26) , были введены новые способы повышения производительности батареи и обеспечения конфиденциальности пользователей:

То, что я пытался

Насколько я понимаю, служба переднего плана выглядит как лучший вариант:

  • постоянно информируйте пользователя (уведомление)
  • система не завершает работу службы через несколько секунд (как для фоновых служб, начиная с API 26)
  • с меньшей вероятностью будет остановлена ​​системой ( START_STICKY пометить для в противном случае перезапустите)
  • может получить блокировку от пробуждения

Тем не менее, кажется, что приложение необходимо внести в белый список, чтобы избежать оптимизации батареи и даже отключить оптимизацию батареи для обслуживания не останавливаться / откладываться.

Ожидаемый результат

Получение обновлений местоположения через регулярные интервалы, каждые 10 минут, например

1 Ответ

0 голосов
/ 18 апреля 2020

Вы должны использовать FusedLocationProviderClient в сервисе, чтобы указать ваше местоположение в указанные интервалы времени или расстояния. Если вы выбираете расстояния, вы должны следить за точностью местоположения. Смотрите эту статью .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...