Giter VIP home page Giter VIP logo

omicron's Introduction

Omicron

An Android app aimed for research on Mobile Information Retrieval, developed at Università della Svizzera italiana (USI), Lugano, Switzerland, in collaboration with Northumbria University, Newcastle upon Tyne, UK.

Requirements

This application need a Firebase account to work.

An account for Crashanalytics is needed for Crash Analytics reporting

Qualtrics is used for the questionnaires. The link for the questionnaires are in MainActivity (openSurvey, onStartTask, OpenPostTaskQuestionnaire). TaskBrowserActivity uses an interceptor to know when the user has finished a questionnaire, the url that Qualtrics use might change in the future.

A Bing Web Search API subscription is needed to use web search capabilities The key need to be set in Configuration.java BING_KEY

Usage

This application can be used for task-based user studies in mobile IR. With some minor modifications, it can also be used for various types of studies in mobile IR, enabling researchers to build mobile search query log enrcihed by users interactions as well as other contextual/sensor data. Previously, we have modified Omicron to build a query log for universal mobile search (code can be accessed here: uSearch, data can be accessed here: ISTAS).

Sensors data from participants' smartphones are collected for the duration of a study. The collected data is routinely uploaded to the cloud (Firebase Storage) for easy access and analysis.

Tasks can be scheduled in advance and participants are informed by a notification

deployment

Quick Start

In order to run Omicron, follow the steps below:

  1. Change the project's package name. To do so, follow this useful post on Stackoverflow.
  2. Create a new project on Firebase and add the new package name in your project. Note that uSearch uses Firebase "Storage" service.
  3. Create a new bucket on Firebase Storage.
  4. Download "google-services.json" file and add it to the project under: Omicron/app/src Configure the app to connect to your Fabric account.
  5. The app's survey data is available only to the authors, therefore you should update its link to your own survey. The code can be found in Configuration.java.
  6. Build your first APK file!

Enable/Disable Sensors

To enable/disable the gathering of a sensor edit Configuration.java:

Add the constant of the sensor to the array to send collected data on Wifi networks

filesNamesList

If the data need to be uploaded using mobile data are available add it also to

lightFilesNamesList

To stop the gathering of a sensor set the corresponding flag to false.

Tasks

Tasks need to be defined in the Firebase Realtime database.

The structure of the database need to be the following:

  • The first node is the appid of the user that can be retrieved from the application
  • "tasks"
  • YYYY-MM-DD (date)
  • task-id (can be choose freely but must be unique)
  • the task

The structure of a task is the following:

  • description text
  • title text
  • windowStart : hour e.g. 16
  • windowEnd : hour e.g. 18 (the extreme is not included)
  • done: initially false
  • doneTimestamp/startTimestamp: initially -1

Modify Sensor/Data Sample Rate

For the majority of the data that uSearch collects, data is collected based on interrupts. However, some of the sensor data such as GPS are still based on polling. Moreover, the data is written to the memory of the phone at a certain rate to clean the phone's RAM. All these rates can be modified in the class named Configuration.

Data Format

All the sensor, interaction, and input data are stored in JSON files and pushed to a Firebase storage bucket. The sampled data are stored in one file per each data type (e.g., location data, battery data, etc.). At every "recordRate", the available data batch is stored in a single file named [record type]records[timestamp].json. For example, the location data at timestamp 1539284954 will be stored in a JSON file named location_records_1539284954.json. Every such file is stored under a directory named user + [user id], where user id is the phone's unique ID. Below is an example JSON file for battery records:

{
   "health":"good",
   "level":23,
   "plugged":"?",
   "scale":100,
   "status":"discharging",
   "temperature":333,
   "timestamp":1523766100661,
   "voltage":3692
}

Notification

Users can delay a task and it's reissued in the next time slot or it is piggybacked at the end of another task if the next slot is already occupied by a task.

Dashboard

The dashboard can be invoked running the script dashboard.py that will open the default browser. The necessary data for visualisation purpose is downloaded using download_monitoring_data.py (the firebase json configuration downloaded from Google must be placed in users-study-data and the name of the file must be edited in the script). A list of participant to monitor must be added in the users.csv, one per line. Rerun th script download_monitoring_data.py hourly or as needed to update the data.

Cached demo

Contact

Please do feel free to contact us for any questions. Mohammad Aliannejadi: [email protected]

Acknowledgements

We would like to thank Jacopo Fidacaro and Luca Costa for their efforts in developing this app. Last but not least, we would like to thank all the participants who helped us improve the app and collect data.

Citation

@inproceedings{CostaChiir20,
    author    = {Costa, Luca and Aliannejadi, Mohammad and Crestani, Fabio},
    title     = {A Tool for Conducting User Studies on Mobile Devices,
    booktitle = {Proceedings of the {ACM} {SIGIR} Conference on 
                 Human Information Interaction and Retrieval},
    series    = {{CHIIR '20}},        
    location  = {Vancouver, BC, Canada},          
    year      = {2020}
  }

omicron's People

Contributors

aliannejadi avatar zap123 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

souvickg zap123

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.