펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO
기본적인 셋팅은 이전에 방위센서에서 다뤘으므로 주석없이 술술 나가겠음
float[] gravity_data = new float[3];
float[] accel_data = new float[3];
float[] m_acc_data = new float[3];
final float alpha = (float)0.8;
SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor mSensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
protected void onResume(){
super.onResume();
sm.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_UI);
}
public void onDestroy(){
super.onDestroy();
sm.unregisterListener(this);
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
gravity_data[0] = alpha * gravity_data[0] + (1 - alpha) * event.values[0]; //먼저 중력데이터를 계산함
gravity_data[1] = alpha * gravity_data[1] + (1 - alpha) * event.values[1];
gravity_data[2] = alpha * gravity_data[2] + (1 - alpha) * event.values[2];
accel_data[0] = event.values[0] - gravity_data[0]; // 순수 가속도센서값에 중력값을 빼줌
accel_data[1] = event.values[1] - gravity_data[1]; // 아니면 약 9.81 어쩌고 하는값이 더해짐
accel_data[2] = event.values[2] - gravity_data[2];
tv1.setText("x축 : " + accel_data[0]);
tv2.setText("y축 : " + accel_data[1]);
tv3.setText("z축 : " + accel_data[2]);
}
}
빼먹은게 있을수도 있지만, 알맹이는 다 들어있습니다. 문의는 댓글로
'Android > 센서' 카테고리의 다른 글
기본적인 센서(Sensor) 사용법 (1) | 2014.01.07 |
---|---|
TYPE_MAGNETIC_FIELD 센서로 방위각 구하기 (2) | 2013.11.28 |