2016-10-04 3 views
0

나는 내 갤럭시 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

장치 자체가 충돌을 일으키고 안드로이드 스튜디오가 아닌데 어떻게 이런 것이 생길까요? – Trevader2413

+0

내 대답을 확인하십시오 –

답변

2

setcontentView 메서드가 호출 된 후에 변수를 인스턴스화해야합니다. 따라서 다음을 수행해야합니다.

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

감사합니다! 이것은 꽤 잘 일하는 것 같다! 이제 나침반의 나머지 부분으로 이동하십시오! 나에게 행운이 있기를 바란다. 나는 확실히 그것을 필요로 할 것이다. – Trevader2413

+0

또한이 값을 사용하여 추기경을 찾는 방법을 알고 있습니까? Lol, 나는이 값들이 북쪽 ~ 0, 동쪽 ~ -22, 남쪽이 ~ 0, 서쪽 ~ 25보다 더 똑바로 될 것이라고 생각했습니다. – Trevader2413

+0

자기 센서 대신 방향 센서를 사용해야합니다. – Trevader2413