Я только что начал на Android и Java вчера, и у меня проблема. Я пытаюсь вывести значения датчика в некоторые текстовые элементы. Текст обновляется, но со значениями, установленными в определении. onSensorChanged должен правильно обновить эти значения?Изменение датчика не срабатывает onSensorChanged
import [...]
public class MainActivity extends Activity implements SensorEventListener {
public float[] gravity = {0,0,0};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView gravxTxtView = (TextView) findViewById(R.id.gravxTxtView);
final TextView gravyTxtView = (TextView) findViewById(R.id.gravyTxtView);
final TextView gravzTxtview = (TextView) findViewById(R.id.gravzTxtView);
final Handler handler = new Handler();
handler.postDelayed(
new Runnable() {
@Override
public void run() {
gravxTxtView.setText("Gravity x: " + Float.toString((gravity[0])));
gravyTxtView.setText("Gravity y: " + Float.toString((gravity[1])));
gravzTxtview.setText("Gravity z: " + Float.toString((gravity[2])));
}
}, 500);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
gravity[0] = event.values[0];
gravity[1] = event.values[1];
gravity[2] = event.values[2];
}
}
}
Спасибо за быстрый ответ! Я никогда не переходила на регистрационный шаг в документах. Сейчас он работает (ish). Я получаю правильные значения, но они не обновляются каждые x миллисекунд. Не думайте, что это имеет какое-либо отношение к функции onSensorChanged, а скорее к методу цикла, который я использую. –
проверьте шаг 3, третий параметр здесь вы можете изменить частоту, когда имеется некоторая частота по умолчанию. Я не получил последнюю часть, но не использовал какой-либо цикл, событие датчика Android следует шаблону подписчика издателя, вы можете прочитать об этом. –
Мой плохой, я имею в виду, что текст не обновляется после первого раза. Исправлено, просто перемещая setText() в функции обновления датчика. Огромное спасибо! Это открывает много. –