用户所走步数的总计 - Android 应用计步器
Grand total of steps taken by user - Android Application Stepometer
我有一个应用程序,它有一个游戏内计步器,可以在用户玩游戏时在后台计算他们的步数。它工作正常,我的问题如下
- 自开始玩游戏以来用户的总步数
例如,在一次训练中他走了 200 步,在接下来的 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) {
}
}
由于您没有使用 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
.
我有一个应用程序,它有一个游戏内计步器,可以在用户玩游戏时在后台计算他们的步数。它工作正常,我的问题如下
- 自开始玩游戏以来用户的总步数
例如,在一次训练中他走了 200 步,在接下来的 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) {
}
}
由于您没有使用 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
.