我正在服务中使用
type_step_counter
传感器从 Android 手机获取步值。它给了我预期的价值。当我关闭应用程序,摇动手机,然后再次打开应用程序时,传感器的步长值会累加(这也符合我的预期)。 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
}
有人对此有任何线索吗? 预先感谢。
当我从后台滑动应用程序时 - 这意味着您的应用程序已完全关闭。
即使应用程序关闭,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
我很多年前就看到过你提出的这个问题。我现在遇到类似的问题。当我的应用程序完全关闭我的计步器服务时,计步器传感器似乎也停止工作(event.values[0] 与应用程序退出前的最新值保持一致)。
目前找到原因或解决办法了吗?如果可以的话,希望能得到您的指导,谢谢!!