2016-10-04 18 views
0

我有一些代碼可以用來讀取我的Galaxy S5上的地磁傳感器,但每當它嘗試啓動時立即崩潰,只是說它崩潰了。我不知道代碼可能存在什麼問題,但似乎沒有任何錯誤。有任何想法嗎?android studio如何讀取磁性傳感器

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

當設備本身導致崩潰而不是android studio時,我會如何得到這樣的東西? – Trevader2413

+0

檢查我的回答 –

回答

2

您必須在setcontentView方法被調用後實例化變量。所以你必須做到以下幾點:

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

謝謝!這似乎工作相當不錯!現在只需轉到指南針的其餘部分!祝我好運,我一定會需要它。 – Trevader2413

+0

另外,你碰巧有任何想法如何使用這些值來找到主要方向?哈哈,我認爲這些值比北向〜0更直接,東向〜-22,南向〜0,西向〜25 – Trevader2413

+0

沒關係,我應該用方位傳感器代替磁傳感器。 – Trevader2413