Comparing the effectiveness of sensors in mobile operating systems
Ian Chen, Sensor Platforms Inc. - October 8, 2012
Mobile devices have adopted many different sensors, such that they have become the dominant volume driver for consumer grade sensing components. Managing and interpreting sensor data, whether using the Core Motion framework of iOS, the Sensor Manager functions in Android, or the Sensor Class Drivers in Windows 8, allows applications to accomplish similar goals. However, the capabilities of the three platforms differ in details, representing ongoing learning challenges for app developers and OS architects.
This paper looks at the scope of these mobile frameworks, particularly with respect to inertial sensors common to all three platforms, and highlights their commonalities, examines their differences, and identifies common areas that need improvements in order to expand sensor-enabled use cases.
Sensors in mobile devices provide real-time information about the user’s movements and environments. This information is then interpreted by algorithms, relaying the user’s activity and context to mobile applications, in order to help improve user interactions. Today, the smartphone is the largest adopter for consumer grade sensors. And modern operating systems, including iOS, Android, and Windows 8, have all adopted sophisticated frameworks to handle sensor data.
Table 1 shows the different types of sensors supported by each operating system (OS). All three work with essentially the same set of sensors, but Android currently provides support for more sensor types than the others. That, however, may not amount to a material advantage for Android because most phones today do not include any barometer or humidity sensor. And use cases for these sensors that benefit the end users are currently limited. The operative question for application developers isn’t how many sensor types a device supports, but how well it supports them.
Table 1. Sensor types supported in the key mobile operating systems
To further illustrate the similarity and differences among the OS’s, the remainder of this article focuses on how well they support inertial sensors: the accelerometer, magnetometer, and gyroscope. Specifically, the application programming interfaces (API) of each, and the underlying system architectures.
Inertial Sensor API
Apple’s iOS provides the CoreMotion framework for inertial sensors. The corresponding frameworks are SensorManager for Android, and the Sensor Class Drivers for Windows 8. Because the iPhone pioneered the inclusion of inertial sensors, these other frameworks track it closely. The similarities notwithstanding, there are differences that would exasperate cross-platform application developers. To illustrate, the following sections outline how acceleration information is generated in each system.