【问题标题】:Use value from onSensorChanged() in another method在另一个方法中使用来自 onSensorChanged() 的值
【发布时间】:2018-12-22 09:55:55
【问题描述】:

我需要以另一种方法使用来自传感器的值。我不知道如何从 onSensorChanged() 方法中获取值。

我试图创建一个全局字段,在此写入传感器值,但在 onSensorChanged() 方法之外该字段为空。 我在 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));
}

我找不到问题出在哪里。你能帮帮我吗?

【问题讨论】:

    标签: java android void android-sensors


    【解决方案1】:

    根据您的编码,您有方法 onCreate 在活动创建时调用一次,然后不会再次调用。因此,当onSensorChanged 方法调用时,您需要在该方法内设置文本,您将获得mean_acc 值,这意味着您需要在onSensorChanged 方法内设置文本。所以你的代码将是:

    public void onSensorChanged(SensorEvent sensorEvent) {
        mean_acc = sensorEvent.values[1];
        accelView.setText(String.valueOf(mean_acc));
    }
    

    每当这个传感器在你使用过的地方发生变化时,这个方法都会通知。

    【讨论】:

    • 它有效。我忘记了在创建活动时调用了一次 onCreate。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多