Programming/Android
장치의 방향에 관계없이 가속도 값을 알아내는법.
동적할당
2011. 10. 30. 22:24
float rotate[] = new float[9]; float acc[] = new float[3]; SensorEventListener rotateVectorEventListener = new SensorEventListener() { @Override public void onSensorChanged(SensorEvent event) { // TODO Auto-generated method stub switch (event.sensor.getType()) { case Sensor.TYPE_ACCELEROMETER: { SensorManager.getRotationMatrixFromVector(rotate, event.values); } break; case Sensor.TYPE_ROTATION_VECTOR: { for (int i = 0; i < 3; i++) { acc[i] = event.values[0] * rotate[i * 3] + event.values[1] * rotate[i * 3 + 1] + event.values[2] * rotate[i * 3 + 2]; } } break; } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub } };
이런식으로 사용하게 되면 항상 장치의 방향에 관계없이 실제의 x y z 축의 가속도를 나타내 준다.
하지만 자이로 센서가 없는 장치, 혹은 센서의 감도가 좋지 않다면 가만히 놔둬도 측정값이 발광을 하는데다
적분을 하면 말도 안되는 값으로 폭주..
갤럭시S2 는 자이로 센서가 있어서 시도해볼만 할것 같다.
하지만 난 없잔아?
안될거야..