Ich habe eine Anwendung, die ein in-Game-Stepometer hat, so berechnet die Benutzer die Schritte im Hintergrund, wie sie das Spiel spielen. Es funktioniert gut, mein Problem ist folgendesGesamtsumme der Schritte vom Benutzer genommen - Android Application Stepometer
- eine Gesamtsumme von Schritten durch den Anwender getroffen haben seit dem Start des Spiels
Zum Beispiel in einer Sitzung hatte er 200 Stufen und in der spielen nächsten 300. Ich möchte diese insgesamt 500 Schritte speichern, so dass ich dann Erfolge wie der Benutzer anzeigen kann. Herzlichen Glückwunsch, du hast seit Beginn des Spiels 1000 Schritte gemacht.
Dies ist mein Stepometer-Code, den ich online gefunden habe und derzeit in meiner Anwendung verwende.
import android.app.Activity;
import android.content.Context;
import android.hardware.*;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
public class StepCounterActivity extends Activity implements SensorEventListener {
private SensorManager sensorManager;
private TextView count;
boolean activityRunning;
int totalSteps;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_step_counter);
count = (TextView) findViewById(R.id.count);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
}
@Override
protected void onResume() {
super.onResume();
activityRunning = true;
Sensor countSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
if (countSensor != null) {
sensorManager.registerListener(this, countSensor, SensorManager.SENSOR_DELAY_UI);
} else {
Toast.makeText(this, "Count sensor not available!", Toast.LENGTH_LONG).show();
}
}
@Override
protected void onPause() {
super.onPause();
activityRunning = false;
// if you unregister the last listener, the hardware will stop detecting step events
// sensorManager.unregisterListener(this);
}
@Override
public void onSensorChanged(SensorEvent event) {
if (activityRunning) {
count.setText(String.valueOf(event.values[0]));
//maybe add to a variable the number of steps somehow?
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}