Git Product home page Git Product logo

umdsquare / data-at-hand-mobile Goto Github PK

View Code? Open in Web Editor NEW
72.0 4.0 25.0 12.36 MB

Mobile application for exploring fitness data using both speech and touch interaction.

Home Page: https://data-at-hand.github.io

License: MIT License

JavaScript 0.27% TypeScript 90.07% Java 3.05% Objective-C 0.71% Ruby 0.11% Swift 5.73% Starlark 0.06%
speech multimodal-interactions mobile-app fitness-tracker visualization visual-data smartphones fitbit navigation

data-at-hand-mobile's Introduction

Data@Hand

Data@Hand is a cross-platform smartphone app that facilitates visual data exploration leveraging both speech and touch interactions. Data visualization is a common way that mobile health apps enable people to explore their data on smartphones. However, due to smartphones’ limitations such as small screen size and lack of precise pointing input, they provide limited support for visual data exploration with over-simplified time navigation, even though time is a primary dimension of self-tracking data. Data@Hand leverages the synergy of speech and touch; speech-based interaction takes little screen space and natural language is flexible to cover different ways of specifying dates and their ranges (e.g., “October 7th”, “Last Sunday”, “This month”). Currently, Data@Hand supports displaying the Fitbit data (e.g., step count, heart rate, sleep, and weight) for navigation and temporal comparisons tasks.

For more information about this project, please visit https://data-at-hand.github.io.

Related Research Paper (Describes the design and a user study)

Data@Hand: Fostering Visual Exploration of Personal Data on Smartphones Leveraging Speech and Touch Interaction
[Best Paper Honorable Mention Award]
Young-Ho Kim, Bongshin Lee, Arjun Srinivasan, and Eun Kyoung Choe
ACM CHI 2021 (PDF)

How to build & run

System Overview

Data@Hand is a stand-alone application that does not require a backend server. The app communicates with the Fitbit server and fetches the data locally on the device.

Acquire Fitbit API Key

  1. Register an app on the Fitbit developer page https://dev.fitbit.com/apps/new.

    1. Select Client for OAuth 2.0 Application Type.
    2. Use a URL similar to edu.umd.hcil.data-at-hand://oauth2/redirect for Callback URL. This URL will be used locally on your device.
  2. Data@Hand leverages Fitbit's Intraday API, which you should explicitly get approval from Fitbit https://dev.fitbit.com/build/reference/web-api/intraday-requests/.

  3. In the credentials directory in the repository, copy fitbit.example.json and rename it into fitbit.json.

  4. Fill the information accordingly. You can get the information in Manage My Apps on the Fitbit developer page.

{
  "client_id": "YOUR_FITBIT_ID", // <- OAuth 2.0 Client ID 
  "client_secret": "YOUR_FITBIT_SECRET", // <- Client Secret
  "redirect_uri": "YOUR_REDIRECT_URI" // <- Callback URL
}

(Android Only) Acquire Microsoft Cognitive Speech API Key

  1. Register a Microsoft Cognitive Speech-to-text service at a free-tier https://azure.microsoft.com/en-us/services/cognitive-services/speech-to-text/.
  2. In the credentials directory in the repository, copy microsoft_cognitive_service_speech.example.json and rename it into microsoft_cognitive_service_speech.json.
  3. Fill the information accordingly. You need a subscription ID and the region information.
{
  "subscriptionId": "YOUR_SUBSCRIPTION_ID",
  "region": "YOUR_AZURE_REGION" // <- Depending on the region you set. e.g., "eastus"
}

(Optional) If you want to track exceptions, register Bugsnag.

  1. Create a Bugsnag project and get the API Key https://www.bugsnag.com/.
  2. In the credentials directory in the repository, copy bugsnag.example.json and rename it into bugsnag.json.
  3. Fill the information accordingly.
{
  "api_key": "YOUR_BUGSNAG_API_KEY"
}

Compile Data@Hand

Install Node.js on your system.

Install react-native CLI:

> npm install -g @react-native-community/cli

Install dependencies (In the directory of the repository where package.json exists)

> npm i

Run on IOS:

If you have not used Cocoapods before, install it once:

> sudo gem install cocoapods

Install iOS project dependencies.

> cd ios
> pod install

Run on iOS.

> react-native run-ios

Run on Android:

> react-native run-android

Third-party Services Used


Research Team Member

Young-Ho Kim (Website)
Postdoctoral Associate
University of Maryland, College Park
*Contact for code and implementation

Bongshin Lee (Website)
Sr. Principal Researcher
Microsoft Research

Arjun Srinivasan (Website)
Research Scientist
Tableau Research
*Arjun did this work while at Georgia Institute of Technology

Eun Kyoung Choe (Website)
Associate Professor
University of Maryland, College Park


Acknowledgment

This work was in part supported by National Science Foundation award #1753452 (CAREER: Advancing Personal Informatics through Semi-Automated and Collaborative Tracking).


License

Source Code

MIT License

Original Design Resources including Logos and Assets

CC BY 4.0

data-at-hand-mobile's People

Contributors

yghokim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

data-at-hand-mobile's Issues

Optimize highlight calculation on dataStateResolver

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

App crashes on launch on Android release build.

After upgrading to React Native 0.62,
the release version of Android crashes on launch.

java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so caused by: com.facebook.jni.NativeRunnable

Process: com.dataathand, PID: 11169
java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so caused by: com.facebook.jni.NativeRunnable
at com.facebook.soloader.SoLoader.a(Unknown Source:325)
at com.facebook.soloader.SoLoader.a(Unknown Source:104)
at com.facebook.soloader.SoLoader.a(Unknown Source:108)
at com.facebook.soloader.SoLoader.a(Unknown Source:1)
at com.facebook.hermes.reactexecutor.HermesExecutor.(Unknown Source:2)
at com.facebook.hermes.reactexecutor.a.create(Unknown Source:0)
at com.facebook.react.q$e.run(Unknown Source:58)
at java.lang.Thread.run(Thread.java:919)

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.