Skip to content

Commit

Permalink
2.0
Browse files Browse the repository at this point in the history
The app was developed from zero.
News:
- New UI
- Offline mode
- Top contributors (of Common Voice)
- App statistics
- New options in Settings
- Sending of recordings/validations in background
- Fixed many bugs
- Telegram group: @common_voice_android
- New animations
  • Loading branch information
Sav22999 authored Jun 19, 2020
2 parents dba464d + 2aa39c2 commit 37f2504
Show file tree
Hide file tree
Showing 560 changed files with 17,920 additions and 8,796 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,5 @@
.externalNativeBuild
.cxx
*.jks
/screenshots/sample/*
/screenshots/sample/*
*/desktop.ini
6 changes: 6 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 25 additions & 0 deletions .idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

84 changes: 51 additions & 33 deletions README.md

Large diffs are not rendered by default.

Binary file added app/FD-GH/release/app-FD-GH-release.aab
Binary file not shown.
Binary file added app/GPS/release/app-GPS-release.aab
Binary file not shown.
39 changes: 35 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ android {
applicationId 'org.commonvoice.saverio'
minSdkVersion 23
targetSdkVersion 29
versionCode = 106
versionName '1.4.4'
versionCode = 113
versionName '2.0'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
Expand All @@ -20,6 +20,18 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
buildFeatures {
viewBinding true
}
flavorDimensions "source_store"
productFlavors {
"GPS" {
dimension "source_store"
}
"FD-GH" {
dimension "source_store"
}
}
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
Expand All @@ -41,9 +53,9 @@ android {

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.2.0'
implementation 'androidx.core:core-ktx:1.3.0'
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.navigation:navigation-fragment:2.2.2'
Expand All @@ -58,4 +70,23 @@ dependencies {

//volley
implementation 'com.android.volley:volley:1.1.1'

//Koin
//TODO after updating remove SharedStateViewModelExtensions.kt
implementation "org.koin:koin-androidx-viewmodel:2.1.5"
//https://github.com/InsertKoinIO/koin

//MVVM
def lifecycle_version = "2.2.0"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
//https://developer.android.com/topic/libraries/architecture/viewmodel

//WorkManager
implementation "androidx.work:work-runtime-ktx:2.3.4"
//https://developer.android.com/topic/libraries/architecture/workmanager/basics

implementation project(":lib")
}
Binary file modified app/release/app-release.aab
Binary file not shown.
9 changes: 5 additions & 4 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,19 @@
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<application
android:name=".CommonVoice"
android:allowBackup="true"
android:configChanges="locale"
android:icon="@mipmap/ic_commonvoice"
android:icon="@mipmap/ic_commonvoice_stable"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_commonvoice_round"
android:roundIcon="@mipmap/ic_commonvoice_stable_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"
tools:ignore="AllowBackup,GoogleAppIndexingWarning">
<!-- First start (TutorialActivity) -->
<!-- First start (FirstLaunch) -->
<activity
android:name=".TutorialActivity"
android:name=".FirstLaunch"
android:configChanges="orientation|screenSize"
android:label="@string/app_name"
android:theme="@style/AppTheme.FullScreen" />
Expand Down
Binary file added app/src/main/ic_commonvoice_beta-playstore.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/src/main/ic_commonvoice_stable-playstore.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 3 additions & 15 deletions app/src/main/java/org/commonvoice/saverio/BadgesActivity.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.commonvoice.saverio

import OnSwipeTouchListener
import android.content.Context
import android.graphics.Color
import android.os.Bundle
Expand All @@ -20,7 +19,6 @@ class BadgesActivity : VariableLanguageActivity(R.layout.all_badges) {
private val LEVEL_SAVED = "LEVEL_SAVED"
private val RECORDINGS_SAVED = "RECORDINGS_SAVED"
private val VALIDATIONS_SAVED = "VALIDATIONS_SAVED"
private val GESTURES = "GESTURES"

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand All @@ -47,7 +45,7 @@ class BadgesActivity : VariableLanguageActivity(R.layout.all_badges) {
loadBadges()
//checkNewBadges(2, 2, 2)//remove this

if (getGestures()) {
if (mainPrefManager.areGesturesEnabled) {
layoutAllBadges.setOnTouchListener(object : OnSwipeTouchListener(this@BadgesActivity) {
override fun onSwipeRight() {
onBackPressed()
Expand All @@ -56,16 +54,6 @@ class BadgesActivity : VariableLanguageActivity(R.layout.all_badges) {
}
}

fun getGestures(): Boolean {
return getSharedPreferences(
GESTURES,
PRIVATE_MODE
).getBoolean(
GESTURES,
false
)
}

fun loadBadges() {
val imagesLevel: List<ImageView> = listOf<ImageView>(
this.imageFirstLevelBadge,
Expand Down Expand Up @@ -152,8 +140,8 @@ class BadgesActivity : VariableLanguageActivity(R.layout.all_badges) {
val value = getSharedPreferences(LEVEL_SAVED, PRIVATE_MODE).getInt(LEVEL_SAVED, 0)
println("level: " + value)
return when (value) {
in 0..20 -> 1
in 5..49 -> 2
in 0..9 -> 1
in 10..49 -> 2
in 50..99 -> 3
in 100..499 -> 4
in 500..999 -> 5
Expand Down
142 changes: 142 additions & 0 deletions app/src/main/java/org/commonvoice/saverio/CommonVoice.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
package org.commonvoice.saverio

import android.app.Application
import androidx.lifecycle.SavedStateHandle
import androidx.work.WorkManager
import org.commonvoice.saverio_lib.viewmodels.DashboardViewModel
import org.commonvoice.saverio_lib.api.RetrofitFactory
import org.commonvoice.saverio_lib.api.network.ConnectionManager
import org.commonvoice.saverio_lib.db.AppDB
import org.commonvoice.saverio_lib.mediaPlayer.MediaPlayerRepository
import org.commonvoice.saverio_lib.mediaPlayer.RecordingSoundIndicatorRepository
import org.commonvoice.saverio_lib.mediaRecorder.FileHolder
import org.commonvoice.saverio_lib.mediaRecorder.MediaRecorderRepository
import org.commonvoice.saverio_lib.preferences.*
import org.commonvoice.saverio_lib.repositories.*
import org.commonvoice.saverio_lib.viewmodels.*
import org.koin.android.ext.koin.androidContext
import org.koin.android.ext.koin.androidLogger
import org.koin.androidx.viewmodel.dsl.viewModel
import org.koin.core.context.startKoin
import org.koin.dsl.module

/**
* Inside the Application we start Koin, so we can do Dependency Injection
*/
@Suppress("RemoveExplicitTypeArguments")
class CommonVoice : Application() {

private val dbModule = module {
single { AppDB.build(androidContext()) }
}

private val utilsModule = module {
factory { WorkManager.getInstance(androidContext()) }
single { FileHolder(androidContext()) }
single(createdAtStart = true) { ConnectionManager(androidContext()) }
}

private val prefsModule = module {
single {
MainPrefManager(
androidContext()
)
}
single {
FirstRunPrefManager(
androidContext()
)
}
single {
SpeakPrefManager(
androidContext()
)
}
single {
ListenPrefManager(
androidContext()
)
}
single {
StatsPrefManager(
androidContext()
)
}
}

private val apiModules = module {
single { RetrofitFactory(get()) }
}

private val mvvmRepos = module {
single { MediaRecorderRepository(get()) }
factory { MediaPlayerRepository() }
single { ClipsRepository(get(), get()) }
single { RecordingsRepository(get(), get()) }
single { SentencesRepository(get(), get()) }
single { ValidationsRepository(get(), get()) }
single { ReportsRepository(get(), get()) }
single { StatsRepository(get(), get()) }
single { RecordingSoundIndicatorRepository(get()) }
single { CVStatsRepository(get(), get()) }
}

private val mvvmViewmodels = module {
viewModel { (handle: SavedStateHandle) ->
SpeakViewModel(
handle,
get<SentencesRepository>(),
get<RecordingsRepository>(),
get<MediaRecorderRepository>(),
get<MediaPlayerRepository>(),
get<RecordingSoundIndicatorRepository>(),
get<ReportsRepository>(),
get<WorkManager>(),
get<SpeakPrefManager>()
)
}
viewModel { (handle: SavedStateHandle) ->
ListenViewModel(
handle,
get<ClipsRepository>(),
get<ValidationsRepository>(),
get<MediaPlayerRepository>(),
get<ReportsRepository>(),
get<WorkManager>(),
get<MainPrefManager>(),
get<ListenPrefManager>()
)
}
viewModel { DashboardViewModel(
get<CVStatsRepository>(),
get<StatsRepository>(),
get<ConnectionManager>(),
get<MainPrefManager>(),
get<StatsPrefManager>()
) }
viewModel { LoginViewModel(get()) }
viewModel { MainActivityViewModel(get(), get()) }
viewModel { HomeViewModel(get()) }
}

override fun onCreate() {
super.onCreate()

startKoin {
androidContext(this@CommonVoice)
androidLogger()
modules(
listOf(
prefsModule,
dbModule,
utilsModule,
apiModules,
mvvmRepos,
mvvmViewmodels
)
)
}

}

}
31 changes: 0 additions & 31 deletions app/src/main/java/org/commonvoice/saverio/DailyGoal.kt

This file was deleted.

Loading

0 comments on commit 37f2504

Please sign in to comment.