protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_orientation);
mStart = (Button) findViewById(R.id.start);
mStop = (Button) findViewById(R.id.stop);
// 1. 센서 매니저 생성
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
// 2. 센서 객체 생성
mOriSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
mOriX = (TextView) findViewById(R.id.oriX);
mOriY = (TextView) findViewById(R.id.oriY);
mOriZ = (TextView) findViewById(R.id.oriZ);
mOriX.setText(String.format("X축 : "));
mOriY.setText(String.format("Y축 : "));
mOriZ.setText(String.format("Z축 : "));
// --------------------------------------------------------------------
mStart.setOnClickListener(this);
mStop.setOnClickListener(this);
// --------------------------------------------------------------------
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.start:
mStart.setVisibility(View.GONE);
mStop.setVisibility(View.VISIBLE);
mOriListener = new SensorEventListener(){
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
float[] val = event.values;
float oriX = val[0];
float oriY = val[1];
float oriZ = val[2];
mOriX.setText(String.format("X축 : %.3f", oriX));
mOriY.setText(String.format("Y축 : %.3f", oriY));
mOriZ.setText(String.format("Z축 : %.3f", oriZ));
}
};
mSensorManager.registerListener(mOriListener, mOriSensor, SensorManager.SENSOR_DELAY_UI);
break;
case R.id.stop:
mStop.setVisibility(View.GONE);
mStart.setVisibility(View.VISIBLE);
mSensorManager.unregisterListener(mOriListener);
break;
}
}
이런 식으로 간단한 센서 측정 예제를 만들어봤는데요.
센서 자체가 측정 속도가 빠른편이라 1초에 한번씩 측정이 가능하게 변경하고싶어요.
여기서 어떤 함수를 추가하거나 어떻게 변경시켜야 측정시간을 초당 한번으로 길게 측정 가능할까요?