<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. ICT</journal-id>
<journal-title>Frontiers in ICT</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. ICT</abbrev-journal-title>
<issn pub-type="epub">2297-198X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fict.2015.00006</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>ICT</subject>
<subj-group>
<subject>Technology Report</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>AWARE: Mobile Context Instrumentation Framework</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Ferreira</surname> <given-names>Denzil</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="corresp" rid="cor1">&#x0002A;</xref>
<uri xlink:href="http://frontiersin.org/people/u/180659"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name><surname>Kostakos</surname> <given-names>Vassilis</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="corresp" rid="cor1">&#x0002A;</xref>
<uri xlink:href="http://frontiersin.org/people/u/152913"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Dey</surname> <given-names>Anind K.</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<uri xlink:href="http://frontiersin.org/people/u/182129"/>
</contrib>
</contrib-group>
<aff id="aff1"><sup>1</sup><institution>Community Imaging Group (COMAG), Department of Computer Science and Engineering, University of Oulu</institution>, <addr-line>Oulu</addr-line>, <country>Finland</country></aff>
<aff id="aff2"><sup>2</sup><institution>Ubicomp Laboratory, Human-Computer Interaction Institute, Carnegie Mellon University</institution>, <addr-line>Pittsburgh, PA</addr-line>, <country>USA</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Javier Jaen, Universitat Polit&#x000E8;cnica de Val&#x000E8;ncia, Spain</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Carlos Duarte, Universidade de Lisboa, Portugal; Rub&#x000E9;n San-Segundo, Universidad Polit&#x000E9;cnica de Madrid, Spain</p></fn>
<corresp content-type="corresp" id="cor1">&#x0002A;Correspondence: Denzil Ferreira and Vassilis Kostakos, Community Imaging Group (COMAG), Department of Computer Science and Engineering, University of Oulu, Erkki Koiso-Kanttilan katu 3, Door E, Oulu FI-90014, Finland e-mail: <email>denzil.ferreira&#x00040;ee.oulu.fi</email>; <email>vassilis&#x00040;ee.oulu.fi</email></corresp>
<fn fn-type="other" id="fn001"><p>This article was submitted to Human-Media Interaction, a section of the journal Frontiers in ICT.</p></fn>
</author-notes>
<pub-date pub-type="epub">
<day>20</day>
<month>04</month>
<year>2015</year>
</pub-date>
<pub-date pub-type="collection">
<year>2015</year>
</pub-date><volume>2</volume>
<elocation-id>6</elocation-id>
<history>
<date date-type="received">
<day>25</day>
<month>02</month>
<year>2015</year>
</date>
<date date-type="accepted">
<day>31</day>
<month>03</month>
<year>2015</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2015 Ferreira, Kostakos and Dey.</copyright-statement>
<copyright-year>2015</copyright-year>
<license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) or licensor are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license>
</permissions>
<abstract>
<p>We present a mobile instrumentation toolkit, AWARE, an open-source effort to develop an extensible and reusable platform for capturing, inferring, and generating context on mobile devices. Mobile phones are sensor-rich but resource-constrained, and therefore several considerations need to be addressed when creating a research tool that ensures problem-free context collection. We demonstrate how AWARE can mitigate researchers&#x02019; effort when building mobile data-logging tools and context-aware applications, with minimal battery impact. By encapsulating implementation details of sensor data retrieval and exposing the sensed context as higher-level abstractions, AWARE shifts the focus from software development to data analysis, both quantitative and qualitative. We have evaluated AWARE in several case studies and discuss its use, power consumption, and scalability.</p>
</abstract>
<kwd-group>
<kwd>context-aware systems</kwd>
<kwd>ubiquitous data capture framework</kwd>
<kwd>mobile toolkit</kwd>
<kwd>mobile sensing</kwd>
<kwd>user studies</kwd>
<kwd>mobile questionnaires</kwd>
<kwd>ESM</kwd>
</kwd-group>
<contract-num rid="cn001">137736</contract-num>
<contract-num rid="cn001">276786</contract-num>
<contract-num rid="cn002">2932/31/2009</contract-num>
<contract-sponsor id="cn001">Academy of Finland project</contract-sponsor>
<contract-sponsor id="cn002">TEKES project</contract-sponsor>
<counts>
<fig-count count="3"/>
<table-count count="2"/>
<equation-count count="0"/>
<ref-count count="15"/>
<page-count count="9"/>
<word-count count="6243"/>
</counts>
</article-meta>
</front>
<body>
<sec id="S1" sec-type="introduction">
<title>Introduction</title>
<p>Mobile phones have become miniaturized computers that fit in a pocket. They are inherently personal and their potential to sense the user&#x02019;s environment, i.e., context, is appealing to researchers. The convenience and availability of mobile phones and application stores make it easier for a researcher to reach thousands of users. More importantly, mobile phones have increasingly more built-in sensors (e.g., accelerometer, gyroscope, luminance). They are primarily used to enhance the user experience, such as application functionality or mobile phone user interaction (e.g., vibration feedback, screen orientation detection), but are nowadays being leveraged for research purposes.</p>
<p>Despite the many contributions in mobile computing research, there are still challenges to overcome. First, it still remains laborious for scientists to conduct human subject studies that involve mobile devices. Second, developers who wish to create context-aware applications on mobile phones typically need to start from scratch. Lastly, end-users need to use multiple and often isolated (i.e., not sharing data) applications to make their device more context-aware. We argue that these three important limitations are due to the same reason: there is a lack of open and reusable software for creating context-aware applications on mobile device.</p>
<p>To address this need, we designed and created AWARE (accessible at <uri xlink:href="http://www.awareframework.com">http://www.awareframework.com</uri>, since 2011), an open platform for context-aware mobile computing research, application development, and for the end-user. AWARE allows creating new mobile research tools for data mining, visualization, and analysis that builds on previous development. More importantly, it has the potential to enable access to the wider range of interrelated sources of context information and their relationships, including the user&#x02019;s individual and social behavior.</p>
<p>This manuscript includes what were AWARE&#x02019;s requirements as a mobile platform for context and data collection, supported by the related work. We also include an empirical evaluation of AWARE&#x02019;s impact on mobile power consumption and server scalability. More importantly, we demonstrate AWARE&#x02019;s use in several use-cases (laboratory, small and large-scale deployments), by the authors and fellow scientists.</p>
</sec>
<sec id="S2">
<title>Related Work</title>
<p>The Context Toolkit (Dey et al., <xref ref-type="bibr" rid="B3">2001</xref>) is the reference conceptual framework for developing context-aware applications. It separates the acquisition and representation of context from the use of context by an application. In other words, context should always be present, independently its use in applications. However, since the Context Toolkit was introduced in 2001, computing has become increasingly mobile and so has the user&#x02019;s context. Research in the field of mobile computing is challenging due to the mobile devices&#x02019; limited storage, power, and network capabilities. Over the years, several research tools were developed that weight these challenges in order to gain a better insight into users&#x02019; mobile context. We categorized contextual functionalities that are desirable on mobile context middleware based on Context Toolkit&#x02019;s guidelines on use of context and referring to previous work&#x02019;s most notable features.</p>
<sec id="S2-1">
<title>Event-based, manual, semi- or fully automated context generation</title>
<p>It is challenging to fully automate actions based on sensed context alone. Context can be generated by user rules (i.e., <italic>manual</italic>), and triggered by <italic>events</italic> (i.e., system, user activity) from <italic>semi-</italic> or <italic>full-automated</italic> algorithms. <italic>CORTEX</italic> (Biegel and Cahill, <xref ref-type="bibr" rid="B1">2004</xref>) uses the concept of a sentient object model for the development of mobile context-aware applications. By combining sentient objects and an event-based communication protocol for <italic>ad hoc</italic> wireless environments, <italic>CORTEX</italic> allows researchers to define inputs and outputs, contexts, fusion services and rules using an inference engine. On the other hand, <italic>Context Studio</italic> (Korpip&#x000E4;&#x000E4; et al., <xref ref-type="bibr" rid="B11">2004</xref>) takes into account users&#x02019; mediation and accountability in context inference. Users can combine the existing contextual probes to incrementally add context-awareness to the mobile phone.</p>
</sec>
<sec id="S2-2">
<title>User-generated and user-managed context</title>
<p>In fact, a human can be a context sensor, e.g., as a user he provides the data and manages his current context. For example, <italic>Momento</italic>&#x02019;s (Carter et al., <xref ref-type="bibr" rid="B2">2007</xref>) mobile client displays questions to the user about their location, nearby people, and audio. The researcher has a desktop client to configure and oversee a remote deployment. Similarly, <italic>MyExperience</italic> (accessible at <uri xlink:href="http://myexperience.sf.net">http://myexperience.sf.net</uri>, since 2007) captures both sensor- and human-based data to understand the user&#x02019;s motivation, perception, and satisfaction on mobile technology. The human-based data collection [e.g., surveys and experience sampling methods (ESM)] is triggered off sensor readings and pre-established researcher&#x02019;s rules, and later synchronized to a remote server. <italic>EmotionSense</italic> (accessible at <uri xlink:href="http://www.emotionsense.org">http://www.emotionsense.org</uri>, since 2013) probes the user for social psychology context, inquiring about individual emotions, activities, and verbal as well as proximity interactions among friends using the mobile phone&#x02019;s microphone.</p>
</sec>
<sec id="S2-3">
<title>Visualizations of context information</title>
<p>Presenting and managing contextual information is imperative for the end-users. <italic>ContextPhone</italic> (Raento et al., <xref ref-type="bibr" rid="B13">2005</xref>) emphasizes context as an understandable resource to the user. Using application widgets, users had control over the sensors data collection. Similarly, <italic>AWARENESS</italic> (van Sinderen et al., <xref ref-type="bibr" rid="B15">2006</xref>) prioritizes users&#x02019; privacy concerns. It applies the concept of quality of context (QoC). Users&#x02019; privacy concerns would increase or decrease QoC, depending on how much context is shared at any given time (e.g., disabling GPS would reduce the QoC for the context of location). The context is then shared with previously trusted devices and the mobile phone user is the sole controller of privacy aspects. &#x0201C;Self-tracking&#x0201D; users may use <italic>Funf</italic> (accessible at <uri xlink:href="http://www.funf.org">http://www.funf.org</uri>, since 2011) to collect their personal mobile data.</p>
</sec>
<sec id="S2-4">
<title><italic>Ad hoc</italic> context extensibility via components (i.e., plugins)</title>
<p>Context sources keep emerging and changing, thus it is important that a middleware may be adapted and extended, ideally without further development. <italic>OpenDataKit</italic> (accessible at <uri xlink:href="https://opendatakit.org">https://opendatakit.org</uri>, since 2012) simplifies the interface between external sensors and mobile phones by abstracting the application and driver development from user applications and device drivers, by management of discovery, communication channels, and data buffers. It is component-based, allowing developers to focus on writing minimal pieces of sensor-specific code, enabling an ecosystem of reusable sensor drivers. Integration of new sensors into applications is possible by downloading new sensor capabilities from an application market, without modifications to the operating system.</p>
</sec>
<sec id="S2-5">
<title>Exchange of context events and data across devices and platforms</title>
<p>Also, desirable is a cross-platform data collection middleware. Leveraging the browser, <italic>Ohmage</italic> (accessible at <uri xlink:href="http://www.ohmage.org">http://www.ohmage.org</uri>, since 2012) is a smartphone-to-web toolkit designed to create and manage experience sampling-based data collection campaigns, accessible in multiple platforms, in support of mobile health pilot studies. Similarly, CenceMe (Miluzzo et al., <xref ref-type="bibr" rid="B12">2008</xref>) infers physical social context and shared information through social network applications to other devices.</p>
</sec>
<sec id="S2-6">
<title>Remote control of context acquisition (i.e., dashboards, studies, collaboration)</title>
<p>To enable multidisciplinary collaboration, web-based dashboards have been created to orchestrate large-scale and distributed studies. Emotional Monitoring for PATHology (<italic>Empath</italic>) (Dickerson et al., <xref ref-type="bibr" rid="B5">2011</xref>) allows to remotely monitor emotional health for depressive illness. <italic>Ginger.io</italic> (accessible at <uri xlink:href="http://www.ginger.io">http://www.ginger.io</uri>, since 2011) is another behavioral analytics web-based dashboard that turns mobile data (e.g., movement, call, and texting patterns) into health insights.</p>
</sec>
<sec id="S2-7">
<title>Remote data offload for asynchronous context inference</title>
<p>Mobile context may also be inferred externally to the device, asynchronously. For example, CenceMe (Miluzzo et al., <xref ref-type="bibr" rid="B12">2008</xref>) infers the social context detected locally on the device, then transfers processing to a backend server to match common shared social contexts to raise social awareness. <italic>Momento</italic>&#x02019;s (Carter et al., <xref ref-type="bibr" rid="B2">2007</xref>) integrated with a Context Toolkit server to analyze audio segments to detect proximity of people.</p>
</sec>
</sec>
<sec id="S3">
<title>AWARE</title>
<sec id="S3-8">
<title>AWARE client</title>
<p>AWARE is inspired by Table <xref ref-type="table" rid="T1">1</xref> references. We would like to emphasize that AWARE&#x02019;s novelty lies not on its functionalities individually, but instead on their collective use. More importantly, it is a toolkit that builds on previous work&#x02019;s core functionalities and makes them available to researchers, developers, and end-users.</p>
<table-wrap position="float" id="T1">
<label>Table 1</label>
<caption><p><bold>Overview of supported context-related functionalities</bold>.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left">Frameworks</th>
<th align="center" colspan="7">Functionalities<hr/></th>
</tr>
<tr>
<th align="left"/>
<th align="center">2.1 Generation</th>
<th align="center">2.2 User-managed</th>
<th align="center">2.3 Visualizations</th>
<th align="center">2.4 Extensibility</th>
<th align="center">2.5 Exchange</th>
<th align="center">2.6 Remote control</th>
<th align="center">2.7 Offload</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">CORTEX</td>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center"/>
<td align="center"/>
</tr>
<tr>
<td align="left">Context Studio</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center"/>
<td align="center"/>
</tr>
<tr>
<td align="left">ContextPhone</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center"/>
</tr>
<tr>
<td align="left">AWARENESS</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center"/>
</tr>
<tr>
<td align="left">Momento</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center"/>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
</tr>
<tr>
<td align="left">MyExperience.sf.net</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center"/>
<td align="center"/>
<td align="center">&#x0221A;</td>
<td align="center"/>
</tr>
<tr>
<td align="left">CenceMe</td>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center">&#x0221A;</td>
</tr>
<tr>
<td align="left">EmotionSense.org</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center"/>
<td align="center"/>
<td align="center"/>
</tr>
<tr>
<td align="left">Empath</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center"/>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
</tr>
<tr>
<td align="left">Funf.org</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center"/>
<td align="center"/>
</tr>
<tr>
<td align="left">Ginger.io</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center"/>
<td align="center">&#x0221A;</td>
<td align="center"/>
</tr>
<tr>
<td align="left">Ohmage.org</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center"/>
<td align="center">&#x0221A;</td>
<td align="center"/>
</tr>
<tr>
<td align="left">OpenDataKit.org</td>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center"/>
<td align="center">&#x0221A;</td>
<td align="center"/>
<td align="center"/>
<td align="center"/>
</tr>
</tbody>
</table>
</table-wrap>
<p>AWARE is available as a regular Android mobile application. The collected data is primarily stored locally on the device and it is not shared remotely, ideal for small scale and local user-studies. For distributed and large-scale studies, the client uploads sensor and plugin data to the cloud. The user interface was designed to allow users to control the sensor (Figure <xref ref-type="fig" rid="F1">1</xref> &#x02013; Sensor Manager) and plugin functionality (Figure <xref ref-type="fig" rid="F1">1</xref> &#x02013; Stream), thus supporting functionality 2.2. The client also allows the user to further install plugins (Figure <xref ref-type="fig" rid="F1">1</xref> &#x02013; Plugin Manager), which extend AWARE&#x02019;s capabilities (supporting 2.4).</p>
<fig position="float" id="F1">
<label>Figure 1</label>
<caption><p><bold>Overview of AWARE client&#x02019;s interfaces: sensor manager, plugin manager, and stream</bold>.</p></caption>
<graphic xlink:href="fict-02-00006-g001.tif"/>
</fig>
<p>By default, the users are presented with the Sensor Manager interface, where they can manage the collected sensor data on the mobile phone. Here, they can see currently active sensors, the sensor&#x02019;s power-consumption estimation (provided by Android&#x02019;s API), the client&#x02019;s current version, their AWARE device identifier [a universal unique identifier (UUID) is generated randomly upon every installation] and a toggle for debugging messages from AWARE&#x02019;s sensing.</p>
<p>By pressing to top-left corner icon, i.e., the navigation button, the users can access the Plugin Manager. Here, they may install any publicly available plugins (as soon as they are added to the repository). Moreover, for researchers, AWARE supports study-specific plugins, thus only the study participants are able to view and install them. If the client or a plugin is updated on the repository or missing from the device, the users are prompted to install it.</p>
<p>The Stream interface&#x02019;s purpose is to present contextualized information from the collected data. These visualizations may be interactive, present information in real-time and reused for faster future application development. They also act as a shortcut to each plugin&#x02019;s settings. This interface adapts by hiding or showing more information according to the active sensors and plugins.</p>
<sec id="S3-8-1">
<title>AWARE&#x02019;s context sensors</title>
<p>AWARE records data from available hardware-, software-, and human-based sensors as the users carry their smartphones, thus supporting 2.1 and 2.2. Hardware sensors can be the accelerometer, magnetometer, and photometer, just to name a few. The client supports the majority of device&#x02019;s available sensors. New sensors are constantly added to the framework as they become available on newer Android devices. Software sensors include, for example, the user&#x02019;s calendar, email, social activity, and other logs (e.g., calls, messages). Human-based sensors are mobile questionnaires (i.e., for ESM), voice, or gesture input, where users&#x02019; actions are the inputs to algorithms, providing answers for disambiguation, or supervised data labeling, for example.</p>
</sec>
<sec id="S3-8-2">
<title>AWARE&#x02019;s context plugins</title>
<p>The locally stored data (in SQLite databases) can then be abstracted as context using AWARE plugins by means of data analysis. AWARE plugins&#x02019; primary goal is to collect and abstract sensor data to generate context. They may reuse other sensor and plugin data and context to create new higher-level contexts using data mining and machine learning techniques (implemented within the plugins&#x02019; code), and may provide support for a new &#x02013; either external or internal &#x02013; sensor, thus collecting and analyzing data. Second, AWARE plugins may also present and explain context data to the user using context cards, thus supporting 2.3. These cards allow end-users to use, explore, and interact with &#x02013; and application developers to <italic>reuse</italic> &#x02013; context for their smartphone applications. These plugins extend <italic>ad hoc</italic> AWARE&#x02019;s functionality, thus supporting 2.4.</p>
</sec>
<sec id="S3-8-3">
<title>Context data sharing</title>
<p>The collected context is shared (thus, supporting 2.5) among AWARE sensors, plugins, and applications using three strategies simultaneously: <italic>broadcasts</italic>, <italic>providers</italic>, and <italic>observers</italic>:
<list list-type="bullet">
<list-item><p><italic>Broadcasts</italic> quickly update other sensors, plugins, and applications with user&#x02019;s context. Each receives a brief description of user&#x02019;s current context (i.e., as a string), regardless of the data captured with such context. Multiple broadcasts can be received simultaneously from different sources (e.g., sensors, plugins, applications).</p></list-item>
<list-item><p><italic>Providers</italic> store sensor data and plugin context data. The data are stored locally on the device, and if required, remotely on a MySQL server. Sensors and plugins may request (i.e., pull) the data by querying the data directly, or subscribe to it using Observers. Using AWARE&#x02019;s web API, cloud services, such as Google&#x02019;s Cloud and App Engine, Amazon&#x02019;s EC, and Microsoft&#x02019;s Azure may also access and use the context data.</p></list-item>
<list-item><p><italic>Observers</italic> monitor changes to the sensor data and plugin context data in real-time, sharing updates to other remote devices using message queue telemetry transport (MQTT) message callbacks. Observers provide active (i.e., push) and event-based access to context. They are energy efficient and support real-time data labeling.</p></list-item>
</list></p>
</sec>
</sec>
<sec id="S3-9">
<title>AWARE server</title>
<p>The client may upload sensor and plugin data to the cloud (Figure <xref ref-type="fig" rid="F2">2</xref>), if the user signed-up for a study. A study can be managed on AWARE&#x02019;s dashboard (accessible at <uri xlink:href="https://api.awareframework.com">https://api.awareframework.com</uri>, supporting 2.6). For application developers and researchers, new plugins can be shared by uploading the compiled package (e.g., a digitally signed.APK file) to their dashboard. The AWARE server offers the following data handling functionalities: data replication, issue remote commands to AWARE devices and exchange context&#x02019;s data, and visualize the data online.</p>
<fig position="float" id="F2">
<label>Figure 2</label>
<caption><p><bold>Overview of AWARE&#x02019;s infrastructure</bold>.</p></caption>
<graphic xlink:href="fict-02-00006-g002.tif"/>
</fig>
<sec id="S3-9-4">
<title>Remote data synchronization</title>
<p>The data replication takes place within the sensor and plugin data synchronization code, and is transparent to the users and developers. The replication process can be scheduled, triggered locally with an event, or remotely on-demand. The clients&#x02019; data are sent as JavaScript Object Notation (JSON) objects via hypertext transfer protocol secure (HTTPS) POSTs, replicating the devices&#x02019; data into a MySQL database. Different strategies are in place to attempt to minimize data collection loss, such as the use of processor wake-locks to keep the sensors alive even when the phone is idle, multi-threading to reduce delays in context storage and allow cooperation between multiple sensors and exception fallbacks to decide what to do if one sensor is unavailable or is, for some reason, faulty.</p>
<p>AWARE uses MQTT for exchanging context messages in a publish/subscribe approach between mobile phones and other servers and devices. MQTT is designed for constrained devices and low-bandwidth, high-latency or unreliable networks, and supports persistence, both on the server and mobile phone, i.e., if the device or the server is unreachable, the data are queued locally for delivery at a later time. The built-in MQTT infrastructure provides support for distributed context and provides real-time context data exchange to available AWARE devices. MQTT servers can be clustered to support load-balance. For added security, MQTT also supports secure and authenticated connections. Using MQTT as a delivery mechanism, the dashboard can issue commands that are delivered to other AWARE devices and servers (supporting 2.7). On the other hand, AWARE devices can also issue commands to other devices and exchange context data as MQTT messages.</p>
</sec>
<sec id="S3-9-5">
<title>Human-based sensing</title>
<p>AWARE supports a flexible ESMs questionnaire-building schema (defined in JSON) for <italic>in situ</italic> human-based context sensing. Diverse ESM questions can be chained together to support a step-by-step questionnaire. ESM can be triggered by context events, time, or on-demand, locally (with broadcasts) or remotely from the dashboard and servers (with MQTT). Although it collects subjective user input, it allows us crowdsourcing information that is challenging to collect through physical sensors, as follow:
<list list-type="bullet">
<list-item><p><italic>Free text</italic>: allows the user to provide free text input as context. This can be leveraged to capture sensor-challenging context, such personal opinions, moods, and others;</p></list-item>
<list-item><p><italic>Radio</italic>: allows the user to select a single option from a list of alternatives. One of the options can be defined as &#x0201C;Other,&#x0201D; which will prompt the user to be more specific, replacing &#x0201C;Other&#x0201D; with the users&#x02019; input;</p></list-item>
<list-item><p><italic>Checkbox</italic>: allows the user to select one or more options from a list of alternatives. Similar to the Radio ESM, one of the options can be defined as &#x0201C;Other&#x0201D;;</p></list-item>
<list-item><p><italic>Likert</italic>: allows the user to provide ratings, between 0 and 5/7, at 0.5/1 increments. The Likert-scale labels are also customizable. The default rating is no rating;</p></list-item>
<list-item><p><italic>Quick</italic>: allows the user to quickly answer the ESM by pressing a simple button.</p></list-item>
</list></p>
</sec>
<sec id="S3-9-6">
<title>Privacy and security</title>
<p>AWARE has been approved for several research projects by the Institutional Review Board (IRB) of our university (Europe), and also in US. Keeping users&#x02019; privacy in mind, AWARE obfuscates and encrypts the data using a one-way hashing of logged personal identifiers, such as phone numbers. Increased security is achieved with application permissions, certificates, user authentication, and the use of secure network connections to access and transfer the logged data between the client and the dashboard.</p>
</sec>
</sec>
<sec id="S3-10">
<title>Creating context-AWARE applications</title>
<p>AWARE follows Android architecture and development guidelines. In other words, AWARE is available from MavenCentral repository<xref ref-type="fn" rid="fn1"><sup>1</sup></xref> (&#x0201C;compile com.awareframework:aware-core:&#x0002A;&#x00040;aar&#x0201D;) as an open-source (Apache 2) library, which can be added to any Android development application or plugin using Android Studio&#x02019;s Gradle mechanism. The source code of the client is also available in GitHub<xref ref-type="fn" rid="fn2"><sup>2</sup></xref> and we encourage fellow researchers to report any issues, discuss strategies, and further extend our work.</p>
<p>We offer more detailed tutorials and documentation on AWARE&#x02019;s website. In summary, once added to the application&#x02019;s Gradle, a developer has full access to AWARE&#x02019;s API public methods [e.g., Aware.startPlugin(), Aware.stopPlugin(), Aware.setSetting(), Aware.getSetting(), and many others], Providers (i.e., ContentProvider databases), Broadcasts (i.e., Intents), Services, and Observers. Since we followed Android architecture, a Provider is a ContentProvider, a Plugin is a Service, and an Observer is a ContentObserver, and so on. For an Android developer, using AWARE should is an extension to Android&#x02019;s native classes and API, with increased number of functionalities. As an example, if the user is available (i.e., not in a call and not using the device), a high-level context broadcast (e.g., ACTION_AWARE_ USER_NOT_IN_CALL)<xref ref-type="fn" rid="fn3"><sup>3</sup></xref> is automatically broadcasted. An application simply needs to listen to this broadcast and may act upon it.</p>
</sec>
<sec id="S3-11">
<title>AWARE&#x02019;s overview</title>
<p>In summary, AWARE&#x02019;s infrastructure (Figure <xref ref-type="fig" rid="F2">2</xref>) allows:
<list list-type="bullet">
<list-item><p><italic>Researchers</italic> to:
<list list-type="simple">
<list-item><label>&#x025CB;</label> <p>Self-host or use AWARE-hosted databases;</p></list-item>
<list-item><label>&#x025CB;</label> <p>Manage multiple, concurrent studies;</p></list-item>
<list-item><label>&#x025CB;</label> <p>Publish study-specific or public plugins;</p></list-item>
<list-item><label>&#x025CB;</label> <p>Specify and manage active sensors and plugins for a study;</p></list-item>
<list-item><label>&#x025CB;</label> <p>Enroll participants via a QRCode or a direct link;</p></list-item>
<list-item><label>&#x025CB;</label> <p>Collaborate with registered co-researchers;</p></list-item>
<list-item><label>&#x025CB;</label> <p>Oversee studies in real-time (e.g., amount of data, user participation);</p></list-item>
<list-item><label>&#x025CB;</label> <p>Label and group sets of participants&#x02019; devices;</p></list-item>
<list-item><label>&#x025CB;</label> <p>Remotely create and request a mobile questionnaire (i.e., ESM);</p></list-item>
<list-item><label>&#x025CB;</label> <p>Remotely request or clear a participant&#x02019;s study data from the databases (on the client and server).</p></list-item>
</list></p></list-item>
<list-item><p><italic>Developers</italic> to: embed AWARE and plugins as libraries, thus facilitating the creation of a context-aware application;</p></list-item>
<list-item><p><italic>Users</italic> to: to collect personal data and visualize contextualized information of their daily lives directly on their smartphones.</p></list-item>
</list></p>
</sec>
</sec>
<sec id="S4">
<title>Case Studies and Evaluation</title>
<p>By encapsulating implementation details on sensor retrieval and exposing the sensed data as higher-level abstractions, we shifted our focus from software development to research and analyzing the collected data, both quantitative and qualitative. For brevity, please refer to the case studies references for further details on AWARE&#x02019;s active sensors and plugins combinations and usage.</p>
<p>In Dey et al. (<xref ref-type="bibr" rid="B4">2011</xref>), AWARE was used to abstract several built-in mobile sensors together (e.g., location, Wi-Fi, network, and more) and external Bluetooth sensors to capture users&#x02019; proximity habits to their mobile devices. For each data source (e.g., sensor), several metrics of user proximity were created. For example, the Bluetooth phone-sensor RSSI readings and distance calibrations allowed us to investigate the amount of time a phone was at arm, and/or room reach; the accelerometer&#x02019;s axial forces allowed us to determine device&#x02019;s on-body/free moments. Using a decision tree classifier and a time window of 1&#x02009;min, we were able to create a predictive model accurate up to 83% on whether the device is close/far from the user. The main objective was to understand how often context information can be visually presented to the user. Contrary to our intuition, the device is not really with the user all the time (approximately only 50% of the time). In Ickin et al. (<xref ref-type="bibr" rid="B10">2012</xref>), AWARE is used to investigate the quality of experience (QoE) of commonly used mobile applications depending on user&#x02019;s current location, social, and mobility context. AWARE&#x02019;s ESM functionality allowed users to rate <italic>in situ</italic> multiple applications&#x02019; QoE using the mean opinion score (MOS) ranking, obtain a high-level description of the users&#x02019; current location (e.g., home, work), social (e.g., alone, with someone, with a group), and mobility context (e.g., sitting, standing, walking, driving). By data mining network and phone performance data (i.e., network signal, available battery), several metrics were created to support the best applications&#x02019; QoE.</p>
<p>In Ferreira et al. (<xref ref-type="bibr" rid="B7">2011</xref>), we used AWARE as a library in a battery user-study application on the Google Play application store, downloaded, and used by thousands of users, where we studied users&#x02019; concerns regarding battery life and charging behavior. In Ferreira et al. (<xref ref-type="bibr" rid="B8">2013</xref>), and reusing Ferreira&#x02019;s sensors (Ferreira et al., <xref ref-type="bibr" rid="B7">2011</xref>) (e.g., battery and application usage sensors), we identified applications&#x02019; battery impact in its depletion (using linear regression), thus creating a new interactive battery interface for power management on smartphones. In Ferreira et al. (<xref ref-type="bibr" rid="B9">2014</xref>), AWARE&#x02019;s screen, application usage, and ESMs functionalities provide insight on the context in which applications are micro-used (i.e., within 15&#x02009;s) and in Van den Broucke et al. (<xref ref-type="bibr" rid="B14">2014</xref>), AWARE&#x02019;s device, location, and network sensors were used to investigate the users&#x02019; struggles when using mobile cloud computing on their smartphones and tablets.</p>
<sec id="S4-12">
<title>Battery impact and resource management</title>
<p>As a toolkit, it is challenging to evaluate AWARE for all possible scenarios. However, to evaluate AWARE&#x02019;s mobile client battery impact, we accounted for three sensing, storage, and networking scenarios: sensing only (S); sensing and local storage (SL); sensing, local, and remote storage (SLR). In S, we simply enable the sensors but do not record data, thus isolating any storage operations&#x02019; overheads; and we account for them with SL. In SLR, we also capture the network operations&#x02019; overheads by uploading the collected data to our AWARE&#x02019;s server over 3G every 30&#x02009;s. We conducted our experiments on an off-the-shelf LG Nexus 4 (2100&#x02009;mAh, 4.2&#x02009;V battery). To reduce a potential measurement bias, we used a minimal version of Android (e.g., AOSP) with no third-party applications (i.e., Google, appstore applications) or background synching. Before deploying AWARE, this reference device&#x02019;s battery on average depletes at a rate of 18.45&#x02009;mAh (Min&#x02009;&#x0003D;&#x02009;4.64; Max&#x02009;&#x0003D;&#x02009;92.66; SD&#x02009;&#x0003D;&#x02009;12.62). With AWARE, and monitoring sensors&#x02019; and plugins&#x02019; statuses (i.e., check if active or updated at 5-min intervals), battery depletion increases to 19.74&#x02009;mAh (Min&#x02009;&#x0003D;&#x02009;4.86; Max&#x02009;&#x0003D;&#x02009;118.2; SD&#x02009;&#x0003D;&#x02009;13.87), however, not statistically significant [Welch <italic>t</italic>(11841)&#x02009;&#x0003D;&#x02009;&#x02212;0.753, <italic>p</italic>&#x02009;&#x0003D;&#x02009;0.45], i.e., a negligible difference in battery life when AWARE is not in active use.</p>
<p>During the tests, we consistently kept the device&#x02019;s display off, while 3G, Wi-Fi, GPS, and Bluetooth were active as to better simulate device&#x02019;s every day use. With Qualcomm&#x02019;s Trepn Profiler, a diagnostic tool for evaluating in real-time the performance and power consumption of Android applications, we measured the power consumption (mA) and processor load (%, normalized to account all cores) of each high-performance sensor (i.e., capable of several samples per second <italic>&#x02013;</italic> accelerometer, gyroscope, etc.) when in individual use and at two sampling rates: 5 and 100&#x02009;Hz, in 10-min long tests. For low-performance sensors, i.e., that require frequent polling for updates &#x02013; applications (refresh background processes), Bluetooth (scanning), locations (update requests), network (amount of traffic), processor (processing load), and Wi-Fi (scanning) &#x02013; we tested them at 5-, and at 60-s intervals. The remaining sensors are only event-based and therefore it is challenging to measure their power consumption as these events are triggered exclusively by the operating system (Figure <xref ref-type="fig" rid="F3">3</xref>).</p>
<fig position="float" id="F3">
<label>Figure 3</label>
<caption><p><bold>Battery consumption per active sensor and sampling condition</bold>.</p></caption>
<graphic xlink:href="fict-02-00006-g003.tif"/>
</fig>
<p>Across all the sensors and sampling rates, AWARE&#x02019;s client overall battery impact is, on average, 19.69&#x02009;mA (SD&#x02009;&#x0003D;&#x02009;23.34) for sensing only; 24.69&#x02009;mA (SD&#x02009;&#x0003D;&#x02009;23.88) with local storage; and 138.03&#x02009;mA (SD&#x02009;&#x0003D;&#x02009;29.92) if also connected to AWARE&#x02019;s server. In other words, if a researcher would run a study where participants upload their data automatically (SLR condition) every 30&#x02009;s, and if they used the same reference device, they could theoretically provide 15&#x02009;h and 21&#x02009;min worth of sensor data. More importantly, in our real-world deployments, our participants did not report a significant decrease in their device&#x02019;s battery life or performance.</p>
<p>We have built-in several strategies to reduce power-consumption of AWARE: event-based sampling and opportunistic analysis (e.g., only when charging or the battery is above a certain amount) and scheduled synching. Similar to the literature review (Biegel and Cahill, <xref ref-type="bibr" rid="B1">2004</xref>; Falaki et al., <xref ref-type="bibr" rid="B6">2011</xref>), this suggests that AWARE&#x02019;s event-based sensing approach is more efficient than periodic polling. We also expect that novel battery technology and power-efficient sensors will reduce even further AWARE&#x02019;s battery impact in newer devices. During all the tests, AWARE consumed on average approximately 32.9&#x02009;MB of internal memory (Min&#x02009;&#x0003D;&#x02009;27.4; Max&#x02009;&#x0003D;&#x02009;33.19; SD&#x02009;&#x0003D;&#x02009;1.53), regardless of the sampling rate, as Android&#x02019;s memory management reclaims unused resources automatically. Noteworthy, the data are scheduled for weekly or monthly space maintenance (i.e., remove data that is already replicated on the server) if required, releasing the storage space back to the device.</p>
</sec>
<sec id="S4-13">
<title>Scalability and performance</title>
<p>We also evaluated AWARE&#x02019;s server dashboard scalability and performance with an increasing number of participants (e.g., 1 thousand, 10 thousand, 100 thousand, 1 million, 10 million), and measured the amount of time of: page load (load the whole dashboard&#x02019;s interface); devices (load the devices&#x02019; data); visualization (visualize the devices&#x02019; data); sort (e.g., order by device ID, by amount of data); pagination (switch to next group of devices); and search (lookup query for specific data or device). To test these conditions, we used a Python script that mimics the client&#x02019;s JSON object synching mechanism to the server and inserts 100 thousand data points per device in all the sensors&#x02019; databases. Our evaluation was conducted on a modest researcher server machine: Linux-based, 4-core central processing units (CPUs), 8&#x02009;GB of random access memory (RAM), and 300&#x02009;GB of storage (Table <xref ref-type="table" rid="T2">2</xref>).</p>
<table-wrap position="float" id="T2">
<label>Table 2</label>
<caption><p><bold>AWARE&#x02019;s server dashboard performance per amount of devices</bold>.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left"/>
<th align="center" colspan="5">Amount of devices<hr/></th>
</tr>
<tr>
<th align="left"/>
<th align="left">1 Thousand</th>
<th align="left">10&#x02009;Thousand</th>
<th align="left">100&#x02009;Thousand</th>
<th align="left">1 Million</th>
<th align="left">10 Million</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left"><bold>Functionalities</bold></td>
</tr>
<tr>
<td align="left">Page load</td>
<td align="left">1.43&#x02009;s</td>
<td align="left">1.66&#x02009;s</td>
<td align="left">1.75&#x02009;s</td>
<td align="left">2.82&#x02009;s</td>
<td align="left">10.23&#x02009;s</td>
</tr>
<tr>
<td align="left">Devices</td>
<td align="left">0.12&#x02009;s</td>
<td align="left">0.13&#x02009;s</td>
<td align="left">0.29&#x02009;s</td>
<td align="left">0.81&#x02009;s</td>
<td align="left">7.09&#x02009;s</td>
</tr>
<tr>
<td align="left">Visualization</td>
<td align="left">0.19&#x02009;s</td>
<td align="left">0.22&#x02009;s</td>
<td align="left">0.59&#x02009;s</td>
<td align="left">0.68&#x02009;s</td>
<td align="left">2.07&#x02009;s</td>
</tr>
<tr>
<td align="left">Sort</td>
<td align="left">0.32&#x02009;s</td>
<td align="left">0.44&#x02009;s</td>
<td align="left">0.99&#x02009;s</td>
<td align="left">1.73&#x02009;s</td>
<td align="left">14.16&#x02009;s</td>
</tr>
<tr>
<td align="left">Pagination</td>
<td align="left">0.35&#x02009;s</td>
<td align="left">0.42&#x02009;s</td>
<td align="left">0.91&#x02009;s</td>
<td align="left">1.59&#x02009;s</td>
<td align="left">9.17&#x02009;s</td>
</tr>
<tr>
<td align="left">Search</td>
<td align="left">0.31&#x02009;s</td>
<td align="left">0.29&#x02009;s</td>
<td align="left">0.68&#x02009;s</td>
<td align="left">1.67&#x02009;s</td>
<td align="left">9.23&#x02009;s</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>We found that up to 1 million participants, the dashboard&#x02019;s overall performance takes on average 0.85&#x02009;s (Min&#x02009;&#x0003D;&#x02009;0.12; Max&#x02009;&#x0003D;&#x02009;2.82; SD&#x02009;&#x0003D;&#x02009;0.71) to be fully operational, and degrades upon 10 million participants, with an acceptable average of 8.66&#x02009;s (Min&#x02009;&#x0003D;&#x02009;2.07; Max&#x02009;&#x0003D;&#x02009;14.16; SD&#x02009;&#x0003D;&#x02009;3.98). We optimized the dashboard&#x02019;s performance by only loading the data if it is requested by its user, pagination is limited to groups of 50 devices, or only request the data for a given day. Using cloud-computing services such as Amazon EC or Google Cloud, one could run multiple instances of AWARE servers and do load-balance.</p>
</sec>
<sec id="S4-14">
<title>Contributions</title>
<p>As a research tool, AWARE encapsulates and reuses sensors and plugins for different research questions. More importantly, it is a toolkit that supports collaboration with other researchers. Because it can be packaged as a library, application developers can request context data from AWARE&#x02019;s sensors and plugins, and, with the users&#x02019; consent, have access to high-level context inferences provided by the context sharing mechanisms. The AWARE API follows the reference conceptual Context Toolkit (Dey et al., <xref ref-type="bibr" rid="B3">2001</xref>) context-aware application development requirements:
<list list-type="bullet">
<list-item><p><italic>Separation of concerns</italic>: each sensor and plugin collects data, independently of where it is used or how it is used;</p></list-item>
<list-item><p><italic>Context interpretation</italic>: abstractions of multiple layers of context are transparent to the researcher and developer, using the Providers and the Broadcasts;</p></list-item>
<list-item><p><italic>Transparent, distributed communications</italic>: the context sharing mechanisms (e.g., Provider, Observer, Broadcast, MQTT) offer transparent communication between context sensors, plugins, applications, and devices;</p></list-item>
<list-item><p><italic>Constant availability of context acquisition</italic>: the context sensors operate independently from the applications that use them;</p></list-item>
<list-item><p><italic>Context storage</italic>: context is stored locally, and optionally remotely, and can be used to establish trends and predictions of context;</p></list-item>
<list-item><p><italic>Resource discovery</italic>: for an application to communicate with a provider, it needs to know where the context is stored, provided by the content URI.</p></list-item>
</list></p>
<p>The plugins allow developers to work independently &#x02013; or to collaborate with others &#x02013; by isolating plugins&#x02019; core functionality from their ultimate research and application development use. The toolkit abstracts sensor data acquisition and processing into reusable context components, from local and external sensors. Moreover, AWARE&#x02019;s context sharing mechanisms offer transparent context data exchange between other plugins and applications, both locally and remotely. AWARE plugins provide the building blocks to extend the toolkit to support novel contexts and sensors, on an <italic>ad hoc</italic> basis. The AWARE server supports server clustering for load-balance and scaling up the number of instances of the servers as required. Furthermore, we note that mobile phones remain resource-constrained environments, in terms of network, storage, battery life, and processing power. Thus, AWARE relies on MQTT messaging protocol resilience mechanisms to exchange context data between different devices while being network efficient. This allows it not only to overcome storage limitations but also support redundancy: context data can be stored locally and synchronized remotely.</p>
</sec>
<sec id="S4-15">
<title>Limitations</title>
<p>Despite our best efforts, we cannot guarantee a problem-free mobile data collection tool. AWARE is designed as an Android accessibility service to increase its importance to the OS task manager and reduce termination likelihood. AWARE supports Android 2.3 or higher; however, sensor deprecation might limit or replace, as needed, some functionality as the toolkit and Android evolves. Also, more robust security procedures must be considered to protect context data, since encryption and obfuscation can be circumvented. As a fallback, AWARE does not collect personal data and hashes personal identifiers to protect users&#x02019; privacy. Nonetheless, this alone might not be enough for other more privacy strict domains and procedures, such as in health-care. Lastly, for the moment, the AWARE mobile application is only available for Android devices (e.g., tablets, Google Glass, smartphones, Android Wear). However, the AWARE server and MQTT functionalities allow exchange and use of context information across platforms with the support of JSON and MQTT.</p>
</sec>
</sec>
<sec id="S5">
<title>Conclusion</title>
<p>Making the transition from mobile phones to &#x0201C;smartphones,&#x0201D; in the true sense of the word, requires more tools that offer programing and development support. However, the development of context-aware applications still remains challenging because developers have to handle with the raw sensor data, analyze it to produce context, and often are forced to start from scratch. There is a lack of a coherent and modular repository of relevant tools, which motivated AWARE.</p>
<p>We must acknowledge that AWARE is no single ready-to-use, fits-all, &#x0201C;silver bullet&#x0201D; solution that would meet the requirements of all possible researchers. Research fragmentation is the biggest challenge for such toolkits. As such, we argue that a mobile instrumentation toolkit must support multidisciplinary research and collaboration from the ground-up. We believe that AWARE plugins provide a mechanism for extending, adapting, and evolving on an <italic>ad hoc</italic> basis, potentially withstanding the test of time.</p>
<p>Some of the key characteristics of AWARE include the ability to</p>
<p>
<list list-type="bullet">
<list-item><p>combine sensor data from multiple plugins to create new context abstractions in real-time;</p></list-item>
<list-item><p>dynamically configure plugins, update plugins, or install new plugins from an online repository;</p></list-item>
<list-item><p>store data locally and/or remotely;</p></list-item>
<list-item><p>provide an API that any application can use to access high-level context (e.g., &#x0201C;is the user sitting?&#x0201D;) and take action.</p></list-item>
</list></p>
<p>However, having access to context information is just a first step. Context-aware applications must do a lot more: present information, acquire and store context information, and relate new information to other captured information. AWARE not only collects, manages, shares, and presents context data but also reuses context information. Naturally, there are still open challenges for AWARE, but we leave that for future work and invite fellow researchers to contribute at <uri xlink:href="http://www.awareframework.com">http://www.awareframework.com</uri>.</p>
</sec>
<sec id="S6">
<title>Conflict of Interest Statement</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
</body>
<back>
<ack>
<p>Funded by the Academy of Finland project 137736, 276786, and TEKES project 2932/31/2009.</p>
</ack>
<ref-list>
<title>References</title>
<ref id="B1"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Biegel</surname> <given-names>G.</given-names></name> <name><surname>Cahill</surname> <given-names>V.</given-names></name></person-group> (<year>2004</year>). &#x0201C;<article-title>A framework for developing mobile, context-aware applications</article-title>,&#x0201D; in <source>PerCom</source> (<publisher-loc>Orlando, FL</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>361</fpage>&#x02013;<lpage>365</lpage>.</citation></ref>
<ref id="B2"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Carter</surname> <given-names>S.</given-names></name> <name><surname>Mankoff</surname> <given-names>J.</given-names></name> <name><surname>Heer</surname> <given-names>J.</given-names></name></person-group> (<year>2007</year>). &#x0201C;<article-title>Momento: support for situated ubicomp experimentation</article-title>,&#x0201D; in <conf-name>Proceedings of the SIGCHI Conference on Human Factors in Computing Systems</conf-name> (<conf-loc>San Jose, CA</conf-loc>: <conf-sponsor>ACM</conf-sponsor>), <fpage>125</fpage>&#x02013;<lpage>134</lpage>.</citation></ref>
<ref id="B3"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Dey</surname> <given-names>A. K.</given-names></name> <name><surname>Abowd</surname> <given-names>G. D.</given-names></name> <name><surname>Salber</surname> <given-names>D.</given-names></name></person-group> (<year>2001</year>). <article-title>A conceptual framework and a toolkit for supporting the rapid prototyping of context-aware applications</article-title>. <source>Hum. Comput. Interact.</source> <volume>16</volume>, <fpage>97</fpage>&#x02013;<lpage>166</lpage>.<pub-id pub-id-type="doi">10.1207/S15327051HCI16234_02</pub-id></citation></ref>
<ref id="B4"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Dey</surname> <given-names>A. K.</given-names></name> <name><surname>Wac</surname> <given-names>K.</given-names></name> <name><surname>Ferreira</surname> <given-names>D.</given-names></name> <name><surname>Tassini</surname> <given-names>K.</given-names></name> <name><surname>Hong</surname> <given-names>J.-H.</given-names></name> <name><surname>Ramos</surname> <given-names>J.</given-names></name></person-group> (<year>2011</year>). &#x0201C;<article-title>Getting closer: an empirical investigation of the proximity of user to their smart phones</article-title>,&#x0201D; in <source>Ubicomp</source> (<publisher-loc>Beijing</publisher-loc>: <publisher-name>ACM</publisher-name>), <fpage>163</fpage>&#x02013;<lpage>172</lpage>.</citation></ref>
<ref id="B5"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Dickerson</surname> <given-names>R. F.</given-names></name> <name><surname>Gorlin</surname> <given-names>E. I.</given-names></name> <name><surname>Stankovic</surname> <given-names>J. A.</given-names></name></person-group> (<year>2011</year>). &#x0201C;<article-title>Empath: a continuous remote emotional health monitoring system for depressive illness</article-title>,&#x0201D; in <conf-name>Proceedings of the 2nd Conference on Wireless Health</conf-name> (<conf-loc>San Diego, CA</conf-loc>: <conf-sponsor>ACM</conf-sponsor>), <fpage>5:1</fpage>&#x02013;<lpage>5:10</lpage>.</citation></ref>
<ref id="B6"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Falaki</surname> <given-names>H.</given-names></name> <name><surname>Mahajan</surname> <given-names>R.</given-names></name> <name><surname>Estrin</surname> <given-names>D.</given-names></name></person-group> (<year>2011</year>). &#x0201C;<article-title>SystemSens: a tool for monitoring usage in smartphone research deployments</article-title>,&#x0201D; in <conf-name>Proceedings of the Sixth International Workshop on Mobiarch</conf-name> (<conf-loc>Washington, DC</conf-loc>: <conf-sponsor>ACM</conf-sponsor>), <fpage>25</fpage>&#x02013;<lpage>30</lpage>.</citation></ref>
<ref id="B7"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Ferreira</surname> <given-names>D.</given-names></name> <name><surname>Dey</surname> <given-names>A. K.</given-names></name> <name><surname>Kostakos</surname> <given-names>V.</given-names></name></person-group> (<year>2011</year>). &#x0201C;<article-title>Understanding human-smartphone concerns: a study of battery life</article-title>,&#x0201D; in <source>Pervasive</source> (<publisher-loc>Berlin</publisher-loc>: <publisher-name>Springer-Verlag</publisher-name>), <fpage>19</fpage>&#x02013;<lpage>33</lpage>.</citation></ref>
<ref id="B8"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Ferreira</surname> <given-names>D.</given-names></name> <name><surname>Ferreira</surname> <given-names>E.</given-names></name> <name><surname>Goncalves</surname> <given-names>J.</given-names></name> <name><surname>Kostakos</surname> <given-names>V.</given-names></name> <name><surname>Dey</surname> <given-names>A. K.</given-names></name></person-group> (<year>2013</year>). &#x0201C;<article-title>Revisiting human-battery interaction with an interactive battery interface</article-title>,&#x0201D; in <source>Ubicomp</source> (<publisher-loc>Zurich</publisher-loc>: <publisher-name>ACM</publisher-name>), <fpage>563</fpage>&#x02013;<lpage>572</lpage>.</citation></ref>
<ref id="B9"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Ferreira</surname> <given-names>D.</given-names></name> <name><surname>Goncalves</surname> <given-names>J.</given-names></name> <name><surname>Kostakos</surname> <given-names>V.</given-names></name> <name><surname>Barkhuus</surname> <given-names>L.</given-names></name> <name><surname>Dey</surname> <given-names>A. K.</given-names></name></person-group> (<year>2014</year>). &#x0201C;<article-title>Contextual experience sampling of mobile application micro-usage</article-title>,&#x0201D; in <source>MobileHCI</source> (<publisher-loc>Toronto</publisher-loc>: <publisher-name>ACM</publisher-name>), <fpage>91</fpage>&#x02013;<lpage>100</lpage>.</citation></ref>
<ref id="B10"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ickin</surname> <given-names>S.</given-names></name> <name><surname>Wac</surname> <given-names>K.</given-names></name> <name><surname>Fiedler</surname> <given-names>M.</given-names></name> <name><surname>Janowski</surname> <given-names>L.</given-names></name> <name><surname>Hong</surname> <given-names>J.-H.</given-names></name> <name><surname>Dey</surname> <given-names>A. K.</given-names></name></person-group> (<year>2012</year>). <article-title>Factors influencing quality of experience of commonly used mobile applications</article-title>. <source>IEEE Comm. Mag.</source> <volume>50</volume>, <fpage>48</fpage>&#x02013;<lpage>56</lpage>.<pub-id pub-id-type="doi">10.1109/MCOM.2012.6178833</pub-id></citation></ref>
<ref id="B11"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Korpip&#x000E4;&#x000E4;</surname> <given-names>P.</given-names></name> <name><surname>H&#x000E4;kkil&#x000E4;</surname> <given-names>J.</given-names></name> <name><surname>Kela</surname> <given-names>J.</given-names></name> <name><surname>Ronkainen</surname> <given-names>S.</given-names></name> <name><surname>K&#x000E4;ns&#x000E4;l&#x000E4;</surname> <given-names>I.</given-names></name></person-group> (<year>2004</year>). &#x0201C;<article-title>Utilising context ontology in mobile device application personalisation</article-title>,&#x0201D; in <conf-name>Proceedings of the 3rd International Conference on Mobile and Ubiquitous Multimedia</conf-name> (<conf-loc>Maryland</conf-loc>: <conf-sponsor>ACM</conf-sponsor>), <fpage>133</fpage>&#x02013;<lpage>140</lpage>.</citation></ref>
<ref id="B12"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Miluzzo</surname> <given-names>E.</given-names></name> <name><surname>Lane</surname> <given-names>N. D.</given-names></name> <name><surname>Fodor</surname> <given-names>K.</given-names></name> <name><surname>Peterson</surname> <given-names>R.</given-names></name> <name><surname>Lu</surname> <given-names>H.</given-names></name> <name><surname>Musolesi</surname> <given-names>M.</given-names></name> <etal/></person-group> (<year>2008</year>). &#x0201C;<article-title>Sensing meets mobile social networks: the design, implementation and evaluation of the cenceme application</article-title>,&#x0201D; in <conf-name>Proceedings of the 6th ACM Conference on Embedded Network Sensor Systems</conf-name> (<conf-loc>Raleigh, NC</conf-loc>: <conf-sponsor>ACM</conf-sponsor>), <fpage>337</fpage>&#x02013;<lpage>350</lpage>.</citation></ref>
<ref id="B13"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Raento</surname> <given-names>M.</given-names></name> <name><surname>Oulasvirta</surname> <given-names>A.</given-names></name> <name><surname>Petit</surname> <given-names>R.</given-names></name> <name><surname>Toivonen</surname> <given-names>H.</given-names></name></person-group> (<year>2005</year>). <article-title>ContextPhone: a prototyping platform for context-aware mobile applications</article-title>. <source>IEEE Pervasive Comput.</source> <volume>4</volume>, <fpage>51</fpage>&#x02013;<lpage>59</lpage>.<pub-id pub-id-type="doi">10.1109/MPRV.2005.29</pub-id></citation></ref>
<ref id="B14"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Van den Broucke</surname> <given-names>K.</given-names></name> <name><surname>Ferreira</surname> <given-names>D.</given-names></name> <name><surname>Goncalves</surname> <given-names>J.</given-names></name> <name><surname>Kostakos</surname> <given-names>V.</given-names></name> <name><surname>De Moor</surname> <given-names>K.</given-names></name></person-group> (<year>2014</year>). &#x0201C;<article-title>Mobile cloud storage: a contextual experience</article-title>,&#x0201D; in <source>MobileHCI</source> (<publisher-loc>Toronto</publisher-loc>: <publisher-name>ACM</publisher-name>), <fpage>101</fpage>&#x02013;<lpage>110</lpage>.</citation></ref>
<ref id="B15"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>van Sinderen</surname> <given-names>M. J.</given-names></name> <name><surname>van Halteren</surname> <given-names>A. T.</given-names></name> <name><surname>Wegdam</surname> <given-names>M.</given-names></name> <name><surname>Meeuwissen</surname> <given-names>H. B.</given-names></name> <name><surname>Eertink</surname> <given-names>E. H.</given-names></name></person-group> (<year>2006</year>). <article-title>Supporting context-aware mobile applications: an infrastructure approach</article-title>. <source>IEEE Comm. Mag.</source> <volume>44</volume>, <fpage>96</fpage>&#x02013;<lpage>104</lpage>.<pub-id pub-id-type="doi">10.1109/MCOM.2006.1705985</pub-id></citation></ref>
</ref-list>
<fn-group>
<fn id="fn1"><p><sup>1</sup><uri xlink:href="http://search.maven.org">http://search.maven.org</uri> - replace &#x0002A; with the updated version code (e.g., 3.3.3 as of 19/3/2015).</p></fn>
<fn id="fn2"><p><sup>2</sup><uri xlink:href="http://github.com/denzilferreira/aware-client">http://github.com/denzilferreira/aware-client</uri></p></fn>
<fn id="fn3"><p><sup>3</sup><uri xlink:href="http://www.awareframework.com/communication/">http://www.awareframework.com/communication/</uri></p></fn>
</fn-group>
</back>
</article>