From a481d530f88cfaae768542ecc39ef0339faedda2 Mon Sep 17 00:00:00 2001 From: litingting Date: Wed, 2 Jul 2025 11:32:04 +0800 Subject: [PATCH] V1.1(2) --- app/build.gradle.kts | 101 ++++++++++++++++-- app/google-services.json | 29 +++++ app/libs/TopOnLibrary_06_27_16_00-release.aar | Bin 0 -> 22911 bytes .../UpLoadLibrary_06_27_16_55-release.aar | Bin 0 -> 19831 bytes app/src/main/AndroidManifest.xml | 14 ++- .../art/trace/activity/AddLikeActivity.kt | 11 +- .../art/trace/activity/CameraActivity.java | 89 ++++++--------- .../trace/activity/CategoryAllActivity.java | 16 ++- .../art/trace/activity/SplashActivity.java | 22 ++-- .../art/trace/activity/UploadActivity.kt | 30 ++++-- .../java/com/sketch/art/trace/tools/App.java | 10 ++ build.gradle.kts | 4 +- settings.gradle.kts | 17 +++ 13 files changed, 251 insertions(+), 92 deletions(-) create mode 100644 app/google-services.json create mode 100644 app/libs/TopOnLibrary_06_27_16_00-release.aar create mode 100644 app/libs/UpLoadLibrary_06_27_16_55-release.aar diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5216bee..3a92fe3 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -4,22 +4,22 @@ import java.text.SimpleDateFormat plugins { id("com.android.application") id("org.jetbrains.kotlin.android") -// id("com.google.firebase.crashlytics") -// id("com.google.gms.google-services") + id("com.google.firebase.crashlytics") + id("com.google.gms.google-services") id("io.objectbox") } val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) android { namespace = "com.sketch.art.trace" - compileSdk = 34 + compileSdk = 36 defaultConfig { //com.sketch.art.trace applicationId = "com.sketch.art.trace" - minSdk = 23 - targetSdk = 34 - versionCode = 1 - versionName = "1.0" + minSdk = 24 + targetSdk = 36 + versionCode = 2 + versionName = "1.1" setProperty( "archivesBaseName", "Sketch Art Trace_V" + versionName + "(${versionCode})_$timestamp" @@ -80,4 +80,91 @@ dependencies { implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") implementation ("com.caverock:androidsvg:1.4") + 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") + + implementation(files("libs/TopOnLibrary_06_27_16_00-release.aar")) + implementation(files("libs/UpLoadLibrary_06_27_16_55-release.aar")) + + + //-----------------------------------------------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..8cb52fa --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,29 @@ +{ + "project_info": { + "project_number": "614489165471", + "project_id": "sketch-art-trace", + "storage_bucket": "sketch-art-trace.firebasestorage.app" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:614489165471:android:d173881c33515576d81caa", + "android_client_info": { + "package_name": "com.sketch.art.trace" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyC0qlza20A4Vs9l2cL6CC2tombsh-GtxXA" + } + ], + "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 0000000000000000000000000000000000000000..25009385cdf31c7a9666f48e10d48d9cd5c8c780 GIT binary patch literal 22911 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

webcgb}}O71WB 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 VGXxy}SqeZuCJc09n$geKzW~+D0+av% literal 0 HcmV?d00001 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1c7003b..e364ba9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ - + @@ -29,6 +29,18 @@ android:supportsRtl="true" android:theme="@style/Theme.PaintingHelper" tools:targetApi="31"> + + + + + + + + () { -// @Override -// public void onActivityResult(ActivityResult result) { -// if (result.getResultCode() == RESULT_OK && result.getData() != null) { -// Uri imageUri = result.getData().getData(); -// saveUploadImage(imageUri) -// } -// } -// } -// ) ; -// storePermissionsLauncher = registerForActivityResult(new ActivityResultContracts.RequestMultiplePermissions(), new ActivityResultCallback>() { -// @Override -// public void onActivityResult(Map o) { -// boolean isGranted = true; -// for (Map.Entry stringBooleanEntry : o.entrySet()) { -// if (!stringBooleanEntry.getValue()) { -// isGranted = false; -// } -// } -// if (isGranted) { -// takeGallery(); -// } else { -// Toast.makeText(UIDetail.this, " Permission denied", Toast.LENGTH_SHORT).show(); -// } -// -// } -// }); + init(); @@ -234,11 +214,12 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis public void onClick(View v) { if (v.equals(imBack)) { - if (isMain) { - finish(); - } else { - finish(); - } + AdManager.showTopOn(CameraActivity.this, new onActionListener() { + @Override + public void onAction() { + finish(); + } + }); } else { if (!hasPermission) { @@ -261,15 +242,21 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis seekBar.setVisibility(View.VISIBLE); } }else if(v.equals(imFavorite)){ - boolean selected = imFavorite.isSelected(); - imFavorite.setSelected(!selected); - boolean newSelect = imFavorite.isSelected(); - if(newSelect){ - MyDataBase.insertOrUpdateLike(curBitmapPath); - }else { - MyDataBase.deleteLike(curBitmapPath); + AdManager.showTopOn(CameraActivity.this, new onActionListener() { + @Override + public void onAction() { + boolean selected = imFavorite.isSelected(); + imFavorite.setSelected(!selected); + boolean newSelect = imFavorite.isSelected(); + if(newSelect){ + MyDataBase.insertOrUpdateLike(curBitmapPath); + }else { + MyDataBase.deleteLike(curBitmapPath); + + } + } + }); - } } } @@ -382,23 +369,7 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis } -// private void openGalleryWithPermission() { -// String[] permissions; -// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { -// permissions = new String[]{Manifest.permission.READ_MEDIA_IMAGES}; -// } else { -// permissions = new String[]{ -// Manifest.permission.READ_EXTERNAL_STORAGE, -// Manifest.permission.WRITE_EXTERNAL_STORAGE -// }; -// } -// -// if (!Common.checkPermission(this, permissions)) { -// storePermissionsLauncher.launch(permissions); -// } else { -// takeGallery(); -// } -// } + private void showNoPermission() { diff --git a/app/src/main/java/com/sketch/art/trace/activity/CategoryAllActivity.java b/app/src/main/java/com/sketch/art/trace/activity/CategoryAllActivity.java index 44938e1..06c96a0 100644 --- a/app/src/main/java/com/sketch/art/trace/activity/CategoryAllActivity.java +++ b/app/src/main/java/com/sketch/art/trace/activity/CategoryAllActivity.java @@ -6,6 +6,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.sketch.art.trace.adapter.AdapterAll; import com.sketch.art.trace.databinding.ActivityViewAllLayoutBinding; import com.sketch.art.trace.tools.App; @@ -24,14 +26,19 @@ public class CategoryAllActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - + AdManager.loadAllAd(); preViewBinding = ActivityViewAllLayoutBinding.inflate(getLayoutInflater()); setContentView(preViewBinding.getRoot()); ComManager.setStatusBarTextColor(this, true); dirStr = getIntent().getStringExtra(App.Key_ViewDir); preViewBinding.categoryName.setText(dirStr.substring(dirStr.lastIndexOf("_") + 1)); + AdManager.showTopOn(this, new onActionListener() { + @Override + public void onAction() { + } + }); onInitList(); onInitClick(); @@ -51,7 +58,12 @@ public class CategoryAllActivity extends AppCompatActivity { preViewBinding.back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - finish(); + AdManager.showTopOn(CategoryAllActivity.this, new onActionListener() { + @Override + public void onAction() { + finish(); + } + }); } }); } diff --git a/app/src/main/java/com/sketch/art/trace/activity/SplashActivity.java b/app/src/main/java/com/sketch/art/trace/activity/SplashActivity.java index 0359a10..f36620a 100644 --- a/app/src/main/java/com/sketch/art/trace/activity/SplashActivity.java +++ b/app/src/main/java/com/sketch/art/trace/activity/SplashActivity.java @@ -6,13 +6,18 @@ import android.os.CountDownTimer; import androidx.appcompat.app.AppCompatActivity; +import com.ad.toponlibrary.AdManager; import com.sketch.art.trace.databinding.ActivitySplashLayoutBinding; import com.sketch.art.trace.tools.ComManager; +import kotlin.Unit; +import kotlin.jvm.functions.Function0; +import kotlin.jvm.functions.Function1; + public class SplashActivity extends AppCompatActivity { private ActivitySplashLayoutBinding binding; - private long time = 2000; + private long time = 12000; private CountDownTimer countDownTimer; @@ -23,20 +28,21 @@ public class SplashActivity extends AppCompatActivity { setContentView(binding.getRoot()); ComManager.setStatusBarTextColor(this, true); - - countDownTimer= new CountDownTimer(time,100) { + 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() { enterMain(); + return null; } - }; + }); countDownTimer.start(); } private void enterMain() { diff --git a/app/src/main/java/com/sketch/art/trace/activity/UploadActivity.kt b/app/src/main/java/com/sketch/art/trace/activity/UploadActivity.kt index 9a655d0..ac7e0a8 100644 --- a/app/src/main/java/com/sketch/art/trace/activity/UploadActivity.kt +++ b/app/src/main/java/com/sketch/art/trace/activity/UploadActivity.kt @@ -17,6 +17,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.core.content.FileProvider import androidx.recyclerview.widget.GridLayoutManager +import com.ad.toponlibrary.AdManager import com.sketch.art.trace.R import com.sketch.art.trace.adapter.AdapterUpload import com.sketch.art.trace.databinding.ActivityUploadLayoutBinding @@ -54,7 +55,8 @@ class UploadActivity : AppCompatActivity() { setContentView(binding.root) onInit() initClick() - + AdManager.loadAllAd() + AdManager.showTopOn(this){} } @@ -63,18 +65,24 @@ class UploadActivity : AppCompatActivity() { finish() } binding.addImg.setOnClickListener { - dialog = dialog ?: DialogSelect(object : - OnDialogClickListener { - override fun onClickCamera() { - openCameraWithPermission() - } - override fun onClickGallery() { - openGalleryWithPermission() - } + AdManager.showTopOn(this){ + + dialog = dialog ?: DialogSelect(object : + OnDialogClickListener { + override fun onClickCamera() { + openCameraWithPermission() + } + + override fun onClickGallery() { + openGalleryWithPermission() + } + + }) + dialog!!.show(supportFragmentManager, "") + + } - }) - dialog!!.show(supportFragmentManager, "") } } diff --git a/app/src/main/java/com/sketch/art/trace/tools/App.java b/app/src/main/java/com/sketch/art/trace/tools/App.java index 3d2a314..28edc7c 100644 --- a/app/src/main/java/com/sketch/art/trace/tools/App.java +++ b/app/src/main/java/com/sketch/art/trace/tools/App.java @@ -4,7 +4,10 @@ import android.app.Application; import android.content.res.AssetManager; import android.graphics.Typeface; +import com.ad.toponlibrary.AdManager; import com.sketch.art.trace.mydata.MyDataBase; +import com.up.uploadlibrary.SaveUtils; +import com.up.uploadlibrary.UpLoadManager; import java.util.Arrays; import java.util.Collections; @@ -56,6 +59,13 @@ public class App extends Application { defaultFont = Typeface.createFromAsset(assets, "myfont.ttf"); classNameList = Arrays.asList(CLASS_NAMES); MyDataBase.init(this); + + AdManager.INSTANCE.init(TAG,app,"h6863ab3c02e55","addf54d133b312f627700a82e99f1c335", + "fe06c76b794f95216f98e5982ae8f335fc558956", + "n6863aba0ba9d3", + "n6863ab79df088", + "n6863ab6838cca",false); + UpLoadManager.INSTANCE.init(this,TAG); } public static List getAllDir() { diff --git a/build.gradle.kts b/build.gradle.kts index 526e9a9..17e255e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,8 +2,8 @@ plugins { id("com.android.application") version "8.1.0" apply false id("org.jetbrains.kotlin.android") version "1.8.20" apply false -// id("com.google.gms.google-services") version "4.3.15" apply false -// id ("com.google.firebase.crashlytics") version "2.9.2" apply false + id("com.google.gms.google-services") version "4.3.15" apply false + id ("com.google.firebase.crashlytics") version "2.9.2" apply false } buildscript{ dependencies{ diff --git a/settings.gradle.kts b/settings.gradle.kts index 5e5d333..9e248c7 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -12,7 +12,24 @@ 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") }