|
|
@@ -16,11 +16,11 @@ import androidx.annotation.Nullable;
|
|
|
import androidx.viewpager2.widget.ViewPager2;
|
|
|
|
|
|
import com.atmob.app.lib.base.BaseActivity;
|
|
|
-import com.atmob.common.logging.AtmobLog;
|
|
|
import com.atmob.common.ui.SizeUtil;
|
|
|
import com.datarecovery.master.R;
|
|
|
import com.datarecovery.master.databinding.ActivityPreviewBinding;
|
|
|
import com.datarecovery.master.dialog.CommonSureDialog;
|
|
|
+import com.datarecovery.master.utils.BoxingUtil;
|
|
|
import com.datarecovery.master.utils.FilesSearch;
|
|
|
import com.datarecovery.master.utils.ImageDeepDetector;
|
|
|
import com.datarecovery.master.utils.SafeMediaPlayer;
|
|
|
@@ -29,8 +29,6 @@ import com.gyf.immersionbar.ImmersionBar;
|
|
|
|
|
|
import java.lang.ref.WeakReference;
|
|
|
import java.util.List;
|
|
|
-import java.util.Timer;
|
|
|
-import java.util.TimerTask;
|
|
|
|
|
|
import dagger.hilt.android.AndroidEntryPoint;
|
|
|
|
|
|
@@ -48,6 +46,7 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
|
|
|
private CommonSureDialog showTrialExportFailDialog;
|
|
|
|
|
|
private ViewPager2.OnPageChangeCallback onPageChangeCallback;
|
|
|
+ private CommonSureDialog showFreeStopDialog;
|
|
|
|
|
|
@IntDef({TYPE_IMG, TYPE_VIDEO, TYPE_AUDIO})
|
|
|
@interface Type {
|
|
|
@@ -101,10 +100,35 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
|
|
|
}
|
|
|
|
|
|
private void initObserver() {
|
|
|
- previewViewModel.getRefreshCurrentProgress().observe(this, o -> binding.previewAudioSeekbar.setProgress(mediaPlayer.getCurrentPosition()));
|
|
|
+ previewViewModel.getSeekBarProgress().observe(this, process -> mediaPlayer.seekTo(BoxingUtil.boxing(process)));
|
|
|
+ previewViewModel.getShowFreeStopDialog().observe(this, o -> {
|
|
|
+ mediaPlayer.pause();
|
|
|
+ previewViewModel.setIsPlaying(false);
|
|
|
+ showFreeStopDialog();
|
|
|
+ });
|
|
|
+ previewViewModel.getHandlePlayProgress().observe(this, o -> {
|
|
|
+ previewViewModel.handleMediaPlayerProgress(mediaPlayer.getCurrentPosition());
|
|
|
+ });
|
|
|
+ previewViewModel.getRefreshAudioCurrentProgress().observe(this, o -> binding.previewAudioSeekbar.setProgress(mediaPlayer.getCurrentPosition()));
|
|
|
previewViewModel.getShowTrialExportFailDialog().observe(this, o -> showTrialExportFailDialog());
|
|
|
}
|
|
|
|
|
|
+ private void showFreeStopDialog() {
|
|
|
+ if (showFreeStopDialog == null) {
|
|
|
+ showFreeStopDialog = new CommonSureDialog(this);
|
|
|
+ if (previewViewModel.getType() == TYPE_VIDEO) {
|
|
|
+ showFreeStopDialog.setDialogTitle(R.string.trial_export_video_fail_title)
|
|
|
+ .setDialogContent(R.string.trial_export_video_fail_content);
|
|
|
+ } else if (previewViewModel.getType() == TYPE_AUDIO) {
|
|
|
+ showFreeStopDialog.setDialogTitle(R.string.trial_export_audio_fail_title)
|
|
|
+ .setDialogContent(R.string.trial_export_audio_fail_content);
|
|
|
+ }
|
|
|
+ showFreeStopDialog.setSureText(R.string.dialog_trial_recover);
|
|
|
+ showFreeStopDialog.setOnDialogClickListener(() -> previewViewModel.onTrialRecoverClick());
|
|
|
+ }
|
|
|
+ showFreeStopDialog.show();
|
|
|
+ }
|
|
|
+
|
|
|
private void showTrialExportFailDialog() {
|
|
|
if (showTrialExportFailDialog == null) {
|
|
|
showTrialExportFailDialog = new CommonSureDialog(this);
|
|
|
@@ -152,7 +176,7 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
|
|
|
@Override
|
|
|
public void onStopTrackingTouch(SeekBar seekBar) {
|
|
|
previewViewModel.setSeekbarChanging(false);
|
|
|
- mediaPlayer.seekTo(seekBar.getProgress());
|
|
|
+ previewViewModel.setSeekbarTo(seekBar.getProgress());
|
|
|
}
|
|
|
});
|
|
|
previewViewModel.startMediaTimer();
|
|
|
@@ -222,13 +246,9 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
|
|
|
try {
|
|
|
mediaPlayer.setDataSource(this, uri);
|
|
|
mediaPlayer.setOnPreparedListener(mp -> {
|
|
|
+ previewViewModel.setTotalDuration(mediaPlayer.getDuration());
|
|
|
if (previewViewModel.getType() == TYPE_VIDEO) {
|
|
|
- int videoWidth = mediaPlayer.getVideoWidth();
|
|
|
- int screenWidth = SizeUtil.getScreenWidth();
|
|
|
- float scaleX = screenWidth / (videoWidth * 1f);
|
|
|
- int width = (int) (videoWidth * scaleX);
|
|
|
- int height = (int) (mediaPlayer.getVideoHeight() * scaleX);
|
|
|
- binding.previewVideo.resize(width, height);
|
|
|
+ initVideo();
|
|
|
} else if (previewViewModel.getType() == TYPE_AUDIO) {
|
|
|
initSeekBar();
|
|
|
}
|
|
|
@@ -251,6 +271,16 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void initVideo() {
|
|
|
+ int videoWidth = mediaPlayer.getVideoWidth();
|
|
|
+ int screenWidth = SizeUtil.getScreenWidth();
|
|
|
+ float scaleX = screenWidth / (videoWidth * 1f);
|
|
|
+ int width = (int) (videoWidth * scaleX);
|
|
|
+ int height = (int) (mediaPlayer.getVideoHeight() * scaleX);
|
|
|
+ binding.previewVideo.resize(width, height);
|
|
|
+ previewViewModel.startMediaTimer();
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
protected void onDestroy() {
|
|
|
super.onDestroy();
|