Browse Source

优化音频试听播放问题

zk 1 year ago
parent
commit
4b7cb9a231

+ 16 - 2
app/src/main/java/com/datarecovery/master/module/audiorecover/AudioRecoverActivity.java

@@ -15,6 +15,7 @@ import android.widget.TextView;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
 
 import com.atmob.app.lib.base.BaseActivity;
 import com.atmob.common.ui.SizeUtil;
@@ -97,7 +98,8 @@ public class AudioRecoverActivity extends BaseActivity<ActivityAudioRecoverBindi
         addTopStatusBarHeight(binding.toolBar);
         binding.toolBar.setNavigationOnClickListener(v -> onBackPressed());
         audioItemAdapter = new AudioItemAdapter(this);
-        binding.ryAudioRecover.setLayoutManager(new LinearLayoutManager(getBaseContext()));
+        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getBaseContext());
+        binding.ryAudioRecover.setLayoutManager(linearLayoutManager);
         binding.ryAudioRecover.setAdapter(audioItemAdapter);
         audioItemAdapter.setOnItemClick(new AudioItemAdapter.onItemClick() {
             @Override
@@ -113,6 +115,16 @@ public class AudioRecoverActivity extends BaseActivity<ActivityAudioRecoverBindi
                 PreviewActivity.startDocumentPreView(AudioRecoverActivity.this, PreviewActivity.TYPE_AUDIO, file, audioRecoverViewModel.isTrial());
             }
         });
+        if (audioRecoverViewModel.isTrial()) {
+            binding.ryAudioRecover.addOnScrollListener(new RecyclerView.OnScrollListener() {
+                @Override
+                public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
+                    if (audioRecoverViewModel.isTrial()) {
+                        audioRecoverViewModel.scrollPosition(linearLayoutManager.findFirstCompletelyVisibleItemPosition(), linearLayoutManager.findLastCompletelyVisibleItemPosition(), linearLayoutManager.getItemCount());
+                    }
+                }
+            });
+        }
     }
 
     @SuppressLint("NotifyDataSetChanged")
@@ -132,7 +144,9 @@ public class AudioRecoverActivity extends BaseActivity<ActivityAudioRecoverBindi
                     .setDialogContent(R.string.trial_export_fail_content).setSureText(R.string.dialog_trial_recover);
             showTrialExportFailDialog.setOnDialogClickListener(() -> audioRecoverViewModel.onTrialRecoverClick());
         }
-        showTrialExportFailDialog.show();
+        if (!showTrialExportFailDialog.isShowing()) {
+            showTrialExportFailDialog.show();
+        }
     }
 
     public void showLoadingDialog(Boolean show) {

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

@@ -16,6 +16,7 @@ import com.datarecovery.master.module.imgrecover.ImageRecoverActivity;
 import com.datarecovery.master.module.member.MemberActivity;
 import com.datarecovery.master.module.member.MemberType;
 import com.datarecovery.master.sdk.bugly.BuglyHelper;
+import com.datarecovery.master.utils.BoxingUtil;
 import com.datarecovery.master.utils.FileUtil;
 import com.datarecovery.master.utils.FilesSearch;
 import com.datarecovery.master.utils.MediaStoreHelper;
@@ -216,6 +217,7 @@ public class AudioRecoverViewModel extends BaseViewModel {
 
     public void cancelScan() {
         if (scanDisposable != null) scanDisposable.dispose();
+        showScanDialogEvent.setValue(false);
         setFreeExport();
     }
 
@@ -413,4 +415,10 @@ public class AudioRecoverViewModel extends BaseViewModel {
     public void onTrialRecoverClick() {
         MemberActivity.start(ActivityUtil.getTopActivity(), MemberType.APP_AUDIO_RECOVER);
     }
+
+    public void scrollPosition(int firstCompletePosition, int lastCompletelyItemPosition, int itemCount) {
+        if (lastCompletelyItemPosition == itemCount - 1 && firstCompletePosition > 0 && !BoxingUtil.boxing(showScanDialogEvent.getValue())) {
+            showTrialExportFailDialog.call();
+        }
+    }
 }

+ 0 - 1
app/src/main/java/com/datarecovery/master/module/filerecover/FileRecoverViewModel.java

@@ -352,7 +352,6 @@ public class FileRecoverViewModel extends BaseViewModel {
 
     public void scrollPosition(int firstCompletePosition, int lastCompletelyItemPosition, int itemCount) {
         if (lastCompletelyItemPosition == itemCount - 1 && firstCompletePosition > 0 && !BoxingUtil.boxing(showScanDialogEvent.getValue())) {
-            AtmobLog.d("TAG", "call");
             showTrialExportFailDialog.call();
         }
     }

+ 0 - 2
app/src/main/java/com/datarecovery/master/module/filerecover/fragment/FileRecoverFragment.java

@@ -63,8 +63,6 @@ public class FileRecoverFragment extends BaseFragment<FragmentFileRecoverListBin
                 @Override
                 public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
                     if (fileRecoverViewModel.isTrial()) {
-                        AtmobLog.d("TAG", "onScrolled: " + linearLayoutManager.findFirstCompletelyVisibleItemPosition() + "---"
-                                + linearLayoutManager.findLastCompletelyVisibleItemPosition() + "---" + linearLayoutManager.getItemCount());
                         fileRecoverViewModel.scrollPosition(linearLayoutManager.findFirstCompletelyVisibleItemPosition(), linearLayoutManager.findLastCompletelyVisibleItemPosition(), linearLayoutManager.getItemCount());
                     }
                 }

+ 6 - 2
app/src/main/java/com/datarecovery/master/module/preview/PreviewActivity.java

@@ -100,9 +100,13 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
     }
 
     private void initObserver() {
-        previewViewModel.getSeekBarProgress().observe(this, process -> mediaPlayer.seekTo(BoxingUtil.boxing(process)));
+        previewViewModel.getSeekBarProgress().observe(this, process -> {
+            mediaPlayer.seekTo(BoxingUtil.boxing(process));
+        });
         previewViewModel.getShowFreeStopDialog().observe(this, o -> {
-            mediaPlayer.pause();
+            if (mediaPlayer.isPlaying()) {
+                mediaPlayer.pause();
+            }
             previewViewModel.setIsPlaying(false);
             showFreeStopDialog();
         });

+ 17 - 2
app/src/main/java/com/datarecovery/master/module/videorecover/VideoRecoverActivity.java

@@ -9,8 +9,10 @@ import android.view.KeyEvent;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
 
 import com.atmob.app.lib.base.BaseActivity;
+import com.atmob.common.logging.AtmobLog;
 import com.datarecovery.master.R;
 import com.datarecovery.master.databinding.ActivityVideoRecoverBinding;
 import com.datarecovery.master.dialog.CommonLoadingDialog;
@@ -100,12 +102,15 @@ public class VideoRecoverActivity extends BaseActivity<ActivityVideoRecoverBindi
                     .setDialogContent(R.string.trial_export_fail_content).setSureText(R.string.dialog_trial_recover);
             showTrialExportFailDialog.setOnDialogClickListener(() -> videoRecoverViewModel.onTrialRecoverClick());
         }
-        showTrialExportFailDialog.show();
+        if (!showTrialExportFailDialog.isShowing()) {
+            showTrialExportFailDialog.show();
+        }
     }
 
     private void initRecycleView() {
         videoItemAdapter = new VideoItemAdapter(this);
-        binding.ryVideoRecover.setLayoutManager(new GridLayoutManager(this, 3));
+        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
+        binding.ryVideoRecover.setLayoutManager(gridLayoutManager);
         binding.ryVideoRecover.setAdapter(videoItemAdapter);
         binding.ryVideoRecover.addItemDecoration(new GridRecoverItemDecoration(3, 0.0282222222222222f, 0.0202222222222222f));
         videoItemAdapter.setOnItemClick(new VideoItemAdapter.onItemClick() {
@@ -122,6 +127,16 @@ public class VideoRecoverActivity extends BaseActivity<ActivityVideoRecoverBindi
                 PreviewActivity.startDocumentPreView(VideoRecoverActivity.this, PreviewActivity.TYPE_VIDEO, file, videoRecoverViewModel.isTrial());
             }
         });
+        if (videoRecoverViewModel.isTrial()) {
+            binding.ryVideoRecover.addOnScrollListener(new RecyclerView.OnScrollListener() {
+                @Override
+                public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
+                    if (videoRecoverViewModel.isTrial()) {
+                        videoRecoverViewModel.scrollPosition(gridLayoutManager.findFirstCompletelyVisibleItemPosition(), gridLayoutManager.findLastCompletelyVisibleItemPosition(), gridLayoutManager.getItemCount());
+                    }
+                }
+            });
+        }
     }
 
     public void showScanProgressDialog(Boolean show) {

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

@@ -16,6 +16,7 @@ import com.datarecovery.master.handler.EventHelper;
 import com.datarecovery.master.module.member.MemberActivity;
 import com.datarecovery.master.module.member.MemberType;
 import com.datarecovery.master.sdk.bugly.BuglyHelper;
+import com.datarecovery.master.utils.BoxingUtil;
 import com.datarecovery.master.utils.FileUtil;
 import com.datarecovery.master.utils.FilesSearch;
 import com.datarecovery.master.utils.ImageDeepDetector;
@@ -216,6 +217,7 @@ public class VideoRecoverViewModel extends BaseViewModel {
 
     public void cancelScan() {
         if (scanDisposable != null) scanDisposable.dispose();
+        showScanDialogEvent.setValue(false);
         setFreeExport();
     }
 
@@ -285,4 +287,10 @@ public class VideoRecoverViewModel extends BaseViewModel {
     public void onTrialRecoverClick() {
         MemberActivity.start(ActivityUtil.getTopActivity(), MemberType.APP_VIDEO_RECOVER);
     }
+
+    public void scrollPosition(int firstCompletePosition, int lastCompletelyItemPosition, int itemCount) {
+        if (lastCompletelyItemPosition == itemCount - 1 && firstCompletePosition > 0 && !BoxingUtil.boxing(showScanDialogEvent.getValue())) {
+            showTrialExportFailDialog.call();
+        }
+    }
 }