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