Commit c81d9d2a authored by wanglei's avatar wanglei

替换包名

parent 28cd9e39
......@@ -5,11 +5,11 @@ plugins {
android {
namespace 'com.test.mydemo3'
namespace 'com.xm.test.myfilemaster'
compileSdk 34
defaultConfig {
applicationId "com.tttt.datarecoveryrenew"
applicationId "com.xm.test.myfilemaster"
minSdk 25
targetSdk 33
versionCode 1
......
package com.test.mydemo3
package com.xm.mydemo3
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
......
......@@ -108,13 +108,17 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> <!-- 病毒扫描,key是和包名绑定的 -->
</activity>
<!-- 病毒扫描,key是和包名绑定的 -->
<meta-data
android:name="com.trustlook.ApiKey"
android:value="b8ade465f682b1ae8bcf942eb4e07aab435ee02a10196283b38daa66" /> <!-- 垃圾清理 -->
android:value="86984b67c2db250b6a0dfd8923ac623c776c8af9ee520ba5d60e8799" />
<!-- 垃圾清理 -->
<meta-data
android:name="com.trustlook.cleansdk.ApiKey"
android:value="b8ade465f682b1ae8bcf942eb4e07aab435ee02a10196283b38daa66" />
android:value="86984b67c2db250b6a0dfd8923ac623c776c8af9ee520ba5d60e8799" />
</application>
</manifest>
\ No newline at end of file
package com.test.mydemo3.adapter
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
class HomeViewPagerAdapter() {
}
\ No newline at end of file
package com.test.mydemo3
package com.xm.test.myfilemaster
import android.annotation.SuppressLint
import android.content.Intent
......@@ -14,12 +14,12 @@ import com.applovin.sdk.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration
import com.kongzue.dialogx.DialogX
import com.test.mydemo3.activity.HomeActivity
import com.test.mydemo3.util.UrlManager
import com.xm.test.myfilemaster.activity.HomeActivity
import com.xm.test.myfilemaster.util.UrlManager
import java.util.concurrent.TimeUnit
class MainActivity : AppCompatActivity() , MaxAdListener {
class MainActivity : AppCompatActivity(), MaxAdListener {
private lateinit var mProgressBar: ProgressBar
private lateinit var interstitialAd: MaxInterstitialAd
......@@ -45,15 +45,15 @@ class MainActivity : AppCompatActivity() , MaxAdListener {
.build();
val handler = Handler()
var count: Int = 0
val runnable = object : Runnable{
val runnable = object : Runnable {
override fun run() {
if (count <= 100){
if (count <= 100) {
runOnUiThread {
mProgressBar.setProgress(count)
count += 10
}
handler.postDelayed(this, 300)
}else{
} else {
startVi()
}
}
......@@ -63,7 +63,8 @@ class MainActivity : AppCompatActivity() , MaxAdListener {
handler.postDelayed(runnable, 300)
}
}
fun startVi(){
fun startVi() {
startActivity(Intent(this, HomeActivity::class.java))
finish()
}
......
package com.test.mydemo3
import android.app.Application
import android.content.Context
import android.util.Log
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.ProcessLifecycleOwner
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxAppOpenAd
import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkConfiguration
import com.cloud.cleanjunksdk.task.CheckSdkCallback
import com.cloud.cleanjunksdk.task.Clean
import com.cloud.cleanjunksdk.task.CleanSDK
import com.cloud.cleanjunksdk.tools.Region
import com.test.mydemo3.util.UrlManager
import com.trustlook.sdk.cloudscan.CloudScanClient
class MyApplication : Application() {
private lateinit var appOpenManager: ExampleAppOpenManager
companion object{
var mCleanSdk: Clean? = null
var mCloudScan: CloudScanClient? = null
}
override fun onCreate() {
super.onCreate()
// AppLovinSdk.getInstance( this ).initializeSdk({ configuration: AppLovinSdkConfiguration ->
// {
// appOpenManager = ExampleAppOpenManager(applicationContext)
// }
// )
// }
CleanSDK.init(MyApplication(), this, Region.INTL, object : CheckSdkCallback {
override fun onSuccess(p0: Clean?) {
mCleanSdk = p0!!
Log.e("yanglin", "onSuccess: clean INIT", )
}
override fun onError(p0: Int) {
Log.e("yanglin", "onError: INIT", )
}
})
mCloudScan = CloudScanClient.Builder(this)
.setRegion(com.trustlook.sdk.data.Region.INTL)
.setConnectionTimeout(30000)
.setSocketTimeout(30000)
.build()
AppLovinSdk.getInstance(this).initializeSdk {
appOpenManager = ExampleAppOpenManager(applicationContext)
}
}
class ExampleAppOpenManager(applicationContext: Context?) : LifecycleObserver, MaxAdListener {
private lateinit var appOpenAd: MaxAppOpenAd
private lateinit var context: Context
init {
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
context = applicationContext!!
appOpenAd = MaxAppOpenAd(UrlManager.AD_UNIT_ID, applicationContext!!)
appOpenAd.setListener(this)
appOpenAd.loadAd()
}
private fun showAdIfReady() {
if (appOpenAd == null || !AppLovinSdk.getInstance(context).isInitialized) return
if (appOpenAd.isReady) {
appOpenAd.showAd(UrlManager.TEST_PLACEMENT_HERE)
} else {
appOpenAd.loadAd()
}
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onStart() {
showAdIfReady()
}
override fun onAdLoaded(ad: MaxAd) {}
override fun onAdLoadFailed(adUnitId: String, error: MaxError) {}
override fun onAdDisplayed(ad: MaxAd) {}
override fun onAdClicked(ad: MaxAd) {}
override fun onAdHidden(ad: MaxAd) {
appOpenAd.loadAd()
}
override fun onAdDisplayFailed(ad: MaxAd, error: MaxError) {
appOpenAd.loadAd()
}
}
package com.xm.test.myfilemaster
import android.app.Application
import android.content.Context
import android.util.Log
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.ProcessLifecycleOwner
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxAppOpenAd
import com.applovin.sdk.AppLovinSdk
import com.cloud.cleanjunksdk.task.CheckSdkCallback
import com.cloud.cleanjunksdk.task.Clean
import com.cloud.cleanjunksdk.task.CleanSDK
import com.cloud.cleanjunksdk.tools.Region
import com.trustlook.sdk.cloudscan.CloudScanClient
import com.xm.test.myfilemaster.util.UrlManager
class MyApplication : Application() {
private lateinit var appOpenManager: ExampleAppOpenManager
companion object {
var mCleanSdk: Clean? = null
var mCloudScan: CloudScanClient? = null
}
override fun onCreate() {
super.onCreate()
// AppLovinSdk.getInstance( this ).initializeSdk({ configuration: AppLovinSdkConfiguration ->
// {
// appOpenManager = ExampleAppOpenManager(applicationContext)
// }
// )
// }
CleanSDK.init(this, this, Region.INTL, object : CheckSdkCallback {
override fun onSuccess(p0: Clean?) {
mCleanSdk = p0!!
Log.e("yanglin", "onSuccess: clean INIT")
}
override fun onError(error: Int) {
Log.e("yanglin", "onError: INIT error=$error")
}
})
mCloudScan = CloudScanClient.Builder(this)
.setRegion(com.trustlook.sdk.data.Region.INTL)
.setConnectionTimeout(30000)
.setSocketTimeout(30000)
.build()
AppLovinSdk.getInstance(this).initializeSdk {
appOpenManager = ExampleAppOpenManager(applicationContext)
}
}
class ExampleAppOpenManager(applicationContext: Context?) : LifecycleObserver, MaxAdListener {
private lateinit var appOpenAd: MaxAppOpenAd
private lateinit var context: Context
init {
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
context = applicationContext!!
appOpenAd = MaxAppOpenAd(UrlManager.AD_UNIT_ID, applicationContext)
appOpenAd.setListener(this)
appOpenAd.loadAd()
}
private fun showAdIfReady() {
if (appOpenAd == null || !AppLovinSdk.getInstance(context).isInitialized) return
if (appOpenAd.isReady) {
appOpenAd.showAd(UrlManager.TEST_PLACEMENT_HERE)
} else {
appOpenAd.loadAd()
}
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun onStart() {
showAdIfReady()
}
override fun onAdLoaded(ad: MaxAd) {}
override fun onAdLoadFailed(adUnitId: String, error: MaxError) {}
override fun onAdDisplayed(ad: MaxAd) {}
override fun onAdClicked(ad: MaxAd) {}
override fun onAdHidden(ad: MaxAd) {
appOpenAd.loadAd()
}
override fun onAdDisplayFailed(ad: MaxAd, error: MaxError) {
appOpenAd.loadAd()
}
}
}
\ No newline at end of file
package com.test.mydemo3.activity
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class BaseActivityViewModel : ViewModel() {
// private var mSelectNumber = MutableLiveData<SelectNumber>()
private val _myInt = MutableLiveData<Int>()
val myInt: LiveData<Int> get() = _myInt
fun setNumber(number: Int){
_myInt.value = number
}
// fun getNumber() : LiveData<SelectNumber>{
// return mSelectNumber
// }
//
// fun setNumber(number: Int){
// mSelectNumber.value = SelectNumber(number)
// }
package com.xm.test.myfilemaster.activity
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class BaseActivityViewModel : ViewModel() {
// private var mSelectNumber = MutableLiveData<SelectNumber>()
private val _myInt = MutableLiveData<Int>()
val myInt: LiveData<Int> get() = _myInt
fun setNumber(number: Int){
_myInt.value = number
}
// fun getNumber() : LiveData<SelectNumber>{
// return mSelectNumber
// }
//
// fun setNumber(number: Int){
// mSelectNumber.value = SelectNumber(number)
// }
}
\ No newline at end of file
package com.test.mydemo3.activity
package com.xm.test.myfilemaster.activity
import android.content.ContentResolver
import android.content.Context
import android.content.Intent
import android.os.BatteryManager
......@@ -13,10 +12,10 @@ import android.view.View
import android.widget.ImageView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.test.mydemo3.R
import com.test.mydemo3.util.BatteryUtil
import com.test.mydemo3.util.PermissionUtil
import com.test.mydemo3.util.SystemServerState
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.util.BatteryUtil
import com.xm.test.myfilemaster.util.PermissionUtil
import com.xm.test.myfilemaster.util.SystemServerState
import java.util.Calendar
import java.util.Date
......
package com.test.mydemo3.activity
package com.xm.test.myfilemaster.activity
import android.annotation.SuppressLint
import android.content.Intent
......@@ -8,7 +8,6 @@ import android.os.Looper
import android.util.Log
import android.view.View
import android.widget.ImageView
import android.widget.ListView
import android.widget.ProgressBar
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
......@@ -23,14 +22,14 @@ import com.cloud.cleanjunksdk.residual.ResidualBean
import com.cloud.cleanjunksdk.task.JunkScanCallback
import com.cm.plugincluster.junkengine.junk.bean.MediaFile
import com.cm.plugincluster.junkengine.junk.engine.MEDIA_TYPE
import com.test.mydemo3.MyApplication
import com.test.mydemo3.R
import com.test.mydemo3.adapter.CleanAdapter
import com.test.mydemo3.adapter.CleanAdapter2
import com.test.mydemo3.antivirus.AntivirusActivity
import com.test.mydemo3.model.CleanBean
import com.test.mydemo3.model.FileBean
import com.test.mydemo3.util.FileUtil
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.adapter.CleanAdapter
import com.xm.test.myfilemaster.adapter.CleanAdapter2
import com.xm.test.myfilemaster.antivirus.AntivirusActivity
import com.xm.test.myfilemaster.model.CleanBean
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import java.io.File
class CleanActivity : AppCompatActivity() {
......
package com.test.mydemo3.activity
package com.xm.test.myfilemaster.activity
import android.os.Bundle
import com.kongzue.dialogx.dialogs.WaitDialog
import com.test.mydemo3.R
import com.test.mydemo3.base.BaseActivity
import com.test.mydemo3.model.FileBean
import com.test.mydemo3.util.FileUtil
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.base.BaseActivity
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
class FileManagerActivity : BaseActivity() {
private var mFileBeanList = ArrayList<FileBean>()
......
package com.test.mydemo3.activity
package com.xm.test.myfilemaster.activity
import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.provider.MediaStore.Audio.Radio
import android.provider.Settings
import android.view.View
import android.widget.RadioButton
import android.widget.RadioGroup
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.annotation.IdRes
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.get
import androidx.fragment.app.Fragment
import androidx.viewpager.widget.ViewPager
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
import com.permissionx.guolindev.PermissionX
import com.permissionx.guolindev.callback.RequestCallback
import com.test.mydemo3.R
import com.test.mydemo3.fragment.FileManagerFragment
import com.test.mydemo3.fragment.HomeFragment
import com.test.mydemo3.fragment.InternalStorageFragment
import com.test.mydemo3.util.PermissionUtil
import java.security.Permission
import javax.security.auth.callback.Callback
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.fragment.FileManagerFragment
import com.xm.test.myfilemaster.fragment.HomeFragment
import com.xm.test.myfilemaster.fragment.InternalStorageFragment
import com.xm.test.myfilemaster.util.PermissionUtil
class HomeActivity : AppCompatActivity() {
private val REQUEST_MANAGE_EXTERNAL_STORAGE_PERMISSION = 101
......
package com.test.mydemo3.activity
package com.xm.test.myfilemaster.activity
import android.Manifest
import android.content.Context
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.util.Log
import android.util.SparseBooleanArray
import android.widget.ListView
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import com.kongzue.dialogx.dialogs.WaitDialog
import com.test.mydemo3.R
import com.test.mydemo3.base.BaseActivity
import com.test.mydemo3.model.FileBean
import com.test.mydemo3.model.FilesItemBean
import com.test.mydemo3.util.FileUtil
import com.test.mydemo3.util.PermissionUtil
import java.io.File
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.base.BaseActivity
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfilemaster.util.PermissionUtil
class InternalStorageActivity : BaseActivity() {
private lateinit var mFilesItemListView: ListView
......
package com.test.mydemo3.activity
package com.xm.test.myfilemaster.activity
import android.annotation.SuppressLint
import android.os.Bundle
......@@ -7,15 +7,14 @@ import android.view.View
import android.widget.CheckBox
import android.widget.GridView
import android.widget.ImageView
import android.widget.ScrollView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.ViewModelProvider
import com.kongzue.dialogx.dialogs.WaitDialog
import com.test.mydemo3.R
import com.test.mydemo3.adapter.MediaAdapter
import com.test.mydemo3.model.FileBean
import com.test.mydemo3.util.FileUtil
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.adapter.MediaAdapter
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
class MediaActivity : AppCompatActivity() {
private lateinit var mGridView: GridView
......
package com.test.mydemo3.activity
package com.xm.test.myfilemaster.activity
import android.os.Bundle
import android.util.Log
import android.util.SparseBooleanArray
import android.view.View
import android.widget.LinearLayout
import android.widget.ListView
import android.widget.TextView
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.isVisible
import com.test.mydemo3.R
import com.test.mydemo3.adapter.FilesItemViewAdapter
import com.test.mydemo3.base.BaseActivity
import com.test.mydemo3.fragment.InternalStorageFragment
import com.test.mydemo3.model.FileBean
import com.test.mydemo3.util.FileUtil
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.adapter.FilesItemViewAdapter
import com.xm.test.myfilemaster.fragment.InternalStorageFragment
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
class MoveOrCopyActivity : ComponentActivity() {
......
package com.test.mydemo3.activity
package com.xm.test.myfilemaster.activity
import android.os.Bundle
import android.util.Log
import android.util.SparseBooleanArray
import android.view.View
import android.widget.ListView
import com.kongzue.dialogx.dialogs.WaitDialog
import com.test.mydemo3.R
import com.test.mydemo3.adapter.FilesItemViewAdapter
import com.test.mydemo3.base.BaseActivity
import com.test.mydemo3.model.FileBean
import com.test.mydemo3.model.FilesItemBean
import com.test.mydemo3.util.FileUtil
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.base.BaseActivity
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
class ScanEmptyFilesActivity : BaseActivity() {
......
package com.test.mydemo3.activity
package com.xm.test.myfilemaster.activity
import android.net.Uri
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.provider.MediaStore
import android.util.Log
import android.util.SparseBooleanArray
import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.ListView
import android.widget.Toast
import com.airbnb.lottie.utils.Utils
import com.kongzue.dialogx.dialogs.WaitDialog
import com.test.mydemo3.R
import com.test.mydemo3.base.BaseActivity
import com.test.mydemo3.model.FileBean
import com.test.mydemo3.model.FilesItemBean
import com.test.mydemo3.util.FileUtil
import java.io.File
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.base.BaseActivity
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
class ScanLargeFilesActivity : BaseActivity() {
......
package com.test.mydemo3.activity
package com.xm.test.myfilemaster.activity
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.ImageView
import android.widget.ListView
import android.widget.TextView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.isVisible
import com.test.mydemo3.R
import com.test.mydemo3.adapter.ScanResultAdapter
import com.test.mydemo3.view.CustomDialog
import com.trustlook.sdk.data.AppInfo
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.adapter.ScanResultAdapter
import com.xm.test.myfilemaster.view.CustomDialog
class ScanResultActivity : AppCompatActivity() {
......
package com.test.mydemo3.activity
package com.xm.test.myfilemaster.activity
import android.os.Bundle
import android.util.Log
......@@ -14,14 +14,14 @@ import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.RecyclerView
import com.cloud.cleanjunksdk.similar.PicSimilarInfo
import com.cloud.cleanjunksdk.task.JunkScanCallback
import com.cloud.cleanjunksdk.task.SimilarScanCallBack
import com.test.mydemo3.MyApplication
import com.test.mydemo3.R
import com.test.mydemo3.adapter.ImageItemAdapter
import com.test.mydemo3.adapter.SimilarBeanAdapter
import com.test.mydemo3.base.BaseActivity
import com.test.mydemo3.model.FileBean
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.adapter.ImageItemAdapter
import com.xm.test.myfilemaster.adapter.SimilarBeanAdapter
import com.xm.test.myfilemaster.base.BaseActivity
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.view.CustomDialog
import java.io.File
class SimilarImagesActivity : AppCompatActivity(), OnClickListener{
......@@ -175,7 +175,7 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{
isClickEditBtn = true
}
R.id.btn_delete ->{
val customDialog = com.test.mydemo3.view.CustomDialog(this)
val customDialog = CustomDialog(this)
customDialog.setsCancel(View.OnClickListener {
customDialog.dismiss()
}).setsConfirm(View.OnClickListener {
......
package com.test.mydemo3.adapter
package com.xm.test.myfilemaster.adapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.test.mydemo3.R
import com.test.mydemo3.databinding.CleanListItemLayoutBinding
import com.test.mydemo3.databinding.FilesItemLayoutBinding
import com.test.mydemo3.model.CleanBean
import com.test.mydemo3.model.FileBean
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.databinding.CleanListItemLayoutBinding
import com.xm.test.myfilemaster.databinding.FilesItemLayoutBinding
import com.xm.test.myfilemaster.model.CleanBean
import com.xm.test.myfilemaster.model.FileBean
class CleanAdapter2 : RecyclerView.Adapter<CleanAdapter2.AAA>() {
......
//package com.test.mydemo3.adapter
//
//import android.view.View
//import android.view.ViewGroup
//import androidx.recyclerview.widget.RecyclerView
//import androidx.recyclerview.widget.RecyclerView.ViewHolder
//import com.test.mydemo3.model.FileBean
//
//class FileSimilarAdapter<T : ViewHolder?>() : RecyclerView.Adapter<T>(){
//
// val fileList = arrayListOf<FileBean>()
// private var firstRefresh = true
//
// fun setData(data: List<FileBean>) {
// fileList.clear()
// fileList.addAll(data)
//// notifyDataSetChanged()
// }
//
// fun addData(data: List<FileBean>) {
// fileList.addAll(data)
//// notifyDataSetChanged()
// }
//
//
// fun clearData() {
// if (fileList.size == 0) return
// fileList.clear()
//// notifyDataSetChanged()
// }
//
//// @SuppressLint("NotifyDataSetChanged")
// fun removeData(data: List<FileBean>) {
// data.forEach {
// val index = fileList.indexOf(it)
// if (index != -1) {
// fileList.removeAt(index)
//// notifyItemRemoved(index)
// }
// }
// }
//
//// override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): T & Any {
////
////
//// }
//
// override fun getItemCount(): Int {
// return fileList.size
// }
//
// override fun onBindViewHolder(holder: T & Any, position: Int) {
// return
// }
//
//
//package com.test.mydemo3.adapter
//
//import android.view.View
//import android.view.ViewGroup
//import androidx.recyclerview.widget.RecyclerView
//import androidx.recyclerview.widget.RecyclerView.ViewHolder
//import com.test.mydemo3.model.FileBean
//
//class FileSimilarAdapter<T : ViewHolder?>() : RecyclerView.Adapter<T>(){
//
// val fileList = arrayListOf<FileBean>()
// private var firstRefresh = true
//
// fun setData(data: List<FileBean>) {
// fileList.clear()
// fileList.addAll(data)
//// notifyDataSetChanged()
// }
//
// fun addData(data: List<FileBean>) {
// fileList.addAll(data)
//// notifyDataSetChanged()
// }
//
//
// fun clearData() {
// if (fileList.size == 0) return
// fileList.clear()
//// notifyDataSetChanged()
// }
//
//// @SuppressLint("NotifyDataSetChanged")
// fun removeData(data: List<FileBean>) {
// data.forEach {
// val index = fileList.indexOf(it)
// if (index != -1) {
// fileList.removeAt(index)
//// notifyItemRemoved(index)
// }
// }
// }
//
//// override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): T & Any {
////
////
//// }
//
// override fun getItemCount(): Int {
// return fileList.size
// }
//
// override fun onBindViewHolder(holder: T & Any, position: Int) {
// return
// }
//
//
//}
\ No newline at end of file
package com.test.mydemo3.adapter
import android.content.Context
import android.graphics.BitmapFactory
import android.graphics.drawable.BitmapDrawable
import android.os.Looper
import android.util.SparseBooleanArray
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.CheckBox
import android.widget.ImageView
import com.bumptech.glide.Glide
import com.test.mydemo3.R
import com.test.mydemo3.activity.MediaActivity
import com.test.mydemo3.model.FileBean
import com.test.mydemo3.util.FileUtil
import com.test.mydemo3.util.MediaUtil
import java.util.logging.Handler
class MediaAdapter(
mListData: ArrayList<FileBean>,
mContext: Context,
mStateCheckedMap: SparseBooleanArray,
fileType: String,
mItemHeight: Int
): BaseAdapter() {
private var mListData: ArrayList<FileBean>
private var mContext: Context
private var mInflater: LayoutInflater
private var mStateCheckedMap: SparseBooleanArray
private var mFileType: String
private var mItemHeight: Int = 0
private var dpToPx = 0
init {
this.mListData = mListData
this.mContext = mContext
this.mStateCheckedMap = mStateCheckedMap
this.mInflater = LayoutInflater.from(mContext)
this.mFileType = fileType
this.mItemHeight =mItemHeight
this.dpToPx = FileUtil.dpToPx(mItemHeight, mContext)
}
override fun getCount(): Int {
return mListData.size
}
override fun getItem(position: Int): Any {
return mListData[position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var mViewHolder: ViewHolder
var view:View? = convertView
if (view != null){
mViewHolder = view.tag as ViewHolder
}else{
mViewHolder = ViewHolder()
view = mInflater.inflate(R.layout.item_layout,null)
mViewHolder.image = view.findViewById(R.id.item_image)
mViewHolder.checkedBox = view.findViewById(R.id.check_item_image_switch)
view.tag = mViewHolder
}
if (mFileType.equals("image")){
mViewHolder.image.setImageDrawable(mListData[position].drawable)
mViewHolder.image.layoutParams.height = dpToPx
}else{
mViewHolder.image.setImageResource(R.drawable.ic_video)
mViewHolder.image.layoutParams.height = dpToPx
}
mViewHolder.checkedBox.visibility = if (MediaActivity.isClickEditBtn) View.VISIBLE else View.GONE
mViewHolder.checkedBox.isChecked = mStateCheckedMap[position]
return view!!
}
fun setItemHeight(height: Int){
this.mItemHeight = height
}
fun setData(data: ArrayList<FileBean>) {
this.mListData = data
this.notifyDataSetChanged()
}
class ViewHolder{
lateinit var image: ImageView
lateinit var checkedBox: CheckBox
}
package com.xm.test.myfilemaster.adapter
import android.content.Context
import android.util.SparseBooleanArray
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.CheckBox
import android.widget.ImageView
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.MediaActivity
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
class MediaAdapter(
mListData: ArrayList<FileBean>,
mContext: Context,
mStateCheckedMap: SparseBooleanArray,
fileType: String,
mItemHeight: Int
): BaseAdapter() {
private var mListData: ArrayList<FileBean>
private var mContext: Context
private var mInflater: LayoutInflater
private var mStateCheckedMap: SparseBooleanArray
private var mFileType: String
private var mItemHeight: Int = 0
private var dpToPx = 0
init {
this.mListData = mListData
this.mContext = mContext
this.mStateCheckedMap = mStateCheckedMap
this.mInflater = LayoutInflater.from(mContext)
this.mFileType = fileType
this.mItemHeight =mItemHeight
this.dpToPx = FileUtil.dpToPx(mItemHeight, mContext)
}
override fun getCount(): Int {
return mListData.size
}
override fun getItem(position: Int): Any {
return mListData[position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var mViewHolder: ViewHolder
var view:View? = convertView
if (view != null){
mViewHolder = view.tag as ViewHolder
}else{
mViewHolder = ViewHolder()
view = mInflater.inflate(R.layout.item_layout,null)
mViewHolder.image = view.findViewById(R.id.item_image)
mViewHolder.checkedBox = view.findViewById(R.id.check_item_image_switch)
view.tag = mViewHolder
}
if (mFileType.equals("image")){
mViewHolder.image.setImageDrawable(mListData[position].drawable)
mViewHolder.image.layoutParams.height = dpToPx
}else{
mViewHolder.image.setImageResource(R.drawable.ic_video)
mViewHolder.image.layoutParams.height = dpToPx
}
mViewHolder.checkedBox.visibility = if (MediaActivity.isClickEditBtn) View.VISIBLE else View.GONE
mViewHolder.checkedBox.isChecked = mStateCheckedMap[position]
return view!!
}
fun setItemHeight(height: Int){
this.mItemHeight = height
}
fun setData(data: ArrayList<FileBean>) {
this.mListData = data
this.notifyDataSetChanged()
}
class ViewHolder{
lateinit var image: ImageView
lateinit var checkedBox: CheckBox
}
}
\ No newline at end of file
package com.test.mydemo3.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.ImageView
import android.widget.TextView
import com.test.mydemo3.R
import com.trustlook.sdk.data.AppInfo
class ScanResultAdapter(dataList: ArrayList<AppInfo>,
context: Context) : BaseAdapter() {
private var dataList: ArrayList<AppInfo>
private var inflater: LayoutInflater
private var context: Context
init {
this.dataList = dataList
this.context = context
this.inflater = LayoutInflater.from(context)
}
override fun getCount(): Int {
return dataList.size
}
override fun getItem(position: Int): Any {
return dataList[position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var view: View
var viewHolder : ScanResultViewHolder
if (convertView != null){
view = convertView
viewHolder = view.tag as ScanResultViewHolder
}else{
viewHolder = ScanResultViewHolder()
view = inflater.inflate(R.layout.scan_result_list_item_layout, null)
viewHolder.appIcon = view.findViewById(R.id.scan_app_icon)
viewHolder.appName = view.findViewById(R.id.scan_app_name)
viewHolder.appHint = view.findViewById(R.id.scan_app_hint)
view.tag = viewHolder
}
viewHolder.appIcon
viewHolder.appName.text = dataList[position].appName
viewHolder.appHint.text = dataList[position].virusName
return view
}
class ScanResultViewHolder{
lateinit var appIcon: ImageView
lateinit var appName: TextView
lateinit var appHint: TextView
}
package com.xm.test.myfilemaster.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.ImageView
import android.widget.TextView
import com.trustlook.sdk.data.AppInfo
import com.xm.test.myfilemaster.R
class ScanResultAdapter(dataList: ArrayList<AppInfo>,
context: Context) : BaseAdapter() {
private var dataList: ArrayList<AppInfo>
private var inflater: LayoutInflater
private var context: Context
init {
this.dataList = dataList
this.context = context
this.inflater = LayoutInflater.from(context)
}
override fun getCount(): Int {
return dataList.size
}
override fun getItem(position: Int): Any {
return dataList[position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var view: View
var viewHolder : ScanResultViewHolder
if (convertView != null){
view = convertView
viewHolder = view.tag as ScanResultViewHolder
}else{
viewHolder = ScanResultViewHolder()
view = inflater.inflate(R.layout.scan_result_list_item_layout, null)
viewHolder.appIcon = view.findViewById(R.id.scan_app_icon)
viewHolder.appName = view.findViewById(R.id.scan_app_name)
viewHolder.appHint = view.findViewById(R.id.scan_app_hint)
view.tag = viewHolder
}
viewHolder.appIcon
viewHolder.appName.text = dataList[position].appName
viewHolder.appHint.text = dataList[position].virusName
return view
}
class ScanResultViewHolder{
lateinit var appIcon: ImageView
lateinit var appName: TextView
lateinit var appHint: TextView
}
}
\ No newline at end of file
package com.test.mydemo3.adapter
import android.content.Context
import android.util.Log
import android.util.SparseBooleanArray
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.GridView
import androidx.recyclerview.widget.RecyclerView
import com.cloud.cleanjunksdk.similar.PicInfo
import com.cloud.cleanjunksdk.similar.PicSimilarInfo
import com.test.mydemo3.R
import com.test.mydemo3.activity.SimilarImagesActivity
import com.test.mydemo3.databinding.ImageItemLayoutBinding
import com.test.mydemo3.util.FileUtil
class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAdapter.AA>() {
private val list = arrayListOf<PicSimilarInfo>()
private var context: Context
var mCheckedLists: MutableList<PicInfo> = mutableListOf<PicInfo>()
private var mItemCheckedArray = ArrayList<SparseBooleanArray>()
val mGridAdapters = ArrayList<SimilarGridAdapter>()
val holders = ArrayList<AA>()
init {
this.context = context
}
fun Int.inflate(parent: ViewGroup, attachToRoot: Boolean = false): View {
return LayoutInflater.from(parent.context).inflate(this, parent, attachToRoot)
}
class AA(view: View) : RecyclerView.ViewHolder(view) {
val binding = ImageItemLayoutBinding.bind(view)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AA {
val root = R.layout.image_item_layout.inflate(parent)
return AA(root)
}
override fun getItemCount(): Int {
return list.size
}
override fun onBindViewHolder(holder: AA, position: Int) {
holders.add(holder)
if (mItemCheckedArray.size != list.size){
mItemCheckedArray.add(SparseBooleanArray())
// itemAdapter.add(ItemAdapter(mDataList[position], mContext, mItemCheckedArray[position], position))
}
mGridAdapters.add(SimilarGridAdapter(list[position].getmList(), context, mItemCheckedArray[position], position))
// val data = list[position]
holder.binding.similarImageNumText.text =
String.format(context.getString(R.string.similar, list[position].getmList().size.toString()))
val layoutParams = holder.binding.imageItemGrid.layoutParams
if (list[position].getmList().size.toFloat() / 4.0 == 1.0){
layoutParams.height = FileUtil.dpToPx(83*(list[position].getmList().size / 4), context)
}else{
layoutParams.height = FileUtil.dpToPx(83*(list[position].getmList().size / 4 + 1 ), context)
}
holder.binding.imageItemGrid.setOnItemClickListener { parent, view, itemPosition, id ->
if (SimilarImagesActivity.isClickEditBtn){
println("yanglin positioin $position itemPostion $itemPosition")
updateCheckBoxStatus(position, view, itemPosition, holder.binding.imageItemGrid, list[position].getmList())
}
}
holder.binding.imageItemGrid.adapter = mGridAdapters[position]
}
fun updateCheckBoxStatus(position: Int, view: View, itemPosition: Int, lv: GridView, fileBeanList: MutableList<PicInfo>){
val viewHolder = view.tag as ImageItemAdapter.ItemAdapter.ViewHolder
viewHolder.checkBox.toggle()
lv.setItemChecked(itemPosition, viewHolder.checkBox.isChecked)
mItemCheckedArray[position].put(itemPosition, viewHolder.checkBox.isChecked)
if (viewHolder.checkBox.isChecked){
mCheckedLists.add(fileBeanList[itemPosition])
}else{
mCheckedLists.remove(fileBeanList[itemPosition])
}
mGridAdapters[position].notifyDataSetChanged()
}
fun setData(data: List<PicSimilarInfo>) {
list.clear()
list.addAll(data)
notifyDataSetChanged()
}
fun selectAll(isChecked: Boolean){
Log.e("yanglin", "selectAll: $isChecked", )
mCheckedLists.clear()
if (!isChecked){
for (i in 0..< list.size){
mItemCheckedArray[i].clear()
}
}else{
for (i in 0..< list.size){
mCheckedLists.clear()
setStateCheckedMap(i, isChecked)
mCheckedLists.addAll(list[i].getmList())
mGridAdapters[i].notifyDataSetChanged()
}
}
}
fun setStateCheckedMap(position: Int, isChecked: Boolean){
for(i in list[position].getmList().indices){
mItemCheckedArray[position].put(i, isChecked)
holders[position].binding.imageItemGrid.setItemChecked(i, isChecked)
}
}
package com.xm.test.myfilemaster.adapter
import android.content.Context
import android.util.Log
import android.util.SparseBooleanArray
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.GridView
import androidx.recyclerview.widget.RecyclerView
import com.cloud.cleanjunksdk.similar.PicInfo
import com.cloud.cleanjunksdk.similar.PicSimilarInfo
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.SimilarImagesActivity
import com.xm.test.myfilemaster.databinding.ImageItemLayoutBinding
import com.xm.test.myfilemaster.util.FileUtil
class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAdapter.AA>() {
private val list = arrayListOf<PicSimilarInfo>()
private var context: Context
var mCheckedLists: MutableList<PicInfo> = mutableListOf<PicInfo>()
private var mItemCheckedArray = ArrayList<SparseBooleanArray>()
val mGridAdapters = ArrayList<SimilarGridAdapter>()
val holders = ArrayList<AA>()
init {
this.context = context
}
fun Int.inflate(parent: ViewGroup, attachToRoot: Boolean = false): View {
return LayoutInflater.from(parent.context).inflate(this, parent, attachToRoot)
}
class AA(view: View) : RecyclerView.ViewHolder(view) {
val binding = ImageItemLayoutBinding.bind(view)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AA {
val root = R.layout.image_item_layout.inflate(parent)
return AA(root)
}
override fun getItemCount(): Int {
return list.size
}
override fun onBindViewHolder(holder: AA, position: Int) {
holders.add(holder)
if (mItemCheckedArray.size != list.size){
mItemCheckedArray.add(SparseBooleanArray())
// itemAdapter.add(ItemAdapter(mDataList[position], mContext, mItemCheckedArray[position], position))
}
mGridAdapters.add(SimilarGridAdapter(list[position].getmList(), context, mItemCheckedArray[position], position))
// val data = list[position]
holder.binding.similarImageNumText.text =
String.format(context.getString(R.string.similar, list[position].getmList().size.toString()))
val layoutParams = holder.binding.imageItemGrid.layoutParams
if (list[position].getmList().size.toFloat() / 4.0 == 1.0){
layoutParams.height = FileUtil.dpToPx(83*(list[position].getmList().size / 4), context)
}else{
layoutParams.height = FileUtil.dpToPx(83*(list[position].getmList().size / 4 + 1 ), context)
}
holder.binding.imageItemGrid.setOnItemClickListener { parent, view, itemPosition, id ->
if (SimilarImagesActivity.isClickEditBtn){
println("yanglin positioin $position itemPostion $itemPosition")
updateCheckBoxStatus(position, view, itemPosition, holder.binding.imageItemGrid, list[position].getmList())
}
}
holder.binding.imageItemGrid.adapter = mGridAdapters[position]
}
fun updateCheckBoxStatus(position: Int, view: View, itemPosition: Int, lv: GridView, fileBeanList: MutableList<PicInfo>){
val viewHolder = view.tag as ImageItemAdapter.ItemAdapter.ViewHolder
viewHolder.checkBox.toggle()
lv.setItemChecked(itemPosition, viewHolder.checkBox.isChecked)
mItemCheckedArray[position].put(itemPosition, viewHolder.checkBox.isChecked)
if (viewHolder.checkBox.isChecked){
mCheckedLists.add(fileBeanList[itemPosition])
}else{
mCheckedLists.remove(fileBeanList[itemPosition])
}
mGridAdapters[position].notifyDataSetChanged()
}
fun setData(data: List<PicSimilarInfo>) {
list.clear()
list.addAll(data)
notifyDataSetChanged()
}
fun selectAll(isChecked: Boolean){
Log.e("yanglin", "selectAll: $isChecked", )
mCheckedLists.clear()
if (!isChecked){
for (i in 0..< list.size){
mItemCheckedArray[i].clear()
}
}else{
for (i in 0..< list.size){
mCheckedLists.clear()
setStateCheckedMap(i, isChecked)
mCheckedLists.addAll(list[i].getmList())
mGridAdapters[i].notifyDataSetChanged()
}
}
}
fun setStateCheckedMap(position: Int, isChecked: Boolean){
for(i in list[position].getmList().indices){
mItemCheckedArray[position].put(i, isChecked)
holders[position].binding.imageItemGrid.setItemChecked(i, isChecked)
}
}
}
\ No newline at end of file
package com.test.mydemo3.adapter
import android.content.Context
import android.graphics.BitmapFactory
import android.graphics.drawable.BitmapDrawable
import android.util.SparseBooleanArray
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.CheckBox
import android.widget.ImageView
import com.cloud.cleanjunksdk.similar.PicInfo
import com.cloud.cleanjunksdk.similar.PicSimilarInfo
import com.test.mydemo3.R
import com.test.mydemo3.activity.SimilarImagesActivity
import com.test.mydemo3.util.FileUtil
class SimilarGridAdapter(
list: MutableList<PicInfo>, context: Context,
mStateCheckedMap: SparseBooleanArray, mPosition: Int): BaseAdapter(){
private var context: Context
private var dataList: MutableList<PicInfo>
private var stateCheckedMap: SparseBooleanArray
private var inflater: LayoutInflater
private var mPosition: Int
init {
this.context = context
this.dataList = list
this.stateCheckedMap = mStateCheckedMap
this.inflater = LayoutInflater.from(context)
this.mPosition = mPosition
}
override fun getCount(): Int {
return dataList.size
}
override fun getItem(position: Int): Any {
return dataList[position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var view = convertView
val itemHolder: ViewHolder
if (convertView != null){
itemHolder = view?.tag as ViewHolder
}else{
view = inflater.inflate(R.layout.item_layout, null)
itemHolder = ViewHolder()
itemHolder.imageView = view.findViewById(R.id.item_image)
itemHolder.checkBox = view.findViewById(R.id.check_item_image_switch)
view.tag = itemHolder
}
// BitmapDrawable(context.resources, BitmapFactory.decodeFile(dataList[position].filePath))
itemHolder.checkBox.visibility = if (SimilarImagesActivity.isClickEditBtn) View.VISIBLE else View.GONE
itemHolder.imageView.setImageDrawable(BitmapDrawable(context.resources, BitmapFactory.decodeFile(dataList[position].path)))
itemHolder.imageView.layoutParams.height = FileUtil.dpToPx(83, context)
// if (DuplicateImagesActivity.isClickCheckBoxAllBtn){
// itemHolder.checkBox.isChecked = true
// }else{
itemHolder.checkBox.isChecked = stateCheckedMap[position]
// }
return view!!
}
fun setData(datas: MutableList<PicInfo>){
this.dataList = datas
}
class ViewHolder{
lateinit var checkBox: CheckBox
lateinit var imageView: ImageView
}
package com.xm.test.myfilemaster.adapter
import android.content.Context
import android.graphics.BitmapFactory
import android.graphics.drawable.BitmapDrawable
import android.util.SparseBooleanArray
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.CheckBox
import android.widget.ImageView
import com.cloud.cleanjunksdk.similar.PicInfo
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.SimilarImagesActivity
import com.xm.test.myfilemaster.util.FileUtil
class SimilarGridAdapter(
list: MutableList<PicInfo>, context: Context,
mStateCheckedMap: SparseBooleanArray, mPosition: Int): BaseAdapter(){
private var context: Context
private var dataList: MutableList<PicInfo>
private var stateCheckedMap: SparseBooleanArray
private var inflater: LayoutInflater
private var mPosition: Int
init {
this.context = context
this.dataList = list
this.stateCheckedMap = mStateCheckedMap
this.inflater = LayoutInflater.from(context)
this.mPosition = mPosition
}
override fun getCount(): Int {
return dataList.size
}
override fun getItem(position: Int): Any {
return dataList[position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var view = convertView
val itemHolder: ViewHolder
if (convertView != null){
itemHolder = view?.tag as ViewHolder
}else{
view = inflater.inflate(R.layout.item_layout, null)
itemHolder = ViewHolder()
itemHolder.imageView = view.findViewById(R.id.item_image)
itemHolder.checkBox = view.findViewById(R.id.check_item_image_switch)
view.tag = itemHolder
}
// BitmapDrawable(context.resources, BitmapFactory.decodeFile(dataList[position].filePath))
itemHolder.checkBox.visibility = if (SimilarImagesActivity.isClickEditBtn) View.VISIBLE else View.GONE
itemHolder.imageView.setImageDrawable(BitmapDrawable(context.resources, BitmapFactory.decodeFile(dataList[position].path)))
itemHolder.imageView.layoutParams.height = FileUtil.dpToPx(83, context)
// if (DuplicateImagesActivity.isClickCheckBoxAllBtn){
// itemHolder.checkBox.isChecked = true
// }else{
itemHolder.checkBox.isChecked = stateCheckedMap[position]
// }
return view!!
}
fun setData(datas: MutableList<PicInfo>){
this.dataList = datas
}
class ViewHolder{
lateinit var checkBox: CheckBox
lateinit var imageView: ImageView
}
}
\ No newline at end of file
package com.test.mydemo3.antivirus
package com.xm.test.myfilemaster.antivirus
import android.content.Intent
import android.os.Bundle
......@@ -9,11 +9,11 @@ import android.view.View
import android.widget.ProgressBar
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.test.mydemo3.MyApplication
import com.test.mydemo3.R
import com.test.mydemo3.activity.ScanResultActivity
import com.trustlook.sdk.cloudscan.CloudScanListener
import com.trustlook.sdk.data.AppInfo
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.ScanResultActivity
class AntivirusActivity : AppCompatActivity() {
......
package com.test.mydemo3.base
import android.content.Context
import android.util.AttributeSet
import android.view.View
import androidx.activity.ComponentActivity
abstract class BaseAbsView : ComponentActivity(),View.OnClickListener {
override fun onCreateView(name: String, context: Context, attrs: AttributeSet): View? {
return super.onCreateView(name, context, attrs)
}
abstract fun initView()
package com.xm.test.myfilemaster.base
import android.content.Context
import android.util.AttributeSet
import android.view.View
import androidx.activity.ComponentActivity
abstract class BaseAbsView : ComponentActivity(),View.OnClickListener {
override fun onCreateView(name: String, context: Context, attrs: AttributeSet): View? {
return super.onCreateView(name, context, attrs)
}
abstract fun initView()
}
\ No newline at end of file
package com.test.mydemo3.base
interface BaseActivityListener {
fun setTitle(str: String)
fun isDeleteShow(isShow: Boolean)
fun isShareShow(isShow: Boolean)
fun isNewShow(isShow: Boolean)
fun isCancelShow(isShow: Boolean)
fun isQuitShow(isShow: Boolean)
fun isEditShow(isShow: Boolean)
package com.xm.test.myfilemaster.base
interface BaseActivityListener {
fun setTitle(str: String)
fun isDeleteShow(isShow: Boolean)
fun isShareShow(isShow: Boolean)
fun isNewShow(isShow: Boolean)
fun isCancelShow(isShow: Boolean)
fun isQuitShow(isShow: Boolean)
fun isEditShow(isShow: Boolean)
}
\ No newline at end of file
package com.test.mydemo3.fragment
package com.xm.test.myfilemaster.fragment
import android.content.Intent
import androidx.fragment.app.viewModels
import android.os.Bundle
import android.util.SparseBooleanArray
import androidx.fragment.app.Fragment
......@@ -9,17 +8,14 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.GridView
import android.widget.LinearLayout
import android.widget.RelativeLayout
import com.test.mydemo3.R
import com.test.mydemo3.activity.FileManagerActivity
import com.test.mydemo3.activity.MediaActivity
import com.test.mydemo3.adapter.MediaAdapter
import com.test.mydemo3.model.FileBean
import com.test.mydemo3.util.FileUtil
import com.test.mydemo3.util.MediaUtil
import com.test.mydemo3.util.PermissionUtil
import com.test.mydemo3.view.CustomDialog
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.FileManagerActivity
import com.xm.test.myfilemaster.activity.MediaActivity
import com.xm.test.myfilemaster.adapter.MediaAdapter
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.MediaUtil
import com.xm.test.myfilemaster.util.PermissionUtil
import com.xm.test.myfilemaster.view.CustomDialog
class FileManagerFragment : Fragment(), View.OnClickListener {
private lateinit var mView: View
......
package com.test.mydemo3.fragment
package com.xm.test.myfilemaster.fragment
import android.app.ActivityManager
import android.content.Context
......@@ -15,16 +15,15 @@ import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.ProgressBar
import android.widget.TextView
import com.test.mydemo3.R
import com.test.mydemo3.activity.BatteryActivity
import com.test.mydemo3.activity.CleanActivity
import com.test.mydemo3.activity.SimilarImagesActivity
import com.test.mydemo3.activity.ScanEmptyFilesActivity
import com.test.mydemo3.activity.ScanLargeFilesActivity
import com.test.mydemo3.antivirus.AntivirusActivity
import com.test.mydemo3.util.PermissionUtil
import com.test.mydemo3.view.CirclePgBar
import com.test.mydemo3.view.CustomDialog
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.BatteryActivity
import com.xm.test.myfilemaster.activity.CleanActivity
import com.xm.test.myfilemaster.activity.ScanEmptyFilesActivity
import com.xm.test.myfilemaster.activity.ScanLargeFilesActivity
import com.xm.test.myfilemaster.activity.SimilarImagesActivity
import com.xm.test.myfilemaster.antivirus.AntivirusActivity
import com.xm.test.myfilemaster.util.PermissionUtil
import com.xm.test.myfilemaster.view.CustomDialog
class HomeFragment : Fragment(), OnClickListener{
private lateinit var mView: View
......@@ -37,7 +36,7 @@ class HomeFragment : Fragment(), OnClickListener{
private lateinit var mMemoryUseText: TextView
private lateinit var mMemoryUseProgress: ProgressBar
private lateinit var mBatteryInfo: View
private lateinit var mCirclePgBar: CirclePgBar
private lateinit var mCirclePgBar: com.xm.test.myfilemaster.view.CirclePgBar
companion object {
fun newInstance() = HomeFragment()
}
......@@ -81,7 +80,7 @@ class HomeFragment : Fragment(), OnClickListener{
mScanEmptyFiles.setOnClickListener(this)
mBatteryInfo.setOnClickListener(this)
mView.findViewById<CirclePgBar>(R.id.progress_circular).setOnClickListener(this)
mView.findViewById<com.xm.test.myfilemaster.view.CirclePgBar>(R.id.progress_circular).setOnClickListener(this)
mView.findViewById<View>(R.id.home_clean_btn).setOnClickListener(this)
mView.findViewById<View>(R.id.antivirus_btn).setOnClickListener (this)
......
package com.test.mydemo3.fragment
package com.xm.test.myfilemaster.fragment
import androidx.lifecycle.ViewModel
......
package com.test.mydemo3.fragment
package com.xm.test.myfilemaster.fragment
import android.content.Intent
import android.net.Uri
......@@ -22,18 +22,17 @@ import androidx.core.view.isVisible
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import com.kongzue.dialogx.dialogs.WaitDialog
import com.test.mydemo3.MyApplication
import com.test.mydemo3.R
import com.test.mydemo3.activity.BaseActivityViewModel
import com.test.mydemo3.activity.HomeActivity
import com.test.mydemo3.activity.InternalStorageActivity
import com.test.mydemo3.activity.MoveOrCopyActivity
import com.test.mydemo3.adapter.FilesItemViewAdapter
import com.test.mydemo3.base.BaseActivity
import com.test.mydemo3.model.FileBean
import com.test.mydemo3.util.FileUtil
import com.test.mydemo3.util.PermissionUtil
import com.test.mydemo3.view.CustomDialog
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.BaseActivityViewModel
import com.xm.test.myfilemaster.activity.HomeActivity
import com.xm.test.myfilemaster.activity.MoveOrCopyActivity
import com.xm.test.myfilemaster.adapter.FilesItemViewAdapter
import com.xm.test.myfilemaster.base.BaseActivity
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfilemaster.util.PermissionUtil
import com.xm.test.myfilemaster.view.CustomDialog
import java.io.File
class InternalStorageFragment : Fragment(), View.OnClickListener {
......@@ -225,7 +224,7 @@ class InternalStorageFragment : Fragment(), View.OnClickListener {
mBaseViewModel.setNumber(switchNumber)
}
R.id.btn_delete ->{
val customDialog = com.test.mydemo3.view.CustomDialog(requireContext())
val customDialog = CustomDialog(requireContext())
customDialog.setsCancel(View.OnClickListener {
customDialog.dismiss()
}).setsConfirm(View.OnClickListener {
......
package com.test.mydemo3.model
data class GlobalConfig(
val cacheTime: Int,
val rateWindowInterval: Int,
val buyInsertInterval: Int,
val natureInsertInterval: Int,
val notDialogInterval: Int
)
data class PushManagement(
val pushShow: Int,
val newUserAvoidTime: Int,
val allPushInterval: Int,
val oPushInterval: Int,
val pushCircleOrder: List<Int>,
val scenePush: List<Int>
)
data class AdsCfg(
val adOpen: AdInfo,
val adInsertBattery: AdInfo
)
data class AdInfo(
val isShow: Boolean,
val showInterval: Int,
val newUserAvoidTime: Int,
val unitId: String,
val type: String,
val openAdIsShow: Int,
val loadingPageTime: Int
)
data class PushCfg(
val batteryPush: PushInfo,
val batteryLowBoost: PushInfo
)
data class PushInfo(
val pushStayTime: Int,
val lastUseInterval: Int,
val featureEx1: Int,
val pushInterval: Int
)
data class Result(
val data: Data
)
data class Data(
val globalConfig: GlobalConfig,
val pushManagement: PushManagement,
val adsCfg: AdsCfg,
val pushCfg: PushCfg
)
data class AdConfigData(
val status: Int,
val msg: String,
val sign: String,
val result: Result,
val extras: Any?,
val enc: Any?,
val security: String
)
package com.xm.test.myfilemaster.model
data class GlobalConfig(
val cacheTime: Int,
val rateWindowInterval: Int,
val buyInsertInterval: Int,
val natureInsertInterval: Int,
val notDialogInterval: Int
)
data class PushManagement(
val pushShow: Int,
val newUserAvoidTime: Int,
val allPushInterval: Int,
val oPushInterval: Int,
val pushCircleOrder: List<Int>,
val scenePush: List<Int>
)
data class AdsCfg(
val adOpen: AdInfo,
val adInsertBattery: AdInfo
)
data class AdInfo(
val isShow: Boolean,
val showInterval: Int,
val newUserAvoidTime: Int,
val unitId: String,
val type: String,
val openAdIsShow: Int,
val loadingPageTime: Int
)
data class PushCfg(
val batteryPush: PushInfo,
val batteryLowBoost: PushInfo
)
data class PushInfo(
val pushStayTime: Int,
val lastUseInterval: Int,
val featureEx1: Int,
val pushInterval: Int
)
data class Result(
val data: Data
)
data class Data(
val globalConfig: GlobalConfig,
val pushManagement: PushManagement,
val adsCfg: AdsCfg,
val pushCfg: PushCfg
)
data class AdConfigData(
val status: Int,
val msg: String,
val sign: String,
val result: Result,
val extras: Any?,
val enc: Any?,
val security: String
)
package com.test.mydemo3.model
import java.io.Serializable
class CleanBean: Serializable {
lateinit var typeName: String
var isListViewShow = false
var fileBeans = ArrayList<FileBean>()
package com.xm.test.myfilemaster.model
import java.io.Serializable
class CleanBean: Serializable {
lateinit var typeName: String
var isListViewShow = false
var fileBeans = ArrayList<FileBean>()
}
\ No newline at end of file
package com.test.mydemo3.model
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
import java.io.Serializable
class FileBean : Serializable{
var fileName: String = ""
var filePath: String = ""
var hint: String? = null
var isDir: Boolean = false
var drawable : Drawable? = null
var fileType: String = ""
var fileSize: Long = 0
var fileBitmap: Bitmap? = null
var childList = ArrayList<FileBean>()
override fun toString(): String {
return "FileBean(fileName='$fileName', filePath='$filePath', isDir=$isDir, fileType='$fileType', childList=${childList.toString()})"
}
package com.xm.test.myfilemaster.model
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
import java.io.Serializable
class FileBean : Serializable{
var fileName: String = ""
var filePath: String = ""
var hint: String? = null
var isDir: Boolean = false
var drawable : Drawable? = null
var fileType: String = ""
var fileSize: Long = 0
var fileBitmap: Bitmap? = null
var childList = ArrayList<FileBean>()
override fun toString(): String {
return "FileBean(fileName='$fileName', filePath='$filePath', isDir=$isDir, fileType='$fileType', childList=${childList.toString()})"
}
}
\ No newline at end of file
package com.test.mydemo3.model
class FilesItemBean{
var resId: Int = 0
lateinit var mItemFileName: String
lateinit var mItemFileNone: String
var mItemSelectChecked: Boolean = false
lateinit var mItemFilePath: String
var mFileItemCount: Int = 0
var mFileSize: Int = 0
var mFileType: Int = 0 // type 1 empty, 2 ..., 3 ...
package com.xm.test.myfilemaster.model
class FilesItemBean{
var resId: Int = 0
lateinit var mItemFileName: String
lateinit var mItemFileNone: String
var mItemSelectChecked: Boolean = false
lateinit var mItemFilePath: String
var mFileItemCount: Int = 0
var mFileSize: Int = 0
var mFileType: Int = 0 // type 1 empty, 2 ..., 3 ...
}
\ No newline at end of file
package com.test.mydemo3.util
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import java.util.Objects
object BatteryUtil {
lateinit var technology : String
var voltage: Int = 0 //瓦特
var level: Int = 0 //电量
var temperature: Double = 0.0 //温度
lateinit var status : String
lateinit var health : String
lateinit var plugged : String
/**
* 获取电池容量
* */
/*fun getBatteryCapacity(context: Context): String{
val mPowerProfile : Objects
var batteryCapacity = 0.0
val POWER_PROFILE_CLASS = "com.android.internal.os.PowerProfile"
try {
mPowerProfile = Class.forName(POWER_PROFILE_CLASS)
.getConstructor(Context::class.java)
.newInstance(context) as Objects
batteryCapacity = Class
.forName(POWER_PROFILE_CLASS)
.getMethod("getBatteryCapacity")
.invoke(mPowerProfile) as Double
}catch (e: Exception){
e.printStackTrace()
}
return batteryCapacity.toString()
}*/
fun ReceiverBatteryOhterInfo(context: Context){
val intentFilter = IntentFilter(Intent.ACTION_BATTERY_CHANGED)
val receiver = context.registerReceiver(null, intentFilter)
technology = receiver?.getStringExtra("technology").toString()
if (technology.equals("") || technology.equals(null)){
technology = "Unknown"
}
voltage = receiver?.getIntExtra("voltage",0) as Int
level = receiver.getIntExtra("level", 0) as Int
temperature = receiver.getIntExtra("temperature", 0 ) / 10.0
}
package com.xm.test.myfilemaster.util
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
object BatteryUtil {
lateinit var technology : String
var voltage: Int = 0 //瓦特
var level: Int = 0 //电量
var temperature: Double = 0.0 //温度
lateinit var status : String
lateinit var health : String
lateinit var plugged : String
/**
* 获取电池容量
* */
/*fun getBatteryCapacity(context: Context): String{
val mPowerProfile : Objects
var batteryCapacity = 0.0
val POWER_PROFILE_CLASS = "com.android.internal.os.PowerProfile"
try {
mPowerProfile = Class.forName(POWER_PROFILE_CLASS)
.getConstructor(Context::class.java)
.newInstance(context) as Objects
batteryCapacity = Class
.forName(POWER_PROFILE_CLASS)
.getMethod("getBatteryCapacity")
.invoke(mPowerProfile) as Double
}catch (e: Exception){
e.printStackTrace()
}
return batteryCapacity.toString()
}*/
fun ReceiverBatteryOhterInfo(context: Context){
val intentFilter = IntentFilter(Intent.ACTION_BATTERY_CHANGED)
val receiver = context.registerReceiver(null, intentFilter)
technology = receiver?.getStringExtra("technology").toString()
if (technology.equals("") || technology.equals(null)){
technology = "Unknown"
}
voltage = receiver?.getIntExtra("voltage",0) as Int
level = receiver.getIntExtra("level", 0) as Int
temperature = receiver.getIntExtra("temperature", 0 ) / 10.0
}
}
\ No newline at end of file
package com.test.mydemo3.util
import com.google.gson.Gson
import com.test.mydemo3.model.AdConfigData
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
object HttpRequest {
fun getMaxAdConfig(){
Thread(Runnable {
val okHttpClient = OkHttpClient()
val request = Request.Builder()
.url(UrlManager.URL_)
.build()
val response = okHttpClient.newCall(request).execute()
if (response.isSuccessful){
Gson().fromJson(response.body().toString(), AdConfigData::class.java)
}
}).start()
}
package com.xm.test.myfilemaster.util
import com.google.gson.Gson
import com.xm.test.myfilemaster.model.AdConfigData
import okhttp3.OkHttpClient
import okhttp3.Request
object HttpRequest {
fun getMaxAdConfig(){
Thread(Runnable {
val okHttpClient = OkHttpClient()
val request = Request.Builder()
.url(UrlManager.URL_)
.build()
val response = okHttpClient.newCall(request).execute()
if (response.isSuccessful){
Gson().fromJson(response.body().toString(), AdConfigData::class.java)
}
}).start()
}
}
\ No newline at end of file
package com.test.mydemo3.util
import android.annotation.SuppressLint
import android.content.ContentResolver
import android.content.Context
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.provider.MediaStore
import android.util.TypedValue
import com.test.mydemo3.model.FileBean
import java.io.File
object MediaUtil {
fun cropImage(imagePath: String, desiredWidth: Int, desiredHeight: Int, context: Context): Bitmap {
val desiredHeight_ = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
desiredHeight.toFloat(),
context.resources.displayMetrics
).toInt()
val desiredWidth_ = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
desiredWidth.toFloat(),
context.resources.displayMetrics
).toInt()
// 从图片路径中加载 Bitmap
val options = BitmapFactory.Options()
options.inJustDecodeBounds = true
BitmapFactory.decodeFile(imagePath, options)
// 计算采样率以便加载图片时节省内存
options.inSampleSize = calculateInSampleSize(options, desiredWidth_, desiredHeight_)
// 加载 Bitmap
options.inJustDecodeBounds = false
val bitmap = BitmapFactory.decodeFile(imagePath, options)
// 裁剪 Bitmap
return Bitmap.createScaledBitmap(bitmap, desiredWidth_, desiredHeight_, false)
}
fun calculateInSampleSize(options: BitmapFactory.Options, desiredWidth: Int, desiredHeight: Int): Int {
val height = options.outHeight
val width = options.outWidth
var inSampleSize = 1
if (height > desiredHeight || width > desiredWidth) {
val halfHeight = height / 2
val halfWidth = width / 2
while ((halfHeight / inSampleSize) >= desiredHeight && (halfWidth / inSampleSize) >= desiredWidth) {
inSampleSize *= 2
}
}
return inSampleSize
}
@SuppressLint("Range")
fun getRecentImages(context: Context, limit: Int): ArrayList<FileBean> {
// val images = mutableListOf<String>()
val images = ArrayList<FileBean>()
val contentResolver: ContentResolver = context.contentResolver
val projection = arrayOf(MediaStore.Images.Media.DATA)
val sortOrder = "${MediaStore.Images.Media.DATE_MODIFIED} DESC"
val cursor = contentResolver.query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection,
null,
null,
sortOrder
)
cursor?.use {
var count = 0
while (it.moveToNext() && count < limit) {
val fileBean = FileBean()
val imagePath = it.getString(it.getColumnIndex(MediaStore.Images.Media.DATA))
// images.add(imagePath)
val file = File(imagePath)
fileBean.fileName = file.name
fileBean.filePath = file.absolutePath
fileBean.fileType = FileUtil.getFileType(file)
fileBean.fileBitmap = BitmapFactory.decodeFile(imagePath)
images.add(fileBean)
count++
}
}
cursor?.close()
return images
}
// fun findSimilarImages(baseImagePath: String, imageDirectoryPath: String, threshold: Double): List<String> {
// val similarImages = mutableListOf<String>()
//
// val baseImage = File(baseImagePath)
// val baseImageHash = ImageHash.getHash(baseImage)
//
// val imageDirectory = File(imageDirectoryPath)
// val imageFiles = imageDirectory.listFiles { file -> file.isFile }
//
// imageFiles?.let {
// for (imageFile in it) {
// val imageHash = ImageHash.getHash(imageFile)
// val similarity = ImageHash.getSimilarity(baseImageHash, imageHash)
// if (similarity >= threshold) {
// similarImages.add(imageFile.absolutePath)
// }
// }
// }
//
// return similarImages
// }
package com.xm.test.myfilemaster.util
import android.annotation.SuppressLint
import android.content.ContentResolver
import android.content.Context
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.provider.MediaStore
import android.util.TypedValue
import com.xm.test.myfilemaster.model.FileBean
import java.io.File
object MediaUtil {
fun cropImage(imagePath: String, desiredWidth: Int, desiredHeight: Int, context: Context): Bitmap {
val desiredHeight_ = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
desiredHeight.toFloat(),
context.resources.displayMetrics
).toInt()
val desiredWidth_ = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
desiredWidth.toFloat(),
context.resources.displayMetrics
).toInt()
// 从图片路径中加载 Bitmap
val options = BitmapFactory.Options()
options.inJustDecodeBounds = true
BitmapFactory.decodeFile(imagePath, options)
// 计算采样率以便加载图片时节省内存
options.inSampleSize = calculateInSampleSize(options, desiredWidth_, desiredHeight_)
// 加载 Bitmap
options.inJustDecodeBounds = false
val bitmap = BitmapFactory.decodeFile(imagePath, options)
// 裁剪 Bitmap
return Bitmap.createScaledBitmap(bitmap, desiredWidth_, desiredHeight_, false)
}
fun calculateInSampleSize(options: BitmapFactory.Options, desiredWidth: Int, desiredHeight: Int): Int {
val height = options.outHeight
val width = options.outWidth
var inSampleSize = 1
if (height > desiredHeight || width > desiredWidth) {
val halfHeight = height / 2
val halfWidth = width / 2
while ((halfHeight / inSampleSize) >= desiredHeight && (halfWidth / inSampleSize) >= desiredWidth) {
inSampleSize *= 2
}
}
return inSampleSize
}
@SuppressLint("Range")
fun getRecentImages(context: Context, limit: Int): ArrayList<FileBean> {
// val images = mutableListOf<String>()
val images = ArrayList<FileBean>()
val contentResolver: ContentResolver = context.contentResolver
val projection = arrayOf(MediaStore.Images.Media.DATA)
val sortOrder = "${MediaStore.Images.Media.DATE_MODIFIED} DESC"
val cursor = contentResolver.query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection,
null,
null,
sortOrder
)
cursor?.use {
var count = 0
while (it.moveToNext() && count < limit) {
val fileBean = FileBean()
val imagePath = it.getString(it.getColumnIndex(MediaStore.Images.Media.DATA))
// images.add(imagePath)
val file = File(imagePath)
fileBean.fileName = file.name
fileBean.filePath = file.absolutePath
fileBean.fileType = FileUtil.getFileType(file)
fileBean.fileBitmap = BitmapFactory.decodeFile(imagePath)
images.add(fileBean)
count++
}
}
cursor?.close()
return images
}
// fun findSimilarImages(baseImagePath: String, imageDirectoryPath: String, threshold: Double): List<String> {
// val similarImages = mutableListOf<String>()
//
// val baseImage = File(baseImagePath)
// val baseImageHash = ImageHash.getHash(baseImage)
//
// val imageDirectory = File(imageDirectoryPath)
// val imageFiles = imageDirectory.listFiles { file -> file.isFile }
//
// imageFiles?.let {
// for (imageFile in it) {
// val imageHash = ImageHash.getHash(imageFile)
// val similarity = ImageHash.getSimilarity(baseImageHash, imageHash)
// if (similarity >= threshold) {
// similarImages.add(imageFile.absolutePath)
// }
// }
// }
//
// return similarImages
// }
}
\ No newline at end of file
package com.test.mydemo3.util
import android.Manifest
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.os.Environment
import android.provider.Settings
import androidx.activity.ComponentActivity
import androidx.activity.result.contract.ActivityResultContract
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.fragment.app.FragmentActivity
import com.permissionx.guolindev.PermissionX
import com.permissionx.guolindev.callback.RequestCallback
import com.test.mydemo3.activity.HomeActivity
import com.test.mydemo3.base.BaseActivity
import java.security.Permissions
object PermissionUtil {
var LOCATION_PERMISSION = false
fun requestPermission(context: Context?){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
}else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) {
val intent = Intent().apply {
action = Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
data = Uri.fromParts("package", context?.packageName, null)
flags = Intent.FLAG_ACTIVITY_NEW_TASK
}
context?.startActivity(intent)
}else{
val intent = Intent().apply {
action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS
data = Uri.fromParts("package", context?.packageName, null)
}
context?.startActivity(intent)
}
}
fun checkGrantedPermission(activity: ComponentActivity?) : Boolean{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
//TODO android 14以上
HomeActivity.isPermission = Environment.isExternalStorageManager()
return HomeActivity.isPermission
}else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) {
HomeActivity.isPermission = Environment.isExternalStorageManager()
return HomeActivity.isPermission
}else{
HomeActivity.isPermission = ActivityCompat.checkSelfPermission(activity!!, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
return HomeActivity.isPermission
}
}
fun requestLocationPermission(context: FragmentActivity?){
PermissionX.init(context!!).permissions(
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,
).request(RequestCallback{ allGranted, grantedList, deniedList ->
if (allGranted){
LOCATION_PERMISSION = true
}else{
LOCATION_PERMISSION = false
}
})
}
package com.xm.test.myfilemaster.util
import android.Manifest
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.os.Environment
import android.provider.Settings
import androidx.activity.ComponentActivity
import androidx.core.app.ActivityCompat
import androidx.fragment.app.FragmentActivity
import com.permissionx.guolindev.PermissionX
import com.permissionx.guolindev.callback.RequestCallback
import com.xm.test.myfilemaster.activity.HomeActivity
object PermissionUtil {
var LOCATION_PERMISSION = false
fun requestPermission(context: Context?){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
}else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) {
val intent = Intent().apply {
action = Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
data = Uri.fromParts("package", context?.packageName, null)
flags = Intent.FLAG_ACTIVITY_NEW_TASK
}
context?.startActivity(intent)
}else{
val intent = Intent().apply {
action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS
data = Uri.fromParts("package", context?.packageName, null)
}
context?.startActivity(intent)
}
}
fun checkGrantedPermission(activity: ComponentActivity?) : Boolean{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
//TODO android 14以上
HomeActivity.isPermission = Environment.isExternalStorageManager()
return HomeActivity.isPermission
}else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) {
HomeActivity.isPermission = Environment.isExternalStorageManager()
return HomeActivity.isPermission
}else{
HomeActivity.isPermission = ActivityCompat.checkSelfPermission(activity!!, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
return HomeActivity.isPermission
}
}
fun requestLocationPermission(context: FragmentActivity?){
PermissionX.init(context!!).permissions(
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,
).request(RequestCallback{ allGranted, grantedList, deniedList ->
if (allGranted){
LOCATION_PERMISSION = true
}else{
LOCATION_PERMISSION = false
}
})
}
}
\ No newline at end of file
package com.test.mydemo3.util
import android.bluetooth.BluetoothAdapter
import android.content.ContentResolver
import android.content.Context
import android.location.LocationManager
import android.net.wifi.WifiManager
import android.provider.Settings
object SystemServerState {
fun isGPSEnabled(context: Context): Boolean {
val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) ?: false
}
fun isBluetoothEnabled(): Boolean {
val bluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
return bluetoothAdapter?.isEnabled ?: false
}
fun isHotspotEnabled(context: Context): Boolean {
val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager
return wifiManager.isWifiEnabled ?: false
}
fun isAutoBrightnessEnabled(contentResolver: ContentResolver?): Boolean {
try {
val mode: Int =
Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE)
return mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC
} catch (e: Settings.SettingNotFoundException) {
e.printStackTrace()
}
return false
}
package com.xm.test.myfilemaster.util
import android.bluetooth.BluetoothAdapter
import android.content.ContentResolver
import android.content.Context
import android.location.LocationManager
import android.net.wifi.WifiManager
import android.provider.Settings
object SystemServerState {
fun isGPSEnabled(context: Context): Boolean {
val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) ?: false
}
fun isBluetoothEnabled(): Boolean {
val bluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
return bluetoothAdapter?.isEnabled ?: false
}
fun isHotspotEnabled(context: Context): Boolean {
val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager
return wifiManager.isWifiEnabled ?: false
}
fun isAutoBrightnessEnabled(contentResolver: ContentResolver?): Boolean {
try {
val mode: Int =
Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE)
return mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC
} catch (e: Settings.SettingNotFoundException) {
e.printStackTrace()
}
return false
}
}
\ No newline at end of file
package com.test.mydemo3.util
object UrlManager {
const val AD_APP_KEY = "GGPreND6SRmCt1zJgn5faiLGD8c2PVGPLgPpSg7cHanVTud1DhtuI9MmteTqlEviaJ57WnxW68kQDaATJ5z3cW"
const val AD_UNIT_ID = ""
const val TEST_PLACEMENT_HERE = ""
const val URL_ = "https://api.magicfolder.xyz/cccfig?pkg=testonline"
package com.xm.test.myfilemaster.util
object UrlManager {
const val AD_APP_KEY = "GGPreND6SRmCt1zJgn5faiLGD8c2PVGPLgPpSg7cHanVTud1DhtuI9MmteTqlEviaJ57WnxW68kQDaATJ5z3cW"
const val AD_UNIT_ID = ""
const val TEST_PLACEMENT_HERE = ""
const val URL_ = "https://api.magicfolder.xyz/cccfig?pkg=testonline"
}
\ No newline at end of file
......@@ -149,7 +149,7 @@
<!-- android:visibility="gone"-->
<!-- app:lottie_loop="true"/>-->
<com.test.mydemo3.view.CirclePgBar
<com.xm.test.myfilemaster.view.CirclePgBar
android:id="@+id/progress_circular"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
......
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