2012-05-18 4 views
0

이 코드에서 잘못된 점을 찾을 수 없습니다. 내가 acceletometer 데이터를 얻으려고하지만, 장치에서 실행하려고하면 메시지가 나오고 그 프로세스는 종료되었습니다.내 가속도계 코드에 문제가 있습니다.

public class SensorActivity extends Activity implements SensorEventListener { 
SensorManager sm; 
Sensor sensor ; 
TextView yViewA = null; 
TextView zViewA = null; 
TextView xViewO = null; 
TextView yViewO = null; 
TextView zViewO = null; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


sm = (SensorManager)getSystemService(SENSOR_SERVICE); 
sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
xViewA = (TextView) findViewById(R.id.xbox); 
yViewA = (TextView) findViewById(R.id.ybox); 
zViewA = (TextView) findViewById(R.id.zbox); 
xViewO = (TextView) findViewById(R.id.xboxo); 
yViewO = (TextView) findViewById(R.id.yboxo); 
zViewO = (TextView) findViewById(R.id.zboxo); 


}  

@Override 
protected void onResume() { 
    super.onResume(); 
    sm.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL); 
} 

@Override 
protected void onStop() { 
    sm.unregisterListener(this); 
    super.onStop(); 
} 

public void onAccuracyChanged(Sensor sensor, int accuracy) { 
    // TODO Auto-generated method stub 

} 

public void onSensorChanged(SensorEvent event) { 
    // TODO Auto-generated method stub 

    xViewO.setText("Orientation X: " + event.values[0]); 
    yViewO.setText("Orientation Y: " + event.values[1]); 
    zViewO.setText("Orientation Z: " + event.values[2]); 

} 

UPD :

05-18 19:42:17.570: E/AndroidRuntime(14875): android.app.SuperNotCalledException: Activity {daler.sensor/daler.sensor.SensorActivity} did not call through to super.onCreate() 

05-18 19:42:17.570: E/AndroidRuntime(14875): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1933) 

05-18 19:42:17.570: E/AndroidRuntime(14875): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992) 

05-18 19:42:17.570: E/AndroidRuntime(14875): at android.app.ActivityThread.access$600(ActivityThread.java:127) 

05-18 19:42:17.570: E/AndroidRuntime(14875): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158) 

05-18 19:42:17.570: E/AndroidRuntime(14875): at android.os.Handler.dispatchMessage(Handler.java:99) 

05-18 19:42:17.570: E/AndroidRuntime(14875): at android.os.Looper.loop(Looper.java:137) 

05-18 19:42:17.570: E/AndroidRuntime(14875): at android.app.ActivityThread.main(ActivityThread.java:4441) 

05-18 19:42:17.570: E/AndroidRuntime(14875): at java.lang.reflect.Method.invokeNative(Native Method) 

UPD2 : 코드가 여전히 문제에 직면, 업데이트됩니다. UPD3 : 로그 고양이 업데이트

UPD4 : 코드가 업데이트되었습니다. 이제 작동합니다. 어쩌면 누군가가 그것을 필요로 할 것입니다. 감사.

+1

당신이 메신저 응답 너무 – waqaslam

답변

3

클래스 본체에 findViewById(R.id.xbox);을 넣을 수 없습니다. setContentView() 다음에 onCreate()으로 가야합니다.

문제는 logcat에 따라 코드의 18 번째 줄에 있습니다. 아마이 하나 :

Sensor sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

당신이 쓰기 때문에 : 당신이 sm.getDefaultSensor()에서 사용할 수 없도록 SensorManager sm; 때문에 센서 관리자가 null입니다.

link 센서 관리자를 initalize하는 방법을 알아보기 : 당신에

public SensorActivity() { 
    sm = (SensorManager)getSystemService(SENSOR_SERVICE); 
    sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
} 
+0

매우 그것을 감사 당신에게 대단히 감사합니다 당신의 로그 캣을 붙여 넣습니다. 불행히도 여전히 작업이 없습니다. 나는 logcat을 업데이트한다. – Daler

+0

여전히 SensorManager를 초기화하지 않았습니다. 업데이트 된 답변보기 –

+0

sm = new SensonManager(); onCreate 아래에 logcat에 21 행이 더 이상 없습니다. – Daler

1

을에서 onCreate() 모든 (6) findViewById를 문에서 시작 텍스트 뷰를 제거하려고합니다.

TextView xViewA = (TextView) findViewById(R.id.xbox); 

에서

xViewA = (TextView) findViewById(R.id.xbox); 

편집에

변화 :

public class SensorActivity extends Activity implements SensorEventListener { 

SensorManager sm; 
Sensor sensor; 
TextView xViewA = null; 
TextView yViewA = null; 
TextView zViewA = null; 
TextView xViewO = null; 
TextView yViewO = null; 
TextView zViewO = null; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 

sm = (SensorManager)getSystemService(SENSOR_SERVICE); 
sensor= sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
sm.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL); 

xViewA = (TextView) findViewById(R.id.xbox); 
yViewA = (TextView) findViewById(R.id.ybox); 
zViewA = (TextView) findViewById(R.id.zbox); 
xViewO = (TextView) findViewById(R.id.xboxo); 
yViewO = (TextView) findViewById(R.id.yboxo); 
zViewO = (TextView) findViewById(R.id.zboxo); 

setContentView(R.layout.main); 

} 
.. 
+0

그래도 작동하지 않습니다. 코드를 업데이트했습니다. – Daler

+0

최신 logcat을 지금 업로드하십시오. – TheCottonSilk

+0

업데이트 됨제발 대답 – Daler

관련 문제