diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 99cc7e1..8b95fa6 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -4,7 +4,16 @@ plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id ("kotlin-kapt") + id("com.google.gms.google-services") + id("com.google.firebase.crashlytics") + id("applovin-quality-service") } + +applovin { + apiKey = + "Dl27vTcbmSn21PBrDMXpSqmsfG9shMGyquWAiaWdAbSq3wFKDu3lz_TXSAt_JsOVCRChddpPl2dZrymN3OooUM" +} + val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) android { namespace = "com.tool.minimalistwallpaper" @@ -14,8 +23,8 @@ android { applicationId = "com.tool.minimalistwallpaper" minSdk = 23 targetSdk = 34 - versionCode = 2 - versionName = "1.0.1" + versionCode = 3 + versionName = "1.0.2" setProperty("archivesBaseName", "minimalistwallpaper_v" + versionName + "(${versionCode})_$timestamp") testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -62,4 +71,15 @@ dependencies { implementation ("io.github.youth5201314:banner:2.2.3") implementation ("com.guolindev.permissionx:permissionx:1.7.1") + + + implementation(platform("com.google.firebase:firebase-bom:33.1.1")) + implementation("com.google.firebase:firebase-crashlytics") + implementation("com.google.firebase:firebase-analytics") + + implementation("com.applovin:applovin-sdk:+") + implementation("com.applovin.mediation:vungle-adapter:+") + implementation("com.applovin.mediation:mintegral-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..81428c2 --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,29 @@ +{ + "project_info": { + "project_number": "997989376042", + "project_id": "minimalist-wallpaper---hd-4k", + "storage_bucket": "minimalist-wallpaper---hd-4k.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:997989376042:android:db641b5edc2fab4b9fe353", + "android_client_info": { + "package_name": "com.tool.minimalistwallpaper" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyAt85EFrCwMqX5X_JZ843PnnmcF-4tJj6c" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/minimalistwallpaper.jks b/app/minimalistwallpaper.jks new file mode 100644 index 0000000..4656fac Binary files /dev/null and b/app/minimalistwallpaper.jks differ diff --git a/app/minimalistwallpapertest.jks b/app/minimalistwallpapertest.jks new file mode 100644 index 0000000..f5e7fd8 Binary files /dev/null and b/app/minimalistwallpapertest.jks differ diff --git a/app/src/main/java/com/tool/minimalistwallpaper/MinimalistWPSkin.java b/app/src/main/java/com/tool/minimalistwallpaper/MinimalistWPSkin.java index cca3d3c..8434abd 100644 --- a/app/src/main/java/com/tool/minimalistwallpaper/MinimalistWPSkin.java +++ b/app/src/main/java/com/tool/minimalistwallpaper/MinimalistWPSkin.java @@ -2,9 +2,17 @@ package com.tool.minimalistwallpaper; import android.app.Application; import android.content.Context; +import android.content.Intent; import android.content.SharedPreferences; +import android.util.Log; +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.tool.minimalistwallpaper.data.Mydata; import com.tool.minimalistwallpaper.data.MydataBase; import com.tool.minimalistwallpaper.data.Otherdata; @@ -24,10 +32,17 @@ public class MinimalistWPSkin extends Application { private static boolean isinsert; private static final String PREFS_NAME = "MyPrefs"; private static final String KEY_IS_INSERTED = "isinserted"; + public static final String AD_BROADCAST = "on_success_action"; + private static final String MAX_SDK = "NprBImK6BeQcxVNp44x4_ikQeJmyfGD8OEHbpNDUu7_WudCrCm_TIKr807Zzd8rfb6TG5NITCTxbZHZT9PbAGa"; + public static Boolean initSDK = false; @Override public void onCreate() { super.onCreate(); + app =this; + + initSDk(); + context = getApplicationContext(); List myData = Mytools.parseJsonToList("wallpaper.json"); @@ -47,6 +62,25 @@ public class MinimalistWPSkin extends Application { }); } } + + + private void initSDk() { + + AppLovinSdkInitializationConfiguration initConfig = AppLovinSdkInitializationConfiguration.builder(MAX_SDK, this) + .setMediationProvider(AppLovinMediationProvider.MAX) + .build(); + AppLovinSdk.getInstance(this).initialize(initConfig, new AppLovinSdk.SdkInitializationListener() { + @Override + public void onSdkInitialized(final AppLovinSdkConfiguration sdkConfig) { + initSDK = true; + Log.e("zzj", "------------initSDk--------success"); + LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent(AD_BROADCAST)); + } + }); + AppLovinSdk.getInstance(this).getSettings().setVerboseLogging(true); + } + + public static Context getAppContext() { return context; } diff --git a/app/src/main/java/com/tool/minimalistwallpaper/activity/AllActivity.java b/app/src/main/java/com/tool/minimalistwallpaper/activity/AllActivity.java index 041f7b5..dbc2e57 100644 --- a/app/src/main/java/com/tool/minimalistwallpaper/activity/AllActivity.java +++ b/app/src/main/java/com/tool/minimalistwallpaper/activity/AllActivity.java @@ -13,11 +13,14 @@ import android.os.Bundle; import android.util.Log; import android.view.View; +import com.applovin.mediation.MaxAd; +import com.applovin.mediation.ads.MaxInterstitialAd; import com.tool.minimalistwallpaper.R; import com.tool.minimalistwallpaper.adapter.MainRvAdapter; import com.tool.minimalistwallpaper.data.MydataBase; import com.tool.minimalistwallpaper.data.Otherdata; import com.tool.minimalistwallpaper.databinding.ActivityAllBinding; +import com.tool.minimalistwallpaper.tools.Adcallback; import com.tool.minimalistwallpaper.tools.Mytools; import com.tool.minimalistwallpaper.tools.SpaceItem; import com.tool.minimalistwallpaper.tools.StaticValue; @@ -31,6 +34,8 @@ public class AllActivity extends AppCompatActivity { private MainRvAdapter mainRvListAdapter; private String name; private SpaceItem spaceItem = new SpaceItem(12, 12, 12); + private static List adsList; + @SuppressLint("MissingInflatedId") @Override protected void onCreate(Bundle savedInstanceState) { @@ -45,6 +50,7 @@ public class AllActivity extends AppCompatActivity { return insets; }); + adsList = Mytools.getAllAd(); Intent intent = getIntent(); name = intent.getStringExtra(StaticValue.KEY_name); @@ -54,22 +60,43 @@ public class AllActivity extends AppCompatActivity { binding.allBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - finish(); + showAd(); } }); } + + private void showAd() { + MaxInterstitialAd cachedAd = Mytools.onCache(adsList); + if (cachedAd == null) { + finish(); + } else { + Mytools.setCallBcak(cachedAd, new Adcallback() { + @Override + public void onShowFail(MaxAd ad) { + finish(); + } + + @Override + public void onAdHidden() { + finish(); + } + }); + cachedAd.showAd(this); + } + } + private void initData() { Mytools.runIO(new Runnable() { @Override public void run() { List existingData = MydataBase.getInstance().myDAO().getallwp(name); - if (!existingData.isEmpty()){ - otherdata = existingData; + if (!existingData.isEmpty()) { + otherdata = existingData; runOnUiThread(new Runnable() { @Override public void run() { - mainRvListAdapter = new MainRvAdapter(AllActivity.this,otherdata); + mainRvListAdapter = new MainRvAdapter(AllActivity.this, otherdata); binding.allRv.setLayoutManager(new GridLayoutManager(AllActivity.this, 2)); binding.allRv.setAdapter(mainRvListAdapter); } @@ -83,10 +110,15 @@ public class AllActivity extends AppCompatActivity { @Override protected void onResume() { super.onResume(); -// Log.e("zzj", " allactivity onResume " + PreViewActivity.KEY_Change); - if (PreViewActivity.KEY_Change){ + if (PreViewActivity.KEY_Change) { initData(); PreViewActivity.KEY_Change = false; } } + + @Override + public void onBackPressed() { + super.onBackPressed(); + showAd(); + } } \ No newline at end of file diff --git a/app/src/main/java/com/tool/minimalistwallpaper/activity/PreViewActivity.java b/app/src/main/java/com/tool/minimalistwallpaper/activity/PreViewActivity.java index d2c8100..5dfac3b 100644 --- a/app/src/main/java/com/tool/minimalistwallpaper/activity/PreViewActivity.java +++ b/app/src/main/java/com/tool/minimalistwallpaper/activity/PreViewActivity.java @@ -34,6 +34,8 @@ import android.view.View; import android.widget.ProgressBar; import android.widget.Toast; +import com.applovin.mediation.MaxAd; +import com.applovin.mediation.ads.MaxInterstitialAd; import com.bumptech.glide.Glide; import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.transition.Transition; @@ -42,6 +44,7 @@ import com.tool.minimalistwallpaper.R; import com.tool.minimalistwallpaper.data.MydataBase; import com.tool.minimalistwallpaper.data.Otherdata; import com.tool.minimalistwallpaper.databinding.ActivityPreViewBinding; +import com.tool.minimalistwallpaper.tools.Adcallback; import com.tool.minimalistwallpaper.tools.Mytools; import com.tool.minimalistwallpaper.tools.StaticValue; import com.tool.minimalistwallpaper.tools.Utils; @@ -70,7 +73,7 @@ public class PreViewActivity extends AppCompatActivity { private GestureDetector gestureDetector; public static boolean KEY_Change = false; private Otherdata checkdata = new Otherdata(); - + private static List adsList; @SuppressLint("MissingInflatedId") @Override @@ -86,6 +89,8 @@ public class PreViewActivity extends AppCompatActivity { return insets; }); + adsList = Mytools.getAllAd(); + initData(); initEvent(); @@ -142,7 +147,8 @@ public class PreViewActivity extends AppCompatActivity { binding.pgSetwallpaper.setVisibility(View.GONE); Toast.makeText(PreViewActivity.this, getString(R.string.permission_tips), Toast.LENGTH_SHORT).show(); } else { - setWp(setmap); + + showAd(); } }); } @@ -439,6 +445,27 @@ public class PreViewActivity extends AppCompatActivity { // unregisterReceiver(wallpaperChangedReceiver); } + private void showAd() { + MaxInterstitialAd cachedAd = Mytools.onCache(adsList); + + if (cachedAd == null) { + setWp(setmap); + } else { + Mytools.setCallBcak(cachedAd, new Adcallback() { + @Override + public void onShowFail(MaxAd ad) { + setWp(setmap); + } + + @Override + public void onAdHidden() { + setWp(setmap); + } + }); + cachedAd.showAd(this); + } + } + @Override protected void onStop() { diff --git a/app/src/main/java/com/tool/minimalistwallpaper/activity/SplashActivity.java b/app/src/main/java/com/tool/minimalistwallpaper/activity/SplashActivity.java index 0e88347..e9820c4 100644 --- a/app/src/main/java/com/tool/minimalistwallpaper/activity/SplashActivity.java +++ b/app/src/main/java/com/tool/minimalistwallpaper/activity/SplashActivity.java @@ -5,18 +5,32 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; import android.annotation.SuppressLint; +import android.content.BroadcastReceiver; +import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.os.Bundle; import android.os.CountDownTimer; import android.os.Handler; +import android.util.Log; +import com.applovin.mediation.MaxAd; +import com.applovin.mediation.ads.MaxInterstitialAd; +import com.applovin.sdk.AppLovinSdk; +import com.tool.minimalistwallpaper.MinimalistWPSkin; import com.tool.minimalistwallpaper.R; +import com.tool.minimalistwallpaper.tools.Adcallback; +import com.tool.minimalistwallpaper.tools.Mytools; + +import java.util.List; public class SplashActivity extends AppCompatActivity { private CountDownTimer countDownTimer; - + private static List adsList; + public static boolean isAlreadyShow = false; @SuppressLint("MissingInflatedId") @Override protected void onCreate(Bundle savedInstanceState) { @@ -30,28 +44,71 @@ public class SplashActivity extends AppCompatActivity { return insets; }); - countDownTimer = new CountDownTimer(1000, 100) { + countDownTimer = new CountDownTimer(11000, 100) { @Override public void onTick(long millisUntilFinished) { - - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - - - } - },2000); - + if (!isAlreadyShow) { + showAdOrStartView(false); + } } @Override public void onFinish() { - satrView(); + if (!isAlreadyShow) { + showAdOrStartView(true); + } } }; - countDownTimer.start(); + registerBroadcastReceiver(); + } + private void showAdOrStartView(boolean go) { + MaxInterstitialAd cachedAd = Mytools.onCache(adsList); + if (cachedAd == null) { + isAlreadyShow = false; + if (go) { + satrView(); + } + } else { + isAlreadyShow = true; + Mytools.setCallBcak(cachedAd, new Adcallback() { + @Override + public void onShowFail(MaxAd ad) { + isAlreadyShow = false; + + } + + @Override + public void onAdHidden() { + isAlreadyShow = true; + satrView(); + } + }); + cachedAd.showAd(); + } } + private void registerBroadcastReceiver() { + if (!MinimalistWPSkin.initSDK) { + BroadcastReceiver receiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { +// AppLovinSdk.getInstance( SplashActivity.this ).showMediationDebugger(); + Log.e("zzj", "------------loadAndStartAd--------success"); + loadAndStartAd(); + } + }; + + LocalBroadcastManager.getInstance(this).registerReceiver(receiver, new IntentFilter(MinimalistWPSkin.AD_BROADCAST)); + } else { + Log.e("zzj", "------------loadAndStartAd--------fail"); + loadAndStartAd(); + } + } + + private void loadAndStartAd() { + adsList = Mytools.getAllAd(); + countDownTimer.start(); + } private void satrView() { Intent intent = new Intent(SplashActivity.this, MainActivity.class); startActivity(intent); diff --git a/app/src/main/java/com/tool/minimalistwallpaper/tools/Adcallback.java b/app/src/main/java/com/tool/minimalistwallpaper/tools/Adcallback.java new file mode 100644 index 0000000..4be4049 --- /dev/null +++ b/app/src/main/java/com/tool/minimalistwallpaper/tools/Adcallback.java @@ -0,0 +1,8 @@ +package com.tool.minimalistwallpaper.tools; + +import com.applovin.mediation.MaxAd; + +public interface Adcallback { + void onShowFail(MaxAd ad); + void onAdHidden( ); +} diff --git a/app/src/main/java/com/tool/minimalistwallpaper/tools/Mytools.java b/app/src/main/java/com/tool/minimalistwallpaper/tools/Mytools.java index e262b68..92a3a53 100644 --- a/app/src/main/java/com/tool/minimalistwallpaper/tools/Mytools.java +++ b/app/src/main/java/com/tool/minimalistwallpaper/tools/Mytools.java @@ -1,8 +1,16 @@ package com.tool.minimalistwallpaper.tools; +import android.content.Context; import android.content.res.AssetManager; +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.tool.minimalistwallpaper.MinimalistWPSkin; import com.tool.minimalistwallpaper.data.Mydata; import com.tool.minimalistwallpaper.data.Otherdata; @@ -15,6 +23,7 @@ import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -22,6 +31,79 @@ import java.util.concurrent.Executors; public class Mytools { private static ExecutorService executorService; + + private static ArrayList adArrayList; + private static final String one_AD = "2377d38d18e72a02"; + private static final String two_Ad = "cebc382a642385a6"; + private static final String three_ad = "f4f1f8de8666c541"; + + public static void setCallBcak(MaxInterstitialAd ad, Adcallback adcallback) { + ad.setListener(new MaxAdListener() { + @Override + public void onAdLoaded(@NonNull MaxAd maxAd) { + + } + + @Override + public void onAdDisplayed(@NonNull MaxAd maxAd) { + + } + + @Override + public void onAdHidden(@NonNull MaxAd maxAd) { + adcallback.onAdHidden(); + + } + + @Override + public void onAdClicked(@NonNull MaxAd maxAd) { + + } + + @Override + public void onAdLoadFailed(@NonNull String s, @NonNull MaxError maxError) { + Log.e("zzj","-----------onAdLoadFailed------"+maxError); + } + + @Override + public void onAdDisplayFailed(@NonNull MaxAd maxAd, @NonNull MaxError maxError) { + adcallback.onShowFail(maxAd); + Log.e("zzj","-----------onAdDisplayFailed------"+maxError); + } + }); + } + + public static MaxInterstitialAd onCache(List list) { + Collections.shuffle(list); + for (MaxInterstitialAd ad : list) { + if (ad.isReady()) { + return ad; + } + } + return null; + } + + public static List getAllAd() { + if (adArrayList == null) { + adArrayList = new ArrayList<>(); + adArrayList.add(createAd(one_AD, MinimalistWPSkin.app)); + adArrayList.add(createAd(two_Ad, MinimalistWPSkin.app)); + adArrayList.add(createAd(three_ad, MinimalistWPSkin.app)); + } + for (MaxInterstitialAd ad : adArrayList) { + if (!ad.isReady()) { + ad.loadAd(); + } + } + return adArrayList; + } + + private static MaxInterstitialAd createAd(String adUnitId, Context context) { + MaxInterstitialAd ad = new MaxInterstitialAd(adUnitId, context); + return ad; + } + + public static void runIO(Runnable task) { getExecutorService().execute(task); } diff --git a/build.gradle.kts b/build.gradle.kts index 1bc1d16..b9ea2a2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,4 +2,11 @@ plugins { id("com.android.application") version "8.1.3" apply false id("org.jetbrains.kotlin.android") version "1.9.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{ + classpath("com.applovin.quality:AppLovinQualityServiceGradlePlugin:+") + } } \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index a598fef..9e07445 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -3,6 +3,7 @@ pluginManagement { google() mavenCentral() gradlePluginPortal() + maven { url = uri("https://artifacts.applovin.com/android") } } } dependencyResolutionManagement { @@ -10,6 +11,8 @@ dependencyResolutionManagement { repositories { google() mavenCentral() + maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") } + maven { url = uri("https://artifact.bytedance.com/repository/pangle") } } }