2017-03-08 133 views
1

我想获取应用程序用户的步骤数据,但是我得到的数据不是当天的数据,我如何才能获取当前唯一的日期数据?android如何获取传感器步数计数器只有一天?

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; 
     } 
    } 
} 
+0

请分享您的代码 –

回答

1

Sensor.TYPE_STEP_COUNTER返回用户自上次重新启动以来所采取的步骤数。
因此,如果你想获得今天的步骤,你应该以编程方式进行计算。
下面的代码是我的calcorete的想法它

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