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 는 자이로 센서가 있어서 시도해볼만 할것 같다.
하지만 난 없잔아?
안될거야..
'Programming > Android' 카테고리의 다른 글
Cocos2D Android 줄바꾸기 (4) | 2012.02.04 |
---|---|
INS 연구용 코드 (0) | 2011.11.06 |