# Android projects by Chris Smith

## Context-aware framework

The goal of the context-aware framework is to create an open, easy-to-use framework for application developers to retrieve information about the user's context. This context information includes low-level activites (walking, sitting, running, etc), places (home, work, travelling), nearby people (friends, strangers, etc) and more.

At present the project is in a research and data-collection phase. The applications presented below are intended to assist in gathering data which can be analysed to determine suitable algorithms and parameters to perform the detection necessary to correctly classify and extract context information. While they are published on the Android market and freely available to download, they do not provide much benefit to end users, so it is not anticipated that they will be widely used outside a small set of voluntary testers.

Issues, suggestions and feedback can be sent to me directly (either via the address published on the application's market page, or the details on my home page), or raised as issues on the project page over at GitHub.

### Sensor Logger

The Sensor Logger logs data from your device's accelerometer, magnetic field, and orientation sensors. It then uses some of this data to try and determine what activity you were performing.

Once you've confirmed or corrected the activity prediction, the sensor data, guessed activity, and any corrections made are sent to this website, where they can be analysed to help improve the algorithm in the future.

At present, the Sensor Logger can (try to!) classify: walking (normally, up stairs, and down stairs), standing, sitting, travelling by bus, travelling by car, and dancing. If you regularly perform any other activity with your phone on you, please run the application and submit a correction and it can be included in future versions!

You can review the data you submit on this website. Just follow the unique link from the Sensor Logger application to see graphs of your sensor readings, details about how the data has been manually classified (if applicable), and a graphical representation of how the data is split up into discrete windows.

#### Changelog

- 0.2.3 → 0.2.4: Added analytics
- 0.2.2 → 0.2.3: Fix another force close, updated model for classification
- 0.2.1 → 0.2.2: Fix force close, add reporting of exceptions
- 0.2.0 → 0.2.1: Bug fix related to turning display off
- 0.1.6 → 0.2.0: Near-complete rewrite: much improved UI, classification on device, bug fixes
- 0.1.5 → 0.1.6: Fix force close on devices that use MEIDs not IMEI numbers
- 0.1.4 → 0.1.5: Make edit boxes single line only
- 0.1.3 → 0.1.4: Add support for horizontal layout
- 0.1.2 → 0.1.3: Added link to portal webpage
- 0.1.1 → 0.1.2: Fix force close when no magnetic field sensors are available, disable upload button
- 0.1.0 → 0.1.1: Add 10s delay at start, disable auto start, disable manual stopping, fix various uploader bugs

### Activity Recorder

The Activity Recorder performs similar activity classification to the Sensor Logger, but does it periodically in a background service. The collected data can be viewed in a basic list.

This will be the basis for the main context-aware framework — additional sources of information (location, noise, etc) will be integrated, and the service will eventually provide an API for other applications to listen out for changes in the user's activity.

The classification algorithm now uses scores assigned to each possible classification instead of merely using the results from the last set of sensor input. This means that the classifications may be slightly delayed (it will take a minute or so to react to changes in activity), but it makes the algorithm much more tolerant of occasional erroneous readings.

#### Changelog

- 0.2.0 → 0.2.1: Added analytics
- 0.1.3 → 0.2.0: Changed classification algorithm to favour existing classifications, change recording to one sample every 30 seconds instead of 2 overlapping samples every 60 seconds, disable logging, durations measured in seconds now show as "<1 min"
- 0.1.2 → 0.1.3: More efficient updating of activity list, give feedback when starting service
- 0.1.1 → 0.1.2: Fix various issues when starting service
- 0.1.0 → 0.1.1: Fix exception when stopping service in some conditions