Commit e6d131ed authored by wanglei's avatar wanglei

------------同步到主包5.15 22:05分线上版本------------

parent 686b488a
#Wed May 15 09:35:48 CST 2024
#Wed May 15 15:19:32 CST 2024
gradle.version=8.0
......@@ -140,4 +140,5 @@ dependencies {
kapt("androidx.room:room-compiler:$roomVersion")
implementation("androidx.room:room-ktx:$roomVersion")
implementation 'com.makeramen:roundedimageview:2.3.0'
implementation 'com.github.ihsg:PatternLocker:2.5.7'
}
......@@ -15,6 +15,7 @@
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission
android:name="android.permission.DELETE_CACHE_FILES"
tools:ignore="ProtectedPermissions" />
......@@ -143,12 +144,6 @@
<activity
android:name=".ui.home.MainActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.page.JunkCleanActivity"
android:exported="false"
android:screenOrientation="portrait"
android:theme="@style/Theme.clean"
tools:ignore="LockedOrientationActivity" />
<activity
android:name=".ui.page.RecentlyActivity"
android:exported="false"
......@@ -302,6 +297,23 @@
<activity
android:name=".ui.page.photocompress.photo.PreviewCompressionPhotoActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.page.applock.AppLockActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.page.applock.AppLockManagerActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.page.speed.SpeedActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.page.speed.SpeedFinishActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.page.speed.BatteryOptimizerActivity"
android:screenOrientation="portrait" />
<service android:name=".ui.page.applock.ProtectorService" />
<meta-data
android:name="com.facebook.sdk.ApplicationId"
......
......@@ -21,8 +21,11 @@ import com.zxhyis.toolss.ad.ComUtils
import com.zxhyis.toolss.ad.ComUtils.isMainProcess
import com.zxhyis.toolss.ad.ConfigHelper
import com.zxhyis.toolss.ad.EventHelper
import com.zxhyis.toolss.ad.FIRST_LAUNCH_TIME_KEY
import com.zxhyis.toolss.ad.GravitySensorManager
import com.zxhyis.toolss.ad.bean.EventParams
import com.zxhyis.toolss.ad.queryDataStoreBlock
import com.zxhyis.toolss.ad.saveDataStoreBlock
import com.zxhyis.toolss.common.notification.ActionBroadcast.Companion.initBroadcast
import com.zxhyis.toolss.common.notification.NotificationBroadcast
import com.zxhyis.toolss.common.notification.NotificationHelper
......@@ -97,6 +100,11 @@ class FileApp : Application() {
initBroadcast()
newInitBroadcast()
//第一次启动时间
val firstLaunchTime = queryDataStoreBlock(FIRST_LAUNCH_TIME_KEY, 0L)
if (firstLaunchTime == 0L) {
saveDataStoreBlock(FIRST_LAUNCH_TIME_KEY, System.currentTimeMillis())
}
}
......
......@@ -185,7 +185,7 @@ object ComUtils {
fun getComConfigString(): String {
val str = FileApp.fContext.queryDataStoreBlock(getStringKey("comConfig"), "")
val defaultStr = AESHelper.decrypt(
"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"
)
if (TextUtils.isEmpty(str)) {
......
......@@ -17,6 +17,14 @@ import com.zxhyis.toolss.ui.page.SplashActivity
object ConfigHelper {
var isOpenNotification = false
var ifAppLock = false
get() {
return SPUtils.getInstance().getBoolean("ifAppLock", field)
}
set(value) {
field = value
SPUtils.getInstance().put("ifAppLock", value, true)
}
var junkSizeClean = 0L
get() {
return SPUtils.getInstance().getLong("junkSizeClean", field)
......
......@@ -40,11 +40,14 @@ object PushManager {
* @param actionId 功能或者场景的id
*/
fun isPush(actionId: Int, eventParams: EventParams? = null): Boolean {
// 新用户是否显示
val pushManagement = ComUtils.getPushConfig()
if (!newUserPush(pushManagement.newuser_avoid_time)) {
LogEx.logDebug(TAG, "新用户不推送")
EventHelper.event("pushCircleOrder_isPush", "新用户不推送", eventParams = eventParams)
// 新用户是否显示
val newUserAvoidFlag = newUserPush(pushManagement.newuser_avoid_time)
val newUserLog = "新用户推送 newuser_avoid_time=${pushManagement.newuser_avoid_time} newUserFlag=$newUserAvoidFlag"
LogEx.logDebug(TAG, newUserLog)
if (!newUserAvoidFlag) {
EventHelper.event("pushCircleOrder_isPush", newUserLog, eventParams = eventParams)
return false
}
......@@ -58,9 +61,22 @@ object PushManager {
//是否上次推送间隔大于配置间隔
val isOganic = UserChancelEx.isOrganicUser()
val interval = if (isOganic) pushManagement.o_push_interval else pushManagement.all_push_interval
if (!canPushNextTime(interval)) {
LogEx.logDebug(TAG, "推送总间隔不推送")
EventHelper.event("pushCircleOrder_isPush", "推送总间隔不推送", eventParams = eventParams)
val intervalFlog = canPushNextTime(interval)
val intervalLog = "推送总间隔推送 interval=$interval intervalFlog=$intervalFlog"
LogEx.logDebug(TAG, intervalLog)
if (!intervalFlog) {
EventHelper.event("pushCircleOrder_isPush", intervalLog, eventParams = eventParams)
return false
}
//当前类型通知推送间隔是否大于配置间隔
val pushCfg: PushCfg? = ComUtils.getPushTypeData(actionId.toString())
val pushInterval = pushCfg?.push_interval ?: 0
val actionIdIntervalFlag = actionTypeCanPsh(actionId)
val log = "当前通知类型间隔推送 actionId=$actionId pushInterval=$pushInterval actionIdIntervalFlag=$actionIdIntervalFlag"
LogEx.logDebug(TAG, log)
if (!actionIdIntervalFlag) {
EventHelper.event("pushCircleOrder_isPush", log, eventParams = eventParams)
return false
}
......@@ -71,14 +87,15 @@ object PushManager {
return false
}
//进程是否是活的
// Log.d("MXL", "postNotification")
if (!TextUtils.isEmpty(JinChengCheck.getAliveProcessName(FileApp.fContext))) {
LogEx.logDebug(TAG, "app当前进程未拉起不推送")
EventHelper.event("pushCircleOrder_isPush", "app当前进程未拉起不推送", eventParams = eventParams)
return false
}
return true
}
......
......@@ -19,7 +19,7 @@ class PushCfg(
const val ID_JUNK_CLEAN_PUSH = 11001 //清理垃圾
const val ID_BOOST_PUSH = 11002 //性能优化
const val ID_VIRUS_PUSH = 11003//扫描病毒
const val ID_BATTERY_PUSH = 11004// 电量优化
const val ID_BATTERY_PUSH = 11004// 电量信息
const val ID_COOL_PUSH = 11005//手机降温
const val ID_BIGFILE_PUSH = 11006// 大文件清理
const val ID_DUPLICATE_FILE_PUSH = 11007//文件备份,重复文件,相似文件
......@@ -32,6 +32,7 @@ class PushCfg(
const val ID_RECENT_USE_APP = 11014//最近使用APP
const val ID_SIMILAR_IMAGE = 11015//清理相似图片
const val ID_CLEAN_SPEAKER = 11016//清理扬声器
const val ID_BATTERY_OPTIMIZATION=11017//电池优化
//场景触发push actionId 被动发送
const val ID_WIFI_PUSH = 22001//连接wifi时
......@@ -40,7 +41,7 @@ class PushCfg(
const val ID_CHARGE = 22004//充电
const val ID_LOW_BATTERY_PUSH = 22005//电量低于阈值时
const val ID_LOW_RAM_PUSH = 22007//内存低于阈值
const val ID_PHONE_ACCELERATE=22011//手机加速
}
}
......
......@@ -22,6 +22,8 @@ import com.zxhyis.toolss.ui.page.notifaction.NotificationCleanActivity
import com.zxhyis.toolss.ui.page.notifaction.NotificationGuestActivity
import com.zxhyis.toolss.ui.page.photocompress.photo.StartCompressionPhotoActivity
import com.zxhyis.toolss.ui.page.recentusage.RecentAppActivity
import com.zxhyis.toolss.ui.page.speed.BatteryOptimizerActivity
import com.zxhyis.toolss.ui.page.speed.SpeedActivity
/**
......@@ -94,6 +96,10 @@ class NotificationBroadcast : BroadcastReceiver() {
cancelNotification(context)
}
PushCfg.ID_BATTERY_OPTIMIZATION -> {
context.startActivity<BatteryOptimizerActivity>(flag = FLAG_ACTIVITY_NEW_TASK)
cancelNotification(context)
}
//================================被动广播=========================================
......@@ -117,8 +123,8 @@ class NotificationBroadcast : BroadcastReceiver() {
cancelNotification(context)
}
PushCfg.ID_LOW_RAM_PUSH -> {
context.startActivity<RecentAppActivity>(flag = FLAG_ACTIVITY_NEW_TASK)
PushCfg.ID_PHONE_ACCELERATE -> {
context.startActivity<SpeedActivity>(flag = FLAG_ACTIVITY_NEW_TASK)
cancelNotification(context)
}
}
......@@ -127,14 +133,14 @@ class NotificationBroadcast : BroadcastReceiver() {
}
}
private fun cancelNotification(context: Context) {
val id = NotificationHelper.notificationId
val notificationManager = NotificationManagerCompat.from(context)
notificationManager.cancel(id)
}
companion object {
const val action = "com.file.notification.NotificationBroadcast"
fun cancelNotification(context: Context) {
val id = NotificationHelper.notificationId
val notificationManager = NotificationManagerCompat.from(context)
notificationManager.cancel(id)
}
}
}
\ No newline at end of file
......@@ -27,6 +27,7 @@ import com.zxhyis.toolss.ad.ComUtils
import com.zxhyis.toolss.ad.EventHelper
import com.zxhyis.toolss.ad.bean.EventParams
import com.zxhyis.toolss.ad.bean.PushCfg.Companion.ID_APP_MANAGER
import com.zxhyis.toolss.ad.bean.PushCfg.Companion.ID_BATTERY_OPTIMIZATION
import com.zxhyis.toolss.ad.bean.PushCfg.Companion.ID_BATTERY_PUSH
import com.zxhyis.toolss.ad.bean.PushCfg.Companion.ID_BIGFILE_PUSH
import com.zxhyis.toolss.ad.bean.PushCfg.Companion.ID_CHARGE
......@@ -37,6 +38,7 @@ import com.zxhyis.toolss.ad.bean.PushCfg.Companion.ID_JUNK_CLEAN_PUSH
import com.zxhyis.toolss.ad.bean.PushCfg.Companion.ID_LOW_BATTERY_PUSH
import com.zxhyis.toolss.ad.bean.PushCfg.Companion.ID_LOW_RAM_PUSH
import com.zxhyis.toolss.ad.bean.PushCfg.Companion.ID_NETWORK_TRAFFIC
import com.zxhyis.toolss.ad.bean.PushCfg.Companion.ID_PHONE_ACCELERATE
import com.zxhyis.toolss.ad.bean.PushCfg.Companion.ID_PHOTO_COMPRESS
import com.zxhyis.toolss.ad.bean.PushCfg.Companion.ID_RECENT_USE_APP
import com.zxhyis.toolss.ad.bean.PushCfg.Companion.ID_SIMILAR_IMAGE
......@@ -74,7 +76,6 @@ object NotificationHelper {
val supportNotification = arrayListOf(
ID_JUNK_CLEAN_PUSH,
ID_VIRUS_PUSH,
ID_BATTERY_PUSH,
ID_BIGFILE_PUSH,
ID_PHOTO_COMPRESS,
ID_APP_MANAGER,
......@@ -82,7 +83,8 @@ object NotificationHelper {
ID_CLEAN_NOTIFICATION,
ID_RECENT_USE_APP,
ID_SIMILAR_IMAGE,
ID_CLEAN_SPEAKER
ID_CLEAN_SPEAKER,
ID_BATTERY_OPTIMIZATION,
)
/**
......@@ -115,6 +117,7 @@ object NotificationHelper {
*/
fun getPresentPushId(): Int {
val pushCircleOrder = ComUtils.getPushConfig().push_circle_order
LogEx.logDebug(TAG, "push_circle_order=$pushCircleOrder")
val tempList = arrayListOf<Int>()
val json =
......@@ -171,11 +174,11 @@ object NotificationHelper {
remoteViews.setTextViewText(R.id.tv_btn, "Scan")
}
ID_BATTERY_PUSH -> {
ID_BATTERY_OPTIMIZATION -> {
remoteViews.setImageViewResource(R.id.iv_icon, R.mipmap.dianchi_notifi)
remoteViews.setTextViewText(R.id.tv_desc, "View phone battery consumption recently")
remoteViews.setTextViewText(R.id.tv_btn, "View")
val random = Random.nextInt(0, 50)
remoteViews.setTextViewText(R.id.tv_desc, "$random Apps are consuming photo power")
remoteViews.setTextViewText(R.id.tv_btn, "Optimize")
}
ID_BIGFILE_PUSH -> {
......@@ -252,7 +255,7 @@ object NotificationHelper {
remoteViews.setTextViewText(R.id.tv_btn, "View")
}
ID_LOW_RAM_PUSH -> {
ID_PHONE_ACCELERATE -> {
remoteViews.setImageViewResource(R.id.iv_icon, R.mipmap.neicundi)
remoteViews.setTextViewText(R.id.tv_desc, "Ram usage reached $extra%, optimize now!")
remoteViews.setTextViewText(R.id.tv_btn, "Optimize")
......@@ -274,23 +277,20 @@ object NotificationHelper {
val cancelPendingIntent = PendingIntent.getBroadcast(FileApp.fContext, cancelRequestCode, cancelIntent, flag)
remoteViews.setOnClickPendingIntent(R.id.fl_cancel, cancelPendingIntent)
//按钮事件
val btnIntent = Intent(NotificationBroadcast.action).apply {
putExtra("actionId", actionId)
}
val btnRequestCode = Random.nextInt(0, 1000)
val btnPendingIntent = PendingIntent.getBroadcast(FileApp.fContext, btnRequestCode, btnIntent, flag)
remoteViews.setOnClickPendingIntent(R.id.fl_btn, btnPendingIntent)
val intent = Intent(applicationContext, SplashActivity::class.java)
val title: String = ""
val desc: String = ""
var myValue = 0
myValue = actionId
val customKey = "type"
intent.putExtra("title", title)
intent.putExtra("desc", desc)
intent.putExtra(customKey, myValue)
val customKey = "type"
intent.putExtra(customKey, actionId)
//按钮事件
val btnRequestCode = Random.nextInt(0, 1000)
val btnPendingIntent = PendingIntent.getActivity(FileApp.fContext, btnRequestCode, intent, flag)
remoteViews.setOnClickPendingIntent(R.id.fl_btn, btnPendingIntent)
//每种类型保存值
FileApp.fContext.saveDataStoreBlock(createByActionId(actionId), System.currentTimeMillis())
//大间隔所需值
......@@ -367,3 +367,4 @@ object NotificationHelper {
notificationManager.notify(notificationId, notification)
}
}
......@@ -29,13 +29,9 @@ class NotificationTimerTask(val eventParams: EventParams?) : TimerTask() {
fun oneShotNotification(noLimit: Boolean = false) {
//内存低于阀值推送
val flag = postRamLower60()
//是否推送手机加速
val flag = isPostPhoneAccelerate()
if (flag) {
val log = "postRamLower60 isPush=$flag"
EventHelper.event("pushCircleOrder_isPush", log, eventParams = eventParams)
val extra = RamMemoryEx.getMemoryUsage(FileApp.fContext).toInt()
FileApp.fContext.postActionNotification(ID_LOW_RAM_PUSH, eventParams, extra)
return
}
......@@ -49,16 +45,31 @@ class NotificationTimerTask(val eventParams: EventParams?) : TimerTask() {
}
}
private fun postRamLower60(): Boolean {
val ss = RamMemoryEx.getMemoryUsage(FileApp.fContext)
val memoryPushTime = FileApp.fContext.queryDataStoreBlock(createByActionId(PushCfg.ID_LOW_RAM_PUSH), 0)
val flag = System.currentTimeMillis() - memoryPushTime > 20.minutes.toLong(DurationUnit.MILLISECONDS)
val isPush = PushManager.isPush(ID_LOW_RAM_PUSH)
if (ss > 60 && flag && isPush) {
FileApp.fContext.postActionNotification(PushCfg.ID_LOW_RAM_PUSH)
return true
private fun isPostPhoneAccelerate(): Boolean {
val extra = RamMemoryEx.getMemoryUsage(FileApp.fContext)
var log: String = ""
if (extra < 60) {
log = "isPostPhoneAccelerate ram<60 ram=$extra"
EventHelper.event("pushCircleOrder_isPush ", log, eventParams = eventParams)
return false
}
return flag
val memoryPushTime = FileApp.fContext.queryDataStoreBlock(createByActionId(PushCfg.ID_PHONE_ACCELERATE), 0)
val interval = System.currentTimeMillis() - memoryPushTime
val flag = interval > 20.minutes.toLong(DurationUnit.MILLISECONDS)
if (!flag) {
log = "isPostPhoneAccelerate interval < 20minus interval=$interval"
EventHelper.event("pushCircleOrder_isPush ", log, eventParams = eventParams)
return false
}
val isPush = PushManager.isPush(PushCfg.ID_PHONE_ACCELERATE)
if (!isPush) {
return false
}
FileApp.fContext.postActionNotification(PushCfg.ID_PHONE_ACCELERATE, eventParams, extra.toInt())
return true
}
}
\ No newline at end of file
......@@ -54,35 +54,4 @@ class PackageBroadcast : BroadcastReceiver() {
}
}
}
fun lowJunkPush(context: Context) {
val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
val memoryInfo = ActivityManager.MemoryInfo()
activityManager.getMemoryInfo(memoryInfo)
val availableMemory = memoryInfo.availMem
val totalMemory = memoryInfo.totalMem
val num = totalMemory - availableMemory
val entity = ComUtils.getPushTypeData("22005")
if (num >= (entity?.feature_ex1 ?: 0)) {
// 展示性能变差推送
val flag = PushManager.isPush(PushCfg.ID_LOW_RAM_PUSH)
if (flag) {
FileApp.fContext.postActionNotification(PushCfg.ID_LOW_RAM_PUSH)
}
}
}
fun charging(intent: Intent?) {
//电量发生变化
val level = intent?.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) ?: -1
val scale: Int? = intent?.getIntExtra(BatteryManager.EXTRA_SCALE, -1)
//低电量阀值推送
val config = ComUtils.getPushTypeData(ID_LOW_BATTERY_PUSH.toString())
val flag = PushManager.isPush(ID_LOW_BATTERY_PUSH)
val lowValue = config?.feature_ex1 ?: 0
if (flag && (level < lowValue)) {
FileApp.fContext.postActionNotification(ID_LOW_BATTERY_PUSH)
}
}
}
\ No newline at end of file
......@@ -12,7 +12,7 @@ object RamMemoryEx {
val totalMemory: Long = memoryInfo.totalMem
val availableMemory: Long = memoryInfo.availMem
val usedMemory = (totalMemory - availableMemory).toDouble()
return DecimalFormat("##.#").format(usedMemory / totalMemory * 100).toFloat()
return ((usedMemory / totalMemory) * 100).toFloat()
}
}
......@@ -13,5 +13,8 @@ object AFunOb {
const val SIMILAR_PHOTOS = "Similar Photos"
const val SPEAK_CLEANER = "Speaker Cleaner"
const val PHOTO_COMPRESS = "Photo Compress"
const val APPP_LOCK = "App Lock"
const val APPP_SPEED = "App Speed"
const val BATTERY_OPTIMIZER = "Battery Optimizer"
}
\ No newline at end of file
......@@ -7,6 +7,7 @@ import android.graphics.drawable.ColorDrawable
import android.view.LayoutInflater
import com.blankj.utilcode.util.ClickUtils
import com.zxhyis.toolss.databinding.DialogLayoutFlowTypeBinding
import com.zxhyis.toolss.databinding.DialogLayoutLastStepBinding
import com.zxhyis.toolss.databinding.DialogPermissonOpenBinding
object DialogViews {
......@@ -57,4 +58,22 @@ object DialogViews {
dialog.show()
}
fun showLastStep(context: Context, onClick: () -> Unit) {
val dialog = Dialog(context)
val binding = DialogLayoutLastStepBinding.inflate(LayoutInflater.from(context))
dialog.requestWindowFeature(1)
dialog.window!!.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
dialog.window!!.setLayout(-1, -2)
dialog.setCanceledOnTouchOutside(false)
dialog.setCancelable(false)
dialog.setContentView(binding.root)
binding.idTvOk.setOnClickListener {
onClick.invoke()
dialog.dismiss()
}
dialog.show()
}
}
\ No newline at end of file
......@@ -21,7 +21,7 @@ class RateStarPop(private val activity: Activity) : PopupWindow() {
if (SPUtils.getInstance().getBoolean("isRated", false)) {
return
}
if (n > 0 && n % 5 == 0) {
if (n > 0 && n % 8 == 0) {
RateStarPop(activity).show()
} else {
return
......
......@@ -36,6 +36,7 @@ import com.zxhyis.toolss.ui.page.PrepareScanActivity
import com.zxhyis.toolss.ui.page.RepeaterdPhotoActivity
import com.zxhyis.toolss.ui.page.SpeakerCleanerActivity
import com.zxhyis.toolss.ui.page.VirusActivity
import com.zxhyis.toolss.ui.page.applock.AppLockManagerActivity
import com.zxhyis.toolss.ui.page.appmanager.AppManager2Activity
import com.zxhyis.toolss.ui.page.bigfileclean.BigFileCleanActivity
import com.zxhyis.toolss.ui.page.notifaction.NotificationCleanActivity
......@@ -130,6 +131,9 @@ class NewHomeFragment : TopFragment<FragmentHome2Binding>() {
mK.idLargeFile.setOnClick(javaClass.simpleName) {
startActivity(Intent(requireActivity(), BigFileCleanActivity::class.java))
}
mK.idAppLock.setOnClick(javaClass.simpleName){
startActivity(Intent(requireActivity(), AppLockManagerActivity::class.java))
}
mK.idImgSl.setOnClick(javaClass.simpleName) {
mK.idScrollView.fullScroll(ScrollView.FOCUS_DOWN)
}
......
......@@ -25,6 +25,7 @@ import com.zxhyis.toolss.ui.page.notifaction.NotificationCleanActivity
import com.zxhyis.toolss.ui.page.notifaction.NotificationGuestActivity
import com.zxhyis.toolss.ui.page.photocompress.photo.StartCompressionPhotoActivity
import com.zxhyis.toolss.ui.page.recentusage.RecentAppActivity
import com.zxhyis.toolss.ui.page.speed.BatteryOptimizerActivity
/**
*
......@@ -100,9 +101,14 @@ class Tools2Fragment : Fragment() {
AFunOb.SPEAK_CLEANER -> {
startActivity(Intent(requireActivity(), SpeakerCleanerActivity::class.java))
}
AFunOb.PHOTO_COMPRESS->{
AFunOb.PHOTO_COMPRESS -> {
startActivity(Intent(requireActivity(), StartCompressionPhotoActivity::class.java))
}
AFunOb.APPP_LOCK -> {
startActivity(Intent(requireActivity(), BatteryOptimizerActivity::class.java))
}
}
}
binding.rvTools.adapter = adapter
......
......@@ -41,6 +41,8 @@ class ToolsAdapter(
ToolUI(SIMILAR_PHOTOS, context.getString(R.string.similar_photos), R.mipmap.similar),
ToolUI(SPEAK_CLEANER, context.getString(R.string.speaker_cleaner), R.mipmap.speaker21422),
ToolUI(PHOTO_COMPRESS, context.getString(R.string.photo_compress), R.mipmap.photo97612),
// ToolUI(APPP_LOCK, context.getString(R.string.app_lock), R.mipmap.applock),
)
),
ToolsUI(isAd = true)
......
package com.zxhyis.toolss.ui.page
import android.Manifest
import android.annotation.SuppressLint
import android.content.Intent
import android.graphics.Color
import android.net.Uri
import android.os.Build
import android.text.SpannableString
import android.text.Spanned
import android.text.style.UnderlineSpan
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.view.isVisible
import com.blankj.utilcode.util.AppUtils
......@@ -18,6 +22,7 @@ import com.zxhyis.toolss.ad.ConfigHelper
import com.zxhyis.toolss.ad.bean.PushCfg
import com.zxhyis.toolss.base.TopActivity
import com.zxhyis.toolss.common.notification.AppService
import com.zxhyis.toolss.common.notification.NotificationBroadcast
import com.zxhyis.toolss.databinding.ActivityLayoutSplashBinding
import com.zxhyis.toolss.logic.LogEx
import com.zxhyis.toolss.logic.setOnClick
......@@ -30,6 +35,8 @@ import com.zxhyis.toolss.ui.page.notifaction.NotificationGuestActivity
import com.zxhyis.toolss.ui.page.photocompress.photo.CompressioningActivity
import com.zxhyis.toolss.ui.page.photocompress.photo.StartCompressionPhotoActivity
import com.zxhyis.toolss.ui.page.recentusage.RecentAppActivity
import com.zxhyis.toolss.ui.page.speed.BatteryOptimizerActivity
import com.zxhyis.toolss.ui.page.speed.SpeedActivity
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.delay
......@@ -37,6 +44,7 @@ import kotlinx.coroutines.launch
import kotlin.concurrent.timer
import kotlin.random.Random
@SuppressLint("CustomSplashScreen")
class SplashActivity : TopActivity<ActivityLayoutSplashBinding>() {
private val TAG = "SplashActivity"
private var isgouxuan = true
......@@ -68,6 +76,11 @@ class SplashActivity : TopActivity<ActivityLayoutSplashBinding>() {
}
override fun init() {
val type = intent.getIntExtra("type", -1)
if (type != -1) {
NotificationBroadcast.cancelNotification(this)
}
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
if (Build.VERSION.SDK_INT >= 33) {
......@@ -87,7 +100,7 @@ class SplashActivity : TopActivity<ActivityLayoutSplashBinding>() {
}
vb.idTvStart.setOnClick(javaClass.simpleName) {
if (isgouxuan) {
if (true) {
vb.idTvStart.isVisible = false
vb.idLlJindu.isVisible = true
vb.idLlYinsi.isVisible = false
......@@ -115,6 +128,11 @@ class SplashActivity : TopActivity<ActivityLayoutSplashBinding>() {
)
startActivity(intent)
}
val spannableString = SpannableString("Privacy Policy")
spannableString.setSpan(UnderlineSpan(), 0, spannableString.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
vb.idTvPrivacyPolic.text = spannableString
vb.idTvPrivacyPolic.setOnClick(javaClass.simpleName) {
val intent = Intent(
Intent.ACTION_VIEW,
......@@ -227,6 +245,9 @@ class SplashActivity : TopActivity<ActivityLayoutSplashBinding>() {
startActivity<SpeakerCleanerActivity>()
}
PushCfg.ID_BATTERY_OPTIMIZATION -> {
startActivity<BatteryOptimizerActivity>()
}
//================================被动广播=========================================
......@@ -246,8 +267,8 @@ class SplashActivity : TopActivity<ActivityLayoutSplashBinding>() {
startActivity<BatteryInfoActivity>()
}
PushCfg.ID_LOW_RAM_PUSH -> {
startActivity<RecentAppActivity>()
PushCfg.ID_PHONE_ACCELERATE -> {
startActivity<SpeedActivity>()
}
else -> {
......@@ -258,6 +279,7 @@ class SplashActivity : TopActivity<ActivityLayoutSplashBinding>() {
}
}
}
finish()
}
}
......@@ -133,7 +133,7 @@ class AppListFragment(
fun refreshFragmentData(dataList: List<AppBean>, isRefresh: Boolean = false) {
isRefreshData = true
if (isRefresh) {
if (isRefresh && isVisible) {
LogEx.logDebug(TAG, "isRefresh=$isRefresh")
binding.flPermission.visibility = View.GONE
binding.progressbar.visibility = View.GONE
......
......@@ -42,7 +42,9 @@ class BottomSheetManager : BottomSheetBehavior.BottomSheetCallback, OnClickListe
val mList = ImagesMediaUtils.getAlbums(mContext)
val mAdapter = AlbumListAdapter(mList, this)
mRecycleView.adapter = mAdapter
onItemClick(0,mList[0])
if (mList.isNotEmpty()) {
onItemClick(0, mList[0])
}
}
override fun onStateChanged(bottomSheet: View, newState: Int) {
......@@ -78,7 +80,7 @@ class BottomSheetManager : BottomSheetBehavior.BottomSheetCallback, OnClickListe
}
}
override fun onUpdateBtn(boolean: Boolean, entity: AlbumBean) {
override fun onUpdateBtn(boolean: Boolean, entity: AlbumBean) {
}
......
......@@ -31,7 +31,10 @@ public class PhotoCache {
}
public void clearCache() {
mPhotoList.clear();
if(!mPhotoList.isEmpty()){
mPhotoList.clear();
}
}
public List<PhotoBean> getPhotoList() {
......@@ -50,4 +53,4 @@ public class PhotoCache {
return mPhotoList.size();
}
}
}
\ No newline at end of file
......@@ -5,6 +5,7 @@ import android.graphics.Color
import androidx.activity.OnBackPressedCallback
import androidx.core.view.updatePadding
import com.blankj.utilcode.util.BarUtils
import com.blankj.utilcode.util.ToastUtils
import com.zxhyis.toolss.ad.AdmobUtils
import com.zxhyis.toolss.base.TopActivity
import com.zxhyis.toolss.databinding.ActivityStartCompressionPhotoBinding
......@@ -34,7 +35,7 @@ class StartCompressionPhotoActivity : TopActivity<ActivityStartCompressionPhotoB
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
vb.root.updatePadding(top = BarUtils.getStatusBarHeight())
vb.fanhui.setOnClick(javaClass.simpleName){
vb.fanhui.setOnClick(javaClass.simpleName) {
onBackPressedDispatcher.onBackPressed()
}
......@@ -43,15 +44,19 @@ class StartCompressionPhotoActivity : TopActivity<ActivityStartCompressionPhotoB
finishToMain()
}
})
vb.btnStarted.setOnClick(javaClass.simpleName){
AdmobUtils.showInterstitialAd(this){
startActivity(Intent(this, CompressionPhotoListActivity::class.java))
finish()
vb.btnStarted.setOnClick(javaClass.simpleName) {
AdmobUtils.showInterstitialAd(this) {
val mList = ImagesMediaUtils.getAlbums(this)
if (mList.isNotEmpty()) {
startActivity(Intent(this, CompressionPhotoListActivity::class.java))
finish()
} else {
ToastUtils.showShort("Album photos not detected, no compression required.")
}
}
}
}
}
\ No newline at end of file
}
......@@ -13,6 +13,7 @@ import com.zxhyis.toolss.base.TopActivity
import com.zxhyis.toolss.cx.FileHelps.toFormatSize
import com.zxhyis.toolss.databinding.ActivityResultBinding
import com.zxhyis.toolss.logic.setOnClick
import com.zxhyis.toolss.ui.AFunOb
import com.zxhyis.toolss.ui.AFunOb.APP_MANAGER
import com.zxhyis.toolss.ui.AFunOb.Antivirus
import com.zxhyis.toolss.ui.AFunOb.BATTERY_INFO
......@@ -24,6 +25,7 @@ import com.zxhyis.toolss.ui.AFunOb.NOTIFICATION_CLEANER
import com.zxhyis.toolss.ui.AFunOb.PHOTO_COMPRESS
import com.zxhyis.toolss.ui.AFunOb.RECENT_APP_USAGE
import com.zxhyis.toolss.ui.AFunOb.SIMILAR_PHOTOS
import com.zxhyis.toolss.ui.AFunOb.BATTERY_OPTIMIZER
import com.zxhyis.toolss.ui.page.BatteryInfoActivity
import com.zxhyis.toolss.ui.page.EmptyFileActivity
import com.zxhyis.toolss.ui.page.NetWorkActivity
......@@ -178,6 +180,12 @@ class ResultActivity : TopActivity<ActivityResultBinding>() {
).toFormatSize(1)
} space freed"
}
BATTERY_OPTIMIZER->{
vb.tvInfo.text = "Optimization completed"
}
AFunOb.APPP_SPEED -> {
vb.tvInfo.text = "Optimization completed"
}
else -> {}
......
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</RelativeLayout>
\ No newline at end of file
......@@ -68,21 +68,6 @@
android:textSize="15sp" />
</androidx.appcompat.widget.LinearLayoutCompat>
<com.noober.background.view.BLTextView
android:id="@+id/id_tv_start"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_marginHorizontal="40dp"
android:layout_marginBottom="49dp"
android:gravity="center"
android:text="START"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold"
android:visibility="visible"
app:bl_corners_radius="24dp"
app:bl_solid_color="#4772FF" />
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/id_ll_yinsi"
android:layout_width="match_parent"
......@@ -95,16 +80,17 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="2dp"
android:src="@mipmap/gouxuan" />
android:src="@mipmap/gouxuan"
android:visibility="gone" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="4dp"
android:text="Agree to "
android:text="By continuing you are agreeing to the"
android:textColor="#000000"
android:textSize="12sp" />
android:textSize="14sp" />
<TextView
android:id="@+id/id_use_terms"
......@@ -112,19 +98,38 @@
android:layout_height="wrap_content"
android:text="Terms of use "
android:textColor="#4773FF"
android:textSize="12sp" />
android:textSize="14sp"
android:visibility="gone" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" &amp; " />
android:text=" &amp; "
android:visibility="gone" />
<TextView
android:id="@+id/id_tv_privacy_polic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Privacy Polic"
android:text="Privacy Policy"
android:textColor="#4773FF"
android:textSize="12sp" />
android:textSize="14sp" />
</androidx.appcompat.widget.LinearLayoutCompat>
<com.noober.background.view.BLTextView
android:id="@+id/id_tv_start"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_marginHorizontal="40dp"
android:layout_marginBottom="49dp"
android:gravity="center"
android:text="START"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold"
android:visibility="visible"
app:bl_corners_radius="5dp"
app:bl_solid_color="#4772FF" />
</androidx.appcompat.widget.LinearLayoutCompat>
\ No newline at end of file
......@@ -691,6 +691,39 @@
android:src="@mipmap/jiantou" />
</com.noober.background.view.BLLinearLayout>
<com.noober.background.view.BLLinearLayout
android:id="@+id/id_app_lock"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="14dp"
android:layout_marginBottom="8dp"
android:gravity="center_vertical"
android:paddingHorizontal="12dp"
android:visibility="gone"
android:paddingVertical="16dp"
app:bl_corners_radius="10dp"
app:bl_solid_color="#F6F7FB">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/xiangsi" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_weight="1"
android:text="App Lock"
android:textColor="#000000"
android:textSize="13sp"
android:textStyle="bold" />
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/jiantou" />
</com.noober.background.view.BLLinearLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
......
......@@ -263,6 +263,7 @@
<string name="similar_photos">Similar Photos</string>
<string name="speaker_cleaner">Speaker Cleaner</string>
<string name="photo_compress">Photo Compress</string>
<string name="app_lock">App Lock</string>
<string name="tools">Tools</string>
<string name="google_play">Google Play</string>
<string name="delete">DELETE</string>
......
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true"/>
<base-config cleartextTrafficPermitted="false" />
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">127.0.0.1
</domain>
......
......@@ -27,5 +27,5 @@ dependencyResolutionManagement {
}
}
rootProject.name = "File Manager Select"
rootProject.name = "Clean Master"
include ':app'
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment