AWARE is an Android instrumentation framework for logging, sharing and reusing mobile context. It comes bundled with applications that understand YOU.
UPDATED: AWARE: a 10 year long journey.
AWARE is this year 10 years. Having adopted at the time the cutting-edge tools to develop a client-server architecture (PHP + MySQL) and using Android initially, AWARE quickly became a go-to solution to collect human and sensor-based data using smartphones. Six years ago, Yuuki volunteered to create the iOS version of the client and so AWARE became cross-platform. There are some differences between the sensing capabilities and how the data is formated, documented here.
However, as everything regarding technology, the dashboard has over time lost a significant portion of its functionality due to breaking libraries changes (MQTT is not available for iOS, our server was being used for SPAM over MQTT, PHP has evolved from version 4.0, MySQL has significantly changed from 5.2, CodeIgniter has also evolved from the version we used to implement this). One big roadblock for keeping up with the changes was simply the fact we had so many people using the backend we deployed to run actual studies, despite we only intended this to be a demonstration of what it could do. We shared the source code of the PHP server and created a tutorial on how to deploy it. Many have done so, but not all. This meant that if we modified anything live, we could compromise the work of others. So we followed the “if it ain’t broke, don’t fix it”. We knew the limitations of the server and the workarounds and have documented them here over time and shared them in our Slack community.
I have recently re-implemented the backend, to greatly simplify what it does: act as a cross-platform RESTful API to manage sensor data. My initial effort was in NodeJS, but that quickly revealed to have the same pitfalls as PHP, evolving too fast and with several breaking updates. Then I found Vert.X. Maintained by Red Hat, an Eclipse project, I decided to use Vert.X so that the server would be self-contained in a JVM instance per a study, allowing anyone to run their own server even on a Raspberry Pi using OpenJDK 11 and the code is written in Kotlin. It supports many APIs and has a great community around it. The server is no longer restricted to MySQL alone, working with Postgres too. It is using JSON as a data format, thus solving data migration issues from the server-side whenever we had to change the database structure on the client-side. The source of the AWARE Micro server and instructions on how to deploy it is at https://github.com/denzilferreira/aware-micro
Due to a lack of resources and ultimately time to maintain the whole framework (mostly myself and Yuuki), both client and server codebase, we both feel that AWARE is being held back because of this. Being open-source from the start, we both have taken a bug-fixing kind of roles, rather than keeping the client up-to-date to all the significant changes that come to Android and iOS, at least three times a year with OS updates and library changes; or adding new features that sometimes we get as suggestions to add. Some of the changes are easy to adapt to, others not so much requiring significant changes on the clients to be compliant, or even feasible.
In addition, Google has made changes in how Android fundamentally prioritizes battery life and restricts data collection very aggressively. So much so, that it is impossible to even host an AWARE-based application on the Play Store due to the permissions and data access it has, and upcoming Android 11 does a number of API changes that render the current implementation of AWARE’s client unable to collect data reliably. iOS itself has introduced changes that also restrict access to users’ data.
After a long reflection on this, we decided to reimplement the client from scratch using a cross-platform GUI (Flutter) and homogenize the software architecture for both Android and iOS in their native languages (Kotlin and Swift, respectively), thus being available across Flutter, native Android and iOS libraries. Instead of a monolithic library, we will follow the same approach that Google did for their Google Services, making each sensor independent, thus allowing anyone to create applications that only use a subset of the functionality as desired.
To facilitate this massive undertaking and rewrite, several members of our community have come forward to volunteer their time to make it happen. We are turning off the old server by the end of August as the new client will not be compatible with it. In addition, thus far, this server (api.awareframework.com) and website has been mostly funded by academic funding, which has been increasingly challenging to sustain (>250€/month). So if you are using our api.awareframework.com dashboard, please do not use it anymore. Deploy your own if you wish to use the current client while we create the new server component. We will transition this page from WordPress to GitHub Pages, thus anyone can contribute content and tutorials over time, thus making this webpage freely hosted at GitHub – yet keeping this domain. All sensors documentation in both platforms will be also in the respective GitHub repositories.
The redesign of the client and server will take some time (no ETA). In the meantime, the current client and servers (both self-hosted old and aware-micro) will be available from GitHub for you to install on your own server.
Once the new client is available for beta testing, we’ll publish it on the respective stores and we will update this page to point you to how to get the new server up-and-running.
We look forward to the future iteration of AWARE, this time around, built with you and for you.
Denzil & Yuuki
Google’s Play Store
You won’t find AWARE on the Google Play Store. Being an application to conduct user-studies, we use many permissions that current developer guidelines do not allow AWARE Client to be published. We are now hosting the client. This allows us to provide you with the tool you are used to without restrictions and allows us to better support the platform going forward.
Easy to use, plugin-based mobile context information. Stop re-inventing the wheel!
Open-source and community supported. Maintained by the University of Oulu in Finland.
Widely adopted and supported by scientists. Multidisciplinary research taken to another level.