ResearchStack

ResearchStack is an SDK and UX framework for building research study apps on Android.

Be sure to check out researchstack.org and the ResearchStack forum for general information and announcements about the framework.

Documentation

Documentation is written and maintained using Javadoc:

Download

Add one or both to your app/build.gradle:

compile 'org.researchstack:backbone:1.1.1'
compile 'org.researchstack:skin:1.1.1'

You may also need to add the following source repos to your project's build.gradle:

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" } // for MPAndroidChart dependency, not on jcenter yet
    }
}

Backbone

Skin

Examples

Things to look out for when converting your ResearchKit™ app

Tasks and Steps

Tasks and Steps should function very similarly to Apple's ResearchKit™. Extend Task if you need to do something different with step order that's not in OrderedTask or SmartSurveyTask.

If you want to implement a custom Step, create a step and make getStepLayoutClass() return the Class of your own extension of StepLayout. This provides the View for your custom step and is responsible for creating the StepResult and passing it back up to the ViewTaskActivity.

If you just want a custom QuestionStep with an answer type that isn't supported yet, you will need to just create your own AnswerFormat subclass. All QuestionSteps use the same StepLayout, but the AnswerFormat provides a StepBody class that determines what the inner UI for the question looks like (date picker, text field, slider, etc).

Third-party libraries used

com.android.support:appcompat-v7
com.android.support:cardview-v7
com.android.support:design
com.android.support:preference-v14

com.github.PhilJay:MPAndroidChart

com.android.support:multidex

co.touchlab.squeaky:squeaky-query

co.touchlab.squeaky:squeaky-processor

net.zetetic:android-database-sqlcipher

com.scottyab:aes-crypto

compile 'com.cronutils:cron-utils

com.google.code.gson:gson

io.reactivex:rxandroid io.reactivex:rxjava

com.jakewharton.rxbinding:rxbinding-appcompat-v7
com.jakewharton.rxbinding:rxbinding-design
com.jakewharton.rxbinding:rxbinding-support-v4
com.jakewharton.rxbinding:rxbinding

com.squareup.okhttp3:logging-interceptor com.squareup.retrofit2:adapter-rxjava com.squareup.retrofit2:converter-gson com.squareup.retrofit2:retrofit