我正在尝试从我的步数计数器服务(即步数)中获取数据以显示在片段上。这是我的服务:
public class StepCounterService extends Service implements SensorEventListener {
SensorManager sensorManager;
boolean running = false;
static int initialStepCount = 0;
static int stepCount = 0;
@Override
public void onCreate() {
super.onCreate();
sensorManager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);
}
@Override
public void onSensorChanged(SensorEvent event) {
if (initialStepCount == 0) {
initialStepCount = (int) event.values[0];
}
stepCount = (int)event.values[0] - initialStepCount;
if (running) {
// tv_steps.setText(String.valueOf(stepCount));
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
running = true;
Sensor countSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
if (countSensor != null) {
sensorManager.registerListener(this, countSensor, SensorManager.SENSOR_DELAY_NORMAL);
} else {
}
return super.onStartCommand(intent,flags,startId);
}
@Override
public void onDestroy() {
}
}
如何发送stepCount值以在TextView中的片段中显示?最好的方法是什么?
答案 0 :(得分:0)
要在服务和其他组件之间发送数据,您可以执行绑定服务; https://developer.android.com/guide/components/bound-services.html这是Android在组件之间进行通信的最佳方式。
答案 1 :(得分:0)
有几种方法可以做到:
LocalBroadCastReceiver
。 使用EventBus。我更喜欢这种方式,因为它比前一个只有几行代码容易得多:
EventBus.getDefault().post(new YourObjectWithANumber());
答案 2 :(得分:0)
或许,在您的特定情况下,最好保存并保留文件或数据库中的步骤数,以便即使应用程序重新启动也可以在UI中显示它