diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 7053ed8..e42de6e 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -4,9 +4,13 @@ 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")
+ id("applovin-quality-service")
+}
+applovin {
+ apiKey = "dEoKIpTvxCdhzapxKLHoPaCvNUnIJ5eMfILsy7J93J_SOBMp5ob1ML0P2VsqoHRAmclao4OAqpwh39eHPT4GFH"
}
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
android {
@@ -15,11 +19,11 @@ android {
defaultConfig {
//com.ar.sketch.paint.drawing
- applicationId = "com.ar.sketch.paint.drawing.test"
+ applicationId = "com.ar.sketch.paint.drawing"
minSdk = 23
targetSdk = 34
- versionCode = 1
- versionName = "1.0.0"
+ versionCode = 2
+ versionName = "1.0.1"
setProperty(
"archivesBaseName",
"AR Sketch_V" + versionName + "(${versionCode})_$timestamp"
@@ -29,7 +33,6 @@ android {
buildTypes {
release {
- isDebuggable = true
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
@@ -76,7 +79,44 @@ dependencies {
implementation ("com.squareup.okhttp3:okhttp:4.12.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
+
+
+ //获取gaid
implementation("com.google.android.gms:play-services-ads-identifier:18.0.1")
implementation("com.google.android.gms:play-services-appset:16.0.1")
+ //开启协程
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2")
+ implementation ("com.squareup.okhttp3:okhttp:4.12.0")
+ implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
+
+
+
+ //--------------------MAX (BIGO Ads、Chartboost、DT Exchangc、Googlc Ad Managcr、Google Bidding and Google AdMob、InMobi、ironSource、Liftoff Monetizc、
+ //Meta Audience Network、Moloco、Panglc、Unity Ads)
+ 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("com.applovin:applovin-sdk:+")
+ implementation("com.applovin.mediation:bigoads-adapter:+")
+ implementation("com.applovin.mediation:chartboost-adapter:+")
+ implementation("com.google.android.gms:play-services-base:16.1.0")
+ implementation("com.applovin.mediation:fyber-adapter:+")
+//Google Ad Manager
+ // implementation("com.applovin.mediation:google-ad-manager-adapter:+")
+
+//Google Bidding and Google AdMob
+ // implementation("com.applovin.mediation:google-adapter:+")
+ implementation("com.applovin.mediation:inmobi-adapter:+")
+ implementation("com.squareup.picasso:picasso:2.71828")
+ implementation("androidx.recyclerview:recyclerview:1.1.0")
+ implementation("com.applovin.mediation:ironsource-adapter:+")
+ implementation("com.applovin.mediation:vungle-adapter:+")
+ implementation("com.applovin.mediation:facebook-adapter:+")
+ implementation("com.applovin.mediation:moloco-adapter:+")
+ implementation("com.applovin.mediation:bytedance-adapter:+")
+ implementation("com.applovin.mediation:unityads-adapter:+")
+
}
\ No newline at end of file
diff --git a/app/google-services.json b/app/google-services.json
new file mode 100644
index 0000000..43f09df
--- /dev/null
+++ b/app/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "863983910100",
+ "project_id": "ar-sketch-93bb3",
+ "storage_bucket": "ar-sketch-93bb3.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:863983910100:android:a17d8e619d2d1c3dc40f41",
+ "android_client_info": {
+ "package_name": "com.ar.sketch.paint.drawing"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyAwWqr1NV8744O6NDUj5-LzLwc8_oRsVJY"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index cf50408..08dbda7 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -20,3 +20,5 @@
# hide the original source file name.
#-renamesourcefileattribute SourceFile
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d8b9894..fdbee49 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -23,10 +23,10 @@
-
+
-
-
-
-
-
-
-
-
+
+
-
-
+
+
() {
@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() {
binding.loadingPb.setProgress(100);
diff --git a/app/src/main/java/com/ar/sketch/paint/drawing/act/UploadActivity.kt b/app/src/main/java/com/ar/sketch/paint/drawing/act/UploadActivity.kt
deleted file mode 100644
index 2ec84af..0000000
--- a/app/src/main/java/com/ar/sketch/paint/drawing/act/UploadActivity.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.ar.sketch.paint.drawing.act
-
-import android.Manifest
-import android.annotation.SuppressLint
-import android.content.pm.PackageManager
-import android.os.Bundle
-import android.util.Log
-import androidx.activity.result.ActivityResultLauncher
-import androidx.activity.result.contract.ActivityResultContracts
-import androidx.appcompat.app.AppCompatActivity
-import androidx.core.content.ContextCompat
-
-import com.ar.sketch.paint.drawing.databinding.ActivityUploadBinding
-import com.ar.sketch.paint.drawing.tool.Http
-import com.ar.sketch.paint.drawing.tool.Upload
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.GlobalScope
-import kotlinx.coroutines.launch
-
-
-class UploadActivity : AppCompatActivity() {
-
-
- private lateinit var requestPermissionLauncher: ActivityResultLauncher>
- private val permissions = arrayOf(
- Manifest.permission.READ_PHONE_STATE,
- Manifest.permission.ACCESS_FINE_LOCATION,
- Manifest.permission.ACCESS_COARSE_LOCATION
- )
- private lateinit var binding: ActivityUploadBinding
-
- @SuppressLint("SuspiciousIndentation")
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = ActivityUploadBinding.inflate(layoutInflater)
- setContentView(binding.root)
-
-// requestPermissionLauncher =
-// registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { result ->
-// val phoneGranted: Boolean = result[Manifest.permission.READ_PHONE_STATE] == true
-// val locationGranted: Boolean =
-// result[Manifest.permission.ACCESS_FINE_LOCATION] == true
-// val coarseLocation: Boolean =
-// result[Manifest.permission.ACCESS_COARSE_LOCATION] == true
-//
-// Log.e("Permission", "1=${phoneGranted} 2= ${locationGranted} 3=$coarseLocation")
-// if (phoneGranted && locationGranted && coarseLocation) {
-// Upload.getData(this)
-// }
-//
-// }
-//
-//
-// if (ContextCompat.checkSelfPermission(
-// this,
-// Manifest.permission.READ_PHONE_STATE
-// ) != PackageManager.PERMISSION_GRANTED
-// || ContextCompat.checkSelfPermission(
-// this,
-// Manifest.permission.ACCESS_FINE_LOCATION
-// ) != PackageManager.PERMISSION_GRANTED
-// ) {
-//
-//// requestPermissionLauncher.launch(permissions)
-// } else {
-// Upload.getData(this)
-// }
- binding.btn.setOnClickListener {
- Http.makeGetRequest(this)
- }
-
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/ar/sketch/paint/drawing/ad/MaxListener.java b/app/src/main/java/com/ar/sketch/paint/drawing/ad/MaxListener.java
new file mode 100644
index 0000000..ae1949e
--- /dev/null
+++ b/app/src/main/java/com/ar/sketch/paint/drawing/ad/MaxListener.java
@@ -0,0 +1,11 @@
+package com.ar.sketch.paint.drawing.ad;
+
+import com.applovin.mediation.MaxAd;
+
+public interface MaxListener {
+ void onFail(MaxAd ad);
+
+ void onShowSuccess(MaxAd ad);
+
+ void onHidden();
+}
diff --git a/app/src/main/java/com/ar/sketch/paint/drawing/ad/MaxManager.java b/app/src/main/java/com/ar/sketch/paint/drawing/ad/MaxManager.java
new file mode 100644
index 0000000..bdeca98
--- /dev/null
+++ b/app/src/main/java/com/ar/sketch/paint/drawing/ad/MaxManager.java
@@ -0,0 +1,174 @@
+package com.ar.sketch.paint.drawing.ad;
+
+import android.app.Activity;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+
+
+import com.applovin.mediation.MaxAd;
+import com.applovin.mediation.MaxAdListener;
+import com.applovin.mediation.MaxError;
+import com.applovin.mediation.ads.MaxInterstitialAd;
+import com.ar.sketch.paint.drawing.tool.MyArApp;
+
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class MaxManager {
+
+ private static final String one_AD = "7c4b34325d69456c";
+ private static final String two_Ad = "f1ada735b400f486";
+ private static final String three_ad = "12f02849b311236f";
+
+
+ public static final int type_no_cache = 0;
+ public static final int type_has_cache = 1;
+ public static final int type_show_success = 2;
+ public static final int type_show_close = 3;
+ public static final int type_show_fail = 4;
+ private static final String Ad_TAG = MyArApp.TAG;
+ private static List adList = new ArrayList<>();
+
+ public static MaxInterstitialAd getAd(List list) {
+ Collections.shuffle(list);
+ for (MaxInterstitialAd ad : list) {
+ if (ad.isReady()) {
+ return ad;
+ }
+ }
+ return null;
+ }
+
+ public static List onLoadAd() {
+ if (adList.isEmpty()) {
+ MaxInterstitialAd AdT = new MaxInterstitialAd(two_Ad, MyArApp.app);
+ MaxInterstitialAd AdOne = new MaxInterstitialAd(one_AD, MyArApp.app);
+ MaxInterstitialAd AdThree = new MaxInterstitialAd(three_ad, MyArApp.app);
+ adList.add(AdOne);
+ adList.add(AdT);
+ adList.add(AdThree);
+ }
+
+ for (MaxInterstitialAd ad : adList) {
+ if (!ad.isReady()) {
+ setMyListener(ad, new MaxListener() {
+ @Override
+ public void onFail(MaxAd ad) {
+
+ }
+
+ @Override
+ public void onShowSuccess(MaxAd ad) {
+
+ }
+
+ @Override
+ public void onHidden() {
+
+ }
+ });
+ ad.loadAd();
+ }
+
+ }
+
+ return adList;
+ }
+
+ public static void setMyListener(MaxInterstitialAd ad, MaxListener maxListener) {
+ ad.setListener(new MaxAdListener() {
+ @Override
+ public void onAdLoaded(@NonNull MaxAd maxAd) {
+ Log.d(Ad_TAG, "-------onAdLoaded-----maxAd=" + maxAd.getAdUnitId());
+ }
+
+ @Override
+ public void onAdDisplayed(@NonNull MaxAd maxAd) {
+ Log.d(Ad_TAG, "-------onAdDisplayed-----maxAd=" + maxAd.getAdUnitId());
+ maxListener.onShowSuccess(maxAd);
+ }
+
+ @Override
+ public void onAdHidden(@NonNull MaxAd maxAd) {
+ Log.d(Ad_TAG, "-------onAdHidden-----maxAd=" + maxAd.getAdUnitId());
+ maxListener.onHidden();
+ setMyListener(ad, new MaxListener() {
+ @Override
+ public void onFail(MaxAd ad) {
+
+ }
+
+ @Override
+ public void onShowSuccess(MaxAd ad) {
+
+ }
+
+ @Override
+ public void onHidden() {
+
+ }
+ });
+ ad.loadAd();
+ }
+
+ @Override
+ public void onAdClicked(@NonNull MaxAd maxAd) {
+
+ }
+
+ @Override
+ public void onAdLoadFailed(@NonNull String s, @NonNull MaxError maxError) {
+ Log.d(Ad_TAG, "-------onAdLoadFailed-----s=" + s+"----maxError="+maxError.getMessage());
+ }
+
+ @Override
+ public void onAdDisplayFailed(@NonNull MaxAd maxAd, @NonNull MaxError maxError) {
+ maxListener.onFail(maxAd);
+ }
+ });
+
+ }
+
+ protected static void ShowAd(Activity activity, onAdStatusListener listener) {
+ MaxInterstitialAd ad = MaxManager.getAd(adList);
+ if (ad == null) {
+ listener.onAdStatus(type_no_cache);
+ } else {
+ listener.onAdStatus(type_has_cache);
+ MaxManager.setMyListener(ad, new MaxListener() {
+ @Override
+ public void onFail(MaxAd ad) {
+ listener.onAdStatus(type_show_fail);
+ }
+
+ @Override
+ public void onShowSuccess(MaxAd ad) {
+ listener.onAdStatus(type_show_success);
+ }
+
+ @Override
+ public void onHidden() {
+ listener.onAdStatus(type_show_close);
+ }
+ });
+ ad.showAd(activity);
+ }
+ }
+
+
+ public static void startShowMaxAd(Activity activity, onAdAfterAction listener) {
+ MaxManager.ShowAd(activity, new onAdStatusListener() {
+ @Override
+ public void onAdStatus(int type) {
+ if (type == MaxManager.type_show_close || type == MaxManager.type_show_fail || type == MaxManager.type_no_cache) {
+ if (listener != null)
+ listener.onAction();
+ }
+ }
+ });
+ }
+
+}
diff --git a/app/src/main/java/com/ar/sketch/paint/drawing/ad/WelComManager.kt b/app/src/main/java/com/ar/sketch/paint/drawing/ad/WelComManager.kt
new file mode 100644
index 0000000..2137e00
--- /dev/null
+++ b/app/src/main/java/com/ar/sketch/paint/drawing/ad/WelComManager.kt
@@ -0,0 +1,77 @@
+package com.ar.sketch.paint.drawing.ad
+
+import android.app.Activity
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
+import android.os.CountDownTimer
+import android.util.Log
+import androidx.localbroadcastmanager.content.LocalBroadcastManager
+
+import com.applovin.mediation.ads.MaxInterstitialAd
+import com.ar.sketch.paint.drawing.tool.MyArApp
+
+
+object WelComManager {
+
+ private lateinit var timer: CountDownTimer
+
+ private var need_Show = true
+
+ private lateinit var lists: List
+ private val Ad_TAG: String = MyArApp.TAG
+ @JvmStatic
+ fun initTimer(activity: Activity, countTime: Long,countAction: (Long) -> Unit, goMainAction: () -> Unit): CountDownTimer {
+ need_Show = true
+ timer = object : CountDownTimer(countTime, 100) {
+ override fun onTick(millisUntilFinished: Long) {
+ countAction.invoke(millisUntilFinished)
+ if (need_Show) {
+ MaxManager.ShowAd(activity) {
+ Log.d(Ad_TAG, "--onTick----------it=$it")
+ if (it == MaxManager.type_has_cache) {
+ need_Show = false
+ }
+ if (it == MaxManager.type_show_close || it == MaxManager.type_show_fail) {
+ Log.d(Ad_TAG, "--onTick---------enter")
+ goMainAction.invoke()
+ }
+ }
+ }
+ }
+
+ override fun onFinish() {
+ if (need_Show) {
+ MaxManager.ShowAd(activity) {
+ if (it == MaxManager.type_show_close || it == MaxManager.type_show_fail || it == MaxManager.type_no_cache) {
+ Log.d(Ad_TAG, "--onFinish---------enter")
+ goMainAction.invoke()
+ }
+ }
+ }
+ }
+ }
+ startAd(activity)
+ return timer
+ }
+
+ private fun startAd(activity: Activity) {
+ if (!MyArApp.initSDkOK) {
+ LocalBroadcastManager.getInstance(activity)
+ .registerReceiver(object : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ lists = MaxManager.onLoadAd()
+ timer.start()
+ Log.d(Ad_TAG, "------------1sucess")
+ }
+ }, IntentFilter(MyArApp.initAction))
+ } else {
+ lists = MaxManager.onLoadAd()
+ timer.start()
+ Log.d(Ad_TAG, "------------2sucess")
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/ar/sketch/paint/drawing/ad/onAdAfterAction.java b/app/src/main/java/com/ar/sketch/paint/drawing/ad/onAdAfterAction.java
new file mode 100644
index 0000000..fc59caf
--- /dev/null
+++ b/app/src/main/java/com/ar/sketch/paint/drawing/ad/onAdAfterAction.java
@@ -0,0 +1,6 @@
+package com.ar.sketch.paint.drawing.ad;
+
+public interface onAdAfterAction {
+
+ void onAction();
+}
diff --git a/app/src/main/java/com/ar/sketch/paint/drawing/ad/onAdStatusListener.java b/app/src/main/java/com/ar/sketch/paint/drawing/ad/onAdStatusListener.java
new file mode 100644
index 0000000..888033f
--- /dev/null
+++ b/app/src/main/java/com/ar/sketch/paint/drawing/ad/onAdStatusListener.java
@@ -0,0 +1,6 @@
+package com.ar.sketch.paint.drawing.ad;
+
+public interface onAdStatusListener {
+
+ void onAdStatus(int type);
+}
diff --git a/app/src/main/java/com/ar/sketch/paint/drawing/frag/PageHome.java b/app/src/main/java/com/ar/sketch/paint/drawing/frag/PageHome.java
index 25bb4a7..f1689b0 100644
--- a/app/src/main/java/com/ar/sketch/paint/drawing/frag/PageHome.java
+++ b/app/src/main/java/com/ar/sketch/paint/drawing/frag/PageHome.java
@@ -11,6 +11,7 @@ import androidx.recyclerview.widget.GridLayoutManager;
import com.ar.sketch.paint.drawing.act.PageList;
import com.ar.sketch.paint.drawing.act.PagePreview;
+import com.ar.sketch.paint.drawing.ad.MaxManager;
import com.ar.sketch.paint.drawing.adapter.ListMain;
import com.ar.sketch.paint.drawing.api.OnClick;
import com.ar.sketch.paint.drawing.databinding.FragmentHomeBinding;
@@ -31,6 +32,11 @@ public class PageHome extends Fragment implements OnClick {
return fragment;
}
+ @Override
+ public void onResume() {
+ super.onResume();
+ MaxManager.onLoadAd();
+ }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
diff --git a/app/src/main/java/com/ar/sketch/paint/drawing/frag/PageImport.java b/app/src/main/java/com/ar/sketch/paint/drawing/frag/PageImport.java
index 24d9be4..e4e1c5b 100644
--- a/app/src/main/java/com/ar/sketch/paint/drawing/frag/PageImport.java
+++ b/app/src/main/java/com/ar/sketch/paint/drawing/frag/PageImport.java
@@ -20,6 +20,8 @@ import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.GridLayoutManager;
import com.ar.sketch.paint.drawing.R;
+import com.ar.sketch.paint.drawing.ad.MaxManager;
+import com.ar.sketch.paint.drawing.ad.onAdAfterAction;
import com.ar.sketch.paint.drawing.adapter.ListImport;
import com.ar.sketch.paint.drawing.databinding.FragmentImportBinding;
import com.ar.sketch.paint.drawing.dbmanager.ImportData;
@@ -71,7 +73,13 @@ public class PageImport extends Fragment {
binding.btnImport.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- checkPermission();
+ MaxManager.startShowMaxAd(requireActivity(), new onAdAfterAction() {
+ @Override
+ public void onAction() {
+ checkPermission();
+ }
+ });
+
}
});
diff --git a/app/src/main/java/com/ar/sketch/paint/drawing/tool/MyArApp.java b/app/src/main/java/com/ar/sketch/paint/drawing/tool/MyArApp.java
index 23bcb9a..62e370c 100644
--- a/app/src/main/java/com/ar/sketch/paint/drawing/tool/MyArApp.java
+++ b/app/src/main/java/com/ar/sketch/paint/drawing/tool/MyArApp.java
@@ -1,9 +1,16 @@
package com.ar.sketch.paint.drawing.tool;
import android.app.Application;
+import android.content.Intent;
import android.content.res.AssetManager;
import android.graphics.Typeface;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
+import com.applovin.sdk.AppLovinMediationProvider;
+import com.applovin.sdk.AppLovinSdk;
+import com.applovin.sdk.AppLovinSdkConfiguration;
+import com.applovin.sdk.AppLovinSdkInitializationConfiguration;
import com.ar.sketch.paint.drawing.dbmanager.MyDataBase;
import java.util.ArrayList;
@@ -20,10 +27,9 @@ public class MyArApp extends Application {
public static MyArApp app;
-// private String APPId ="h67505d35951dc";
-//
-// private String AppKey ="a81d17e5cc10cd96a65fe75c0ffd15334";
-
+ public static boolean initSDkOK = false;
+ public static String initAction = "ACTION_INIT";
+ private String SDK_KEY = "vNzLVnoFhzyl4hLzTNPEaBVQE8_Oz_8JkiuKmiRamrxGHN3WtWEGH7Mx20POJPvaycKl1PumsEVkJXhRAse1wn";
public static Typeface defaultFont;
@Override
@@ -32,30 +38,24 @@ public class MyArApp extends Application {
app = this;
AssetManager assets = getAssets();
defaultFont = Typeface.createFromAsset(assets, "myfont.ttf");
-
+ initMAxSDk();
MyDataBase.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);
-// ;
-// }
+ private void initMAxSDk() {
+
+ AppLovinSdkInitializationConfiguration initConfig = AppLovinSdkInitializationConfiguration.builder(SDK_KEY, this)
+ .setMediationProvider(AppLovinMediationProvider.MAX)
+ .build();
+ AppLovinSdk.getInstance(this).initialize(initConfig, new AppLovinSdk.SdkInitializationListener() {
+ @Override
+ public void onSdkInitialized(AppLovinSdkConfiguration appLovinSdkConfiguration) {
+ initSDkOK = true;
+ LocalBroadcastManager.getInstance(MyArApp.this).sendBroadcast(new Intent(initAction));
+ }
+ });
+ }
public static String Class_Animals = "res_Animals";
public static String Class_birds = "res_Birds";
diff --git a/app/src/main/java/com/ar/sketch/paint/drawing/tool/AESUtils.kt b/app/src/main/java/com/ar/sketch/paint/drawing/upload/AESUtils.kt
similarity index 97%
rename from app/src/main/java/com/ar/sketch/paint/drawing/tool/AESUtils.kt
rename to app/src/main/java/com/ar/sketch/paint/drawing/upload/AESUtils.kt
index 69c2607..e977907 100644
--- a/app/src/main/java/com/ar/sketch/paint/drawing/tool/AESUtils.kt
+++ b/app/src/main/java/com/ar/sketch/paint/drawing/upload/AESUtils.kt
@@ -1,7 +1,7 @@
+package com.ar.sketch.paint.drawing.upload
+
import android.app.Activity
-import android.provider.Contacts.SettingsColumns.KEY
import android.util.Base64
-import com.ar.sketch.paint.drawing.tool.Upload
import java.security.SecureRandom
import javax.crypto.Cipher
import javax.crypto.KeyGenerator
diff --git a/app/src/main/java/com/ar/sketch/paint/drawing/tool/Http.kt b/app/src/main/java/com/ar/sketch/paint/drawing/upload/Http.kt
similarity index 97%
rename from app/src/main/java/com/ar/sketch/paint/drawing/tool/Http.kt
rename to app/src/main/java/com/ar/sketch/paint/drawing/upload/Http.kt
index 83dd0c9..26a3951 100644
--- a/app/src/main/java/com/ar/sketch/paint/drawing/tool/Http.kt
+++ b/app/src/main/java/com/ar/sketch/paint/drawing/upload/Http.kt
@@ -1,6 +1,5 @@
-package com.ar.sketch.paint.drawing.tool
+package com.ar.sketch.paint.drawing.upload
-import AESUtils
import android.app.Activity
import android.util.Log
import kotlinx.coroutines.Dispatchers
@@ -29,8 +28,6 @@ object Http {
val logging = HttpLoggingInterceptor()
logging.setLevel(HttpLoggingInterceptor.Level.BODY)
-
-
GlobalScope.launch(Dispatchers.IO) {
val data = Upload.getData(context)
diff --git a/app/src/main/java/com/ar/sketch/paint/drawing/upload/SaveUtils.kt b/app/src/main/java/com/ar/sketch/paint/drawing/upload/SaveUtils.kt
new file mode 100644
index 0000000..6355336
--- /dev/null
+++ b/app/src/main/java/com/ar/sketch/paint/drawing/upload/SaveUtils.kt
@@ -0,0 +1,47 @@
+package com.ar.sketch.paint.drawing.upload
+
+import android.content.Context
+import android.content.SharedPreferences
+import com.ar.sketch.paint.drawing.tool.MyArApp
+
+
+object SaveUtils {
+
+
+ val IS_POST = "is_post"
+ private var shared: SharedPreferences? = null
+
+ var isPost: Boolean
+ get() = queryBoolean(
+ IS_POST,
+ false
+ )
+ set(value) {
+ saveBoolean(IS_POST, value)
+ }
+
+
+
+ private fun getShared(): SharedPreferences {
+ if (shared == null) {
+ shared = MyArApp.app.getSharedPreferences("", Context.MODE_PRIVATE)
+ }
+ return shared!!
+
+ }
+
+
+ fun saveBoolean(key: String, value: Boolean) {
+ getShared().edit()
+ .putBoolean(key, value).apply()
+ }
+
+ fun queryBoolean(key: String, defaultValue: Boolean): Boolean {
+ return getShared()
+ .getBoolean(key, defaultValue)
+ }
+
+
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/ar/sketch/paint/drawing/tool/Upload.kt b/app/src/main/java/com/ar/sketch/paint/drawing/upload/Upload.kt
similarity index 97%
rename from app/src/main/java/com/ar/sketch/paint/drawing/tool/Upload.kt
rename to app/src/main/java/com/ar/sketch/paint/drawing/upload/Upload.kt
index c07f6d9..4d51db2 100644
--- a/app/src/main/java/com/ar/sketch/paint/drawing/tool/Upload.kt
+++ b/app/src/main/java/com/ar/sketch/paint/drawing/upload/Upload.kt
@@ -1,4 +1,4 @@
-package com.ar.sketch.paint.drawing.tool
+package com.ar.sketch.paint.drawing.upload
import android.annotation.SuppressLint
import android.app.Activity
@@ -17,19 +17,12 @@ import android.text.format.Formatter
import android.util.Log
import android.webkit.WebView
import com.google.android.gms.ads.identifier.AdvertisingIdClient
-import com.google.android.gms.appset.AppSet
-import com.google.android.gms.appset.AppSetIdInfo
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.withContext
import org.json.JSONObject
import java.io.File
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
import java.util.TimeZone
-import androidx.lifecycle.lifecycleScope
-import kotlinx.coroutines.GlobalScope
-import kotlinx.coroutines.launch
object Upload {
diff --git a/build.gradle.kts b/build.gradle.kts
index ac9937f..785cbfe 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -2,12 +2,13 @@
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{
classpath("io.objectbox:objectbox-gradle-plugin:4.0.3")
+ classpath ("com.applovin.quality:AppLovinQualityServiceGradlePlugin:+")
}
-}
\ No newline at end of file
+}
diff --git a/settings.gradle.kts b/settings.gradle.kts
index d2c5777..fc2329e 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -3,7 +3,7 @@ pluginManagement {
google()
mavenCentral()
gradlePluginPortal()
-
+ maven { url = uri("https://artifacts.applovin.com/android") }
}
}
@@ -13,8 +13,9 @@ dependencyResolutionManagement {
google()
mavenCentral()
-
-
+ maven { url = uri("https://cboost.jfrog.io/artifactory/chartboost-ads/") }
+ maven { url = uri("https://android-sdk.is.com") }
+ maven { url = uri("https://artifact.bytedance.com/repository/pangle") }
}
}