Commit d847feb0 authored by wanglei's avatar wanglei

...

parent 49d69b86
......@@ -11,6 +11,7 @@ import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.base.datarecovery.R
import com.base.datarecovery.ads.AdmobMaxHelper
import com.base.datarecovery.bean.ConstObject.SCAN_AUDIOS
import com.base.datarecovery.bean.ConstObject.SCAN_DOCUMENTS
import com.base.datarecovery.bean.ConstObject.SCAN_PHOTOS
import com.base.datarecovery.bean.ConstObject.SCAN_VIDEOS
......@@ -40,6 +41,7 @@ class FileRecoveredActivity : BaseActivity<ActivityFileRecoveredBinding>() {
SCAN_PHOTOS -> if (number == 1) "Photo" else "Photos"
SCAN_VIDEOS -> if (number == 1) "Video" else "Videos"
SCAN_DOCUMENTS -> if (number == 1) "Document" else "Documents"
SCAN_AUDIOS -> if (number == 1) "Audio" else "Audios"
else -> ""
}
binding.tvType.text = type
......
......@@ -14,6 +14,7 @@ import androidx.lifecycle.lifecycleScope
import com.base.datarecovery.R
import com.base.datarecovery.adapter.FileTimeColumnsAdapter
import com.base.datarecovery.adapter.RecoveryFilterAdapter
import com.base.datarecovery.bean.ConstObject.SCAN_AUDIOS
import com.base.datarecovery.bean.ConstObject.SCAN_DOCUMENTS
import com.base.datarecovery.bean.ConstObject.SCAN_PHOTOS
import com.base.datarecovery.bean.ConstObject.SCAN_VIDEOS
......@@ -85,6 +86,10 @@ class FileRecoveryActivity : BaseActivity<ActivityFileRecoveryBinding>() {
binding.clThumbnails.visibility = View.GONE
}
SCAN_AUDIOS -> {
binding.clThumbnails.visibility = View.GONE
binding.llLayout.visibility = View.GONE
}
}
adapter = FileTimeColumnsAdapter(scanType,
......@@ -158,6 +163,7 @@ class FileRecoveryActivity : BaseActivity<ActivityFileRecoveryBinding>() {
SCAN_PHOTOS -> dirType = "Photo"
SCAN_DOCUMENTS -> dirType = "Document"
SCAN_VIDEOS -> dirType = "Video"
SCAN_AUDIOS -> dirType = "Audio"
}
val appName = this.resources.getString(R.string.app_name)
val appDir = File(Environment.getExternalStorageDirectory(), appName)
......
......@@ -10,6 +10,7 @@ import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import com.base.datarecovery.adapter.FileFolderAdapter
import com.base.datarecovery.ads.AdmobMaxHelper
import com.base.datarecovery.bean.ConstObject.SCAN_AUDIOS
import com.base.datarecovery.bean.ConstObject.SCAN_DOCUMENTS
import com.base.datarecovery.bean.ConstObject.SCAN_PHOTOS
import com.base.datarecovery.bean.ConstObject.SCAN_VIDEOS
......@@ -69,6 +70,10 @@ class FileScanResultActivity : BaseActivity<ActivityFileScanResultBinding>() {
binding.tvTittle.text = "Video Recovery"
binding.tvFileType.text = "videos"
}
SCAN_AUDIOS -> {
binding.tvTittle.text = "Audio Recovery"
binding.tvFileType.text = "Audios"
}
}
fileFolderAdapter = FileFolderAdapter(scanType) { folderBean ->
FileRecoveryActivity.folderBean = null
......@@ -145,6 +150,7 @@ class FileScanResultActivity : BaseActivity<ActivityFileScanResultBinding>() {
SCAN_PHOTOS -> FileHexEx::isImage
SCAN_DOCUMENTS -> FileHexEx::isDocument
SCAN_VIDEOS -> FileHexEx::isVideo
SCAN_AUDIOS -> FileHexEx::isAudio
else -> FileHexEx::isImage
}
val root = Environment.getExternalStorageDirectory()
......
......@@ -12,6 +12,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.datarecovery.R
import com.base.datarecovery.bean.ConstObject.SCAN_AUDIOS
import com.base.datarecovery.bean.ConstObject.SCAN_DOCUMENTS
import com.base.datarecovery.bean.FolderBean
import com.base.datarecovery.bean.RecoveryBean
......@@ -55,7 +56,7 @@ class FileTimeColumnsAdapter(
val subAdapter = MediaColumnsAdapter()
if (scanType == SCAN_DOCUMENTS) {
if (scanType == SCAN_DOCUMENTS || scanType == SCAN_AUDIOS) {
binding.rvMediaColumns.layoutManager = LinearLayoutManager(context)
} else {
binding.rvMediaColumns.layoutManager = GridLayoutManager(context, columns)
......@@ -105,7 +106,7 @@ class FileTimeColumnsAdapter(
4 -> R.layout.item_media_columns4
else -> R.layout.item_media_columns2
}
if (scanType == SCAN_DOCUMENTS) {
if ((scanType == SCAN_DOCUMENTS) || (scanType == SCAN_AUDIOS)) {
layout = R.layout.item_document
}
return CS(layout.inflate(parent))
......@@ -123,7 +124,7 @@ class FileTimeColumnsAdapter(
val context = holder.itemView.context
val data = list[position]
if (scanType == SCAN_DOCUMENTS) {
if ((scanType == SCAN_DOCUMENTS) or (scanType == SCAN_AUDIOS)) {
if (payloads.isEmpty()) {
val binding = ItemDocumentBinding.bind(holder.itemView)
binding.ivSelector.isSelected = data.isSelect
......
......@@ -135,7 +135,7 @@ object AdmobMaxHelper {
AdMaxInit.maxInitAction = {
Log.d(TAG, "max init suc")
// AdMaxOpenUtils.loadAppOpenAd(activity)
AdMaxInterstitialUtils.loadInterstitialAd(activity)
// AdMaxInterstitialUtils.loadInterstitialAd(activity)
}
}
}
......
......@@ -44,7 +44,9 @@ object AdMaxInterstitialUtils {
}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
LogEx.logDebug(TAG, "onAdLoadFailed")
LogEx.logDebug(TAG, "广告拉取失败了,onAdLoadFailed:" + p0)
LogEx.logDebug(TAG, "广告拉取失败了,onAdLoadFailed:" + p1.message.toString())
LogEx.logDebug(TAG, "广告拉取失败了,onAdLoadFailed:" + p1.code)
val reqId = UUID.randomUUID().toString()
AdMaxEvent.pullAd(null, "interAd", reqId = reqId, error = p1.message, code = p1.code)
AdDisplayUtils.getInstance().incrementAdRequestFailCount()
......
......@@ -34,6 +34,7 @@ object ConstObject {
const val SCAN_PHOTOS = 1
const val SCAN_DOCUMENTS = 2
const val SCAN_VIDEOS = 3
const val SCAN_AUDIOS = 4
const val SELECT_FILE_ALL = "All types"
const val SELECT_FILE_PICTURE = "Picture"
......
......@@ -39,6 +39,11 @@ class RecoveryFragment : BaseFragment<FragmentRecoveryBinding>() {
putExtra("ScanType", ConstObject.SCAN_DOCUMENTS)
})
}
binding.cardRyAudio.setOnClickListener {
startActivity(Intent(requireContext(), FileScanResultActivity::class.java).apply {
putExtra("ScanType", ConstObject.SCAN_AUDIOS)
})
}
binding.cardPrivacySpace.setOnClickListener {
if (ConstObject.privacyPinPassword.isNotEmpty()) {
startActivity(Intent(requireContext(), PrivacyPinOneActivity::class.java))
......@@ -51,6 +56,7 @@ class RecoveryFragment : BaseFragment<FragmentRecoveryBinding>() {
binding.cardPhotosManager.setOnClickListener {
startActivity(Intent(requireContext(), PhotoManagerAnimationActivity::class.java))
}
}
override fun onResume() {
......
......@@ -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
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