Waylon Brunette, Rita Sodt, Rohit Chaudhri, Mayank Goel, Michael Falcone, Jaylen VanOrden, Gaetano Borriello
Smartphones can now connect to a variety of external sensors over wired and wireless channels. However, ensuring proper device interaction can be burdensome, especially when a single application needs to integrate with a number of sensors using different communication channels and data formats. This paper presents a framework to simplify the interface between a variety of external sensors and consumer Android devices. The framework simplifies both application and driver development with abstractions that separate responsibilities between the user application, sensor framework, and device driver. These abstractions facilitate a componentized framework that allows developers to focus on writing minimal pieces of sensor-specific code enabling an ecosystem of reusable sensor drivers. The paper explores three alternative architectures for application-level drivers to understand trade-offs in performance, device portability, simplicity, and deployment ease. We explore these tradeoffs in the context of four sensing applications designed to support our work in the developing world. They highlight a range of sensor usage models for our application-level driver framework that vary data types, configuration methods, communication channels, and sampling rates to demonstrate the framework’s effectiveness.
ODK Sensors Paper Link
Public Review uploaded by LandonCox:
This public review was prepared by Landon Cox.
Smartphone apps, in cooperation with groups of distributed external
sensors, are increasingly used in the developing world and elsewhere
for data collection, coordination, and communication
proxying. However, carriers' reluctance to allow users to insert
third-party drivers into the kernel is a major obstacle to building
these apps on existing platforms. As a result, developers are forced
to add low-level code for interacting with external sensors over
Bluetooth or USB to apps, and concurrent access to sensors by multiple
apps must be coordinated in an ad-hoc, distributed fashion. The Open
Data Kit (ODK) Sensors framework solves these problems through a
user-level driver architecture for Android. The ODK Sensors framework
does not require super-user permissions and allows sensor drivers to
be installed directly from the Android Market. More important, it
greatly simplifies the way that app developers interact with external
sensors and allows drivers to share code as well.
The primary contribution of the paper is that it characterizes (1) the
throughput provided by various user-level driver architectures for
Android, and (2) how much simpler apps built on top of the ODK Sensor
framework are than existing approaches. Reviewers' primary criticism
of the paper was that the framework's design is based on well-known
principles. However, the reviewers ultimately felt that the paper
presented a good, well-evaluated solution to an important problem.
The authors believe the public review is a reasonable summary of the Open Data Kit Sensors paper. The project aims to allow end-users to easily augment their Android device with external sensing options by providing an application level framework capable of simultaneously communicating with multiple sensors over multiple communication channels. The framework separates developer concerns into different abstraction layers that all operate at the application level making it simple to augment consumer Android devices without modifying the OS.