2016-04-07 8 views
0

Ich erstelle eine Schritt-Zähler, die ich täglich die SensorEvent.sensor & Sensor.TYPE_STEP_COUNTER mit zurücksetzen möchten. Ich weiß, dass dies möglich sein sollte, indem Sie den Anfangswert des Arrays speichern und den aktuellen Wert subtrahieren. Das Problem ist, dass Arrays unveränderlich sind. Gibt es eine Problemumgehung, um ein Array gegen sich selbst zu subtrahieren, um 0 zu bekommen, aber trotzdem zu zählen?Shop Anfangswert von ‚SensorEvent.sensor‘ Array

Mein aktueller Code setzt den Wert auf 0, zählt aber nicht, da beide Variablen aus demselben Array stammen.

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    myView = inflater.inflate(R.layout.skritt, container, false); 
    textView = (TextView) myView.findViewById(R.id.skrittText); 

    mSensorManager = (SensorManager) getActivity().getSystemService(Context.SENSOR_SERVICE); 
    mStepCounterSensor = mSensorManager 
      .getDefaultSensor(Sensor.TYPE_STEP_COUNTER); 
    mStepDetectorSensor = mSensorManager 
      .getDefaultSensor(Sensor.TYPE_STEP_DETECTOR); 
     return myView; 

}  

public void onSensorChanged(SensorEvent event) { 
    Sensor sensor = event.sensor; 
    float[] values = event.values; 

    int value = -1; 
    final int value1 =(int) values[0]; 
    int value2 = 0; 


     if (values.length > 0) { 
      value = (int) values[0]; 
     } 


     if (sensor.getType() == Sensor.TYPE_STEP_COUNTER) { 
      value2 = value - value1; 

      textView.setText("" + value2); 

     } else if (sensor.getType() == Sensor.TYPE_STEP_DETECTOR) { 
      // For test only. Only allowed value is 1.0 i.e. for step taken 
      textView.setText("" + value); 
     } 
} 

Antwort

0

Den Anfangswert in einem globalen speichern und jedes Mal subtrahieren, wenn Sie ein Update erhalten.