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();
}
}