diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ddccb4f..e9f23a6 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -4,13 +4,10 @@ plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("kotlin-kapt") -// id("applovin-quality-service") id("com.google.gms.google-services") id("com.google.firebase.crashlytics") } -//applovin { -// apiKey = "hHy0TRZ_kHJAhCLAt5VqWT8vs5MIFuy1ovD8xKl9_ZsgCRVgFp7wgir1hEE6w1uxluE1n4w27wUS2MVr5X8XXh" -//} + val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) android { namespace = "com.moretool.free.applock.watcher" @@ -18,11 +15,11 @@ android { defaultConfig { // com.moretool.free.applock.watcher - applicationId = "com.moretool.free.applock.test" + applicationId = "com.moretool.free.applock.watcher" minSdk = 23 targetSdk = 34 - versionCode = 4 - versionName = "1.0.3" + versionCode = 5 + versionName = "1.0.4" setProperty("archivesBaseName", "AppLock_V" + versionName + "(${versionCode})_$timestamp") testInstrumentationRunner = "androidx.watcher.runner.AndroidJUnitRunner" } @@ -64,7 +61,67 @@ dependencies { implementation ("androidx.work:work-runtime:2.9.0") // 使用最新版本 - implementation(platform("com.google.firebase:firebase-bom:32.3.1")) - implementation("com.google.firebase:firebase-analytics-ktx") - implementation("com.google.firebase:firebase-crashlytics-ktx") + // Import the BoM for the Firebase platform + implementation(platform("com.google.firebase:firebase-bom:33.1.1")) + implementation("com.google.firebase:firebase-crashlytics") + implementation("com.google.firebase:firebase-analytics") + + + //-----------------------------------------------TopOn(pangle、IronSource、mintegral、unityads、liftoff(vungle)、Bigo) + //Anythink (Necessary) + implementation("com.anythink.sdk:core-tpn:6.3.68") + implementation("com.anythink.sdk:nativead-tpn:6.3.68") + implementation("com.anythink.sdk:banner-tpn:6.3.68") + implementation("com.anythink.sdk:interstitial-tpn:6.3.68") + implementation("com.anythink.sdk:rewardedvideo-tpn:6.3.68") + implementation("com.anythink.sdk:splash-tpn:6.3.68") + + //Androidx (Necessary) + implementation("androidx.appcompat:appcompat:1.1.0") + implementation("androidx.browser:browser:1.4.0") + + //Vungle + implementation("com.anythink.sdk:adapter-tpn-vungle:6.3.68") + implementation("com.vungle:vungle-ads:7.3.2") + implementation("com.google.android.gms:play-services-basement:18.1.0") + implementation("com.google.android.gms:play-services-ads-identifier:18.0.1") + + //UnityAds + implementation("com.anythink.sdk:adapter-tpn-unityads:6.3.68") + implementation("com.unity3d.ads:unity-ads:4.9.3") + + //Ironsource + implementation("com.anythink.sdk:adapter-tpn-ironsource:6.3.68") + implementation("com.ironsource.sdk:mediationsdk:8.1.0") + implementation("com.google.android.gms:play-services-appset:16.0.2") + implementation("com.google.android.gms:play-services-ads-identifier:18.0.1") + implementation("com.google.android.gms:play-services-basement:18.1.0") + + //Bigo + implementation("com.anythink.sdk:adapter-tpn-bigo:6.3.68") + implementation("com.bigossp:bigo-ads:4.7.4") + + //Pangle + implementation("com.anythink.sdk:adapter-tpn-pangle-nonchina:6.3.68.1") + implementation( "com.pangle.global:ads-sdk:6.0.0.3") + implementation( "com.google.android.gms:play-services-ads-identifier:18.0.1") + + //Mintegral + implementation("com.anythink.sdk:adapter-tpn-mintegral-nonchina:6.3.68") + implementation("com.mbridge.msdk.oversea:reward:16.7.51") + implementation("com.mbridge.msdk.oversea:newinterstitial:16.7.51") + implementation("com.mbridge.msdk.oversea:mbnative:16.7.51") + implementation("com.mbridge.msdk.oversea:mbnativeadvanced:16.7.51") + implementation("com.mbridge.msdk.oversea:mbsplash:16.7.51") + implementation("com.mbridge.msdk.oversea:mbbanner:16.7.51") + implementation("com.mbridge.msdk.oversea:mbbid:16.7.51") + implementation("androidx.recyclerview:recyclerview:1.1.0") + + //Tramini + implementation("com.anythink.sdk:tramini-plugin-tpn:6.3.68") + + // Debugger UI Tools + implementation ("com.anythink.sdk:debugger-ui:1.0.7") + + //----------------------------------------------TopOn } \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json index e7eeb82..9ef9a4c 100644 --- a/app/google-services.json +++ b/app/google-services.json @@ -9,7 +9,7 @@ "client_info": { "mobilesdk_app_id": "1:256027015132:android:ebe0480b13f40f85ebc119", "android_client_info": { - "package_name": "com.moretool.free.applock.test" + "package_name": "com.moretool.free.applock.watcher" } }, "oauth_client": [], diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 9a77eba..98a2325 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -29,4 +29,97 @@ -keep class com.moretool.free.applock.watcher.room.AppDataBase { *; } -keep class com.moretool.free.applock.watcher.room.EntityAppDao { *; } - -keep class com.moretool.free.applock.watcher.room.EntityApp { *; } \ No newline at end of file + -keep class com.moretool.free.applock.watcher.room.EntityApp { *; } + + + #---------------------------------------------Topon + # Vungle + -dontwarn com.vungle.ads.** + -keepclassmembers class com.vungle.ads.** { + *; + } + + + + + # Google + -keep class com.google.android.gms.** { *; } + -dontwarn com.google.android.gms.** + + + + + # START OkHttp + Okio + # JSR 305 annotations are for embedding nullability information. + -dontwarn javax.annotation.** + + + # A resource is loaded with a relative path so the package of this class must be preserved. + -adaptresourcefilenames okhttp3/internal/publicsuffix/PublicSuffixDatabase.gz + + + # Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. + -dontwarn org.codehaus.mojo.animal_sniffer.* + + + # OkHttp platform used only on JVM and when Conscrypt and other security providers are available. + -dontwarn okhttp3.internal.platform.** + -dontwarn org.conscrypt.** + -dontwarn org.bouncycastle.** + -dontwarn org.openjsse.** + + + # Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. + -dontwarn org.codehaus.mojo.animal_sniffer.* + + + # END OkHttp + Okio + + + # START Protobuf + -dontwarn com.google.protobuf.** + -keepclassmembers class com.google.protobuf.** { + *; + } + -keep class * extends com.google.protobuf.GeneratedMessageLite { *; } + + + # END Protobuf + -keepclassmembers class com.ironsource.sdk.controller.IronSourceWebView$JSInterface { + public *; + } + -keepclassmembers class * implements android.os.Parcelable { + public static final android.os.Parcelable$Creator *; + } + -keep public class com.google.android.gms.ads.** { + public *; + } + -keep class com.ironsource.adapters.** { *; + } + -dontwarn com.ironsource.mediationsdk.** + -dontwarn com.ironsource.adapters.** + -keepattributes JavascriptInterface + -keepclassmembers class * { + @android.webkit.JavascriptInterface ; + } + -keep class com.bytedance.sdk.** { *; } + -keepattributes Signature + -keepattributes *Annotation* + -keep class com.mbridge.** {*; } + -keep interface com.mbridge.** {*; } + -keep class android.support.v4.** { *; } + -dontwarn com.mbridge.** + -keep class **.R$* { public static final int mbridge*; } + -keep public class com.mbridge.* extends androidx.** { *; } + -keep public class androidx.viewpager.widget.PagerAdapter{ *; } + -keep public class androidx.viewpager.widget.ViewPager.OnPageChangeListener{ *; } + -keep interface androidx.annotation.IntDef{ *; } + -keep interface androidx.annotation.Nullable{ *; } + -keep interface androidx.annotation.CheckResult{ *; } + -keep interface androidx.annotation.NonNull{ *; } + -keep public class androidx.fragment.app.Fragment{ *; } + -keep public class androidx.core.content.FileProvider{ *; } + -keep public class androidx.core.app.NotificationCompat{ *; } + -keep public class androidx.appcompat.widget.AppCompatImageView { *; } + -keep public class androidx.recyclerview.*{ *; } + #---------------------------------------------Topon \ No newline at end of file diff --git a/app/src/main/java/com/moretool/free/applock/watcher/AppLockApplication.java b/app/src/main/java/com/moretool/free/applock/watcher/AppLockApplication.java index 8c92c3d..463a784 100644 --- a/app/src/main/java/com/moretool/free/applock/watcher/AppLockApplication.java +++ b/app/src/main/java/com/moretool/free/applock/watcher/AppLockApplication.java @@ -3,7 +3,10 @@ package com.moretool.free.applock.watcher; import android.app.Application; import android.util.Log; +import com.anythink.core.api.ATSDK; +import com.anythink.core.api.NetTrafficeCallback; import com.moretool.free.applock.watcher.room.EntityApp; +import com.moretool.free.applock.watcher.topon.AdManager; import com.moretool.free.applock.watcher.utilsmanager.AppManager; import com.moretool.free.applock.watcher.utilsmanager.DataSaveManager; import com.moretool.free.applock.watcher.utilsmanager.MyValues; @@ -13,12 +16,14 @@ import java.util.Set; public class AppLockApplication extends Application { - public static boolean isSuccess = false; + + private String APPId = "h66ac8e9d78b43"; + private String AppKey = "a8bb383aa224bd38d9489e4bfcd87cd09"; @Override public void onCreate() { super.onCreate(); - Log.d("--------------","-----------onCreate="); + Log.d("--------------", "-----------onCreate application"); MyValues.lockApplication = this; init(); DataSaveManager.init(this); @@ -29,6 +34,24 @@ public class AppLockApplication extends Application { private void init() { + ATSDK.checkIsEuTraffic(this, new NetTrafficeCallback() { + + @Override + public void onResultCallback(boolean isEU) { + Log.e(MyValues.TAG, "onResultCallback:" + isEU); + if (isEU && ATSDK.getGDPRDataLevel(AppLockApplication.this) == ATSDK.UNKNOWN) { + ATSDK.showGdprAuth(AppLockApplication.this); + } + + } + + @Override + public void onErrorCallback(String errorMsg) { + Log.e(MyValues.TAG, "onErrorCallback:" + errorMsg); + } + }); + ATSDK.init(this, APPId, AppKey); + AdManager.loadAllAd(); } diff --git a/app/src/main/java/com/moretool/free/applock/watcher/adapter/AppAdapter.java b/app/src/main/java/com/moretool/free/applock/watcher/adapter/AppAdapter.java index 0a664b3..0516ba6 100644 --- a/app/src/main/java/com/moretool/free/applock/watcher/adapter/AppAdapter.java +++ b/app/src/main/java/com/moretool/free/applock/watcher/adapter/AppAdapter.java @@ -15,8 +15,10 @@ import com.moretool.free.applock.watcher.R; import com.moretool.free.applock.watcher.databinding.ItemAppBinding; import com.moretool.free.applock.watcher.listener.LockListener; import com.moretool.free.applock.watcher.room.EntityApp; +import com.moretool.free.applock.watcher.topon.AdManager; import com.moretool.free.applock.watcher.utilsmanager.AppManager; import com.moretool.free.applock.watcher.utilsmanager.DataSaveManager; +import com.moretool.free.applock.watcher.utilsmanager.MyValues; import com.moretool.free.applock.watcher.utilsmanager.RoomAction; import java.util.ArrayList; @@ -94,25 +96,27 @@ public class AppAdapter extends RecyclerView.Adapter { msg = String.format(mCon.getString(R.string.unlock_app), label); } - int opCount = DataSaveManager.getOpCount(); + int opCount = MyValues.user_option; if (opCount % 5 == 0) { - showMyAd(msg); + setCallBack(true,msg); + opCount++; Log.d("---------tt","---------showMyAd opCount="+opCount); } else { Log.d("---------tt","---------no showMyAd opCount="+opCount); // Toast.makeText(mCon, msg, Toast.LENGTH_SHORT).show(); - setCallBack(msg); + setCallBack(false,msg); } + MyValues.user_option++; } }); } - private void setCallBack(String message){ + private void setCallBack(boolean show,String message){ if(lockListener!= null){ - lockListener.onSwitch(message); + lockListener.onSwitch(show,message); } } @@ -133,26 +137,4 @@ public class AppAdapter extends RecyclerView.Adapter { } - public void showMyAd(String msg) { - // TODO: 2024/8/2 showMyAd - -// MaxInterstitialAd ad = AdTool.randomCache(ads); -// if (ad != null) { -// AdTool.setStatusBack(ad, new AdTool.adStatusBack() { -// @Override -// public void adShowFail() { -// setCallBack(msg); -// } -// -// @Override -// public void adShowHide() { -// setCallBack(msg); -// ads = AdTool.initAdInstance(); -// } -// }); -// ad.showAd(); -// } else { -// setCallBack(msg); -// } - } } diff --git a/app/src/main/java/com/moretool/free/applock/watcher/listener/LockListener.java b/app/src/main/java/com/moretool/free/applock/watcher/listener/LockListener.java index 72754f8..fcada83 100644 --- a/app/src/main/java/com/moretool/free/applock/watcher/listener/LockListener.java +++ b/app/src/main/java/com/moretool/free/applock/watcher/listener/LockListener.java @@ -1,7 +1,7 @@ package com.moretool.free.applock.watcher.listener; public interface LockListener { - void onSwitch(String msg); + void onSwitch(boolean showAd,String msg); } diff --git a/app/src/main/java/com/moretool/free/applock/watcher/pageview/LockFragment.java b/app/src/main/java/com/moretool/free/applock/watcher/pageview/LockFragment.java index be53c41..620fe04 100644 --- a/app/src/main/java/com/moretool/free/applock/watcher/pageview/LockFragment.java +++ b/app/src/main/java/com/moretool/free/applock/watcher/pageview/LockFragment.java @@ -16,6 +16,8 @@ import androidx.recyclerview.widget.RecyclerView; import com.moretool.free.applock.watcher.R; import com.moretool.free.applock.watcher.adapter.AppAdapter; import com.moretool.free.applock.watcher.listener.LockListener; +import com.moretool.free.applock.watcher.topon.AdManager; +import com.moretool.free.applock.watcher.topon.onActionListener; import com.moretool.free.applock.watcher.utilsmanager.MyValues; public class LockFragment extends Fragment { @@ -42,9 +44,9 @@ public class LockFragment extends Fragment { View view = inflater.inflate(R.layout.fragment_lock, container, false); recyclerViewApp = view.findViewById(R.id.app_recycler); - // TODO: 2024/8/2 loadad -// listAd = AdTool.initAdInstance(); - Log.d("-----------","------------onCreateView"); + + AdManager.loadAllAd(); + Log.d("-----------", "------------onCreateView"); return view; } @@ -72,9 +74,20 @@ public class LockFragment extends Fragment { appAdapter = new AppAdapter(requireContext(), isLocked); appAdapter.setLockListener(new LockListener() { @Override - public void onSwitch(String msg) { - successDialog = new SuccessDialog(requireContext(),msg); - successDialog.show(getChildFragmentManager(), ""); + public void onSwitch(boolean showAd, String msg) { + if (showAd) { + AdManager.showTopOn(requireActivity(), new onActionListener() { + @Override + public void onAction() { + successDialog = new SuccessDialog(requireContext(), msg); + successDialog.show(getChildFragmentManager(), ""); + } + }); + } else { + successDialog = new SuccessDialog(requireContext(), msg); + successDialog.show(getChildFragmentManager(), ""); + } + } }); recyclerViewApp.setLayoutManager(new LinearLayoutManager(requireContext())); diff --git a/app/src/main/java/com/moretool/free/applock/watcher/pageview/MainActivity.java b/app/src/main/java/com/moretool/free/applock/watcher/pageview/MainActivity.java index 87911c7..a4a72bf 100644 --- a/app/src/main/java/com/moretool/free/applock/watcher/pageview/MainActivity.java +++ b/app/src/main/java/com/moretool/free/applock/watcher/pageview/MainActivity.java @@ -24,6 +24,8 @@ import com.moretool.free.applock.watcher.MyService; import com.moretool.free.applock.watcher.R; import com.moretool.free.applock.watcher.adapter.VpAdapter; import com.moretool.free.applock.watcher.listener.PermissionBtnListener; +import com.moretool.free.applock.watcher.topon.AdManager; +import com.moretool.free.applock.watcher.topon.onActionListener; import com.moretool.free.applock.watcher.utilsmanager.AppManager; import com.moretool.free.applock.watcher.utilsmanager.MyValues; import com.moretool.free.applock.watcher.utilsmanager.Permission; @@ -61,7 +63,8 @@ public class MainActivity extends AppCompatActivity implements PermissionBtnList menu = findViewById(R.id.im_menu); tvVersion = findViewById(R.id.tv_version); - // TODO: 2024/8/2 loadad + + AdManager.loadAllAd(); layoutReset = findViewById(R.id.re_reset); @@ -135,27 +138,12 @@ public class MainActivity extends AppCompatActivity implements PermissionBtnList public void showMyAd() { - interReset(); - // TODO: 2024/8/2 showad -// MaxInterstitialAd ad = AdTool.randomCache(listAd); -// if (ad != null) { -// AdTool.setStatusBack(ad, new AdTool.adStatusBack() { -// @Override -// public void adShowFail() { -// interReset(); -// -// } -// -// @Override -// public void adShowHide() { -// interReset(); -// listAd = AdTool.initAdInstance(); -// } -// }); -// ad.showAd(MainActivity.this); -// } else { -// interReset(); -// } + AdManager.showTopOn(MainActivity.this, new onActionListener() { + @Override + public void onAction() { + interReset(); + } + }); } private void interReset() { diff --git a/app/src/main/java/com/moretool/free/applock/watcher/pageview/WelComeActivity.java b/app/src/main/java/com/moretool/free/applock/watcher/pageview/WelComeActivity.java index 7cdb192..b335ba3 100644 --- a/app/src/main/java/com/moretool/free/applock/watcher/pageview/WelComeActivity.java +++ b/app/src/main/java/com/moretool/free/applock/watcher/pageview/WelComeActivity.java @@ -2,37 +2,65 @@ package com.moretool.free.applock.watcher.pageview; import android.content.Intent; import android.os.Bundle; +import android.os.CountDownTimer; import android.os.Handler; import android.util.Log; +import android.widget.ProgressBar; import androidx.appcompat.app.AppCompatActivity; +import com.moretool.free.applock.watcher.AppLockApplication; import com.moretool.free.applock.watcher.R; +import com.moretool.free.applock.watcher.topon.AdManager; import com.moretool.free.applock.watcher.utilsmanager.DataSaveManager; +import com.moretool.free.applock.watcher.utilsmanager.MyValues; + +import kotlin.Unit; +import kotlin.jvm.functions.Function0; +import kotlin.jvm.functions.Function1; public class WelComeActivity extends AppCompatActivity { - private Handler handler = new Handler(); - private Runnable runnable; - private int time = 120; - - private boolean hasShow = false; + private CountDownTimer countDownTimer; + private ProgressBar progressBar; + private long time = 11000; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wel_come); - Log.d("------", "---------onCreate"); - welComplete(); - - + Log.d("------", "---------onCreate wel"); + progressBar = findViewById(R.id.update_progress); + countDownTimer = AdManager.showWelcomeAd(WelComeActivity.this, time, new Function1() { + @Override + public Unit invoke(Long aLong) { + float percentage = 100 - ((float) aLong / time) * 100; + int round = Math.round(percentage); + progressBar.setProgress(round); + if (AdManager.INSTANCE.getPlace1LoadFail() && AdManager.INSTANCE.getPlace2LoadFail() && AdManager.INSTANCE.getPlace3LoadFail()) { + countDownTimer.cancel(); + welComplete(); + Log.d(MyValues.TAG, "-------------cancel"); + } + return null; + } + }, new Function0() { + @Override + public Unit invoke() { + welComplete(); + return null; + } + }); + countDownTimer.start(); } @Override protected void onDestroy() { super.onDestroy(); - handler.removeCallbacks(runnable); + if (countDownTimer != null) { + countDownTimer.cancel(); + } } diff --git a/app/src/main/java/com/moretool/free/applock/watcher/topon/AdListener.kt b/app/src/main/java/com/moretool/free/applock/watcher/topon/AdListener.kt new file mode 100644 index 0000000..b1eed39 --- /dev/null +++ b/app/src/main/java/com/moretool/free/applock/watcher/topon/AdListener.kt @@ -0,0 +1,11 @@ +package com.moretool.free.applock.watcher.topon + +interface AdListener { + + fun loadFail(placeId: String) + fun showSuccess() + + fun showFail() + + fun showClose() +} \ No newline at end of file diff --git a/app/src/main/java/com/moretool/free/applock/watcher/topon/AdManager.kt b/app/src/main/java/com/moretool/free/applock/watcher/topon/AdManager.kt new file mode 100644 index 0000000..4a52b31 --- /dev/null +++ b/app/src/main/java/com/moretool/free/applock/watcher/topon/AdManager.kt @@ -0,0 +1,218 @@ +package com.moretool.free.applock.watcher.topon + +import android.app.Activity +import android.os.CountDownTimer +import android.util.Log +import com.anythink.core.api.ATAdInfo +import com.anythink.core.api.AdError +import com.anythink.interstitial.api.ATInterstitial +import com.anythink.interstitial.api.ATInterstitialListener +import com.moretool.free.applock.watcher.utilsmanager.MyValues + + +object AdManager { + + + const val type_no_cache = 0 + const val type_has_cache = 1 + const val type_show_success = 2 + const val type_show_close = 3 + const val type_show_fail = 4 + + /** + Applock_Int_Closure + n66ac8f1623d1a + Applock_Int_Pass + n66ac8f15e1758 + Applock_Int_Open + n66ac8f15ba3eb + */ + + const val place1Id = "n66ac8f1623d1a" + const val place2Id = "n66ac8f15e1758" + const val place3Id = "n66ac8f15ba3eb" + + + var place1LoadFail = false + var place2LoadFail = false + var place3LoadFail = false + + val list = mutableListOf() + + + @JvmStatic + fun loadAllAd() { + if (list.size <= 0) { + val mInterstitialAd1 = ATInterstitial(MyValues.lockApplication, place1Id) + val mInterstitialAd2 = ATInterstitial(MyValues.lockApplication, place2Id) + val mInterstitialAd3 = ATInterstitial(MyValues.lockApplication, place3Id) + list.add(mInterstitialAd1) + list.add(mInterstitialAd2) + list.add(mInterstitialAd3) + } + for (ad in list) { + if (!ad.isAdReady) { + setCallBack(ad, object : AdListener { + override fun loadFail(placeId: String) { + if (placeId == place1Id) { + place1LoadFail = true + } + if (placeId == place2Id) { + place2LoadFail = true + } + if (placeId == place3Id) { + place3LoadFail = true + } + } + + override fun showSuccess() { + + } + + override fun showFail() { + + } + + override fun showClose() { + + } + + }) + ad.load() + } + } + + + } + + @JvmStatic + fun getReadyAd(): ATInterstitial? { + list.shuffle() + for (ad in list) { + if (ad.isAdReady) { + return ad + } + } + return null + } + + + @JvmStatic + fun showWelcomeAd( + activity: Activity, + totalTim: Long, + countAction: (millisUntilFinished: Long) -> Unit, + goMain: () -> Unit + ): CountDownTimer { + var alreadyShow = false + var timer = object : CountDownTimer(totalTim, 100) { + override fun onTick(millisUntilFinished: Long) { + countAction.invoke(millisUntilFinished) + if (!alreadyShow) { + showAD(activity) { + if (it == type_has_cache) { + alreadyShow = true + } + if (it == type_show_close || it == type_show_fail) { + goMain.invoke() + } + + } + } + + } + + override fun onFinish() { + if (!alreadyShow) { + showAD(activity) { + if (it == type_show_close || it == type_show_fail || it == type_no_cache) { + goMain.invoke() + } + } + } + } + + } + return timer + } + + private fun setCallBack(ad: ATInterstitial, listener: AdListener) { + ad.setAdListener(object : ATInterstitialListener { + override fun onInterstitialAdLoaded() { + Log.d(MyValues.TAG, "LoadLoaded ${ad.mPlacementId}") + } + + override fun onInterstitialAdLoadFail(p0: AdError?) { + Log.d(MyValues.TAG, "LoadFail:${p0?.code} ${p0?.desc}") + } + + override fun onInterstitialAdClicked(p0: ATAdInfo?) { + + } + + override fun onInterstitialAdShow(p0: ATAdInfo?) { + Log.d(MyValues.TAG, "AdShow ${p0?.showId} ") + listener.showSuccess() + ad.load() + } + + override fun onInterstitialAdClose(p0: ATAdInfo?) { + listener.showClose() + } + + override fun onInterstitialAdVideoStart(p0: ATAdInfo?) { + + } + + override fun onInterstitialAdVideoEnd(p0: ATAdInfo?) { + + } + + override fun onInterstitialAdVideoError(p0: AdError?) { + listener.showFail() + } + + }) + } + + + @JvmStatic + private fun showAD(activity: Activity, action: (type: Int) -> Unit) { + val readyAd = getReadyAd() + if (readyAd != null) { + Log.d(MyValues.TAG, "readyAd ${readyAd.mPlacementId} ") + action.invoke(type_has_cache) + setCallBack(readyAd, object : AdListener { + override fun loadFail(placeId: String) { + + } + + override fun showSuccess() { + action.invoke(type_show_success) + } + + override fun showFail() { + action.invoke(type_show_fail) + } + + override fun showClose() { + action.invoke(type_show_close) + } + + }) + readyAd.show(activity) + } else { + action.invoke(type_no_cache) + + } + } + + @JvmStatic + fun showTopOn(activity: Activity, listener: onActionListener) { + showAD(activity) { type -> + if (type == type_no_cache || type == type_show_close || type == type_show_fail) { + listener.onAction() + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/moretool/free/applock/watcher/topon/onActionListener.java b/app/src/main/java/com/moretool/free/applock/watcher/topon/onActionListener.java new file mode 100644 index 0000000..8d982dc --- /dev/null +++ b/app/src/main/java/com/moretool/free/applock/watcher/topon/onActionListener.java @@ -0,0 +1,6 @@ +package com.moretool.free.applock.watcher.topon; + +public interface onActionListener { + + void onAction(); +} diff --git a/app/src/main/java/com/moretool/free/applock/watcher/utilsmanager/MyValues.java b/app/src/main/java/com/moretool/free/applock/watcher/utilsmanager/MyValues.java index 313c500..a51b291 100644 --- a/app/src/main/java/com/moretool/free/applock/watcher/utilsmanager/MyValues.java +++ b/app/src/main/java/com/moretool/free/applock/watcher/utilsmanager/MyValues.java @@ -10,6 +10,8 @@ public class MyValues { public static final String DB_TABLE_NAME = "app_table"; public static AppLockApplication lockApplication; + + public static String TAG = "----------AppLock"; public static String password_key = "password_key"; public static String password_pin_key = "password_pin_key"; public static int password_type0 = 0; @@ -17,6 +19,7 @@ public class MyValues { public static int password_type2 = 2; public static String SP_KEY_CUR_PIN = "sp_key_cur_pin"; + public static int user_option = 0; public static String SP_KEY_OP_COUNT = "sp_key_op_count"; diff --git a/app/src/main/res/drawable/progressbar.xml b/app/src/main/res/drawable/progressbar.xml new file mode 100644 index 0000000..f787d7f --- /dev/null +++ b/app/src/main/res/drawable/progressbar.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_wel_come.xml b/app/src/main/res/layout/activity_wel_come.xml index f1e7aab..5958637 100644 --- a/app/src/main/res/layout/activity_wel_come.xml +++ b/app/src/main/res/layout/activity_wel_come.xml @@ -25,10 +25,16 @@ android:textSize="20sp" /> + android:id="@+id/update_progress" + style="?android:attr/progressBarStyleHorizontal" + android:layout_width="match_parent" + android:layout_height="10dp" + android:layout_marginStart="43dp" + android:layout_marginTop="70dp" + android:layout_marginEnd="43dp" + android:layout_marginBottom="40dp" + android:progress="30" + android:progressDrawable="@drawable/progressbar" + app:layout_constraintBottom_toBottomOf="parent" /> \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 33204c0..4a72771 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -9,4 +9,8 @@ #00000000 #805571EC #a2b4b0 + + #898989 + #B1EACD + #67b19c \ No newline at end of file diff --git a/keystore.properties b/keystore.properties new file mode 100644 index 0000000..792e6ab --- /dev/null +++ b/keystore.properties @@ -0,0 +1,6 @@ +app_name=AppLock +package_name=com.moretool.free.applock.watcher +keystoreFile=app/AppLock.jks +key_alias=AppLockkey0 +key_store_password=AppLock +key_password=AppLock \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 4e0afdc..489b067 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -12,6 +12,18 @@ dependencyResolutionManagement { google() mavenCentral() + //Anythink(Core) + maven("https://jfrog.anythinktech.com/artifactory/overseas_sdk") + //Ironsource + maven("https://android-sdk.is.com/") + //Mintegral + maven("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") + //Pangle + maven ( "https://artifact.bytedance.com/repository/pangle") + + //TopOn集成测试工具 + maven ( "https://jfrog.anythinktech.com/artifactory/debugger") + } }