Native iOS Sensing

Sensing on commodity smartphone hardware and its application to human activity monitoring is the subject of my research as a PhD student. In this article I present an evaluation of the (mostly free) applications currently available on the iOS App Store pertinent to my work.

MobileLogger

This app is my favorite offline logging application that has great functionality and a damn fine interface. Compatible with iOS 4, it allows the logging of acceleration, location, heading and audio. Logging formats include CSV, JSON, Golden Cheetah and GPX.

Logs can be emailed in the desired format, or you can dump all logs (stored in a SQLite database) and have that emailed to you. A very interesting facet of the app is the backing web application which presents a unique geographical view of users who've chosen to upload their data. Developer Robert Carlson did an outstanding job with the user interface; reviewing logs is a breeze with pertinent metrics like duration, distance and speed.

The only faults I can give the app is a lack of gyroscope support using the new CoreMotion framework and that the Dashboard view looks a little simplistic and underwhelming compared to the polished quality of the rest of the app. Nitpicks really.

MobileLogger is available for free on the App Store and you can grab the Titanium source code (GPLv3) on GitHub.

SensorLogger

I require realtime sensor data feeds for my research, so when I needed something to fill the gap while my own app was in development, SensorLogger stepped into the breech and gave me what I needed. SensorLogger is much like MobileLogger, but with a more ... utilitarian interface, support for the gyroscope and realtime streaming over UDP sockets. Logs are recorded on the client side in CSV format and can be emailed after recording. Also available from the developer is a SensorLogger network listener (Objective-C) and a Quartz Composer plugin.

While data can be streamed, the downside is that there's no binary streaming mode — data is transmitted in text form and in the clear. I've also found occasional glitching in its storage of log data and transmission of high-frequency multi-channel data (i.e. turning it up to 11).

SensorLogger was developed by Scott Gerring at AmongstBits and is available for free on the App Store.

Sensor Monitor

Certainly the most comprehensive coverage of iOS sensing, Sensor Monitor by Ko, Young-woo is a hard app to love. The interface seems ad-hoc and consists of UI components dropped into a view and organised with tabs. Another gripe I have is that unlike SensorLogger and MobileLogger, logging in the free version consists of  individual sensor channels dumped into separate files.

Sensor Monitor's redeeming feature is it's coverage of the different sensors (location, heading, acceleration, rotation, audio, battery, and touch gestures). While I've not upgraded the app (UDP streaming becomes available), I could see this app becoming much more useful for non-techie users if the interface was cleaned-up and getting your data out for multi-sensing sessions wasn't such a pain. I can't really recommend this app for the average user, but the free version is good enough for developers and techies.

xSensor

Coming in second last is xSensor (free) and xSensor Pro (USD $9.99) by Crossbow Technology, Inc. This app came out quite a while ago and isn't quite up to date in terms of sensing capability, but it has a slick, easy-to-use interface that most users can appreciate.

Sensing is restricted to accelerometry, location and heading and is limited to some odd sample rates (1/4/16/32 Hz). Files can be logged to CSV format, and the paid Pro version increases the size of logged data. While the free version of the app is great for just about everyone, asking $9.99 for the pro version is really just gouging the user (I got mine on sale!).

Accelerometer-Simulator

Accelerometer-Simulator (AccSim) was my first experience with using iOS for activity monitoring purposes, and I've used this app for a number of different applications aside from my research (see: Processing and the iPhone). For data logging purposes it's okay, but its real purpose is to give your simulated app real accelerometer data through UIKit's UIAccelerometer and an XCode #include.

These days AccSim is a bit dated and doesn't support the new CoreMotion framework or any of the other sensors available on iOS devices, but if you're just starting out in iOS development and you'd like to get a feel for how an application in this class is designed, or you want to have real acceleration data samples in your app through the simulator, I thoroughly recommend AccSim.

From what I see of the other sensor apps on the store, a lot of people have used AccSim too. AccSim was originally developed by Otto Chrons and was made available for free by Brian Pratt on the App Store, with the project's source code (BSD) available on Google Code. You can find additional information about AccSim on its support page.