Как собрать точные и почти непрерывные данные о местоположении с помощью приложения Android 9 Unity, когда телефон заблокирован или приложение закрыто? - PullRequest
1 голос
/ 31 марта 2020

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

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

Приложение предназначено для запуска на Android 9, и оно должно точно измерять расстояние в течение не менее 1-2 часов. Поэтому мне нужно, чтобы батарея работала как минимум так долго, особенно когда рядом с ней работают службы Bluetooth, такие как musi c или синхронизация сердечного ритма с часов.

Мой опыт работы с Android развитие очень низкое; почти не существует Я понимаю, что мне нужен какой-то фоновый процесс, но я не уверен, какой и какой из них лучше всего работает со встроенным в Unity API Service Location или Unity в целом.

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

Возможно, вместо этого мне следует использовать IntentService ? Я в замешательстве.

Какую службу следует использовать для этой цели?

1 Ответ

1 голос
/ 31 марта 2020

Правильный способ увеличить время автономной работы и работать в фоновом режиме - создать службу Android.

Вы запускаете эти службы из приложения Unity и начинаете собирать данные. Когда вы возвращаете или вновь открываете свое приложение для единства, вы связываетесь со службами и собираете все данные из него.

Там у вас есть проект для оказания помощи по Android Службам и здесь пост , который может вам тоже помочь.

Что касается сервисов Android, вы можете использовать тип bindservice, чтобы связать ваше единство с сервисами и автоматически уничтожить его при закрытии приложения.

И для ограничения нескольких ссылок sh местоположение, вам необходимо использовать Google FLP и позвонить LocationRequest .

В LocationRequest вы устанавливаете приоритет обновления с setPriority (int), установленным в PRIORITY_HIGH_ACCURACY и setInterval (long) для вашего интервала обновления в секундах

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