Android Accelerometer Speed problem

  • Replies:0
MakiPong
  • Forum posts: 1

Nov 29, 2014, 9:06:04 AM via Website

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.authenticate_layout);
    sm=(SensorManager) getSystemService(SENSOR_SERVICE);
    accelerometer=sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    Button sigBtn = (Button) findViewById(R.id.t_signatureBtn);
    sigBtn.setOnTouchListener(this);
}

public boolean onTouch(View v, MotionEvent event) {
    switch(event.getAction()){
        case MotionEvent.ACTION_DOWN: //PRESSSED
            accStart();
            break;
        case MotionEvent.ACTION_UP: //RELEASED
            accStop();
            break;
    }
    return true;
}

protected void accStart(){
    sm.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
}

protected void accStop(){
    sm.unregisterListener(this);
}

@Override
public void onSensorChanged(SensorEvent event) {
        TextView acceleration = (TextView) findViewById(R.id.t_acceleration);
        acceleration.setText("X: "+ event.values[0] +
                                "\nY: " + event.values[1] +
                                "\nZ: " + event.values[2]);
    }

I have an apps that required Accelerometer sensor with onTouchListener implemented to registerSensorListener and stop the accelerometer once released.

I used SENSOR_DELAY_NORMAL to capture data. Speed can be monitored in the Textbox I set in onSensorchanged.

The bug I encountered was sometime I get SENSOR_DELAY_FASTEST speed instead of DELAY_NORMAL. Anyone have any idea what is happening? The phone I using is LG NEXUS 5. For example, I triggered the accelerometer, the speed is going on 5 data per seconds, then at the 5th seconds, it's speed changed to DELAY_FASTEST for few seconds then return back to DELAY_NORMAL.

Reply