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谢谢你提供的信息。这段代码还能正常工作吗?你也能看一下我的代码吗?