Commit d8fce1b1 authored by wanglei's avatar wanglei

[广告常见]添加电池功能诱导

parent afd9af3f
...@@ -43,6 +43,7 @@ import com.dumpster.cleaner.bean.FeatureBean.Companion.RECOVERY_PHOTOS ...@@ -43,6 +43,7 @@ import com.dumpster.cleaner.bean.FeatureBean.Companion.RECOVERY_PHOTOS
import com.dumpster.cleaner.bean.FeatureBean.Companion.RECOVERY_VIDEOS import com.dumpster.cleaner.bean.FeatureBean.Companion.RECOVERY_VIDEOS
import com.dumpster.cleaner.bean.FeatureBean.Companion.SCREENSHOT_CLEAN import com.dumpster.cleaner.bean.FeatureBean.Companion.SCREENSHOT_CLEAN
import com.dumpster.cleaner.bean.FeatureBean.Companion.SIMILAR_PHOTOS import com.dumpster.cleaner.bean.FeatureBean.Companion.SIMILAR_PHOTOS
import com.dumpster.cleaner.bean.FeatureBean.Companion.setFunctionTodayUsed
import com.dumpster.cleaner.bean.FileBean import com.dumpster.cleaner.bean.FileBean
import com.dumpster.cleaner.bean.config.AdConfigBean import com.dumpster.cleaner.bean.config.AdConfigBean
import com.dumpster.cleaner.business.ads.AdsMgr import com.dumpster.cleaner.business.ads.AdsMgr
...@@ -436,6 +437,7 @@ fun Activity.jumpAction(key: String) { ...@@ -436,6 +437,7 @@ fun Activity.jumpAction(key: String) {
if (this !is BaseActivity<*>) { if (this !is BaseActivity<*>) {
throw Exception("") throw Exception("")
} }
setFunctionTodayUsed(key)
when (key) { when (key) {
BATTERY_INFO -> { BATTERY_INFO -> {
goToAc(BatteryInfoActivity::class.java) goToAc(BatteryInfoActivity::class.java)
......
package com.dumpster.cleaner.bean package com.dumpster.cleaner.bean
import com.dumpster.cleaner.utils.AppPreferences
import com.dumpster.cleaner.utils.KotlinExt.toFormatTime4
class FeatureBean( class FeatureBean(
val key: String = "", val key: String = "",
val titleRes: Int = 0, val titleRes: Int = 0,
...@@ -16,9 +19,41 @@ class FeatureBean( ...@@ -16,9 +19,41 @@ class FeatureBean(
const val PHOTO_COMPRESSION = "photo_compression" const val PHOTO_COMPRESSION = "photo_compression"
const val SIMILAR_PHOTOS = "similar_photos" const val SIMILAR_PHOTOS = "similar_photos"
const val RECOVERY_PHOTOS="recovery_photos" const val RECOVERY_PHOTOS = "recovery_photos"
const val RECOVERY_VIDEOS="recovery_videos" const val RECOVERY_VIDEOS = "recovery_videos"
const val RECOVERY_AUDIOS="recovery_audios" const val RECOVERY_AUDIOS = "recovery_audios"
const val RECOVERY_DOCUMENTS="recovery_documents" const val RECOVERY_DOCUMENTS = "recovery_documents"
fun isTodayUsedFunction(): Boolean {
return listOf(
JUNK_CLEAN,
BATTERY_INFO,
SCREENSHOT_CLEAN,
LARGE_FILE_CLEAN,
PHOTO_COMPRESSION,
SIMILAR_PHOTOS,
RECOVERY_PHOTOS,
RECOVERY_VIDEOS,
RECOVERY_AUDIOS,
RECOVERY_DOCUMENTS
).any { getFunctionTodayUsed(it) }
}
/**
* 今天功能使用过否
*/
fun getFunctionTodayUsed(key: String): Boolean {
return AppPreferences.getInstance().getBoolean("${key}_${System.currentTimeMillis().toFormatTime4()}", false)
}
/**
* 设置今天功能使用过
*/
fun setFunctionTodayUsed(key: String, used: Boolean = true) {
return AppPreferences.getInstance().put("${key}_${System.currentTimeMillis().toFormatTime4()}", used)
}
} }
} }
\ No newline at end of file
package com.dumpster.cleaner.ui.dialog
import android.app.Activity
import android.view.LayoutInflater
import androidx.appcompat.app.AlertDialog
import com.dumpster.cleaner.databinding.DialogBatteryUseBinding
class BatteryUseDialog(
activity: Activity
) {
val dialog = AlertDialog.Builder(activity).create()
val binding = DialogBatteryUseBinding.inflate(LayoutInflater.from(activity))
var action: (() -> Unit)? = null
fun showDialog(
dl: Int = 0,
) {
dialog.setView(binding.root)
dialog.setCanceledOnTouchOutside(true)
val params = dialog.window?.attributes
// params?.width = activity.resources.getDimensionPixelSize(R.dimen.dp_300)
// params?.width = FrameLayout.LayoutParams.WRAP_CONTENT
// params?.height = FrameLayout.LayoutParams.WRAP_CONTENT
// params?.gravity = Gravity.CENTER
dialog.window?.attributes = params
dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)
dialog.show()
binding.idLottie.setAnimation("scan/battery_info.json")
binding.idLottie.playAnimation()
binding.idTv01.text = "${dl}%"
binding.idImgClose.setOnClickListener {
dialog.dismiss()
}
binding.idTvScan.setOnClickListener {
dialog.dismiss()
action?.invoke()
}
}
}
...@@ -21,7 +21,7 @@ class RateDialog( ...@@ -21,7 +21,7 @@ class RateDialog(
fun showDialog(isMust: Boolean) { fun showDialog(isMust: Boolean) {
if (!isMust) { if (!isMust) {
if (isScoreRated && scoreRate == 5) if (isScoreRated)
return return
} }
dialog.setView(binding.root) dialog.setView(binding.root)
......
...@@ -14,13 +14,17 @@ import androidx.viewpager2.widget.ViewPager2 ...@@ -14,13 +14,17 @@ import androidx.viewpager2.widget.ViewPager2
import com.dumpster.cleaner.R import com.dumpster.cleaner.R
import com.dumpster.cleaner.SpConstObject.mainPageCount import com.dumpster.cleaner.SpConstObject.mainPageCount
import com.dumpster.cleaner.base.BaseActivity import com.dumpster.cleaner.base.BaseActivity
import com.dumpster.cleaner.base.jumpAction
import com.dumpster.cleaner.bean.FeatureBean.Companion.BATTERY_INFO
import com.dumpster.cleaner.bean.FeatureBean.Companion.JUNK_CLEAN import com.dumpster.cleaner.bean.FeatureBean.Companion.JUNK_CLEAN
import com.dumpster.cleaner.bean.HomeTabUIBean import com.dumpster.cleaner.bean.HomeTabUIBean
import com.dumpster.cleaner.bean.config.AdConfigBean import com.dumpster.cleaner.bean.config.AdConfigBean
import com.dumpster.cleaner.business.ads.AdsMgr import com.dumpster.cleaner.business.ads.AdsMgr
import com.dumpster.cleaner.databinding.ActivityMainBinding import com.dumpster.cleaner.databinding.ActivityMainBinding
import com.dumpster.cleaner.databinding.ItemHomeTabBinding import com.dumpster.cleaner.databinding.ItemHomeTabBinding
import com.dumpster.cleaner.ui.batteryinfo.BatteryReceiver
import com.dumpster.cleaner.ui.dialog.AppExitDialog import com.dumpster.cleaner.ui.dialog.AppExitDialog
import com.dumpster.cleaner.ui.dialog.BatteryUseDialog
import com.dumpster.cleaner.ui.dialog.NotificationTurnOnDialog import com.dumpster.cleaner.ui.dialog.NotificationTurnOnDialog
import com.dumpster.cleaner.ui.dialog.RateDialog import com.dumpster.cleaner.ui.dialog.RateDialog
import com.dumpster.cleaner.ui.dialog.StoragePermissionDialog import com.dumpster.cleaner.ui.dialog.StoragePermissionDialog
...@@ -93,6 +97,17 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl ...@@ -93,6 +97,17 @@ class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::infl
dialog.showDialog() dialog.showDialog()
} }
"BatteryDialog" -> {
val percent = BatteryReceiver.level / BatteryReceiver.scale.toFloat()
val dl = (percent * 100).toInt()
val dialog = BatteryUseDialog(this@MainActivity)
dialog.action = {
jumpAction(BATTERY_INFO)
}
dialog.showDialog(dl)
}
"RateDialog" -> { "RateDialog" -> {
val dialog = RateDialog(this@MainActivity) val dialog = RateDialog(this@MainActivity)
dialog.showDialog(false) dialog.showDialog(false)
......
...@@ -4,6 +4,9 @@ import android.content.Context ...@@ -4,6 +4,9 @@ import android.content.Context
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.dumpster.cleaner.SpConstObject.isScoreRated import com.dumpster.cleaner.SpConstObject.isScoreRated
import com.dumpster.cleaner.SpConstObject.mainPageCount
import com.dumpster.cleaner.bean.FeatureBean.Companion.getFunctionTodayUsed
import com.dumpster.cleaner.bean.FeatureBean.Companion.isTodayUsedFunction
import com.dumpster.cleaner.ui.recyclebin.RecycleBinUtils.getRecycleBinData import com.dumpster.cleaner.ui.recyclebin.RecycleBinUtils.getRecycleBinData
import com.dumpster.cleaner.utils.PermissionUtils.areNotificationsEnabled import com.dumpster.cleaner.utils.PermissionUtils.areNotificationsEnabled
import com.dumpster.cleaner.utils.PermissionUtils.checkNotificationPermission import com.dumpster.cleaner.utils.PermissionUtils.checkNotificationPermission
...@@ -39,7 +42,12 @@ class MainViewModel : ViewModel() { ...@@ -39,7 +42,12 @@ class MainViewModel : ViewModel() {
return return
} }
if (!isScoreRated) { if (!isTodayUsedFunction()) {
dialogFlow.update { "BatteryDialog" }
return
}
if (!isScoreRated && mainPageCount > 0 && mainPageCount % 4 == 0L) {
dialogFlow.update { "RateDialog" } dialogFlow.update { "RateDialog" }
return return
} }
......
<?xml version="1.0" encoding="utf-8"?>
<com.noober.background.view.BLLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.noober.background.view.BLLinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:gravity="center_horizontal"
android:orientation="vertical"
app:bl_corners_radius="20dp"
app:bl_gradient_endColor="#79DFFF"
app:bl_gradient_startColor="#37B6FF">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="280dp"
android:paddingTop="60dp">
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/id_lottie"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:scaleX="1.8"
android:scaleY="1.8"
app:layout_constraintBottom_toBottomOf="parent"
app:lottie_autoPlay="true"
app:lottie_loop="true" />
</FrameLayout>
<TextView
android:id="@+id/id_tv_01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:textColor="@color/white"
android:textSize="31sp"
android:textStyle="bold"
tools:text="75%" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="40dp"
android:layout_marginTop="12dp"
android:layout_marginBottom="6dp"
android:gravity="center"
android:includeFontPadding="false"
android:text="Phone battery has reached"
android:textColor="@color/white"
android:textSize="19sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:includeFontPadding="false"
android:text="Check battery status and details"
android:textColor="@color/white"
android:textSize="13sp"
android:textStyle="bold" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="45dp"
android:layout_marginTop="12dp"
android:layout_marginBottom="26dp">
<com.noober.background.view.BLTextView
android:id="@+id/id_tv_scan"
android:layout_width="match_parent"
android:layout_height="46dp"
android:layout_gravity="center"
android:gravity="center"
android:text="SCAN"
android:textColor="#6DD8FF"
android:textSize="23sp"
android:textStyle="bold"
app:bl_corners_radius="50dp"
app:bl_solid_color="@color/white" />
<com.airbnb.lottie.LottieAnimationView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:lottie_autoPlay="true"
app:lottie_loop="true"
app:lottie_rawRes="@raw/dialogbtn3" />
</FrameLayout>
</com.noober.background.view.BLLinearLayout>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_img_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="12dp"
android:src="@drawable/guan4" />
</com.noober.background.view.BLLinearLayout>
\ No newline at end of file
{"nm":"Main Scene","h":46,"w":270,"meta":{"g":"@lottiefiles/creator 1.42.2"},"layers":[{"ty":4,"nm":"Rectangle 187","sr":1,"st":10,"op":160,"ip":10,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[78.13,12.78]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.42,"y":0},"i":{"x":0.58,"y":1},"s":[-215.3,48.56],"t":10},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[157.92,26.18],"t":22},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[162.28,25.91],"t":23},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[198.74,23.73],"t":26},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[210.9,23],"t":27},{"s":[479.22,48.56],"t":40}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":17},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[50],"t":25},{"s":[0],"t":33}]}},"ef":[{"ty":29,"nm":"高斯模糊","en":1,"ef":[{"ty":0,"nm":"模糊度","v":{"a":0,"k":32}},{"ty":7,"nm":"模糊方向","v":{"a":0,"k":1}},{"ty":7,"nm":"重复边缘像素","v":{"a":0,"k":0}}]}],"shapes":[{"ty":"gr","nm":"Rectangle 185","it":[{"ty":"sh","nm":"路径 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[51.5,-180],[8.5,-180],[-51.5,180],[-8.5,180]]}}},{"ty":"fl","nm":"填充 1","c":{"a":0,"k":[0.851,0.91,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0.022]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0.022]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":1},{"ty":4,"nm":"Rectangle 186","sr":1,"st":0,"op":150,"ip":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[78.13,12.78]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.42,"y":0},"i":{"x":0.58,"y":1},"s":[-215.3,48.56],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[109.81,25.56],"t":13},{"s":[479.22,48.56],"t":27}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[50],"t":13.5},{"s":[0],"t":20.7}]}},"ef":[{"ty":29,"nm":"高斯模糊","en":1,"ef":[{"ty":0,"nm":"模糊度","v":{"a":0,"k":32}},{"ty":7,"nm":"模糊方向","v":{"a":0,"k":1}},{"ty":7,"nm":"重复边缘像素","v":{"a":0,"k":0}}]}],"shapes":[{"ty":"gr","nm":"Rectangle 185","it":[{"ty":"sh","nm":"路径 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[51.5,-180],[8.5,-180],[-51.5,180],[-8.5,180]]}}},{"ty":"fl","nm":"填充 1","c":{"a":0,"k":[0.851,0.91,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":2}],"v":"5.7.0","fr":26,"op":50,"ip":0,"assets":[]}
\ No newline at end of file
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