Используйте значение из onSensorChanged () в другом методе - PullRequest
0 голосов
/ 22 декабря 2018

Мне нужно использовать значения от датчика в другом методе.Я не знаю, как получить значения из метода onSensorChanged ().

Я пытался создать глобальное поле, запишите в него значение датчика, но вне метода onSensorChanged () поле имеет значение null.Я отобразил значение датчика в textView в событии onSensorChanged (), и оно работает здесь.Отображаемые значения не равны нулю.Когда я попытался отобразить данные с датчика вне onSensorChanged (), в textView в событии onCreate отображаемые данные имеют значение null.

// глобальная переменная на уровне класса

 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));
}

Я не вижу, в чем проблема.Не могли бы вы помочь мне?

1 Ответ

0 голосов
/ 22 декабря 2018

В соответствии с вашей кодировкой у вас есть метод onCreate, который вызывается один раз при создании активности, затем после ее повторного вызова.Таким образом, при вызове метода onSensorChanged вам нужно установить текст внутри этого метода, где вы получите значение mean_acc, что означает, что вам нужно установить текст внутри метода onSensorChanged.Таким образом, ваш код будет:

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

Этот метод будет уведомлять каждый раз, когда этот датчик меняется, где бы вы его не использовали.

...