안드로이드 개발 질문/답변
(글 수 45,052)
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
float[] grav = new float[3];
float[] mag = new float[3];
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {// 가속도 센서
grav[0] = event.values[0]; // X축에 적용되는 힘
grav[1] = event.values[1]; // Y축에 적용되는 힘
grav[2] = event.values[2]; // Z축에 적용되는 힘
}
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {//자기장 센서
mag[0] = event.values[0];
mag[1] = event.values[1];
mag[2] = event.values[2];
}
float[] Rin = new float[9];
float[] Rout = new float[9];
//이 부분에서 Rin과 Rout의 값아 0.
SensorManager.getRotationMatrix(Rin, null, grav, mag);
SensorManager.remapCoordinateSystem(Rin, SensorManager.AXIS_Y, SensorManager.AXIS_MINUS_X, Rout);
SensorManager.getOrientation(Rout, values); //values의 값이 0.
mValues[0] = values[0];
mValues[1] = values[1];
mValues[2] = values[2];
} SensorEventListener의 Sensorchanged 내부를 위와 같이 작성하였습니다.
위의 주석으로 표시한 부분에 값이 0으로 찍히는 문제가 있습니다.혹시나 해서 가속도 센서값과 마그네틱센서 값을 확인해보니 정상적으로 출력되었습니다.저 부분에 값이 저장되지 않는 이유가 무엇일까요?? 혹시 잘못된 부분이 있으면 지적 부탁드립니다.



자답입니다..
float[] grav = new float[3]; float[] mag = new float[3];
이 부분을 Listener를 호출할 때마다 초기화 해주면서,
중력센서에 의해 호출 될때와, 자기장센서에 의해 호출 될 때 각각의 경우에서, 다른 센서의 event값이 0이 되기때문에
문제가 발생했었네요...
임시방편으로 두 값을 전역변수로 선언하고, onCreate() 메소드에서 초기화 해주는 방법으로 이 문제를 해결하였습니다.