diff --git a/.gitignore b/.gitignore index a6a69ca..3fb4c00 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,4 @@ gradlew.bat .safedk/dex/SafeDKAndroid-6.3.1.dex app/release/AppLock Defender1.1(2).aab app/release/app-release.apk +app/release/ diff --git a/app/build.gradle b/app/build.gradle index c15f53e..26b7313 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,16 +1,16 @@ + +import java.util.Date +import java.text.SimpleDateFormat + plugins { alias(libs.plugins.androidApplication) alias(libs.plugins.jetbrainsKotlinAndroid) id("kotlin-kapt") id("com.google.gms.google-services") id("com.google.firebase.crashlytics") - id("applovin-quality-service") -} -applovin { - apiKey "gaubl3w6OhMaWqmJb15zVNMO8W91OOSTe2fnoftZMmDkQFTnwMdQVdOdPOMwLRbglPnJsKHfqoPl079qleMk96" } - +String timestamp =new SimpleDateFormat("MM_dd_HH_mm").format(new Date()) android { namespace 'com.kitobochi.softapp.timberlock' compileSdk 34 @@ -19,8 +19,10 @@ android { applicationId "com.applock.privacy.defender" minSdk 22 targetSdk 34 - versionCode 2 - versionName "1.1" + versionCode 3 + versionName "1.2" + + setProperty("archivesBaseName", "AppLock Defender_V" + versionName + "(${versionCode})_$timestamp") testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -66,9 +68,8 @@ dependencies { implementation("com.google.firebase:firebase-analytics-ktx") implementation("com.google.firebase:firebase-crashlytics-ktx") - implementation("com.applovin:applovin-sdk:+") - implementation("com.applovin.mediation:vungle-adapter:+") - implementation("com.applovin.mediation:bytedance-adapter:+") - implementation("com.applovin.mediation:mintegral-adapter:+") + //---------------------------------Mintegral SDK + implementation ("com.mbridge.msdk.oversea:newinterstitial:16.7.71") + implementation ("com.mbridge.msdk.oversea:mbbid:16.7.61") } \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json index f4a8f8a..4175d32 100644 --- a/app/google-services.json +++ b/app/google-services.json @@ -1,13 +1,13 @@ { "project_info": { - "project_number": "36819996956", - "project_id": "applock-defender---security", - "storage_bucket": "applock-defender---security.appspot.com" + "project_number": "373578020353", + "project_id": "applock-defender---secur-2908f", + "storage_bucket": "applock-defender---secur-2908f.appspot.com" }, "client": [ { "client_info": { - "mobilesdk_app_id": "1:36819996956:android:63137f1a9ab4d34a37ead9", + "mobilesdk_app_id": "1:373578020353:android:889ba755e5ab3a9953b200", "android_client_info": { "package_name": "com.applock.privacy.defender" } @@ -15,7 +15,7 @@ "oauth_client": [], "api_key": [ { - "current_key": "AIzaSyBGf4ZJn19sNlDd8U1Qt9L9vOUfyNTlF8I" + "current_key": "AIzaSyCmKGozLNfOW9eNuOg_tQF6GAjT-V7JLQ0" } ], "services": { diff --git a/app/src/main/java/com/kitobochi/softapp/timberlock/App.kt b/app/src/main/java/com/kitobochi/softapp/timberlock/App.kt index 59e1339..18cc745 100644 --- a/app/src/main/java/com/kitobochi/softapp/timberlock/App.kt +++ b/app/src/main/java/com/kitobochi/softapp/timberlock/App.kt @@ -4,13 +4,18 @@ import android.app.Application import android.content.Context import android.content.Intent import android.content.SharedPreferences +import android.util.Log import androidx.localbroadcastmanager.content.LocalBroadcastManager -import com.applovin.sdk.AppLovinMediationProvider -import com.applovin.sdk.AppLovinSdk -import com.applovin.sdk.AppLovinSdkInitializationConfiguration +import com.kitobochi.softapp.timberlock.ad.MBrManager import com.kitobochi.softapp.timberlock.db.AppDatabase import com.kitobochi.softapp.timberlock.db.AppEntity import com.kitobochi.softapp.timberlock.tools.AppListManager +import com.mbridge.msdk.MBridgeSDK +import com.mbridge.msdk.mbbid.out.BidListennning +import com.mbridge.msdk.mbbid.out.BidManager +import com.mbridge.msdk.mbbid.out.BidResponsed +import com.mbridge.msdk.out.MBridgeSDKFactory +import com.mbridge.msdk.out.SDKInitStatusListener import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -27,8 +32,9 @@ class App : Application() { lateinit var sp: SharedPreferences lateinit var SpEditor: SharedPreferences.Editor - const val ADSDK = "2qIXFPBROAqtuAoW4uQ78MTqJTfXWGurGLpQvE0iae3vmVXLa8SMxnxgdtq9O1GU3qQVRR1EcHhpS74qiyL8CK" - const val AD_INIT = "on_success_action" + const val AppId = "299712" + const val AppKey = "40ae65dfdf0d938442cd8f4500ad6524" + const val AD_INIT = "on_SDK_action" var initOK = false var count = 0 } @@ -59,16 +65,21 @@ class App : Application() { } private fun initSDK() { + val sdk: MBridgeSDK = MBridgeSDKFactory.getMBridgeSDK() + val map = sdk.getMBConfigurationMap(AppId, AppKey) + sdk.init(map, this, object : SDKInitStatusListener { + override fun onInitSuccess() { + Log.e(MBrManager.TAG, "onInitSuccess") + initOK = true + LocalBroadcastManager.getInstance(this@App).sendBroadcast(Intent(AD_INIT)) - val initConfig = AppLovinSdkInitializationConfiguration.builder(ADSDK, this) - .setMediationProvider(AppLovinMediationProvider.MAX) - .build() + } + + override fun onInitFail(errorMsg: String) { + Log.e(MBrManager.TAG, errorMsg) + } + }) - AppLovinSdk.getInstance(this).initialize(initConfig){ - initOK = true - LocalBroadcastManager.getInstance(this).sendBroadcast(Intent(AD_INIT)) - } - AppLovinSdk.getInstance(this).settings.setVerboseLogging(true) } diff --git a/app/src/main/java/com/kitobochi/softapp/timberlock/ad/ADBean.java b/app/src/main/java/com/kitobochi/softapp/timberlock/ad/ADBean.java new file mode 100644 index 0000000..4fe64bc --- /dev/null +++ b/app/src/main/java/com/kitobochi/softapp/timberlock/ad/ADBean.java @@ -0,0 +1,25 @@ +package com.kitobochi.softapp.timberlock.ad; + +import com.mbridge.msdk.newinterstitial.out.MBBidNewInterstitialHandler; + +public class ADBean { + + private MBBidNewInterstitialHandler interstitialHandler; + private String token; + + public void setInterstitialHandler(MBBidNewInterstitialHandler interstitialHandler) { + this.interstitialHandler = interstitialHandler; + } + + public void setToken(String token) { + this.token = token; + } + + public MBBidNewInterstitialHandler getInterstitialHandler() { + return interstitialHandler; + } + + public String getToken() { + return token; + } +} diff --git a/app/src/main/java/com/kitobochi/softapp/timberlock/ad/AdListener.kt b/app/src/main/java/com/kitobochi/softapp/timberlock/ad/AdListener.kt deleted file mode 100644 index 627f804..0000000 --- a/app/src/main/java/com/kitobochi/softapp/timberlock/ad/AdListener.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.kitobochi.softapp.timberlock.ad - -import com.applovin.mediation.MaxAd - -interface AdListener { - fun onFail(ad: MaxAd) - fun onSuccess() - fun onHidden() -} \ No newline at end of file diff --git a/app/src/main/java/com/kitobochi/softapp/timberlock/ad/AdManager.kt b/app/src/main/java/com/kitobochi/softapp/timberlock/ad/AdManager.kt deleted file mode 100644 index 3634548..0000000 --- a/app/src/main/java/com/kitobochi/softapp/timberlock/ad/AdManager.kt +++ /dev/null @@ -1,78 +0,0 @@ -package com.kitobochi.softapp.timberlock.ad - -import android.app.Activity -import com.applovin.mediation.MaxAd -import com.applovin.mediation.MaxAdListener -import com.applovin.mediation.MaxError -import com.applovin.mediation.ads.MaxInterstitialAd -import com.kitobochi.softapp.timberlock.App - -object AdManager { - - private val one_AD = "02d8ee636a579373" - private val two_Ad = "02d8ee636a579373" - private val three_ad = "0b004d33e636f7f8" - - private val list: MutableList = mutableListOf() - - fun onCache(list: List): MaxInterstitialAd? { - list.shuffled() - for (ad in list) { - if (ad.isReady) { - return ad - } - } - return null - } - - fun adLoad(): List { - if (list.isEmpty()) { - val ad_two = MaxInterstitialAd(two_Ad, App.appContext) - val ad_one = MaxInterstitialAd(one_AD, App.appContext) - val ad_three = MaxInterstitialAd(three_ad, App.appContext) - ad_two.loadAd() - ad_one.loadAd() - ad_three.loadAd() - - list.add(ad_one) - list.add(ad_two) - list.add(ad_three) - } - for (ad: MaxInterstitialAd in list) { - if (!ad.isReady) { - ad.loadAd() - } - } - - return list - } - - fun setAdListener(ad: MaxInterstitialAd, listener: AdListener) { - ad.setListener(object : MaxAdListener { - override fun onAdLoaded(p0: MaxAd) { - - } - - override fun onAdDisplayed(p0: MaxAd) { - listener.onSuccess() - } - - override fun onAdHidden(p0: MaxAd) { - listener.onHidden() - } - - override fun onAdClicked(p0: MaxAd) { - - } - - override fun onAdLoadFailed(p0: String, p1: MaxError) { - - } - - override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) { - listener.onFail(p0) - } - }) - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/kitobochi/softapp/timberlock/ad/MBrManager.java b/app/src/main/java/com/kitobochi/softapp/timberlock/ad/MBrManager.java new file mode 100644 index 0000000..45f645e --- /dev/null +++ b/app/src/main/java/com/kitobochi/softapp/timberlock/ad/MBrManager.java @@ -0,0 +1,212 @@ +package com.kitobochi.softapp.timberlock.ad; + +import android.app.Activity; +import android.util.Log; + +import com.kitobochi.softapp.timberlock.App; +import com.mbridge.msdk.MBridgeConstans; +import com.mbridge.msdk.mbbid.out.BidListennning; +import com.mbridge.msdk.mbbid.out.BidManager; +import com.mbridge.msdk.mbbid.out.BidResponsed; +import com.mbridge.msdk.newinterstitial.out.MBBidNewInterstitialHandler; +import com.mbridge.msdk.newinterstitial.out.NewInterstitialListener; +import com.mbridge.msdk.out.MBridgeIds; +import com.mbridge.msdk.out.RewardInfo; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class MBrManager { + + public static String TAG = "------------ltt"; + + public static String[] placeIDs = new String[]{"1613586", "1613590", "1613594"}; + + public static String[] unitIDs = new String[]{"3472726", "3472731", "3472735"}; + + public static List AdInstances = new ArrayList<>(); + + public static void getToken(String placeId, String unitId, onBidTokenListener listener) { + BidManager manager = new BidManager(placeId, unitId); + manager.setBidListener(new BidListennning() { + @Override + public void onFailed(String s) { + listener.onBidToken(""); + } + + @Override + public void onSuccessed(BidResponsed bidResponsed) { + String mBidToken = bidResponsed.getBidToken(); + listener.onBidToken(mBidToken); + } + }); + manager.bid(); + } + + ; + + public static void init(Activity activity, onInterHandlerListener listener) { + for (int i = 0; i < 3; i++) { + String finalPlaceId = placeIDs[i]; + String unitId = unitIDs[i]; + getToken(finalPlaceId, unitId, new onBidTokenListener() { + @Override + public void onBidToken(String token) { + MBBidNewInterstitialHandler mMBBidNewInterstitialHandler = new MBBidNewInterstitialHandler(App.appContext, finalPlaceId, unitId); + ADBean adBean = new ADBean(); + Log.d(TAG, "------------token=" + token); + adBean.setToken(token); + adBean.setInterstitialHandler(mMBBidNewInterstitialHandler); + mMBBidNewInterstitialHandler.loadFromBid(token); + AdInstances.add(adBean); + listener.onAddOK(); + + } + }); + } + + } + + public static void loadAllAd() { + if (AdInstances.size() > 0) { + for (ADBean adBean : AdInstances) { + if (!adBean.getInterstitialHandler().isBidReady()) { + adBean.getInterstitialHandler().loadFromBid(adBean.getToken()); + } + } + } + + } + + public static ADBean getCache() { + Collections.shuffle(AdInstances); + for (ADBean adBean : AdInstances) { + if (adBean.getInterstitialHandler().isBidReady()) { + return adBean; + } + } + return null; + } + + + public static void setCallBack(MBBidNewInterstitialHandler mbBidNewInterstitialHandler, onAdStatusListener listener) { + mbBidNewInterstitialHandler.setInterstitialVideoListener(new NewInterstitialListener() { + + @Override + public void onLoadCampaignSuccess(MBridgeIds ids) { + /** + * 广告已填充 + * @param ids 封装的广告id对象 + */ + Log.i(TAG, "onLoadCampaignSuccess: " + Thread.currentThread() + " " + ids.toString()); + } + + @Override + public void onResourceLoadSuccess(MBridgeIds ids) { + /** + * 广告资源加载成功,可以播放 + * @param ids 封装的广告id对象 + */ + Log.i(TAG, "onResourceLoadSuccess: " + Thread.currentThread() + " " + ids.toString()); + listener.onLoaded(); + } + + @Override + public void onResourceLoadFail(MBridgeIds ids, String errorMsg) { + /** + * 广告加载失败 + * @param errorMsg 加载错误原因 + */ + listener.onLoadFail(); + Log.e(TAG, "onResourceLoadFail errorMsg: " + errorMsg + " " + ids.toString()); + } + + @Override + public void onShowFail(MBridgeIds ids, String errorMsg) { + /** + * 广告播放失败 + * @param errorMsg 错误原因 + */ + listener.onShowFail(); + Log.e(TAG, "onShowFail: " + errorMsg + " " + ids.toString()); + } + + @Override + public void onAdShow(MBridgeIds ids) { + /** + * 广告成功展示 + */ + Log.i(TAG, "onAdShow: " + ids.toString()); + } + + @Override + public void onAdClose(MBridgeIds ids, RewardInfo info) { + /** + * 广告关闭时调用 + * @param info.isCompleteView如果为true,则表示已完全观看了视频 + */ + listener.onClose(); + Log.i(TAG, "onAdClose: " + "isCompleteView:" + info.isCompleteView() + " " + ids.toString()); + } + + @Override + public void onAdClicked(MBridgeIds ids) { + /** + * 广告被点击 + * @param 封装的广告id对象 + */ + Log.i(TAG, "onAdClicked: " + ids.toString()); + } + + @Override + public void onVideoComplete(MBridgeIds ids) { + /** + * 广告播放完成时调用 + * @param ids 封装的广告id对象 + */ + Log.i(TAG, "onVideoComplete: " + ids.toString()); + } + + @Override + public void onAdCloseWithNIReward(MBridgeIds ids, RewardInfo info) { + /** + * 如果开发人员设置了IV奖励,则在广告关闭时调用. + * + * @param 封装的广告id对象 + * @param info.isCompleteView() 是否完全观看 + */ + Log.i(TAG, "onAdCloseWithNIReward: " + ids.toString() + " " + info.toString()); + + Log.i(TAG, info.isCompleteView() ? "Video playback/playable is complete." : "Video playback/playable is not complete."); + + int rewardAlertStatus = info.getRewardAlertStatus(); + + if (rewardAlertStatus == MBridgeConstans.IVREWARDALERT_STATUS_NOTSHOWN) { + Log.e(TAG, "The dialog is not show."); + } + + if (rewardAlertStatus == MBridgeConstans.IVREWARDALERT_STATUS_CLICKCONTINUE) { + Log.e(TAG, "The dialog's continue button clicked."); + } + + if (rewardAlertStatus == MBridgeConstans.IVREWARDALERT_STATUS_CLICKCANCEL) { + Log.e(TAG, "The dialog's cancel button clicked."); + } + } + + @Override + public void onEndcardShow(MBridgeIds ids) { + /** + * 展示广告落地页时调用 + * @param ids 封装的广告id对象 + */ + Log.i(TAG, "onEndcardShow: " + ids.toString()); + } + + }); + + } + + +} diff --git a/app/src/main/java/com/kitobochi/softapp/timberlock/ad/onAdStatusListener.java b/app/src/main/java/com/kitobochi/softapp/timberlock/ad/onAdStatusListener.java new file mode 100644 index 0000000..4baafa8 --- /dev/null +++ b/app/src/main/java/com/kitobochi/softapp/timberlock/ad/onAdStatusListener.java @@ -0,0 +1,12 @@ +package com.kitobochi.softapp.timberlock.ad; + +import com.mbridge.msdk.newinterstitial.out.MBBidNewInterstitialHandler; + +public interface onAdStatusListener { + + void onLoaded(); + void onLoadFail(); + void onShowFail(); + + void onClose(); +} diff --git a/app/src/main/java/com/kitobochi/softapp/timberlock/ad/onBidTokenListener.java b/app/src/main/java/com/kitobochi/softapp/timberlock/ad/onBidTokenListener.java new file mode 100644 index 0000000..abc084a --- /dev/null +++ b/app/src/main/java/com/kitobochi/softapp/timberlock/ad/onBidTokenListener.java @@ -0,0 +1,6 @@ +package com.kitobochi.softapp.timberlock.ad; + +public interface onBidTokenListener { + + void onBidToken(String token); +} diff --git a/app/src/main/java/com/kitobochi/softapp/timberlock/ad/onInterHandlerListener.java b/app/src/main/java/com/kitobochi/softapp/timberlock/ad/onInterHandlerListener.java new file mode 100644 index 0000000..7d579a9 --- /dev/null +++ b/app/src/main/java/com/kitobochi/softapp/timberlock/ad/onInterHandlerListener.java @@ -0,0 +1,15 @@ +package com.kitobochi.softapp.timberlock.ad; + +import com.mbridge.msdk.newinterstitial.out.MBBidNewInterstitialHandler; + +public interface onInterHandlerListener { + + void onAddOK(); + + +// void onLoaded(); +// void onLoadFail(); +// void onShowFail(); +// +// void onClose(); +} diff --git a/app/src/main/java/com/kitobochi/softapp/timberlock/ui/activity/SetPwdActivity.kt b/app/src/main/java/com/kitobochi/softapp/timberlock/ui/activity/SetPwdActivity.kt index c1d4206..f2c9b46 100644 --- a/app/src/main/java/com/kitobochi/softapp/timberlock/ui/activity/SetPwdActivity.kt +++ b/app/src/main/java/com/kitobochi/softapp/timberlock/ui/activity/SetPwdActivity.kt @@ -1,23 +1,14 @@ package com.kitobochi.softapp.timberlock.ui.activity -import android.content.BroadcastReceiver -import android.content.Context import android.content.Intent -import android.content.IntentFilter import android.os.CountDownTimer import android.text.Editable import android.text.TextWatcher -import android.util.Log import android.view.View import android.widget.EditText import android.widget.Toast -import androidx.localbroadcastmanager.content.LocalBroadcastManager -import com.applovin.mediation.MaxAd -import com.applovin.mediation.ads.MaxInterstitialAd import com.kitobochi.softapp.timberlock.App import com.kitobochi.softapp.timberlock.R -import com.kitobochi.softapp.timberlock.ad.AdListener -import com.kitobochi.softapp.timberlock.ad.AdManager import com.kitobochi.softapp.timberlock.databinding.ActivitySetpwdBinding class SetPwdActivity : BaseActivity(), View.OnClickListener { @@ -27,7 +18,7 @@ class SetPwdActivity : BaseActivity(), View.OnClickListener { private val IS_SHOW_AD = "IS_SHOW_AD" private val countTime: Long = 12000 - private lateinit var adList: List + private lateinit var timer: CountDownTimer override fun getActivityView(): View { @@ -45,61 +36,6 @@ class SetPwdActivity : BaseActivity(), View.OnClickListener { private fun initAd() { isShowAd = intent.getBooleanExtra(IS_SHOW_AD, false) - timer = object : CountDownTimer(countTime, 200) { - override fun onTick(millisUntilFinished: Long) { - if (isShowAd) { - startShowAd() - } - } - override fun onFinish() { - if (isShowAd) { - startShowAd() - } - } - } - startAd() - } - - private fun startAd() { - if (!App.initOK) { - LocalBroadcastManager.getInstance(this).registerReceiver(object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - loadMyAdAndStart() - Log.d("------------", "------------1sucess") - } - }, IntentFilter(App.AD_INIT)) - } else { - loadMyAdAndStart() - Log.d("------------", "------------2sucess") - } - } - - private fun loadMyAdAndStart() { - adList = AdManager.adLoad() - timer.start() - } - - private fun startShowAd() { - val checkCacheAd = AdManager.onCache(adList) - if (checkCacheAd == null) { - return - } else { - AdManager.setAdListener(checkCacheAd, object : AdListener { - override fun onFail(ad: MaxAd) { - - } - - override fun onSuccess() { - - } - - override fun onHidden() { - checkCacheAd.loadAd() - } - - }) - checkCacheAd.showAd() - } } private fun initInput() { diff --git a/app/src/main/java/com/kitobochi/softapp/timberlock/ui/activity/StartPageActivity.kt b/app/src/main/java/com/kitobochi/softapp/timberlock/ui/activity/StartPageActivity.kt index 7776907..3713273 100644 --- a/app/src/main/java/com/kitobochi/softapp/timberlock/ui/activity/StartPageActivity.kt +++ b/app/src/main/java/com/kitobochi/softapp/timberlock/ui/activity/StartPageActivity.kt @@ -8,31 +8,24 @@ import android.os.CountDownTimer import android.util.Log import android.view.View import androidx.localbroadcastmanager.content.LocalBroadcastManager -import com.applovin.mediation.MaxAd -import com.applovin.mediation.ads.MaxInterstitialAd import com.kitobochi.softapp.timberlock.App -import com.kitobochi.softapp.timberlock.ad.AdListener -import com.kitobochi.softapp.timberlock.ad.AdManager +import com.kitobochi.softapp.timberlock.ad.MBrManager +import com.kitobochi.softapp.timberlock.ad.onAdStatusListener +import com.kitobochi.softapp.timberlock.ad.onInterHandlerListener import com.kitobochi.softapp.timberlock.databinding.ActivityStartBinding -import com.vungle.ads.Ad -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch +import com.mbridge.msdk.newinterstitial.out.MBBidNewInterstitialHandler class StartPageActivity : BaseActivity() { private lateinit var binding: ActivityStartBinding - // private val coroutineScope = CoroutineScope(Dispatchers.Main) private val countTime: Long = 12000 private val IS_SHOW_AD = "IS_SHOW_AD" - - private lateinit var adList: List private lateinit var timer: CountDownTimer private var needShow = true + private lateinit var interAd:MBBidNewInterstitialHandler override fun getActivityView(): View { binding = ActivityStartBinding.inflate(layoutInflater) @@ -41,12 +34,14 @@ class StartPageActivity : BaseActivity() { override fun initView() { super.initView() - Log.d("start-ad", "onCreate") - timer = object : CountDownTimer(countTime, 200) { override fun onTick(millisUntilFinished: Long) { if (needShow) { - startShowAd {} + startShowAd { + if(it){ + startMainActivity() + } + } } } @@ -59,7 +54,6 @@ class StartPageActivity : BaseActivity() { } } startAd() -// startMainActivity() } private fun startAd() { @@ -76,35 +70,45 @@ class StartPageActivity : BaseActivity() { } } - private fun loadMyAdAndStart() { - adList = AdManager.adLoad() - timer.start() - } - private fun startShowAd(action: () -> Unit) { - val checkCacheAd = AdManager.onCache(adList) - if (checkCacheAd == null) { - action.invoke() - } else { + private fun startShowAd(action:(go :Boolean)->Unit){ + val cache = MBrManager.getCache() + if(cache == null){ + action.invoke(false) + }else{ needShow = false - AdManager.setAdListener(checkCacheAd, object : AdListener { - override fun onFail(ad: MaxAd) { - startMainActivity() - } - - override fun onSuccess() { + MBrManager.setCallBack(cache.interstitialHandler,object : onAdStatusListener{ + override fun onLoaded() { } - override fun onHidden() { - startMainActivity() - checkCacheAd.loadAd() + override fun onLoadFail() { + + } + + override fun onShowFail() { + action.invoke(true) + } + + override fun onClose() { + action.invoke(true) } }) - checkCacheAd.showAd() + cache.interstitialHandler.showFromBid() } + + } + private fun loadMyAdAndStart() { + MBrManager.init(this + ) { + timer.start() + } + + } + + private fun startMainActivity() { diff --git a/app/src/main/java/com/kitobochi/softapp/timberlock/ui/adapter/AppListAdapter.kt b/app/src/main/java/com/kitobochi/softapp/timberlock/ui/adapter/AppListAdapter.kt index f55f9cb..ae504c5 100644 --- a/app/src/main/java/com/kitobochi/softapp/timberlock/ui/adapter/AppListAdapter.kt +++ b/app/src/main/java/com/kitobochi/softapp/timberlock/ui/adapter/AppListAdapter.kt @@ -12,13 +12,11 @@ import android.widget.TextView import android.widget.Toast import androidx.appcompat.widget.SwitchCompat import androidx.recyclerview.widget.RecyclerView -import com.applovin.mediation.MaxAd -import com.applovin.mediation.ads.MaxInterstitialAd import com.kitobochi.softapp.timberlock.App import com.kitobochi.softapp.timberlock.R -import com.kitobochi.softapp.timberlock.ad.AdListener -import com.kitobochi.softapp.timberlock.ad.AdManager import com.kitobochi.softapp.timberlock.ad.AdMsgListener +import com.kitobochi.softapp.timberlock.ad.MBrManager +import com.kitobochi.softapp.timberlock.ad.onAdStatusListener import com.kitobochi.softapp.timberlock.db.AppDatabase import com.kitobochi.softapp.timberlock.db.AppEntity import kotlinx.coroutines.CoroutineScope @@ -48,7 +46,9 @@ class AppListAdapter( } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AppListVH { - return AppListVH(LayoutInflater.from(parent.context).inflate(R.layout.item_app, parent, false)) + return AppListVH( + LayoutInflater.from(parent.context).inflate(R.layout.item_app, parent, false) + ) } override fun getItemCount(): Int { @@ -56,7 +56,8 @@ class AppListAdapter( } private fun getAppLog(packageName: String): Drawable { - val applicationInfo = packageManager.getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES) + val applicationInfo = + packageManager.getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES) return packageManager.getApplicationIcon(applicationInfo) } @@ -79,11 +80,13 @@ class AppListAdapter( } else { format = String.format(mContext.getString(R.string.text_unlocked), appName) } - Toast.makeText(mContext, format, Toast.LENGTH_SHORT).show() + if (App.count % 5 == 0) { showAd({ showPopup(format) }, format) + }else{ + Toast.makeText(mContext, format, Toast.LENGTH_SHORT).show() } App.count++ @@ -99,29 +102,34 @@ class AppListAdapter( } private fun showAd(action: () -> Unit, msg: String) { - val adList = AdManager.adLoad() - val checkCacheAd = AdManager.onCache(adList) - if (checkCacheAd == null) { + + val cache = MBrManager.getCache() + if (cache == null) { action.invoke() } else { - AdManager.setAdListener(checkCacheAd, object : AdListener { - override fun onFail(ad: MaxAd) { - showPopup(msg) - } - - override fun onSuccess() { + MBrManager.setCallBack(cache.interstitialHandler, object : onAdStatusListener { + override fun onLoaded() { } - override fun onHidden() { + override fun onLoadFail() { + + } + + override fun onShowFail() { showPopup(msg) - checkCacheAd.loadAd() + } + + override fun onClose() { + showPopup(msg) + MBrManager.loadAllAd() } }) - checkCacheAd.showAd() + cache.interstitialHandler.showFromBid() } + } private fun showPopup(msg: String) { diff --git a/app/src/main/java/com/kitobochi/softapp/timberlock/ui/fragment/AppListFragment.kt b/app/src/main/java/com/kitobochi/softapp/timberlock/ui/fragment/AppListFragment.kt index 60a3364..6580a07 100644 --- a/app/src/main/java/com/kitobochi/softapp/timberlock/ui/fragment/AppListFragment.kt +++ b/app/src/main/java/com/kitobochi/softapp/timberlock/ui/fragment/AppListFragment.kt @@ -1,11 +1,10 @@ package com.kitobochi.softapp.timberlock.ui.fragment import android.app.AlertDialog -import android.util.Log import android.view.View import androidx.recyclerview.widget.LinearLayoutManager -import com.kitobochi.softapp.timberlock.ad.AdListener import com.kitobochi.softapp.timberlock.ad.AdMsgListener +import com.kitobochi.softapp.timberlock.ad.MBrManager import com.kitobochi.softapp.timberlock.databinding.FragmentApplistBinding import com.kitobochi.softapp.timberlock.db.AppDatabase import com.kitobochi.softapp.timberlock.ui.adapter.AppListAdapter @@ -27,6 +26,7 @@ class AppListFragment( override fun initView() { super.initView() initAppList() + MBrManager.loadAllAd() } private fun initAppList() { diff --git a/app/src/main/java/com/kitobochi/softapp/timberlock/ui/fragment/SettingFragment.kt b/app/src/main/java/com/kitobochi/softapp/timberlock/ui/fragment/SettingFragment.kt index ff71a1e..d8c9bbd 100644 --- a/app/src/main/java/com/kitobochi/softapp/timberlock/ui/fragment/SettingFragment.kt +++ b/app/src/main/java/com/kitobochi/softapp/timberlock/ui/fragment/SettingFragment.kt @@ -5,6 +5,8 @@ import android.net.Uri import android.view.View import com.kitobochi.softapp.timberlock.App import com.kitobochi.softapp.timberlock.R +import com.kitobochi.softapp.timberlock.ad.MBrManager +import com.kitobochi.softapp.timberlock.ad.onAdStatusListener import com.kitobochi.softapp.timberlock.databinding.FragmentSettingBinding import com.kitobochi.softapp.timberlock.tools.LockServiceManager import com.kitobochi.softapp.timberlock.ui.activity.SetPwdActivity @@ -15,6 +17,7 @@ class SettingFragment : BaseFragment(), View.OnClickListener { private lateinit var binding: FragmentSettingBinding override fun getFragmentView(): View { binding = FragmentSettingBinding.inflate(layoutInflater) + MBrManager.loadAllAd() return binding.root } @@ -48,9 +51,12 @@ class SettingFragment : BaseFragment(), View.OnClickListener { } binding.settingPassword -> { - val intent = Intent(requireContext(), SetPwdActivity::class.java) - intent.putExtra(IS_SHOW_AD, true) - startActivity(intent) + showAd{ + val intent = Intent(requireContext(), SetPwdActivity::class.java) + intent.putExtra(IS_SHOW_AD, true) + startActivity(intent) + } + } // binding.settingInit -> { @@ -58,4 +64,35 @@ class SettingFragment : BaseFragment(), View.OnClickListener { // } } } + + private fun showAd(action: () -> Unit) { + + val cache = MBrManager.getCache() + if (cache == null) { + action.invoke() + } else { + MBrManager.setCallBack(cache.interstitialHandler, object : onAdStatusListener { + override fun onLoaded() { + + } + + override fun onLoadFail() { + + } + + override fun onShowFail() { + action.invoke() + } + + override fun onClose() { + action.invoke() + MBrManager.loadAllAd() + } + + }) + cache.interstitialHandler.showFromBid() + } + + + } } \ No newline at end of file diff --git a/build.gradle b/build.gradle index 0dde872..c0d703a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,9 +1,5 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. -buildscript{ - dependencies{ - classpath("com.applovin.quality:AppLovinQualityServiceGradlePlugin:+") - } -} + plugins { alias(libs.plugins.androidApplication) apply false diff --git a/settings.gradle b/settings.gradle index 0a323b8..7bfbec7 100644 --- a/settings.gradle +++ b/settings.gradle @@ -9,7 +9,7 @@ pluginManagement { } mavenCentral() gradlePluginPortal() - maven { url "https://artifacts.applovin.com/android"} + } } dependencyResolutionManagement { @@ -17,10 +17,12 @@ dependencyResolutionManagement { repositories { google() mavenCentral() - maven { url "https://artifact.bytedance.com/repository/pangle" } - maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") } + maven { + url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" + } + } } -rootProject.name = "TimberLock" +rootProject.name = "AppLock Defender" include ':app'