2017-01-13 4 views
0

私はゲームのステップメーターを持つアプリケーションを持っていますので、ゲームをプレイするときにバックグラウンドでユーザーのステップを計算します。それは正常に動作し、私の問題は、次のユーザーが実際に踏み出した合計の合計 - Android Application Stepometer

  • は、彼は200個のステップを持っていた1つのセッションであり、例えばゲーム

をプレイし始めているので、ユーザーが撮影したステップの総計を持っていますnext 300. このような合計500ステップを保存して、ユーザーに達成度を表示できるようにしたいと思います。試合開始から1000歩歩いたことをお祝いします。

これは私がオンラインで見つけた、私のアプリケーションで現在使用している私の歩数計のコードです。

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

答えて

1

下記のServiceを使用していないので、下のほうが問題ありません。グローバル変数totalStepsを維持して、全セッションにわたってユーザーが取ったステップの合計を数えます。

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

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

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

} 

totalStepsは、アプリが終了または終了すると失われます。このような状況を克服するには、SharedPreferencesを使用してください。