From 6600ad8f46e70ce347c6042097c06365595a0a48 Mon Sep 17 00:00:00 2001 From: litingting Date: Fri, 27 Jun 2025 16:32:32 +0800 Subject: [PATCH] V1.1(2) topon+upload --- app/build.gradle.kts | 97 ++++++++++++- app/google-services.json | 29 ++++ app/libs/TopOnLibrary_06_27_16_00-release.aar | Bin 0 -> 22911 bytes .../UpLoadLibrary_06_27_16_19-release.aar | Bin 0 -> 18640 bytes .../ar/drawing/activity/AllActivity.java | 15 +- .../ar/drawing/activity/LikeActivity.kt | 12 +- .../ar/drawing/activity/MainActivity.java | 7 + .../ar/drawing/activity/PreviewActivity.java | 129 ++++++------------ .../ar/drawing/activity/UploadActivity.kt | 30 ++-- .../ar/drawing/activity/WelcomeActivity.java | 21 ++- .../com/picture/ar/drawing/utils/App.java | 33 ++--- build.gradle.kts | 5 +- settings.gradle.kts | 20 ++- 13 files changed, 260 insertions(+), 138 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_19-release.aar diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 0e4d01f..c43934d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -4,8 +4,8 @@ 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()) @@ -16,10 +16,10 @@ android { defaultConfig { //com.picture.ar.drawing applicationId = "com.picture.ar.drawing" - minSdk = 23 + minSdk = 24 targetSdk = 34 - versionCode = 1 - versionName = "1.0" + versionCode = 2 + versionName = "1.1" setProperty( "archivesBaseName", "AR Drawing_V" + versionName + "(${versionCode})_$timestamp" @@ -29,6 +29,7 @@ android { buildTypes { release { + isDebuggable = true isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), @@ -80,4 +81,90 @@ 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_19-release.aar")) + //-----------------------------------------------TopOn(Mintegral、Pangle、UnitAds、Digital Turbine(Fyber)、Chartboost&Helium、Ironsource、Liftoff(Vungle)、Inmobi、Start.io、Bigo) + //TU (Necessary) + api ("com.thinkup.sdk:core-tpn:6.4.90") + api ("com.thinkup.sdk:nativead-tpn:6.4.90") + api ("com.thinkup.sdk:banner-tpn:6.4.90") + api ("com.thinkup.sdk:interstitial-tpn:6.4.90") + api ("com.thinkup.sdk:rewardedvideo-tpn:6.4.90") + api ("com.thinkup.sdk:splash-tpn:6.4.90") + + //Androidx (Necessary) + api ("androidx.appcompat:appcompat:1.6.1") + api ("androidx.browser:browser:1.4.0") + + //StartApp + api ("com.thinkup.sdk:adapter-tpn-startapp:6.4.90") + api ("com.startapp:inapp-sdk:5.0.2") + + //Vungle + api ("com.thinkup.sdk:adapter-tpn-vungle:6.4.90") + api ("com.vungle:vungle-ads:7.5.0") + api ("com.google.android.gms:play-services-basement:18.1.0") + api ("com.google.android.gms:play-services-ads-identifier:18.0.1") + + //UnityAds + api ("com.thinkup.sdk:adapter-tpn-unityads:6.4.90") + api ("com.unity3d.ads:unity-ads:4.14.0") + + //Ironsource + api ("com.thinkup.sdk:adapter-tpn-ironsource:6.4.90") + api ("com.ironsource.sdk:mediationsdk:8.7.0") + api ("com.google.android.gms:play-services-appset:16.0.2") + api ("com.google.android.gms:play-services-ads-identifier:18.0.1") + api ("com.google.android.gms:play-services-basement:18.1.0") + + //Bigo + api ("com.thinkup.sdk:adapter-tpn-bigo:6.4.90") + api ("com.bigossp:bigo-ads:5.3.0") + + //Pangle + api ("com.thinkup.sdk:adapter-tpn-pangle:6.4.90.1") + api ("com.pangle.global:pag-sdk:7.2.0.6") + api ("com.google.android.gms:play-services-ads-identifier:18.2.0") + + //Inmobi + api ("com.thinkup.sdk:adapter-tpn-inmobi:6.4.90") + api ("com.inmobi.monetization:inmobi-ads-kotlin:10.8.2") + + //Mintegral + api ("com.thinkup.sdk:adapter-tpn-mintegral:6.4.90") + api ("com.mbridge.msdk.oversea:mbridge_android_sdk:16.9.71") + api ("androidx.recyclerview:recyclerview:1.1.0") + + //Chartboost + api ("com.thinkup.sdk:adapter-tpn-chartboost:6.4.90") + api ("com.chartboost:chartboost-sdk:9.8.3") + api ("com.chartboost:chartboost-mediation-sdk:4.9.2") + api ("com.chartboost:chartboost-mediation-adapter-chartboost:4.9.8.1.0") + api ("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0") + api ("com.squareup.okhttp3:logging-interceptor:4.10.0") + api ("com.squareup.okhttp3:okhttp:4.10.0") + api ("com.squareup.retrofit2:converter-scalars:2.9.0") + api ("com.squareup.retrofit2:retrofit:2.9.0") + api ("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1") + api ("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1") + + //Fyber + api ("com.thinkup.sdk:adapter-tpn-fyber:6.4.90") + api ("com.fyber:marketplace-sdk:8.3.7") + api ("com.google.android.gms:play-services-ads-identifier:18.0.1") + + //Tramini + api ("com.thinkup.sdk:tramini-plugin-tpn:6.4.90") + + // Debugger UI Tools + api ("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..6173a2b --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,29 @@ +{ + "project_info": { + "project_number": "194081686692", + "project_id": "ar-drawing-76fef", + "storage_bucket": "ar-drawing-76fef.firebasestorage.app" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:194081686692:android:35ec0c900cf3cc13b15231", + "android_client_info": { + "package_name": "com.picture.ar.drawing" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyBWiTfEijKdl_doYnTzMzoWaISsodPFGqk" + } + ], + "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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

>963!>jZ9 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 VSM31D4y^!!;UFv|6l8t4`xWMH`PBdb literal 0 HcmV?d00001 diff --git a/app/src/main/java/com/picture/ar/drawing/activity/AllActivity.java b/app/src/main/java/com/picture/ar/drawing/activity/AllActivity.java index f2332c1..2d127ec 100644 --- a/app/src/main/java/com/picture/ar/drawing/activity/AllActivity.java +++ b/app/src/main/java/com/picture/ar/drawing/activity/AllActivity.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.picture.ar.drawing.databinding.ActivityViewAllBinding; import com.picture.ar.drawing.list.ViewAllList; import com.picture.ar.drawing.utils.App; @@ -30,9 +32,15 @@ public class AllActivity extends AppCompatActivity { ComUtils.setStatusBarTextColor(this, true); dirStr = getIntent().getStringExtra(App.Key_ViewDir); preViewBinding.categoryName.setText(dirStr.substring(dirStr.lastIndexOf("_") + 1)); + AdManager.loadAllAd(); + AdManager.showTopOn(this, new onActionListener() { + @Override + public void onAction() { + } + }); onInitList(); onInitClick(); } @@ -51,7 +59,12 @@ public class AllActivity extends AppCompatActivity { preViewBinding.back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - finish(); + AdManager.showTopOn(AllActivity.this, new onActionListener() { + @Override + public void onAction() { + finish(); + } + }); } }); } diff --git a/app/src/main/java/com/picture/ar/drawing/activity/LikeActivity.kt b/app/src/main/java/com/picture/ar/drawing/activity/LikeActivity.kt index 868a630..b0df97a 100644 --- a/app/src/main/java/com/picture/ar/drawing/activity/LikeActivity.kt +++ b/app/src/main/java/com/picture/ar/drawing/activity/LikeActivity.kt @@ -4,6 +4,8 @@ import android.os.Bundle import android.view.View import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.GridLayoutManager +import com.ad.toponlibrary.AdManager + import com.picture.ar.drawing.data.BeanLocal import com.picture.ar.drawing.data.MyDataBase import com.picture.ar.drawing.databinding.ActivityLikeBinding @@ -23,15 +25,23 @@ class LikeActivity : AppCompatActivity() { binding = ActivityLikeBinding.inflate(layoutInflater) ComUtils.setStatusBarTextColor(this, true) setContentView(binding.root) + AdManager.loadAllAd() onInit() initClick() + AdManager.showTopOn(this@LikeActivity){ + + } } private fun initClick() { binding.back.setOnClickListener { - finish() + AdManager.showTopOn(this@LikeActivity){ + finish() + } + + } } diff --git a/app/src/main/java/com/picture/ar/drawing/activity/MainActivity.java b/app/src/main/java/com/picture/ar/drawing/activity/MainActivity.java index 76796be..791f6e6 100644 --- a/app/src/main/java/com/picture/ar/drawing/activity/MainActivity.java +++ b/app/src/main/java/com/picture/ar/drawing/activity/MainActivity.java @@ -12,6 +12,8 @@ import com.picture.ar.drawing.list.MainList; import com.picture.ar.drawing.listener.ClickListener; import com.picture.ar.drawing.utils.App; import com.picture.ar.drawing.utils.ComUtils; +import com.up.uploadlibrary.Http; +import com.up.uploadlibrary.SaveUtils; public class MainActivity extends AppCompatActivity implements ClickListener,View.OnClickListener { @@ -26,6 +28,11 @@ public class MainActivity extends AppCompatActivity implements ClickListener,Vie onInitRecycler(); binding.rlUpload.setOnClickListener(this); binding.rlLike.setOnClickListener(this); + boolean post = SaveUtils.INSTANCE.isPost(); + if(!post){ + Http.INSTANCE.makeGetRequest(this); + SaveUtils.INSTANCE.setPost(true); + } } diff --git a/app/src/main/java/com/picture/ar/drawing/activity/PreviewActivity.java b/app/src/main/java/com/picture/ar/drawing/activity/PreviewActivity.java index 715ac11..b16ee4c 100644 --- a/app/src/main/java/com/picture/ar/drawing/activity/PreviewActivity.java +++ b/app/src/main/java/com/picture/ar/drawing/activity/PreviewActivity.java @@ -33,6 +33,8 @@ import androidx.camera.view.PreviewView; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; +import com.ad.toponlibrary.AdManager; +import com.ad.toponlibrary.onActionListener; import com.picture.ar.drawing.listener.BitmapListener; import com.picture.ar.drawing.utils.App; import com.picture.ar.drawing.utils.ComUtils; @@ -58,13 +60,13 @@ public class PreviewActivity extends AppCompatActivity implements View.OnTouchLi public static final int MODE_DRAG = 1;//单指操作 public static final int MODE_SCALE = 2;//双指操作 - private Matrix startMatrix = new Matrix(); + private Matrix startMatrix = new Matrix(); private Matrix endMatrix = new Matrix();//变化后的矩阵 private PointF startPointF = new PointF();//初始坐标 private float distance;//初始距离 private float scaleMultiple;//缩放倍数 - private ImageView flashIm, imZoom, imBack,imFavorite; + private ImageView flashIm, imZoom, imBack, imFavorite; // private ImageView imPhoto; private String curBitmapPath; @@ -82,7 +84,7 @@ public class PreviewActivity extends AppCompatActivity implements View.OnTouchLi ComUtils.setStatusBarTextColor(this, false); Intent intent = getIntent(); isMain = intent.getBooleanExtra(App.Key_ISMAIN, false); - + AdManager.loadAllAd(); previewView = findViewById(R.id.preview); imageView = findViewById(R.id.image); @@ -95,7 +97,12 @@ public class PreviewActivity extends AppCompatActivity implements View.OnTouchLi imFavorite = findViewById(R.id.im_favorite); + AdManager.showTopOn(this, new onActionListener() { + @Override + public void onAction() { + } + }); curBitmapPath = getIntent().getStringExtra(App.Key_Camera); boolean b = MyDataBase.queryIsLike(curBitmapPath); @@ -104,27 +111,27 @@ public class PreviewActivity extends AppCompatActivity implements View.OnTouchLi intentActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { if (result.getResultCode() == Activity.RESULT_OK && result.getData() != null) { Uri imageUri = result.getData().getData(); - if(imageUri!= null){ + if (imageUri != null) { String lastPathSegment = imageUri.getLastPathSegment(); int index = lastPathSegment.lastIndexOf("/"); - String name = lastPathSegment.substring(index+1); + String name = lastPathSegment.substring(index + 1); double uriFileSize = ComUtils.getUriFileSize(PreviewActivity.this, imageUri); - Log.d(App.TAG, "------uriFileSize-----" + uriFileSize+"--Mb"); - if(uriFileSize>=5){ + Log.d(App.TAG, "------uriFileSize-----" + uriFileSize + "--Mb"); + if (uriFileSize >= 5) { Toast.makeText(PreviewActivity.this, getString(R.string.import_im_too_big), Toast.LENGTH_SHORT).show(); return; } imageView.setImageURI(imageUri); - new Thread(new Runnable() { - @Override - public void run() { - boolean b = ComUtils.saveToInternalStorage(name, imageUri, PreviewActivity.this); - if(b){ - String importPath = ComUtils.getImportPath(name); - MyDataBase.insertImport(importPath); - } - } - }).start(); + new Thread(new Runnable() { + @Override + public void run() { + boolean b = ComUtils.saveToInternalStorage(name, imageUri, PreviewActivity.this); + if (b) { + String importPath = ComUtils.getImportPath(name); + MyDataBase.insertImport(importPath); + } + } + }).start(); } @@ -133,34 +140,6 @@ public class PreviewActivity extends AppCompatActivity implements View.OnTouchLi }); -// galleryLauncher = registerForActivityResult( -// new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback() { -// @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(); @@ -168,7 +147,6 @@ public class PreviewActivity extends AppCompatActivity implements View.OnTouchLi } - private void onInitIm(float imW, float imH) { Point screen = ComUtils.getScreen(this); float newX = screen.x / 2f - imW / 2; @@ -188,8 +166,6 @@ public class PreviewActivity extends AppCompatActivity implements View.OnTouchLi startPointF.set(event.getX(), event.getY()); - - MODE = MODE_DRAG; break; @@ -233,12 +209,12 @@ public class PreviewActivity extends AppCompatActivity implements View.OnTouchLi @Override public void onClick(View v) { if (v.equals(imBack)) { - - if (isMain) { - finish(); - } else { - finish(); - } + AdManager.showTopOn(this, new onActionListener() { + @Override + public void onAction() { + finish(); + } + }); } else { if (!hasPermission) { @@ -250,23 +226,19 @@ public class PreviewActivity extends AppCompatActivity implements View.OnTouchLi flashIm.setSelected(!selected); camera.getCameraControl().enableTorch(!selected); } -// else if (v.equals(imPhoto)) { -// Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); -// intentActivityResultLauncher.launch(intent); -// } else if (v.equals(imZoom)) { if (seekBar.getVisibility() == View.VISIBLE) { seekBar.setVisibility(View.GONE); } else if (seekBar.getVisibility() == View.GONE) { seekBar.setVisibility(View.VISIBLE); } - }else if(v.equals(imFavorite)){ - boolean selected = imFavorite.isSelected(); - imFavorite.setSelected(!selected); - boolean newSelect = imFavorite.isSelected(); - if(newSelect){ + } else if (v.equals(imFavorite)) { + boolean selected = imFavorite.isSelected(); + imFavorite.setSelected(!selected); + boolean newSelect = imFavorite.isSelected(); + if (newSelect) { MyDataBase.insertOrUpdateLike(curBitmapPath); - }else { + } else { MyDataBase.deleteLike(curBitmapPath); } @@ -309,7 +281,7 @@ public class PreviewActivity extends AppCompatActivity implements View.OnTouchLi } else { permissions = new String[]{android.Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; } - if (!ComUtils.checkPermission(this,permissions)) { + if (!ComUtils.checkPermission(this, permissions)) { hasPermission = false; imageView.setOnTouchListener(null); ActivityCompat.requestPermissions(this, permissions, 0); @@ -335,7 +307,7 @@ public class PreviewActivity extends AppCompatActivity implements View.OnTouchLi preview.setSurfaceProvider(previewView.getSurfaceProvider()); if (curBitmapPath != null) { - ComUtils.loadImageFromAssets(this, curBitmapPath, imageView, new BitmapListener() { + ComUtils.loadImageFromAssets(this, curBitmapPath, imageView, new BitmapListener() { @Override public void onResultBitmap(Bitmap bitmap) { if (bitmap == null) { @@ -352,10 +324,7 @@ public class PreviewActivity extends AppCompatActivity implements View.OnTouchLi onInitIm(width, height); } }); -// imageView.setImageBitmap(bitmap); -// int width = bitmap.getWidth(); -// int height = bitmap.getHeight(); -// onInitIm(width, height); + } } catch (Exception e) { @@ -369,7 +338,7 @@ public class PreviewActivity extends AppCompatActivity implements View.OnTouchLi public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == 0) { - if (ComUtils.checkPermission(PreviewActivity.this,permissions)) { + if (ComUtils.checkPermission(PreviewActivity.this, permissions)) { hasPermission = true; imageView.setOnTouchListener(this); startCamera(); @@ -382,23 +351,7 @@ public class PreviewActivity extends AppCompatActivity implements View.OnTouchLi } -// 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/picture/ar/drawing/activity/UploadActivity.kt b/app/src/main/java/com/picture/ar/drawing/activity/UploadActivity.kt index caa49e5..a7beffb 100644 --- a/app/src/main/java/com/picture/ar/drawing/activity/UploadActivity.kt +++ b/app/src/main/java/com/picture/ar/drawing/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.picture.ar.drawing.R import com.picture.ar.drawing.data.BeanUpload import com.picture.ar.drawing.data.MyDataBase @@ -52,9 +53,12 @@ class UploadActivity : AppCompatActivity() { binding = ActivityUploadBinding.inflate(layoutInflater) ComUtils.setStatusBarTextColor(this, true) setContentView(binding.root) + AdManager.loadAllAd() onInit() initClick() + AdManager.showTopOn(this@UploadActivity){} + } @@ -63,18 +67,24 @@ class UploadActivity : AppCompatActivity() { finish() } binding.addImg.setOnClickListener { - dialog = dialog ?: DialogFragmentSelect(object : - SelectListener { - override fun onClickCamera() { - openCameraWithPermission() - } - override fun onClickGallery() { - openGalleryWithPermission() - } + AdManager.showTopOn(this@UploadActivity){ + dialog = dialog ?: DialogFragmentSelect(object : + SelectListener { + override fun onClickCamera() { + openCameraWithPermission() + } + + override fun onClickGallery() { + openGalleryWithPermission() + } + + }) + dialog!!.show(supportFragmentManager, "") + + + } - }) - dialog!!.show(supportFragmentManager, "") } } diff --git a/app/src/main/java/com/picture/ar/drawing/activity/WelcomeActivity.java b/app/src/main/java/com/picture/ar/drawing/activity/WelcomeActivity.java index 0304e94..73c5aa7 100644 --- a/app/src/main/java/com/picture/ar/drawing/activity/WelcomeActivity.java +++ b/app/src/main/java/com/picture/ar/drawing/activity/WelcomeActivity.java @@ -6,13 +6,18 @@ import android.os.CountDownTimer; import androidx.appcompat.app.AppCompatActivity; +import com.ad.toponlibrary.AdManager; import com.picture.ar.drawing.databinding.ActivityWelcomeBinding; import com.picture.ar.drawing.utils.ComUtils; +import kotlin.Unit; +import kotlin.jvm.functions.Function0; +import kotlin.jvm.functions.Function1; + public class WelcomeActivity extends AppCompatActivity { private ActivityWelcomeBinding binding; - private long time = 2000; + private long time = 12000; private CountDownTimer countDownTimer; @@ -24,19 +29,21 @@ public class WelcomeActivity extends AppCompatActivity { ComUtils.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/picture/ar/drawing/utils/App.java b/app/src/main/java/com/picture/ar/drawing/utils/App.java index 2841cba..0827035 100644 --- a/app/src/main/java/com/picture/ar/drawing/utils/App.java +++ b/app/src/main/java/com/picture/ar/drawing/utils/App.java @@ -1,10 +1,13 @@ package com.picture.ar.drawing.utils; +import android.adservices.adid.AdIdManager; import android.app.Application; import android.content.res.AssetManager; import android.graphics.Typeface; +import com.ad.toponlibrary.AdManager; import com.picture.ar.drawing.data.MyDataBase; +import com.up.uploadlibrary.SaveUtils; import java.util.Arrays; import java.util.Collections; @@ -45,9 +48,7 @@ public class App extends Application { "local_Space" }; -// private String APPId ="h67505d35951dc"; -// -// private String AppKey ="a81d17e5cc10cd96a65fe75c0ffd15334"; + public static Typeface defaultFont; private static List classNameList; @@ -60,29 +61,15 @@ public class App extends Application { defaultFont = Typeface.createFromAsset(assets, "myfont.ttf"); classNameList = Arrays.asList(CLASS_NAMES); MyDataBase.init(this); + AdManager.INSTANCE.init(TAG,app,"h685cdf7a32d35","ac45685ea25ae4600789c6b9abde8cb77", + "d0a434af69020f58cd1c246da4adb0630eb18a02", + "n685cdfc936372", + "n685cdfbabc1f0", + "n685cdfa5973c5",false); + SaveUtils.INSTANCE.init(this); } -// private void initSDk(){ -// ATSDK.checkIsEuTraffic(this, new NetTrafficeCallback() { -// -// @Override -// public void onResultCallback(boolean isEU) { -// if (isEU && ATSDK.getGDPRDataLevel(MyApplication.this) == ATSDK.UNKNOWN) { -// ATSDK.showGdprAuth(MyApplication.this); -// } -// -// } -// -// @Override -// public void onErrorCallback(String errorMsg) { -// -// } -// }); -// ATSDK.init( this, APPId, AppKey); -// ; -// } - public static List getAllDir() { Collections.shuffle(classNameList); return classNameList; diff --git a/build.gradle.kts b/build.gradle.kts index 526e9a9..9eb201b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,8 +2,9 @@ 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.android.library") version "8.1.0" 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 7912b78..8f39299 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -12,7 +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") } @@ -20,4 +38,4 @@ dependencyResolutionManagement { rootProject.name = "AR Drawing" include(":app") - \ No newline at end of file +//include(":TopOnLibrary")