android studio как прочитать магнитный датчик

#java #android-studio #sensors

#java #android-studio #датчики

Вопрос:

У меня есть некоторый код, который, я думаю, будет работать для считывания геомагнитного датчика на моем Galaxy S5, но всякий раз, когда он пытается запустить, он сразу же выходит из строя, просто заявляя, что он разбился. Я не знаю, в чем может быть проблема с кодом, но, похоже, ошибок нет. есть идеи?

 package com.gmail.~~~~~~~~.magnetictest;

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements     SensorEventListener {

private SensorManager mSensorManager;
private Sensor mSensor;
TextView Mtext;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
    mSensorManager.registerListener(this, mSensor, mSensorManager.SENSOR_DELAY_NORMAL);
}

@Override
public void onSensorChanged(SensorEvent event) {
    Mtext.setText(String.valueOf(event.values[0]));
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {

}
}
  

Комментарии:

1. не могли бы вы опубликовать трассировку стека?

2. как я могу получить что-то подобное, когда само устройство вызывает сбой, а не Android studio?

3. проверьте мой ответ

Ответ №1:

Вы должны создать экземпляр переменной после вызова метода setContentView. Итак, вам нужно сделать следующее:

 Mtext = (TextView)findViewById(R.id.<textview id from activity main>);
  

Комментарии:

1. Спасибо! кажется, это работает чертовски хорошо! теперь просто перейдем к остальной части compass! пожелайте мне удачи, мне это обязательно понадобится.

2. кроме того, у вас есть какие-либо идеи о том, как использовать эти значения для определения направлений сторон света? lol, я думал, что эти значения будут более прямыми, чем север, равный ~ 0, восток ~ -22, юг ~ 0 и запад ~ 25

3. Неважно, я должен использовать датчик ориентации вместо магнитного датчика.