This commit is contained in:
litingting 2025-07-02 11:32:04 +08:00
parent 9f365fcded
commit a481d530f8
13 changed files with 251 additions and 92 deletions

View File

@ -4,22 +4,22 @@ import java.text.SimpleDateFormat
plugins { plugins {
id("com.android.application") id("com.android.application")
id("org.jetbrains.kotlin.android") id("org.jetbrains.kotlin.android")
// id("com.google.firebase.crashlytics") id("com.google.firebase.crashlytics")
// id("com.google.gms.google-services") id("com.google.gms.google-services")
id("io.objectbox") id("io.objectbox")
} }
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
android { android {
namespace = "com.sketch.art.trace" namespace = "com.sketch.art.trace"
compileSdk = 34 compileSdk = 36
defaultConfig { defaultConfig {
//com.sketch.art.trace //com.sketch.art.trace
applicationId = "com.sketch.art.trace" applicationId = "com.sketch.art.trace"
minSdk = 23 minSdk = 24
targetSdk = 34 targetSdk = 36
versionCode = 1 versionCode = 2
versionName = "1.0" versionName = "1.1"
setProperty( setProperty(
"archivesBaseName", "archivesBaseName",
"Sketch Art Trace_V" + versionName + "(${versionCode})_$timestamp" "Sketch Art Trace_V" + versionName + "(${versionCode})_$timestamp"
@ -80,4 +80,91 @@ dependencies {
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2")
implementation ("com.caverock:androidsvg:1.4") 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
} }

29
app/google-services.json Normal file
View File

@ -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"
}

Binary file not shown.

Binary file not shown.

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature <uses-feature
android:name="android.hardware.camera" android:name="android.hardware.camera"
android:required="false" /> android:required="false" />
@ -29,6 +29,18 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.PaintingHelper" android:theme="@style/Theme.PaintingHelper"
tools:targetApi="31"> tools:targetApi="31">
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
<!--start.io-->
<meta-data
android:name="com.startapp.sdk.SPLASH_ENABLED"
android:value="false" />
<!--start.io-->
<meta-data
android:name="com.startapp.sdk.RETURN_ADS_ENABLED"
android:value="false" />
<activity <activity
android:name="com.sketch.art.trace.activity.AddLikeActivity" android:name="com.sketch.art.trace.activity.AddLikeActivity"
android:screenOrientation="portrait" android:screenOrientation="portrait"

View File

@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.View import android.view.View
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import com.ad.toponlibrary.AdManager
import com.sketch.art.trace.adapter.AdapterLike import com.sketch.art.trace.adapter.AdapterLike
import com.sketch.art.trace.databinding.ActivityLikeLayoutBinding import com.sketch.art.trace.databinding.ActivityLikeLayoutBinding
import com.sketch.art.trace.listener.OnLikeUpdateListener import com.sketch.art.trace.listener.OnLikeUpdateListener
@ -25,17 +26,23 @@ class AddLikeActivity : AppCompatActivity() {
setContentView(binding.root) setContentView(binding.root)
onInit() onInit()
initClick() initClick()
AdManager.loadAllAd()
AdManager.showTopOn(this){}
} }
private fun initClick() { private fun initClick() {
binding.back.setOnClickListener { binding.back.setOnClickListener {
AdManager.showTopOn(this){
finish() finish()
} }
} }
}
private fun onInit() { private fun onInit() {
val datumLocals = MyDataBase.queryAllLike() val datumLocals = MyDataBase.queryAllLike()
val listFavorite = val listFavorite =

View File

@ -33,6 +33,8 @@ import androidx.camera.view.PreviewView;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import com.ad.toponlibrary.AdManager;
import com.ad.toponlibrary.onActionListener;
import com.sketch.art.trace.listener.OnResultListener; import com.sketch.art.trace.listener.OnResultListener;
import com.sketch.art.trace.tools.App; import com.sketch.art.trace.tools.App;
import com.sketch.art.trace.tools.ComManager; import com.sketch.art.trace.tools.ComManager;
@ -83,7 +85,7 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis
Intent intent = getIntent(); Intent intent = getIntent();
isMain = intent.getBooleanExtra(App.Key_ISMAIN, false); isMain = intent.getBooleanExtra(App.Key_ISMAIN, false);
AdManager.loadAllAd();
previewView = findViewById(R.id.preview); previewView = findViewById(R.id.preview);
imageView = findViewById(R.id.image); imageView = findViewById(R.id.image);
imBack = findViewById(R.id.back); imBack = findViewById(R.id.back);
@ -94,7 +96,12 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis
imZoom = findViewById(R.id.im_zoom); imZoom = findViewById(R.id.im_zoom);
imFavorite = findViewById(R.id.im_favorite); imFavorite = findViewById(R.id.im_favorite);
AdManager.showTopOn(this, new onActionListener() {
@Override
public void onAction() {
}
});
curBitmapPath = getIntent().getStringExtra(App.Key_Camera); curBitmapPath = getIntent().getStringExtra(App.Key_Camera);
@ -133,34 +140,7 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis
}); });
// galleryLauncher = registerForActivityResult(
// new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
// @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<Map<String, Boolean>>() {
// @Override
// public void onActivityResult(Map<String, Boolean> o) {
// boolean isGranted = true;
// for (Map.Entry<String, Boolean> stringBooleanEntry : o.entrySet()) {
// if (!stringBooleanEntry.getValue()) {
// isGranted = false;
// }
// }
// if (isGranted) {
// takeGallery();
// } else {
// Toast.makeText(UIDetail.this, " Permission denied", Toast.LENGTH_SHORT).show();
// }
//
// }
// });
init(); init();
@ -234,11 +214,12 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis
public void onClick(View v) { public void onClick(View v) {
if (v.equals(imBack)) { if (v.equals(imBack)) {
if (isMain) { AdManager.showTopOn(CameraActivity.this, new onActionListener() {
finish(); @Override
} else { public void onAction() {
finish(); finish();
} }
});
} else { } else {
if (!hasPermission) { if (!hasPermission) {
@ -261,6 +242,9 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis
seekBar.setVisibility(View.VISIBLE); seekBar.setVisibility(View.VISIBLE);
} }
}else if(v.equals(imFavorite)){ }else if(v.equals(imFavorite)){
AdManager.showTopOn(CameraActivity.this, new onActionListener() {
@Override
public void onAction() {
boolean selected = imFavorite.isSelected(); boolean selected = imFavorite.isSelected();
imFavorite.setSelected(!selected); imFavorite.setSelected(!selected);
boolean newSelect = imFavorite.isSelected(); boolean newSelect = imFavorite.isSelected();
@ -271,6 +255,9 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis
} }
} }
});
}
} }
} }
@ -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() { private void showNoPermission() {

View File

@ -6,6 +6,8 @@ import android.view.View;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager; 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.adapter.AdapterAll;
import com.sketch.art.trace.databinding.ActivityViewAllLayoutBinding; import com.sketch.art.trace.databinding.ActivityViewAllLayoutBinding;
import com.sketch.art.trace.tools.App; import com.sketch.art.trace.tools.App;
@ -24,14 +26,19 @@ public class CategoryAllActivity extends AppCompatActivity {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
AdManager.loadAllAd();
preViewBinding = ActivityViewAllLayoutBinding.inflate(getLayoutInflater()); preViewBinding = ActivityViewAllLayoutBinding.inflate(getLayoutInflater());
setContentView(preViewBinding.getRoot()); setContentView(preViewBinding.getRoot());
ComManager.setStatusBarTextColor(this, true); ComManager.setStatusBarTextColor(this, true);
dirStr = getIntent().getStringExtra(App.Key_ViewDir); dirStr = getIntent().getStringExtra(App.Key_ViewDir);
preViewBinding.categoryName.setText(dirStr.substring(dirStr.lastIndexOf("_") + 1)); preViewBinding.categoryName.setText(dirStr.substring(dirStr.lastIndexOf("_") + 1));
AdManager.showTopOn(this, new onActionListener() {
@Override
public void onAction() {
}
});
onInitList(); onInitList();
onInitClick(); onInitClick();
@ -51,8 +58,13 @@ public class CategoryAllActivity extends AppCompatActivity {
preViewBinding.back.setOnClickListener(new View.OnClickListener() { preViewBinding.back.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
AdManager.showTopOn(CategoryAllActivity.this, new onActionListener() {
@Override
public void onAction() {
finish(); finish();
} }
}); });
} }
});
}
} }

View File

@ -6,13 +6,18 @@ import android.os.CountDownTimer;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import com.ad.toponlibrary.AdManager;
import com.sketch.art.trace.databinding.ActivitySplashLayoutBinding; import com.sketch.art.trace.databinding.ActivitySplashLayoutBinding;
import com.sketch.art.trace.tools.ComManager; 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 { public class SplashActivity extends AppCompatActivity {
private ActivitySplashLayoutBinding binding; private ActivitySplashLayoutBinding binding;
private long time = 2000; private long time = 12000;
private CountDownTimer countDownTimer; private CountDownTimer countDownTimer;
@ -23,20 +28,21 @@ public class SplashActivity extends AppCompatActivity {
setContentView(binding.getRoot()); setContentView(binding.getRoot());
ComManager.setStatusBarTextColor(this, true); ComManager.setStatusBarTextColor(this, true);
countDownTimer = AdManager.showWelcomeAd(this, time, new Function1<Long, Unit>() {
countDownTimer= new CountDownTimer(time,100) {
@Override @Override
public void onTick(long millisUntilFinished) { public Unit invoke(Long aLong) {
int progressPercentage = (int) ((100 * millisUntilFinished) / time); int progressPercentage = (int) ((100 * aLong) / time);
int Percentage = 100 - progressPercentage; int Percentage = 100 - progressPercentage;
binding.loadingPb.setProgress(Percentage); binding.loadingPb.setProgress(Percentage);
return null;
} }
}, new Function0<Unit>() {
@Override @Override
public void onFinish() { public Unit invoke() {
enterMain(); enterMain();
return null;
} }
}; });
countDownTimer.start(); countDownTimer.start();
} }
private void enterMain() { private void enterMain() {

View File

@ -17,6 +17,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider import androidx.core.content.FileProvider
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import com.ad.toponlibrary.AdManager
import com.sketch.art.trace.R import com.sketch.art.trace.R
import com.sketch.art.trace.adapter.AdapterUpload import com.sketch.art.trace.adapter.AdapterUpload
import com.sketch.art.trace.databinding.ActivityUploadLayoutBinding import com.sketch.art.trace.databinding.ActivityUploadLayoutBinding
@ -54,7 +55,8 @@ class UploadActivity : AppCompatActivity() {
setContentView(binding.root) setContentView(binding.root)
onInit() onInit()
initClick() initClick()
AdManager.loadAllAd()
AdManager.showTopOn(this){}
} }
@ -63,6 +65,9 @@ class UploadActivity : AppCompatActivity() {
finish() finish()
} }
binding.addImg.setOnClickListener { binding.addImg.setOnClickListener {
AdManager.showTopOn(this){
dialog = dialog ?: DialogSelect(object : dialog = dialog ?: DialogSelect(object :
OnDialogClickListener { OnDialogClickListener {
override fun onClickCamera() { override fun onClickCamera() {
@ -75,6 +80,9 @@ class UploadActivity : AppCompatActivity() {
}) })
dialog!!.show(supportFragmentManager, "") dialog!!.show(supportFragmentManager, "")
}
} }
} }

View File

@ -4,7 +4,10 @@ import android.app.Application;
import android.content.res.AssetManager; import android.content.res.AssetManager;
import android.graphics.Typeface; import android.graphics.Typeface;
import com.ad.toponlibrary.AdManager;
import com.sketch.art.trace.mydata.MyDataBase; import com.sketch.art.trace.mydata.MyDataBase;
import com.up.uploadlibrary.SaveUtils;
import com.up.uploadlibrary.UpLoadManager;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
@ -56,6 +59,13 @@ public class App extends Application {
defaultFont = Typeface.createFromAsset(assets, "myfont.ttf"); defaultFont = Typeface.createFromAsset(assets, "myfont.ttf");
classNameList = Arrays.asList(CLASS_NAMES); classNameList = Arrays.asList(CLASS_NAMES);
MyDataBase.init(this); MyDataBase.init(this);
AdManager.INSTANCE.init(TAG,app,"h6863ab3c02e55","addf54d133b312f627700a82e99f1c335",
"fe06c76b794f95216f98e5982ae8f335fc558956",
"n6863aba0ba9d3",
"n6863ab79df088",
"n6863ab6838cca",false);
UpLoadManager.INSTANCE.init(this,TAG);
} }
public static List<String> getAllDir() { public static List<String> getAllDir() {

View File

@ -2,8 +2,8 @@
plugins { plugins {
id("com.android.application") version "8.1.0" apply false id("com.android.application") version "8.1.0" apply false
id("org.jetbrains.kotlin.android") version "1.8.20" 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.gms.google-services") version "4.3.15" apply false
// id ("com.google.firebase.crashlytics") version "2.9.2" apply false id ("com.google.firebase.crashlytics") version "2.9.2" apply false
} }
buildscript{ buildscript{
dependencies{ dependencies{

View File

@ -12,7 +12,24 @@ dependencyResolutionManagement {
repositories { repositories {
google() google()
mavenCentral() 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")
} }