Motion Sensor

An android device can contain many sensors. Refer documentation for more details.

In this section, an illustration to get the tilt of the phone along x-axis is demontrated. This basic setup can be extended to any sensor

1) Instratiate SensorManager

2) Get the required Sensor from SensorManager

3) Implement SensorEventListener

4) Register event lister with the Sensor

public class MainActivity extends AppCompatActivity {

    private SensorManager mSensorManager;
    private Sensor mSensor;
    private SensorEventListener mSensorEventListener;
    private TextView mTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mTextView = (TextView)findViewById(R.id.textView);

        mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
        mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);


        mSensorEventListener = new SensorEventListener() {
            @Override
            public void onSensorChanged(SensorEvent event) {
                // measures tilt along x axis
                float lux = event.values[0];
                mTextView.setText(String.valueOf(lux));
                Log.i("sensor value", String.valueOf(lux));
            }

            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {

            }
        };
    }

    @Override
    protected void onResume() {
        super.onResume();
        if(mSensor!=null)
            mSensorManager.registerListener(mSensorEventListener, mSensor, SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    protected void onPause() {
        if(mSensor!=null)
            mSensorManager.unregisterListener(mSensorEventListener);
        super.onPause();
    }
}