V1.0.4(5) 集成Topon
This commit is contained in:
parent
38c20ebc69
commit
433666f298
@ -4,13 +4,10 @@ plugins {
|
|||||||
id("com.android.application")
|
id("com.android.application")
|
||||||
id("org.jetbrains.kotlin.android")
|
id("org.jetbrains.kotlin.android")
|
||||||
id("kotlin-kapt")
|
id("kotlin-kapt")
|
||||||
// id("applovin-quality-service")
|
|
||||||
id("com.google.gms.google-services")
|
id("com.google.gms.google-services")
|
||||||
id("com.google.firebase.crashlytics")
|
id("com.google.firebase.crashlytics")
|
||||||
}
|
}
|
||||||
//applovin {
|
|
||||||
// apiKey = "hHy0TRZ_kHJAhCLAt5VqWT8vs5MIFuy1ovD8xKl9_ZsgCRVgFp7wgir1hEE6w1uxluE1n4w27wUS2MVr5X8XXh"
|
|
||||||
//}
|
|
||||||
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
|
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
|
||||||
android {
|
android {
|
||||||
namespace = "com.moretool.free.applock.watcher"
|
namespace = "com.moretool.free.applock.watcher"
|
||||||
@ -18,11 +15,11 @@ android {
|
|||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
// com.moretool.free.applock.watcher
|
// com.moretool.free.applock.watcher
|
||||||
applicationId = "com.moretool.free.applock.test"
|
applicationId = "com.moretool.free.applock.watcher"
|
||||||
minSdk = 23
|
minSdk = 23
|
||||||
targetSdk = 34
|
targetSdk = 34
|
||||||
versionCode = 4
|
versionCode = 5
|
||||||
versionName = "1.0.3"
|
versionName = "1.0.4"
|
||||||
setProperty("archivesBaseName", "AppLock_V" + versionName + "(${versionCode})_$timestamp")
|
setProperty("archivesBaseName", "AppLock_V" + versionName + "(${versionCode})_$timestamp")
|
||||||
testInstrumentationRunner = "androidx.watcher.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.watcher.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
@ -64,7 +61,67 @@ dependencies {
|
|||||||
implementation ("androidx.work:work-runtime:2.9.0") // 使用最新版本
|
implementation ("androidx.work:work-runtime:2.9.0") // 使用最新版本
|
||||||
|
|
||||||
|
|
||||||
implementation(platform("com.google.firebase:firebase-bom:32.3.1"))
|
// Import the BoM for the Firebase platform
|
||||||
implementation("com.google.firebase:firebase-analytics-ktx")
|
implementation(platform("com.google.firebase:firebase-bom:33.1.1"))
|
||||||
implementation("com.google.firebase:firebase-crashlytics-ktx")
|
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
|
||||||
}
|
}
|
||||||
@ -9,7 +9,7 @@
|
|||||||
"client_info": {
|
"client_info": {
|
||||||
"mobilesdk_app_id": "1:256027015132:android:ebe0480b13f40f85ebc119",
|
"mobilesdk_app_id": "1:256027015132:android:ebe0480b13f40f85ebc119",
|
||||||
"android_client_info": {
|
"android_client_info": {
|
||||||
"package_name": "com.moretool.free.applock.test"
|
"package_name": "com.moretool.free.applock.watcher"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"oauth_client": [],
|
"oauth_client": [],
|
||||||
|
|||||||
93
app/proguard-rules.pro
vendored
93
app/proguard-rules.pro
vendored
@ -30,3 +30,96 @@
|
|||||||
-keep class com.moretool.free.applock.watcher.room.AppDataBase { *; }
|
-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.EntityAppDao { *; }
|
||||||
-keep class com.moretool.free.applock.watcher.room.EntityApp { *; }
|
-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 <methods>;
|
||||||
|
}
|
||||||
|
-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
|
||||||
@ -3,7 +3,10 @@ package com.moretool.free.applock.watcher;
|
|||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.util.Log;
|
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.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.AppManager;
|
||||||
import com.moretool.free.applock.watcher.utilsmanager.DataSaveManager;
|
import com.moretool.free.applock.watcher.utilsmanager.DataSaveManager;
|
||||||
import com.moretool.free.applock.watcher.utilsmanager.MyValues;
|
import com.moretool.free.applock.watcher.utilsmanager.MyValues;
|
||||||
@ -13,12 +16,14 @@ import java.util.Set;
|
|||||||
|
|
||||||
public class AppLockApplication extends Application {
|
public class AppLockApplication extends Application {
|
||||||
|
|
||||||
public static boolean isSuccess = false;
|
|
||||||
|
private String APPId = "h66ac8e9d78b43";
|
||||||
|
private String AppKey = "a8bb383aa224bd38d9489e4bfcd87cd09";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
Log.d("--------------","-----------onCreate=");
|
Log.d("--------------", "-----------onCreate application");
|
||||||
MyValues.lockApplication = this;
|
MyValues.lockApplication = this;
|
||||||
init();
|
init();
|
||||||
DataSaveManager.init(this);
|
DataSaveManager.init(this);
|
||||||
@ -29,6 +34,24 @@ public class AppLockApplication extends Application {
|
|||||||
|
|
||||||
|
|
||||||
private void init() {
|
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();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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.databinding.ItemAppBinding;
|
||||||
import com.moretool.free.applock.watcher.listener.LockListener;
|
import com.moretool.free.applock.watcher.listener.LockListener;
|
||||||
import com.moretool.free.applock.watcher.room.EntityApp;
|
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.AppManager;
|
||||||
import com.moretool.free.applock.watcher.utilsmanager.DataSaveManager;
|
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 com.moretool.free.applock.watcher.utilsmanager.RoomAction;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -94,25 +96,27 @@ public class AppAdapter extends RecyclerView.Adapter<AppAdapter.AppViewHolder> {
|
|||||||
msg = String.format(mCon.getString(R.string.unlock_app), label);
|
msg = String.format(mCon.getString(R.string.unlock_app), label);
|
||||||
}
|
}
|
||||||
|
|
||||||
int opCount = DataSaveManager.getOpCount();
|
int opCount = MyValues.user_option;
|
||||||
if (opCount % 5 == 0) {
|
if (opCount % 5 == 0) {
|
||||||
showMyAd(msg);
|
setCallBack(true,msg);
|
||||||
|
opCount++;
|
||||||
Log.d("---------tt","---------showMyAd opCount="+opCount);
|
Log.d("---------tt","---------showMyAd opCount="+opCount);
|
||||||
} else {
|
} else {
|
||||||
Log.d("---------tt","---------no showMyAd opCount="+opCount);
|
Log.d("---------tt","---------no showMyAd opCount="+opCount);
|
||||||
// Toast.makeText(mCon, msg, Toast.LENGTH_SHORT).show();
|
// 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){
|
if(lockListener!= null){
|
||||||
lockListener.onSwitch(message);
|
lockListener.onSwitch(show,message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,26 +137,4 @@ public class AppAdapter extends RecyclerView.Adapter<AppAdapter.AppViewHolder> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
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);
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
package com.moretool.free.applock.watcher.listener;
|
package com.moretool.free.applock.watcher.listener;
|
||||||
|
|
||||||
public interface LockListener {
|
public interface LockListener {
|
||||||
void onSwitch(String msg);
|
void onSwitch(boolean showAd,String msg);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,6 +16,8 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
import com.moretool.free.applock.watcher.R;
|
import com.moretool.free.applock.watcher.R;
|
||||||
import com.moretool.free.applock.watcher.adapter.AppAdapter;
|
import com.moretool.free.applock.watcher.adapter.AppAdapter;
|
||||||
import com.moretool.free.applock.watcher.listener.LockListener;
|
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;
|
import com.moretool.free.applock.watcher.utilsmanager.MyValues;
|
||||||
|
|
||||||
public class LockFragment extends Fragment {
|
public class LockFragment extends Fragment {
|
||||||
@ -42,9 +44,9 @@ public class LockFragment extends Fragment {
|
|||||||
View view = inflater.inflate(R.layout.fragment_lock, container, false);
|
View view = inflater.inflate(R.layout.fragment_lock, container, false);
|
||||||
recyclerViewApp = view.findViewById(R.id.app_recycler);
|
recyclerViewApp = view.findViewById(R.id.app_recycler);
|
||||||
|
|
||||||
// TODO: 2024/8/2 loadad
|
|
||||||
// listAd = AdTool.initAdInstance();
|
AdManager.loadAllAd();
|
||||||
Log.d("-----------","------------onCreateView");
|
Log.d("-----------", "------------onCreateView");
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,9 +74,20 @@ public class LockFragment extends Fragment {
|
|||||||
appAdapter = new AppAdapter(requireContext(), isLocked);
|
appAdapter = new AppAdapter(requireContext(), isLocked);
|
||||||
appAdapter.setLockListener(new LockListener() {
|
appAdapter.setLockListener(new LockListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSwitch(String msg) {
|
public void onSwitch(boolean showAd, String msg) {
|
||||||
successDialog = new SuccessDialog(requireContext(),msg);
|
if (showAd) {
|
||||||
successDialog.show(getChildFragmentManager(), "");
|
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()));
|
recyclerViewApp.setLayoutManager(new LinearLayoutManager(requireContext()));
|
||||||
|
|||||||
@ -24,6 +24,8 @@ import com.moretool.free.applock.watcher.MyService;
|
|||||||
import com.moretool.free.applock.watcher.R;
|
import com.moretool.free.applock.watcher.R;
|
||||||
import com.moretool.free.applock.watcher.adapter.VpAdapter;
|
import com.moretool.free.applock.watcher.adapter.VpAdapter;
|
||||||
import com.moretool.free.applock.watcher.listener.PermissionBtnListener;
|
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.AppManager;
|
||||||
import com.moretool.free.applock.watcher.utilsmanager.MyValues;
|
import com.moretool.free.applock.watcher.utilsmanager.MyValues;
|
||||||
import com.moretool.free.applock.watcher.utilsmanager.Permission;
|
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);
|
menu = findViewById(R.id.im_menu);
|
||||||
tvVersion = findViewById(R.id.tv_version);
|
tvVersion = findViewById(R.id.tv_version);
|
||||||
|
|
||||||
// TODO: 2024/8/2 loadad
|
|
||||||
|
AdManager.loadAllAd();
|
||||||
|
|
||||||
|
|
||||||
layoutReset = findViewById(R.id.re_reset);
|
layoutReset = findViewById(R.id.re_reset);
|
||||||
@ -135,27 +138,12 @@ public class MainActivity extends AppCompatActivity implements PermissionBtnList
|
|||||||
|
|
||||||
|
|
||||||
public void showMyAd() {
|
public void showMyAd() {
|
||||||
interReset();
|
AdManager.showTopOn(MainActivity.this, new onActionListener() {
|
||||||
// TODO: 2024/8/2 showad
|
@Override
|
||||||
// MaxInterstitialAd ad = AdTool.randomCache(listAd);
|
public void onAction() {
|
||||||
// if (ad != null) {
|
interReset();
|
||||||
// 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();
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void interReset() {
|
private void interReset() {
|
||||||
|
|||||||
@ -2,37 +2,65 @@ package com.moretool.free.applock.watcher.pageview;
|
|||||||
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.CountDownTimer;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.widget.ProgressBar;
|
||||||
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
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.R;
|
||||||
|
import com.moretool.free.applock.watcher.topon.AdManager;
|
||||||
import com.moretool.free.applock.watcher.utilsmanager.DataSaveManager;
|
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 {
|
public class WelComeActivity extends AppCompatActivity {
|
||||||
|
|
||||||
private Handler handler = new Handler();
|
private CountDownTimer countDownTimer;
|
||||||
private Runnable runnable;
|
private ProgressBar progressBar;
|
||||||
private int time = 120;
|
private long time = 11000;
|
||||||
|
|
||||||
private boolean hasShow = false;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_wel_come);
|
setContentView(R.layout.activity_wel_come);
|
||||||
Log.d("------", "---------onCreate");
|
Log.d("------", "---------onCreate wel");
|
||||||
welComplete();
|
progressBar = findViewById(R.id.update_progress);
|
||||||
|
countDownTimer = AdManager.showWelcomeAd(WelComeActivity.this, time, new Function1<Long, Unit>() {
|
||||||
|
@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<Unit>() {
|
||||||
|
@Override
|
||||||
|
public Unit invoke() {
|
||||||
|
welComplete();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
countDownTimer.start();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onDestroy() {
|
protected void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
handler.removeCallbacks(runnable);
|
if (countDownTimer != null) {
|
||||||
|
countDownTimer.cancel();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,11 @@
|
|||||||
|
package com.moretool.free.applock.watcher.topon
|
||||||
|
|
||||||
|
interface AdListener {
|
||||||
|
|
||||||
|
fun loadFail(placeId: String)
|
||||||
|
fun showSuccess()
|
||||||
|
|
||||||
|
fun showFail()
|
||||||
|
|
||||||
|
fun showClose()
|
||||||
|
}
|
||||||
@ -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<ATInterstitial>()
|
||||||
|
|
||||||
|
|
||||||
|
@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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
package com.moretool.free.applock.watcher.topon;
|
||||||
|
|
||||||
|
public interface onActionListener {
|
||||||
|
|
||||||
|
void onAction();
|
||||||
|
}
|
||||||
@ -10,6 +10,8 @@ public class MyValues {
|
|||||||
|
|
||||||
public static final String DB_TABLE_NAME = "app_table";
|
public static final String DB_TABLE_NAME = "app_table";
|
||||||
public static AppLockApplication lockApplication;
|
public static AppLockApplication lockApplication;
|
||||||
|
|
||||||
|
public static String TAG = "----------AppLock";
|
||||||
public static String password_key = "password_key";
|
public static String password_key = "password_key";
|
||||||
public static String password_pin_key = "password_pin_key";
|
public static String password_pin_key = "password_pin_key";
|
||||||
public static int password_type0 = 0;
|
public static int password_type0 = 0;
|
||||||
@ -17,6 +19,7 @@ public class MyValues {
|
|||||||
public static int password_type2 = 2;
|
public static int password_type2 = 2;
|
||||||
|
|
||||||
public static String SP_KEY_CUR_PIN = "sp_key_cur_pin";
|
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";
|
public static String SP_KEY_OP_COUNT = "sp_key_op_count";
|
||||||
|
|||||||
27
app/src/main/res/drawable/progressbar.xml
Normal file
27
app/src/main/res/drawable/progressbar.xml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:id="@android:id/background">
|
||||||
|
<shape>
|
||||||
|
<corners android:radius="10dp" />
|
||||||
|
<solid android:color="@color/pb_bg" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item android:id="@android:id/progress">
|
||||||
|
<clip>
|
||||||
|
<shape>
|
||||||
|
<corners android:radius="10dp" />
|
||||||
|
<gradient
|
||||||
|
android:angle="0"
|
||||||
|
android:endColor="@color/pb_end_color"
|
||||||
|
android:startColor="@color/pb_start_color" />
|
||||||
|
</shape>
|
||||||
|
</clip>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -25,10 +25,16 @@
|
|||||||
android:textSize="20sp" />
|
android:textSize="20sp" />
|
||||||
|
|
||||||
<ProgressBar
|
<ProgressBar
|
||||||
android:layout_width="wrap_content"
|
android:id="@+id/update_progress"
|
||||||
android:layout_height="wrap_content"
|
style="?android:attr/progressBarStyleHorizontal"
|
||||||
android:indeterminateTint="@color/rgb_67b19c"
|
android:layout_width="match_parent"
|
||||||
android:layout_gravity="center_horizontal"
|
android:layout_height="10dp"
|
||||||
android:layout_marginTop="20dp" />
|
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" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@ -9,4 +9,8 @@
|
|||||||
<color name="rgb_00000000">#00000000</color>
|
<color name="rgb_00000000">#00000000</color>
|
||||||
<color name="rgb_805571ec">#805571EC</color>
|
<color name="rgb_805571ec">#805571EC</color>
|
||||||
<color name="rgb_a2b4b0">#a2b4b0</color>
|
<color name="rgb_a2b4b0">#a2b4b0</color>
|
||||||
|
|
||||||
|
<color name="pb_bg">#898989</color>
|
||||||
|
<color name="pb_start_color">#B1EACD</color>
|
||||||
|
<color name="pb_end_color">#67b19c</color>
|
||||||
</resources>
|
</resources>
|
||||||
6
keystore.properties
Normal file
6
keystore.properties
Normal file
@ -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
|
||||||
@ -12,6 +12,18 @@ dependencyResolutionManagement {
|
|||||||
google()
|
google()
|
||||||
mavenCentral()
|
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")
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user