From be0d99601e815065b7f4d2a62bdbf9c3d51d3ca5 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sun, 11 Dec 2022 17:16:45 -0800 Subject: [PATCH] Add Google flavor --- .gitignore | 1 + app/build.gradle | 39 ++++++++++-- app/src/google/AndroidManifest.xml | 24 ++++++++ .../tananaev/passportreader/GoogleActivity.kt | 60 +++++++++++++++++++ app/src/main/AndroidManifest.xml | 29 ++------- .../tananaev/passportreader/MainActivity.kt | 2 +- app/src/main/res/layout/activity_main.xml | 6 ++ app/src/regular/AndroidManifest.xml | 24 ++++++++ .../passportreader/RegularActivity.kt | 3 + build.gradle | 4 +- gradle.properties | 1 + 11 files changed, 161 insertions(+), 32 deletions(-) create mode 100644 app/src/google/AndroidManifest.xml create mode 100644 app/src/google/java/com/tananaev/passportreader/GoogleActivity.kt create mode 100644 app/src/regular/AndroidManifest.xml create mode 100644 app/src/regular/java/com/tananaev/passportreader/RegularActivity.kt diff --git a/.gitignore b/.gitignore index 969eee4..a8b9dd3 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,6 @@ .idea .DS_Store local.properties +google-services.json *.iml build diff --git a/app/build.gradle b/app/build.gradle index 21d8e63..73bfea8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,13 +9,21 @@ android { defaultConfig { applicationId 'com.tananaev.passportreader' - minSdkVersion 15 + minSdkVersion 19 targetSdkVersion 33 - versionCode 18 - versionName "2.3" + versionCode 19 + versionName '3.0' multiDexEnabled = true } - namespace "com.tananaev.passportreader" + namespace 'com.tananaev.passportreader' + + flavorDimensions 'default' + productFlavors { + regular { + isDefault = true + } + google + } packagingOptions { resources { @@ -35,6 +43,27 @@ dependencies { implementation 'com.madgag.spongycastle:prov:1.54.0.0' implementation 'com.gemalto.jp2:jp2-android:1.0.3' implementation 'com.github.mhshams:jnbis:1.1.0' - implementation 'org.bouncycastle:bcpkix-jdk15on:1.65' + implementation 'org.bouncycastle:bcpkix-jdk15on:1.65' // do not update implementation 'commons-io:commons-io:2.8.0' + googleImplementation platform('com.google.firebase:firebase-bom:31.0.0') + googleImplementation 'com.google.firebase:firebase-analytics-ktx' + googleImplementation 'com.google.firebase:firebase-crashlytics' + googleImplementation 'com.google.android.gms:play-services-ads:21.3.0' + googleImplementation 'com.google.android.play:review-ktx:2.0.1' +} + +if (getGradle().getStartParameter().getTaskRequests().toString().contains('Google')) { + apply plugin: 'com.google.gms.google-services' + apply plugin: 'com.google.firebase.crashlytics' + + task copyJson(type: Copy) { + from '../../environment/firebase' + into '.' + include 'passport-reader.json' + rename('passport-reader.json', 'google-services.json') + } + + afterEvaluate { + preBuild.dependsOn copyJson + } } diff --git a/app/src/google/AndroidManifest.xml b/app/src/google/AndroidManifest.xml new file mode 100644 index 0000000..0968fb1 --- /dev/null +++ b/app/src/google/AndroidManifest.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/google/java/com/tananaev/passportreader/GoogleActivity.kt b/app/src/google/java/com/tananaev/passportreader/GoogleActivity.kt new file mode 100644 index 0000000..96e03fd --- /dev/null +++ b/app/src/google/java/com/tananaev/passportreader/GoogleActivity.kt @@ -0,0 +1,60 @@ +package com.tananaev.passportreader + +import android.os.Bundle +import android.preference.PreferenceManager +import android.widget.FrameLayout +import com.google.android.gms.ads.AdRequest +import com.google.android.gms.ads.AdSize +import com.google.android.gms.ads.AdView +import com.google.android.gms.ads.MobileAds +import com.google.android.play.core.review.ReviewManagerFactory +import com.google.firebase.analytics.FirebaseAnalytics +import com.google.firebase.analytics.ktx.analytics +import com.google.firebase.ktx.Firebase + +class GoogleActivity : MainActivity() { + private lateinit var firebaseAnalytics: FirebaseAnalytics + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + firebaseAnalytics = Firebase.analytics + MobileAds.initialize(this) {} + + val adView = AdView(this).apply { + setAdSize(AdSize.BANNER) + adUnitId = "ca-app-pub-9061647223840223/5869276959" + loadAd(AdRequest.Builder().build()) + } + val params = FrameLayout.LayoutParams( + FrameLayout.LayoutParams.MATCH_PARENT, + FrameLayout.LayoutParams.WRAP_CONTENT, + ) + val containerView: FrameLayout = findViewById(R.id.bottom_container) + containerView.addView(adView, params) + } + + override fun onResume() { + super.onResume() + handleRating() + } + + @Suppress("DEPRECATION") + private fun handleRating() { + val preferences = PreferenceManager.getDefaultSharedPreferences(this) + if (!preferences.getBoolean("ratingShown", false)) { + val openTimes = preferences.getInt("openTimes", 0) + 1 + preferences.edit().putInt("openTimes", openTimes).apply() + if (openTimes >= 5) { + val reviewManager = ReviewManagerFactory.create(this) + reviewManager.requestReviewFlow().addOnCompleteListener { infoTask -> + if (infoTask.isSuccessful) { + val flow = reviewManager.launchReviewFlow(this, infoTask.result) + flow.addOnCompleteListener { + preferences.edit().putBoolean("ratingShown", true).apply() + } + } + } + } + } + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8e56418..e8a62af 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,35 +12,14 @@ android:supportsRtl="true" android:theme="@style/AppTheme"> - - - - - - - - - - - - - - - + + android:screenOrientation="fullSensor" /> diff --git a/app/src/main/java/com/tananaev/passportreader/MainActivity.kt b/app/src/main/java/com/tananaev/passportreader/MainActivity.kt index 0bc6c00..c9f2e66 100644 --- a/app/src/main/java/com/tananaev/passportreader/MainActivity.kt +++ b/app/src/main/java/com/tananaev/passportreader/MainActivity.kt @@ -73,7 +73,7 @@ import java.text.ParseException import java.text.SimpleDateFormat import java.util.* -class MainActivity : AppCompatActivity() { +abstract class MainActivity : AppCompatActivity() { private lateinit var passportNumberView: EditText private lateinit var expirationDateView: EditText diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index b94a222..8a0bbcb 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -98,4 +98,10 @@ + + diff --git a/app/src/regular/AndroidManifest.xml b/app/src/regular/AndroidManifest.xml new file mode 100644 index 0000000..d855f74 --- /dev/null +++ b/app/src/regular/AndroidManifest.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/regular/java/com/tananaev/passportreader/RegularActivity.kt b/app/src/regular/java/com/tananaev/passportreader/RegularActivity.kt new file mode 100644 index 0000000..e3d3b88 --- /dev/null +++ b/app/src/regular/java/com/tananaev/passportreader/RegularActivity.kt @@ -0,0 +1,3 @@ +package com.tananaev.passportreader + +class RegularActivity : MainActivity() diff --git a/build.gradle b/build.gradle index f646a3a..1ef989c 100644 --- a/build.gradle +++ b/build.gradle @@ -5,8 +5,10 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.3.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath 'com.android.tools.build:gradle:7.3.1' + classpath 'com.google.gms:google-services:4.3.14' + classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2' } } diff --git a/gradle.properties b/gradle.properties index 5465fec..5a40459 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,3 @@ +org.gradle.jvmargs=-Xmx4096m android.enableJetifier=true android.useAndroidX=true \ No newline at end of file