Commit 6ddcdbc6 authored by maxiaoliang's avatar maxiaoliang

修改广告,添加新需求

parent 9a6ca575
...@@ -115,4 +115,12 @@ dependencies { ...@@ -115,4 +115,12 @@ dependencies {
//https://docs.tradplusad.com/docs/tradplussdk_android_doc_v6/privacy_policy/google_ump/ //https://docs.tradplusad.com/docs/tradplussdk_android_doc_v6/privacy_policy/google_ump/
implementation 'com.google.android.ump:user-messaging-platform:2.1.0' implementation 'com.google.android.ump:user-messaging-platform:2.1.0'
implementation 'com.applovin:applovin-sdk:+'
implementation 'com.applovin.mediation:google-adapter:+'
implementation 'com.applovin.mediation:ironsource-adapter:+'
implementation 'com.applovin.mediation:vungle-adapter:+'
implementation 'com.applovin.mediation:facebook-adapter:+'
implementation 'com.applovin.mediation:mintegral-adapter:+'
implementation 'com.applovin.mediation:bytedance-adapter:+'
} }
\ No newline at end of file
...@@ -187,6 +187,9 @@ ...@@ -187,6 +187,9 @@
android:name=".activity.photocompress.photo.PreviewCompressionPhotoActivity" android:name=".activity.photocompress.photo.PreviewCompressionPhotoActivity"
android:screenOrientation="portrait" android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" /> tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".activity.BackRelsutAt"
android:screenOrientation="portrait" />
<service <service
android:name=".fcm.FcmService" android:name=".fcm.FcmService"
......
...@@ -4,24 +4,24 @@ import android.annotation.SuppressLint ...@@ -4,24 +4,24 @@ import android.annotation.SuppressLint
import android.app.Activity import android.app.Activity
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.os.Handler
import android.text.TextUtils import android.text.TextUtils
import android.util.Log import com.applovin.sdk.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration
import com.google.android.gms.ads.MobileAds import com.google.android.gms.ads.MobileAds
import com.mbridge.msdk.thrid.okhttp.OkHttpClient import com.google.android.gms.ads.identifier.AdvertisingIdClient
import com.test.easy.easycleanerjunk.activity.splash.NewSplashActivity import com.test.easy.easycleanerjunk.activity.splash.NewSplashActivity
import com.test.easy.easycleanerjunk.fcm.ActionBroadcast import com.test.easy.easycleanerjunk.fcm.ActionBroadcast
import com.test.easy.easycleanerjunk.fcm.FCMUtil import com.test.easy.easycleanerjunk.fcm.FCMUtil
import com.test.easy.easycleanerjunk.fcm.MyTimerManager
import com.test.easy.easycleanerjunk.helps.BaseApplication import com.test.easy.easycleanerjunk.helps.BaseApplication
import com.test.easy.easycleanerjunk.helps.ComUtils
import com.test.easy.easycleanerjunk.helps.ConfigHelper import com.test.easy.easycleanerjunk.helps.ConfigHelper
import com.test.easy.easycleanerjunk.helps.InstallHelps import com.test.easy.easycleanerjunk.helps.InstallHelps
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.ActivityManagerUtils import com.test.easy.easycleanerjunk.utils.ActivityManagerUtils
import com.test.easy.easycleanerjunk.utils.SPUtils import com.test.easy.easycleanerjunk.utils.SPUtils
import java.io.IOException import java.util.Collections
import java.util.UUID import java.util.UUID
import java.util.concurrent.Executors
class MyApplication : BaseApplication() { class MyApplication : BaseApplication() {
...@@ -48,11 +48,26 @@ class MyApplication : BaseApplication() { ...@@ -48,11 +48,26 @@ class MyApplication : BaseApplication() {
fun initApp() { fun initApp() {
initNotificationWork() initNotificationWork()
InstallHelps.init()
if (ConfigHelper.ifAgreePrivacy) { if (ConfigHelper.ifAgreePrivacy) {
MobileAds.initialize(this) { initializationStatus -> MobileAds.initialize(this) { initializationStatus ->
} }
InstallHelps.init() val executor = Executors.newSingleThreadExecutor()
executor.execute {
val initConfigBuilder = AppLovinSdkInitializationConfiguration.builder(
"05TMDQ5tZabpXQ45_UTbmEGNUtVAzSTzT6KmWQc5_CuWdzccS4DCITZoL3yIWUG3bbq60QC_d4WF28tUC4gVTF",
context
).setMediationProvider(AppLovinMediationProvider.MAX)
val currentGaid = AdvertisingIdClient.getAdvertisingIdInfo(context).id
if (currentGaid != null) {
initConfigBuilder.testDeviceAdvertisingIds = Collections.singletonList(currentGaid)
}
val initConfig = initConfigBuilder.build()
// Initialize the SDK with the configuration
AppLovinSdk.getInstance(context).initialize(initConfig) { sdkConfig ->
}
executor.shutdown()
}
} }
initLifeListener() initLifeListener()
} }
...@@ -60,19 +75,11 @@ class MyApplication : BaseApplication() { ...@@ -60,19 +75,11 @@ class MyApplication : BaseApplication() {
private fun initNotificationWork() { private fun initNotificationWork() {
FCMUtil.initFirebase(this) FCMUtil.initFirebase(this)
FCMUtil.subscribeToTopic(ConfigHelper.packageName + "_push") FCMUtil.subscribeToTopic(ConfigHelper.packageName + "_push")
Thread { // Thread {
ComUtils.requestCfg { //
ActionBroadcast.initBroadcast(this) // }.start()
val timerS = SPUtils.getInstance().getInt("timerS", 1)
if (timerS == 1) {
val timerDelay = SPUtils.getInstance().getInt("timerDelay", 1)
val timerInterval = SPUtils.getInstance().getInt("timerInterval", 5)
MyTimerManager.getInstance()
.startTimer((timerDelay * 60 * 1000).toLong(), (timerInterval * 60 * 1000).toLong())
}
}
}.start()
ActionBroadcast.initBroadcast(this)
} }
@SuppressLint("UnspecifiedRegisterReceiverFlag") @SuppressLint("UnspecifiedRegisterReceiverFlag")
...@@ -96,8 +103,8 @@ class MyApplication : BaseApplication() { ...@@ -96,8 +103,8 @@ class MyApplication : BaseApplication() {
} }
if (flag) { if (flag) {
if (AdmobUtils.isOpenAdLoaded()) { if (MaxAdUtils.isOpenAdLoaded()) {
AdmobUtils.showAppOpenAd(activity) MaxAdUtils.showAppOpenAd(activity)
} else { } else {
topActivity?.startActivity( topActivity?.startActivity(
Intent( Intent(
......
package com.test.easy.easycleanerjunk.activity
import android.app.Activity
import android.content.Intent
import android.graphics.Color
import androidx.core.view.updatePadding
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.activity.appmanager.AppManagerAnimationActivity
import com.test.easy.easycleanerjunk.activity.batteryinfo.BatteryInfoAnimationActivity
import com.test.easy.easycleanerjunk.activity.largefile.LargeFileAnimationActivity
import com.test.easy.easycleanerjunk.activity.photocompress.photo.StartCompressionPhotoActivity
import com.test.easy.easycleanerjunk.activity.scanjunk.PrepareScanActivity
import com.test.easy.easycleanerjunk.activity.screenshot.ScreenShotAnimationActivity
import com.test.easy.easycleanerjunk.activity.similarphotos.RepeatPhotoAnimationActivity
import com.test.easy.easycleanerjunk.activity.whatsapp.WhatsAppCleanerAnimationActivity
import com.test.easy.easycleanerjunk.databinding.AtLayoutBackRelustBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.view.AFunOb
class BackRelsutAt:BaseActivity<AtLayoutBackRelustBinding>() {
override val binding: AtLayoutBackRelustBinding by lazy {
AtLayoutBackRelustBinding.inflate(layoutInflater)
}
companion object {
fun launch(activity: Activity, from: String?) {
activity.startActivity(Intent(activity, BackRelsutAt::class.java).putExtra("type", from))
}
}
private val type by lazy {
intent.getStringExtra("type")
}
override fun initView() {
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
binding.idClose.updatePadding(top=BarUtils.getStatusBarHeight())
val index = listOf(
AFunOb.JUNK_CLEANER,
AFunOb.WHATSAPP_CLEANER,
AFunOb.BATTERY_INFO,
AFunOb.LARGE_FILE_CLEANER,
AFunOb.PHOTO_COMPRESS,
AFunOb.APP_MANAGER,
AFunOb.SIMILAR_PHOTOS,
AFunOb.SCREENSHOT_CLEANER
).indexOf(type)
listOf(
listOf(R.mipmap.b_cleanjunk, "Clean up remaining junk files to free up space", "Clean Up", PrepareScanActivity::class.java),
listOf(R.mipmap.b_whatsapp, "Free up space by cleaning up WhatsApp junk files", "View", WhatsAppCleanerAnimationActivity::class.java),
listOf(R.mipmap.b_battery, "Power consumption too fast? Check your phone's battery status", "View", BatteryInfoAnimationActivity::class.java),
listOf(R.mipmap.b_large, "Free up storage space by cleaning up big files", "Clean Up", LargeFileAnimationActivity::class.java),
listOf(R.mipmap.b_photocompress, "Compress images to save storage space", "Compress", StartCompressionPhotoActivity::class.java),
listOf(R.mipmap.b_appguanli, "Low on storage space? Free up space on your device by managing unused apps!", "View", AppManagerAnimationActivity::class.java),
listOf(R.mipmap.b_similar, "Check similar photos and free up space", "Clean Up", RepeatPhotoAnimationActivity::class.java),
listOf(R.mipmap.b_screenshot, "Free up storage space by cleaning up screenshots", "View", ScreenShotAnimationActivity::class.java),
).let {
val item = it[(index + 1) % it.size]
binding.idImg.setImageResource(item[0] as Int)
binding.idTvDesc.text = item[1] as String
binding.idBtn.text = item[2] as String
binding.idBtn.setOnClickListener { _ ->
if (item[3] is Class<*>) {
startActivity(Intent(this, item[3] as Class<*>))
finish()
}
}
}
}
override fun initListener() {
binding.idClose.setOnClickListener {
finishToMain()
}
}
}
\ No newline at end of file
...@@ -18,7 +18,7 @@ import com.test.easy.easycleanerjunk.adapter.AppFunctionAdapter ...@@ -18,7 +18,7 @@ import com.test.easy.easycleanerjunk.adapter.AppFunctionAdapter
import com.test.easy.easycleanerjunk.databinding.ActivityLayoutResultBinding import com.test.easy.easycleanerjunk.databinding.ActivityLayoutResultBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.KotlinExt.toFormatSize import com.test.easy.easycleanerjunk.helps.KotlinExt.toFormatSize
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.utils.SPUtils import com.test.easy.easycleanerjunk.utils.SPUtils
import com.test.easy.easycleanerjunk.view.AFunOb.APP_MANAGER import com.test.easy.easycleanerjunk.view.AFunOb.APP_MANAGER
...@@ -127,15 +127,16 @@ class ResultActivity : BaseActivity<ActivityLayoutResultBinding>() { ...@@ -127,15 +127,16 @@ class ResultActivity : BaseActivity<ActivityLayoutResultBinding>() {
onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) { onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() { override fun handleOnBackPressed() {
val s = SPUtils.getInstance().getInt("isShowBackIntAd", 0) // val s = SPUtils.getInstance().getInt("isShowBackIntAd", 0)
if (s == 1) { // if (s == 1) {
AdmobUtils.showInterstitialAd(this@ResultActivity) { // MaxAdUtils.showInterstitialAd(this@ResultActivity) {
finishToMain() // finishToMain()
} // }
} else { // } else {
finishToMain() // finishToMain()
} // }
BackRelsutAt.launch(this@ResultActivity, from)
finish()
} }
}) })
...@@ -145,7 +146,7 @@ class ResultActivity : BaseActivity<ActivityLayoutResultBinding>() { ...@@ -145,7 +146,7 @@ class ResultActivity : BaseActivity<ActivityLayoutResultBinding>() {
val ss = SPUtils.getInstance().getInt("isShowResultNaAd", 0) val ss = SPUtils.getInstance().getInt("isShowResultNaAd", 0)
if (ss == 1) { if (ss == 1) {
binding.flAd.visibility = View.VISIBLE binding.flAd.visibility = View.VISIBLE
AdmobUtils.showNativeAd(this@ResultActivity, binding.flAd) MaxAdUtils.showNativeAd(this@ResultActivity, binding.flAd)
} else { } else {
binding.flAd.visibility = View.GONE binding.flAd.visibility = View.GONE
......
...@@ -8,20 +8,18 @@ import android.graphics.Color ...@@ -8,20 +8,18 @@ import android.graphics.Color
import android.net.Uri import android.net.Uri
import android.view.View import android.view.View
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.adapter.AppUninstallAdapter import com.test.easy.easycleanerjunk.adapter.AppUninstallAdapter
import com.test.easy.easycleanerjunk.bean.AppUninstallBean import com.test.easy.easycleanerjunk.bean.AppUninstallBean
import com.test.easy.easycleanerjunk.databinding.ActivityAppManagerBinding import com.test.easy.easycleanerjunk.databinding.ActivityAppManagerBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ConfigHelper.mustShowNativeAd import com.test.easy.easycleanerjunk.helps.ConfigHelper.mustShowNativeAd
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.view.AFunOb import com.test.easy.easycleanerjunk.view.AFunOb
import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlin.random.Random
class AppManagerActivity : BaseActivity<ActivityAppManagerBinding>() { class AppManagerActivity : BaseActivity<ActivityAppManagerBinding>() {
...@@ -51,7 +49,7 @@ class AppManagerActivity : BaseActivity<ActivityAppManagerBinding>() { ...@@ -51,7 +49,7 @@ class AppManagerActivity : BaseActivity<ActivityAppManagerBinding>() {
} }
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
showDialogFunctionExit(AFunOb.APP_MANAGER) { showDialogFunctionExit(AFunOb.APP_MANAGER) {
AdmobUtils.showInterstitialAd(this@AppManagerActivity) { MaxAdUtils.showInterstitialAd(this@AppManagerActivity) {
finishToMain() finishToMain()
} }
} }
...@@ -78,7 +76,7 @@ class AppManagerActivity : BaseActivity<ActivityAppManagerBinding>() { ...@@ -78,7 +76,7 @@ class AppManagerActivity : BaseActivity<ActivityAppManagerBinding>() {
binding.progressBar.visibility = View.GONE binding.progressBar.visibility = View.GONE
adapter.setData(list) adapter.setData(list)
if (list.size > 6 || mustShowNativeAd) { if (list.size > 6 || mustShowNativeAd) {
AdmobUtils.showNativeAd(this@AppManagerActivity, binding.flAd) MaxAdUtils.showNativeAd(this@AppManagerActivity, binding.flAd)
} }
} }
} }
......
...@@ -2,20 +2,13 @@ package com.test.easy.easycleanerjunk.activity.appmanager ...@@ -2,20 +2,13 @@ package com.test.easy.easycleanerjunk.activity.appmanager
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.os.Bundle
import android.view.View import android.view.View
import android.widget.Toast import android.widget.Toast
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.databinding.ActivityAppManagerAnimationBinding import com.test.easy.easycleanerjunk.databinding.ActivityAppManagerAnimationBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
...@@ -49,7 +42,7 @@ class AppManagerAnimationActivity : BaseActivity<ActivityAppManagerAnimationBind ...@@ -49,7 +42,7 @@ class AppManagerAnimationActivity : BaseActivity<ActivityAppManagerAnimationBind
binding.lottieCompleted.playAnimation() binding.lottieCompleted.playAnimation()
binding.tv.text = "Completed!" binding.tv.text = "Completed!"
delay(1000) delay(1000)
AdmobUtils.showInterstitialAd(this@AppManagerAnimationActivity) { MaxAdUtils.showInterstitialAd(this@AppManagerAnimationActivity) {
binding.lottie.cancelAnimation() binding.lottie.cancelAnimation()
startActivity(Intent(this@AppManagerAnimationActivity, AppManagerActivity::class.java)) startActivity(Intent(this@AppManagerAnimationActivity, AppManagerActivity::class.java))
finish() finish()
......
...@@ -10,11 +10,10 @@ import com.test.easy.easycleanerjunk.R ...@@ -10,11 +10,10 @@ import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.activity.ResultActivity import com.test.easy.easycleanerjunk.activity.ResultActivity
import com.test.easy.easycleanerjunk.databinding.ActivityLayoutBatteryInfoBinding import com.test.easy.easycleanerjunk.databinding.ActivityLayoutBatteryInfoBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.service.BatteryReceiver import com.test.easy.easycleanerjunk.service.BatteryReceiver
import com.test.easy.easycleanerjunk.view.AFunOb import com.test.easy.easycleanerjunk.view.AFunOb
import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit
import kotlin.random.Random
class BatteryInfoActivity : BaseActivity<ActivityLayoutBatteryInfoBinding>() { class BatteryInfoActivity : BaseActivity<ActivityLayoutBatteryInfoBinding>() {
override val isLightMode = true override val isLightMode = true
...@@ -67,7 +66,7 @@ class BatteryInfoActivity : BaseActivity<ActivityLayoutBatteryInfoBinding>() { ...@@ -67,7 +66,7 @@ class BatteryInfoActivity : BaseActivity<ActivityLayoutBatteryInfoBinding>() {
} }
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
showDialogFunctionExit(AFunOb.BATTERY_INFO) { showDialogFunctionExit(AFunOb.BATTERY_INFO) {
AdmobUtils.showInterstitialAd(this@BatteryInfoActivity, isShowInterVal = false) { MaxAdUtils.showInterstitialAd(this@BatteryInfoActivity, isShowInterVal = false) {
finishToMain() finishToMain()
} }
} }
......
...@@ -2,20 +2,13 @@ package com.test.easy.easycleanerjunk.activity.batteryinfo ...@@ -2,20 +2,13 @@ package com.test.easy.easycleanerjunk.activity.batteryinfo
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.os.Bundle
import android.view.View import android.view.View
import android.widget.Toast import android.widget.Toast
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.databinding.ActivityBatteryInfoAnimationBinding import com.test.easy.easycleanerjunk.databinding.ActivityBatteryInfoAnimationBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
...@@ -51,7 +44,7 @@ class BatteryInfoAnimationActivity : BaseActivity<ActivityBatteryInfoAnimationBi ...@@ -51,7 +44,7 @@ class BatteryInfoAnimationActivity : BaseActivity<ActivityBatteryInfoAnimationBi
binding.lottieCompleted.playAnimation() binding.lottieCompleted.playAnimation()
binding.tv.text = "Completed!" binding.tv.text = "Completed!"
delay(1000) delay(1000)
AdmobUtils.showInterstitialAd(this@BatteryInfoAnimationActivity) { MaxAdUtils.showInterstitialAd(this@BatteryInfoAnimationActivity) {
binding.lottie.clearAnimation() binding.lottie.clearAnimation()
startActivity(Intent(this@BatteryInfoAnimationActivity, BatteryInfoActivity::class.java)) startActivity(Intent(this@BatteryInfoAnimationActivity, BatteryInfoActivity::class.java))
finish() finish()
......
...@@ -2,20 +2,13 @@ package com.test.easy.easycleanerjunk.activity.largefile ...@@ -2,20 +2,13 @@ package com.test.easy.easycleanerjunk.activity.largefile
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.os.Bundle
import android.view.View import android.view.View
import android.widget.Toast import android.widget.Toast
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.databinding.ActivityLargeFileAnimationBinding import com.test.easy.easycleanerjunk.databinding.ActivityLargeFileAnimationBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
...@@ -49,7 +42,7 @@ class LargeFileAnimationActivity : BaseActivity<ActivityLargeFileAnimationBindin ...@@ -49,7 +42,7 @@ class LargeFileAnimationActivity : BaseActivity<ActivityLargeFileAnimationBindin
binding.lottieCompleted.playAnimation() binding.lottieCompleted.playAnimation()
binding.tv.text = "Completed!" binding.tv.text = "Completed!"
delay(1000) delay(1000)
AdmobUtils.showInterstitialAd(this@LargeFileAnimationActivity) { MaxAdUtils.showInterstitialAd(this@LargeFileAnimationActivity) {
showFinish?.invoke() showFinish?.invoke()
startActivity(Intent(this@LargeFileAnimationActivity, LargeFileCleanActivity::class.java)) startActivity(Intent(this@LargeFileAnimationActivity, LargeFileCleanActivity::class.java))
finish() finish()
......
...@@ -44,7 +44,7 @@ import com.test.easy.easycleanerjunk.helps.MediaStoreUtils ...@@ -44,7 +44,7 @@ import com.test.easy.easycleanerjunk.helps.MediaStoreUtils
import com.test.easy.easycleanerjunk.helps.PermissionHelp.checkStorePermission import com.test.easy.easycleanerjunk.helps.PermissionHelp.checkStorePermission
import com.test.easy.easycleanerjunk.helps.PermissionHelp.requestStorePermission import com.test.easy.easycleanerjunk.helps.PermissionHelp.requestStorePermission
import com.test.easy.easycleanerjunk.helps.TimeUtils import com.test.easy.easycleanerjunk.helps.TimeUtils
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.view.AFunOb import com.test.easy.easycleanerjunk.view.AFunOb
import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit
import com.test.easy.easycleanerjunk.view.DialogViews.showGerPermission import com.test.easy.easycleanerjunk.view.DialogViews.showGerPermission
...@@ -189,7 +189,7 @@ class LargeFileCleanActivity : BaseActivity<ActivityLayoutLargeFileBinding>() { ...@@ -189,7 +189,7 @@ class LargeFileCleanActivity : BaseActivity<ActivityLayoutLargeFileBinding>() {
} }
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
showDialogFunctionExit(AFunOb.LARGE_FILE_CLEANER) { showDialogFunctionExit(AFunOb.LARGE_FILE_CLEANER) {
AdmobUtils.showInterstitialAd(this@LargeFileCleanActivity) { MaxAdUtils.showInterstitialAd(this@LargeFileCleanActivity) {
finishToMain() finishToMain()
} }
} }
...@@ -218,7 +218,7 @@ class LargeFileCleanActivity : BaseActivity<ActivityLayoutLargeFileBinding>() { ...@@ -218,7 +218,7 @@ class LargeFileCleanActivity : BaseActivity<ActivityLayoutLargeFileBinding>() {
binding.llTime.isEnabled = true binding.llTime.isEnabled = true
} }
if (largeFileList.size > 6 || mustShowNativeAd) { if (largeFileList.size > 6 || mustShowNativeAd) {
AdmobUtils.showNativeAd(this@LargeFileCleanActivity, binding.flAd) MaxAdUtils.showNativeAd(this@LargeFileCleanActivity, binding.flAd)
} }
} }
} }
......
...@@ -5,7 +5,7 @@ import androidx.activity.OnBackPressedCallback ...@@ -5,7 +5,7 @@ import androidx.activity.OnBackPressedCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import com.test.easy.easycleanerjunk.databinding.ActivityCompressionPhotoListBinding import com.test.easy.easycleanerjunk.databinding.ActivityCompressionPhotoListBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.view.AFunOb import com.test.easy.easycleanerjunk.view.AFunOb
import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit
...@@ -34,7 +34,7 @@ class CompressionPhotoListActivity : BaseActivity<ActivityCompressionPhotoListBi ...@@ -34,7 +34,7 @@ class CompressionPhotoListActivity : BaseActivity<ActivityCompressionPhotoListBi
onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) { onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() { override fun handleOnBackPressed() {
showDialogFunctionExit(AFunOb.PHOTO_COMPRESS) { showDialogFunctionExit(AFunOb.PHOTO_COMPRESS) {
AdmobUtils.showInterstitialAd(this@CompressionPhotoListActivity, isShowInterVal = false) { MaxAdUtils.showInterstitialAd(this@CompressionPhotoListActivity, isShowInterVal = false) {
PhotoCache.getInstance().clearCache() PhotoCache.getInstance().clearCache()
finishToMain() finishToMain()
} }
......
...@@ -83,7 +83,7 @@ class CompressioningActivity : BaseActivity<ActivityCompressioningBinding>(), ...@@ -83,7 +83,7 @@ class CompressioningActivity : BaseActivity<ActivityCompressioningBinding>(),
} }
private fun onSuccess() { private fun onSuccess() {
// AdmobUtils.showInterstitialAd(this){ // MaxAdUtils.showInterstitialAd(this){
val intent = Intent(this, ResultActivity::class.java) val intent = Intent(this, ResultActivity::class.java)
intent.putExtra("from", AFunOb.PHOTO_COMPRESS) intent.putExtra("from", AFunOb.PHOTO_COMPRESS)
intent.putExtra("num", mNum) intent.putExtra("num", mNum)
......
...@@ -6,7 +6,6 @@ import android.content.Intent ...@@ -6,7 +6,6 @@ import android.content.Intent
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.view.View import android.view.View
import android.view.View.OnClickListener import android.view.View.OnClickListener
import android.widget.FrameLayout
import android.widget.TextView import android.widget.TextView
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
...@@ -14,8 +13,6 @@ import androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup ...@@ -14,8 +13,6 @@ import androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.SimpleItemAnimator import androidx.recyclerview.widget.SimpleItemAnimator
import com.test.easy.easycleanerjunk.R import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.helps.ConfigHelper.mustShowNativeAd
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
class PhotoListManager(val context: Activity) : OnItemClickListener<PhotoBean>, SpanSizeLookup(), OnClickListener { class PhotoListManager(val context: Activity) : OnItemClickListener<PhotoBean>, SpanSizeLookup(), OnClickListener {
...@@ -62,7 +59,7 @@ class PhotoListManager(val context: Activity) : OnItemClickListener<PhotoBean>, ...@@ -62,7 +59,7 @@ class PhotoListManager(val context: Activity) : OnItemClickListener<PhotoBean>,
override fun onUpdateBtn(isChecked: Boolean, entity: PhotoBean) { override fun onUpdateBtn(isChecked: Boolean, entity: PhotoBean) {
// if (entity.size > 6 || mustShowNativeAd) { // if (entity.size > 6 || mustShowNativeAd) {
// val flAd = context.findViewById<FrameLayout>(R.id.fl_ad) // val flAd = context.findViewById<FrameLayout>(R.id.fl_ad)
// AdmobUtils.showNativeAd(context, flAd) // MaxAdUtils.showNativeAd(context, flAd)
// } // }
PhotoCache.getInstance().let { PhotoCache.getInstance().let {
if (isChecked) it.addPhoto(entity) else it.removePhoto(entity) if (isChecked) it.addPhoto(entity) else it.removePhoto(entity)
......
...@@ -7,7 +7,7 @@ import androidx.core.view.updatePadding ...@@ -7,7 +7,7 @@ import androidx.core.view.updatePadding
import com.test.easy.easycleanerjunk.R import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.databinding.ActivityPreviewCompressionPhotoBinding import com.test.easy.easycleanerjunk.databinding.ActivityPreviewCompressionPhotoBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils import com.test.easy.easycleanerjunk.utils.BarUtils
...@@ -39,7 +39,7 @@ class PreviewCompressionPhotoActivity : BaseActivity<ActivityPreviewCompressionP ...@@ -39,7 +39,7 @@ class PreviewCompressionPhotoActivity : BaseActivity<ActivityPreviewCompressionP
dialog.setButtonClickListener(R.id.btnContinue) { dialog.setButtonClickListener(R.id.btnContinue) {
dialog.dismiss() dialog.dismiss()
AdmobUtils.showInterstitialAd(this) { MaxAdUtils.showInterstitialAd(this) {
CompressionPhotoListActivity.mActivity?.finish() CompressionPhotoListActivity.mActivity?.finish()
val intent = Intent(this, CompressioningActivity::class.java) val intent = Intent(this, CompressioningActivity::class.java)
intent.putExtra("mode", manager.getMode()) intent.putExtra("mode", manager.getMode())
......
...@@ -3,7 +3,6 @@ package com.test.easy.easycleanerjunk.activity.photocompress.photo ...@@ -3,7 +3,6 @@ package com.test.easy.easycleanerjunk.activity.photocompress.photo
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.os.Handler
import android.view.View import android.view.View
import android.widget.Toast import android.widget.Toast
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
...@@ -11,7 +10,7 @@ import androidx.core.view.updatePadding ...@@ -11,7 +10,7 @@ import androidx.core.view.updatePadding
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.databinding.ActivityStartCompressionPhotoBinding import com.test.easy.easycleanerjunk.databinding.ActivityStartCompressionPhotoBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils import com.test.easy.easycleanerjunk.utils.BarUtils
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
...@@ -71,7 +70,7 @@ class StartCompressionPhotoActivity : BaseActivity<ActivityStartCompressionPhoto ...@@ -71,7 +70,7 @@ class StartCompressionPhotoActivity : BaseActivity<ActivityStartCompressionPhoto
binding.lottieCompleted.playAnimation() binding.lottieCompleted.playAnimation()
binding.tv.text = "Completed!" binding.tv.text = "Completed!"
delay(1000) delay(1000)
AdmobUtils.showInterstitialAd(aContext) { MaxAdUtils.showInterstitialAd(aContext) {
val mList = ImagesMediaUtils.getAlbums(aContext) val mList = ImagesMediaUtils.getAlbums(aContext)
if (mList.isNotEmpty()) { if (mList.isNotEmpty()) {
startActivity(Intent(aContext, CompressionPhotoListActivity::class.java)) startActivity(Intent(aContext, CompressionPhotoListActivity::class.java))
......
...@@ -22,7 +22,7 @@ import com.test.easy.easycleanerjunk.databinding.ItemParentBinding ...@@ -22,7 +22,7 @@ import com.test.easy.easycleanerjunk.databinding.ItemParentBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.KotlinExt.toFormatSize import com.test.easy.easycleanerjunk.helps.KotlinExt.toFormatSize
import com.test.easy.easycleanerjunk.helps.MediaStoreUtils import com.test.easy.easycleanerjunk.helps.MediaStoreUtils
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.view.AFunOb import com.test.easy.easycleanerjunk.view.AFunOb
import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit
...@@ -85,7 +85,7 @@ class CleanJunkActivity : BaseActivity<ActivityLayoutCleanJunkBinding>() { ...@@ -85,7 +85,7 @@ class CleanJunkActivity : BaseActivity<ActivityLayoutCleanJunkBinding>() {
onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) { onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() { override fun handleOnBackPressed() {
showDialogFunctionExit(AFunOb.JUNK_CLEANER) { showDialogFunctionExit(AFunOb.JUNK_CLEANER) {
AdmobUtils.showInterstitialAd(this@CleanJunkActivity) { MaxAdUtils.showInterstitialAd(this@CleanJunkActivity) {
finishToMain() finishToMain()
} }
} }
...@@ -188,7 +188,7 @@ class CleanJunkActivity : BaseActivity<ActivityLayoutCleanJunkBinding>() { ...@@ -188,7 +188,7 @@ class CleanJunkActivity : BaseActivity<ActivityLayoutCleanJunkBinding>() {
binding.idClBtn.isVisible = scanCount >= 3 binding.idClBtn.isVisible = scanCount >= 3
binding.idClBtn.isEnabled = sizes.sum() > 0 binding.idClBtn.isEnabled = sizes.sum() > 0
if (scanCount >= 3 && sizes.sum().toInt() == 0) { if (scanCount >= 3 && sizes.sum().toInt() == 0) {
// AdmobUtils.showInterstitialAd(this) { // MaxAdUtils.showInterstitialAd(this) {
// startActivity( // startActivity(
// Intent(this, ResultActivity::class.java).putExtra( // Intent(this, ResultActivity::class.java).putExtra(
// "from", // "from",
......
...@@ -6,7 +6,7 @@ import androidx.activity.OnBackPressedCallback ...@@ -6,7 +6,7 @@ import androidx.activity.OnBackPressedCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import com.test.easy.easycleanerjunk.databinding.ActivityLayoutParepreScanBinding import com.test.easy.easycleanerjunk.databinding.ActivityLayoutParepreScanBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils import com.test.easy.easycleanerjunk.utils.BarUtils
/** /**
...@@ -58,7 +58,7 @@ class PrepareScanActivity : BaseActivity<ActivityLayoutParepreScanBinding>() { ...@@ -58,7 +58,7 @@ class PrepareScanActivity : BaseActivity<ActivityLayoutParepreScanBinding>() {
binding.idJunkScan.setAnimation("easy_junk_scan/data.json") binding.idJunkScan.setAnimation("easy_junk_scan/data.json")
binding.idJunkScan.playAnimation() binding.idJunkScan.playAnimation()
binding.root.postDelayed({ binding.root.postDelayed({
AdmobUtils.showInterstitialAd(this) { MaxAdUtils.showInterstitialAd(this) {
startActivity(Intent(this, CleanJunkActivity::class.java)) startActivity(Intent(this, CleanJunkActivity::class.java))
finish() finish()
} }
......
...@@ -3,16 +3,13 @@ package com.test.easy.easycleanerjunk.activity.scanjunk ...@@ -3,16 +3,13 @@ package com.test.easy.easycleanerjunk.activity.scanjunk
import android.animation.ValueAnimator import android.animation.ValueAnimator
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.graphics.Color
import android.view.View import android.view.View
import android.widget.Toast import android.widget.Toast
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.view.updatePadding
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.databinding.ActivityLayoutScanJunkBinding import com.test.easy.easycleanerjunk.databinding.ActivityLayoutScanJunkBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
...@@ -95,7 +92,7 @@ class ScanJunkActivity : BaseActivity<ActivityLayoutScanJunkBinding>() { ...@@ -95,7 +92,7 @@ class ScanJunkActivity : BaseActivity<ActivityLayoutScanJunkBinding>() {
binding.lottieCompleted.playAnimation() binding.lottieCompleted.playAnimation()
binding.tv.text = "Completed!" binding.tv.text = "Completed!"
delay(1000) delay(1000)
AdmobUtils.showInterstitialAd(this@ScanJunkActivity) { MaxAdUtils.showInterstitialAd(this@ScanJunkActivity) {
startActivity(Intent(this@ScanJunkActivity, CleanJunkActivity::class.java)) startActivity(Intent(this@ScanJunkActivity, CleanJunkActivity::class.java))
finish() finish()
} }
......
...@@ -14,7 +14,7 @@ import com.test.easy.easycleanerjunk.helps.FileHelps ...@@ -14,7 +14,7 @@ import com.test.easy.easycleanerjunk.helps.FileHelps
import com.test.easy.easycleanerjunk.helps.KotlinExt.toFormatSize import com.test.easy.easycleanerjunk.helps.KotlinExt.toFormatSize
import com.test.easy.easycleanerjunk.helps.PermissionHelp.checkStorePermission import com.test.easy.easycleanerjunk.helps.PermissionHelp.checkStorePermission
import com.test.easy.easycleanerjunk.helps.PermissionHelp.requestStorePermission import com.test.easy.easycleanerjunk.helps.PermissionHelp.requestStorePermission
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.SPUtils import com.test.easy.easycleanerjunk.utils.SPUtils
import com.test.easy.easycleanerjunk.view.AFunOb import com.test.easy.easycleanerjunk.view.AFunOb
import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit import com.test.easy.easycleanerjunk.view.DialogViews.showDialogFunctionExit
...@@ -26,7 +26,6 @@ import kotlinx.coroutines.launch ...@@ -26,7 +26,6 @@ import kotlinx.coroutines.launch
import java.io.File import java.io.File
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Locale import java.util.Locale
import kotlin.collections.HashSet
class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() { class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() {
override val isLightMode = true override val isLightMode = true
...@@ -79,7 +78,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() { ...@@ -79,7 +78,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() {
binding.tvSize.text = sizeF[0] binding.tvSize.text = sizeF[0]
binding.tvUnit.text = sizeF[1] binding.tvUnit.text = sizeF[1]
if (list.sumOf { it.screenPhotoBean.size } > 6 || mustShowNativeAd) { if (list.sumOf { it.screenPhotoBean.size } > 6 || mustShowNativeAd) {
AdmobUtils.showNativeAd(this@ScreenShotActivity, binding.flAd) MaxAdUtils.showNativeAd(this@ScreenShotActivity, binding.flAd)
} }
} }
} }
...@@ -90,7 +89,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() { ...@@ -90,7 +89,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() {
} }
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
showDialogFunctionExit(AFunOb.SCREENSHOT_CLEANER) { showDialogFunctionExit(AFunOb.SCREENSHOT_CLEANER) {
AdmobUtils.showInterstitialAd(this@ScreenShotActivity) { MaxAdUtils.showInterstitialAd(this@ScreenShotActivity) {
finishToMain() finishToMain()
} }
} }
...@@ -110,7 +109,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() { ...@@ -110,7 +109,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() {
doDelete() doDelete()
} else { } else {
showFileDeleteDialog { showFileDeleteDialog {
AdmobUtils.showInterstitialAd(this) { MaxAdUtils.showInterstitialAd(this) {
doDelete() doDelete()
} }
} }
......
...@@ -2,24 +2,13 @@ package com.test.easy.easycleanerjunk.activity.screenshot ...@@ -2,24 +2,13 @@ package com.test.easy.easycleanerjunk.activity.screenshot
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.os.Bundle
import android.os.Handler
import android.provider.MediaStore.Audio
import android.view.View import android.view.View
import android.widget.Toast import android.widget.Toast
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.databinding.ActivityScreenShotAnimationBinding import com.test.easy.easycleanerjunk.databinding.ActivityScreenShotAnimationBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.PermissionHelp.checkStorePermission import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.helps.PermissionHelp.requestStorePermission
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import com.test.easy.easycleanerjunk.view.DialogViews.showGerPermission
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
...@@ -61,7 +50,7 @@ class ScreenShotAnimationActivity : BaseActivity<ActivityScreenShotAnimationBind ...@@ -61,7 +50,7 @@ class ScreenShotAnimationActivity : BaseActivity<ActivityScreenShotAnimationBind
binding.lottieCompleted.playAnimation() binding.lottieCompleted.playAnimation()
binding.tv.text = "Completed!" binding.tv.text = "Completed!"
delay(1000) delay(1000)
AdmobUtils.showInterstitialAd(this@ScreenShotAnimationActivity) { MaxAdUtils.showInterstitialAd(this@ScreenShotAnimationActivity) {
startActivity(Intent(this@ScreenShotAnimationActivity, ScreenShotActivity::class.java)) startActivity(Intent(this@ScreenShotAnimationActivity, ScreenShotActivity::class.java))
finish() finish()
} }
......
...@@ -20,7 +20,7 @@ import com.test.easy.easycleanerjunk.helps.BaseApplication ...@@ -20,7 +20,7 @@ import com.test.easy.easycleanerjunk.helps.BaseApplication
import com.test.easy.easycleanerjunk.helps.ConfigHelper.mustShowNativeAd import com.test.easy.easycleanerjunk.helps.ConfigHelper.mustShowNativeAd
import com.test.easy.easycleanerjunk.helps.FileHelps import com.test.easy.easycleanerjunk.helps.FileHelps
import com.test.easy.easycleanerjunk.helps.MediaStoreUtils import com.test.easy.easycleanerjunk.helps.MediaStoreUtils
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.utils.NewFileUtils import com.test.easy.easycleanerjunk.utils.NewFileUtils
import com.test.easy.easycleanerjunk.utils.SPUtils import com.test.easy.easycleanerjunk.utils.SPUtils
...@@ -52,7 +52,7 @@ class RepeatPhotoActivity : BaseActivity<ActivityLayoutRepeatPhotoBinding>() { ...@@ -52,7 +52,7 @@ class RepeatPhotoActivity : BaseActivity<ActivityLayoutRepeatPhotoBinding>() {
onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) { onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() { override fun handleOnBackPressed() {
showDialogFunctionExit(AFunOb.SIMILAR_PHOTOS) { showDialogFunctionExit(AFunOb.SIMILAR_PHOTOS) {
AdmobUtils.showInterstitialAd(this@RepeatPhotoActivity) { MaxAdUtils.showInterstitialAd(this@RepeatPhotoActivity) {
finishToMain() finishToMain()
} }
} }
...@@ -79,7 +79,7 @@ class RepeatPhotoActivity : BaseActivity<ActivityLayoutRepeatPhotoBinding>() { ...@@ -79,7 +79,7 @@ class RepeatPhotoActivity : BaseActivity<ActivityLayoutRepeatPhotoBinding>() {
if (s == 0) { if (s == 0) {
doDeleteFile() doDeleteFile()
} else { } else {
AdmobUtils.showInterstitialAd(this) { MaxAdUtils.showInterstitialAd(this) {
doDeleteFile() doDeleteFile()
} }
} }
...@@ -120,7 +120,7 @@ class RepeatPhotoActivity : BaseActivity<ActivityLayoutRepeatPhotoBinding>() { ...@@ -120,7 +120,7 @@ class RepeatPhotoActivity : BaseActivity<ActivityLayoutRepeatPhotoBinding>() {
binding.idRlList.adapter = mAdapter binding.idRlList.adapter = mAdapter
if (fileList.size > 6 || mustShowNativeAd) { if (fileList.size > 6 || mustShowNativeAd) {
AdmobUtils.showNativeAd(this, binding.flAd) MaxAdUtils.showNativeAd(this, binding.flAd)
} }
} }
} }
......
...@@ -2,19 +2,12 @@ package com.test.easy.easycleanerjunk.activity.similarphotos ...@@ -2,19 +2,12 @@ package com.test.easy.easycleanerjunk.activity.similarphotos
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.os.Bundle
import android.view.View import android.view.View
import android.widget.Toast import android.widget.Toast
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.databinding.ActivityRepeatPhotoAnimationBinding import com.test.easy.easycleanerjunk.databinding.ActivityRepeatPhotoAnimationBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
......
...@@ -14,7 +14,7 @@ import com.test.easy.easycleanerjunk.fcm.NotificationUtil ...@@ -14,7 +14,7 @@ import com.test.easy.easycleanerjunk.fcm.NotificationUtil
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ConfigHelper import com.test.easy.easycleanerjunk.helps.ConfigHelper
import com.test.easy.easycleanerjunk.helps.EventUtils import com.test.easy.easycleanerjunk.helps.EventUtils
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.service.PermanentNotificationService.Companion.startNotification import com.test.easy.easycleanerjunk.service.PermanentNotificationService.Companion.startNotification
import com.test.easy.easycleanerjunk.utils.BarUtils import com.test.easy.easycleanerjunk.utils.BarUtils
...@@ -83,21 +83,21 @@ class NewSplashActivity : BaseActivity<ActivityLayoutSplashBinding>(), ...@@ -83,21 +83,21 @@ class NewSplashActivity : BaseActivity<ActivityLayoutSplashBinding>(),
} }
private fun loadAd() { private fun loadAd() {
AdmobUtils.loadAppOpenAd { MaxAdUtils.loadAppOpenAd {
if (isFinishing || isDestroyed) { if (isFinishing || isDestroyed) {
return@loadAppOpenAd return@loadAppOpenAd
} else { } else {
if (!isPause) { if (!isPause) {
mProgressManager?.pauseProgress() mProgressManager?.pauseProgress()
runOnUiThread { runOnUiThread {
AdmobUtils.showAppOpenAd(this@NewSplashActivity) { MaxAdUtils.showAppOpenAd(this@NewSplashActivity) {
mProgressManager?.maxProgress() mProgressManager?.maxProgress()
} }
} }
} }
} }
} }
AdmobUtils.loadInterstitialAd(this) MaxAdUtils.loadInterstitialAd(this)
} }
override fun onNewIntent(intent: Intent) { override fun onNewIntent(intent: Intent) {
......
...@@ -24,9 +24,9 @@ class ProgressManager { ...@@ -24,9 +24,9 @@ class ProgressManager {
initView() initView()
} }
private var loadTime: Int = 15 private var loadTime: Int = 20
private fun initView() { private fun initView() {
loadTime = SPUtils.getInstance().getInt("loading_page_time", 15) loadTime = SPUtils.getInstance().getInt("loading_page_time", 20)
binding.pb.max = loadTime binding.pb.max = loadTime
binding.pb.progress = 0 binding.pb.progress = 0
......
...@@ -3,7 +3,6 @@ package com.test.easy.easycleanerjunk.activity.whatsapp ...@@ -3,7 +3,6 @@ package com.test.easy.easycleanerjunk.activity.whatsapp
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.os.Environment import android.os.Environment
import android.view.View
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.google.gson.Gson import com.google.gson.Gson
...@@ -18,7 +17,7 @@ import com.test.easy.easycleanerjunk.helps.KotlinExt.toFormatSize ...@@ -18,7 +17,7 @@ import com.test.easy.easycleanerjunk.helps.KotlinExt.toFormatSize
import com.test.easy.easycleanerjunk.helps.LogEx import com.test.easy.easycleanerjunk.helps.LogEx
import com.test.easy.easycleanerjunk.helps.PermissionHelp.checkStorePermission import com.test.easy.easycleanerjunk.helps.PermissionHelp.checkStorePermission
import com.test.easy.easycleanerjunk.helps.PermissionHelp.requestStorePermission import com.test.easy.easycleanerjunk.helps.PermissionHelp.requestStorePermission
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.utils.FileHexEx.isImage import com.test.easy.easycleanerjunk.utils.FileHexEx.isImage
import com.test.easy.easycleanerjunk.utils.FileHexEx.isVideo import com.test.easy.easycleanerjunk.utils.FileHexEx.isVideo
...@@ -28,7 +27,6 @@ import com.test.easy.easycleanerjunk.view.DialogViews.showGerPermission ...@@ -28,7 +27,6 @@ import com.test.easy.easycleanerjunk.view.DialogViews.showGerPermission
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.io.File import java.io.File
import kotlin.random.Random
class WhatsAppCleanerActivity : BaseActivity<ActivityWhatsAppCleanerBinding>() { class WhatsAppCleanerActivity : BaseActivity<ActivityWhatsAppCleanerBinding>() {
...@@ -79,7 +77,7 @@ class WhatsAppCleanerActivity : BaseActivity<ActivityWhatsAppCleanerBinding>() { ...@@ -79,7 +77,7 @@ class WhatsAppCleanerActivity : BaseActivity<ActivityWhatsAppCleanerBinding>() {
} }
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
showDialogFunctionExit(AFunOb.WHATSAPP_CLEANER) { showDialogFunctionExit(AFunOb.WHATSAPP_CLEANER) {
AdmobUtils.showInterstitialAd(this@WhatsAppCleanerActivity) { MaxAdUtils.showInterstitialAd(this@WhatsAppCleanerActivity) {
finishToMain() finishToMain()
} }
} }
......
...@@ -2,25 +2,19 @@ package com.test.easy.easycleanerjunk.activity.whatsapp ...@@ -2,25 +2,19 @@ package com.test.easy.easycleanerjunk.activity.whatsapp
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.os.Bundle
import android.view.View import android.view.View
import android.widget.Toast import android.widget.Toast
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.databinding.ActivityWhatsAppCleanerAnimationBinding import com.test.easy.easycleanerjunk.databinding.ActivityWhatsAppCleanerAnimationBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlin.random.Random import kotlin.random.Random
class WhatsAppCleanerAnimationActivity : BaseActivity<ActivityWhatsAppCleanerAnimationBinding>() { class WhatsAppCleanerAnimationActivity : BaseActivity<ActivityWhatsAppCleanerAnimationBinding>() {
override val isLightMode = true
override val binding: ActivityWhatsAppCleanerAnimationBinding by lazy { override val binding: ActivityWhatsAppCleanerAnimationBinding by lazy {
ActivityWhatsAppCleanerAnimationBinding.inflate(layoutInflater) ActivityWhatsAppCleanerAnimationBinding.inflate(layoutInflater)
} }
...@@ -48,7 +42,7 @@ class WhatsAppCleanerAnimationActivity : BaseActivity<ActivityWhatsAppCleanerAni ...@@ -48,7 +42,7 @@ class WhatsAppCleanerAnimationActivity : BaseActivity<ActivityWhatsAppCleanerAni
binding.lottieCompleted.playAnimation() binding.lottieCompleted.playAnimation()
binding.tv.text="Completed!" binding.tv.text="Completed!"
delay(1000) delay(1000)
AdmobUtils.showInterstitialAd(this@WhatsAppCleanerAnimationActivity) { MaxAdUtils.showInterstitialAd(this@WhatsAppCleanerAnimationActivity) {
startActivity(Intent(this@WhatsAppCleanerAnimationActivity, WhatsAppCleanerActivity::class.java)) startActivity(Intent(this@WhatsAppCleanerAnimationActivity, WhatsAppCleanerActivity::class.java))
finish() finish()
} }
......
...@@ -12,7 +12,7 @@ import com.test.easy.easycleanerjunk.bean.ImageDataBean ...@@ -12,7 +12,7 @@ import com.test.easy.easycleanerjunk.bean.ImageDataBean
import com.test.easy.easycleanerjunk.databinding.ActivityWhatsAppMessageCleanBinding import com.test.easy.easycleanerjunk.databinding.ActivityWhatsAppMessageCleanBinding
import com.test.easy.easycleanerjunk.helps.BaseActivity import com.test.easy.easycleanerjunk.helps.BaseActivity
import com.test.easy.easycleanerjunk.helps.KotlinExt.toFormatSize import com.test.easy.easycleanerjunk.helps.KotlinExt.toFormatSize
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.BarUtils import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.view.AFunOb.WHATSAPP_CLEANER import com.test.easy.easycleanerjunk.view.AFunOb.WHATSAPP_CLEANER
import com.test.easy.easycleanerjunk.view.FileDeleteDialog.showFileDeleteDialog import com.test.easy.easycleanerjunk.view.FileDeleteDialog.showFileDeleteDialog
...@@ -68,7 +68,7 @@ class WhatsAppMessageCleanActivity : BaseActivity<ActivityWhatsAppMessageCleanBi ...@@ -68,7 +68,7 @@ class WhatsAppMessageCleanActivity : BaseActivity<ActivityWhatsAppMessageCleanBi
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
} }
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
AdmobUtils.showInterstitialAd(this@WhatsAppMessageCleanActivity, isShowInterVal = false) { MaxAdUtils.showInterstitialAd(this@WhatsAppMessageCleanActivity, isShowInterVal = false) {
finishToMain() finishToMain()
} }
} }
...@@ -84,7 +84,7 @@ class WhatsAppMessageCleanActivity : BaseActivity<ActivityWhatsAppMessageCleanBi ...@@ -84,7 +84,7 @@ class WhatsAppMessageCleanActivity : BaseActivity<ActivityWhatsAppMessageCleanBi
binding.tvClean.setOnClickListener { binding.tvClean.setOnClickListener {
showFileDeleteDialog { showFileDeleteDialog {
AdmobUtils.showInterstitialAd(this) { MaxAdUtils.showInterstitialAd(this) {
val list = adapter.getSelectData() val list = adapter.getSelectData()
runCatching { runCatching {
list.forEach { File(it).delete() } list.forEach { File(it).delete() }
......
...@@ -9,7 +9,7 @@ import com.test.easy.easycleanerjunk.R ...@@ -9,7 +9,7 @@ import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.databinding.ItemAdBinding import com.test.easy.easycleanerjunk.databinding.ItemAdBinding
import com.test.easy.easycleanerjunk.databinding.ItemToolGrid1Binding import com.test.easy.easycleanerjunk.databinding.ItemToolGrid1Binding
import com.test.easy.easycleanerjunk.databinding.ItemToolsGrid1Binding import com.test.easy.easycleanerjunk.databinding.ItemToolsGrid1Binding
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.view.AFunOb.APP_MANAGER import com.test.easy.easycleanerjunk.view.AFunOb.APP_MANAGER
import com.test.easy.easycleanerjunk.view.AFunOb.BATTERY_INFO import com.test.easy.easycleanerjunk.view.AFunOb.BATTERY_INFO
import com.test.easy.easycleanerjunk.view.AFunOb.JUNK_CLEANER import com.test.easy.easycleanerjunk.view.AFunOb.JUNK_CLEANER
...@@ -68,8 +68,8 @@ class ToolsAdapter( ...@@ -68,8 +68,8 @@ class ToolsAdapter(
if (data.isAd) { if (data.isAd) {
val binding = ItemAdBinding.bind(holder.itemView) val binding = ItemAdBinding.bind(holder.itemView)
AdmobUtils.loadNativeAd() MaxAdUtils.loadNativeAd()
AdmobUtils.showNativeAd(context, binding.flAd) MaxAdUtils.showNativeAd(context, binding.flAd)
} else { } else {
val binding = ItemToolsGrid1Binding.bind(holder.itemView) val binding = ItemToolsGrid1Binding.bind(holder.itemView)
......
...@@ -9,7 +9,7 @@ import com.google.firebase.messaging.RemoteMessage; ...@@ -9,7 +9,7 @@ import com.google.firebase.messaging.RemoteMessage;
import com.test.easy.easycleanerjunk.MyApplication; import com.test.easy.easycleanerjunk.MyApplication;
import com.test.easy.easycleanerjunk.helps.EventUtils; import com.test.easy.easycleanerjunk.helps.EventUtils;
import com.test.easy.easycleanerjunk.helps.ads.AdDisplayUtils; import com.test.easy.easycleanerjunk.helps.ads.AdDisplayUtils;
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils; import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils;
import com.test.easy.easycleanerjunk.utils.SPUtils; import com.test.easy.easycleanerjunk.utils.SPUtils;
public class FcmService extends FirebaseMessagingService { public class FcmService extends FirebaseMessagingService {
...@@ -48,7 +48,7 @@ public class FcmService extends FirebaseMessagingService { ...@@ -48,7 +48,7 @@ public class FcmService extends FirebaseMessagingService {
} }
} }
AdmobUtils.INSTANCE.setAdDisplayInterval(adInterval); MaxAdUtils.INSTANCE.setAdDisplayInterval(adInterval);
AdDisplayUtils.getInstance().setMaxAdDisplayCount(adShowCount); AdDisplayUtils.getInstance().setMaxAdDisplayCount(adShowCount);
AdDisplayUtils.getInstance().setMaxAdClickCount(adClickCount); AdDisplayUtils.getInstance().setMaxAdClickCount(adClickCount);
......
...@@ -4,8 +4,8 @@ import android.util.Log ...@@ -4,8 +4,8 @@ import android.util.Log
import com.google.gson.Gson import com.google.gson.Gson
import com.test.easy.easycleanerjunk.bean.ConfigBean import com.test.easy.easycleanerjunk.bean.ConfigBean
import com.test.easy.easycleanerjunk.helps.ads.AdDisplayUtils import com.test.easy.easycleanerjunk.helps.ads.AdDisplayUtils
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils.adDisplayInterval import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils.adDisplayInterval
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils.maxMultiClick import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils.maxMultiClick
import com.test.easy.easycleanerjunk.utils.SPUtils import com.test.easy.easycleanerjunk.utils.SPUtils
import java.io.BufferedReader import java.io.BufferedReader
import java.io.InputStreamReader import java.io.InputStreamReader
...@@ -22,6 +22,7 @@ object ComUtils { ...@@ -22,6 +22,7 @@ object ComUtils {
}spk" }spk"
) )
url.append("?pkg=$pkg") url.append("?pkg=$pkg")
url.append("&source=${SPUtils.getInstance().getString("install_source","origin")}")
url.toString() url.toString()
} }
......
...@@ -20,7 +20,10 @@ object ConfigHelper { ...@@ -20,7 +20,10 @@ object ConfigHelper {
const val interAdmobId = "ca-app-pub-3940256099942544/1033173712" const val interAdmobId = "ca-app-pub-3940256099942544/1033173712"
const val nativeAdmobId = "ca-app-pub-3940256099942544/2247696110" const val nativeAdmobId = "ca-app-pub-3940256099942544/2247696110"
const val openAdmobId = "/6499/example/app-open" const val openAdmobId = "/6499/example/app-open"
//max广告id
const val interMaxId = "636e57ec33ac5698"
const val nativeMaxId = "63d874bafb4c4841"
const val openMaxId = "1fce760852e47224"
// 正式包名 // 正式包名
const val packageName = "com.kk.junkcleaner.easy.zxkk" const val packageName = "com.kk.junkcleaner.easy.zxkk"
......
...@@ -2,6 +2,8 @@ package com.test.easy.easycleanerjunk.helps ...@@ -2,6 +2,8 @@ package com.test.easy.easycleanerjunk.helps
import com.android.installreferrer.api.InstallReferrerClient import com.android.installreferrer.api.InstallReferrerClient
import com.android.installreferrer.api.InstallReferrerStateListener import com.android.installreferrer.api.InstallReferrerStateListener
import com.test.easy.easycleanerjunk.fcm.MyTimerManager
import com.test.easy.easycleanerjunk.utils.SPUtils
import org.json.JSONObject import org.json.JSONObject
object InstallHelps { object InstallHelps {
...@@ -20,6 +22,22 @@ object InstallHelps { ...@@ -20,6 +22,22 @@ object InstallHelps {
obj.put("appInstallTime", response.installBeginTimestampSeconds) obj.put("appInstallTime", response.installBeginTimestampSeconds)
obj.put("instantExperienceLaunched", installInfo.toString()) obj.put("instantExperienceLaunched", installInfo.toString())
EventUtils.event("install_referrer", ext = obj, isSingleEvent = true) EventUtils.event("install_referrer", ext = obj, isSingleEvent = true)
if (listOf("gclid", "facebook", "instagram").all { !installInfo.contains(it, true) }) {
//自然用户
SPUtils.getInstance().put("install_source", "origin")
} else {
//渠道用户
SPUtils.getInstance().put("install_source", "channel")
}
ComUtils.requestCfg {
val timerS = SPUtils.getInstance().getInt("timerS", 1)
if (timerS == 1) {
val timerDelay = SPUtils.getInstance().getInt("timerDelay", 1)
val timerInterval = SPUtils.getInstance().getInt("timerInterval", 5)
MyTimerManager.getInstance()
.startTimer((timerDelay * 60 * 1000).toLong(), (timerInterval * 60 * 1000).toLong())
}
}
} }
else -> { else -> {
......
package com.test.easy.easycleanerjunk.helps.ads; package com.test.easy.easycleanerjunk.helps.ads;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.util.Log;
import com.test.easy.easycleanerjunk.MyApplication; import com.test.easy.easycleanerjunk.helps.BaseApplication;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.Calendar;
...@@ -12,26 +13,42 @@ import java.util.Locale; ...@@ -12,26 +13,42 @@ import java.util.Locale;
public class AdDisplayUtils { public class AdDisplayUtils {
private static final int DEFAULT_MAX_AD_DISPLAY_COUNT = 45; // 总广告展示次数限制默认值 private static final int DEFAULT_MAX_AD_DISPLAY_COUNT = 45; // 总广告展示次数限制默认值
private static final int DEFAULT_MAX_AD_CLICK_COUNT = 10; // 单个广告点击次数限制默认值 private static final int DEFAULT_MAX_AD_CLICK_COUNT = 10; // 单个广告点击次数限制默认值
private static final int DEFAULT_MAX_AD_REQUEST_FAIL_COUNT = 20; // 单个广告点击次数限制默认值
private static final String AD_PREFS_NAME = "ad_prefs"; // SharedPreferences 名称 private static final String AD_PREFS_NAME = "ad_prefs"; // SharedPreferences 名称
private static final String AD_DISPLAY_COUNT_KEY = "ad_display_count"; // 广告展示次数的键 private static final String AD_DISPLAY_COUNT_KEY = "ad_display_count"; // 广告展示次数的键
private static final String AD_CLICK_COUNT_KEY = "ad_click_count"; // 广告点击次数的键 private static final String AD_CLICK_COUNT_KEY = "ad_click_count"; // 广告点击次数的键
private static final String MAX_AD_DISPLAY_COUNT_KEY = "max_ad_display_count"; // 总广告展示次数限制的键 private static final String MAX_AD_DISPLAY_COUNT_KEY = "max_ad_display_count"; // 总广告展示次数限制的键
private static final String MAX_AD_CLICK_COUNT_KEY = "max_ad_click_count"; // 单个广告点击次数限制的键 private static final String MAX_AD_CLICK_COUNT_KEY = "max_ad_click_count"; // 单个广告点击次数限制的键
private static final String MAX_AD_REQUEST_FAIL_COUNT_KEY = "max_ad_request_fail_count"; // 单个广告点击次数限制的键
private static final String AD_REQUEST_FAIL_COUNT_KEY = "ad_request_fail_count"; // 单个广告点击次数限制的键
private static AdDisplayUtils instance; // 单例对象 private static AdDisplayUtils instance; // 单例对象
private int adDisplayCount = 0; // 当前广告展示次数 private int adDisplayCount = 0; // 当前广告展示次数
private int adClickCount = 0; // 当前广告点击次数 private int adClickCount = 0; // 当前广告点击次数
private int maxAdDisplayCount; // 总广告展示次数限制 private int maxAdDisplayCount; // 总广告展示次数限制
private int maxAdClickCount; // 单个广告点击次数限制 private int maxAdClickCount; // 单个广告点击次数限制
private int maxAdRequestFailCount; // 请求失败总
private int adRequestFailCount = 0; // 请求失败当前
private String currentDate; // 当前日期 private String currentDate; // 当前日期
private static final int DEFAULT_MAX_AD_REQUEST_COUNT = 100; // 广告请求次数限制默认值
private static final String MAX_AD_REQUEST_COUNT_KEY = "max_ad_request_count"; // 广告请求次数限制的键
private static final String AD_REQUEST_COUNT_KEY = "ad_request_count";
private int adRequestCount = 0; // 当前广告请求次数
private int maxAdRequestCount = 0; // 当前广告请求次数
private AdDisplayUtils() { private AdDisplayUtils() {
currentDate = getCurrentDate(); currentDate = getCurrentDate();
SharedPreferences prefs = MyApplication.context.getSharedPreferences(AD_PREFS_NAME, 0); SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
maxAdDisplayCount = prefs.getInt(MAX_AD_DISPLAY_COUNT_KEY, DEFAULT_MAX_AD_DISPLAY_COUNT); maxAdDisplayCount = prefs.getInt(MAX_AD_DISPLAY_COUNT_KEY, DEFAULT_MAX_AD_DISPLAY_COUNT);
maxAdClickCount = prefs.getInt(MAX_AD_CLICK_COUNT_KEY, DEFAULT_MAX_AD_CLICK_COUNT); maxAdClickCount = prefs.getInt(MAX_AD_CLICK_COUNT_KEY, DEFAULT_MAX_AD_CLICK_COUNT);
maxAdRequestFailCount = prefs.getInt(MAX_AD_REQUEST_FAIL_COUNT_KEY, DEFAULT_MAX_AD_REQUEST_FAIL_COUNT);
adDisplayCount = prefs.getInt(getAdDisplayCountKey(), 0); adDisplayCount = prefs.getInt(getAdDisplayCountKey(), 0);
adClickCount = prefs.getInt(getAdClickCountKey(), 0); adClickCount = prefs.getInt(getAdClickCountKey(), 0);
adRequestFailCount = prefs.getInt(getAdRequestFailCountKey(), 0);
adRequestCount = prefs.getInt(getAdRequestCountKey(), 0);
maxAdRequestCount = prefs.getInt(MAX_AD_REQUEST_COUNT_KEY, DEFAULT_MAX_AD_REQUEST_COUNT);
} }
public static synchronized AdDisplayUtils getInstance() { public static synchronized AdDisplayUtils getInstance() {
...@@ -45,11 +62,16 @@ public class AdDisplayUtils { ...@@ -45,11 +62,16 @@ public class AdDisplayUtils {
return adDisplayCount < getMaxAdDisplayCount(); return adDisplayCount < getMaxAdDisplayCount();
} }
public boolean shouldIncrementRequestFailAd() {
return adRequestFailCount < getMaxAdRequestFailCount();
}
public boolean shouldIncrementClickCount() { public boolean shouldIncrementClickCount() {
return adClickCount < getMaxAdClickCount(); return adClickCount < getMaxAdClickCount();
} }
public boolean shouldShowAd() { public boolean shouldShowAd() {
return shouldDisplayAd() || shouldIncrementClickCount(); return shouldDisplayAd() && shouldIncrementClickCount() && shouldIncrementRequestFailAd()&&shouldSendAdRequest();
} }
public void incrementAdDisplayCount() { public void incrementAdDisplayCount() {
...@@ -69,6 +91,18 @@ public class AdDisplayUtils { ...@@ -69,6 +91,18 @@ public class AdDisplayUtils {
adClickCount++; adClickCount++;
saveAdClickCount(); saveAdClickCount();
} }
public void incrementAdRequestFailCount() {
if (!currentDate.equals(getCurrentDate())) {
currentDate = getCurrentDate();
adRequestFailCount = 0;
}
adRequestFailCount++;
saveAdRequestFailCount();
Log.d("glc","广告请求失败:"+adRequestFailCount);
}
public void setAdClickCount(int s) { public void setAdClickCount(int s) {
if (!currentDate.equals(getCurrentDate())) { if (!currentDate.equals(getCurrentDate())) {
currentDate = getCurrentDate(); currentDate = getCurrentDate();
...@@ -93,14 +127,14 @@ public class AdDisplayUtils { ...@@ -93,14 +127,14 @@ public class AdDisplayUtils {
} }
private void saveAdDisplayCount() { private void saveAdDisplayCount() {
SharedPreferences prefs = MyApplication.context.getSharedPreferences(AD_PREFS_NAME, 0); SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit(); SharedPreferences.Editor editor = prefs.edit();
editor.putInt(getAdDisplayCountKey(), adDisplayCount); editor.putInt(getAdDisplayCountKey(), adDisplayCount);
editor.apply(); editor.apply();
} }
private void saveAdClickCount() { private void saveAdClickCount() {
SharedPreferences prefs = MyApplication.context.getSharedPreferences(AD_PREFS_NAME, 0); SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit(); SharedPreferences.Editor editor = prefs.edit();
editor.putInt(getAdClickCountKey(), adClickCount); editor.putInt(getAdClickCountKey(), adClickCount);
editor.apply(); editor.apply();
...@@ -118,6 +152,9 @@ public class AdDisplayUtils { ...@@ -118,6 +152,9 @@ public class AdDisplayUtils {
public int getMaxAdClickCount() { public int getMaxAdClickCount() {
return maxAdClickCount; return maxAdClickCount;
} }
public int getMaxAdRequestCount() {
return maxAdRequestCount;
}
public void setMaxAdClickCount(int maxAdClickCount) { public void setMaxAdClickCount(int maxAdClickCount) {
this.maxAdClickCount = maxAdClickCount; this.maxAdClickCount = maxAdClickCount;
...@@ -125,16 +162,68 @@ public class AdDisplayUtils { ...@@ -125,16 +162,68 @@ public class AdDisplayUtils {
} }
private void saveMaxAdDisplayCount() { private void saveMaxAdDisplayCount() {
SharedPreferences prefs = MyApplication.context.getSharedPreferences(AD_PREFS_NAME, 0); SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit(); SharedPreferences.Editor editor = prefs.edit();
editor.putInt(MAX_AD_DISPLAY_COUNT_KEY, maxAdDisplayCount); editor.putInt(MAX_AD_DISPLAY_COUNT_KEY, maxAdDisplayCount);
editor.apply(); editor.apply();
} }
private void saveMaxAdClickCount() { private void saveMaxAdClickCount() {
SharedPreferences prefs = MyApplication.context.getSharedPreferences(AD_PREFS_NAME, 0); SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit(); SharedPreferences.Editor editor = prefs.edit();
editor.putInt(MAX_AD_CLICK_COUNT_KEY, maxAdClickCount); editor.putInt(MAX_AD_CLICK_COUNT_KEY, maxAdClickCount);
editor.apply(); editor.apply();
} }
public int getMaxAdRequestFailCount() {
return maxAdRequestFailCount;
}
public void setMaxAdRequestFailCount(int maxAdRequestFailCount) {
this.maxAdRequestFailCount = maxAdRequestFailCount;
saveMaxAdRequestFailCount();
}
private void saveMaxAdRequestFailCount() {
SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(MAX_AD_REQUEST_FAIL_COUNT_KEY, maxAdRequestFailCount);
editor.apply();
}
private void saveAdRequestFailCount() {
SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(getAdRequestFailCountKey(), adRequestFailCount);
editor.apply();
}
private String getAdRequestFailCountKey() {
return AD_REQUEST_FAIL_COUNT_KEY + "_" + currentDate;
}
public boolean shouldSendAdRequest() {
return adRequestCount < getMaxAdRequestCount();
}
public void incrementAdRequestCount() {
if (!currentDate.equals(getCurrentDate())) {
currentDate = getCurrentDate();
adRequestCount = 0;
}
adRequestCount++;
saveAdRequestCount();
}
private void saveAdRequestCount() {
SharedPreferences prefs = BaseApplication.context.getSharedPreferences(AD_PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(getAdRequestCountKey(), adRequestCount);
editor.apply();
}
private String getAdRequestCountKey() {
return AD_REQUEST_COUNT_KEY + "_" + currentDate;
}
} }
package com.test.easy.easycleanerjunk.helps.ads
import android.app.Activity
import android.app.Dialog
import android.os.Bundle
import android.util.Log
import android.view.ViewGroup
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxAdRevenueListener
import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxAppOpenAd
import com.applovin.mediation.ads.MaxInterstitialAd
import com.applovin.mediation.nativeAds.MaxNativeAdListener
import com.applovin.mediation.nativeAds.MaxNativeAdLoader
import com.applovin.mediation.nativeAds.MaxNativeAdView
import com.google.firebase.analytics.FirebaseAnalytics
import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.activity.photocompress.photo.CustomDialog
import com.test.easy.easycleanerjunk.helps.BaseApplication
import com.test.easy.easycleanerjunk.helps.ConfigHelper
import com.test.easy.easycleanerjunk.helps.EventUtils
import com.test.easy.easycleanerjunk.utils.ActivityManagerUtils
import org.json.JSONObject
import java.util.UUID
object MaxAdUtils {
private var openLoadTime = Long.MAX_VALUE
private var interLoadTime = Long.MAX_VALUE
private var nativeLoadTime = Long.MAX_VALUE
private var openAdUnit = "1fce760852e47224"
private var interAdUnit = "636e57ec33ac5698"
private var naviteAdUnit = "63d874bafb4c4841"
var mOpenAd: MaxAppOpenAd? = null
fun loadAppOpenAd(skip: Boolean = false, onLoad: (() -> Unit)? = null) {
if (mOpenAd != null || skip) {
onLoad?.invoke()
return
}
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
onLoad?.invoke()
return
}
openAdUnit = ConfigHelper.openMaxId
mOpenAd = MaxAppOpenAd(openAdUnit, BaseApplication.context)
if (isOpenAdLoaded() || skip) {
onLoad?.invoke()
return
}
val reqId = UUID.randomUUID().toString()
val obj = JSONObject()
obj.put("req_id", reqId)
obj.put("ad_type", "openAd")
EventUtils.event("ad_pull_start", ext = obj)
mOpenAd?.setListener(
object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) {
openLoadTime = System.currentTimeMillis()
onLoad?.invoke()
maxAdPullReport(p0, "openAd", reqId = reqId)
Log.e("MXL", "开屏onAdLoaded: ")
}
override fun onAdDisplayed(p0: MaxAd) {}
override fun onAdHidden(p0: MaxAd) {}
override fun onAdClicked(p0: MaxAd) {}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
onLoad?.invoke()
maxAdPullReport(null, "AppOpenAd", p1.message)
Log.e("MXL", "onAdLoadFailed: " + p1)
AdDisplayUtils.getInstance().incrementAdRequestFailCount()
}
override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {}
}
)
mOpenAd?.loadAd()
AdDisplayUtils.getInstance().incrementAdRequestCount()
}
fun isOpenAdLoaded() = mOpenAd?.isReady == true
fun showAppOpenAd(activity: Activity, skip: Boolean = false, onHidden: (() -> Unit)? = null) {
if (activity.isFinishing || activity.isDestroyed) {
return
}
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
onHidden?.invoke()
return
}
val obj = JSONObject()
obj.put("ad_unit", "openAd")
EventUtils.event("ad_prepare_show", ext = obj)
if (System.currentTimeMillis() - openLoadTime > 1000 * 60 * 60) {
mOpenAd = null
loadAppOpenAd()
onHidden?.invoke()
val obj = JSONObject()
obj.put("ad_unit", "openAd")
EventUtils.event("ad_expire", ext = obj)
return
}
mOpenAd?.setRevenueListener(EventOnPaidEventListener())
mOpenAd?.setListener(object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) {
}
override fun onAdDisplayed(p0: MaxAd) {
maxAdShowReport(p0, "openAd")
}
override fun onAdHidden(p0: MaxAd) {
onHidden?.invoke()
loadAppOpenAd()
}
override fun onAdClicked(p0: MaxAd) {
maxAdclickReport(p0, "openAd")
isMultiClick(p0)
}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
}
override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {
onHidden?.invoke()
loadAppOpenAd()
val obj = JSONObject()
obj.put("reason", p1.message)
obj.put("ad_unit", "openAd")
EventUtils.event("ad_show_error", ext = obj)
}
})
if (isOpenAdLoaded()) {
mOpenAd?.showAd("OpenAd")
} else {
onHidden?.invoke()
mOpenAd?.loadAd()
val obj = JSONObject()
obj.put("reason", "no_ad")
obj.put("ad_unit", "openAd")
EventUtils.event("ad_show_error", ext = obj)
}
}
private var interAd: MaxInterstitialAd? = null
private var retryAttempt = 0
fun isInterLoaded() = interAd?.isReady == true
fun loadInterstitialAd(activity: Activity, onLoad: (() -> Unit)? = null) {
if (isInterLoaded()) {
onLoad?.invoke()
return
}
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
onLoad?.invoke()
return
}
interAdUnit = ConfigHelper.interMaxId
var hasDone = false
activity.window.decorView.postDelayed(Runnable {
if (hasDone) {
return@Runnable
}
hasDone = true
onLoad?.invoke()
}, 15000)
val reqId = UUID.randomUUID().toString()
val obj = JSONObject()
obj.put("req_id", reqId)
obj.put("ad_type", "interAd")
obj.put("mediation", "applovin")
obj.put("from", activity.javaClass.simpleName)
EventUtils.event("ad_pull_start", ext = obj)
interAd = MaxInterstitialAd(interAdUnit, activity)
interAd?.setListener(object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) {
Log.e("MXL", "interAd:onAdLoaded: ")
maxAdPullReport(p0, "InterstitialAd")
retryAttempt = 0
onLoad?.invoke()
}
override fun onAdDisplayed(p0: MaxAd) {
}
override fun onAdHidden(p0: MaxAd) {
}
override fun onAdClicked(p0: MaxAd) {
}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
Log.e("MXL", "InteronAdLoadFailed: " + p1)
maxAdPullReport(null, "InterstitialAd", p1.message)
onLoad?.invoke()
// retryAttempt++
// Handler(Looper.getMainLooper()).postDelayed({
// retryAttempt++
// interAd?.loadAd()
// }, TimeUnit.SECONDS.toMillis(2.0.pow(6.coerceAtMost(retryAttempt)).toLong()))
}
override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {
}
})
interAd?.loadAd()
AdDisplayUtils.getInstance().incrementAdRequestCount()
}
private fun isAdExpired(): Boolean {
return System.currentTimeMillis() - interLoadTime > 1000 * 60 * 60
}
var adDisplayInterval: Int = 10
var adLastDisplayTime: Long = 0
fun showInterstitialAd(
activity: Activity,
isLoadAdNow: Boolean = false,
isShowInterVal: Boolean = true,
onHidden: (() -> Unit)? = null
) {
if (activity.isFinishing || activity.isDestroyed) {
return
}
val obj = JSONObject()
obj.put("ad_unit", "interAd")
EventUtils.event("ad_prepare_show", ext = obj)
if (isAdExpired()) {
val obj = JSONObject()
obj.put("ad_unit", "interAd")
EventUtils.event("ad_expire", ext = obj)
interAd = null
loadInterstitialAd(activity)
onHidden?.invoke()
return
}
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
onHidden?.invoke()
return
}
Log.e("MXL", "showInterstitialAd: ", )
if (interAd != null) {
interAd?.setRevenueListener(EventOnPaidEventListener())
showIntervalDialogAndShowAd(activity, isLoadAdNow, isShowInterVal, onHidden, 0)
} else {
showAdDialogAndLoadInterstitial(activity, isLoadAdNow, isShowInterVal, onHidden)
}
}
private var customDialog: CustomDialog? = null
private fun showIntervalDialogAndShowAd(
activity: Activity,
isLoadAdNow: Boolean,
isShowInterVal: Boolean,
onHidden: (() -> Unit)?,
interval: Int
) {
// if (customDialog != null && customDialog?.isShowing == true) {
// return // 如果对话框已经显示,则不再显示
// }
//
// customDialog = CustomDialog(activity, R.layout.dialog_ad_loading)
// customDialog?.setCountdownText(R.id.dialog_ad_loading_text)
// val countdownTimer = object : CountDownTimer((interval * 1000).toLong(), 1000) {
// override fun onTick(millisUntilFinished: Long) {
// val seconds = (millisUntilFinished / 1000).toInt()
// customDialog?.updateCountdownText("Advertising in preparation ($seconds" + "s)...")
// }
//
// override fun onFinish() {
displayInterstitialAd(activity, onHidden)
// if (!activity.isDestroyed && !activity.isFinishing) {
// customDialog?.dismiss()
// }
// customDialog = null
// }
// }
// countdownTimer.start()
// customDialog?.show()
}
private fun showCachedInterstitialAd(
activity: Activity,
isLoadAdNow: Boolean,
isShowInterVal: Boolean = true,
onHidden: (() -> Unit)?
) {
if (interAd != null) {
displayInterstitialAd(activity, onHidden)
} else {
showAdDialogAndLoadInterstitial(activity, isLoadAdNow, isShowInterVal, onHidden)
}
}
private fun isTimeElapsed(): Int {
val nowTime = System.currentTimeMillis() / 1000
return (adDisplayInterval - (nowTime - adLastDisplayTime).toInt())
}
private fun showAdDialogAndLoadInterstitial(
activity: Activity,
isLoadAdNow: Boolean,
isShowInterVal: Boolean,
onHidden: (() -> Unit)?
) {
var mDialog: Dialog? = null
if (!activity.isFinishing && !activity.isDestroyed) {
mDialog = CustomDialog(activity, R.layout.dialog_ad_loading)
// 设置对话框的样式和内容
mDialog?.show()
}
loadInterstitialAd(activity) {
mDialog?.dismiss()
if (!isLoadAdNow) {
showInterstitialAd(activity, true, isShowInterVal) {
onHidden?.invoke()
}
}
}
if (isLoadAdNow) {
mDialog?.dismiss()
onHidden?.invoke()
}
}
private fun displayInterstitialAd(activity: Activity, onHidden: (() -> Unit)? = null) {
val thisInterAd = interAd
interAd = null
thisInterAd?.setListener(object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) {
}
override fun onAdDisplayed(p0: MaxAd) {
maxAdShowReport(p0, "interAd", activity)
AdDisplayUtils.getInstance().incrementAdDisplayCount()
adLastDisplayTime = System.currentTimeMillis() / 1000
}
override fun onAdHidden(p0: MaxAd) {
interAd = null
onHidden?.invoke()
loadInterstitialAd(activity)
}
override fun onAdClicked(p0: MaxAd) {
maxAdclickReport(p0, "interAd")
AdDisplayUtils.getInstance().incrementAdClickCount()
isMultiClick(thisInterAd)
}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
}
override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {
interAd = null
onHidden?.invoke()
loadInterstitialAd(activity)
val obj = JSONObject()
obj.put("reason", p1.message)
obj.put("ad_unit", "interAd")
EventUtils.event("ad_show_error", ext = obj)
}
})
if (thisInterAd?.isReady == true) {
thisInterAd?.showAd()
} else {
onHidden?.invoke()
interAd?.loadAd()
}
}
var nativeAdLoader: MaxNativeAdLoader? = null
private var currentNativeAd: MaxAd? = null//当前展示的NativeAd
private var showedNativeAd: MaxAd? = null//已经展示过的NativeAd
private var nativeData: Pair<MaxNativeAdView?, MaxAd?>? = null
private var loadingListener: (() -> Unit)? = null
private var isLoading = false
fun loadNativeAd() {
if (currentNativeAd != null) {
return
}
if (nativeData != null) {
return
}
if (isLoading) {
return
}
isLoading = true
naviteAdUnit = ConfigHelper.nativeMaxId
nativeAdLoader = MaxNativeAdLoader(naviteAdUnit, BaseApplication.context)
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
return
}
// val reqId = UUID.randomUUID().toString()
// val obj = JSONObject()
// obj.put("req_id", reqId)
// obj.put("ad_type", "nativeAd")
nativeAdLoader?.setNativeAdListener(object : MaxNativeAdListener() {
override fun onNativeAdLoaded(maxNativeAdView: MaxNativeAdView?, maxAd: MaxAd) {
//Log.e("MXL", "onNativeAdLoaded: " )
nativeData = Pair(maxNativeAdView, maxAd)
currentNativeAd = nativeData?.second
maxAdPullReport(maxAd, "NativeAd")
isLoading = false
loadingListener?.invoke()
}
override fun onNativeAdLoadFailed(p0: String, p1: MaxError) {
maxAdPullReport(null, "NativeAd", p1.message)
isLoading = false
}
})
nativeAdLoader?.loadAd()
}
fun showNativeAd(activity: Activity?, parent: ViewGroup) {
// val obj = JSONObject()
// obj.put("ad_unit", "NativeAd")
// EventUtils.event("ad_prepare_show", ext = obj)
if (!AdDisplayUtils.getInstance().shouldShowAd()) {
return
}
loadingListener = {
//赋值给已经展示过的
showedNativeAd = currentNativeAd
//nativeAd已展示了赋空
currentNativeAd = null
nativeData = null
loadingListener = null
loadNativeAd()
}
if (currentNativeAd == null) {
loadNativeAd()
// val obj = JSONObject()
// obj.put("reason", "no_ad")
// obj.put("ad_unit", "nativeAd")
// EventUtils.event("ad_show_error", ext = obj)
} else {
loadingListener?.invoke()
}
}
private var lastAd: Any? = null
var maxMultiClick = 4
private var multiClick = 0
private fun isMultiClick(currentAd: Any?) {
if (currentAd == null) {
return
}
if (lastAd == currentAd) {
multiClick++
if (multiClick >= maxMultiClick) {
AdDisplayUtils.getInstance()
.setAdClickCount(AdDisplayUtils.getInstance().maxAdClickCount)
ActivityManagerUtils.getInstance().finishAllActivity()
return
}
} else {
multiClick = 0
}
lastAd = currentAd
}
private fun maxAdPullReport(
ad: MaxAd?,
adUnit: String,
error: String? = null,
reqId: String? = null
) {
val obj = JSONObject()
obj.put("UnitId", ad?.adUnitId)
obj.put("ad_unit", adUnit)
obj.put(
"creativeId",
ad?.creativeId
)
obj.put("req_id", reqId)
obj.put("status", if (ad == null) "0" else "1")
obj.put("networkname", ad?.networkName)
obj.put("placement", ad?.placement)
obj.put("mediation", "applovin")
obj.put("networkplacement", ad?.networkPlacement)
obj.put("requestLatencyMillis", ad?.requestLatencyMillis)
obj.put("valueMicros", ad?.revenue?.times(1000000))
if (error == null) {
obj.put("status", "1")
} else {
obj.put("errMsg", error)
obj.put("status", "2")
}
EventUtils.event("ad_pull", ext = obj)
// Log.e("MXL", "maxAdPullReport: ", )
}
private fun maxAdShowReport(ad: MaxAd?, adUnit: String, activity: Activity? = null) {
val obj = JSONObject()
obj.put("UnitId", ad?.adUnitId)
obj.put("ad_unit", adUnit)
obj.put("creativeId", ad?.creativeId)
obj.put("networkname", ad?.networkName)
obj.put("placement", ad?.placement)
obj.put("mediation", "applovin")
obj.put("networkplacement", ad?.networkPlacement)
obj.put("requestLatencyMillis", ad?.requestLatencyMillis)
obj.put("valueMicros", ad?.revenue)
obj.put("from",activity)
EventUtils.event("ad_show", ext = obj)
}
private fun maxAdclickReport(ad: MaxAd?, adUnit: String) {
val obj = JSONObject()
obj.put("UnitId", ad?.adUnitId)
obj.put("ad_unit", adUnit)
obj.put(
"creativeId",
ad?.creativeId
)
obj.put("networkname", ad?.networkName)
obj.put("placement", ad?.placement)
obj.put("mediation", "applovin")
obj.put("networkplacement", ad?.networkPlacement)
obj.put("requestLatencyMillis", ad?.requestLatencyMillis)
obj.put("valueMicros", ad?.revenue)
EventUtils.event("ad_click", ext = obj)
}
private val taichiPref = BaseApplication.context.getSharedPreferences("TaichiTroasCache", 0)
private val taichiSharedPreferencesEditor = taichiPref.edit()
class EventOnPaidEventListener : MaxAdRevenueListener {
override fun onAdRevenuePaid(ad: MaxAd) {
val params = Bundle()
val currentImpressionRevenue: Double = ad.revenue // In USD
val mFirebaseAnalytics = FirebaseAnalytics.getInstance(BaseApplication.context)
params.putString(FirebaseAnalytics.Param.AD_PLATFORM, "appLovin")
params.putString(FirebaseAnalytics.Param.AD_SOURCE, ad.networkName)
params.putString(FirebaseAnalytics.Param.AD_FORMAT, ad.format.getDisplayName())
params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, ad.adUnitId)
params.putDouble(FirebaseAnalytics.Param.VALUE, currentImpressionRevenue)
params.putString(FirebaseAnalytics.Param.CURRENCY, "USD")
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, params)
mFirebaseAnalytics.logEvent("Ad_Impression_Revenue", params)
val previousTaichiTroasCache = taichiPref.getFloat("TaichiTroasCache", 0f)
val currentTaichiTroasCache = previousTaichiTroasCache + currentImpressionRevenue
if (currentTaichiTroasCache >= 0.01) {
val roasbundle = Bundle()
roasbundle.putDouble(FirebaseAnalytics.Param.VALUE, currentTaichiTroasCache)
roasbundle.putString(FirebaseAnalytics.Param.CURRENCY, "USD")///(Required)tROAS事件必须
mFirebaseAnalytics.logEvent("Total_Ads_Revenue_001", roasbundle) // 给Taichi用
taichiSharedPreferencesEditor.putFloat("TaichiTroasCache", 0f)//重新清零,开始计算
} else {
taichiSharedPreferencesEditor.putFloat(
"TaichiTroasCache",
currentTaichiTroasCache.toFloat()
)
taichiSharedPreferencesEditor.commit()
}
// val obj = JSONObject()
// val revenue = ad.revenue
// val countryCode =
// AppLovinSdk.getInstance(BaseApplication.context).configuration.countryCode
// val networkName = ad.networkName
// val adUnitId = ad.adUnitId
// val adFormat = ad.format
// val placement = ad.placement
// val networkPlacement = ad.networkPlacement
// obj.put("valueMicros", revenue)
// obj.put("currencyCode", countryCode)
// obj.put("adUnitId", adUnitId)
// obj.put("networkName", networkName)
// obj.put("adFormat", adFormat)
// obj.put("placement", placement)
// obj.put("networkPlacement", networkPlacement)
// EventUtils.event("ad_price", ext = obj)
}
}
}
\ No newline at end of file
...@@ -13,11 +13,9 @@ import android.widget.ImageView ...@@ -13,11 +13,9 @@ import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import com.test.easy.easycleanerjunk.R import com.test.easy.easycleanerjunk.R
import com.test.easy.easycleanerjunk.activity.photocompress.photo.CustomDialog import com.test.easy.easycleanerjunk.activity.photocompress.photo.CustomDialog
import com.test.easy.easycleanerjunk.databinding.CustomDialogBinding
import com.test.easy.easycleanerjunk.databinding.DialogFunctionExitBinding
import com.test.easy.easycleanerjunk.databinding.DialogLayoutFlowTypeBinding import com.test.easy.easycleanerjunk.databinding.DialogLayoutFlowTypeBinding
import com.test.easy.easycleanerjunk.databinding.DialogPermissonOpenBinding import com.test.easy.easycleanerjunk.databinding.DialogPermissonOpenBinding
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.SPUtils import com.test.easy.easycleanerjunk.utils.SPUtils
import com.test.easy.easycleanerjunk.view.AFunOb.APP_MANAGER import com.test.easy.easycleanerjunk.view.AFunOb.APP_MANAGER
import com.test.easy.easycleanerjunk.view.AFunOb.BATTERY_INFO import com.test.easy.easycleanerjunk.view.AFunOb.BATTERY_INFO
...@@ -143,7 +141,7 @@ object DialogViews { ...@@ -143,7 +141,7 @@ object DialogViews {
if (adS == 1) { if (adS == 1) {
view.visibility = View.VISIBLE view.visibility = View.VISIBLE
AdmobUtils.showNativeAd(null, view) MaxAdUtils.showNativeAd(null, view)
} else { } else {
view.visibility = View.GONE view.visibility = View.GONE
} }
......
...@@ -10,7 +10,7 @@ import android.widget.PopupWindow ...@@ -10,7 +10,7 @@ import android.widget.PopupWindow
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import com.test.easy.easycleanerjunk.activity.scanjunk.ScanJunkActivity import com.test.easy.easycleanerjunk.activity.scanjunk.ScanJunkActivity
import com.test.easy.easycleanerjunk.databinding.LayoutExitWlBinding import com.test.easy.easycleanerjunk.databinding.LayoutExitWlBinding
import com.test.easy.easycleanerjunk.helps.ads.AdmobUtils import com.test.easy.easycleanerjunk.helps.ads.MaxAdUtils
import com.test.easy.easycleanerjunk.utils.ActivityManagerUtils import com.test.easy.easycleanerjunk.utils.ActivityManagerUtils
import com.test.easy.easycleanerjunk.utils.BarUtils import com.test.easy.easycleanerjunk.utils.BarUtils
import com.test.easy.easycleanerjunk.utils.SPUtils import com.test.easy.easycleanerjunk.utils.SPUtils
...@@ -56,7 +56,7 @@ class PopExitWindow(private val activity: Activity) : PopupWindow() { ...@@ -56,7 +56,7 @@ class PopExitWindow(private val activity: Activity) : PopupWindow() {
val adS = SPUtils.getInstance().getInt("naAdS", 1) val adS = SPUtils.getInstance().getInt("naAdS", 1)
if (adS == 1) { if (adS == 1) {
binding.idFlAd.visibility = View.VISIBLE binding.idFlAd.visibility = View.VISIBLE
AdmobUtils.showNativeAd(activity, binding.idFlAd) MaxAdUtils.showNativeAd(activity, binding.idFlAd)
} else { } else {
binding.idFlAd.visibility = View.GONE binding.idFlAd.visibility = View.GONE
} }
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#1A55F8"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_margin="20dp"
android:src="@mipmap/guanbi" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="60dp"
android:adjustViewBounds="true"
android:src="@mipmap/b_cleanjunk" />
<TextView
android:id="@+id/id_tv_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginHorizontal="40dp"
android:gravity="center"
android:text="Clean up remaining junk files to free up space"
android:textColor="@color/white"
android:textSize="13sp"
android:textStyle="bold" />
<com.noober.background.view.BLTextView
android:id="@+id/id_btn"
android:layout_width="240dp"
android:layout_height="43dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="80dp"
android:gravity="center"
android:text="Clean Up"
android:textColor="#577DFD"
android:textSize="18sp"
android:textStyle="bold"
app:bl_corners_radius="22dp"
app:bl_solid_color="@color/white" />
</LinearLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment