我需要在另一种方法中使用传感器的值。我不知道如何从onSensorChanged()方法获取值。
我尝试创建一个全局字段,在其中写入传感器值,但是在onSensorChanged()方法之外,该字段为null。 我已经在onSensorChanged()事件的textView中显示了传感器值,并且它在这里起作用。显示的值不为空。 当我尝试显示来自onSensorChanged()之外的传感器的数据时,在onCreate事件的textView中,显示的数据为空。
//类级别的全局变量
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));
}
我找不到问题所在。你能帮我吗?
答案 0 :(得分:1)
根据您的编码,您拥有方法onCreate
,该方法在创建活动时被调用一次,之后将不再被调用。因此,在调用onSensorChanged
方法时,您需要在该方法内设置文本,在这里您将获得mean_acc
值,这意味着您需要在onSensorChanged
方法内设置文本。因此您的代码将是:
public void onSensorChanged(SensorEvent sensorEvent) {
mean_acc = sensorEvent.values[1];
accelView.setText(String.valueOf(mean_acc));
}
无论您在何处使用此传感器,此方法都会在每次更改时通知。