Слушатель событий датчика не работает в фоновом режиме - PullRequest
0 голосов
/ 07 марта 2019

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

Как прослушать событие датчика в фоновом режиме?

class MyJobService : JobService(), SensorEventListener {

        val TAG = "MyJobService"

        var sensorManager: SensorManager? = null
        var stepsSensor: Sensor? = null

        override fun onStartJob(job: JobParameters): Boolean {

            sensorManager = applicationContext.getSystemService(Context.SENSOR_SERVICE) as SensorManager

            stepsSensor = sensorManager!!.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)
            if (stepsSensor != null) {
                sensorManager!!.registerListener(this, stepsSensor, SensorManager.SENSOR_DELAY_FASTEST)
            } else {
                Log.e(TAG, "sensor not available")
            }

            return true // wait for sensor event
        }

        override fun onAccuracyChanged(theSensor: Sensor?, accuracy: Int) {

        }

        override fun onSensorChanged(event: SensorEvent?) {

            val latestSensorCount = event!!.values[0].toLong()
            Log.e(TAG, "Steps count $latestSensorCount") // works when App / activity is running

        }

        override fun onStopJob(job: JobParameters): Boolean {
            return false
        }

    }

Запуск службы из основной активности из активности по

 val dispatcher = FirebaseJobDispatcher(GooglePlayDriver(this))
 val myJob = dispatcher.newJobBuilder()
            .setService(MyJobService::class.java)
            .setTag("my-jobservice-tag")
            .setRecurring(true)
            .setTrigger(Trigger.executionWindow(10,20))
            .setReplaceCurrent(true)
            .build()

 dispatcher.mustSchedule(myJob)

1 Ответ

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

Если вы тестируете это на устройстве Android с Android Pie

Пожалуйста, пройдите через это Поведенческие изменения От Android Pie:

Датчики, которые используют режим непрерывной отчетности, такие какакселерометры и гироскопы, не получают события.

Изменения Android Pie

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

...