Components of the sensor framework
Android has provided methods, classes, and interfaces for accessing sensors and their data that is available on an Android device. These sets of methods, classes, and interfaces are collectively referred to as the sensor framework and are a part of the android.hardware
package. It consists of four major components: SensorManager
, Sensor
, SensorEvent
, and SensorEventListener
. The entry point to the framework is the SensorManager
class, which allows an app to request sensor information and register to receive sensor data. When registered, sensor data values are sent to a SensorEventListener
interface in the form of a SensorEvent
class that contains information produced from a given sensor. Let's look at each component in detail.
SensorManager
SensorManager
is the class that makes it possible for your app to get access to the sensors. It creates the instance of the system sensor service, which provides various APIs to access sensor information on the device. It exposes the methods that list the available and default sensors on the device. This class also provides several sensor constants that are used to report sensor accuracy, sampling period, and calibrate sensors. One of the important tasks of this class is to register and unregister sensor event listeners for accessing a particular sensor.
SensorEventListener
SensorEventListener
is the interface that provides two callbacks to receive the sensor notification (sensor event). OnSensorChanged()
is the first method of the interface, which is called whenever there is any change in the sensor values. The change in sensor value is communicated through the SensorEvent
object, passed as a parameter to this method. OnAccuracyChanged()
is the second method, which is called whenever there is a change in the accuracy of sensor values. The sensor object and newly reported accuracy in integers are sent as parameters to this method. There are four accuracy integer constants supported by SensorManager
. They are as follows:
SENSOR_STATUS_ACCURACY_HIGH
SENSOR_STATUS_ACCURACY_MEDIUM
SENSOR_STATUS_ACCURACY_LOW
SENSOR_STATUS_ACCURACY_UNRELIABLE
Sensor
Sensor
is the class that is used to create an instance of a specific sensor. This class provides various methods that let you determine a sensor's capabilities:
- Maximum Range
- Minimum Delay
- Name
- Power
- Resolution
- Reporting Mode
- Type
- Vendor
- Version
- isWakeUp Sensor
We will be discussing each capability and method in detail in the Time for action - knowing the individual sensor capability section of Chapter 2, Playing with Sensors.
SensorEvent
SensorEvent
is a special kind of class that is used by the operating system to report changes in the sensor values to the listeners. This SensorEvent
object contains the following four elements:
values[]
: This is a multidimensional array that holds the sensor valuestimestamp
: This refers to the time in nanoseconds at which the event happenedaccuracy
: This is one of the four accuracy integer constantssensor
: This is the sensor type that generated this data
The following class diagram depicts the important methods and variables for the four key components of the Sensor Framework: