在另一个方法中使用 onSensorChanged() 的值
Use value from onSensorChanged() in another method
我需要在另一种方法中使用来自传感器的值。我不知道如何从 onSensorChanged() 方法获取值。
我试图创建一个全局字段,在此写入传感器值,但在 onSensorChanged() 方法之外该字段为空。
我已经在 onSensorChanged() 事件的 textView 中显示了传感器值,它在这里工作。显示的值不为空。
当我尝试在 onSensorChanged() 之外显示来自传感器的数据时,在 onCreate 事件的 textView 中,显示的数据为空。
//class级别的全局变量
float mean_acc;
//onSensorChanged()方法
public void onSensorChanged(SensorEvent sensorEvent) {
mean_acc = sensorEvent.values[1];
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Log.d(TAG, "onCreate: Initializing Sensor Services");
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
Log.d(TAG, "onCreate:Registered");
accelView = (TextView) findViewById(R.id.accelDataView);
accelView.setText(String.valueOf(mean_acc));
}
我没找到问题出在哪里。你能帮帮我吗?
根据您的编码,您有方法 onCreate
,它在 activity 创建时调用一次,之后不会再次调用。因此,当 onSensorChanged
方法调用时,您需要在该方法内设置文本,您将在其中获得 mean_acc
值,这意味着您需要在 onSensorChanged
方法内设置文本。所以你的代码将是:
public void onSensorChanged(SensorEvent sensorEvent) {
mean_acc = sensorEvent.values[1];
accelView.setText(String.valueOf(mean_acc));
}
每当您使用此传感器发生变化时,此方法都会发出通知。
我需要在另一种方法中使用来自传感器的值。我不知道如何从 onSensorChanged() 方法获取值。
我试图创建一个全局字段,在此写入传感器值,但在 onSensorChanged() 方法之外该字段为空。 我已经在 onSensorChanged() 事件的 textView 中显示了传感器值,它在这里工作。显示的值不为空。 当我尝试在 onSensorChanged() 之外显示来自传感器的数据时,在 onCreate 事件的 textView 中,显示的数据为空。
//class级别的全局变量
float mean_acc;
//onSensorChanged()方法
public void onSensorChanged(SensorEvent sensorEvent) {
mean_acc = sensorEvent.values[1];
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Log.d(TAG, "onCreate: Initializing Sensor Services");
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
Log.d(TAG, "onCreate:Registered");
accelView = (TextView) findViewById(R.id.accelDataView);
accelView.setText(String.valueOf(mean_acc));
}
我没找到问题出在哪里。你能帮帮我吗?
根据您的编码,您有方法 onCreate
,它在 activity 创建时调用一次,之后不会再次调用。因此,当 onSensorChanged
方法调用时,您需要在该方法内设置文本,您将在其中获得 mean_acc
值,这意味着您需要在 onSensorChanged
方法内设置文本。所以你的代码将是:
public void onSensorChanged(SensorEvent sensorEvent) {
mean_acc = sensorEvent.values[1];
accelView.setText(String.valueOf(mean_acc));
}
每当您使用此传感器发生变化时,此方法都会发出通知。