在另一个方法中使用 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));
}

每当您使用此传感器发生变化时,此方法都会发出通知。