当type不在后台时,android type_step_counter值会停止计数

时间:2017-11-15 05:34:12

标签: android types counter sensor

我在服务中使用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
}

有人对此有任何线索吗? 提前谢谢。

1 个答案:

答案 0 :(得分: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