Commit 49a23028 authored by wanglei's avatar wanglei

切换max

parent b75e9002
...@@ -13,6 +13,7 @@ import com.base.filerecoveryrecyclebin.activity.recovery.FileScanResultActivity ...@@ -13,6 +13,7 @@ import com.base.filerecoveryrecyclebin.activity.recovery.FileScanResultActivity
import com.base.filerecoveryrecyclebin.activity.repeat.RepeatAnimationActivity import com.base.filerecoveryrecyclebin.activity.repeat.RepeatAnimationActivity
import com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotAnimationActivity import com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotAnimationActivity
import com.base.filerecoveryrecyclebin.adapter.AppFunctionAdapter import com.base.filerecoveryrecyclebin.adapter.AppFunctionAdapter
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import com.base.filerecoveryrecyclebin.ads.admob.AdmobNativeUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobNativeUtils
import com.base.filerecoveryrecyclebin.bean.ConstObject.JUNK_CLEANER import com.base.filerecoveryrecyclebin.bean.ConstObject.JUNK_CLEANER
...@@ -115,7 +116,7 @@ class ResultActivity : BaseActivity<ActivityLayoutResultBinding>() { ...@@ -115,7 +116,7 @@ class ResultActivity : BaseActivity<ActivityLayoutResultBinding>() {
onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) { onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() { override fun handleOnBackPressed() {
AdmobInterstitialUtils.showInterstitialAd(this@ResultActivity) { AdmobMaxHelper.admobMaxShowInterstitialAd(this@ResultActivity){
finishToMain() finishToMain()
} }
} }
...@@ -125,7 +126,7 @@ class ResultActivity : BaseActivity<ActivityLayoutResultBinding>() { ...@@ -125,7 +126,7 @@ class ResultActivity : BaseActivity<ActivityLayoutResultBinding>() {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
} }
AdmobNativeUtils.showNativeAd(this@ResultActivity, binding.flAd, R.layout.layout_native_custom_white) AdmobMaxHelper.admobMaxShowNativeAd(this@ResultActivity, binding.flAd, 0)
} }
override fun onDestroy() { override fun onDestroy() {
......
...@@ -14,6 +14,7 @@ import androidx.recyclerview.widget.LinearLayoutManager ...@@ -14,6 +14,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import com.base.filerecoveryrecyclebin.BuildConfig import com.base.filerecoveryrecyclebin.BuildConfig
import com.base.filerecoveryrecyclebin.R import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.activity.ResultActivity import com.base.filerecoveryrecyclebin.activity.ResultActivity
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import com.base.filerecoveryrecyclebin.bean.ChildBean import com.base.filerecoveryrecyclebin.bean.ChildBean
import com.base.filerecoveryrecyclebin.bean.ConstObject.JUNK_CLEANER import com.base.filerecoveryrecyclebin.bean.ConstObject.JUNK_CLEANER
...@@ -88,7 +89,7 @@ class CleanJunkActivity : BaseActivity<ActivityLayoutCleanJunkBinding>() { ...@@ -88,7 +89,7 @@ class CleanJunkActivity : BaseActivity<ActivityLayoutCleanJunkBinding>() {
override fun handleOnBackPressed() { override fun handleOnBackPressed() {
showExitFunctionDialog { showExitFunctionDialog {
if (it) { if (it) {
AdmobInterstitialUtils.showInterstitialAd(this@CleanJunkActivity) { AdmobMaxHelper.admobMaxShowInterstitialAd(this@CleanJunkActivity) {
finishToMain() finishToMain()
} }
} else { } else {
......
...@@ -9,6 +9,7 @@ import androidx.activity.addCallback ...@@ -9,6 +9,7 @@ import androidx.activity.addCallback
import androidx.core.animation.doOnEnd import androidx.core.animation.doOnEnd
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import com.base.filerecoveryrecyclebin.activity.ResultActivity import com.base.filerecoveryrecyclebin.activity.ResultActivity
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import com.base.filerecoveryrecyclebin.bean.ConstObject.JUNK_CLEANER import com.base.filerecoveryrecyclebin.bean.ConstObject.JUNK_CLEANER
import com.base.filerecoveryrecyclebin.databinding.ActivityLayoutCleanupingBinding import com.base.filerecoveryrecyclebin.databinding.ActivityLayoutCleanupingBinding
...@@ -77,7 +78,7 @@ class CleaningActivity : BaseActivity<ActivityLayoutCleanupingBinding>() { ...@@ -77,7 +78,7 @@ class CleaningActivity : BaseActivity<ActivityLayoutCleanupingBinding>() {
binding.idTvJd.text = "${it.animatedValue as Int}" binding.idTvJd.text = "${it.animatedValue as Int}"
} }
doOnEnd { doOnEnd {
AdmobInterstitialUtils.showInterstitialAd(this@CleaningActivity) { AdmobMaxHelper.admobMaxShowInterstitialAd(this@CleaningActivity) {
startActivity( startActivity(
Intent(this@CleaningActivity, ResultActivity::class.java).putExtra("from", JUNK_CLEANER) Intent(this@CleaningActivity, ResultActivity::class.java).putExtra("from", JUNK_CLEANER)
.putExtra("clean_size", intentSize) .putExtra("clean_size", intentSize)
......
...@@ -7,6 +7,7 @@ import android.view.animation.LinearInterpolator ...@@ -7,6 +7,7 @@ import android.view.animation.LinearInterpolator
import android.widget.Toast import android.widget.Toast
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import com.base.filerecoveryrecyclebin.databinding.ActivityLayoutScanJunkBinding import com.base.filerecoveryrecyclebin.databinding.ActivityLayoutScanJunkBinding
import com.base.filerecoveryrecyclebin.help.BaseActivity import com.base.filerecoveryrecyclebin.help.BaseActivity
...@@ -121,7 +122,7 @@ class ScanJunkActivity : BaseActivity<ActivityLayoutScanJunkBinding>() { ...@@ -121,7 +122,7 @@ class ScanJunkActivity : BaseActivity<ActivityLayoutScanJunkBinding>() {
binding.root.postDelayed({ binding.root.postDelayed({
if (showAd) { if (showAd) {
AdmobInterstitialUtils.showInterstitialAd(this) { AdmobMaxHelper.admobMaxShowInterstitialAd(this) {
a1.cancel() a1.cancel()
a2.cancel() a2.cancel()
a3.cancel() a3.cancel()
......
...@@ -8,6 +8,7 @@ import android.widget.Toast ...@@ -8,6 +8,7 @@ import android.widget.Toast
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.filerecoveryrecyclebin.adapter.MediaSubAdapter import com.base.filerecoveryrecyclebin.adapter.MediaSubAdapter
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import com.base.filerecoveryrecyclebin.bean.MediaBean import com.base.filerecoveryrecyclebin.bean.MediaBean
import com.base.filerecoveryrecyclebin.databinding.ActivityPrivacyManageBinding import com.base.filerecoveryrecyclebin.databinding.ActivityPrivacyManageBinding
...@@ -69,7 +70,7 @@ class PrivacyManageActivity : BaseActivity<ActivityPrivacyManageBinding>() { ...@@ -69,7 +70,7 @@ class PrivacyManageActivity : BaseActivity<ActivityPrivacyManageBinding>() {
private fun deleteFilesDirMedia() { private fun deleteFilesDirMedia() {
showDeletePermanentlyDialog { showDeletePermanentlyDialog {
AdmobInterstitialUtils.showInterstitialAd(this) { AdmobMaxHelper.admobMaxShowInterstitialAd(this) {
lifecycleScope.launch(Dispatchers.IO) { lifecycleScope.launch(Dispatchers.IO) {
val list = mediaSubAdapter.getSelectData() val list = mediaSubAdapter.getSelectData()
list.forEach { list.forEach {
......
...@@ -8,6 +8,7 @@ import androidx.activity.addCallback ...@@ -8,6 +8,7 @@ import androidx.activity.addCallback
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import com.base.filerecoveryrecyclebin.bean.ConstObject.privacyPinPassword import com.base.filerecoveryrecyclebin.bean.ConstObject.privacyPinPassword
import com.base.filerecoveryrecyclebin.databinding.ActivityPrivacySpaceBinding import com.base.filerecoveryrecyclebin.databinding.ActivityPrivacySpaceBinding
...@@ -92,7 +93,7 @@ class PrivacySpaceActivity : BaseActivity<ActivityPrivacySpaceBinding>() { ...@@ -92,7 +93,7 @@ class PrivacySpaceActivity : BaseActivity<ActivityPrivacySpaceBinding>() {
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
showExitFunctionDialog(true) { showExitFunctionDialog(true) {
if (it) { if (it) {
AdmobInterstitialUtils.showInterstitialAd(this@PrivacySpaceActivity) { AdmobMaxHelper.admobMaxShowInterstitialAd(this@PrivacySpaceActivity) {
finishToMain() finishToMain()
} }
} else { } else {
......
...@@ -5,6 +5,7 @@ import android.graphics.Color ...@@ -5,6 +5,7 @@ import android.graphics.Color
import android.os.Environment import android.os.Environment
import androidx.activity.addCallback import androidx.activity.addCallback
import com.base.filerecoveryrecyclebin.R import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_AUDIOS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_DOCUMENTS import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_DOCUMENTS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_PHOTOS import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_PHOTOS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_VIDEOS import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_VIDEOS
...@@ -34,6 +35,7 @@ class FileRecoveredActivity : BaseActivity<ActivityFileRecoveredBinding>() { ...@@ -34,6 +35,7 @@ class FileRecoveredActivity : BaseActivity<ActivityFileRecoveredBinding>() {
SCAN_PHOTOS -> if (number == 1) "Photo" else "Photos" SCAN_PHOTOS -> if (number == 1) "Photo" else "Photos"
SCAN_VIDEOS -> if (number == 1) "Video" else "Videos" SCAN_VIDEOS -> if (number == 1) "Video" else "Videos"
SCAN_DOCUMENTS -> if (number == 1) "Document" else "Documents" SCAN_DOCUMENTS -> if (number == 1) "Document" else "Documents"
SCAN_AUDIOS -> if (number == 1) "Audio" else "Audios"
else -> "" else -> ""
} }
binding.tvType.text = type binding.tvType.text = type
......
...@@ -13,6 +13,7 @@ import androidx.lifecycle.lifecycleScope ...@@ -13,6 +13,7 @@ import androidx.lifecycle.lifecycleScope
import com.base.filerecoveryrecyclebin.R import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.adapter.FileTimeColumnsAdapter import com.base.filerecoveryrecyclebin.adapter.FileTimeColumnsAdapter
import com.base.filerecoveryrecyclebin.adapter.RecoveryFilterAdapter import com.base.filerecoveryrecyclebin.adapter.RecoveryFilterAdapter
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_AUDIOS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_DOCUMENTS import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_DOCUMENTS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_PHOTOS import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_PHOTOS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_VIDEOS import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_VIDEOS
...@@ -94,6 +95,9 @@ class FileRecoveryActivity : BaseActivity<ActivityFileRecoveryBinding>() { ...@@ -94,6 +95,9 @@ class FileRecoveryActivity : BaseActivity<ActivityFileRecoveryBinding>() {
binding.clThumbnails.visibility = View.GONE binding.clThumbnails.visibility = View.GONE
} }
SCAN_AUDIOS -> {
binding.clThumbnails.visibility = View.GONE
}
} }
adapter = FileTimeColumnsAdapter(scanType, adapter = FileTimeColumnsAdapter(scanType,
...@@ -145,6 +149,7 @@ class FileRecoveryActivity : BaseActivity<ActivityFileRecoveryBinding>() { ...@@ -145,6 +149,7 @@ class FileRecoveryActivity : BaseActivity<ActivityFileRecoveryBinding>() {
SCAN_PHOTOS -> dirType = "Photo" SCAN_PHOTOS -> dirType = "Photo"
SCAN_DOCUMENTS -> dirType = "Document" SCAN_DOCUMENTS -> dirType = "Document"
SCAN_VIDEOS -> dirType = "Video" SCAN_VIDEOS -> dirType = "Video"
SCAN_AUDIOS -> dirType = "Audio"
} }
val appName = this.resources.getString(R.string.app_name) val appName = this.resources.getString(R.string.app_name)
val appDir = File(Environment.getExternalStorageDirectory(), appName) val appDir = File(Environment.getExternalStorageDirectory(), appName)
......
...@@ -4,6 +4,7 @@ import android.annotation.SuppressLint ...@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.graphics.Color import android.graphics.Color
import androidx.activity.addCallback import androidx.activity.addCallback
import com.base.filerecoveryrecyclebin.R import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_DOCUMENTS import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_DOCUMENTS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_PHOTOS import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_PHOTOS
...@@ -54,7 +55,7 @@ class FileScanActivity : BaseActivity<ActivityFileScanBinding>() { ...@@ -54,7 +55,7 @@ class FileScanActivity : BaseActivity<ActivityFileScanBinding>() {
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
showExitFunctionDialog { showExitFunctionDialog {
if (it) { if (it) {
AdmobInterstitialUtils.showInterstitialAd(this@FileScanActivity) { AdmobMaxHelper.admobMaxShowInterstitialAd(this@FileScanActivity) {
finishToMain() finishToMain()
} }
} else { } else {
......
...@@ -9,13 +9,16 @@ import androidx.activity.addCallback ...@@ -9,13 +9,16 @@ import androidx.activity.addCallback
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.filerecoveryrecyclebin.adapter.FileFolderAdapter import com.base.filerecoveryrecyclebin.adapter.FileFolderAdapter
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_AUDIOS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_DOCUMENTS import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_DOCUMENTS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_PHOTOS import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_PHOTOS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_VIDEOS import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_VIDEOS
import com.base.filerecoveryrecyclebin.bean.FolderBean import com.base.filerecoveryrecyclebin.bean.FolderBean
import com.base.filerecoveryrecyclebin.bean.RecoveryBean import com.base.filerecoveryrecyclebin.bean.RecoveryBean
import com.base.filerecoveryrecyclebin.bean.RecoveryBean.Companion.setType import com.base.filerecoveryrecyclebin.bean.RecoveryBean.Companion.setAudioType
import com.base.filerecoveryrecyclebin.bean.RecoveryBean.Companion.setDocumentType
import com.base.filerecoveryrecyclebin.databinding.ActivityFileScanResultBinding import com.base.filerecoveryrecyclebin.databinding.ActivityFileScanResultBinding
import com.base.filerecoveryrecyclebin.help.BaseActivity import com.base.filerecoveryrecyclebin.help.BaseActivity
import com.base.filerecoveryrecyclebin.help.FileHelp.loadFileByFilter import com.base.filerecoveryrecyclebin.help.FileHelp.loadFileByFilter
...@@ -67,7 +70,12 @@ class FileScanResultActivity : BaseActivity<ActivityFileScanResultBinding>() { ...@@ -67,7 +70,12 @@ class FileScanResultActivity : BaseActivity<ActivityFileScanResultBinding>() {
SCAN_VIDEOS -> { SCAN_VIDEOS -> {
binding.tvTittle.text = "Video Recovery" binding.tvTittle.text = "Video Recovery"
binding.tvFileType.text = "videos" binding.tvFileType.text = "Videos"
}
SCAN_AUDIOS -> {
binding.tvTittle.text = "Audio Recovery"
binding.tvFileType.text = "Audios"
} }
} }
fileFolderAdapter = FileFolderAdapter(scanType) { folderBean -> fileFolderAdapter = FileFolderAdapter(scanType) { folderBean ->
...@@ -94,7 +102,7 @@ class FileScanResultActivity : BaseActivity<ActivityFileScanResultBinding>() { ...@@ -94,7 +102,7 @@ class FileScanResultActivity : BaseActivity<ActivityFileScanResultBinding>() {
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
showExitFunctionDialog { showExitFunctionDialog {
if (it) { if (it) {
AdmobInterstitialUtils.showInterstitialAd(this@FileScanResultActivity) { AdmobMaxHelper.admobMaxShowInterstitialAd(this@FileScanResultActivity) {
finishToMain() finishToMain()
} }
} else { } else {
...@@ -128,7 +136,6 @@ class FileScanResultActivity : BaseActivity<ActivityFileScanResultBinding>() { ...@@ -128,7 +136,6 @@ class FileScanResultActivity : BaseActivity<ActivityFileScanResultBinding>() {
val foundFlow: SharedFlow<Pair<Int, String>> = mFoundFlow val foundFlow: SharedFlow<Pair<Int, String>> = mFoundFlow
val dialogClass = FileScanDialog(this) val dialogClass = FileScanDialog(this)
val scanDialog = dialogClass.showFileScanDialog(pathFlow, foundFlow) { val scanDialog = dialogClass.showFileScanDialog(pathFlow, foundFlow) {
...@@ -141,6 +148,7 @@ class FileScanResultActivity : BaseActivity<ActivityFileScanResultBinding>() { ...@@ -141,6 +148,7 @@ class FileScanResultActivity : BaseActivity<ActivityFileScanResultBinding>() {
SCAN_PHOTOS -> FileHexEx::isImage SCAN_PHOTOS -> FileHexEx::isImage
SCAN_DOCUMENTS -> FileHexEx::isDocument SCAN_DOCUMENTS -> FileHexEx::isDocument
SCAN_VIDEOS -> FileHexEx::isVideo SCAN_VIDEOS -> FileHexEx::isVideo
SCAN_AUDIOS -> FileHexEx::isAudio
else -> FileHexEx::isImage else -> FileHexEx::isImage
} }
val root = Environment.getExternalStorageDirectory() val root = Environment.getExternalStorageDirectory()
...@@ -155,7 +163,7 @@ class FileScanResultActivity : BaseActivity<ActivityFileScanResultBinding>() { ...@@ -155,7 +163,7 @@ class FileScanResultActivity : BaseActivity<ActivityFileScanResultBinding>() {
lifecycleScope.launch(Dispatchers.Main) { lifecycleScope.launch(Dispatchers.Main) {
binding.ivWancheng.visibility = View.VISIBLE binding.ivWancheng.visibility = View.VISIBLE
binding.tvScanning.text = "Completed" binding.tvScanning.text = "Completed"
AdmobInterstitialUtils.showInterstitialAd(this@FileScanResultActivity, isShowDialog = false) {} AdmobMaxHelper.admobMaxShowInterstitialAd(this@FileScanResultActivity)
binding.flEmpty.isVisible = pathList.isEmpty() binding.flEmpty.isVisible = pathList.isEmpty()
setAdapterData(null) setAdapterData(null)
dialogClass.finishScan { dialogClass.finishScan {
...@@ -188,7 +196,10 @@ class FileScanResultActivity : BaseActivity<ActivityFileScanResultBinding>() { ...@@ -188,7 +196,10 @@ class FileScanResultActivity : BaseActivity<ActivityFileScanResultBinding>() {
} }
val recoveryBean = RecoveryBean(path) val recoveryBean = RecoveryBean(path)
if (scanType == SCAN_DOCUMENTS) { if (scanType == SCAN_DOCUMENTS) {
recoveryBean.setType() recoveryBean.setDocumentType()
}
if (scanType == SCAN_AUDIOS) {
recoveryBean.setAudioType()
} }
hashMap[folder]?.add(recoveryBean) hashMap[folder]?.add(recoveryBean)
return isNewFolder return isNewFolder
......
...@@ -6,6 +6,7 @@ import androidx.activity.addCallback ...@@ -6,6 +6,7 @@ import androidx.activity.addCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.filerecoveryrecyclebin.adapter.MediaAdapter import com.base.filerecoveryrecyclebin.adapter.MediaAdapter
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils.showInterAdSp import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils.showInterAdSp
import com.base.filerecoveryrecyclebin.ads.admob.AdmobNativeUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobNativeUtils
...@@ -74,14 +75,8 @@ class RepeatActivity : BaseActivity<ActivityRepeatBinding>() { ...@@ -74,14 +75,8 @@ class RepeatActivity : BaseActivity<ActivityRepeatBinding>() {
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
showExitFunctionDialog { showExitFunctionDialog {
if (it) { if (it) {
if (ConfigHelper.admobTrueMaxFlase) { AdmobMaxHelper.admobMaxShowInterstitialAd(this@RepeatActivity){
AdmobInterstitialUtils.showInterstitialAd(this@RepeatActivity) { finishToMain()
finishToMain()
}
} else {
AdMaxInterstitialUtils.showInterstitialAd(this@RepeatActivity) {
finishToMain()
}
} }
} else { } else {
finishToMain() finishToMain()
...@@ -99,7 +94,7 @@ class RepeatActivity : BaseActivity<ActivityRepeatBinding>() { ...@@ -99,7 +94,7 @@ class RepeatActivity : BaseActivity<ActivityRepeatBinding>() {
binding.tvClean.setOnClickListener { binding.tvClean.setOnClickListener {
showDeletePermanentlyDialog { showDeletePermanentlyDialog {
if (showInterAdSp()) { if (showInterAdSp()) {
AdmobInterstitialUtils.showInterstitialAd(this) { AdmobMaxHelper.admobMaxShowInterstitialAd(this){
cleanFile() cleanFile()
} }
} else { } else {
...@@ -141,7 +136,7 @@ class RepeatActivity : BaseActivity<ActivityRepeatBinding>() { ...@@ -141,7 +136,7 @@ class RepeatActivity : BaseActivity<ActivityRepeatBinding>() {
binding.progressBar.visibility = View.GONE binding.progressBar.visibility = View.GONE
mediaAdapter.setData(beanList) mediaAdapter.setData(beanList)
if (beanList.sumOf { it.beans.size } > 6 || ConfigHelper.mustShowNativeAd) { if (beanList.sumOf { it.beans.size } > 6 || ConfigHelper.mustShowNativeAd) {
AdmobNativeUtils.showNativeAd(this@RepeatActivity, binding.flAd) AdmobMaxHelper.admobMaxShowNativeAd(this@RepeatActivity, binding.flAd)
} }
} }
} }
......
...@@ -3,6 +3,7 @@ package com.base.filerecoveryrecyclebin.activity.repeat ...@@ -3,6 +3,7 @@ package com.base.filerecoveryrecyclebin.activity.repeat
import android.content.Intent import android.content.Intent
import android.widget.Toast import android.widget.Toast
import androidx.activity.addCallback import androidx.activity.addCallback
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import com.base.filerecoveryrecyclebin.ads.max.AdMaxInterstitialUtils import com.base.filerecoveryrecyclebin.ads.max.AdMaxInterstitialUtils
import com.base.filerecoveryrecyclebin.databinding.ActivityRepeatAnimationBinding import com.base.filerecoveryrecyclebin.databinding.ActivityRepeatAnimationBinding
...@@ -19,16 +20,9 @@ class RepeatAnimationActivity : BaseActivity<ActivityRepeatAnimationBinding>() { ...@@ -19,16 +20,9 @@ class RepeatAnimationActivity : BaseActivity<ActivityRepeatAnimationBinding>() {
override fun initView() { override fun initView() {
binding.root.postDelayed({ binding.root.postDelayed({
if (ConfigHelper.admobTrueMaxFlase) { AdmobMaxHelper.admobMaxShowInterstitialAd(this) {
AdmobInterstitialUtils.showInterstitialAd(this) { startActivity(Intent(this, RepeatActivity::class.java))
startActivity(Intent(this, RepeatActivity::class.java)) finish()
finish()
}
} else {
AdMaxInterstitialUtils.showInterstitialAd(this) {
startActivity(Intent(this, RepeatActivity::class.java))
finish()
}
} }
}, Random.nextLong(3000, 4500)) }, Random.nextLong(3000, 4500))
} }
......
...@@ -7,6 +7,7 @@ import androidx.activity.addCallback ...@@ -7,6 +7,7 @@ import androidx.activity.addCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.filerecoveryrecyclebin.adapter.ScreenShotAdapter import com.base.filerecoveryrecyclebin.adapter.ScreenShotAdapter
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils.showInterAdSp import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils.showInterAdSp
import com.base.filerecoveryrecyclebin.ads.admob.AdmobNativeUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobNativeUtils
...@@ -88,7 +89,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() { ...@@ -88,7 +89,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() {
binding.tvSize.text = sizeF[0] binding.tvSize.text = sizeF[0]
binding.tvUnit.text = sizeF[1] binding.tvUnit.text = sizeF[1]
if (list.sumOf { it.screenPhotoBean.size } > 6 || ConfigHelper.mustShowNativeAd) { if (list.sumOf { it.screenPhotoBean.size } > 6 || ConfigHelper.mustShowNativeAd) {
AdmobNativeUtils.showNativeAd(this@ScreenShotActivity, binding.flAd) AdmobMaxHelper.admobMaxShowNativeAd(this@ScreenShotActivity, binding.flAd)
} }
} }
} }
...@@ -101,7 +102,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() { ...@@ -101,7 +102,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() {
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
showExitFunctionDialog { showExitFunctionDialog {
if (it) { if (it) {
AdmobInterstitialUtils.showInterstitialAd(this@ScreenShotActivity) { AdmobMaxHelper.admobMaxShowInterstitialAd(this@ScreenShotActivity) {
finishToMain() finishToMain()
} }
} else { } else {
...@@ -122,7 +123,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() { ...@@ -122,7 +123,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() {
showDeletePermanentlyDialog { showDeletePermanentlyDialog {
if (showInterAdSp()) { if (showInterAdSp()) {
AdmobInterstitialUtils.showInterstitialAd(this) { AdmobMaxHelper.admobMaxShowInterstitialAd(this) {
cleanFile() cleanFile()
} }
} else { } else {
...@@ -133,6 +134,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() { ...@@ -133,6 +134,7 @@ class ScreenShotActivity : BaseActivity<ActivityScreenShotBinding>() {
} }
} }
@SuppressLint("SetTextI18n")
private fun cleanFile() { private fun cleanFile() {
val files = screenShotAdapter.getSelectData() val files = screenShotAdapter.getSelectData()
lifecycleScope.launch(Dispatchers.IO) { lifecycleScope.launch(Dispatchers.IO) {
......
...@@ -3,6 +3,7 @@ package com.base.filerecoveryrecyclebin.activity.screenshot ...@@ -3,6 +3,7 @@ package com.base.filerecoveryrecyclebin.activity.screenshot
import android.content.Intent import android.content.Intent
import android.widget.Toast import android.widget.Toast
import androidx.activity.addCallback import androidx.activity.addCallback
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import com.base.filerecoveryrecyclebin.databinding.ActivityScreenShotAnimationBinding import com.base.filerecoveryrecyclebin.databinding.ActivityScreenShotAnimationBinding
import com.base.filerecoveryrecyclebin.help.BaseActivity import com.base.filerecoveryrecyclebin.help.BaseActivity
...@@ -16,7 +17,7 @@ class ScreenShotAnimationActivity : BaseActivity<ActivityScreenShotAnimationBind ...@@ -16,7 +17,7 @@ class ScreenShotAnimationActivity : BaseActivity<ActivityScreenShotAnimationBind
override fun initView() { override fun initView() {
binding.root.postDelayed({ binding.root.postDelayed({
AdmobInterstitialUtils.showInterstitialAd(this) { AdmobMaxHelper.admobMaxShowInterstitialAd(this) {
startActivity(Intent(this, ScreenShotActivity::class.java)) startActivity(Intent(this, ScreenShotActivity::class.java))
finish() finish()
} }
......
...@@ -12,6 +12,7 @@ import androidx.recyclerview.widget.LinearLayoutManager ...@@ -12,6 +12,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.filerecoveryrecyclebin.R import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_AUDIOS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_DOCUMENTS import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_DOCUMENTS
import com.base.filerecoveryrecyclebin.bean.FolderBean import com.base.filerecoveryrecyclebin.bean.FolderBean
import com.base.filerecoveryrecyclebin.bean.RecoveryBean import com.base.filerecoveryrecyclebin.bean.RecoveryBean
...@@ -55,7 +56,7 @@ class FileTimeColumnsAdapter( ...@@ -55,7 +56,7 @@ class FileTimeColumnsAdapter(
val subAdapter = MediaColumnsAdapter() val subAdapter = MediaColumnsAdapter()
if (scanType == SCAN_DOCUMENTS) { if (scanType == SCAN_DOCUMENTS || scanType == SCAN_AUDIOS) {
binding.rvMediaColumns.layoutManager = LinearLayoutManager(context) binding.rvMediaColumns.layoutManager = LinearLayoutManager(context)
} else { } else {
binding.rvMediaColumns.layoutManager = GridLayoutManager(context, columns) binding.rvMediaColumns.layoutManager = GridLayoutManager(context, columns)
...@@ -132,6 +133,9 @@ class FileTimeColumnsAdapter( ...@@ -132,6 +133,9 @@ class FileTimeColumnsAdapter(
"DOC" -> R.mipmap.doc "DOC" -> R.mipmap.doc
"XLS" -> R.mipmap.xls "XLS" -> R.mipmap.xls
"PPT" -> R.mipmap.ppt "PPT" -> R.mipmap.ppt
"MP3" -> R.mipmap.pdf
"WAV" -> R.mipmap.pdf
"FLAC" -> R.mipmap.pdf
else -> 0 else -> 0
} }
binding.ivType.setImageResource(icon) binding.ivType.setImageResource(icon)
......
...@@ -7,8 +7,13 @@ import androidx.recyclerview.widget.RecyclerView ...@@ -7,8 +7,13 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.filerecoveryrecyclebin.R import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.bean.RecycleBinBean import com.base.filerecoveryrecyclebin.bean.RecycleBinBean
import com.base.filerecoveryrecyclebin.databinding.ItemMediaFileBinding
import com.base.filerecoveryrecyclebin.databinding.ItemRecycleBinBeanBinding import com.base.filerecoveryrecyclebin.databinding.ItemRecycleBinBeanBinding
import com.base.filerecoveryrecyclebin.databinding.ItemRecyclebinFileBinding
import com.base.filerecoveryrecyclebin.help.KotlinExt.toFormatTime
import com.base.filerecoveryrecyclebin.view.XmlEx.inflate import com.base.filerecoveryrecyclebin.view.XmlEx.inflate
import com.bumptech.glide.Glide
import java.io.File
class RecycleBinAdapter : RecyclerView.Adapter<RecycleBinAdapter.RBAV>() { class RecycleBinAdapter : RecyclerView.Adapter<RecycleBinAdapter.RBAV>() {
...@@ -20,7 +25,7 @@ class RecycleBinAdapter : RecyclerView.Adapter<RecycleBinAdapter.RBAV>() { ...@@ -20,7 +25,7 @@ class RecycleBinAdapter : RecyclerView.Adapter<RecycleBinAdapter.RBAV>() {
} }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RBAV { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RBAV {
return RBAV(R.layout.item_recycle_bin_bean.inflate(parent)) return RBAV(R.layout.item_recyclebin_file.inflate(parent))
} }
override fun getItemCount(): Int { override fun getItemCount(): Int {
...@@ -29,13 +34,14 @@ class RecycleBinAdapter : RecyclerView.Adapter<RecycleBinAdapter.RBAV>() { ...@@ -29,13 +34,14 @@ class RecycleBinAdapter : RecyclerView.Adapter<RecycleBinAdapter.RBAV>() {
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
override fun onBindViewHolder(holder: RBAV, position: Int) { override fun onBindViewHolder(holder: RBAV, position: Int) {
val binding = ItemRecycleBinBeanBinding.bind(holder.itemView) val binding = ItemRecyclebinFileBinding.bind(holder.itemView)
val bean = beanList[position] val bean = beanList[position]
binding.tvPath.text = bean.path val file = File(bean.path)
binding.tvDeleted.text = "deleted=${bean.deleted}" val context = holder.itemView.context
binding.tvDeleteTime.text = "time=" + bean.deleteTime.toString() Glide.with(context).load(bean.path).centerCrop().into(binding.iv)
binding.tvSize.text = "size=${bean.size}" binding.tvName.text = file.name
binding.tvMimetype.text = "mimetype=${bean.mimeType}" binding.tvTime.text = "delete time:" + bean.deleteTime.toString()
binding.tvSize.text = bean.size.toFormatTime()
} }
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
......
...@@ -4,12 +4,14 @@ import com.applovin.sdk.AppLovinMediationProvider ...@@ -4,12 +4,14 @@ import com.applovin.sdk.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration import com.applovin.sdk.AppLovinSdkInitializationConfiguration
import com.base.filerecoveryrecyclebin.utils.LogEx import com.base.filerecoveryrecyclebin.utils.LogEx
import com.google.android.gms.ads.identifier.AdvertisingIdClient
import java.util.Collections
import java.util.concurrent.Executors import java.util.concurrent.Executors
import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicBoolean
object AdMaxInit { object AdMaxInit {
private val TAG = "com.base.filerecoveryrecyclebin.ads.max.AdMaxInit" private val TAG = "AdMaxInit"
var isAdMaxInit = AtomicBoolean(false) var isAdMaxInit = AtomicBoolean(false)
var maxInitAction: (() -> Unit)? = null var maxInitAction: (() -> Unit)? = null
...@@ -24,10 +26,10 @@ object AdMaxInit { ...@@ -24,10 +26,10 @@ object AdMaxInit {
initConfigBuilder.mediationProvider = AppLovinMediationProvider.MAX initConfigBuilder.mediationProvider = AppLovinMediationProvider.MAX
// Enable test mode by default for the current device. Cannot be run on the main thread. // Enable test mode by default for the current device. Cannot be run on the main thread.
// val currentGaid = AdvertisingIdClient.getAdvertisingIdInfo(this).id val currentGaid = AdvertisingIdClient.getAdvertisingIdInfo(this).id
// if (currentGaid != null) { if (currentGaid != null) {
// initConfigBuilder.testDeviceAdvertisingIds = Collections.singletonList(currentGaid) initConfigBuilder.testDeviceAdvertisingIds = Collections.singletonList(currentGaid)
// } }
// Initialize the AppLovin SDK // Initialize the AppLovin SDK
val sdk = AppLovinSdk.getInstance(this) val sdk = AppLovinSdk.getInstance(this)
......
...@@ -24,6 +24,7 @@ object ConstObject { ...@@ -24,6 +24,7 @@ object ConstObject {
const val SCAN_PHOTOS = 1 const val SCAN_PHOTOS = 1
const val SCAN_DOCUMENTS = 2 const val SCAN_DOCUMENTS = 2
const val SCAN_VIDEOS = 3 const val SCAN_VIDEOS = 3
const val SCAN_AUDIOS = 4
var ifAgreePrivacy = false var ifAgreePrivacy = false
......
...@@ -2,9 +2,12 @@ package com.base.filerecoveryrecyclebin.bean ...@@ -2,9 +2,12 @@ package com.base.filerecoveryrecyclebin.bean
import com.base.filerecoveryrecyclebin.utils.FileHexEx.isDoc import com.base.filerecoveryrecyclebin.utils.FileHexEx.isDoc
import com.base.filerecoveryrecyclebin.utils.FileHexEx.isDocx import com.base.filerecoveryrecyclebin.utils.FileHexEx.isDocx
import com.base.filerecoveryrecyclebin.utils.FileHexEx.isFlac
import com.base.filerecoveryrecyclebin.utils.FileHexEx.isMp3
import com.base.filerecoveryrecyclebin.utils.FileHexEx.isPPT import com.base.filerecoveryrecyclebin.utils.FileHexEx.isPPT
import com.base.filerecoveryrecyclebin.utils.FileHexEx.isPPTX import com.base.filerecoveryrecyclebin.utils.FileHexEx.isPPTX
import com.base.filerecoveryrecyclebin.utils.FileHexEx.isPdf import com.base.filerecoveryrecyclebin.utils.FileHexEx.isPdf
import com.base.filerecoveryrecyclebin.utils.FileHexEx.isWav
import com.base.filerecoveryrecyclebin.utils.FileHexEx.isXls import com.base.filerecoveryrecyclebin.utils.FileHexEx.isXls
import com.base.filerecoveryrecyclebin.utils.FileHexEx.isXlsx import com.base.filerecoveryrecyclebin.utils.FileHexEx.isXlsx
import java.io.File import java.io.File
...@@ -17,7 +20,7 @@ data class RecoveryBean( ...@@ -17,7 +20,7 @@ data class RecoveryBean(
var type: String = "" var type: String = ""
companion object { companion object {
fun RecoveryBean.setType() { fun RecoveryBean.setDocumentType() {
val file = File(path) val file = File(path)
if (isPdf(file)) { if (isPdf(file)) {
type = "PDF" type = "PDF"
...@@ -32,5 +35,19 @@ data class RecoveryBean( ...@@ -32,5 +35,19 @@ data class RecoveryBean(
type = "PPT" type = "PPT"
} }
} }
fun RecoveryBean.setAudioType() {
val file = File(path)
if (isMp3(file)) {
type = "MP3"
}
if (isWav(file)) {
type = "WAV"
}
if (isFlac(file)) {
type = "FLAC"
}
}
} }
} }
\ No newline at end of file
...@@ -2,6 +2,7 @@ package com.base.filerecoveryrecyclebin.fragment ...@@ -2,6 +2,7 @@ package com.base.filerecoveryrecyclebin.fragment
import android.animation.AnimatorSet import android.animation.AnimatorSet
import android.animation.ObjectAnimator import android.animation.ObjectAnimator
import android.animation.ValueAnimator
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.view.View import android.view.View
...@@ -16,24 +17,24 @@ import com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotAnimationAc ...@@ -16,24 +17,24 @@ import com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotAnimationAc
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobNativeUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobNativeUtils
import com.base.filerecoveryrecyclebin.ads.max.AdMaxNativeUtils import com.base.filerecoveryrecyclebin.ads.max.AdMaxNativeUtils
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_AUDIOS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_DOCUMENTS import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_DOCUMENTS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_PHOTOS import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_PHOTOS
import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_VIDEOS import com.base.filerecoveryrecyclebin.bean.ConstObject.SCAN_VIDEOS
import com.base.filerecoveryrecyclebin.bean.ConstObject.privacyPinPassword import com.base.filerecoveryrecyclebin.bean.ConstObject.privacyPinPassword
import com.base.filerecoveryrecyclebin.databinding.FragmentHome3Binding
import com.base.filerecoveryrecyclebin.databinding.FragmentHomeBinding import com.base.filerecoveryrecyclebin.databinding.FragmentHomeBinding
import com.base.filerecoveryrecyclebin.help.BaseFragment import com.base.filerecoveryrecyclebin.help.BaseFragment
import com.base.filerecoveryrecyclebin.help.ConfigHelper import com.base.filerecoveryrecyclebin.help.ConfigHelper
class HomeFragment : BaseFragment<FragmentHomeBinding>() { class HomeFragment : BaseFragment<FragmentHome3Binding>() {
override val binding: FragmentHomeBinding by lazy { override val binding: FragmentHome3Binding by lazy {
FragmentHomeBinding.inflate(layoutInflater) FragmentHome3Binding.inflate(layoutInflater)
} }
private lateinit var animatorSet: AnimatorSet
override fun setView() { override fun setView() {
animatorSet = createHeartbeatAnimation(binding.flScan) binding.lottie.repeatCount = ValueAnimator.INFINITE
AdmobMaxHelper.admobMaxShowNativeAd(requireActivity(), binding.flAd, 0) AdmobMaxHelper.admobMaxShowNativeAd(requireActivity(), binding.flAd, 0)
} }
...@@ -42,30 +43,27 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() { ...@@ -42,30 +43,27 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
startActivity(Intent(requireContext(), ScanJunkActivity::class.java)) startActivity(Intent(requireContext(), ScanJunkActivity::class.java))
// sendNotification(requireContext(), ConstObject.ID_SCREENSHOT_CLEAN) // sendNotification(requireContext(), ConstObject.ID_SCREENSHOT_CLEAN)
} }
binding.flRyPhoto.setOnClickListener { binding.cardRyPhotos.setOnClickListener {
startActivity(Intent(requireContext(), FileScanResultActivity::class.java).apply { startActivity(Intent(requireContext(), FileScanResultActivity::class.java).apply {
putExtra("ScanType", SCAN_PHOTOS) putExtra("ScanType", SCAN_PHOTOS)
}) })
} }
binding.flRyVideo.setOnClickListener { binding.cardRyVideos.setOnClickListener {
startActivity(Intent(requireContext(), FileScanResultActivity::class.java).apply { startActivity(Intent(requireContext(), FileScanResultActivity::class.java).apply {
putExtra("ScanType", SCAN_VIDEOS) putExtra("ScanType", SCAN_VIDEOS)
}) })
} }
binding.cardRyDocument.setOnClickListener { binding.cardRyDocuments.setOnClickListener {
startActivity(Intent(requireContext(), FileScanResultActivity::class.java).apply { startActivity(Intent(requireContext(), FileScanResultActivity::class.java).apply {
putExtra("ScanType", SCAN_DOCUMENTS) putExtra("ScanType", SCAN_DOCUMENTS)
}) })
} }
binding.cardPrivacySpace.setOnClickListener { binding.cardRyAudios.setOnClickListener {
if (privacyPinPassword.isNotEmpty()) { startActivity(Intent(requireContext(), FileScanResultActivity::class.java).apply {
startActivity(Intent(requireContext(), PrivacyPinOneActivity::class.java)) putExtra("ScanType", SCAN_AUDIOS)
} else { })
startActivity(Intent(requireContext(), PrivacySpaceActivity::class.java).apply {
})
}
} }
binding.cardScreenshot.setOnClickListener { binding.cardScreenshot.setOnClickListener {
startActivity(Intent(requireContext(), ScreenShotAnimationActivity::class.java)) startActivity(Intent(requireContext(), ScreenShotAnimationActivity::class.java))
} }
...@@ -77,40 +75,16 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() { ...@@ -77,40 +75,16 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
} }
} }
@SuppressLint("Recycle")
fun createHeartbeatAnimation(view: View): AnimatorSet {
// 创建放大动画
val scaleUpAnimator = ObjectAnimator.ofFloat(view, "scaleX", 1f, 1.1f)
scaleUpAnimator.setDuration(500)
scaleUpAnimator.interpolator = AccelerateDecelerateInterpolator()
scaleUpAnimator.repeatCount = ObjectAnimator.INFINITE
scaleUpAnimator.repeatMode = ObjectAnimator.REVERSE
// 创建缩小动画
val scaleDownAnimator = ObjectAnimator.ofFloat(view, "scaleY", 1.1f, 1f)
scaleDownAnimator.setDuration(500)
scaleDownAnimator.interpolator = AccelerateDecelerateInterpolator()
scaleDownAnimator.setStartDelay(500) // 延迟开始,以便与放大动画同步结束
scaleDownAnimator.repeatCount = ObjectAnimator.INFINITE
scaleDownAnimator.repeatMode = ObjectAnimator.REVERSE
// 组合放大和缩小动画
val animatorSet = AnimatorSet()
animatorSet.play(scaleUpAnimator).with(scaleDownAnimator)
// 启动动画
animatorSet.start()
return animatorSet
}
override fun onPause() { override fun onPause() {
super.onPause() super.onPause()
animatorSet.pause() binding.lottie.cancelAnimation()
} }
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
animatorSet.resume() binding.lottie.playAnimation()
} }
} }
\ No newline at end of file
package com.base.filerecoveryrecyclebin.fragment
import android.content.Intent
import android.os.Bundle
import android.os.Handler
import android.view.View
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import com.base.filerecoveryrecyclebin.activity.MainActivity
import com.base.filerecoveryrecyclebin.adapter.RecycleBinAdapter
import com.base.filerecoveryrecyclebin.bean.RecycleBinBean
import com.base.filerecoveryrecyclebin.databinding.FragmentRecycleBinBinding
import com.base.filerecoveryrecyclebin.help.BaseFragment
import com.base.filerecoveryrecyclebin.help.PermissionHelp.checkStorePermission
import com.base.filerecoveryrecyclebin.help.PermissionHelp.requestStorePermission
import com.base.filerecoveryrecyclebin.service.StayNotificationService
import com.base.filerecoveryrecyclebin.utils.LogEx
import com.base.filerecoveryrecyclebin.view.DialogViews.showGerPermission
import com.google.gson.Gson
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.io.File
class RecycleBinFragment : BaseFragment<FragmentRecycleBinBinding>() {
private val TAG = "RecycleBinFragment"
private lateinit var handler: Handler
private lateinit var recycleBinAdapter: RecycleBinAdapter
override val binding: FragmentRecycleBinBinding by lazy {
FragmentRecycleBinBinding.inflate(layoutInflater)
}
override fun setView() {
handler = Handler(requireActivity().mainLooper) { message ->
if (message.what == 99) {
// LogEx.logDebug(TAG, "媒体库更新了")
}
if (message.what == 100) {
// LogEx.logDebug(TAG, "回收站数据更新了")
}
true
}
StayNotificationService.mainHandler = handler
requireActivity().startService(Intent(requireActivity(), StayNotificationService::class.java).apply {
this.action = StayNotificationService.MEDIA_OBSERVER_ACTION
})
requireActivity().startService(Intent(requireContext(), StayNotificationService::class.java).apply {
this.action = StayNotificationService.FILE_OBSERVER_ACTION
putExtra("isStart", true)
})
recycleBinAdapter = RecycleBinAdapter()
binding.rv.adapter = recycleBinAdapter
val launcher = (requireActivity() as MainActivity).launcher
if (requireActivity().checkStorePermission()) {
initData()
} else {
requireContext().showGerPermission(allow = {
requireContext().requestStorePermission(launcher, result = { flag ->
if (flag) {
initData()
}
})
})
}
}
private fun initData() {
lifecycleScope.launch(Dispatchers.IO) {
val file = requireActivity().filesDir
val recycleBinDir = File(file, "RecycleBin")
if (!recycleBinDir.exists()) {
recycleBinDir.mkdirs()
}
val binList = recycleBinDir.listFiles()?.filter { it.name.contains(".bin") }
val beanList = arrayListOf<RecycleBinBean>()
binList?.forEach {
val bean = Gson().fromJson(it.readText(), RecycleBinBean::class.java)
beanList.add(bean)
}
launch(Dispatchers.Main) {
binding.rv.isVisible = !binList.isNullOrEmpty()
binding.llEmpty.isVisible = binList.isNullOrEmpty()
recycleBinAdapter.setData(beanList)
}
}
}
}
\ No newline at end of file
...@@ -105,7 +105,7 @@ object FileHexEx { ...@@ -105,7 +105,7 @@ object FileHexEx {
val aviHex = "524946461C1BA900415649204C495354" val aviHex = "524946461C1BA900415649204C495354"
val hex = FileHelp.readFileRange(file.absolutePath, 0, 16).byteArrayToHexString() val hex = FileHelp.readFileRange(file.absolutePath, 0, 16).byteArrayToHexString()
val flag = hex == aviHex val flag = hex == aviHex
LogEx.logDebug(TAG, "flag=$flag hex=${hex} ${file.absolutePath}") // LogEx.logDebug(TAG, "flag=$flag hex=${hex} ${file.absolutePath}")
return flag return flag
} }
...@@ -126,5 +126,33 @@ object FileHexEx { ...@@ -126,5 +126,33 @@ object FileHexEx {
} }
fun isAudio(file: File): Boolean {
return isMp3(file) || isFlac(file) || isWav(file)
}
fun isMp3(file: File): Boolean {
val mp3Hex1 = "49443303"
val hex1 = FileHelp.readFileRange(file.absolutePath, 0, 4).byteArrayToHexString()
val flag1 = hex1 == mp3Hex1
LogEx.logDebug(TAG, "flag1=$flag1 hex1=${hex1} ${file.absolutePath}")
return flag1
}
fun isFlac(file: File): Boolean {
val flacHex = "664C6143"
val hex1 = FileHelp.readFileRange(file.absolutePath, 0, 4).byteArrayToHexString()
val flag1 = hex1 == flacHex
LogEx.logDebug(TAG, "flag1=$flag1 hex1=${hex1} ${file.absolutePath}")
return flag1
}
fun isWav(file: File): Boolean {
val wavHex = "5249464668E7820957415645666D74"
val hex1 = FileHelp.readFileRange(file.absolutePath, 0, 15).byteArrayToHexString()
val flag1 = hex1 == wavHex
LogEx.logDebug(TAG, "flag1=$flag1 hex1=${hex1} ${file.absolutePath}")
return flag1
}
} }
\ No newline at end of file
...@@ -7,7 +7,7 @@ object LogEx { ...@@ -7,7 +7,7 @@ object LogEx {
val isOpen = true val isOpen = true
val filterTAG = arrayOf( val filterTAG = arrayOf(
"FileScanActivity", "FileScanActivity",
"FileHexEx", // "FileHexEx",
"FileGridAdapter" "FileGridAdapter"
) )
......
...@@ -9,6 +9,7 @@ import android.view.animation.LinearInterpolator ...@@ -9,6 +9,7 @@ import android.view.animation.LinearInterpolator
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.filerecoveryrecyclebin.R import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.admob.AdmobNativeUtils import com.base.filerecoveryrecyclebin.ads.admob.AdmobNativeUtils
import com.base.filerecoveryrecyclebin.databinding.DialogFileScanBinding import com.base.filerecoveryrecyclebin.databinding.DialogFileScanBinding
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
...@@ -55,7 +56,7 @@ class FileScanDialog( ...@@ -55,7 +56,7 @@ class FileScanDialog(
a1.cancel() a1.cancel()
} }
AdmobNativeUtils.showNativeAd(activity, binding.flAd, R.layout.layout_native_custom_big) AdmobMaxHelper.admobMaxShowNativeAd(activity, binding.flAd, 1)
var pathShowed = false var pathShowed = false
activity.lifecycleScope.launch(Dispatchers.Main) { activity.lifecycleScope.launch(Dispatchers.Main) {
......
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragment.RecycleBinFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/item_media_file" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical"
android:visibility="gone"
tools:ignore="UseCompoundDrawables,UselessParent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/r_queshengtu"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="30dp"
android:gravity="center"
android:text="Mobispeedy is protecting your photos, videos, files &amp; App files from being deleted"
tools:ignore="HardcodedText" />
</LinearLayout>
</FrameLayout>
\ No newline at end of file
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
android:id="@+id/tv_name" android:id="@+id/tv_name"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="middle"
android:singleLine="true" android:singleLine="true"
android:textColor="#333333" android:textColor="#333333"
android:textSize="15sp" android:textSize="15sp"
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_marginHorizontal="20dp"
android:layout_marginVertical="6dp">
<androidx.cardview.widget.CardView
android:id="@+id/card"
android:layout_width="50dp"
android:layout_height="50dp"
app:cardCornerRadius="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="ContentDescription" />
</androidx.cardview.widget.CardView>
<LinearLayout
android:id="@+id/ll"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="@id/card"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/card"
app:layout_constraintTop_toTopOf="@id/card">
<TextView
android:id="@+id/tv_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="middle"
android:singleLine="true"
android:textColor="#333333"
android:textSize="15sp"
tools:text="VID_20240210_200748.mp3" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp">
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textColor="#999999"
android:textSize="14sp"
tools:text="2024/07/16" />
<TextView
android:id="@+id/tv_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:textColor="#999999"
android:textSize="14sp"
tools:text="8.7 MB" />
</FrameLayout>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="10dp"
android:background="#F4F4F4"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/ll" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
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