From 4fa3f505d0a233d7502e913ba9ae51714c5cc6ee Mon Sep 17 00:00:00 2001 From: litingting Date: Thu, 23 Oct 2025 18:19:17 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9F=B3=E9=A2=91=E6=92=AD=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../photo/PhotoDisplayDateChildAdapter.kt | 8 +- .../filerecovery/photo/PhotoInfoActivity.kt | 105 ++++++++++++----- .../photo/PhotoSortingActivity.kt | 25 ++-- .../filerecovery/video/PlayMediaManager.kt | 110 ++++++++++++++++++ .../filerecovery/video/VideoPlayActivity.kt | 74 ++++++------ .../res/drawable/bg_info_music_f2f2f7_8.xml | 8 ++ app/src/main/res/drawable/icon_search.png | Bin 0 -> 2208 bytes .../main/res/drawable/image_info_music.png | Bin 0 -> 31575 bytes .../main/res/layout/activity_photo_info.xml | 44 ++++++- .../res/layout/activity_photo_sorting.xml | 13 ++- .../main/res/layout/activity_video_play.xml | 6 +- .../res/layout/one_audio_documents_item.xml | 1 + 12 files changed, 311 insertions(+), 83 deletions(-) create mode 100644 app/src/main/java/com/ux/video/file/filerecovery/video/PlayMediaManager.kt create mode 100644 app/src/main/res/drawable/bg_info_music_f2f2f7_8.xml create mode 100644 app/src/main/res/drawable/icon_search.png create mode 100644 app/src/main/res/drawable/image_info_music.png diff --git a/app/src/main/java/com/ux/video/file/filerecovery/photo/PhotoDisplayDateChildAdapter.kt b/app/src/main/java/com/ux/video/file/filerecovery/photo/PhotoDisplayDateChildAdapter.kt index 8dd7577..b703131 100644 --- a/app/src/main/java/com/ux/video/file/filerecovery/photo/PhotoDisplayDateChildAdapter.kt +++ b/app/src/main/java/com/ux/video/file/filerecovery/photo/PhotoDisplayDateChildAdapter.kt @@ -142,24 +142,19 @@ class PhotoDisplayDateChildAdapter( item: ResultPhotosFiles, viewType: Int ) { - when (holder) { is TwoHolder -> holder.vb.run { initDateView(rootLayout, imageSelect, textSize, imageThumbnail, item, imageType) } - is ThreeHolder -> holder.vb.run { initDateView(rootLayout, imageSelect, textSize, imageThumbnail, item, imageType) } - is OneHolder -> { item.run { holder.vb.let { it.textName.text = name it.textDuration.text = Common.formatDuration(duration) it.textSize.text = sizeString - - viewModel.checkIsSelect(this).let { isSelected -> it.imageSelect.isSelected = isSelected addOrRemove(this, isSelected) @@ -170,6 +165,9 @@ class PhotoDisplayDateChildAdapter( addOrRemove(this, newStatus) } } + it.constraintLayout.setOnClickListener { + clickItem(this) + } } } diff --git a/app/src/main/java/com/ux/video/file/filerecovery/photo/PhotoInfoActivity.kt b/app/src/main/java/com/ux/video/file/filerecovery/photo/PhotoInfoActivity.kt index 9d25a72..96f46eb 100644 --- a/app/src/main/java/com/ux/video/file/filerecovery/photo/PhotoInfoActivity.kt +++ b/app/src/main/java/com/ux/video/file/filerecovery/photo/PhotoInfoActivity.kt @@ -2,10 +2,16 @@ package com.ux.video.file.filerecovery.photo import android.content.Intent import android.graphics.drawable.Drawable +import android.net.Uri import android.os.Build import android.view.LayoutInflater +import android.view.ViewGroup +import android.widget.ImageView import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope +import androidx.media3.common.MediaItem +import androidx.media3.common.Player +import androidx.media3.exoplayer.ExoPlayer import com.bumptech.glide.Glide import com.bumptech.glide.load.DataSource import com.bumptech.glide.load.engine.GlideException @@ -29,7 +35,9 @@ import com.ux.video.file.filerecovery.utils.Common.VALUE_SCAN_TYPE_documents import com.ux.video.file.filerecovery.utils.Common.VALUE_SCAN_TYPE_photo import com.ux.video.file.filerecovery.utils.Common.VALUE_SCAN_TYPE_video import com.ux.video.file.filerecovery.utils.ExtendFunctions.dpToPx +import com.ux.video.file.filerecovery.video.PlayMediaManager import com.ux.video.file.filerecovery.video.VideoPlayActivity +import java.io.File class PhotoInfoActivity : BaseActivity() { @@ -39,7 +47,7 @@ class PhotoInfoActivity : BaseActivity() { private var scanType: Int = VALUE_SCAN_TYPE_photo private var myData: ResultPhotosFiles? = null - + private lateinit var player: ExoPlayer override fun inflateBinding(inflater: LayoutInflater): ActivityPhotoInfoBinding = ActivityPhotoInfoBinding.inflate(inflater) @@ -65,37 +73,10 @@ class PhotoInfoActivity : BaseActivity() { tvName.text = resultPhotosFiles.name tvPath.text = resultPhotosFiles.path + tvSize.text = resultPhotosFiles.sizeString tvDate.text = Common.getFormatDate(resultPhotosFiles.lastModified) tvResolution.text = resultPhotosFiles.resolution tvDuration.text = Common.formatDuration(resultPhotosFiles.duration) - - Glide.with(this@PhotoInfoActivity) - .load(resultPhotosFiles.targetFile) - .apply(RequestOptions().transform(CenterCrop(), RoundedCorners(8.dpToPx(this@PhotoInfoActivity)))) - .listener(object : RequestListener { - override fun onLoadFailed( - e: GlideException?, - model: Any?, - target: Target, - isFirstResource: Boolean - ): Boolean { - return false - } - - override fun onResourceReady( - resource: Drawable, - model: Any, - target: Target?, - dataSource: DataSource, - isFirstResource: Boolean - ): Boolean { - - return false - } - - }) - .into(image) - layoutBottom.tvLeft.run { text = resources.getString(R.string.delete) setOnClickListener { @@ -109,7 +90,6 @@ class PhotoInfoActivity : BaseActivity() { } } } - layoutBottom.tvRight.run { text = resources.getString(R.string.recover) setOnClickListener { @@ -134,12 +114,17 @@ class PhotoInfoActivity : BaseActivity() { layoutPath.isVisible = true layoutResolution.isVisible = true layoutDate.isVisible = true + frameImage.setBackgroundResource(0) + + layoutSeekbar.isVisible = false layoutType.isVisible = false layoutSize.isVisible = false layoutDuration.isVisible = false imPlay.isVisible = false + + myData?.targetFile?.let { loadImage(image,it) } } VALUE_SCAN_TYPE_video, VALUE_SCAN_TYPE_deleted_video -> { @@ -148,12 +133,16 @@ class PhotoInfoActivity : BaseActivity() { layoutResolution.isVisible = true layoutDate.isVisible = true layoutDuration.isVisible = true + frameImage.setBackgroundResource(0) + + layoutSeekbar.isVisible = false layoutType.isVisible = false layoutSize.isVisible = false imPlay.isVisible = true myData?.let { data-> + data.targetFile?.let { loadImage(image,it) } frameImage.setOnClickListener { startActivity(Intent(this@PhotoInfoActivity, VideoPlayActivity::class.java).apply { putExtra(VideoPlayActivity.KEY_DATA, data) @@ -163,12 +152,25 @@ class PhotoInfoActivity : BaseActivity() { } VALUE_SCAN_TYPE_audio, VALUE_SCAN_TYPE_deleted_audio -> { + Common.showLog("----------音频") layoutName.isVisible = true layoutPath.isVisible = true layoutSize.isVisible = true layoutDate.isVisible = true layoutDuration.isVisible = true + layoutSeekbar.isVisible = true + imPlay.isVisible = true + frameImage.setBackgroundResource(R.drawable.bg_info_music_f2f2f7_8) + image.setImageResource(R.drawable.image_info_music) + val params = image.layoutParams ?: ViewGroup.LayoutParams( + 180.dpToPx(this@PhotoInfoActivity), + 180.dpToPx(this@PhotoInfoActivity) + ) + params.width = 180.dpToPx(this@PhotoInfoActivity) + params.height = 180.dpToPx(this@PhotoInfoActivity) + image.layoutParams = params + initPlayAudio() layoutResolution.isVisible = false layoutType.isVisible = false } @@ -189,6 +191,49 @@ class PhotoInfoActivity : BaseActivity() { } + private fun loadImage(image: ImageView,file: File){ + Glide.with(this@PhotoInfoActivity) + .load(file) + .apply(RequestOptions().transform(CenterCrop(), RoundedCorners(8.dpToPx(this@PhotoInfoActivity)))) + .listener(object : RequestListener { + override fun onLoadFailed( + e: GlideException?, + model: Any?, + target: Target, + isFirstResource: Boolean + ): Boolean { + return false + } + + override fun onResourceReady( + resource: Drawable, + model: Any, + target: Target?, + dataSource: DataSource, + isFirstResource: Boolean + ): Boolean { + + return false + } + + }) + .into(image) + } + + + private fun initPlayAudio(){ + myData?.targetFile?.let { + binding.run { + PlayMediaManager(context = this@PhotoInfoActivity, mediaFile = it, + seekBar = seekBar, playBtn = imPlay, onUpdateProgress = { current,total-> + textTimeCurrent.text = current + textTimeTotal.text = total + } ) + } + } + } + + private fun complete(number: Int, type: Int) { finish() startActivity(Intent(this@PhotoInfoActivity, RecoverySuccessActivity::class.java).apply { diff --git a/app/src/main/java/com/ux/video/file/filerecovery/photo/PhotoSortingActivity.kt b/app/src/main/java/com/ux/video/file/filerecovery/photo/PhotoSortingActivity.kt index c77a4ec..92e8254 100644 --- a/app/src/main/java/com/ux/video/file/filerecovery/photo/PhotoSortingActivity.kt +++ b/app/src/main/java/com/ux/video/file/filerecovery/photo/PhotoSortingActivity.kt @@ -89,7 +89,7 @@ class PhotoSortingActivity : BaseActivity() { private var filterDate = FILTER_DATE_ALL //筛选大小,默认全部-1 - private var filterSize: String = "All" + private var filterSize: String = "All" private var filterDatePopupWindows: DateFilterPopupWindows? = null private var filterStartDate: Date? = null @@ -170,7 +170,7 @@ class PhotoSortingActivity : BaseActivity() { this@PhotoSortingActivity, PhotoInfoActivity::class.java ).apply { - putExtra(KEY_SCAN_TYPE,scanType) + putExtra(KEY_SCAN_TYPE, scanType) putExtra(PhotoInfoActivity.KEY_CLICK_ITEM, item) }) @@ -189,7 +189,7 @@ class PhotoSortingActivity : BaseActivity() { this@PhotoSortingActivity, PhotoInfoActivity::class.java ).apply { - putExtra(KEY_SCAN_TYPE,scanType) + putExtra(KEY_SCAN_TYPE, scanType) putExtra(PhotoInfoActivity.KEY_CLICK_ITEM, item) }) }.apply { @@ -477,10 +477,20 @@ class PhotoSortingActivity : BaseActivity() { private fun setSizeAdapter() { binding.recyclerView.run { val aPx = 16.dpToPx(context) - val bPx = 6.dpToPx(context) - setPadding(aPx, 0, bPx, 70.dpToPx(context)) - clipToPadding = false - layoutManager = GridLayoutManager(context, columns) + val bottom = 70.dpToPx(context) + when (scanType) { + VALUE_SCAN_TYPE_audio, VALUE_SCAN_TYPE_deleted_audio -> { + layoutManager = LinearLayoutManager(context) + setPadding(aPx, 0, 0, bottom) + } + + else -> { + val bPx = 6.dpToPx(context) + setPadding(aPx, 0, bPx, bottom) + clipToPadding = false + layoutManager = GridLayoutManager(context, columns) + } + } adapter = sizeSortAdapter } @@ -685,6 +695,7 @@ class PhotoSortingActivity : BaseActivity() { VALUE_SCAN_TYPE_photo, VALUE_SCAN_TYPE_deleted_photo, VALUE_SCAN_TYPE_documents, VALUE_SCAN_TYPE_deleted_documents -> { filterBySizeList(filterSizeCovert.first, filterSizeCovert.second) } + else -> { filterByDurationList(filterSizeCovert.first, filterSizeCovert.second) } diff --git a/app/src/main/java/com/ux/video/file/filerecovery/video/PlayMediaManager.kt b/app/src/main/java/com/ux/video/file/filerecovery/video/PlayMediaManager.kt new file mode 100644 index 0000000..f6283df --- /dev/null +++ b/app/src/main/java/com/ux/video/file/filerecovery/video/PlayMediaManager.kt @@ -0,0 +1,110 @@ +package com.ux.video.file.filerecovery.video + +import android.content.Context +import android.net.Uri +import android.os.Handler +import android.os.Looper +import android.widget.ImageView +import android.widget.SeekBar +import androidx.media3.common.MediaItem +import androidx.media3.common.Player +import androidx.media3.exoplayer.ExoPlayer +import androidx.media3.ui.PlayerView +import com.ux.video.file.filerecovery.utils.Common +import java.io.File + +class PlayMediaManager(var context: Context, var mediaFile: File, var playView: PlayerView? = null, var seekBar: SeekBar, var playBtn: ImageView, var onUpdateProgress:(currentStr: String, totalStr: String)-> Unit) { + + private lateinit var player: ExoPlayer + private val updateHandler = Handler(Looper.getMainLooper()) + + init { + initPlayer() + playBtn.setOnClickListener { + if (player.playbackState == Player.STATE_ENDED) { + player.seekTo(0) + } + if (!player.isPlaying) { + player.play() + it.isSelected = true + } else { + player.pause() + it.isSelected = false + } + } + + seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { + override fun onProgressChanged( + seekBar: SeekBar?, + progress: Int, + fromUser: Boolean + ) { + if (fromUser) { + val newPosition = progress * player.duration / 100 + player.seekTo(newPosition) + } + } + + override fun onStartTrackingTouch(seekBar: SeekBar?) { + + } + + override fun onStopTrackingTouch(seekBar: SeekBar?) { + + } + + }) + + } + private fun initPlayer() { + player = ExoPlayer.Builder(context).build() + playView?.player = player + val mediaItem = MediaItem.fromUri(Uri.fromFile(mediaFile)) + player.addListener(object : Player.Listener { + override fun onPlaybackStateChanged(playbackState: Int) { + super.onPlaybackStateChanged(playbackState) + when (playbackState) { + Player.STATE_IDLE -> { + + } + + Player.STATE_BUFFERING -> { + + } + + Player.STATE_READY -> { + + } + + Player.STATE_ENDED -> { + playBtn.isSelected = false +// onPlayEnd() + } + } + + } + }) + player.setMediaItem(mediaItem) + player.prepare() + + startProgressUpdater() + } + + private fun startProgressUpdater() { + updateHandler.post(object : Runnable { + override fun run() { + if (player.isPlaying || player.isLoading) { + val pos = player.currentPosition + val dur = player.duration.takeIf { it > 0 } ?: 1L + val progress = (pos * 100 / dur).toInt() + onUpdateProgress(Common.formatDuration(pos),Common.formatDuration(dur)) + seekBar.progress = progress +// +// binding.textTimeCurrent.text = Common.formatDuration(pos) +// binding.textTimeTotal.text = Common.formatDuration(dur) + } + updateHandler.postDelayed(this, 500) + } + }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/ux/video/file/filerecovery/video/VideoPlayActivity.kt b/app/src/main/java/com/ux/video/file/filerecovery/video/VideoPlayActivity.kt index 7231b0f..1cf9ebc 100644 --- a/app/src/main/java/com/ux/video/file/filerecovery/video/VideoPlayActivity.kt +++ b/app/src/main/java/com/ux/video/file/filerecovery/video/VideoPlayActivity.kt @@ -53,44 +53,52 @@ class VideoPlayActivity : BaseActivity() { @Suppress("DEPRECATION") intent.getParcelableExtra(KEY_DATA) } - initPlayer() +// initPlayer() binding.run { myData?.let { resultPhotosFiles-> imageBack.setOnClickListener { finish() } - playImage.setOnClickListener { - if (player.playbackState == Player.STATE_ENDED) { - player.seekTo(0) - } - if (!player.isPlaying) { - player.play() - it.isSelected = true - } else { - player.pause() - it.isSelected = false - } + resultPhotosFiles.targetFile?.let { + PlayMediaManager(context = this@VideoPlayActivity, mediaFile = it, playView = playerView, + seekBar = seekBar, playBtn = playImage, onUpdateProgress = { current,total-> + textTimeCurrent.text = current + textTimeTotal.text = total + } ) } - seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { - override fun onProgressChanged( - seekBar: SeekBar?, - progress: Int, - fromUser: Boolean - ) { - if (fromUser) { - val newPosition = progress * player.duration / 100 - player.seekTo(newPosition) - } - } - override fun onStartTrackingTouch(seekBar: SeekBar?) { - - } - - override fun onStopTrackingTouch(seekBar: SeekBar?) { - - } - - }) - startProgressUpdater() +// playImage.setOnClickListener { +// if (player.playbackState == Player.STATE_ENDED) { +// player.seekTo(0) +// } +// if (!player.isPlaying) { +// player.play() +// it.isSelected = true +// } else { +// player.pause() +// it.isSelected = false +// } +// } +// seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener { +// override fun onProgressChanged( +// seekBar: SeekBar?, +// progress: Int, +// fromUser: Boolean +// ) { +// if (fromUser) { +// val newPosition = progress * player.duration / 100 +// player.seekTo(newPosition) +// } +// } +// +// override fun onStartTrackingTouch(seekBar: SeekBar?) { +// +// } +// +// override fun onStopTrackingTouch(seekBar: SeekBar?) { +// +// } +// +// }) +// startProgressUpdater() layoutBottom.tvLeft.run { text = resources.getString(R.string.delete) setOnClickListener { diff --git a/app/src/main/res/drawable/bg_info_music_f2f2f7_8.xml b/app/src/main/res/drawable/bg_info_music_f2f2f7_8.xml new file mode 100644 index 0000000..1b9fb01 --- /dev/null +++ b/app/src/main/res/drawable/bg_info_music_f2f2f7_8.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/icon_search.png b/app/src/main/res/drawable/icon_search.png new file mode 100644 index 0000000000000000000000000000000000000000..d4378878a9966362044f6fbf83cae3f0465be372 GIT binary patch literal 2208 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≻K2&a)-Ws+cmA2V`j-Zlcr&5CXXBx>uN?wV- z-`D!=1skm56y=E*)UJQwNEXiFdQ3i)?R^r|EMQ14GXF@!r=t~lXMx(q0uWn|Ze6(p zryw$*1VIi{(Gl&+&R5PRrd##&Y`eTfl}igdkSDC$TVb#i7;U&@FQZ1v7>UjW-<9gY zY{g-D(&D?&hV44ZliL}VcrdN*s>U{1jrLDrE&l0X(KG?F5j`u3#Zz8G&qA7QVLEb} zFc$Zn-d!sA=8XBlBR@%t;YQV08X>s%i;O5Y~Fx28zEtTz;ci3exq= z7bHz@e&+75uVuYmBHAzzwfq$X+*Fz1WuXny9!W!@283qy?mg+uUkyY21#=yfMj&<>6M&)I z$dQZCT=4jG17qn{d-=tR`~}_tn*pf_ChJO$j){>I)A9RpQhma?W+WQiSCO!rMv=^b z=QK_-)bcATeyq%*>3x_&X7&{z53TyHVeSr$g+1NXXr{c=QKqdv$JJ~`HmjXu(u)!E z4O{>ma)hW`Fl%_6USY9$V+QAEZYGA){+xGnlDBubg6Uh$C#;mr+cPP6^Gd-}6eo;W5F3SV1_mtVQ zL5Su+3?=DS4>EGztfuT;MQ&4%-`xkX6Op2xKxm{-Al>?s^IY-=jt&c`hv`t=sxycL zPx|^7wB|?@I6!Ajq+u@(Wb^Da2$SmRT;EkF6(b)t_N29o)4Zd;t;^Y8DDSxY2Dqg^ zzOSgoR}|ND3i(DA{ao_xuo|e5u>Hu4$3B47V&!Vt05z%vv=V_KxX0}kT;%f1jdg#! zisjvi&||t4Marxi-&`6)z30VB3F^`I1)B$R2Q{aRIFti-;>De<)}l9uX^XeBW2c z#6GOE<%(G8=Ya}-iyq4U)-UmFX4Jj(;d#);aVuL4BH64QC)7rHA^ymQV~kC`XA*;7lJLYzW0ZDCmGP`z~y&Cxiq9 nCnvmjM}0th?6Z&$dxl`_T<0ZYy$nt8F9fQJnhM2tEQ9_Z4-Ssl literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_photo_info.xml b/app/src/main/res/layout/activity_photo_info.xml index f94842a..85094a3 100644 --- a/app/src/main/res/layout/activity_photo_info.xml +++ b/app/src/main/res/layout/activity_photo_info.xml @@ -56,17 +56,57 @@ + android:layout_height="match_parent" /> + android:src="@drawable/selector_play_button" /> + + + + + + + + diff --git a/app/src/main/res/layout/activity_photo_sorting.xml b/app/src/main/res/layout/activity_photo_sorting.xml index 5e54de9..6d8dec3 100644 --- a/app/src/main/res/layout/activity_photo_sorting.xml +++ b/app/src/main/res/layout/activity_photo_sorting.xml @@ -123,9 +123,8 @@ android:layout_marginStart="8dp" android:src="@drawable/selector_arrow_up_down" /> - + - + android:text="00:00" /> @@ -64,7 +64,7 @@ android:textColor="@color/white" android:textSize="10sp" app:fontType="bold" - tools:text="00:00" /> + android:text="00:00"/>