2016-10-04 2 views
0

У меня есть код, который, как мне следовало бы думать, будет работать для считывания геомагнитного датчика на моей 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) { 

} 
} 
+0

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

+0

как мне получить что-то подобное, когда устройство само по себе вызывает крах, а не андроид-студию? – Trevader2413

+0

проверить мой ответ –

ответ

2

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

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

спасибо! это, похоже, хорошо работает! теперь просто перейдем к остальному компасу! желаю мне удачи, мне это обязательно понадобится. – Trevader2413

+0

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

+0

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

Смежные вопросы