我正在从这样的重启接收步骤创建一个演示。
public class MainActivity extends AppCompatActivity implements SensorEventListener {
private SensorManager sensorManager;
@Override
public void onCreate(Bundle savedInstanceState) {
...
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
}
@Override
protected void onResume() {
super.onResume();
countSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
sensorManager.registerListener(this, countSensor, SensorManager.SENSOR_DELAY_UI);
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_STEP_COUNTER) {
Log.i("TAG","step from reboot" + String.valueOf(event.values[0]));
}
}
}
但是当我在我的设备(SamSung Galaxy S4)上测试时,STEP_COUNTER有时不能很好地工作:(。我通过与SHealth比较来弄清楚
经过多次测试,我发现
几乎时间,STEP_COUNTER返回步等于SHealth 但有时不同。因此我认为SHealth可能会使用另一个传感器来计算步数,但我不知道是哪个传感器?我认为这不是 STEP_DETECTOR因为STEP_DETECTOR在关闭屏幕时返回的步骤很少。
有时,STEP_COUNTER停止工作,而SHealth仍然返回步骤,例如,我走了大约 100 步 => SHealth 显示 110 和演示应用显示 100,然后我继续步行大约 200 步 => SHealth 显示 305 和演示应用显示 121(似乎喜欢它停止工作)
我还收到了来自许多使用不同设备的用户的报告(评分低:(),但我只能在我的设备上复制它。
我不知道如何解决这个问题。我认为STEP_COUNTER是接收步骤的最佳传感器(与STEP_DETECTOR 相比)
任何帮助或建议将不胜感激。