Я пытаюсь реализовать приложение, которое собирает и сохраняет события от триггерного датчика значительного движения на Android как подробно здесь.
Что мне нужно, так это способ реализовать это таким образом, чтобы когда события поступают от датчика, приложение собирало и записывало их, даже когда приложение не находится на переднем плане. Такое ощущение, что это действительно должно быть возможно, поскольку API распознавания активности (который, как я понимаю, зависит от датчика значительного движения) позволяет это, позволяя мне передать PendingIntent, который будет вызываться при переходе активности. Но механизм TriggerEventListener требует, чтобы процесс прослушивания был запущен, что практически невозможно делать постоянно с ограничениями на фоновое выполнение.
Я что-то упустил? Есть ли способ собрать данные с этого (предположительно маломощного, экономичного, не требующего блокировки пробуждения) датчика, если мое приложение работает в фоновом режиме?
В более новых версиях Android вы больше не можете запускать фоновые службы и, следовательно, вы не можете получать данные датчика движения с вашего устройства, когда приложение не находится на переднем плане. Для получения дополнительной информации см. здесь.
Однако вы можете реализовать аналогичное поведение с помощью JobScheduler. Вот как вы можете воплощать в жизнь один.
Надеюсь, это поможет.
удалось заставить его работать с JobScheduler, заставив задание запланировать следующее выполнение задания до его завершения. Спасибо за вашу помощь.
Замечательно! Приятно знать, что вы смогли решить проблему .. :)
Спасибо, Реаз. Я посмотрел на JobScheduler; к сожалению, вы можете устанавливать периодические задания только каждые 15 минут, что для наших целей является редкостью. Я надеялся, что, поскольку датчик все равно отслеживает и будит устройство при обнаружении движения, будет другой способ вызвать мое приложение без какого-либо периодического опроса на стороне приложения.