安卓怎么才能一天就拿到传感器步数数据呢?

原学程将引见安卓怎样能力1天便拿到传感器步数数据呢?的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

安卓怎么才能一天就拿到传感器步数数据呢? 教程 第1张

成绩描写

我想夺取APP用户的步数数据,但是夺取的数据没有是当天的数据,怎样能力夺取独一确当天数据?

 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 (一);
 }
 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;
  }
 }
}

推举谜底

Sensor.TYPE_STEP_COUNTER前往自前次从新开动以去用户在激活时履行的步调数。
是以,假如您想获得明天的步调,您应当经由过程编程停止盘算。
上面的代码是我对于Calcualte It的设法主意

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.co妹妹it();
}

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());
}

佳了闭于安卓怎样能力1天便拿到传感器步数数据呢?的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。