2017-01-13 2 views
0

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) { 
    } 
} 

Antwort

1

Da Sie nicht Service unter Verwendung wird für Sie funktionieren. Pflegen Eine globale Variable totalSteps, um die Gesamtzahl der Schritte zu zählen, die vom Benutzer über alle Sitzungen hinweg unternommen wurden.

private int totalSteps = 0; 
@Override 
public void onSensorChanged(SensorEvent event) { 

    totalSteps += (int)event.values[0]; 

    if (activityRunning) { 
     count.setText(String.valueOf(totalSteps)); 
    } 

} 

Denken Sie daran, totalSteps würde verloren gehen, sobald App töten oder geschlossen ist. Um diese Situation zu überwinden, sollten Sie versuchen, SharedPreferences zu verwenden.

Verwandte Themen