android如何在一天内获取传感器步进计数器数据?

android如何在一天内获取传感器步进计数器数据?,android,sensors,Android,Sensors,我想获取应用程序用户的步骤数据,但我获取的数据不是当前日期的数据,如何获取唯一的当前日期数据 public StepCounterRecord(ReactApplicationContext reactContext) { mSensorManager = (SensorManager)reactContext.getSystemService(reactContext.SENSOR_SERVICE); mReactContext = reactContext;

我想获取应用程序用户的步骤数据,但我获取的数据不是当前日期的数据,如何获取唯一的当前日期数据

 public StepCounterRecord(ReactApplicationContext reactContext) {
        mSensorManager = (SensorManager)reactContext.getSystemService(reactContext.SENSOR_SERVICE);
        mReactContext = reactContext;
    }

    public int start(int delay) {
    this.delay = delay;
    if ((mStepCounter = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)) != null) {
        mSensorManager.registerListener(this, mStepCounter, SensorManager.SENSOR_DELAY_FASTEST);
        return (1);
    }
    return (0);
}


@Override
public void onSensorChanged(SensorEvent sensorEvent) {

    Sensor mySensor = sensorEvent.sensor;
    WritableMap map = mArguments.createMap();

    if (mySensor.getType() == Sensor.TYPE_STEP_COUNTER) {
        long curTime = System.currentTimeMillis();
        i++;
        if ((curTime - lastUpdate) > delay) {
            i = 0;
            map.putDouble("steps", sensorEvent.values[0]);
            sendEvent("StepCounter", map);
            lastUpdate = curTime;
        }
    }
}
返回自上次激活时重新启动以来用户采取的步骤数。
因此,如果您想了解今天的步骤,您应该以编程方式进行计算。
下面的代码是我计算它的想法

private int milestoneStep;

@Override
public void onSensorChanged(SensorEvent sensorEvent) {
    int totalStepSinceReboot = sensorEvent.values[0];

    int todayStep = getPreferences(today());
    if(todayStep == 0){
        milestoneStep = totalStepSinceReboot;
    }else{
        int additionStep = totalStepSinceReboot - milestoneStep;
        savePreferences(today(), todayStep + additionStep);
        milestoneStep = totalStepSinceReboot;

        Log.i("TAG","Your today step now is "+getPreferences(today()));
    }
}


private void savePreferences(String key, int value) {
    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putInt(key, value);
    editor.commit();
}

private void getPreferences(String key){
    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    return; = sharedPreferences.getInt(key, 0);

}

public String today() {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    return sdf.format(Calendar.getInstance().getTime());
}

请共享您的代码如果应用程序未打开超过一天,则不考虑此问题。@AhmedKorany是的,当然。若要计算未打开应用程序的步骤事件,可以尝试使用该服务(但用户仍然可以终止该服务),或者可以使用GoogleFit for getstep@Linh谢谢你提供的信息。这段代码还能正常工作吗?你也能看一下我的代码吗?