我在服务中使用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
}
有人对此有任何线索吗? 提前谢谢。
答案 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