当应用程序不在后台时,android type_step_counter 值停止计数

问题描述 投票:0回答:2

我正在服务中使用

type_step_counter
传感器从 Android 手机获取步值。它给了我预期的价值。当我关闭应用程序,摇动手机,然后再次打开应用程序时,传感器的步长值会累加(这也符合我的预期)。

但是,当我从后台滑动应用程序,摇动手机,然后再次打开应用程序时,传感器的值不会增加。

我阅读了 type_step_counter 的 android 文档,如果我们希望计数器在应用程序停止时继续工作,如果我们希望它继续工作,我们不应该取消注册传感器(请参阅this)。所以,我没有注销它,但它停止了计数。

这是我的代码(抱歉,出于安全原因没有放置所有代码):

public void onCreate(){
    mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    mStepCounterSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
}

public int onStartCommand(Intent intent, int flags, int startId){
    // edited (it was unregister)
    mSensorManager.registerListener(this, mStepCounterSensor, SensorManager.SENSOR_DELAY_NORMAL); 

    return START_STICKY;
}

public void onSensorChanged(SensorEvent event){
    float[] values = event.values;
    Log.d("onSensorChanged", "value: " + String.valueOf(values[0])); // <-- this value does not increase after app stopped
}

有人对此有任何线索吗? 预先感谢。

android types counter sensors
2个回答
0
投票

当我从后台滑动应用程序时 - 这意味着您的应用程序已完全关闭。

即使应用程序关闭,START_STICKY 也将保持服务运行。

重新打开应用程序时,我认为您正在再次启动此服务,因此将调用 OnStartCommand。

 mSensorManager.unregisterListener(this, mStepCounterSensor, SensorManager.SENSOR_DELAY_NORMAL);

然后 type_step_counter 将被重新初始化。

您可以看看这个以了解您的标准

https://developer.android.com/training/sync-adapters/creating-sync-adapter.html


0
投票

我很多年前就看到过你提出的这个问题。我现在遇到类似的问题。当我的应用程序完全关闭我的计步器服务时,计步器传感器似乎也停止工作(event.values[0] 与应用程序退出前的最新值保持一致)。

目前找到原因或解决办法了吗?如果可以的话,希望能得到您的指导,谢谢!!

© www.soinside.com 2019 - 2024. All rights reserved.