diff --git a/app/build.gradle.kts b/app/build.gradle.kts index cc55c63..5260c25 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -7,7 +7,13 @@ plugins { id("com.google.gms.google-services") id("com.google.firebase.crashlytics") id("io.objectbox") + id("applovin-quality-service") } + +applovin{ + apiKey = "hPNBaWB5Xd1nKXGSXqaWC7W3ZKbCBDd9VX1xaGwyF0aIViWEwhSxqOeq4CuUrogatsst7TUIEMh2sApTIabO8G" +} + val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) android { namespace = "com.nature.free.test" @@ -18,8 +24,8 @@ android { applicationId = "com.nature.free.variouswallpaper" minSdk = 23 targetSdk = 34 - versionCode = 4 - versionName = "1.0.3" + versionCode = 5 + versionName = "1.0.4" setProperty( "archivesBaseName", "Various Wallpapers_V" + versionName + "(${versionCode})_$timestamp" @@ -64,4 +70,14 @@ dependencies { implementation("com.google.firebase:firebase-crashlytics") implementation("com.google.firebase:firebase-analytics") + + + //--------------------------MAX(Liftoff Monetize(vungle)、Mintegral、Pangle、Unity Ads) + 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:+") + //--------------------------MAX(Liftoff Monetize(vungle)、Mintegral、Pangle、Unity Ads) + } \ No newline at end of file diff --git a/app/src/main/java/com/nature/free/test/InfoActivity.java b/app/src/main/java/com/nature/free/test/InfoActivity.java index 8c9a468..883cfc6 100644 --- a/app/src/main/java/com/nature/free/test/InfoActivity.java +++ b/app/src/main/java/com/nature/free/test/InfoActivity.java @@ -9,6 +9,8 @@ import com.nature.free.test.base.BaseActivity; import com.nature.free.test.data.ClassData; import com.nature.free.test.data.ClassData_; import com.nature.free.test.databinding.ActivityInfoBinding; +import com.nature.free.test.max.MaxManager; +import com.nature.free.test.max.onAdStatusListener; import com.nature.free.test.objectbox.ObjectBox; import com.nature.free.test.other.MyAdapter; import com.nature.free.test.other.MyItemSpace; @@ -25,7 +27,7 @@ public class InfoActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - + MaxManager.onLoadAd(); init(); mainBinding.back.setOnClickListener(new View.OnClickListener() { @Override @@ -43,11 +45,16 @@ public class InfoActivity extends BaseActivity { } private void showTopOnAd(Boolean isfinish) { - - // TODO: 2024/7/30 showAd - if(isfinish){ - finish(); - } + MaxManager.ShowAd(InfoActivity.this, 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 (isfinish) { + finish(); + } + } + } + }); } @@ -61,7 +68,7 @@ public class InfoActivity extends BaseActivity { ClassData classData = getData(); if (classData != null) { mainBinding.tvName.setText(classData.getTitle()); - myAdapter = new MyAdapter(this,false,false); + myAdapter = new MyAdapter(this, false, false); myAdapter.refresh(classData.info); mainBinding.recycler.setLayoutManager(new GridLayoutManager(this, 2)); mainBinding.recycler.setAdapter(myAdapter); diff --git a/app/src/main/java/com/nature/free/test/MyWallpaper.kt b/app/src/main/java/com/nature/free/test/MyWallpaper.kt index ac6cedf..137d5e8 100644 --- a/app/src/main/java/com/nature/free/test/MyWallpaper.kt +++ b/app/src/main/java/com/nature/free/test/MyWallpaper.kt @@ -1,6 +1,11 @@ package com.nature.free.test import android.app.Application +import android.content.Intent +import androidx.localbroadcastmanager.content.LocalBroadcastManager +import com.applovin.sdk.AppLovinMediationProvider +import com.applovin.sdk.AppLovinSdk +import com.applovin.sdk.AppLovinSdkInitializationConfiguration import com.nature.free.test.data.ClassData import com.nature.free.test.objectbox.ObjectBox @@ -24,17 +29,18 @@ class MyWallpaper : Application() { const val BITMAP_FILE_DIRECTORY = "MyWallpaper" const val isMainEnterSetKey = "main_enter" - const val TAG ="------------------TAG" + const val TAG = "------------------TAG" + var initSDkOK = false + const val initAction = "INIT_SDK_ACTION" } - private val APPId="h66a0cc207140e" - private val AppKey="acce079c140b9d4db923f8dac460dcec8" - private val debug_Key="4e26d6fdb6029c920a512f4d896f6331f47c82d0" + + private val sdk_key = "JtCdtf2lUaegRtQsZR87DfzVUvCvVLhEv12ECLpPHtvMZRggrNTscST27G7TuyAbgk2L_Gp67_BSP_BNe_qhOI" override fun onCreate() { super.onCreate() globalContext = this - initTopOnSDk() + initMAxSDk() ObjectBox.init(this) if (ObjectBox.getBoxBean().all.size <= 0) { init() @@ -47,9 +53,17 @@ class MyWallpaper : Application() { } - private fun initTopOnSDk(){ - - + private fun initMAxSDk() { + val initConfig = AppLovinSdkInitializationConfiguration.builder(sdk_key, this) + .setMediationProvider(AppLovinMediationProvider.MAX) + .build() + // Initialize the SDK with the configuration + AppLovinSdk.getInstance(this).initialize(initConfig) { sdkConfig -> + // Start loading ads + initSDkOK = true + LocalBroadcastManager.getInstance(globalContext) + .sendBroadcast(Intent(initAction)) + } } diff --git a/app/src/main/java/com/nature/free/test/SplashActivity.java b/app/src/main/java/com/nature/free/test/SplashActivity.java index 406daa3..3a5c7da 100644 --- a/app/src/main/java/com/nature/free/test/SplashActivity.java +++ b/app/src/main/java/com/nature/free/test/SplashActivity.java @@ -1,11 +1,19 @@ package com.nature.free.test; +import android.content.Context; import android.content.Intent; +import android.content.res.Resources; import android.os.Bundle; import android.os.CountDownTimer; +import android.util.Log; import com.nature.free.test.base.BaseActivity; import com.nature.free.test.databinding.ActivityWelBinding; +import com.nature.free.test.max.WelComManager; + +import kotlin.Unit; +import kotlin.jvm.functions.Function0; +import kotlin.jvm.functions.Function1; public class SplashActivity extends BaseActivity { @@ -15,10 +23,24 @@ public class SplashActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + countDownTimer = WelComManager.initTimer(SplashActivity.this, time, new Function1() { + @Override + public Unit invoke(Long aLong) { + long number = time - aLong; + Double s = calculatePercentage(number, time); + Log.d(MyWallpaper.TAG, "--------------l=" + s); + mainBinding.customProgress.setProgress(s.floatValue()); + return null; + } + }, new Function0() { + @Override + public Unit invoke() { + goMain(); + return null; + } + }); - goMain(); - } private void goMain(){ @@ -44,4 +66,7 @@ public class SplashActivity extends BaseActivity { protected ActivityWelBinding getMainBinding() { return ActivityWelBinding.inflate(getLayoutInflater()); } + + + } \ No newline at end of file diff --git a/app/src/main/java/com/nature/free/test/WallPaperActivity.java b/app/src/main/java/com/nature/free/test/WallPaperActivity.java index 92af3d3..ab54232 100644 --- a/app/src/main/java/com/nature/free/test/WallPaperActivity.java +++ b/app/src/main/java/com/nature/free/test/WallPaperActivity.java @@ -28,6 +28,8 @@ import com.nature.free.test.base.BaseActivity; import com.nature.free.test.data.Wallpaper; import com.nature.free.test.data.Wallpaper_; import com.nature.free.test.databinding.ActivityWallpaperBinding; +import com.nature.free.test.max.MaxManager; +import com.nature.free.test.max.onAdStatusListener; import com.nature.free.test.objectbox.ObjectBox; import com.nature.free.test.other.DialogSet; @@ -67,6 +69,7 @@ public class WallPaperActivity extends BaseActivity im @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + MaxManager.onLoadAd(); statusbar(); tempId = getIntent().getLongExtra(MyWallpaper.KEY_WALLPAPER, 1); @@ -132,15 +135,19 @@ public class WallPaperActivity extends BaseActivity im } private void apply(int which) { - - // TODO: 2024/7/30 showAd - mainBinding.load.setVisibility(View.VISIBLE); - if (mainBinding.check1.isSelected()) { - setmWallpaper(which, mBitmapPro1); - } else if (mainBinding.check2.isSelected()) { - setmWallpaper(which, mBitmapSource); - } - + MaxManager.ShowAd(WallPaperActivity.this, new onAdStatusListener() { + @Override + public void onAdStatus(int type) { + if (type == MaxManager.type_show_close || type == MaxManager.type_show_fail || type == MaxManager.type_no_cache) { + mainBinding.load.setVisibility(View.VISIBLE); + if (mainBinding.check1.isSelected()) { + setmWallpaper(which, mBitmapPro1); + } else if (mainBinding.check2.isSelected()) { + setmWallpaper(which, mBitmapSource); + } + } + } + }); } @@ -295,7 +302,7 @@ public class WallPaperActivity extends BaseActivity im public void onClick(View v) { if (v.equals(mainBinding.back)) { if (isMainEnter) { - showTopOnAd(); + showMaxAd(); } else { finish(); } @@ -362,10 +369,15 @@ public class WallPaperActivity extends BaseActivity im mainBinding.load.setVisibility(View.GONE); } - private void showTopOnAd() { - - // TODO: 2024/7/30 showAd - finish(); + private void showMaxAd() { + MaxManager.ShowAd(WallPaperActivity.this, new onAdStatusListener() { + @Override + public void onAdStatus(int type) { + if (type == MaxManager.type_show_close || type == MaxManager.type_show_fail || type == MaxManager.type_no_cache) { + finish(); + } + } + }); } diff --git a/app/src/main/java/com/nature/free/test/max/MaxListener.java b/app/src/main/java/com/nature/free/test/max/MaxListener.java new file mode 100644 index 0000000..eafa97c --- /dev/null +++ b/app/src/main/java/com/nature/free/test/max/MaxListener.java @@ -0,0 +1,11 @@ +package com.nature.free.test.max; + +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/nature/free/test/max/MaxManager.java b/app/src/main/java/com/nature/free/test/max/MaxManager.java new file mode 100644 index 0000000..b60c889 --- /dev/null +++ b/app/src/main/java/com/nature/free/test/max/MaxManager.java @@ -0,0 +1,165 @@ +package com.nature.free.test.max; + +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.nature.free.test.MyWallpaper; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class MaxManager { + /** + * Ad_Units + e131fc7428da6271 + acf4ea6b852b3a99 + e8e6c260ab609443 + */ + private static final String one_AD = "e131fc7428da6271"; + private static final String two_Ad = "acf4ea6b852b3a99"; + private static final String three_ad = "e8e6c260ab609443"; + + + 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 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, MyWallpaper.globalContext); + MaxInterstitialAd AdOne = new MaxInterstitialAd(one_AD, MyWallpaper.globalContext); + MaxInterstitialAd AdThree = new MaxInterstitialAd(three_ad, MyWallpaper.globalContext); + 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(MyWallpaper.TAG, "-------onAdLoaded-----maxAd="+maxAd.getAdUnitId()); + } + + @Override + public void onAdDisplayed(@NonNull MaxAd maxAd) { + Log.d(MyWallpaper.TAG, "-------onAdDisplayed-----maxAd="+maxAd.getAdUnitId()); + maxListener.onShowSuccess(maxAd); + } + + @Override + public void onAdHidden(@NonNull MaxAd maxAd) { + Log.d(MyWallpaper.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) { + + } + + @Override + public void onAdDisplayFailed(@NonNull MaxAd maxAd, @NonNull MaxError maxError) { + maxListener.onFail(maxAd); + } + }); + + } + + public 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); + } + } + + +} diff --git a/app/src/main/java/com/nature/free/test/max/WelComManager.kt b/app/src/main/java/com/nature/free/test/max/WelComManager.kt new file mode 100644 index 0000000..f7b673a --- /dev/null +++ b/app/src/main/java/com/nature/free/test/max/WelComManager.kt @@ -0,0 +1,76 @@ +package com.nature.free.test.max + +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.nature.free.test.MyWallpaper + + +object WelComManager { + + private lateinit var timer: CountDownTimer + + private var need_Show = true + + private lateinit var lists: List + + @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(MyWallpaper.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(MyWallpaper.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(MyWallpaper.TAG, "--onFinish---------enter") + goMainAction.invoke() + } + } + } + } + } + startAd(activity) + return timer + } + + private fun startAd(activity: Activity) { + if (!MyWallpaper.initSDkOK) { + LocalBroadcastManager.getInstance(activity) + .registerReceiver(object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + lists = MaxManager.onLoadAd() + timer.start() + Log.d(MyWallpaper.TAG, "------------1sucess") + } + }, IntentFilter(MyWallpaper.initAction)) + } else { + lists = MaxManager.onLoadAd() + timer.start() + Log.d(MyWallpaper.TAG, "------------2sucess") + } + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/nature/free/test/max/onAdStatusListener.java b/app/src/main/java/com/nature/free/test/max/onAdStatusListener.java new file mode 100644 index 0000000..a2665d8 --- /dev/null +++ b/app/src/main/java/com/nature/free/test/max/onAdStatusListener.java @@ -0,0 +1,6 @@ +package com.nature.free.test.max; + +public interface onAdStatusListener { + + void onAdStatus(int type); +} diff --git a/build.gradle.kts b/build.gradle.kts index 3f00fcc..8a3d75c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,6 +5,7 @@ plugins { id("com.google.gms.google-services") version "4.3.15" apply false id ("com.google.firebase.crashlytics") version "2.9.2" apply false + } buildscript { @@ -17,5 +18,6 @@ buildscript { dependencies { classpath("io.objectbox:objectbox-gradle-plugin:$objectboxVersion") + classpath("com.applovin.quality:AppLovinQualityServiceGradlePlugin:+") } } \ No newline at end of file diff --git a/keystore.properties b/keystore.properties new file mode 100644 index 0000000..143c8a0 --- /dev/null +++ b/keystore.properties @@ -0,0 +1,6 @@ +app_name=Various Wallpapers +package_name=com.nature.free.variouswallpaper +keystoreFile=app/VariousWallpapers.jks +key_alias=VariousWallpaperskey0 +key_store_password=VariousWallpapers +key_password=VariousWallpapers \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 11c61e9..fc7673a 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 { @@ -11,7 +12,8 @@ dependencyResolutionManagement { 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") } } }