Skip to content

Commit

Permalink
Merge pull request #189 from willowtreeapps/release/1.3.0
Browse files Browse the repository at this point in the history
Merge release/1.3.0 into master
  • Loading branch information
jstubing authored Apr 28, 2020
2 parents 505f69d + 79ddd21 commit 409dae4
Show file tree
Hide file tree
Showing 310 changed files with 13,546 additions and 234 deletions.
42 changes: 42 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
version: 2
jobs:
build:
working_directory: ~/code
docker:
- image: circleci/android:api-29-node
environment:
JVM_OPTS: -Xmx3200m
steps:
- checkout
- restore_cache:
key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
# - run:
# name: Chmod permissions #if permission for Gradlew Dependencies fail, use this.
# command: sudo chmod +x ./gradlew
- run:
name: Download Dependencies
command: ./gradlew androidDependencies
- save_cache:
paths:
- ~/.gradle
key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
- run:
name: Run Tests
command: ./gradlew lint test
- run:
name: Build Debug Apk
command: ./gradlew assembleDebug
- run:
name: Install AppCenter CLI
command: sudo npm install -g appcenter-cli
- run:
name: Publish to AppCenter
command: |
appcenter login --token ${APP_CENTER_TOKEN}
export apk="$(find ./app/build/outputs/apk/debug -regex '.*.apk')"
appcenter distribute release -f ${apk} -g ${APP_CENTER_DISTRIBUTION_LIST} --app ${APP_CENTER_APP_NAME} -r "Android" --silent
- store_artifacts: # for display in Artifacts: https://circleci.com/docs/2.0/artifacts/
path: app/build/reports
destination: reports
- store_test_results: # for display in Test Summary: https://circleci.com/docs/2.0/collect-test-data/
path: app/build/test-results
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,7 @@ fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md

app/keys/
app/release/
app/.DS_Store
28 changes: 28 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Vocable Contributing Guidelines

🥳🎉 Thank you for contributing to Vocable! 🎉🥳

Contributions from the open-source community are crucial in helping us meet make the best AAC app possible.

# How to Contribute

### Reporting Bugs
- Check the existing issues to make sure the bug has not already been reported.
- Open an issue describing the bug.
- Be sure to use a descriptive title and include detailed steps on how to reproduce the issue.
- Explain the expected behavior vs. the actual behavior.
- Include the version number.
- Tag the issue with the `bug` label.


### Suggesting Enhancements
- Open an issue clearly describing the behavior you would like to see.
- If applicable, provide a few examples of how the feature would work and what purpose it would serve.
- Tag the issue with the `enhancement` label.

### Contributing Code by Opening a Pull Request
To contribute to Vocable, please fork the GitHub repo and submit a pull request to the `develop` branch.

Our code owners will review your work and merge once any issues have been addressed. If the PR gets too outdated we may ask you to rebase and force push to update the PR.

That's it! Our team will merge your PR, and your changes will be included in the next app version. Thanks for your contribution! 💯
21 changes: 21 additions & 0 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2019 WillowTree, LLC

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
56 changes: 54 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,55 @@
# eyespeak-android
# Vocable AAC for Android
![Platform Android](https://img.shields.io/badge/Platform-Android-blue.svg)
![license MIT](https://img.shields.io/badge/license-MIT-brightgreen.svg)

#### Workflow: [Git Feature Branch Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow)
> Empowering people to communicate with care takers and loved ones.
[![Watch the video](marketing_assets/vocable_vimeo_still.gif)](https://player.vimeo.com/video/394212430)

[![Play Store Link](marketing_assets/google-play-badge.svg)](https://play.google.com/store/apps/details?id=com.willowtree.vocable)

## Contents
- [What is Vocable?](#what-is-vocable)
- [Features](#features)
- [Roadmap](#roadmap)
- [Contributing](#contributing)
- [Requirements](#requirements)
- [Credits](#credits)
- [License](#license)

## What is Vocable?
Vocable AAC allows those with conditions such as MS, stroke, ALS, or spinal cord injuries to communicate using an app that tracks head movements, without the need to spend tens of thousands of dollars on technology to do so.

## Features

### Multimodal User Interface

Vocable uses ARCore to track the user's head movements and understand where the user is looking at on the screen. This allows the app to be used completely hands-free: users can look around the screen and make selections by lingering their gaze at a particular element.

For users with more mobility, the app can be operated by touch.

### Saved Phrases
Use a list of common phrases provided by speech language pathologists, or create and save your own.

### Full QWERTY Keyboard
Type with your head or your hands.

## Roadmap
For the current progress on features, please visit the [project board](https://github.com/willowtreeapps/vocable-android/projects/1).

For a high-level roadmap, see the [Vocable Roadmap](./ROADMAP.md)

## Contributing
We love contributions! To get started, please see our [Contributing Guidelines](./CONTRIBUTING.md).

## Device Requirements
- [Android devices with ARCore](https://developers.google.com/ar/discover/supported-devices)

## Credits
Matt Kubota, Kyle Ohanian, Duncan Lewis, Ameir Al-Zoubi, and many more from [WillowTree](https://willowtreeapps.com/) 💙.

## License
vocable-android is released under the MIT license. See [LICENSE](LICENSE) for details.

## Other Variants
vocable-ios is available on [Apple Play Store](https://apps.apple.com/us/app/vocable-aac/id1497040547) and is also [open-source](https://github.com/willowtreeapps/vocable-ios).
16 changes: 16 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Vocable Roadmap

- [ ] Handset Support
- [ ] Edit and delete customized presets
- [ ] Custom Categories: create, edit, and delete
- [ ] Custom category/phrase sorting and UI placement
- [ ] History: recently-spoken phrases
- [ ] Head tracking calibration
- [ ] Audio feedback for navigation
- [ ] Potential Voice integration
- [ ] Alternative modalities / input actions (e.g. touch, joystick method, scanning)
- [ ] Light / Dark Mode
- [ ] Localization of app strings
- [ ] Localization of keyboard(s)
- [ ] Photo upload / pictoral buttons
- [ ] Translate selected phrase ↔️ spoken phrase
80 changes: 64 additions & 16 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,40 +4,88 @@ apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

apply plugin: 'kotlin-kapt'

android {
compileSdkVersion 28
compileSdkVersion 29
defaultConfig {
applicationId "com.example.eyespeak"
applicationId "com.willowtree.vocable"
minSdkVersion 24
targetSdkVersion 28
versionCode 1
versionName "1.0"
targetSdkVersion 29
versionCode 11
versionName "1.3.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
}
buildTypes {
release {
minifyEnabled false
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
testOptions {
execution 'ANDROIDX_TEST_ORCHESTRATOR'
}
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
viewBinding {
enabled = true
}
sourceSets {
androidTest.assets.srcDirs += files("$projectDir/schemas".toString())
}
useLibrary 'android.test.runner'
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.core:core-ktx:1.0.2'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.2.0'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.fragment:fragment:1.2.3'
// Provides ARCore Session and related resources.
implementation 'com.google.ar:core:1.16.0'
implementation 'com.google.ar.sceneform.ux:sceneform-ux:1.15.0'

testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.0'
implementation 'androidx.viewpager2:viewpager2:1.0.0'

// Provides ARCore Session and related resources.
implementation 'com.google.ar:core:1.9.0'
implementation 'com.google.ar.sceneform.ux:sceneform-ux:1.9.0'
implementation 'io.github.inflationx:calligraphy3:3.1.1'
implementation 'io.github.inflationx:viewpump:2.0.3'

implementation 'android.arch.lifecycle:extensions:1.1.1'
implementation 'android.arch.lifecycle:viewmodel:1.1.1'

implementation 'org.koin:koin-core:2.0.1'
implementation 'org.koin:koin-android:2.0.1'

implementation "androidx.room:room-runtime:2.2.5"
kapt "androidx.room:room-compiler:2.2.5"
implementation "androidx.room:room-ktx:2.2.5"

implementation 'androidx.security:security-crypto:1.0.0-beta01'

// Moshi
implementation 'com.squareup.moshi:moshi-kotlin:1.9.2'

androidTestUtil 'androidx.test:orchestrator:1.2.0'

testImplementation 'junit:junit:4.12'
androidTestImplementation "androidx.room:room-testing:2.2.5"
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test:core:1.2.0'
}
7 changes: 7 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,10 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
# JSR 305 annotations are for embedding nullability information.

# Keep room model class members
-keepclassmembers class com.willowtree.vocable.room.models** {
<init>(...);
<fields>;
}
Loading

0 comments on commit 409dae4

Please sign in to comment.