V1.0.1(2) 集成max

This commit is contained in:
litingting 2024-08-01 09:48:23 +08:00
parent 91f5a614af
commit 3ee020e175
31 changed files with 762 additions and 52 deletions

View File

@ -5,6 +5,12 @@ plugins {
alias(libs.plugins.android.application)
id("org.jetbrains.kotlin.android")
id ("kotlin-kapt")
id("com.google.gms.google-services")
id("com.google.firebase.crashlytics")
id("applovin-quality-service")
}
applovin{
apiKey = "C8XiiEAUrUDh6nWnlsJz8iEhrTyNLUctJ_xGloqZJHwJINes1b_Md0rTpgbdETXAq9eH5RVsJqqNTILCA2qnbA"
}
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
android {
@ -12,11 +18,12 @@ android {
compileSdk = 34
defaultConfig {
//com.lc.applock.security.locks
applicationId = "com.lc.applock.security.locks"
minSdk = 23
targetSdk = 34
versionCode = 1
versionName = "1.0.0"
versionCode = 2
versionName = "1.0.1"
setProperty("archivesBaseName", "AppLockMaster_v${versionName}_(${versionCode})_$timestamp")
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
@ -64,4 +71,16 @@ dependencies {
implementation("androidx.room:room-guava:$room_version")
testImplementation("androidx.room:room-testing:$room_version")
implementation("androidx.room:room-paging:$room_version")
//----------------firebase
implementation(platform("com.google.firebase:firebase-bom:33.1.1"))
implementation("com.google.firebase:firebase-crashlytics")
implementation("com.google.firebase:firebase-analytics")
implementation("com.applovin:applovin-sdk:+")
implementation("com.applovin.mediation:vungle-adapter:+")
implementation("com.applovin.mediation:mintegral-adapter:+")
implementation("com.applovin.mediation:bytedance-adapter:+")
implementation("com.applovin.mediation:unityads-adapter:+")
}

29
app/google-services.json Normal file
View File

@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "19226425093",
"project_id": "app-lock-master---lock-apps",
"storage_bucket": "app-lock-master---lock-apps.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:19226425093:android:30950fb84b7930a5a6a96c",
"android_client_info": {
"package_name": "com.lc.applock.security.locks"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyCThZKS8sq7PbqOnJwRZrpn9QH2nXbmwDM"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}

View File

@ -1,8 +1,15 @@
package com.lc.myapplication.security.locks;
import android.app.Application;
import android.content.Intent;
import android.util.Log;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.applovin.sdk.AppLovinMediationProvider;
import com.applovin.sdk.AppLovinSdk;
import com.applovin.sdk.AppLovinSdkConfiguration;
import com.applovin.sdk.AppLovinSdkInitializationConfiguration;
import com.lc.myapplication.security.locks.lockroom.SecurityLockDataBase;
import com.lc.myapplication.security.locks.lockroom.SecurityLockEntity;
import com.lc.myapplication.security.locks.tool.AppsManager;
@ -14,16 +21,26 @@ import java.util.List;
import java.util.Set;
public class Securitylocks extends Application {
public static String TAG = "=============";
public static boolean initSDkOK = false;
public static String initAction = "ACTION_INIT";
public static int userOption =0;
private String SDK_KEY = "i4k2zRVkJrBdZ2AlcVyiG2B1feL1OvMldT2ea5279uyuoGXtC_5uGTbx7Up_JehNT_K0TmZK42hpEAFFwlHLEb";
public static List<SecurityLockEntity> securityLockEntities = new ArrayList<>();
@Override
public void onCreate() {
super.onCreate();
MeValues.lock = this;
initMAxSDk();
MyTools.init(this);
Set<SecurityLockEntity> entities = AppsManager.queryapps(this);
//Log.d("--------en1","----------"+entities.size());
AppsManager.insertEntity(entities);
// Log.d("--------en2","----------"+securityLockEntities.size());
// Log.d("--------en2","----------"+securityLockEntities.size());
MyTools.RUNIO(new Runnable() {
@Override
public void run() {
@ -33,4 +50,21 @@ public class Securitylocks extends Application {
//Log.d("--------en3","----------"+securityLockEntities.size());
}
private void initMAxSDk() {
AppLovinSdkInitializationConfiguration initConfig = AppLovinSdkInitializationConfiguration.builder(SDK_KEY, this)
.setMediationProvider(AppLovinMediationProvider.MAX)
.build();
// Initialize the SDK with the configuration
AppLovinSdk.getInstance(this).initialize(initConfig, new AppLovinSdk.SdkInitializationListener() {
@Override
public void onSdkInitialized(AppLovinSdkConfiguration appLovinSdkConfiguration) {
initSDkOK = true;
Log.d(TAG, "-------------ok");
LocalBroadcastManager.getInstance(Securitylocks.this).sendBroadcast(new Intent(initAction));
}
});
// AppLovinSdk.getInstance(Securitylocks.this).showMediationDebugger();
}
}

View File

@ -1,6 +1,7 @@
package com.lc.myapplication.security.locks.activity;
import android.annotation.SuppressLint;
import android.app.FragmentManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
@ -20,8 +21,10 @@ import androidx.recyclerview.widget.RecyclerView;
import com.lc.myapplication.security.locks.R;
import com.lc.myapplication.security.locks.Securitylocks;
import com.lc.myapplication.security.locks.adapter.AllAppsAdapter;
import com.lc.myapplication.security.locks.dialog.MsgDialog;
import com.lc.myapplication.security.locks.lockroom.SecurityLockDataBase;
import com.lc.myapplication.security.locks.lockroom.SecurityLockEntity;
import com.lc.myapplication.security.locks.max.MaxManager;
import com.lc.myapplication.security.locks.tool.MyService;
import com.lc.myapplication.security.locks.tool.MyTools;
@ -39,6 +42,7 @@ public class AllAppActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_app);
MaxManager.onLoadAd();
all_apps_view = findViewById(R.id.all_apps_view);
all_apps_back = findViewById(R.id.all_apps_back);
all_main = findViewById(R.id.all_main);
@ -71,6 +75,8 @@ public class AllAppActivity extends AppCompatActivity {
runOnUiThread(new Runnable() {
@Override
public void run() {
AllAppsAdapter allAppsAdapter = new AllAppsAdapter(AllAppActivity.this, list);
all_apps_view.setAdapter(allAppsAdapter);
all_apps_view.setLayoutManager(new GridLayoutManager(AllAppActivity.this,3));

View File

@ -4,47 +4,68 @@ import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import com.lc.myapplication.security.locks.max.WelComManager;
import com.lc.myapplication.security.locks.Securitylocks;
import com.lc.myapplication.security.locks.max.CustomProgressBar;
import com.lc.myapplication.security.locks.tool.MyTools;
import com.lc.myapplication.security.locks.R;
import kotlin.Unit;
import kotlin.jvm.functions.Function0;
import kotlin.jvm.functions.Function1;
public class IntoActivity extends AppCompatActivity {
private CountDownTimer timer;
private CustomProgressBar progressBar;
private Long time = 11000L;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_into);
timer = new CountDownTimer(1000, 500) {
@Override
public void onTick(long millisUntilFinished) {
progressBar = findViewById(R.id.pb);
timer = WelComManager.initTimer(IntoActivity.this, time, new Function1<Long, Unit>() {
@Override
public Unit invoke(Long aLong) {
long number = time - aLong;
Double s = calculatePercentage(number, time);
Log.d(Securitylocks.TAG, "--------------l=" + s);
progressBar.setProgress(s.floatValue());
return null;
}
}, new Function0<Unit>() {
@Override
public void onFinish() {
public Unit invoke() {
progressBar.setProgress(100);
startSwitchActivity();
return null;
}
};
timego();
});
}
private void startSwitchActivity() {
String firstkey = MyTools.getPassword();
if (firstkey.isEmpty()){
if (firstkey.isEmpty()) {
startActivity(new Intent(IntoActivity.this, PassCodeActivity.class));
finish();
}else {
} else {
startActivity(new Intent(IntoActivity.this, MainActivity.class));
finish();
}
}
private void timego() {
timer.start();
private Double calculatePercentage(long number, long total) {
if (total == 0) {
return 0.00; // 防止除以0错误
}
return ((double) number / total) * 100;
}
@Override

View File

@ -23,6 +23,7 @@ import com.lc.myapplication.security.locks.adapter.LockedAppAdapter;
import com.lc.myapplication.security.locks.draw.MySpace;
import com.lc.myapplication.security.locks.lockroom.SecurityLockDataBase;
import com.lc.myapplication.security.locks.lockroom.SecurityLockEntity;
import com.lc.myapplication.security.locks.max.MaxManager;
import com.lc.myapplication.security.locks.tool.MyTools;
import java.util.ArrayList;
@ -39,6 +40,7 @@ public class LockedAppActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_locked_app);
MaxManager.onLoadAd();
locked_app = findViewById(R.id.locked_apps_view);
locked_back = findViewById(R.id.locked_back);
locked_main = findViewById(R.id.locked_main);

View File

@ -14,6 +14,9 @@ import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.lc.myapplication.security.locks.listener.ActionListener;
import com.lc.myapplication.security.locks.max.MaxManager;
import com.lc.myapplication.security.locks.max.onAdStatusListener;
import com.lc.myapplication.security.locks.tool.MyTools;
import com.lc.myapplication.security.locks.R;
import com.lc.myapplication.security.locks.draw.DrawInputView;
@ -30,38 +33,51 @@ public class PassCodeActivity extends AppCompatActivity {
private String inputkey;
private DrawInputView drawInputView;
private ImageView image_back;
private boolean showAd = false;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_passcode_word);
type = getIntent().getIntExtra(MeValues.KEYCODE_TYPE,0);
MaxManager.onLoadAd();
type = getIntent().getIntExtra(MeValues.KEYCODE_TYPE, 0);
showAd = getIntent().getBooleanExtra(MeValues.KEY_SHOW, false);
if (showAd) {
showMax(new ActionListener() {
@Override
public void onAction() {
}
});
}
initfindview();
int result = 0;
int resourceId = this.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = this.getResources().getDimensionPixelSize(resourceId);
}
Log.d("------height","------height"+result);
Log.d("------height", "------height" + result);
gotoSwitchKeyType();
}
private void gotoSwitchKeyType() {
if (type == 0){
if (type == 0) {
image_back.setVisibility(View.GONE);
passcode_name.setText(getString(R.string.set_passcode));
passcode_step.setText(getString(R.string.passcode_next));
passcode_step.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(PassCodeActivity.this,PassCodeActivity.class);
intent.putExtra(MeValues.KEYCODE_TYPE,1);
intent.putExtra(MeValues.FIRST_KEY,inputkey);
Intent intent = new Intent(PassCodeActivity.this, PassCodeActivity.class);
intent.putExtra(MeValues.KEYCODE_TYPE, 1);
intent.putExtra(MeValues.FIRST_KEY, inputkey);
startActivity(intent);
finish();
}
});
}else if (type == 1){
} else if (type == 1) {
image_back.setVisibility(View.GONE);
passcode_name.setText(getString(R.string.setagain));
passcode_step.setText(getString(R.string.passcode_goon));
@ -69,19 +85,19 @@ public class PassCodeActivity extends AppCompatActivity {
@Override
public void onClick(View v) {
String passkey = getIntent().getStringExtra(MeValues.FIRST_KEY);
if (Objects.equals(passkey,inputkey)){
if (Objects.equals(passkey, inputkey)) {
MyTools.setPassword(passkey);
Intent intent = new Intent(PassCodeActivity.this, MainActivity.class);
startActivity(intent);
finish();
}else {
Toast.makeText(PassCodeActivity.this,getString(R.string.code_not_same),Toast.LENGTH_LONG).show();
} else {
Toast.makeText(PassCodeActivity.this, getString(R.string.code_not_same), Toast.LENGTH_LONG).show();
drawInputView.ClearInputCode();
passcode_step.setVisibility(View.GONE);
}
}
});
}else if (type == 2){
} else if (type == 2) {
image_back.setVisibility(View.VISIBLE);
passcode_name.setText(getString(R.string.change_passcode));
passcode_step.setText(getString(R.string.passcode_change));
@ -127,4 +143,17 @@ public class PassCodeActivity extends AppCompatActivity {
image_back = findViewById(R.id.passcode_back);
}
private void showMax(ActionListener listener) {
MaxManager.ShowAd(PassCodeActivity.this, new onAdStatusListener() {
@Override
public void onAdStatus(int type) {
if (type == MaxManager.type_show_close || type == MaxManager.type_show_fail || type == MaxManager.type_no_cache) {
if (listener != null)
listener.onAction();
}
}
});
}
}

View File

@ -20,6 +20,7 @@ import com.lc.myapplication.security.locks.adapter.TuijianAdapter;
import com.lc.myapplication.security.locks.draw.MySpace;
import com.lc.myapplication.security.locks.lockroom.SecurityLockDataBase;
import com.lc.myapplication.security.locks.lockroom.SecurityLockEntity;
import com.lc.myapplication.security.locks.max.MaxManager;
import com.lc.myapplication.security.locks.tool.MyService;
import com.lc.myapplication.security.locks.tool.MyTools;
@ -39,6 +40,7 @@ public class TestimonialsActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_testimonials);
MaxManager.onLoadAd();
tuijian_re = findViewById(R.id.tuijian_apps_view);
tuijian_back = findViewById(R.id.tuijian_back);
tuijain_main = findViewById(R.id.tuijian_main);

View File

@ -1,31 +1,40 @@
package com.lc.myapplication.security.locks.adapter;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.lc.myapplication.security.locks.Securitylocks;
import com.lc.myapplication.security.locks.activity.AllAppActivity;
import com.lc.myapplication.security.locks.databinding.AllAppsViewBinding;
import com.lc.myapplication.security.locks.listener.AppLockListener;
import com.lc.myapplication.security.locks.dialog.MsgDialog;
import com.lc.myapplication.security.locks.listener.ActionListener;
import com.lc.myapplication.security.locks.lockroom.SecurityLockDataBase;
import com.lc.myapplication.security.locks.lockroom.SecurityLockEntity;
import com.lc.myapplication.security.locks.max.MaxManager;
import com.lc.myapplication.security.locks.max.onAdStatusListener;
import com.lc.myapplication.security.locks.tool.AppsManager;
import com.lc.myapplication.security.locks.tool.MyTools;
import com.lc.myapplication.security.locks.value.MeValues;
import java.util.ArrayList;
import java.util.List;
public class AllAppsAdapter extends RecyclerView.Adapter<AllAppsAdapter.AllAppVH> {
private Context mcon;
private AllAppActivity mActivity;
private List<SecurityLockEntity> securityLockEntities;
private MsgDialog msgDialog = null;
private onAdStatusListener listener;
public void setListener(onAdStatusListener listener) {
this.listener = listener;
}
@NonNull
@Override
@ -33,8 +42,8 @@ public class AllAppsAdapter extends RecyclerView.Adapter<AllAppsAdapter.AllAppVH
return super.toString();
}
public AllAppsAdapter(Context context, List<SecurityLockEntity> entities) {
mcon = context;
public AllAppsAdapter(AllAppActivity context, List<SecurityLockEntity> entities) {
mActivity = context;
this.securityLockEntities = entities;
}
@ -42,7 +51,6 @@ public class AllAppsAdapter extends RecyclerView.Adapter<AllAppsAdapter.AllAppVH
@NonNull
@Override
public AllAppVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
AllAppsViewBinding allAppsViewBinding = AllAppsViewBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
return new AllAppVH(allAppsViewBinding);
}
@ -53,7 +61,7 @@ public class AllAppsAdapter extends RecyclerView.Adapter<AllAppsAdapter.AllAppVH
SecurityLockEntity entity = securityLockEntities.get(position);
String appsSign = entity.getApplsign();
holder.allAppsViewBinding.appReName.setText(appsSign);
Drawable drawable = AppsManager.getapplogo(mcon, entity.getApppakname());
Drawable drawable = AppsManager.getapplogo(MeValues.lock, entity.getApppakname());
holder.allAppsViewBinding.appReLogo.setImageDrawable(drawable);
// boolean locksuccess = entity.isLocksuccess();
@ -70,16 +78,48 @@ public class AllAppsAdapter extends RecyclerView.Adapter<AllAppsAdapter.AllAppVH
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
MyTools.settest(entity.getApppakname(), locksuccess);
//Log.d("----sign1", "----------" + entity.getApppakname() + "-----sign1" + isChecked);
entity.setLocksuccess(isChecked);
//Log.d("----sign2", "----------" + isChecked);
MyTools.RUNIO(new Runnable() {
@Override
public void run() {
SecurityLockDataBase.getSecurityLockDataBase().getsecurityLockDAO().Updataentity(entity);
// Log.d("----sign2", "----------" + entity.getApppakname() + "--------" + entity.isLocksuccess());
}
});
Log.d(Securitylocks.TAG, "----------" + entity.getApppakname() + "-----" + isChecked);
if (Securitylocks.userOption % 5 == 0) {
showMax(new ActionListener() {
@Override
public void onAction() {
MyTools.settest(entity.getApppakname(), locksuccess);
entity.setLocksuccess(isChecked);
MyTools.RUNIO(new Runnable() {
@Override
public void run() {
SecurityLockDataBase.getSecurityLockDataBase().getsecurityLockDAO().Updataentity(entity);
// Log.d("----sign2", "----------" + entity.getApppakname() + "--------" + entity.isLocksuccess());
}
});
String msg = "";
if (isChecked) {
msg = entity.getApplsign() + "locked success";
} else {
msg = entity.getApplsign() + "unlocked success";
}
msgDialog = new MsgDialog(msg);
msgDialog.show(mActivity.getSupportFragmentManager(), "");
}
});
} else {
MyTools.settest(entity.getApppakname(), locksuccess);
entity.setLocksuccess(isChecked);
MyTools.RUNIO(new Runnable() {
@Override
public void run() {
SecurityLockDataBase.getSecurityLockDataBase().getsecurityLockDAO().Updataentity(entity);
// Log.d("----sign2", "----------" + entity.getApppakname() + "--------" + entity.isLocksuccess());
}
});
}
Securitylocks.userOption++;
}
});
@ -99,4 +139,17 @@ public class AllAppsAdapter extends RecyclerView.Adapter<AllAppsAdapter.AllAppVH
allAppsViewBinding = itemView;
}
}
private void showMax(ActionListener listener) {
MaxManager.ShowAd(mActivity, new onAdStatusListener() {
@Override
public void onAdStatus(int type) {
if (type == MaxManager.type_show_close || type == MaxManager.type_show_fail || type == MaxManager.type_no_cache) {
if (listener != null)
listener.onAction();
}
}
});
}
}

View File

@ -11,8 +11,11 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.lc.myapplication.security.locks.databinding.LockedAppsViewBinding;
import com.lc.myapplication.security.locks.listener.ActionListener;
import com.lc.myapplication.security.locks.lockroom.SecurityLockDataBase;
import com.lc.myapplication.security.locks.lockroom.SecurityLockEntity;
import com.lc.myapplication.security.locks.max.MaxManager;
import com.lc.myapplication.security.locks.max.onAdStatusListener;
import com.lc.myapplication.security.locks.tool.AppsManager;
import com.lc.myapplication.security.locks.tool.MyTools;
@ -67,4 +70,7 @@ public class LockedAppAdapter extends RecyclerView.Adapter<LockedAppAdapter.Lock
lockedAppsViewBinding = itemView;
}
}
}

View File

@ -1,5 +1,6 @@
package com.lc.myapplication.security.locks.adapter;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.Log;
@ -11,9 +12,15 @@ import android.widget.CompoundButton;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.lc.myapplication.security.locks.Securitylocks;
import com.lc.myapplication.security.locks.activity.TestimonialsActivity;
import com.lc.myapplication.security.locks.databinding.TuijianAppsViewBinding;
import com.lc.myapplication.security.locks.dialog.MsgDialog;
import com.lc.myapplication.security.locks.listener.ActionListener;
import com.lc.myapplication.security.locks.lockroom.SecurityLockDataBase;
import com.lc.myapplication.security.locks.lockroom.SecurityLockEntity;
import com.lc.myapplication.security.locks.max.MaxManager;
import com.lc.myapplication.security.locks.max.onAdStatusListener;
import com.lc.myapplication.security.locks.tool.AppsManager;
import com.lc.myapplication.security.locks.tool.MyTools;
@ -25,8 +32,9 @@ import java.util.Random;
public class TuijianAdapter extends RecyclerView.Adapter<TuijianAdapter.TuijianAppVH>{
private TuijianAppsViewBinding tuijianAppsViewBinding;
private List<SecurityLockEntity> securityLockEntities;
private Context mycon;
public TuijianAdapter(Context context,List<SecurityLockEntity> list){
private TestimonialsActivity mycon;
private MsgDialog msgDialog = null;
public TuijianAdapter(TestimonialsActivity context, List<SecurityLockEntity> list){
mycon = context;
securityLockEntities = list;
}
@ -55,6 +63,23 @@ public class TuijianAdapter extends RecyclerView.Adapter<TuijianAdapter.TuijianA
holder.tuijianAppsViewBinding.tuijianReSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (Securitylocks.userOption % 5 == 0){
showMax(new ActionListener() {
@Override
public void onAction() {
String msg = "";
if (isChecked) {
msg = entity.getApplsign() + "locked success";
} else {
msg = entity.getApplsign() + "unlocked success";
}
msgDialog = new MsgDialog(msg);
msgDialog.show(mycon.getSupportFragmentManager(), "");
}
});
}
Securitylocks.userOption++;
MyTools.settest(entity.getApppakname(), locksuccess);
entity.setLocksuccess(isChecked);
MyTools.RUNIO(new Runnable() {
@ -83,4 +108,16 @@ public class TuijianAdapter extends RecyclerView.Adapter<TuijianAdapter.TuijianA
tuijianAppsViewBinding = itemView;
}
}
private void showMax(ActionListener listener) {
MaxManager.ShowAd(mycon, new onAdStatusListener() {
@Override
public void onAdStatus(int type) {
if (type == MaxManager.type_show_close || type == MaxManager.type_show_fail || type == MaxManager.type_no_cache) {
if (listener != null)
listener.onAction();
}
}
});
}
}

View File

@ -0,0 +1,47 @@
package com.lc.myapplication.security.locks.dialog
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import com.lc.myapplication.security.locks.databinding.MsgDialogBinding
class MsgDialog(private var message: String) : DialogFragment() {
private lateinit var vb: MsgDialogBinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
vb = MsgDialogBinding.inflate(layoutInflater)
dialog?.run {
setCanceledOnTouchOutside(true)
window?.run {
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
}
}
vb.msg.text = message
initCLick()
return vb.root
}
private fun initCLick() {
vb.tvOk.setOnClickListener {
dismiss()
}
}
}

View File

@ -52,6 +52,7 @@ public class SettingDialog extends DialogFragment {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), PassCodeActivity.class);
intent.putExtra(MeValues.KEY_SHOW,true);
intent.putExtra(MeValues.KEYCODE_TYPE, 2);
startActivity(intent);
}

View File

@ -0,0 +1,5 @@
package com.lc.myapplication.security.locks.listener;
public interface ActionListener {
void onAction( );
}

View File

@ -0,0 +1,62 @@
package com.lc.myapplication.security.locks.max
import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.LinearGradient
import android.graphics.Paint
import android.graphics.RectF
import android.graphics.Shader
import android.util.AttributeSet
import android.view.View
class CustomProgressBar(context: Context, attrs: AttributeSet?) : View(context, attrs) {
private var progress = 0f // 当前进度
private val maxProgress = 100f // 最大进度
private val progressBarHeight = 20f // 进度条高度
private val cornerRadius = 10f // 圆角半径
private val backgroundColor = Color.parseColor("#26000000")
private val startColor = Color.parseColor("#FF9ce8ff") // 起始颜色
private val middleColor = Color.parseColor("#FFa4c4fb") // 中间颜色
private val endColor = Color.parseColor("#FFbfa4ee") // 结束颜色
private val paint = Paint()
private val paintTow = Paint()
init {
paint.style = Paint.Style.FILL
paint.isAntiAlias = true
paintTow.style = Paint.Style.FILL
paintTow.isAntiAlias = true
}
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
// 绘制底色矩形
paint.shader = null // 重置着色器
paint.color = backgroundColor
val backgroundRect = RectF(0f, (height / 2 - progressBarHeight / 2), width.toFloat(), (height / 2 + progressBarHeight / 2))
canvas.drawRoundRect(backgroundRect, cornerRadius, cornerRadius, paint)
// 计算进度条的宽度
val progressBarWidth = (width * progress / maxProgress)
// 创建颜色渐变对象
val gradient = LinearGradient(0f, 0f, width.toFloat(), 0f, intArrayOf(startColor, middleColor, endColor), null, Shader.TileMode.CLAMP)
paintTow.shader = gradient
// 绘制带圆角的进度条矩形
val rect = RectF(0f, (height / 2 - progressBarHeight / 2), progressBarWidth.toFloat(), (height / 2 + progressBarHeight / 2))
canvas.drawRoundRect(rect, cornerRadius, cornerRadius, paintTow)
}
fun getProgress():Float{
return progress
}
// 设置进度
fun setProgress(progress: Float) {
this.progress = progress
invalidate() // 请求重绘
}
}

View File

@ -0,0 +1,11 @@
package com.lc.myapplication.security.locks.max;
import com.applovin.mediation.MaxAd;
public interface MaxListener {
void onFail(MaxAd ad);
void onShowSuccess(MaxAd ad);
void onHidden();
}

View File

@ -0,0 +1,165 @@
package com.lc.myapplication.security.locks.max;
import android.app.Activity;
import android.util.Log;
import androidx.annotation.NonNull;
import com.applovin.mediation.MaxAd;
import com.applovin.mediation.MaxAdListener;
import com.applovin.mediation.MaxError;
import com.applovin.mediation.ads.MaxInterstitialAd;
import com.lc.myapplication.security.locks.Securitylocks;
import com.lc.myapplication.security.locks.value.MeValues;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MaxManager {
/**
d642099557241756
599cd93d978a2f31
40f5a50c609f9280
*/
private static final String one_AD = "d642099557241756";
private static final String two_Ad = "599cd93d978a2f31";
private static final String three_ad = "40f5a50c609f9280";
public static final int type_no_cache = 0;
public static final int type_has_cache = 1;
public static final int type_show_success = 2;
public static final int type_show_close = 3;
public static final int type_show_fail = 4;
private static List<MaxInterstitialAd> adList = new ArrayList<>();
public static MaxInterstitialAd getAd(List<MaxInterstitialAd> list) {
Collections.shuffle(list);
for (MaxInterstitialAd ad : list) {
if (ad.isReady()) {
return ad;
}
}
return null;
}
public static List<MaxInterstitialAd> onLoadAd() {
if (adList.isEmpty()) {
MaxInterstitialAd AdT = new MaxInterstitialAd(two_Ad, MeValues.lock);
MaxInterstitialAd AdOne = new MaxInterstitialAd(one_AD, MeValues.lock);
MaxInterstitialAd AdThree = new MaxInterstitialAd(three_ad,MeValues.lock);
adList.add(AdOne);
adList.add(AdT);
adList.add(AdThree);
}
for (MaxInterstitialAd ad : adList) {
if (!ad.isReady()) {
setMyListener(ad, new MaxListener() {
@Override
public void onFail(MaxAd ad) {
}
@Override
public void onShowSuccess(MaxAd ad) {
}
@Override
public void onHidden() {
}
});
ad.loadAd();
}
}
return adList;
}
public static void setMyListener(MaxInterstitialAd ad, MaxListener maxListener) {
ad.setListener(new MaxAdListener() {
@Override
public void onAdLoaded(@NonNull MaxAd maxAd) {
Log.d(Securitylocks.TAG, "-------onAdLoaded-----maxAd="+maxAd.getAdUnitId());
}
@Override
public void onAdDisplayed(@NonNull MaxAd maxAd) {
Log.d(Securitylocks.TAG, "-------onAdDisplayed-----maxAd="+maxAd.getAdUnitId());
maxListener.onShowSuccess(maxAd);
}
@Override
public void onAdHidden(@NonNull MaxAd maxAd) {
Log.d(Securitylocks.TAG, "-------onAdHidden-----maxAd="+maxAd.getAdUnitId());
maxListener.onHidden();
setMyListener(ad, new MaxListener() {
@Override
public void onFail(MaxAd ad) {
}
@Override
public void onShowSuccess(MaxAd ad) {
}
@Override
public void onHidden() {
}
});
ad.loadAd();
}
@Override
public void onAdClicked(@NonNull MaxAd maxAd) {
}
@Override
public void onAdLoadFailed(@NonNull String s, @NonNull MaxError maxError) {
Log.d(Securitylocks.TAG, "-------onAdLoadFailed-----s="+s+"-----maxError="+maxError.getCode()+"----="+maxError.getMessage());
}
@Override
public void onAdDisplayFailed(@NonNull MaxAd maxAd, @NonNull MaxError maxError) {
maxListener.onFail(maxAd);
}
});
}
public static void ShowAd(Activity activity, onAdStatusListener listener) {
MaxInterstitialAd ad = MaxManager.getAd(adList);
if (ad == null) {
listener.onAdStatus(type_no_cache);
} else {
listener.onAdStatus(type_has_cache);
MaxManager.setMyListener(ad, new MaxListener() {
@Override
public void onFail(MaxAd ad) {
listener.onAdStatus(type_show_fail);
}
@Override
public void onShowSuccess(MaxAd ad) {
listener.onAdStatus(type_show_success);
}
@Override
public void onHidden() {
listener.onAdStatus(type_show_close);
}
});
ad.showAd(activity);
}
}
}

View File

@ -0,0 +1,81 @@
package com.lc.myapplication.security.locks.max
import android.app.Activity
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.CountDownTimer
import android.util.Log
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.applovin.mediation.ads.MaxInterstitialAd
import com.lc.myapplication.security.locks.Securitylocks
object WelComManager {
private lateinit var timer: CountDownTimer
private var need_Show = true
private lateinit var lists: List<MaxInterstitialAd>
@JvmStatic
fun initTimer(
activity: Activity,
countTime: Long,
timAction: (time: Long) -> Unit,
goMainAction: () -> Unit
): CountDownTimer {
need_Show = true
timer = object : CountDownTimer(countTime, 100) {
override fun onTick(millisUntilFinished: Long) {
timAction.invoke(millisUntilFinished)
if (need_Show) {
MaxManager.ShowAd(activity) {
Log.d(Securitylocks.TAG, "--onTick----------it=$it")
if (it == MaxManager.type_has_cache) {
need_Show = false
}
if (it == MaxManager.type_show_close || it == MaxManager.type_show_fail) {
Log.d(Securitylocks.TAG, "--onTick---------enter")
goMainAction.invoke()
}
}
}
}
override fun onFinish() {
if (need_Show) {
MaxManager.ShowAd(activity) {
if (it == MaxManager.type_show_close || it == MaxManager.type_show_fail || it == MaxManager.type_no_cache) {
Log.d(Securitylocks.TAG, "--onFinish---------enter")
goMainAction.invoke()
}
}
}
}
}
startAd(activity)
return timer
}
private fun startAd(activity: Activity) {
if (!Securitylocks.initSDkOK) {
LocalBroadcastManager.getInstance(activity)
.registerReceiver(object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
lists = MaxManager.onLoadAd()
timer.start()
Log.d(Securitylocks.TAG, "------------1sucess")
}
}, IntentFilter(Securitylocks.initAction))
} else {
lists = MaxManager.onLoadAd()
timer.start()
Log.d(Securitylocks.TAG, "------------2sucess")
}
}
}

View File

@ -0,0 +1,6 @@
package com.lc.myapplication.security.locks.max;
public interface onActionListener {
void onAction();
}

View File

@ -0,0 +1,6 @@
package com.lc.myapplication.security.locks.max;
public interface onAdStatusListener {
void onAdStatus(int type);
}

View File

@ -11,4 +11,8 @@ public class MeValues {
public static String KEYCODE_TYPE = "password_type";
public static String sh_password = "share_password";
public static final String FIRST_KEY = "first key";
public static String KEY_SHOW = "KEY_SHOW";
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/btn_color" />
<corners android:radius="9dp" />
</shape>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white" />
<corners android:radius="9dp" />
</shape>

View File

@ -6,8 +6,18 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.IntoActivity">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/into"/>
android:background="@mipmap/into" />
<com.lc.myapplication.security.locks.max.CustomProgressBar
android:id="@+id/pb"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_alignParentBottom="true"
android:layout_marginStart="25dp"
android:layout_marginEnd="25dp"
android:layout_marginBottom="70dp" />
</RelativeLayout>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="27dp"
android:layout_marginEnd="27dp"
android:gravity="center"
android:background="@drawable/msg_dialog_bg"
android:orientation="vertical"
android:padding="10dp">
<TextView
android:id="@+id/msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/app_name"
android:gravity="center"
android:textColor="@color/black"
android:textSize="17sp" />
<TextView
android:id="@+id/tv_ok"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginTop="29dp"
android:background="@drawable/btn_bg"
android:gravity="center"
android:padding="12dp"
android:text="@string/ok"
android:textColor="@color/white"
android:textSize="16sp" />
</LinearLayout>
</FrameLayout>

View File

@ -2,5 +2,6 @@
<resources>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="color_bg">#E4FCFD</color>
<color name="color_bg">#E5FCFD</color>
<color name="btn_color">#78f2ed</color>
</resources>

View File

@ -15,6 +15,7 @@
<string name="passcode_next">next</string>
<string name="passcode_goon">go on</string>
<string name="passcode_change">change</string>
<string name="ok">OK</string>
<string name="code_not_same">The password is not the same twice</string>
<string name="change_success">Change to success</string>
<string name="dialog_permiss">PermissionsTo use App Lock properly, please allow the following</string>

View File

@ -2,4 +2,11 @@
plugins {
alias(libs.plugins.android.application) apply false
id("org.jetbrains.kotlin.android") version "1.9.0" apply false
id("com.google.gms.google-services") version "4.3.15" apply false
id ("com.google.firebase.crashlytics") version "2.9.2" apply false
}
buildscript {
dependencies {
classpath("com.applovin.quality:AppLovinQualityServiceGradlePlugin:+")
}
}

View File

@ -1,5 +1,5 @@
[versions]
agp = "8.4.0"
agp = "8.1.3"
junit = "4.13.2"
junitVersion = "1.2.1"
espressoCore = "3.6.1"

6
keystore.properties Normal file
View File

@ -0,0 +1,6 @@
app_name=App Lock Master
package_name=com.lc.applock.security.locks
keystoreFile=app/SecurityLocks.jks
key_alias=securitylockskey0
key_store_password=Security Locks
key_password=Security Locks

View File

@ -9,6 +9,7 @@ pluginManagement {
}
mavenCentral()
gradlePluginPortal()
maven { url = uri("https://artifacts.applovin.com/android") }
}
}
dependencyResolutionManagement {
@ -17,9 +18,11 @@ dependencyResolutionManagement {
google()
mavenCentral()
maven("https://jitpack.io")
maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") }
maven { url = uri("https://artifact.bytedance.com/repository/pangle") }
}
}
rootProject.name = "Security Locks"
rootProject.name = "App Lock Master"
include(":app")