diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 4fef996..1269a61 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -7,6 +7,8 @@ plugins {
id("org.jetbrains.kotlin.android")
kotlin("kapt")
id ("kotlin-android")
+ id("com.google.gms.google-services")
+ id("com.google.firebase.crashlytics")
}
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
@@ -17,8 +19,8 @@ android {
applicationId = "com.app.brush.guitar.ink"
minSdk = 24
targetSdk = 36
- versionCode = 1
- versionName = "1.0"
+ versionCode = 2
+ versionName = "1.1"
setProperty(
"archivesBaseName", "RandomKeyboard_V" + versionName + "(${versionCode})_$timestamp"
)
@@ -78,6 +80,49 @@ dependencies {
implementation("com.google.android.material:material:1.8.0")
+ implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2")
+ implementation("com.google.android.gms:play-services-ads-identifier:18.0.1")
+ implementation("com.google.android.gms:play-services-location:21.0.1")
+ implementation("com.google.android.gms:play-services-appset:16.0.1")
+ // Import the Firebase BoM
+ implementation(platform("com.google.firebase:firebase-bom:34.6.0"))
+ implementation("com.google.firebase:firebase-crashlytics-ndk")
+ implementation("com.google.firebase:firebase-analytics")
+ // okhttp
+ implementation("com.squareup.okhttp3:okhttp:4.12.0")
+ implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
+ implementation(files("libs/IronSourceLibrary_01_07_18_13-release.aar"))
+ implementation(files("libs/UpLoadLibrary_12_03_15_13-release.aar"))
+ //---------------------------ironSource
+ implementation("com.unity3d.ads-mediation:mediation-sdk:9.2.0")
+// Add BIGO Ads Network
+ implementation("com.unity3d.ads-mediation:bigo-adapter:5.2.0")
+ implementation("com.bigossp:bigo-ads:5.6.2")
+// Add Chartboost Network
+ implementation("com.unity3d.ads-mediation:chartboost-adapter:5.2.0")
+// implementation("com.chartboost:chartboost-sdk:9.10.2")
+ implementation("com.chartboost:chartboost-sdk:9.8.3")
+// Add DT Exchange Network
+ implementation("com.unity3d.ads-mediation:fyber-adapter:5.2.0")
+ implementation("com.fyber:marketplace-sdk:8.4.1")
+// Add InMobi Network
+ implementation("com.unity3d.ads-mediation:inmobi-adapter:5.3.0")
+ implementation("com.inmobi.monetization:inmobi-ads-kotlin:11.1.0")
+// Add Liftoff Monetize Network
+ implementation("com.unity3d.ads-mediation:vungle-adapter:5.2.0")
+ implementation("com.vungle:vungle-ads:7.6.1")
+// Add Mintegral Network
+ implementation("com.unity3d.ads-mediation:mintegral-adapter:5.3.0")
+ implementation("com.mbridge.msdk.oversea:mbridge_android_sdk:17.0.31")
+// Add Moloco Network
+ implementation("com.unity3d.ads-mediation:moloco-adapter:5.5.0")
+ implementation("com.moloco.sdk:moloco-sdk:4.3.1")
+// Add Pangle Network
+ implementation("com.unity3d.ads-mediation:pangle-adapter:5.4.0")
+ implementation("com.pangle.global:pag-sdk:7.8.0.7")
+// Add Unity Ads Network
+ implementation("com.unity3d.ads-mediation:unityads-adapter:5.3.0")
+ implementation("com.unity3d.ads:unity-ads:4.16.4")
}
\ No newline at end of file
diff --git a/app/google-services.json b/app/google-services.json
new file mode 100644
index 0000000..09952f9
--- /dev/null
+++ b/app/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "1083327770366",
+ "project_id": "randomkeyboard-399e1",
+ "storage_bucket": "randomkeyboard-399e1.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:1083327770366:android:f896bca0cf313f09bb3faf",
+ "android_client_info": {
+ "package_name": "com.app.brush.guitar.ink"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyDMqgmBjgvtbtMb3x3hlt4skHm5ZgvJ6HI"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/app/libs/IronSourceLibrary_01_07_18_13-release.aar b/app/libs/IronSourceLibrary_01_07_18_13-release.aar
new file mode 100644
index 0000000..97be64b
Binary files /dev/null and b/app/libs/IronSourceLibrary_01_07_18_13-release.aar differ
diff --git a/app/libs/UpLoadLibrary_12_03_15_13-release.aar b/app/libs/UpLoadLibrary_12_03_15_13-release.aar
new file mode 100644
index 0000000..a3e30aa
Binary files /dev/null and b/app/libs/UpLoadLibrary_12_03_15_13-release.aar differ
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 438dba4..e4de2a5 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -43,3 +43,14 @@
-keep class com.omicronapplications.** { *; }
-keep class net.sf.sevenzipjbinding.** { *; }
+-keepclassmembers class com.ironsource.sdk.controller.IronSourceWebView$JSInterface {
+ public *;
+}
+-keepclassmembers class * implements android.os.Parcelable {
+ public static final android.os.Parcelable$Creator *;
+}
+-keep public class com.google.android.gms.ads.** {
+ public *;
+}
+-keep class com.ironsource.adapters.** { *;
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b7cddbb..caaf9f6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,7 +3,8 @@
xmlns:tools="http://schemas.android.com/tools">
-
+
+
})
+
+ ISAdManager.init("ocean", this,
+ "24d0ff7fd",
+ "693xdmd9cr0qkiv3",
+ "ijo9mg4t2m8a0as8",
+ "l4eic48lokbz4ub8", true,
+ onInitSuccess = {
+ }, onInitFail = {
+
+ })
}
+
private fun dealFile() {
val openFile = appInstance.assets.open("new_res.json")
val jsonString = getJsonString(openFile)
@@ -68,23 +84,22 @@ class App : Application() {
}
beanDetailsList.add(
DichotomyDetails().apply {
- setImgPath(imgPath)
- setZipPath(zipPath)
- setTitleName(title)
- setImgGif(imgGif)
- thumbUrl = thUrl
- thumbGif = thGif
- })
+ setImgPath(imgPath)
+ setZipPath(zipPath)
+ setTitleName(title)
+ setImgGif(imgGif)
+ thumbUrl = thUrl
+ thumbGif = thGif
+ })
}
}
val shuffled = beanDetailsList.shuffled()
- val dataBeanWrapper = EphemeralWrapper()
- .apply {
- parentName = pName
- keyboardList = shuffled
- }
+ val dataBeanWrapper = EphemeralWrapper().apply {
+ parentName = pName
+ keyboardList = shuffled
+ }
dataList.add(dataBeanWrapper)
}
@@ -98,6 +113,7 @@ class App : Application() {
list = mainList
}
+
private fun getJsonString(fileInputStream: InputStream): String? {
return try {
// FileInputStream fileInputStream = new FileInputStream(path);
@@ -116,5 +132,4 @@ class App : Application() {
}
-
}
\ No newline at end of file
diff --git a/app/src/main/java/com/app/brush/guitar/ink/eraser/BaseActivity.kt b/app/src/main/java/com/app/brush/guitar/ink/eraser/BaseActivity.kt
new file mode 100644
index 0000000..41ac3e5
--- /dev/null
+++ b/app/src/main/java/com/app/brush/guitar/ink/eraser/BaseActivity.kt
@@ -0,0 +1,36 @@
+package com.app.brush.guitar.ink.eraser
+
+import android.os.Bundle
+import androidx.activity.OnBackPressedCallback
+import androidx.appcompat.app.AppCompatActivity
+
+open class BaseActivity: AppCompatActivity() {
+ protected var backPressedCallback: OnBackPressedCallback? = null
+ /** 子类是否需要拦截返回 */
+ protected open fun shouldInterceptBackPress(): Boolean = false
+
+ /** 子类定义拦截后的操作(例如弹窗) */
+ protected open fun onInterceptBackPressed() {}
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setupBackPressedCallback()//初始化back事件
+ }
+ private fun setupBackPressedCallback() {
+ backPressedCallback = object : OnBackPressedCallback(true) {
+ override fun handleOnBackPressed() {
+ if (shouldInterceptBackPress()) {
+ // 由子类处理拦截动作
+ onInterceptBackPressed()
+ } else {
+ // 不拦截:关闭自己
+ isEnabled = false
+ onBackPressedDispatcher.onBackPressed()
+ }
+ }
+ }
+
+ onBackPressedDispatcher.addCallback(this, backPressedCallback!!)
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/app/brush/guitar/ink/eraser/CategoryListResonance.java b/app/src/main/java/com/app/brush/guitar/ink/eraser/CategoryListResonance.java
index 9021ae2..ce8fddc 100644
--- a/app/src/main/java/com/app/brush/guitar/ink/eraser/CategoryListResonance.java
+++ b/app/src/main/java/com/app/brush/guitar/ink/eraser/CategoryListResonance.java
@@ -9,7 +9,11 @@ import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.GridLayoutManager;
+import kotlin.Unit;
+import kotlin.jvm.functions.Function0;
+import com.ad.ironsourcelibrary.ActionListener;
+import com.ad.ironsourcelibrary.ISAdManager;
import com.app.brush.guitar.ink.App;
import com.app.brush.guitar.ink.R;
import com.app.brush.guitar.ink.drama.DichotomyDetails;
@@ -20,7 +24,7 @@ import com.app.brush.guitar.ink.iguana.ListDecorationFossil;
import java.util.List;
-public class CategoryListResonance extends AppCompatActivity {
+public class CategoryListResonance extends BaseActivity {
private SmallActivityListCategoryBinding vb;
public static final String KEY_NAME ="class_name";
private String name;
@@ -31,6 +35,7 @@ public class CategoryListResonance extends AppCompatActivity {
vb = SmallActivityListCategoryBinding.inflate(getLayoutInflater());
EdgeToEdge.enable(this);
setContentView(vb.getRoot());
+ ISAdManager.loadAllAd();
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
@@ -59,9 +64,22 @@ public class CategoryListResonance extends AppCompatActivity {
vb.back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- finish();
+ onInterceptBackPressed();
}
});
}
+ @Override
+ protected boolean shouldInterceptBackPress() {
+ return true;
+ }
+
+ @Override
+ protected void onInterceptBackPressed() {
+ ISAdManager.showIsAd(this, () -> {});
+ if (getBackPressedCallback() != null) {
+ getBackPressedCallback().setEnabled(false);
+ }
+ getOnBackPressedDispatcher().onBackPressed();
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/app/brush/guitar/ink/eraser/CategoryPanorama.java b/app/src/main/java/com/app/brush/guitar/ink/eraser/CategoryPanorama.java
index c398123..bc6b719 100644
--- a/app/src/main/java/com/app/brush/guitar/ink/eraser/CategoryPanorama.java
+++ b/app/src/main/java/com/app/brush/guitar/ink/eraser/CategoryPanorama.java
@@ -16,6 +16,7 @@ import androidx.fragment.app.Fragment;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
+import com.ad.ironsourcelibrary.ISAdManager;
import com.app.brush.guitar.ink.R;
import com.app.brush.guitar.ink.databinding.FlatActivityCategoryMainBinding;
import com.app.brush.guitar.ink.iguana.IsotopeTextView;
@@ -48,6 +49,12 @@ public class CategoryPanorama extends AppCompatActivity {
}
+ @Override
+ protected void onResume() {
+ super.onResume();
+ ISAdManager.loadAllAd();
+ }
+
private void init() {
List listFragment = new ArrayList<>();
listFragment.add(QuixoticHome.newInstance());
diff --git a/app/src/main/java/com/app/brush/guitar/ink/eraser/LauncherSilhouette.kt b/app/src/main/java/com/app/brush/guitar/ink/eraser/LauncherSilhouette.kt
index 26b27b1..cac0ab3 100644
--- a/app/src/main/java/com/app/brush/guitar/ink/eraser/LauncherSilhouette.kt
+++ b/app/src/main/java/com/app/brush/guitar/ink/eraser/LauncherSilhouette.kt
@@ -5,6 +5,7 @@ import android.content.Intent
import android.os.Bundle
import android.os.CountDownTimer
import android.widget.ProgressBar
+import com.ad.ironsourcelibrary.ISAdManager
import com.app.brush.guitar.ink.R
import com.app.brush.guitar.ink.iguana.UbiquitousSerene
import kotlin.math.roundToInt
@@ -16,7 +17,7 @@ import kotlin.math.roundToInt
class LauncherSilhouette : Activity() {
private lateinit var progressBar: ProgressBar
- private var countTime = 1500L
+ private var countTime = 15000L
private lateinit var timer: CountDownTimer
override fun onCreate(savedInstanceState: Bundle?) {
@@ -29,22 +30,16 @@ class LauncherSilhouette : Activity() {
}
private fun init() {
-
- timer = object : CountDownTimer(countTime, 100) {
- override fun onTick(millisUntilFinished: Long) {
- val percentage: Float = 100 - millisUntilFinished.toFloat() / countTime * 100
- val round = percentage.roundToInt()
- progressBar.progress = round
- }
-
- override fun onFinish() {
- progressBar.progress = 100
- toHome()
- }
-
+ timer = ISAdManager.showWelcomeAd(this,countTime,{ millisUntilFinished->
+ val percentage: Float = 100 - millisUntilFinished.toFloat() / countTime * 100
+ val round = percentage.roundToInt()
+ progressBar.progress = round
+ }){
+ progressBar.progress = 100
+ toHome()
}
- timer.start()
+ timer.start()
}
private fun toHome() {
diff --git a/app/src/main/java/com/app/brush/guitar/ink/eraser/SearchTrajectory.kt b/app/src/main/java/com/app/brush/guitar/ink/eraser/SearchTrajectory.kt
index f984616..bd30895 100644
--- a/app/src/main/java/com/app/brush/guitar/ink/eraser/SearchTrajectory.kt
+++ b/app/src/main/java/com/app/brush/guitar/ink/eraser/SearchTrajectory.kt
@@ -9,17 +9,18 @@ import android.view.View
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
import androidx.activity.enableEdgeToEdge
-import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.recyclerview.widget.GridLayoutManager
+import com.ad.ironsourcelibrary.ActionListener
+import com.ad.ironsourcelibrary.ISAdManager
import com.app.brush.guitar.ink.App
import com.app.brush.guitar.ink.databinding.CoolActivitySearchKeyboardBinding
import com.app.brush.guitar.ink.drama.DichotomyDetails
import com.app.brush.guitar.ink.gallery.HomeChildGalvanize
import com.app.brush.guitar.ink.iguana.ListDecorationFossil
-class SearchTrajectory : AppCompatActivity() {
+class SearchTrajectory : BaseActivity() {
private lateinit var vb: CoolActivitySearchKeyboardBinding
private lateinit var adapter: HomeChildGalvanize
@@ -54,7 +55,7 @@ class SearchTrajectory : AppCompatActivity() {
private fun setupViews() {
// 返回按钮
vb.ivBack.setOnClickListener {
- finish()
+ onInterceptBackPressed()
}
// 搜索框
@@ -162,5 +163,21 @@ class SearchTrajectory : AppCompatActivity() {
vb.recyclerSearch.visibility = View.VISIBLE
}
}
+
+ override fun shouldInterceptBackPress(): Boolean {
+ return true
+ }
+
+ override fun onInterceptBackPressed() {
+ ISAdManager.showIsAd(this,object : ActionListener{
+ override fun onAction() {
+
+ }
+ })
+ if (backPressedCallback != null) {
+ backPressedCallback!!.isEnabled = false
+ }
+ onBackPressedDispatcher.onBackPressed()
+ }
}
diff --git a/app/src/main/java/com/app/brush/guitar/ink/eraser/SetKeyboardAmplify.kt b/app/src/main/java/com/app/brush/guitar/ink/eraser/SetKeyboardAmplify.kt
index 152874a..ec8f10f 100644
--- a/app/src/main/java/com/app/brush/guitar/ink/eraser/SetKeyboardAmplify.kt
+++ b/app/src/main/java/com/app/brush/guitar/ink/eraser/SetKeyboardAmplify.kt
@@ -20,6 +20,8 @@ import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
+import com.ad.ironsourcelibrary.ActionListener
+import com.ad.ironsourcelibrary.ISAdManager
import com.app.brush.guitar.ink.App
import com.app.brush.guitar.ink.R
import com.app.brush.guitar.ink.drama.DichotomyDetails
@@ -92,6 +94,7 @@ class SetKeyboardAmplify : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.fast_activity_keyboard_setting)
+ ISAdManager.loadAllAd()
this.enableEdgeToEdge()
ViewCompat.setOnApplyWindowInsetsListener(
findViewById(R.id.main),
@@ -100,7 +103,11 @@ class SetKeyboardAmplify : AppCompatActivity() {
v!!.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
})
+ ISAdManager.showIsAd(this,object : ActionListener{
+ override fun onAction() {
+ }
+ })
findViewId()
getExtraData()
displayData()
diff --git a/app/src/main/java/com/app/brush/guitar/ink/eraser/SuccessPreviewBewilder.java b/app/src/main/java/com/app/brush/guitar/ink/eraser/SuccessPreviewBewilder.java
index e6542dc..5ab9e5c 100644
--- a/app/src/main/java/com/app/brush/guitar/ink/eraser/SuccessPreviewBewilder.java
+++ b/app/src/main/java/com/app/brush/guitar/ink/eraser/SuccessPreviewBewilder.java
@@ -18,6 +18,7 @@ import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
+import com.ad.ironsourcelibrary.ISAdManager;
import com.app.brush.guitar.ink.R;
import com.app.brush.guitar.ink.databinding.BigActivityPreviewSuccessBinding;
import com.app.brush.guitar.ink.iguana.DiodeEclipse;
@@ -32,7 +33,7 @@ import com.bumptech.glide.request.target.Target;
import jp.wasabeef.glide.transformations.BlurTransformation;
-public class SuccessPreviewBewilder extends AppCompatActivity {
+public class SuccessPreviewBewilder extends BaseActivity {
private BigActivityPreviewSuccessBinding vb;
public static String key_name = "key_name";
private int mPreviousKeyboardHeight = -1;
@@ -66,7 +67,7 @@ public class SuccessPreviewBewilder extends AppCompatActivity {
vb.idBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- finish();
+ onInterceptBackPressed();
}
});
if (curPath == null) {
@@ -128,4 +129,19 @@ public class SuccessPreviewBewilder extends AppCompatActivity {
}
});
}
+
+
+ @Override
+ protected boolean shouldInterceptBackPress() {
+ return true;
+ }
+
+ @Override
+ protected void onInterceptBackPressed() {
+ ISAdManager.showIsAd(this, () -> {});
+ if (getBackPressedCallback() != null) {
+ getBackPressedCallback().setEnabled(false);
+ }
+ getOnBackPressedDispatcher().onBackPressed();
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/xml/net.xml b/app/src/main/res/xml/net.xml
new file mode 100644
index 0000000..4c12327
--- /dev/null
+++ b/app/src/main/res/xml/net.xml
@@ -0,0 +1,6 @@
+
+
+
+ mobile-server.lux-ad.com
+
+
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index d4e8229..3d3bc68 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -3,4 +3,6 @@ plugins {
id("com.android.application") version "8.11.1" apply false
id("org.jetbrains.kotlin.android") version "2.2.21" apply false
kotlin("kapt") version "2.0.0"
+ id("com.google.gms.google-services") version "4.4.4" apply false
+ id("com.google.firebase.crashlytics") version "3.0.6" apply false
}
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 654ecad..f0a4577 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -11,8 +11,30 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
- maven("https://jitpack.io")
+ flatDir {
+ dirs("libs")
+ }
+ maven("https://jitpack.io")
+ //------------------------- IronSource
+ maven {
+ url = uri("https://android-sdk.is.com/")
+ }
+ maven {
+ url = uri("https://dl.bintray.com/ironsource-mobile/android-sdk")
+ }
+ maven {
+ url = uri("https://dl.bintray.com/ironsource-mobile/android-adapters")
+ }
+ maven {
+ url = uri("https://cboost.jfrog.io/artifactory/chartboost-ads/")
+ }
+ maven {
+ url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea")
+ }
+ maven {
+ url = uri("https://artifact.bytedance.com/repository/pangle")
+ }
}
}