Logo Icon Logo
A Crowd-sourced Cookbook on Writing Great Android® Apps
GitHub logo Twitter logo OReilly Book Cover Art

Checking Whether a Device Is Facing Up or Facing Down Based on Screen Orientation Using an Accelerometer

Author: Rachee Singh
Published? true
FormatLanguage: WikiFormat

Problem:

Check for the orientation (Facing up/Facing Down) of the Android device.

Solution:

Checking for appropriate Accelerometer values.

Discussion:

We require to listen for changes in the accelerometer values, for this purpose we need to implement a SensorEventListener. The onSensorChanged method is called when sensor values change. Within this method we check if the values lie within a particular range for the device to be facing down or facing up.

To obtain the sensor object for an accelerometer:


List<android.hardware.Sensor> sensorList = deviceSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);
sensor = sensorList.get(0);


Creating the listener:


    private SensorEventListener accelerometerListener = new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent event) {
            float z = event.values[2];
            if (z >9 && z < 10)
                face.setText("FACE UP");
            else if (z > -10 && z < -9)
                face.setText("FACE DOWN");
        }

		@Override
		public void onAccuracyChanged(Sensor arg0, int arg1) {
			
		}

	   };

After implementing the listener along with the methods required, we need to register the listener for a particular sensor (which in our case is the accelerometer). 'sensor' is an object of Sensor class, it represents the sensor being used in the application (Accelerometer).


deviceSensorManager.registerListener(accelerometerListener, sensor, 0, null);

No records found.