Browse Source

[Fix]处理一些问题

litchi98 2 months ago
parent
commit
f433db863b

+ 6 - 12
app/src/main/java/com/datarecovery/master/module/audiorecover/AudioRecoverActivity.java

@@ -224,19 +224,13 @@ public class AudioRecoverActivity extends BaseActivity<ActivityAudioRecoverBindi
             filterPopup.setFocusable(true);
             filterPopup.setOnDismissListener(() -> audioRecoverViewModel.setIsDateFilterArrowDown());
         }
-        if (popupHeight == 0) {
-            binding.vFilter.post(() -> {
-                if (isFinishing() || isDestroyed()) {
-                    return;
-                }
-                popupHeight = SizeUtil.getScreenHeight() - binding.vFilter.getBottom();
-                filterPopup.setHeight(popupHeight);
-                filterPopup.showAsDropDown(binding.vFilter, 0, 0);
-            });
-        } else {
+        binding.vFilter.post(() -> {
+            if (isFinishing() || isDestroyed()) {
+                return;
+            }
+            popupHeight = SizeUtil.getScreenHeight() - binding.vFilter.getBottom();
             filterPopup.showAsDropDown(binding.vFilter, 0, 0);
-        }
-
+        });
     }
 
     @Override

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

@@ -239,6 +239,10 @@ public class AudioRecoverViewModel extends BaseViewModel {
     }
 
     public void onExportClick() {
+        List<FilesSearch.DocumentFile> list = selectedList.getValue();
+        if (list == null || list.isEmpty()) {
+            return;
+        }
         showUnlockEvent.call();
     }
 

+ 1 - 1
app/src/main/java/com/datarecovery/master/module/homepage/HomePageViewModel.java

@@ -153,7 +153,7 @@ public class HomePageViewModel extends BaseViewModel {
             @Override
             public void onRewarded(@NonNull String token) {
                 super.onRewarded(token);
-                BackupHelperActivity.start(ActivityUtil.getTopActivity(), isQQSelected.getValue() != null && isQQSelected.getValue());
+                BackupHelperActivity.start(ActivityUtil.getTopActivity(), isQQSelected.getValue() == null || !isQQSelected.getValue());
             }
         });
     }

+ 37 - 27
app/src/main/java/com/datarecovery/master/module/preview/PreviewActivity.java

@@ -17,6 +17,7 @@ import androidx.viewpager2.widget.ViewPager2;
 
 import com.atmob.app.lib.base.BaseActivity;
 import com.atmob.common.ui.SizeUtil;
+import com.atmob.logging.AtmobLog;
 import com.datarecovery.master.R;
 import com.datarecovery.master.data.consts.AdFuncId;
 import com.datarecovery.master.data.consts.EventId;
@@ -25,7 +26,6 @@ import com.datarecovery.master.dialog.CommonSureDialog;
 import com.datarecovery.master.dialog.UnlockFunctionDialog;
 import com.datarecovery.master.handler.EventHelper;
 import com.datarecovery.master.module.homepage.FunctionBean;
-import com.datarecovery.master.module.member.MemberType;
 import com.datarecovery.master.sdk.ad.AtmobAdHelper;
 import com.datarecovery.master.sdk.ad.RewardVideoListenerAdapter;
 import com.datarecovery.master.utils.BoxingUtil;
@@ -116,14 +116,7 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
     }
 
     private void initObserver() {
-        previewViewModel.getClickMediaPlayerEvent().observe(this, o -> {
-            if (mediaPlayer.isPlaying()) {
-                mediaPlayer.pause();
-            } else {
-                mediaPlayer.start();
-            }
-            previewViewModel.setIsPlaying(mediaPlayer.isPlaying());
-        });
+        previewViewModel.getClickMediaPlayerEvent().observe(this, o -> toggleMediaPlayer());
         previewViewModel.getSeekBarProgress().observe(this, process -> mediaPlayer.seekTo(BoxingUtil.boxing(process)));
         previewViewModel.getShowFreeStopDialog().observe(this, o -> {
             if (mediaPlayer.isPlaying()) {
@@ -138,6 +131,15 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
         previewViewModel.getShowUnlockEvent().observe(this, o -> showUnlockDialog());
     }
 
+    private void toggleMediaPlayer() {
+        if (mediaPlayer.isPlaying()) {
+            mediaPlayer.pause();
+        } else {
+            mediaPlayer.start();
+        }
+        previewViewModel.setIsPlaying(mediaPlayer.isPlaying());
+    }
+
     private void showUnlockDialog() {
         if (unlockFunctionDialog == null) {
             unlockFunctionDialog = new UnlockFunctionDialog(this, getFunctionByType(previewViewModel.getType()))
@@ -150,6 +152,12 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
                                     super.onRewarded(token);
                                     previewViewModel.doExport();
                                 }
+
+                                @Override
+                                public void onFail(String s) {
+                                    super.onFail(s);
+                                    ToastUtil.show(R.string.recover_failed, ToastUtil.LENGTH_SHORT);
+                                }
                             });
                         }
                     });
@@ -190,16 +198,6 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
             showTrialExportFailDialog = new CommonSureDialog(this);
             showTrialExportFailDialog.setDialogTitle(R.string.trial_export_fail_title)
                     .setDialogContent(R.string.trial_export_fail_content).setSureText(R.string.dialog_trial_recover);
-            String evenType;
-            if (previewViewModel.getType() == TYPE_IMG) {
-                evenType = MemberType.APP_IMAGE_RECOVER;
-            } else if (previewViewModel.getType() == TYPE_VIDEO) {
-                evenType = MemberType.APP_VIDEO_RECOVER;
-            } else if (previewViewModel.getType() == TYPE_AUDIO) {
-                evenType = MemberType.APP_AUDIO_RECOVER;
-            } else {
-                evenType = null;
-            }
             showTrialExportFailDialog.setOnDialogClickListener(() -> previewViewModel.onTrialRecoverClick());
         }
         showTrialExportFailDialog.show();
@@ -221,7 +219,7 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
         }
     }
 
-    private void initSeekBar() {
+    private void initSeekBar(MediaPlayer mediaPlayer) {
         binding.previewAudioSeekbar.setProgress(0);
         binding.previewAudioSeekbar.setMax(mediaPlayer.getDuration());
         binding.previewAudioSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@@ -270,6 +268,7 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
         holder.addCallback(new SurfaceHolder.Callback() {
             @Override
             public void surfaceCreated(@NonNull SurfaceHolder holder) {
+                AtmobLog.i("PreviewActivity", "surfaceCreated: ");
                 mediaPlayer.setDisplay(holder);
                 previewViewModel.setSurfaceCreated(true);
             }
@@ -281,7 +280,8 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
 
             @Override
             public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
-                mediaPlayer.stop();
+                AtmobLog.i("PreviewActivity", "surfaceDestroyed: ");
+                previewViewModel.setSurfaceCreated(false);
                 mediaPlayer.setDisplay(null);
             }
         });
@@ -291,15 +291,14 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
         mediaPlayer = new SafeMediaPlayer();
         try {
             mediaPlayer.setDataSource(this, uri);
-            mediaPlayer.setOnPreparedListener(mp -> {
+            mediaPlayer.setOnPreparedListener(mediaPlayer -> {
                 previewViewModel.setTotalDuration(mediaPlayer.getDuration());
                 if (previewViewModel.getType() == TYPE_VIDEO) {
-                    initVideo();
+                    initVideo(mediaPlayer);
                 } else if (previewViewModel.getType() == TYPE_AUDIO) {
-                    initSeekBar();
+                    initSeekBar(mediaPlayer);
                 }
             });
-            mediaPlayer.prepareAsync();
             mediaPlayer.setOnErrorListener((mp, what, extra) -> {
                 ToastUtil.show(R.string.preview_source_error, ToastUtil.LENGTH_SHORT);
                 return false;
@@ -313,11 +312,14 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
                     previewViewModel.setIsPlaying(false);
                 }
             });
-        } catch (Exception ignored) {
+            mediaPlayer.prepareAsync();
+        } catch (Exception e) {
+            AtmobLog.e("PreviewActivity", "initMediaPlayer: ", e);
+            ToastUtil.show(R.string.preview_source_error, ToastUtil.LENGTH_SHORT);
         }
     }
 
-    private void initVideo() {
+    private void initVideo(MediaPlayer mediaPlayer) {
         int videoWidth = mediaPlayer.getVideoWidth();
         int screenWidth = SizeUtil.getScreenWidth();
         float scaleX = screenWidth / (videoWidth * 1f);
@@ -345,6 +347,14 @@ public class PreviewActivity extends BaseActivity<ActivityPreviewBinding> {
     }
 
     @Override
+    protected void onPause() {
+        super.onPause();
+        if (mediaPlayer != null && mediaPlayer.isPlaying()) {
+            toggleMediaPlayer();
+        }
+    }
+
+    @Override
     protected void onDestroy() {
         super.onDestroy();
         if (mediaPlayer != null) mediaPlayer.release();

+ 4 - 0
app/src/main/java/com/datarecovery/master/module/splash/SplashActivity.java

@@ -109,4 +109,8 @@ public class SplashActivity extends BaseActivity<ActivitySplashBinding> {
         }
         finishAfterTransition();
     }
+
+    @Override
+    public void onBackPressed() {
+    }
 }

+ 6 - 1
app/src/main/java/com/datarecovery/master/utils/FilesSearch.java

@@ -7,11 +7,11 @@ import android.net.Uri;
 import android.os.CancellationSignal;
 import android.os.PowerManager;
 import android.text.TextUtils;
+import android.util.Log;
 
 import androidx.annotation.NonNull;
 import androidx.databinding.BaseObservable;
 import androidx.databinding.Bindable;
-import androidx.documentfile.provider.DocumentFile;
 
 import com.datarecovery.master.BR;
 import com.datarecovery.master.utils.filedetect.FileScanHelper;
@@ -55,6 +55,11 @@ public class FilesSearch {
 
                                     @Override
                                     public boolean filterDirectory(XFile file) {
+                                        try {
+                                            Log.d("lzplzp", "filterDirectory: " + file.getPath());
+                                        } catch (Exception e) {
+                                            throw new RuntimeException(e);
+                                        }
                                         return false;
                                     }
                                 }, new XFileSearch.FileSearchCallback() {

+ 96 - 89
app/src/main/res/layout/activity_audio_recover.xml

@@ -14,94 +14,6 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
-        <androidx.appcompat.widget.Toolbar
-            android:id="@+id/tool_bar"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            app:layout_constraintTop_toTopOf="parent"
-            app:navigationIcon="@drawable/icon_back">
-
-            <TextView
-                style="@style/Tool_Bar_Title_Txt"
-                android:text="@string/audio_recover_title" />
-
-            <ImageView
-                imageDraw="@{audioRecoverViewModel.checkAll ? @drawable/icon_image_recover_checked : @drawable/icon_image_recover_uncheck}"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="right"
-                android:layout_marginEnd="@dimen/app_common_page_horizontal_padding"
-                android:background="?android:attr/selectableItemBackgroundBorderless"
-                android:onClick="@{()->audioRecoverViewModel.onCheckAllClick(!audioRecoverViewModel.checkAll)}"
-                tools:src="@drawable/icon_image_recover_uncheck" />
-
-        </androidx.appcompat.widget.Toolbar>
-
-        <View
-            android:id="@+id/v_filter"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            app:layout_constraintDimensionRatio="360:36"
-            app:layout_constraintTop_toBottomOf="@+id/tool_bar" />
-
-        <TextView
-            android:id="@+id/tv_date_filter"
-            drawableEnd="@{audioRecoverViewModel.isDateFilterArrowUp ? @drawable/icon_filter_arrow_up : @drawable/icon_filter_arrow_down}"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/audio_recover_date_filter"
-            android:textColor="@{audioRecoverViewModel.dataFilterCondition !=null ? @color/colorPrimary : @color/tab_un_select_text_color}"
-            android:textSize="14sp"
-            app:drawableEndCompat="@drawable/icon_filter_arrow_down"
-            app:layout_constraintBottom_toBottomOf="@+id/v_filter"
-            app:layout_constraintLeft_toLeftOf="@+id/v_filter"
-            app:layout_constraintRight_toLeftOf="@+id/v_line"
-            app:layout_constraintTop_toTopOf="@+id/v_filter" />
-
-        <View
-            android:id="@+id/v_date_filter"
-            android:layout_width="0dp"
-            android:layout_height="0dp"
-            android:onClick="@{()->audioRecoverViewModel.onDateFilterClick()}"
-            app:layout_constraintBottom_toBottomOf="@+id/v_filter"
-            app:layout_constraintEnd_toStartOf="@id/v_line"
-            app:layout_constraintStart_toStartOf="@id/v_filter"
-            app:layout_constraintTop_toTopOf="@+id/v_filter" />
-
-
-        <View
-            android:id="@+id/v_line"
-            android:layout_width="1dp"
-            android:layout_height="20dp"
-            android:background="#F5F5F5"
-            app:layout_constraintBottom_toBottomOf="@+id/v_filter"
-            app:layout_constraintLeft_toRightOf="@+id/tv_date_filter"
-            app:layout_constraintRight_toLeftOf="@+id/tv_size_sort"
-            app:layout_constraintTop_toTopOf="@id/v_filter" />
-
-        <TextView
-            android:id="@+id/tv_size_sort"
-            drawableEnd="@{audioRecoverViewModel.isSizeSortArrowUp ? @drawable/icon_filter_arrow_up : @drawable/icon_filter_arrow_down}"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/audio_recover_size_sort"
-            android:textColor="#666666"
-            android:textSize="14sp"
-            app:layout_constraintBottom_toBottomOf="@+id/v_filter"
-            app:layout_constraintLeft_toRightOf="@+id/v_line"
-            app:layout_constraintRight_toRightOf="@+id/v_filter"
-            app:layout_constraintTop_toTopOf="@+id/v_filter" />
-
-        <View
-            android:id="@+id/v_size_sort"
-            android:layout_width="0dp"
-            android:layout_height="0dp"
-            android:onClick="@{()->audioRecoverViewModel.onSizeSortClick(!audioRecoverViewModel.isSizeSortArrowUp)}"
-            app:layout_constraintBottom_toBottomOf="@+id/v_filter"
-            app:layout_constraintEnd_toEndOf="@+id/v_filter"
-            app:layout_constraintStart_toEndOf="@+id/v_line"
-            app:layout_constraintTop_toTopOf="@+id/v_filter" />
-
         <include
             android:id="@+id/layout_trial"
             layout="@layout/layout_trial"
@@ -196,13 +108,108 @@
             tools:background="@drawable/bg_common_btn"
             tools:text="立即导出" />
 
-
         <androidx.constraintlayout.widget.Group
             isGone="@{!audioRecoverViewModel.showTrialView}"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             app:constraint_referenced_ids="layout_trial,v_go_recover,iv_go_recover,tv_go_recover,iv_go_recover_right" />
 
+        <androidx.appcompat.widget.Toolbar
+            android:id="@+id/tool_bar"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/white"
+            app:layout_constraintTop_toTopOf="parent"
+            app:navigationIcon="@drawable/icon_back">
+
+            <TextView
+                style="@style/Tool_Bar_Title_Txt"
+                android:text="@string/audio_recover_title" />
+
+            <ImageView
+                imageDraw="@{audioRecoverViewModel.checkAll ? @drawable/icon_image_recover_checked : @drawable/icon_image_recover_uncheck}"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="right"
+                android:layout_marginEnd="@dimen/app_common_page_horizontal_padding"
+                android:background="?android:attr/selectableItemBackgroundBorderless"
+                android:onClick="@{()->audioRecoverViewModel.onCheckAllClick(!audioRecoverViewModel.checkAll)}"
+                tools:src="@drawable/icon_image_recover_uncheck" />
+
+        </androidx.appcompat.widget.Toolbar>
+
+        <View
+            android:id="@+id/v_filter"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:background="@color/white"
+            app:layout_constraintDimensionRatio="360:36"
+            app:layout_constraintTop_toBottomOf="@+id/tool_bar" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:background="@color/black70"
+            app:isGone="@{!audioRecoverViewModel.isDateFilterArrowUp}"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintTop_toBottomOf="@id/v_filter" />
+
+        <TextView
+            android:id="@+id/tv_date_filter"
+            drawableEnd="@{audioRecoverViewModel.isDateFilterArrowUp ? @drawable/icon_filter_arrow_up : @drawable/icon_filter_arrow_down}"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/audio_recover_date_filter"
+            android:textColor="@{audioRecoverViewModel.dataFilterCondition !=null ? @color/colorPrimary : @color/tab_un_select_text_color}"
+            android:textSize="14sp"
+            app:drawableEndCompat="@drawable/icon_filter_arrow_down"
+            app:layout_constraintBottom_toBottomOf="@+id/v_filter"
+            app:layout_constraintLeft_toLeftOf="@+id/v_filter"
+            app:layout_constraintRight_toLeftOf="@+id/v_line"
+            app:layout_constraintTop_toTopOf="@+id/v_filter" />
+
+        <View
+            android:id="@+id/v_date_filter"
+            android:layout_width="0dp"
+            android:layout_height="0dp"
+            android:onClick="@{()->audioRecoverViewModel.onDateFilterClick()}"
+            app:layout_constraintBottom_toBottomOf="@+id/v_filter"
+            app:layout_constraintEnd_toStartOf="@id/v_line"
+            app:layout_constraintStart_toStartOf="@id/v_filter"
+            app:layout_constraintTop_toTopOf="@+id/v_filter" />
+
+        <View
+            android:id="@+id/v_line"
+            android:layout_width="1dp"
+            android:layout_height="20dp"
+            android:background="#F5F5F5"
+            app:layout_constraintBottom_toBottomOf="@+id/v_filter"
+            app:layout_constraintLeft_toRightOf="@+id/tv_date_filter"
+            app:layout_constraintRight_toLeftOf="@+id/tv_size_sort"
+            app:layout_constraintTop_toTopOf="@id/v_filter" />
+
+        <TextView
+            android:id="@+id/tv_size_sort"
+            drawableEnd="@{audioRecoverViewModel.isSizeSortArrowUp ? @drawable/icon_filter_arrow_up : @drawable/icon_filter_arrow_down}"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/audio_recover_size_sort"
+            android:textColor="#666666"
+            android:textSize="14sp"
+            app:layout_constraintBottom_toBottomOf="@+id/v_filter"
+            app:layout_constraintLeft_toRightOf="@+id/v_line"
+            app:layout_constraintRight_toRightOf="@+id/v_filter"
+            app:layout_constraintTop_toTopOf="@+id/v_filter" />
+
+        <View
+            android:id="@+id/v_size_sort"
+            android:layout_width="0dp"
+            android:layout_height="0dp"
+            android:onClick="@{()->audioRecoverViewModel.onSizeSortClick(!audioRecoverViewModel.isSizeSortArrowUp)}"
+            app:layout_constraintBottom_toBottomOf="@+id/v_filter"
+            app:layout_constraintEnd_toEndOf="@+id/v_filter"
+            app:layout_constraintStart_toEndOf="@+id/v_line"
+            app:layout_constraintTop_toTopOf="@+id/v_filter" />
 
     </androidx.constraintlayout.widget.ConstraintLayout>
 </layout>

+ 7 - 13
app/src/main/res/layout/popup_audio_recover_filter.xml

@@ -1,16 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/ll_filter_container"
     android:layout_width="match_parent"
-    android:background="@color/black70"
-    android:layout_height="match_parent">
+    android:layout_height="wrap_content"
+    android:background="@drawable/bg_recover_filter"
+    android:orientation="vertical"
+    android:paddingVertical="10dp">
 
-    <LinearLayout
-        android:id="@+id/ll_filter_container"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@drawable/bg_recover_filter"
-        android:orientation="vertical"
-        android:paddingVertical="10dp">
-
-    </LinearLayout>
-</FrameLayout>
+</LinearLayout>