diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 6eefe42..2028580 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -4,6 +4,8 @@ plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("io.objectbox") + id("com.google.gms.google-services") + id("com.google.firebase.crashlytics") } val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) android { @@ -16,8 +18,8 @@ android { minSdk = 24 //noinspection OldTargetApi targetSdk = 35 - versionCode = 1 - versionName = "1.0" + versionCode = 2 + versionName = "1.1" setProperty("archivesBaseName", "The Prank App_V" + versionName + "(${versionCode})_$timestamp") testInstrumentationRunner = "androidx.sounds.runner.AndroidJUnitRunner" vectorDrawables { @@ -61,5 +63,91 @@ implementation("androidx.appcompat:appcompat:1.6.1") implementation ("com.github.bumptech.glide:glide:4.16.0") implementation ("com.airbnb.android:lottie:5.2.0") + implementation(files("libs/TopOnLibrary_06_27_16_00-release.aar")) + implementation(files("libs/UpLoadLibrary_07_03_11_54-release.aar")) + + implementation(platform("com.google.firebase:firebase-bom:33.7.0")) + implementation("com.google.firebase:firebase-crashlytics") + implementation("com.google.firebase:firebase-analytics") + implementation("com.google.firebase:firebase-config") + + + //-----------------------------------------------TopOn(Mintegral、Pangle、UnitAds、Digital Turbine(Fyber)、Chartboost&Helium、Ironsource、Liftoff(Vungle)、Inmobi、Start.io、Bigo) + //TU (Necessary) + implementation("com.thinkup.sdk:core-tpn:6.4.90") + implementation("com.thinkup.sdk:nativead-tpn:6.4.90") + implementation("com.thinkup.sdk:banner-tpn:6.4.90") + implementation("com.thinkup.sdk:interstitial-tpn:6.4.90") + implementation("com.thinkup.sdk:rewardedvideo-tpn:6.4.90") + implementation("com.thinkup.sdk:splash-tpn:6.4.90") + + //Androidx (Necessary) + implementation("androidx.appcompat:appcompat:1.6.1") + implementation("androidx.browser:browser:1.4.0") + + //StartApp + implementation("com.thinkup.sdk:adapter-tpn-startapp:6.4.90") + implementation("com.startapp:inapp-sdk:5.0.2") + + //Vungle + implementation("com.thinkup.sdk:adapter-tpn-vungle:6.4.90") + implementation("com.vungle:vungle-ads:7.5.0") + implementation("com.google.android.gms:play-services-basement:18.1.0") + implementation("com.google.android.gms:play-services-ads-identifier:18.0.1") + + //UnityAds + implementation("com.thinkup.sdk:adapter-tpn-unityads:6.4.90") + implementation("com.unity3d.ads:unity-ads:4.14.0") + + //Ironsource + implementation("com.thinkup.sdk:adapter-tpn-ironsource:6.4.90") + implementation("com.ironsource.sdk:mediationsdk:8.7.0") + implementation("com.google.android.gms:play-services-appset:16.0.2") + implementation("com.google.android.gms:play-services-ads-identifier:18.0.1") + implementation("com.google.android.gms:play-services-basement:18.1.0") + + //Bigo + implementation("com.thinkup.sdk:adapter-tpn-bigo:6.4.90") + implementation("com.bigossp:bigo-ads:5.3.0") + + //Pangle + implementation("com.thinkup.sdk:adapter-tpn-pangle:6.4.90.1") + implementation("com.pangle.global:pag-sdk:7.2.0.6") + implementation("com.google.android.gms:play-services-ads-identifier:18.2.0") + + //Inmobi + implementation("com.thinkup.sdk:adapter-tpn-inmobi:6.4.90") + implementation("com.inmobi.monetization:inmobi-ads-kotlin:10.8.2") + + //Mintegral + implementation("com.thinkup.sdk:adapter-tpn-mintegral:6.4.90") + implementation("com.mbridge.msdk.oversea:mbridge_android_sdk:16.9.71") + implementation("androidx.recyclerview:recyclerview:1.1.0") + + //Chartboost + implementation("com.thinkup.sdk:adapter-tpn-chartboost:6.4.90") + implementation("com.chartboost:chartboost-sdk:9.8.3") + implementation("com.chartboost:chartboost-mediation-sdk:4.9.2") + implementation("com.chartboost:chartboost-mediation-adapter-chartboost:4.9.8.1.0") + implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0") + implementation("com.squareup.okhttp3:logging-interceptor:4.10.0") + implementation("com.squareup.okhttp3:okhttp:4.10.0") + implementation("com.squareup.retrofit2:converter-scalars:2.9.0") + implementation("com.squareup.retrofit2:retrofit:2.9.0") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1") + + //Fyber + implementation("com.thinkup.sdk:adapter-tpn-fyber:6.4.90") + implementation("com.fyber:marketplace-sdk:8.3.7") + implementation("com.google.android.gms:play-services-ads-identifier:18.0.1") + + //Tramini + implementation("com.thinkup.sdk:tramini-plugin-tpn:6.4.90") + + // Debugger UI Tools + implementation("com.anythink.sdk:debugger-ui:1.1.0") + + //----------------------------------------------TopOn } \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json new file mode 100644 index 0000000..fca7fa2 --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,29 @@ +{ + "project_info": { + "project_number": "804679130215", + "project_id": "the-prank-app-599a9", + "storage_bucket": "the-prank-app-599a9.firebasestorage.app" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:804679130215:android:9528cd7bfb6352394088c2", + "android_client_info": { + "package_name": "com.prank.app.color" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyCxgqYiydRqfdKTBxX5778VusbPBOL94h8" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/libs/TopOnLibrary_06_27_16_00-release.aar b/app/libs/TopOnLibrary_06_27_16_00-release.aar new file mode 100644 index 0000000..2500938 Binary files /dev/null and b/app/libs/TopOnLibrary_06_27_16_00-release.aar differ diff --git a/app/libs/UpLoadLibrary_07_03_11_54-release.aar b/app/libs/UpLoadLibrary_07_03_11_54-release.aar new file mode 100644 index 0000000..5a50672 Binary files /dev/null and b/app/libs/UpLoadLibrary_07_03_11_54-release.aar differ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2e519ee..cdd9241 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,6 +19,7 @@ android:label="@string/app_name" android:roundIcon="@mipmap/icon" android:supportsRtl="true" + android:networkSecurityConfig="@xml/net" android:theme="@style/Theme.FunnyAudio" tools:targetApi="31"> ( ActivityResultContracts.RequestPermission() ) { isGranted: Boolean -> @@ -78,6 +79,8 @@ class ActivityImport : AppCompatActivity(), View.OnClickListener { binding.btnimport.setOnClickListener(this) binding.record.setOnClickListener(this) binding.back.setOnClickListener(this) + + AdManager.showTopOn(this){} } private fun initList() { diff --git a/app/src/main/java/com/prank/app/color/activity/ActivityLike.kt b/app/src/main/java/com/prank/app/color/activity/ActivityLike.kt index 6ef827b..bb31d23 100644 --- a/app/src/main/java/com/prank/app/color/activity/ActivityLike.kt +++ b/app/src/main/java/com/prank/app/color/activity/ActivityLike.kt @@ -4,8 +4,10 @@ import android.os.Bundle import android.view.View import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.GridLayoutManager -import com.prank.app.color.dbdata.DbTool +import com.ad.toponlibrary.AdManager +import com.ad.toponlibrary.onActionListener import com.prank.app.color.databinding.ActivityLikeBinding +import com.prank.app.color.dbdata.DbTool import com.prank.app.color.list.AdapterLike import com.prank.app.color.utils.Common import com.prank.app.color.utils.ItemDecoration @@ -20,7 +22,7 @@ class ActivityLike : AppCompatActivity(), View.OnClickListener { setContentView(binding.root) Common.setStatusBarTextColor(this, true) binding.back.setOnClickListener(this) - + AdManager.loadAllAd() binding.list.run { layoutManager = GridLayoutManager(this@ActivityLike, 2) @@ -43,6 +45,7 @@ class ActivityLike : AppCompatActivity(), View.OnClickListener { adapter = likeAdapter } + AdManager.showTopOn(this, onActionListener { }) } override fun onClick(v: View?) { diff --git a/app/src/main/java/com/prank/app/color/activity/ActivityList.java b/app/src/main/java/com/prank/app/color/activity/ActivityList.java index 7131bdd..2ed960b 100644 --- a/app/src/main/java/com/prank/app/color/activity/ActivityList.java +++ b/app/src/main/java/com/prank/app/color/activity/ActivityList.java @@ -7,6 +7,8 @@ import android.view.View; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.GridLayoutManager; +import com.ad.toponlibrary.AdManager; +import com.ad.toponlibrary.onActionListener; import com.prank.app.color.dbdata.MyData; import com.prank.app.color.dbdata.MyInfo; import com.prank.app.color.databinding.ActivityListBinding; @@ -31,7 +33,15 @@ public class ActivityList extends AppCompatActivity implements View.OnClickListe colorIndex = getIntent().getIntExtra(Common.KEY_LIST_COLOR_POS,0); activityListBinding.categoryName.setText(data.getName()); onList(); + AdManager.loadAllAd(); activityListBinding.back.setOnClickListener(this); + + AdManager.showTopOn(this, new onActionListener() { + @Override + public void onAction() { + + } + }); } private void onList() { diff --git a/app/src/main/java/com/prank/app/color/activity/ActivityPlay.java b/app/src/main/java/com/prank/app/color/activity/ActivityPlay.java index e9210a7..5831a99 100644 --- a/app/src/main/java/com/prank/app/color/activity/ActivityPlay.java +++ b/app/src/main/java/com/prank/app/color/activity/ActivityPlay.java @@ -15,6 +15,8 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.LinearLayoutManager; +import com.ad.toponlibrary.AdManager; +import com.ad.toponlibrary.onActionListener; import com.bumptech.glide.Glide; import com.prank.app.color.R; import com.prank.app.color.dbdata.DbTool; @@ -53,7 +55,7 @@ public class ActivityPlay extends AppCompatActivity implements View.OnClickListe Common.setStatusBarTextColor(this, true); info = (MyInfo) getIntent().getSerializableExtra(Common.KEY_PLAY_DATA); color = getIntent().getIntExtra(Common.KEY_LIST_COLOR_POS, 0); -// playBinding.constraintLayout.setBackground(ContextCompat.getDrawable(this, Tools.playBgs[color])); + AdManager.loadAllAd(); initAudio(); String covert = info.getCovert(); if (covert != null && !covert.isEmpty()) { @@ -76,6 +78,12 @@ public class ActivityPlay extends AppCompatActivity implements View.OnClickListe initLike(); loadMore(); volumeReceiver(); + AdManager.showTopOn(this, new onActionListener() { + @Override + public void onAction() { + + } + }); } @@ -183,26 +191,31 @@ public class ActivityPlay extends AppCompatActivity implements View.OnClickListe if (v.equals(playBinding.back)) { finish(); } else if (v.equals(playBinding.btnPlay)) { - boolean selected = playBinding.btnPlay.isSelected(); - if (selected) { - if (mediaPlayer.isPlaying()) { - playBinding.rippleView.pauseRipple(); - mediaPlayer.pause(); - isPause = true; - } - } else { - if (!mediaPlayer.isPlaying()) { - mediaPlayer.start(); - if (isPause) { - playBinding.rippleView.resumeRipple(); - } else { - playBinding.rippleView.startRipple(); - } - isPause = false; - } - } - playBinding.btnPlay.setSelected(!selected); + AdManager.showTopOn(ActivityPlay.this, new onActionListener() { + @Override + public void onAction() { + boolean selected = playBinding.btnPlay.isSelected(); + if (selected) { + if (mediaPlayer.isPlaying()) { + playBinding.rippleView.pauseRipple(); + mediaPlayer.pause(); + isPause = true; + } + } else { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + if (isPause) { + playBinding.rippleView.resumeRipple(); + } else { + playBinding.rippleView.startRipple(); + } + isPause = false; + } + } + playBinding.btnPlay.setSelected(!selected); + } + }); } else if (v.equals(playBinding.imLike)) { playBinding.imLike.setSelected(!playBinding.imLike.isSelected()); boolean selected = playBinding.imLike.isSelected(); @@ -216,10 +229,16 @@ public class ActivityPlay extends AppCompatActivity implements View.OnClickListe playBinding.imLoop.setSelected(!playBinding.imLoop.isSelected()); mediaPlayer.setLooping(playBinding.imLoop.isSelected()); } else if (v.equals(playBinding.imTimer)) { - if (dialogTimer == null) { - dialogTimer = new DialogTimer(ActivityPlay.this, this); - } - dialogTimer.showTop(playBinding.imTimer); + AdManager.showTopOn(ActivityPlay.this, new onActionListener() { + @Override + public void onAction() { + if (dialogTimer == null) { + dialogTimer = new DialogTimer(ActivityPlay.this, ActivityPlay.this); + } + dialogTimer.showTop(playBinding.imTimer); + } + }); + } } diff --git a/app/src/main/java/com/prank/app/color/activity/ActivityRecord.java b/app/src/main/java/com/prank/app/color/activity/ActivityRecord.java index 608e5cf..b76436e 100644 --- a/app/src/main/java/com/prank/app/color/activity/ActivityRecord.java +++ b/app/src/main/java/com/prank/app/color/activity/ActivityRecord.java @@ -9,6 +9,8 @@ import android.view.View; import androidx.appcompat.app.AppCompatActivity; +import com.ad.toponlibrary.AdManager; +import com.ad.toponlibrary.onActionListener; import com.prank.app.color.R; import com.prank.app.color.databinding.ActivityRecorderBinding; import com.prank.app.color.utils.Common; @@ -31,9 +33,15 @@ public class ActivityRecord extends AppCompatActivity { setContentView(binding.getRoot()); Common.setStatusBarTextColor(this, true); recorderUtils = new RecorderUtils(this); - + AdManager.loadAllAd(); binding.audioTime.setText(R.string.time_init); + AdManager.showTopOn(this, new onActionListener() { + @Override + public void onAction() { + + } + }); initEvent(); } diff --git a/app/src/main/java/com/prank/app/color/activity/ActivitySave.java b/app/src/main/java/com/prank/app/color/activity/ActivitySave.java index 55857a1..df833c0 100644 --- a/app/src/main/java/com/prank/app/color/activity/ActivitySave.java +++ b/app/src/main/java/com/prank/app/color/activity/ActivitySave.java @@ -16,6 +16,8 @@ import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; +import com.ad.toponlibrary.AdManager; +import com.ad.toponlibrary.onActionListener; import com.prank.app.color.R; import com.prank.app.color.dbdata.DbTool; import com.prank.app.color.dbdata.MyInfo; @@ -48,7 +50,7 @@ public class ActivitySave extends AppCompatActivity { super.onCreate(savedInstanceState); binding = ActivitySaveBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); - + AdManager.loadAllAd(); Common.setStatusBarTextColor(this, true); binding.audioTime.setText(R.string.time_init); initData(); @@ -137,20 +139,29 @@ public class ActivitySave extends AppCompatActivity { } }); binding.save.setOnClickListener(v -> { - String name = binding.saveEdit.getText().toString().trim(); - boolean b = DbTool.checkName(name); - if (!TextUtils.isEmpty(name)) { - if(!b){ - binding.saveEdit.setText(""); - Toast.makeText(ActivitySave.this, getString(R.string.name_hint), Toast.LENGTH_SHORT).show(); - return; + + AdManager.showTopOn(ActivitySave.this, new onActionListener() { + @Override + public void onAction() { + String name = binding.saveEdit.getText().toString().trim(); + boolean b = DbTool.checkName(name); + if (!TextUtils.isEmpty(name)) { + if(!b){ + binding.saveEdit.setText(""); + Toast.makeText(ActivitySave.this, getString(R.string.name_hint), Toast.LENGTH_SHORT).show(); + return; + } + saveData(name); + Toast.makeText(ActivitySave.this, getString(R.string.save_tips), Toast.LENGTH_SHORT).show(); + finish(); + } else { + Toast.makeText(ActivitySave.this, getString(R.string.save_tip), Toast.LENGTH_SHORT).show(); + } } - saveData(name); - Toast.makeText(ActivitySave.this, getString(R.string.save_tips), Toast.LENGTH_SHORT).show(); - finish(); - } else { - Toast.makeText(ActivitySave.this, getString(R.string.save_tip), Toast.LENGTH_SHORT).show(); - } + }); + + + }); } diff --git a/app/src/main/java/com/prank/app/color/activity/ActivityWel.java b/app/src/main/java/com/prank/app/color/activity/ActivityWel.java index 1042373..3ff4eff 100644 --- a/app/src/main/java/com/prank/app/color/activity/ActivityWel.java +++ b/app/src/main/java/com/prank/app/color/activity/ActivityWel.java @@ -6,12 +6,17 @@ import android.os.CountDownTimer; import androidx.appcompat.app.AppCompatActivity; +import com.ad.toponlibrary.AdManager; import com.prank.app.color.databinding.ActivityWelBinding; import com.prank.app.color.utils.Common; +import kotlin.Unit; +import kotlin.jvm.functions.Function0; +import kotlin.jvm.functions.Function1; + public class ActivityWel extends AppCompatActivity { - private long time = 3000; + private long time = 12000; private ActivityWelBinding binding; private CountDownTimer countDownTimer; @@ -21,20 +26,21 @@ public class ActivityWel extends AppCompatActivity { binding = ActivityWelBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); Common.setStatusBarTextColor(this, true); - countDownTimer = new CountDownTimer(time, 200) { + countDownTimer = AdManager.showWelcomeAd(this, time, new Function1() { @Override - public void onTick(long millisUntilFinished) { - int progressPercentage = (int) ((100 * millisUntilFinished) / time); + public Unit invoke(Long aLong) { + int progressPercentage = (int) ((100 * aLong) / time); int Percentage = 100 - progressPercentage; binding.loadingPb.setProgress(Percentage); + return null; } - + }, new Function0() { @Override - public void onFinish() { + public Unit invoke() { welcomeMain(); + return null; } - }; - + }); countDownTimer.start(); } diff --git a/app/src/main/res/xml/net.xml b/app/src/main/res/xml/net.xml new file mode 100644 index 0000000..0ac6102 --- /dev/null +++ b/app/src/main/res/xml/net.xml @@ -0,0 +1,6 @@ + + + + mobile-server.lux-ad.com + + diff --git a/build.gradle.kts b/build.gradle.kts index 0f3fea3..8a366f6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,6 +2,8 @@ plugins { id("com.android.application") version "8.6.0" apply false id("org.jetbrains.kotlin.android") version "2.0.0" apply false + id("com.google.gms.google-services") version "4.4.2" apply false + id ("com.google.firebase.crashlytics") version "3.0.2" apply false } buildscript { diff --git a/settings.gradle.kts b/settings.gradle.kts index 53bb526..c93a9bc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -12,6 +12,25 @@ dependencyResolutionManagement { repositories { google() mavenCentral() + + //TU(Core) + maven ( "https://jfrog.anythinktech.com/artifactory/overseas_sdk") + + //Ironsource + maven ( "https://android-sdk.is.com/") + + //Pangle + maven ("https://artifact.bytedance.com/repository/pangle") + + //Mintegral + maven ("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") + + //Chartboost + maven ( "https://cboost.jfrog.io/artifactory/chartboost-ads") + maven ("https://cboost.jfrog.io/artifactory/chartboost-mediation") + + //TopOn集成测试工具 + maven ( "https://jfrog.anythinktech.com/artifactory/debugger") } }