0
내 코드에서 일시 중지 된 활동 상태에서 흔들기 감지를 중지하려면 SensorManager 클래스에서 unregisterListerner를 명시 적으로 호출해야합니까? 센서 이벤트 등록을 취소하지 않아도 흔들림 감지가 여전히 발생합니까? 그렇다면 registerListener가 호출하지 않아도 일시 중지 상태로 작동하는 이유는 무엇입니까?SensorManager 클래스에서 unregisterListerner를 명시 적으로 호출해야합니까?
고마워요.
public class MainActivity extends Activity implements SensorEventListener {
public SensorManager sensor;
public Sensor gravity;
private float mAccel; // acceleration apart from gravity
private float mAccelCurrent; // current acceleration including gravity
private float mAccelLast; // last acceleration including gravity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensor= (SensorManager) this.getSystemService(SENSOR_SERVICE);
gravity = sensor.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
@Override
public void onSensorChanged(SensorEvent event) {
Float x = event.values[0];
Float y = event.values[1];
Float z = event.values[2];
mAccelLast = mAccelCurrent;
mAccelCurrent = (float) Math.sqrt((double) (x*x + y*y + z*z));
float delta = mAccelCurrent - mAccelLast;
mAccel = mAccel * 0.9f + delta; // perform low-cut filter
if (mAccel > 5) {
Log.d("sensor", "shake detected w/ speed: ");
Toast.makeText(this, "shake detected w/ speed: " + mAccel, Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onResume() {
super.onResume();
sensor.registerListener(this, gravity, SensorManager.SENSOR_DELAY_NORMAL);
Log.d("state", "Phone is resumed");
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.d("state", "Phone is paused");
// sensor.unregisterListener(this, gravity); Must I call this one to unregister the shaking in paused state?
}
은}