2017-03-08 1 views
1

Ich möchte die Schritte der App-Benutzer erhalten, aber ich habe die Daten nicht aktuelle Tage, wie kann ich die einzigen aktuellen Tag Daten bekommen?android Wie bekomme ich die Sensor Schrittzähler Daten nur einen Tag?

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

bitte Ihren Code teilen –

Antwort

1

Die Sensor.TYPE_STEP_COUNTER gibt die Anzahl der Schritte, die vom Benutzer seit dem letzten Neustart übernommen, während aktiviert.
Daher, wenn Sie die Schritte von heute erhalten möchten, sollten Sie programmgesteuert berechnen.
Below-Code ist meine Idee für calcualte es

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