public class

SensorManager

extends Binder
implements IInterface
java.lang.Object
   ↳ android.os.Binder
     ↳ android.hardware.SensorManager

Class Overview

Class that lets you access the device's sensors. Get an instance of this class by calling Context.getSystemService() with an argument of SENSOR_SERVICE.

Summary

Constants
int AXIS_MINUS_X see remapCoordinateSystem(float[], int, int, float[])
int AXIS_MINUS_Y see remapCoordinateSystem(float[], int, int, float[])
int AXIS_MINUS_Z see remapCoordinateSystem(float[], int, int, float[])
int AXIS_X see remapCoordinateSystem(float[], int, int, float[])
int AXIS_Y see remapCoordinateSystem(float[], int, int, float[])
int AXIS_Z see remapCoordinateSystem(float[], int, int, float[])
int DATA_X Index of the X value in the array returned by onSensorChanged(int, float[])
int DATA_Y Index of the Y value in the array returned by onSensorChanged(int, float[])
int DATA_Z Index of the Z value in the array returned by onSensorChanged(int, float[])
float GRAVITY_DEATH_STAR_I
float GRAVITY_EARTH
float GRAVITY_JUPITER
float GRAVITY_MARS
float GRAVITY_MERCURY
float GRAVITY_MOON
float GRAVITY_NEPTUNE
float GRAVITY_PLUTO
float GRAVITY_SATURN
float GRAVITY_SUN values returned by the accelerometer in various locations in the universe.
float GRAVITY_THE_ISLAND
float GRAVITY_URANUS
float GRAVITY_VENUS
float LIGHT_CLOUDY
float LIGHT_FULLMOON Various luminance values during the night (lux)
float LIGHT_NO_MOON
float LIGHT_OVERCAST
float LIGHT_SHADE
float LIGHT_SUNLIGHT
float LIGHT_SUNLIGHT_MAX Various luminance values during the day (lux)
float LIGHT_SUNRISE
float MAGNETIC_FIELD_EARTH_MAX Maximum magnetic field on Earth's surface
float MAGNETIC_FIELD_EARTH_MIN Minimum magnetic field on Earth's surface
int RAW_DATA_INDEX Offset to the untransformed values in the array returned by onSensorChanged(int, float[])
int RAW_DATA_X Index of the untransformed X value in the array returned by onSensorChanged(int, float[])
int RAW_DATA_Y Index of the untransformed Y value in the array returned by onSensorChanged(int, float[])
int RAW_DATA_Z Index of the untransformed Z value in the array returned by onSensorChanged(int, float[])
int SENSOR_ACCELEROMETER This constant is deprecated. use Sensor instead.
int SENSOR_ALL A constant that includes all sensors
int SENSOR_DELAY_FASTEST get sensor data as fast as possible
int SENSOR_DELAY_GAME rate suitable for games
int SENSOR_DELAY_NORMAL rate (default) suitable for screen orientation changes
int SENSOR_DELAY_UI rate suitable for the user interface
int SENSOR_LIGHT This constant is deprecated. use Sensor instead.
int SENSOR_MAGNETIC_FIELD This constant is deprecated. use Sensor instead.
int SENSOR_MAX Largest sensor ID
int SENSOR_MIN Smallest sensor ID
int SENSOR_ORIENTATION This constant is deprecated. use Sensor instead.
int SENSOR_ORIENTATION_RAW This constant is deprecated. use Sensor instead.
int SENSOR_PROXIMITY This constant is deprecated. use Sensor instead.
int SENSOR_STATUS_ACCURACY_HIGH This sensor is reporting data with maximum accuracy
int SENSOR_STATUS_ACCURACY_LOW This sensor is reporting data with low accuracy, calibration with the environment is needed
int SENSOR_STATUS_ACCURACY_MEDIUM This sensor is reporting data with an average level of accuracy, calibration with the environment may improve the readings
int SENSOR_STATUS_UNRELIABLE The values returned by this sensor cannot be trusted, calibration is needed or the environment doesn't allow readings
int SENSOR_TEMPERATURE This constant is deprecated. use Sensor instead.
int SENSOR_TRICORDER This constant is deprecated. use Sensor instead.
float STANDARD_GRAVITY Standard gravity (g) on Earth.
[Expand]
Inherited Constants
From interface android.os.IBinder
Public Methods
IBinder asBinder()
Retrieve the Binder object associated with this interface.
static IRotationWatcher asInterface(IBinder obj)
Cast an IBinder object into an IRotationWatcher interface, generating a proxy if needed.
Sensor getDefaultSensor(int type)
Use this method to get the default sensor for a given type.
static float getInclination(float[] I)
Computes the geomagnetic inclination angle in radians from the inclination matrix I returned by getRotationMatrix(float[], float[], float[], float[]).
static float[] getOrientation(float[] R, float[] values)
Computes the device's orientation based on the rotation matrix.
static boolean getRotationMatrix(float[] R, float[] I, float[] gravity, float[] geomagnetic)
Computes the inclination matrix I as well as the rotation matrix R transforming a vector from the device coordinate system to the world's coordinate system which is defined as a direct orthonormal basis, where:
  • X is defined as the vector product Y.Z (It is tangential to the ground at the device's current location and roughly points East).
  • List<Sensor> getSensorList(int type)
    Use this method to get the list of available sensors of a certain type.
    int getSensors()
    This method is deprecated. This method is deprecated, use getSensorList(int) instead
    abstract void onRotationChanged(int rotation)
    boolean onTransact(int code, Parcel data, Parcel reply, int flags)
    Default implementation is a stub that returns false.
    boolean registerListener(SensorEventListener listener, Sensor sensor, int rate, Handler handler)
    Registers a SensorEventListener for the given sensor.
    boolean registerListener(SensorListener listener, int sensors, int rate)
    This method is deprecated. This method is deprecated, use registerListener(SensorEventListener, Sensor, int) instead.
    boolean registerListener(SensorListener listener, int sensors)
    This method is deprecated. This method is deprecated, use registerListener(SensorEventListener, Sensor, int) instead.
    boolean registerListener(SensorEventListener listener, Sensor sensor, int rate)
    Registers a SensorEventListener for the given sensor.
    static boolean remapCoordinateSystem(float[] inR, int X, int Y, float[] outR)
    Rotates the supplied rotation matrix so it is expressed in a different coordinate system.
    void unregisterListener(SensorListener listener)
    This method is deprecated. This method is deprecated, use unregisterListener(SensorEventListener) instead.
    void unregisterListener(SensorEventListener listener)
    Unregisters a listener for all sensors.
    void unregisterListener(SensorEventListener listener, Sensor sensor)
    Unregisters a listener for the sensors with which it is registered.
    void unregisterListener(SensorListener listener, int sensors)
    This method is deprecated. This method is deprecated, use unregisterListener(SensorEventListener, Sensor) instead.
    [Expand]
    Inherited Methods
    From class android.os.Binder
    From class java.lang.Object
    From interface android.os.IBinder
    From interface android.os.IInterface

    Constants

    public static final int AXIS_MINUS_X

    Constant Value: 129 (0x00000081)

    public static final int AXIS_MINUS_Y

    Constant Value: 130 (0x00000082)

    public static final int AXIS_MINUS_Z

    Constant Value: 131 (0x00000083)

    public static final int AXIS_X

    Constant Value: 1 (0x00000001)

    public static final int AXIS_Y

    Constant Value: 2 (0x00000002)

    public static final int AXIS_Z

    Constant Value: 3 (0x00000003)

    public static final int DATA_X

    Index of the X value in the array returned by onSensorChanged(int, float[])

    Constant Value: 0 (0x00000000)

    public static final int DATA_Y

    Index of the Y value in the array returned by onSensorChanged(int, float[])

    Constant Value: 1 (0x00000001)

    public static final int DATA_Z

    Index of the Z value in the array returned by onSensorChanged(int, float[])

    Constant Value: 2 (0x00000002)

    public static final float GRAVITY_DEATH_STAR_I

    Constant Value: 3.5303614E-7

    public static final float GRAVITY_EARTH

    Constant Value: 9.80665

    public static final float GRAVITY_JUPITER

    Constant Value: 23.12

    public static final float GRAVITY_MARS

    Constant Value: 3.71

    public static final float GRAVITY_MERCURY

    Constant Value: 3.7

    public static final float GRAVITY_MOON

    Constant Value: 1.6

    public static final float GRAVITY_NEPTUNE

    Constant Value: 11.0

    public static final float GRAVITY_PLUTO

    Constant Value: 0.6

    public static final float GRAVITY_SATURN

    Constant Value: 8.96

    public static final float GRAVITY_SUN

    values returned by the accelerometer in various locations in the universe. all values are in SI units (m/s^2)

    Constant Value: 275.0

    public static final float GRAVITY_THE_ISLAND

    Constant Value: 4.815162

    public static final float GRAVITY_URANUS

    Constant Value: 8.69

    public static final float GRAVITY_VENUS

    Constant Value: 8.87

    public static final float LIGHT_CLOUDY

    Constant Value: 100.0

    public static final float LIGHT_FULLMOON

    Various luminance values during the night (lux)

    Constant Value: 0.25

    public static final float LIGHT_NO_MOON

    Constant Value: 0.0010

    public static final float LIGHT_OVERCAST

    Constant Value: 10000.0

    public static final float LIGHT_SHADE

    Constant Value: 20000.0

    public static final float LIGHT_SUNLIGHT

    Constant Value: 110000.0

    public static final float LIGHT_SUNLIGHT_MAX

    Various luminance values during the day (lux)

    Constant Value: 120000.0

    public static final float LIGHT_SUNRISE

    Constant Value: 400.0

    public static final float MAGNETIC_FIELD_EARTH_MAX

    Maximum magnetic field on Earth's surface

    Constant Value: 60.0

    public static final float MAGNETIC_FIELD_EARTH_MIN

    Minimum magnetic field on Earth's surface

    Constant Value: 30.0

    public static final int RAW_DATA_INDEX

    Offset to the untransformed values in the array returned by onSensorChanged(int, float[])

    Constant Value: 3 (0x00000003)

    public static final int RAW_DATA_X

    Index of the untransformed X value in the array returned by onSensorChanged(int, float[])

    Constant Value: 3 (0x00000003)

    public static final int RAW_DATA_Y

    Index of the untransformed Y value in the array returned by onSensorChanged(int, float[])

    Constant Value: 4 (0x00000004)

    public static final int RAW_DATA_Z

    Index of the untransformed Z value in the array returned by onSensorChanged(int, float[])

    Constant Value: 5 (0x00000005)

    public static final int SENSOR_ACCELEROMETER

    This constant is deprecated.use Sensor instead.

    A constant describing an accelerometer. See SensorListener for more details.

    Constant Value: 2 (0x00000002)

    public static final int SENSOR_ALL

    A constant that includes all sensors

    Constant Value: 127 (0x0000007f)

    public static final int SENSOR_DELAY_FASTEST

    get sensor data as fast as possible

    Constant Value: 0 (0x00000000)

    public static final int SENSOR_DELAY_GAME

    rate suitable for games

    Constant Value: 1 (0x00000001)

    public static final int SENSOR_DELAY_NORMAL

    rate (default) suitable for screen orientation changes

    Constant Value: 3 (0x00000003)

    public static final int SENSOR_DELAY_UI

    rate suitable for the user interface

    Constant Value: 2 (0x00000002)

    public static final int SENSOR_LIGHT

    This constant is deprecated.use Sensor instead.

    A constant describing an ambient light sensor See SensorListener for more details.

    Constant Value: 16 (0x00000010)

    public static final int SENSOR_MAGNETIC_FIELD

    This constant is deprecated.use Sensor instead.

    A constant describing a magnetic sensor See SensorListener for more details.

    Constant Value: 8 (0x00000008)

    public static final int SENSOR_MAX

    Largest sensor ID

    Constant Value: 64 (0x00000040)

    public static final int SENSOR_MIN

    Smallest sensor ID

    Constant Value: 1 (0x00000001)

    public static final int SENSOR_ORIENTATION

    This constant is deprecated.use Sensor instead.

    A constant describing an orientation sensor. See SensorListener for more details.

    Constant Value: 1 (0x00000001)

    public static final int SENSOR_ORIENTATION_RAW

    This constant is deprecated.use Sensor instead.

    A constant describing an orientation sensor. See SensorListener for more details.

    Constant Value: 128 (0x00000080)

    public static final int SENSOR_PROXIMITY

    This constant is deprecated.use Sensor instead.

    A constant describing a proximity sensor See SensorListener for more details.

    Constant Value: 32 (0x00000020)

    public static final int SENSOR_STATUS_ACCURACY_HIGH

    This sensor is reporting data with maximum accuracy

    Constant Value: 3 (0x00000003)

    public static final int SENSOR_STATUS_ACCURACY_LOW

    This sensor is reporting data with low accuracy, calibration with the environment is needed

    Constant Value: 1 (0x00000001)

    public static final int SENSOR_STATUS_ACCURACY_MEDIUM

    This sensor is reporting data with an average level of accuracy, calibration with the environment may improve the readings

    Constant Value: 2 (0x00000002)

    public static final int SENSOR_STATUS_UNRELIABLE

    The values returned by this sensor cannot be trusted, calibration is needed or the environment doesn't allow readings

    Constant Value: 0 (0x00000000)

    public static final int SENSOR_TEMPERATURE

    This constant is deprecated.use Sensor instead.

    A constant describing a temperature sensor See SensorListener for more details.

    Constant Value: 4 (0x00000004)

    public static final int SENSOR_TRICORDER

    This constant is deprecated.use Sensor instead.

    A constant describing a Tricorder See SensorListener for more details.

    Constant Value: 64 (0x00000040)

    public static final float STANDARD_GRAVITY

    Standard gravity (g) on Earth. This value is equivalent to 1G

    Constant Value: 9.80665

    Public Methods

    public IBinder asBinder ()

    Retrieve the Binder object associated with this interface. You must use this instead of a plain cast, so that proxy objects can return the correct result.

    public static IRotationWatcher asInterface (IBinder obj)

    Cast an IBinder object into an IRotationWatcher interface, generating a proxy if needed.

    public Sensor getDefaultSensor (int type)

    Use this method to get the default sensor for a given type. Note that the returned sensor could be a composite sensor, and its data could be averaged or filtered. If you need to access the raw sensors use getSensorList.

    Parameters
    type of sensors requested
    Returns
    • the default sensors matching the asked type.

    public static float getInclination (float[] I)

    Computes the geomagnetic inclination angle in radians from the inclination matrix I returned by getRotationMatrix(float[], float[], float[], float[]).

    Parameters
    I inclination matrix see getRotationMatrix(float[], float[], float[], float[]).
    Returns
    • The geomagnetic inclination angle in radians.

    public static float[] getOrientation (float[] R, float[] values)

    Computes the device's orientation based on the rotation matrix.

    When it returns, the array values is filled with the result:

  • values[0]: azimuth, rotation around the Z axis.
  • values[1]: pitch, rotation around the X axis.
  • values[2]: roll, rotation around the Y axis.
  • Parameters
    R rotation matrix see getRotationMatrix(float[], float[], float[], float[]).
    values an array of 3 floats to hold the result.
    Returns
    • The array values passed as argument.

    public static boolean getRotationMatrix (float[] R, float[] I, float[] gravity, float[] geomagnetic)

    Computes the inclination matrix I as well as the rotation matrix R transforming a vector from the device coordinate system to the world's coordinate system which is defined as a direct orthonormal basis, where:

  • X is defined as the vector product Y.Z (It is tangential to the ground at the device's current location and roughly points East).
  • Y is tangential to the ground at the device's current location and points towards the magnetic North Pole.
  • Z points towards the sky and is perpendicular to the ground.

  • By definition:

    [0 0 g] = R * gravity (g = magnitude of gravity)

    [0 m 0] = I * R * geomagnetic (m = magnitude of geomagnetic field)

    R is the identity matrix when the device is aligned with the world's coordinate system, that is, when the device's X axis points toward East, the Y axis points to the North Pole and the device is facing the sky.

    I is a rotation matrix transforming the geomagnetic vector into the same coordinate space as gravity (the world's coordinate space). I is a simple rotation around the X axis. The inclination angle in radians can be computed with getInclination(float[]).


    Each matrix is returned either as a 3x3 or 4x4 row-major matrix depending on the length of the passed array:

    If the array length is 16:

       /  M[ 0]   M[ 1]   M[ 2]   M[ 3]  \
       |  M[ 4]   M[ 5]   M[ 6]   M[ 7]  |
       |  M[ 8]   M[ 9]   M[10]   M[11]  |
       \  M[12]   M[13]   M[14]   M[15]  /
    
    This matrix is ready to be used by OpenGL ES's glLoadMatrixf(float[], int).

    Note that because OpenGL matrices are column-major matrices you must transpose the matrix before using it. However, since the matrix is a rotation matrix, its transpose is also its inverse, conveniently, it is often the inverse of the rotation that is needed for rendering; it can therefore be used with OpenGL ES directly.

    Also note that the returned matrices always have this form:

       /  M[ 0]   M[ 1]   M[ 2]   0  \
       |  M[ 4]   M[ 5]   M[ 6]   0  |
       |  M[ 8]   M[ 9]   M[10]   0  |
       \      0       0       0   1  /
    

    If the array length is 9:

       /  M[ 0]   M[ 1]   M[ 2]  \
       |  M[ 3]   M[ 4]   M[ 5]  |
       \  M[ 6]   M[ 7]   M[ 8]  /
    

    The inverse of each matrix can be computed easily by taking its transpose.

    The matrices returned by this function are meaningful only when the device is not free-falling and it is not close to the magnetic north. If the device is accelerating, or placed into a strong magnetic field, the returned matrices may be inaccurate.

    Parameters
    R is an array of 9 floats holding the rotation matrix R when this function returns. R can be null.

    I is an array of 9 floats holding the rotation matrix I when this function returns. I can be null.

    gravity is an array of 3 floats containing the gravity vector expressed in the device's coordinate. You can simply use the values returned by a SensorEvent of a Sensor of type TYPE_ACCELEROMETER.

    geomagnetic is an array of 3 floats containing the geomagnetic vector expressed in the device's coordinate. You can simply use the values returned by a SensorEvent of a Sensor of type TYPE_MAGNETIC_FIELD.
    Returns
    • true on success

      false on failure (for instance, if the device is in free fall). On failure the output matrices are not modified.

    public List<Sensor> getSensorList (int type)

    Use this method to get the list of available sensors of a certain type. Make multiple calls to get sensors of different types or use Sensor.TYPE_ALL to get all the sensors.

    Parameters
    type of sensors requested
    Returns
    • a list of sensors matching the asked type.

    public int getSensors ()

    This method is deprecated.This method is deprecated, use getSensorList(int) instead

    Returns
    • available sensors.

    public abstract void onRotationChanged (int rotation)

    public boolean onTransact (int code, Parcel data, Parcel reply, int flags)

    Default implementation is a stub that returns false. You will want to override this to do the appropriate unmarshalling of transactions.

    If you want to call this, call transact().

    public boolean registerListener (SensorEventListener listener, Sensor sensor, int rate, Handler handler)

    Registers a SensorEventListener for the given sensor.

    Parameters
    listener A SensorEventListener object.
    sensor The Sensor to register to.
    rate The rate sensor events are delivered at. This is only a hint to the system. Events may be received faster or slower than the specified rate. Usually events are received faster. The value must be one of SENSOR_DELAY_NORMAL, SENSOR_DELAY_UI, SENSOR_DELAY_GAME, or SENSOR_DELAY_FASTEST.
    handler The Handler the sensor events will be delivered to.
    Returns
    • true if the sensor is supported and successfully enabled.

    public boolean registerListener (SensorListener listener, int sensors, int rate)

    This method is deprecated.This method is deprecated, use registerListener(SensorEventListener, Sensor, int) instead.

    Registers a SensorListener for given sensors.

    Parameters
    listener sensor listener object
    sensors a bit masks of the sensors to register to
    rate rate of events. This is only a hint to the system. events may be received faster or slower than the specified rate. Usually events are received faster. The value must be one of SENSOR_DELAY_NORMAL, SENSOR_DELAY_UI, SENSOR_DELAY_GAME, or SENSOR_DELAY_FASTEST.
    Returns
    • true if the sensor is supported and successfully enabled

    public boolean registerListener (SensorListener listener, int sensors)

    This method is deprecated.This method is deprecated, use registerListener(SensorEventListener, Sensor, int) instead.

    Registers a listener for given sensors.

    Parameters
    listener sensor listener object
    sensors a bit masks of the sensors to register to
    Returns
    • true if the sensor is supported and successfully enabled

    public boolean registerListener (SensorEventListener listener, Sensor sensor, int rate)

    Registers a SensorEventListener for the given sensor.

    Parameters
    listener A SensorEventListener object.
    sensor The Sensor to register to.
    rate The rate sensor events are delivered at. This is only a hint to the system. Events may be received faster or slower than the specified rate. Usually events are received faster. The value must be one of SENSOR_DELAY_NORMAL, SENSOR_DELAY_UI, SENSOR_DELAY_GAME, or SENSOR_DELAY_FASTEST.
    Returns
    • true if the sensor is supported and successfully enabled.

    public static boolean remapCoordinateSystem (float[] inR, int X, int Y, float[] outR)

    Rotates the supplied rotation matrix so it is expressed in a different coordinate system. This is typically used when an application needs to compute the three orientation angles of the device (see getOrientation(float[], float[])) in a different coordinate system.

    When the rotation matrix is used for drawing (for instance with OpenGL ES), it usually doesn't need to be transformed by this function, unless the screen is physically rotated, such as when used in landscape mode.

    Examples:

  • Using the camera (Y axis along the camera's axis) for an augmented reality application where the rotation angles are needed :
  • remapCoordinateSystem(inR, AXIS_X, AXIS_Z, outR);

  • Using the device as a mechanical compass in landscape mode:
  • remapCoordinateSystem(inR, AXIS_Y, AXIS_MINUS_X, outR);

    Beware of the above example. This call is needed only if the device is physically used in landscape mode to calculate the rotation angles (see getOrientation(float[], float[])). If the rotation matrix is also used for rendering, it may not need to be transformed, for instance if your Activity is running in landscape mode.

    Since the resulting coordinate system is orthonormal, only two axes need to be specified.

    Parameters
    inR the rotation matrix to be transformed. Usually it is the matrix returned by getRotationMatrix(float[], float[], float[], float[]).
    X defines on which world axis and direction the X axis of the device is mapped.
    Y defines on which world axis and direction the Y axis of the device is mapped.
    outR the transformed rotation matrix. inR and outR can be the same array, but it is not recommended for performance reason.
    Returns
    • true on success. false if the input parameters are incorrect, for instance if X and Y define the same axis. Or if inR and outR don't have the same length.

    public void unregisterListener (SensorListener listener)

    This method is deprecated.This method is deprecated, use unregisterListener(SensorEventListener) instead.

    Unregisters a listener for all sensors.

    Parameters
    listener a SensorListener object

    public void unregisterListener (SensorEventListener listener)

    Unregisters a listener for all sensors.

    Parameters
    listener a SensorListener object

    public void unregisterListener (SensorEventListener listener, Sensor sensor)

    Unregisters a listener for the sensors with which it is registered.

    Parameters
    listener a SensorEventListener object
    sensor the sensor to unregister from

    public void unregisterListener (SensorListener listener, int sensors)

    This method is deprecated.This method is deprecated, use unregisterListener(SensorEventListener, Sensor) instead.

    Unregisters a listener for the sensors with which it is registered.

    Parameters
    listener a SensorListener object
    sensors a bit masks of the sensors to unregister from