Android: есть ли способ собирать данные с датчика значительного движения, когда приложение работает в фоновом режиме?

Я пытаюсь реализовать приложение, которое собирает и сохраняет события от триггерного датчика значительного движения на Android как подробно здесь.

Что мне нужно, так это способ реализовать это таким образом, чтобы когда события поступают от датчика, приложение собирало и записывало их, даже когда приложение не находится на переднем плане. Такое ощущение, что это действительно должно быть возможно, поскольку API распознавания активности (который, как я понимаю, зависит от датчика значительного движения) позволяет это, позволяя мне передать PendingIntent, который будет вызываться при переходе активности. Но механизм TriggerEventListener требует, чтобы процесс прослушивания был запущен, что практически невозможно делать постоянно с ограничениями на фоновое выполнение.

Я что-то упустил? Есть ли способ собрать данные с этого (предположительно маломощного, экономичного, не требующего блокировки пробуждения) датчика, если мое приложение работает в фоновом режиме?

1
0
793
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Однако вы можете реализовать аналогичное поведение с помощью JobScheduler. Вот как вы можете воплощать в жизнь один.

Надеюсь, это поможет.

Спасибо, Реаз. Я посмотрел на JobScheduler; к сожалению, вы можете устанавливать периодические задания только каждые 15 минут, что для наших целей является редкостью. Я надеялся, что, поскольку датчик все равно отслеживает и будит устройство при обнаружении движения, будет другой способ вызвать мое приложение без какого-либо периодического опроса на стороне приложения.

Steve Dunford 30.04.2019 18:40

удалось заставить его работать с JobScheduler, заставив задание запланировать следующее выполнение задания до его завершения. Спасибо за вашу помощь.

Steve Dunford 01.05.2019 18:47

Замечательно! Приятно знать, что вы смогли решить проблему .. :)

Reaz Murshed 01.05.2019 18:50

Другие вопросы по теме