Browse Source

优化视频列表显示&调整预览界面逻辑

zk 1 year ago
parent
commit
ed3045c095

+ 4 - 4
app/src/main/java/com/datarecovery/master/module/audiorecover/AudioRecoverViewModel.java

@@ -208,10 +208,10 @@ public class AudioRecoverViewModel extends BaseViewModel {
     private void setFreeExport() {
     private void setFreeExport() {
         if (isTrial) {
         if (isTrial) {
             showTrialView.setValue(true);
             showTrialView.setValue(true);
-        }
-        List<FilesSearch.DocumentFile> list = getList(detectedVideoList);
-        if (list.size() > 0) {
-            list.get(0).setTrial(true);
+            List<FilesSearch.DocumentFile> list = getList(detectedVideoList);
+            if (list.size() > 0) {
+                list.get(0).setTrial(true);
+            }
         }
         }
     }
     }
 
 

+ 11 - 26
app/src/main/java/com/datarecovery/master/module/preview/PreviewActivity.java

@@ -40,7 +40,6 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
     public static final int TYPE_AUDIO = 3;
     public static final int TYPE_AUDIO = 3;
     private PreviewViewModel previewViewModel;
     private PreviewViewModel previewViewModel;
     private MediaPlayer mediaPlayer;
     private MediaPlayer mediaPlayer;
-    private boolean isSurfaceCreated;
 
 
 
 
     private CommonSureDialog showTrialExportFailDialog;
     private CommonSureDialog showTrialExportFailDialog;
@@ -100,9 +99,15 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
     }
     }
 
 
     private void initObserver() {
     private void initObserver() {
-        previewViewModel.getSeekBarProgress().observe(this, process -> {
-            mediaPlayer.seekTo(BoxingUtil.boxing(process));
+        previewViewModel.getClickMediaPlayerEvent().observe(this, o -> {
+            if (mediaPlayer.isPlaying()) {
+                mediaPlayer.pause();
+            } else {
+                mediaPlayer.start();
+            }
+            previewViewModel.setIsPlaying(mediaPlayer.isPlaying());
         });
         });
+        previewViewModel.getSeekBarProgress().observe(this, process -> mediaPlayer.seekTo(BoxingUtil.boxing(process)));
         previewViewModel.getShowFreeStopDialog().observe(this, o -> {
         previewViewModel.getShowFreeStopDialog().observe(this, o -> {
             if (mediaPlayer.isPlaying()) {
             if (mediaPlayer.isPlaying()) {
                 mediaPlayer.pause();
                 mediaPlayer.pause();
@@ -110,9 +115,7 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
             previewViewModel.setIsPlaying(false);
             previewViewModel.setIsPlaying(false);
             showFreeStopDialog();
             showFreeStopDialog();
         });
         });
-        previewViewModel.getHandlePlayProgress().observe(this, o -> {
-            previewViewModel.handleMediaPlayerProgress(mediaPlayer.getCurrentPosition());
-        });
+        previewViewModel.getHandlePlayProgress().observe(this, o -> previewViewModel.handleMediaPlayerProgress(mediaPlayer.getCurrentPosition()));
         previewViewModel.getRefreshAudioCurrentProgress().observe(this, o -> binding.previewAudioSeekbar.setProgress(mediaPlayer.getCurrentPosition()));
         previewViewModel.getRefreshAudioCurrentProgress().observe(this, o -> binding.previewAudioSeekbar.setProgress(mediaPlayer.getCurrentPosition()));
         previewViewModel.getShowTrialExportFailDialog().observe(this, o -> showTrialExportFailDialog());
         previewViewModel.getShowTrialExportFailDialog().observe(this, o -> showTrialExportFailDialog());
     }
     }
@@ -189,25 +192,6 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
     private void initView() {
     private void initView() {
         binding.previewHeader.setNavigationOnClickListener(v -> finish());
         binding.previewHeader.setNavigationOnClickListener(v -> finish());
         addTopStatusBarHeight(binding.previewHeader);
         addTopStatusBarHeight(binding.previewHeader);
-        binding.previewVideoContainer.setOnClickListener(v -> {
-            if (isSurfaceCreated) {
-                previewViewModel.setIsPlayStart();
-                if (mediaPlayer.isPlaying()) {
-                    mediaPlayer.pause();
-                } else {
-                    mediaPlayer.start();
-                }
-                previewViewModel.setIsPlaying(mediaPlayer.isPlaying());
-            }
-        });
-        binding.previewAudioPlay.setOnClickListener(v -> {
-            if (mediaPlayer.isPlaying()) {
-                mediaPlayer.pause();
-            } else {
-                mediaPlayer.start();
-            }
-            previewViewModel.setIsPlaying(mediaPlayer.isPlaying());
-        });
     }
     }
 
 
     private void initImagePreviewPager() {
     private void initImagePreviewPager() {
@@ -225,11 +209,12 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
 
 
     private void initSurfaceView() {
     private void initSurfaceView() {
         SurfaceHolder holder = binding.previewVideo.getHolder();
         SurfaceHolder holder = binding.previewVideo.getHolder();
+        previewViewModel.setSurfaceCreated(false);
         holder.addCallback(new SurfaceHolder.Callback() {
         holder.addCallback(new SurfaceHolder.Callback() {
             @Override
             @Override
             public void surfaceCreated(@NonNull SurfaceHolder holder) {
             public void surfaceCreated(@NonNull SurfaceHolder holder) {
                 mediaPlayer.setDisplay(holder);
                 mediaPlayer.setDisplay(holder);
-                isSurfaceCreated = true;
+                previewViewModel.setSurfaceCreated(true);
             }
             }
 
 
             @Override
             @Override

+ 24 - 8
app/src/main/java/com/datarecovery/master/module/preview/PreviewViewModel.java

@@ -46,6 +46,7 @@ public class PreviewViewModel extends BaseViewModel {
     private final SingleLiveEvent<?> showFreeStopDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showFreeStopDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> refreshAudioCurrentProgress = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> refreshAudioCurrentProgress = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> handlePlayProgress = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> handlePlayProgress = new SingleLiveEvent<>();
+    private final SingleLiveEvent<?> clickMediaPlayerEvent = new SingleLiveEvent<>();
     private final MutableLiveData<Integer> seekBarProgress = new MutableLiveData<>();
     private final MutableLiveData<Integer> seekBarProgress = new MutableLiveData<>();
 
 
     private int type;
     private int type;
@@ -60,11 +61,21 @@ public class PreviewViewModel extends BaseViewModel {
     private int totalDuration;
     private int totalDuration;
     private int halfwayDuration;
     private int halfwayDuration;
 
 
+    private boolean isSurfaceCreated;
+
     @Inject
     @Inject
     public PreviewViewModel(DeviceFuncRepository deviceFuncRepository) {
     public PreviewViewModel(DeviceFuncRepository deviceFuncRepository) {
         this.deviceFuncRepository = deviceFuncRepository;
         this.deviceFuncRepository = deviceFuncRepository;
     }
     }
 
 
+    public LiveData<?> getClickMediaPlayerEvent() {
+        return clickMediaPlayerEvent;
+    }
+
+    public void setSurfaceCreated(boolean surfaceCreated) {
+        isSurfaceCreated = surfaceCreated;
+    }
+
     public LiveData<Integer> getSeekBarProgress() {
     public LiveData<Integer> getSeekBarProgress() {
         return seekBarProgress;
         return seekBarProgress;
     }
     }
@@ -198,14 +209,6 @@ public class PreviewViewModel extends BaseViewModel {
             return;
             return;
         }
         }
         this.isPlayStart.setValue(true);
         this.isPlayStart.setValue(true);
-        if (isTrial) {
-            //倒计时播放一半
-            startHalfTimer();
-        }
-    }
-
-    private void startHalfTimer() {
-
     }
     }
 
 
     public void setIsPlayStart(boolean isPlayStart) {
     public void setIsPlayStart(boolean isPlayStart) {
@@ -318,6 +321,8 @@ public class PreviewViewModel extends BaseViewModel {
     public void handleMediaPlayerProgress(int currentPosition) {
     public void handleMediaPlayerProgress(int currentPosition) {
         if (currentPosition >= halfwayDuration) {
         if (currentPosition >= halfwayDuration) {
             showFreeStopDialog.call();
             showFreeStopDialog.call();
+            isPlayStart.setValue(false);
+            this.seekBarProgress.setValue(0);
         }
         }
     }
     }
 
 
@@ -334,4 +339,15 @@ public class PreviewViewModel extends BaseViewModel {
         }
         }
         this.seekBarProgress.setValue(progress);
         this.seekBarProgress.setValue(progress);
     }
     }
+
+    public void onVideoClick() {
+        if (isSurfaceCreated) {
+            setIsPlayStart();
+            clickMediaPlayerEvent.call();
+        }
+    }
+
+    public void onAudioPlayClick() {
+        clickMediaPlayerEvent.call();
+    }
 }
 }

+ 1 - 3
app/src/main/java/com/datarecovery/master/module/videorecover/VideoRecoverActivity.java

@@ -12,13 +12,11 @@ import androidx.recyclerview.widget.GridLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.recyclerview.widget.RecyclerView;
 
 
 import com.atmob.app.lib.base.BaseActivity;
 import com.atmob.app.lib.base.BaseActivity;
-import com.atmob.common.logging.AtmobLog;
 import com.datarecovery.master.R;
 import com.datarecovery.master.R;
 import com.datarecovery.master.databinding.ActivityVideoRecoverBinding;
 import com.datarecovery.master.databinding.ActivityVideoRecoverBinding;
 import com.datarecovery.master.dialog.CommonLoadingDialog;
 import com.datarecovery.master.dialog.CommonLoadingDialog;
 import com.datarecovery.master.dialog.CommonSureDialog;
 import com.datarecovery.master.dialog.CommonSureDialog;
 import com.datarecovery.master.dialog.ScanFileDialog;
 import com.datarecovery.master.dialog.ScanFileDialog;
-import com.datarecovery.master.dialog.ScanProgressDialog;
 import com.datarecovery.master.module.member.MemberType;
 import com.datarecovery.master.module.member.MemberType;
 import com.datarecovery.master.module.preview.PreviewActivity;
 import com.datarecovery.master.module.preview.PreviewActivity;
 import com.datarecovery.master.utils.BoxingUtil;
 import com.datarecovery.master.utils.BoxingUtil;
@@ -85,7 +83,7 @@ public class VideoRecoverActivity extends BaseActivity<ActivityVideoRecoverBindi
         videoRecoverViewModel.getShowTrialExportFailDialog().observe(this, o -> showTrialExportFailDialog());
         videoRecoverViewModel.getShowTrialExportFailDialog().observe(this, o -> showTrialExportFailDialog());
         videoRecoverViewModel.getShowLoadingEvent().observe(this, this::showLoadingDialog);
         videoRecoverViewModel.getShowLoadingEvent().observe(this, this::showLoadingDialog);
         videoRecoverViewModel.getDetectedVideoList().observe(this, list -> videoItemAdapter.submit(list));
         videoRecoverViewModel.getDetectedVideoList().observe(this, list -> videoItemAdapter.submit(list));
-        videoRecoverViewModel.getDetectedFinish().observe(this, o -> binding.ryVideoRecover.scrollToPosition(0));
+        videoRecoverViewModel.getScrollTop().observe(this, o -> binding.ryVideoRecover.scrollToPosition(0));
         videoRecoverViewModel.getShowScanDialogEvent().observe(this, this::showScanProgressDialog);
         videoRecoverViewModel.getShowScanDialogEvent().observe(this, this::showScanProgressDialog);
     }
     }
 
 

+ 9 - 9
app/src/main/java/com/datarecovery/master/module/videorecover/VideoRecoverViewModel.java

@@ -19,7 +19,6 @@ import com.datarecovery.master.sdk.bugly.BuglyHelper;
 import com.datarecovery.master.utils.BoxingUtil;
 import com.datarecovery.master.utils.BoxingUtil;
 import com.datarecovery.master.utils.FileUtil;
 import com.datarecovery.master.utils.FileUtil;
 import com.datarecovery.master.utils.FilesSearch;
 import com.datarecovery.master.utils.FilesSearch;
-import com.datarecovery.master.utils.ImageDeepDetector;
 import com.datarecovery.master.utils.MediaStoreHelper;
 import com.datarecovery.master.utils.MediaStoreHelper;
 import com.datarecovery.master.utils.ToastUtil;
 import com.datarecovery.master.utils.ToastUtil;
 
 
@@ -53,7 +52,7 @@ public class VideoRecoverViewModel extends BaseViewModel {
     private final MutableLiveData<List<FilesSearch.DocumentFile>> selectedList = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<List<FilesSearch.DocumentFile>> selectedList = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<Boolean> showTrialView = new MutableLiveData<>();
     private final MutableLiveData<Boolean> showTrialView = new MutableLiveData<>();
     private final SingleLiveEvent<?> showTrialExportFailDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showTrialExportFailDialog = new SingleLiveEvent<>();
-    private final SingleLiveEvent<?> detectedFinish = new SingleLiveEvent<>();
+    private final SingleLiveEvent<?> scrollTop = new SingleLiveEvent<>();
     private final SingleLiveEvent<Boolean> showScanDialogEvent = new SingleLiveEvent<>();
     private final SingleLiveEvent<Boolean> showScanDialogEvent = new SingleLiveEvent<>();
     private final SingleLiveEvent<Boolean> showLoadingEvent = new SingleLiveEvent<>();
     private final SingleLiveEvent<Boolean> showLoadingEvent = new SingleLiveEvent<>();
     private final DeviceFuncRepository deviceFuncRepository;
     private final DeviceFuncRepository deviceFuncRepository;
@@ -105,8 +104,8 @@ public class VideoRecoverViewModel extends BaseViewModel {
         return detectedVideoList;
         return detectedVideoList;
     }
     }
 
 
-    public LiveData<?> getDetectedFinish() {
-        return detectedFinish;
+    public LiveData<?> getScrollTop() {
+        return scrollTop;
     }
     }
 
 
     public LiveData<Boolean> getShowScanDialogEvent() {
     public LiveData<Boolean> getShowScanDialogEvent() {
@@ -165,6 +164,7 @@ public class VideoRecoverViewModel extends BaseViewModel {
                             videoList.add(0, documentFile);
                             videoList.add(0, documentFile);
                             detectedVideoList.setValue(videoList);
                             detectedVideoList.setValue(videoList);
                         }
                         }
+                        scrollTop.call();
                     }
                     }
 
 
                     @Override
                     @Override
@@ -176,7 +176,7 @@ public class VideoRecoverViewModel extends BaseViewModel {
                     public void onComplete() {
                     public void onComplete() {
                         setFreeExport();
                         setFreeExport();
                         showScanDialogEvent.setValue(false);
                         showScanDialogEvent.setValue(false);
-                        detectedFinish.call();
+
                     }
                     }
                 });
                 });
     }
     }
@@ -184,10 +184,10 @@ public class VideoRecoverViewModel extends BaseViewModel {
     private void setFreeExport() {
     private void setFreeExport() {
         if (isTrial) {
         if (isTrial) {
             showTrialView.setValue(true);
             showTrialView.setValue(true);
-        }
-        List<FilesSearch.DocumentFile> list = getList(detectedVideoList);
-        if (list.size() > 0) {
-            list.get(0).setTrial(true);
+            List<FilesSearch.DocumentFile> list = getList(detectedVideoList);
+            if (list.size() > 0) {
+                list.get(0).setTrial(true);
+            }
         }
         }
     }
     }
 
 

+ 2 - 0
app/src/main/res/layout/activity_preview.xml

@@ -53,6 +53,7 @@
             app:layout_constraintTop_toBottomOf="@+id/preview_header" />
             app:layout_constraintTop_toBottomOf="@+id/preview_header" />
 
 
         <androidx.constraintlayout.widget.ConstraintLayout
         <androidx.constraintlayout.widget.ConstraintLayout
+            android:onClick="@{()-> previewViewModel.onVideoClick()}"
             android:id="@+id/preview_video_container"
             android:id="@+id/preview_video_container"
             android:layout_width="match_parent"
             android:layout_width="match_parent"
             android:layout_height="0dp"
             android:layout_height="0dp"
@@ -128,6 +129,7 @@
             app:layout_constraintTop_toTopOf="@id/preview_audio_play" />
             app:layout_constraintTop_toTopOf="@id/preview_audio_play" />
 
 
         <ImageView
         <ImageView
+            android:onClick="@{()-> previewViewModel.onAudioPlayClick()}"
             android:id="@+id/preview_audio_play"
             android:id="@+id/preview_audio_play"
             expandTouchSize="@{6}"
             expandTouchSize="@{6}"
             android:layout_width="0dp"
             android:layout_width="0dp"