Browse Source

增加试用扫描结束弹窗

zk 1 year ago
parent
commit
29563bfb84

+ 17 - 0
app/src/main/java/com/datarecovery/master/data/consts/EventId.java

@@ -44,6 +44,7 @@ public interface EventId {
     String hf1000608 = "hf1000608"; // 服务详情-挽留弹窗-立即恢复按钮-点击 id:微信消息恢复hf11011,微信好友恢复hf11009,图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007,图片清除hf11013
     String hf1000608 = "hf1000608"; // 服务详情-挽留弹窗-立即恢复按钮-点击 id:微信消息恢复hf11011,微信好友恢复hf11009,图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007,图片清除hf11013
     String hf1000801 = "hf1000801"; // 案例-案例详情
     String hf1000801 = "hf1000801"; // 案例-案例详情
     String hf1000901 = "hf1000901"; // 订单-点击
     String hf1000901 = "hf1000901"; // 订单-点击
+    String hf1001129 = "hf1001129"; //订单-点击复制教程
     String hf1001101 = "hf1001101"; // 我的-banner图-点击
     String hf1001101 = "hf1001101"; // 我的-banner图-点击
     String hf1001102 = "hf1001102"; // 我的-关于我们-点击
     String hf1001102 = "hf1001102"; // 我的-关于我们-点击
     String hf1001103 = "hf1001103"; // 我的-关于我们-用户协议
     String hf1001103 = "hf1001103"; // 我的-关于我们-用户协议
@@ -77,4 +78,20 @@ public interface EventId {
     String hf1000528 = "hf1000528"; //图片清除-进入服务详情页-停留时长
     String hf1000528 = "hf1000528"; //图片清除-进入服务详情页-停留时长
     String hf1000529 = "hf1000529"; //图片清除-使用服务-停留时长
     String hf1000529 = "hf1000529"; //图片清除-使用服务-停留时长
 
 
+    //试用
+
+    String hf1001116 = "hf1001116";//首页-试用状态-首次点击的功能  id:微信消息恢复hf11011,微信好友恢复hf11009,图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007,图片清除hf11013
+    String hf1001117 = "hf1001117";//试用-提示框  id:图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007
+    String hf1001118 = "hf1001118";//试用-文字提示框  id:图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007
+    String hf1001119 = "hf1001119";//试用-下滑弹出框  id:图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007
+    String hf1001120 = "hf1001120";//试用-导出弹窗  id:图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007
+    String hf1001121 = "hf1001121";//试用-扫描弹窗-去恢复-点击  id:图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007
+    String hf1001122 = "hf1001122";//试用-扫描弹窗-取消-点击  id:图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007
+    String hf1001123 = "hf1001123";//试用-导出弹窗-去恢复-点击  id:图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007
+    String hf1001124 = "hf1001124";//试用-导出弹窗-取消-点击  id:图片恢复hf11001,文件恢复hf11003,视频恢复hf11005,音频恢复hf11007
+    String hf1001125 = "hf1001125";//视频恢复-试看结束弹窗-去恢复-点击
+    String hf1001126 = "hf1001126";//视频恢复-试看结束弹窗-取消-点击
+    String hf1001127 = "hf1001127";//音频恢复-试听结束弹窗-去恢复-点击
+    String hf1001128 = "hf1001128";//音频恢复-试听结束弹窗-取消-点击
+
 }
 }

+ 10 - 0
app/src/main/java/com/datarecovery/master/dialog/CommonSureDialog.java

@@ -39,6 +39,11 @@ public class CommonSureDialog extends BaseDialog<DialogCommonSureBinding> {
         return this;
         return this;
     }
     }
 
 
+    public CommonSureDialog setDialogTitle(String tips) {
+        binding.tvDialogTitle.setText(tips);
+        return this;
+    }
+
     public CommonSureDialog setTitleGravity(int gravity) {
     public CommonSureDialog setTitleGravity(int gravity) {
         binding.tvDialogTitle.setGravity(gravity);
         binding.tvDialogTitle.setGravity(gravity);
         return this;
         return this;
@@ -49,6 +54,11 @@ public class CommonSureDialog extends BaseDialog<DialogCommonSureBinding> {
         return this;
         return this;
     }
     }
 
 
+    public CommonSureDialog setDialogContent(String content) {
+        binding.tvContent.setText(content);
+        return this;
+    }
+
     public CommonSureDialog setContentGravity(int gravity) {
     public CommonSureDialog setContentGravity(int gravity) {
         binding.tvContent.setGravity(gravity);
         binding.tvContent.setGravity(gravity);
         return this;
         return this;

+ 14 - 0
app/src/main/java/com/datarecovery/master/module/audiorecover/AudioRecoverActivity.java

@@ -52,6 +52,7 @@ public class AudioRecoverActivity extends BaseActivity<ActivityAudioRecoverBindi
 
 
     private int popupHeight;
     private int popupHeight;
     private CommonSureDialog showTrialExportFailDialog;
     private CommonSureDialog showTrialExportFailDialog;
+    private CommonSureDialog showTrialFinishDialog;
 
 
 
 
     public static void start(Context context, boolean isTrial) {
     public static void start(Context context, boolean isTrial) {
@@ -129,6 +130,7 @@ public class AudioRecoverActivity extends BaseActivity<ActivityAudioRecoverBindi
 
 
     @SuppressLint("NotifyDataSetChanged")
     @SuppressLint("NotifyDataSetChanged")
     private void initObserver() {
     private void initObserver() {
+        audioRecoverViewModel.getShowTrialFinishDialog().observe(this, o -> showTrialFinishDialog());
         audioRecoverViewModel.getShowTrialExportFailDialog().observe(this, o -> showTrialExportFailDialog());
         audioRecoverViewModel.getShowTrialExportFailDialog().observe(this, o -> showTrialExportFailDialog());
         audioRecoverViewModel.getShowLoadingEvent().observe(this, this::showLoadingDialog);
         audioRecoverViewModel.getShowLoadingEvent().observe(this, this::showLoadingDialog);
         audioRecoverViewModel.getNotifyAudioData().observe(this, o -> audioItemAdapter.notifyDataSetChanged());
         audioRecoverViewModel.getNotifyAudioData().observe(this, o -> audioItemAdapter.notifyDataSetChanged());
@@ -137,6 +139,18 @@ public class AudioRecoverActivity extends BaseActivity<ActivityAudioRecoverBindi
         audioRecoverViewModel.getShowFilterPopup().observe(this, o -> showFilterPopup());
         audioRecoverViewModel.getShowFilterPopup().observe(this, o -> showFilterPopup());
     }
     }
 
 
+    private void showTrialFinishDialog() {
+        if (showTrialFinishDialog == null) {
+            showTrialFinishDialog = new CommonSureDialog(this);
+            showTrialFinishDialog.setDialogTitle(getString(R.string.scanning_progress, 7))
+                    .setDialogContent(getString(R.string.trial_scanning_finish_content, 7)).setSureText(R.string.dialog_trial_recover);
+            showTrialFinishDialog.setOnDialogClickListener(() -> audioRecoverViewModel.onTrialRecoverClick());
+        }
+        if (!showTrialFinishDialog.isShowing()) {
+            showTrialFinishDialog.show();
+        }
+    }
+
     private void showTrialExportFailDialog() {
     private void showTrialExportFailDialog() {
         if (showTrialExportFailDialog == null) {
         if (showTrialExportFailDialog == null) {
             showTrialExportFailDialog = new CommonSureDialog(this);
             showTrialExportFailDialog = new CommonSureDialog(this);

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

@@ -50,6 +50,7 @@ public class AudioRecoverViewModel extends BaseViewModel {
     private final MutableLiveData<List<FilesSearch.DocumentFile>> detectedVideoList = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<List<FilesSearch.DocumentFile>> detectedVideoList = new MutableLiveData<>(new ArrayList<>());
     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<?> showTrialFinishDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showTrialExportFailDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showTrialExportFailDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showFilterPopup = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showFilterPopup = new SingleLiveEvent<>();
     private final SingleLiveEvent<Boolean> showScanDialogEvent = new SingleLiveEvent<>();
     private final SingleLiveEvent<Boolean> showScanDialogEvent = new SingleLiveEvent<>();
@@ -91,6 +92,10 @@ public class AudioRecoverViewModel extends BaseViewModel {
         EventHelper.timeEvent(EventId.hf1000527);
         EventHelper.timeEvent(EventId.hf1000527);
     }
     }
 
 
+    public LiveData<?> getShowTrialFinishDialog() {
+        return showTrialFinishDialog;
+    }
+
     public LiveData<?> getShowTrialExportFailDialog() {
     public LiveData<?> getShowTrialExportFailDialog() {
         return showTrialExportFailDialog;
         return showTrialExportFailDialog;
     }
     }
@@ -200,6 +205,9 @@ public class AudioRecoverViewModel extends BaseViewModel {
                     @Override
                     @Override
                     public void onComplete() {
                     public void onComplete() {
                         setFreeExport();
                         setFreeExport();
+                        if (isTrial) {
+                            showTrialFinishDialog.call();
+                        }
                         showScanDialogEvent.setValue(false);
                         showScanDialogEvent.setValue(false);
                     }
                     }
                 });
                 });

+ 14 - 0
app/src/main/java/com/datarecovery/master/module/filerecover/FileRecoverActivity.java

@@ -42,6 +42,7 @@ public class FileRecoverActivity extends BaseActivity<ActivityFileRecoverBinding
     private ScanFileDialog scanProgressDialog;
     private ScanFileDialog scanProgressDialog;
     private ViewPager2.OnPageChangeCallback onPageChangeCallback;
     private ViewPager2.OnPageChangeCallback onPageChangeCallback;
     private CommonSureDialog showTrialExportFailDialog;
     private CommonSureDialog showTrialExportFailDialog;
+    private CommonSureDialog showTrialFinishDialog;
 
 
     public static void start(Context context, boolean isTrial) {
     public static void start(Context context, boolean isTrial) {
         Intent intent = new Intent(context, FileRecoverActivity.class);
         Intent intent = new Intent(context, FileRecoverActivity.class);
@@ -83,6 +84,7 @@ public class FileRecoverActivity extends BaseActivity<ActivityFileRecoverBinding
     }
     }
 
 
     private void initObserver() {
     private void initObserver() {
+        fileRecoverViewModel.getShowTrialFinishDialog().observe(this, o -> showTrialFinishDialog());
         fileRecoverViewModel.getShowTrialExportFailDialog().observe(this, o -> showTrialExportFailDialog());
         fileRecoverViewModel.getShowTrialExportFailDialog().observe(this, o -> showTrialExportFailDialog());
         fileRecoverViewModel.getShowLoadingEvent().observe(this, this::showLoadingDialog);
         fileRecoverViewModel.getShowLoadingEvent().observe(this, this::showLoadingDialog);
         fileRecoverViewModel.getShowScanDialogEvent().observe(this, this::showScanProgressDialog);
         fileRecoverViewModel.getShowScanDialogEvent().observe(this, this::showScanProgressDialog);
@@ -95,6 +97,18 @@ public class FileRecoverActivity extends BaseActivity<ActivityFileRecoverBinding
         initTabLayout();
         initTabLayout();
     }
     }
 
 
+    private void showTrialFinishDialog() {
+        if (showTrialFinishDialog == null) {
+            showTrialFinishDialog = new CommonSureDialog(this);
+            showTrialFinishDialog.setDialogTitle(getString(R.string.scanning_progress, 10))
+                    .setDialogContent(getString(R.string.trial_scanning_finish_content, 10)).setSureText(R.string.dialog_trial_recover);
+            showTrialFinishDialog.setOnDialogClickListener(() -> fileRecoverViewModel.onTrialRecoverClick());
+        }
+        if (!showTrialFinishDialog.isShowing()) {
+            showTrialFinishDialog.show();
+        }
+    }
+
     private void showTrialExportFailDialog() {
     private void showTrialExportFailDialog() {
         if (showTrialExportFailDialog == null) {
         if (showTrialExportFailDialog == null) {
             showTrialExportFailDialog = new CommonSureDialog(this);
             showTrialExportFailDialog = new CommonSureDialog(this);

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

@@ -57,6 +57,7 @@ public class FileRecoverViewModel extends BaseViewModel {
     private final MutableLiveData<Boolean> showTrialView = new MutableLiveData<>();
     private final MutableLiveData<Boolean> showTrialView = new MutableLiveData<>();
     private final MutableLiveData<String> detectedLastFileName = new MutableLiveData<>();
     private final MutableLiveData<String> detectedLastFileName = new MutableLiveData<>();
     private final MutableLiveData<Integer> checkPosition = new MutableLiveData<>();
     private final MutableLiveData<Integer> checkPosition = new MutableLiveData<>();
+    private final SingleLiveEvent<?> showTrialFinishDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showTrialExportFailDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showTrialExportFailDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<Boolean> showLoadingEvent = new SingleLiveEvent<>();
     private final SingleLiveEvent<Boolean> showLoadingEvent = new SingleLiveEvent<>();
     private final SingleLiveEvent<Boolean> showScanDialogEvent = new SingleLiveEvent<>();
     private final SingleLiveEvent<Boolean> showScanDialogEvent = new SingleLiveEvent<>();
@@ -81,6 +82,10 @@ public class FileRecoverViewModel extends BaseViewModel {
         EventHelper.timeEvent(EventId.hf1000523);
         EventHelper.timeEvent(EventId.hf1000523);
     }
     }
 
 
+    public LiveData<?> getShowTrialFinishDialog() {
+        return showTrialFinishDialog;
+    }
+
     public LiveData<?> getShowTrialExportFailDialog() {
     public LiveData<?> getShowTrialExportFailDialog() {
         return showTrialExportFailDialog;
         return showTrialExportFailDialog;
     }
     }
@@ -203,6 +208,7 @@ public class FileRecoverViewModel extends BaseViewModel {
                     @Override
                     @Override
                     public void onComplete() {
                     public void onComplete() {
                         setFreeExport();
                         setFreeExport();
+                        if (isTrial) showTrialFinishDialog.call();
                         showScanDialogEvent.setValue(false);
                         showScanDialogEvent.setValue(false);
                     }
                     }
                 });
                 });

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

@@ -102,10 +102,17 @@ public class HomePageViewModel extends BaseViewModel {
     }
     }
 
 
     public void reportFirstClickFunction(@MemberType String type) {
     public void reportFirstClickFunction(@MemberType String type) {
-        if (ReportUtil.isRecordOneEvent(EventId.hf200008)) {
-            return;
+        if (ConfigRepository.isIsOpenTrialMembership()) {
+            if (ReportUtil.isRecordOneEvent(EventId.hf1001116)) {
+                return;
+            }
+            EventHelper.report(EventId.hf1001116, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(type)));
+        } else {
+            if (ReportUtil.isRecordOneEvent(EventId.hf200008)) {
+                return;
+            }
+            EventHelper.report(EventId.hf200008, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(type)));
         }
         }
-        EventHelper.report(EventId.hf200008, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(type)));
     }
     }
 
 
 
 
@@ -132,7 +139,6 @@ public class HomePageViewModel extends BaseViewModel {
 
 
     public interface NextStepCallback {
     public interface NextStepCallback {
         void onNextStep(boolean isTrial);
         void onNextStep(boolean isTrial);
-
     }
     }
 
 
 
 

+ 14 - 0
app/src/main/java/com/datarecovery/master/module/imgrecover/ImageRecoverActivity.java

@@ -65,6 +65,7 @@ public class ImageRecoverActivity extends BaseActivity<ActivityImageRecoverBindi
     private CommonSureDialog clearDialog;
     private CommonSureDialog clearDialog;
 
 
     private CommonSureDialog showTrialExportFailDialog;
     private CommonSureDialog showTrialExportFailDialog;
+    private CommonSureDialog showTrialFinishDialog;
     private CommonLoadingDialog loadingDialog;
     private CommonLoadingDialog loadingDialog;
     private ScanFileDialog scanFileDialog;
     private ScanFileDialog scanFileDialog;
     private ImageItemAdapter photoAdapter;
     private ImageItemAdapter photoAdapter;
@@ -290,6 +291,7 @@ public class ImageRecoverActivity extends BaseActivity<ActivityImageRecoverBindi
 
 
     @SuppressLint("NotifyDataSetChanged")
     @SuppressLint("NotifyDataSetChanged")
     private void initObserver() {
     private void initObserver() {
+        imageRecoverViewModel.getShowTrialFinishDialog().observe(this, o -> showTrialFinishDialog());
         imageRecoverViewModel.getShowTrialExportFailDialog().observe(this, o -> showTrialExportFailDialog());
         imageRecoverViewModel.getShowTrialExportFailDialog().observe(this, o -> showTrialExportFailDialog());
         imageRecoverViewModel.getDeleteUriListSdk11().observe(this, list -> {
         imageRecoverViewModel.getDeleteUriListSdk11().observe(this, list -> {
             if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
             if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
@@ -328,6 +330,18 @@ public class ImageRecoverActivity extends BaseActivity<ActivityImageRecoverBindi
         }
         }
     }
     }
 
 
+    private void showTrialFinishDialog() {
+        if (showTrialFinishDialog == null) {
+            showTrialFinishDialog = new CommonSureDialog(this);
+            showTrialFinishDialog.setDialogTitle(getString(R.string.scanning_progress, 13))
+                    .setDialogContent(getString(R.string.trial_scanning_finish_content, 13)).setSureText(R.string.dialog_trial_recover);
+            showTrialFinishDialog.setOnDialogClickListener(() -> imageRecoverViewModel.onTrialRecoverClick());
+        }
+        if (!showTrialFinishDialog.isShowing()) {
+            showTrialFinishDialog.show();
+        }
+    }
+
     private void showClearDialog() {
     private void showClearDialog() {
         if (clearDialog == null) {
         if (clearDialog == null) {
             clearDialog = new CommonSureDialog(this);
             clearDialog = new CommonSureDialog(this);

+ 8 - 0
app/src/main/java/com/datarecovery/master/module/imgrecover/ImageRecoverViewModel.java

@@ -65,6 +65,7 @@ public class ImageRecoverViewModel extends BaseViewModel {
     private final MutableLiveData<List<ImageDeepDetector.ImageFile>> detectedOtherImg = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<List<ImageDeepDetector.ImageFile>> detectedOtherImg = new MutableLiveData<>(new ArrayList<>());
 
 
     private final SingleLiveEvent<List<Uri>> deleteUriListSdk11 = new SingleLiveEvent<>();
     private final SingleLiveEvent<List<Uri>> deleteUriListSdk11 = new SingleLiveEvent<>();
+    private final SingleLiveEvent<?> showTrialFinishDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showTrialExportFailDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showTrialExportFailDialog = new SingleLiveEvent<>();
     private final MutableLiveData<Boolean> showTrialView = new MutableLiveData<>();
     private final MutableLiveData<Boolean> showTrialView = new MutableLiveData<>();
     private final DeviceFuncRepository deviceFuncRepository;
     private final DeviceFuncRepository deviceFuncRepository;
@@ -103,6 +104,10 @@ public class ImageRecoverViewModel extends BaseViewModel {
         initLiveData();
         initLiveData();
     }
     }
 
 
+    public LiveData<?> getShowTrialFinishDialog() {
+        return showTrialFinishDialog;
+    }
+
     public LiveData<?> getShowTrialExportFailDialog() {
     public LiveData<?> getShowTrialExportFailDialog() {
         return showTrialExportFailDialog;
         return showTrialExportFailDialog;
     }
     }
@@ -300,6 +305,9 @@ public class ImageRecoverViewModel extends BaseViewModel {
                     @Override
                     @Override
                     public void onComplete() {
                     public void onComplete() {
                         setFreeExport();
                         setFreeExport();
+                        if (isTrial) {
+                            showTrialFinishDialog.call();
+                        }
                         showScanDialogEvent.setValue(false);
                         showScanDialogEvent.setValue(false);
                     }
                     }
                 });
                 });

+ 3 - 0
app/src/main/java/com/datarecovery/master/module/order/OrderItemAdapter.java

@@ -11,7 +11,9 @@ import androidx.recyclerview.widget.RecyclerView;
 
 
 import com.datarecovery.master.R;
 import com.datarecovery.master.R;
 import com.datarecovery.master.data.api.bean.OrderBean;
 import com.datarecovery.master.data.api.bean.OrderBean;
+import com.datarecovery.master.data.consts.EventId;
 import com.datarecovery.master.databinding.ItemOrderBinding;
 import com.datarecovery.master.databinding.ItemOrderBinding;
+import com.datarecovery.master.handler.EventHelper;
 import com.datarecovery.master.utils.ClipboardUtil;
 import com.datarecovery.master.utils.ClipboardUtil;
 import com.datarecovery.master.utils.ToastUtil;
 import com.datarecovery.master.utils.ToastUtil;
 
 
@@ -96,6 +98,7 @@ public class OrderItemAdapter extends RecyclerView.Adapter<OrderItemAdapter.View
                 OrderBean orderBean = binding.getOrderBean();
                 OrderBean orderBean = binding.getOrderBean();
                 ClipboardUtil.copy(orderBean.getTutorialLink());
                 ClipboardUtil.copy(orderBean.getTutorialLink());
                 ToastUtil.show(R.string.copy_success, ToastUtil.LENGTH_SHORT);
                 ToastUtil.show(R.string.copy_success, ToastUtil.LENGTH_SHORT);
+                EventHelper.report(EventId.hf1001129);
             });
             });
             binding.tvAuthCodeCopy.setOnClickListener(v -> {
             binding.tvAuthCodeCopy.setOnClickListener(v -> {
                 OrderBean orderBean = binding.getOrderBean();
                 OrderBean orderBean = binding.getOrderBean();

+ 14 - 0
app/src/main/java/com/datarecovery/master/module/videorecover/VideoRecoverActivity.java

@@ -38,6 +38,7 @@ public class VideoRecoverActivity extends BaseActivity<ActivityVideoRecoverBindi
     private ScanFileDialog scanFileDialog;
     private ScanFileDialog scanFileDialog;
     private VideoItemAdapter videoItemAdapter;
     private VideoItemAdapter videoItemAdapter;
     private CommonSureDialog showTrialExportFailDialog;
     private CommonSureDialog showTrialExportFailDialog;
+    private CommonSureDialog showTrialFinishDialog;
 
 
 
 
     public static void start(Context context, boolean isTrial) {
     public static void start(Context context, boolean isTrial) {
@@ -80,6 +81,7 @@ public class VideoRecoverActivity extends BaseActivity<ActivityVideoRecoverBindi
     }
     }
 
 
     private void initObserver() {
     private void initObserver() {
+        videoRecoverViewModel.getShowTrialFinishDialog().observe(this, o -> showTrialFinishDialog());
         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));
@@ -93,6 +95,18 @@ public class VideoRecoverActivity extends BaseActivity<ActivityVideoRecoverBindi
         initRecycleView();
         initRecycleView();
     }
     }
 
 
+    private void showTrialFinishDialog() {
+        if (showTrialFinishDialog == null) {
+            showTrialFinishDialog = new CommonSureDialog(this);
+            showTrialFinishDialog.setDialogTitle(getString(R.string.scanning_progress, 8))
+                    .setDialogContent(getString(R.string.trial_scanning_finish_content, 8)).setSureText(R.string.dialog_trial_recover);
+            showTrialFinishDialog.setOnDialogClickListener(() -> videoRecoverViewModel.onTrialRecoverClick());
+        }
+        if (!showTrialFinishDialog.isShowing()) {
+            showTrialFinishDialog.show();
+        }
+    }
+
     private void showTrialExportFailDialog() {
     private void showTrialExportFailDialog() {
         if (showTrialExportFailDialog == null) {
         if (showTrialExportFailDialog == null) {
             showTrialExportFailDialog = new CommonSureDialog(this);
             showTrialExportFailDialog = new CommonSureDialog(this);

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

@@ -51,6 +51,7 @@ public class VideoRecoverViewModel extends BaseViewModel {
     private final MutableLiveData<List<FilesSearch.DocumentFile>> detectedVideoList = new MutableLiveData<>(new ArrayList<>());
     private final MutableLiveData<List<FilesSearch.DocumentFile>> detectedVideoList = new MutableLiveData<>(new ArrayList<>());
     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<?> showTrialFinishDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showTrialExportFailDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> showTrialExportFailDialog = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> scrollTop = new SingleLiveEvent<>();
     private final SingleLiveEvent<?> scrollTop = new SingleLiveEvent<>();
     private final SingleLiveEvent<Boolean> showScanDialogEvent = new SingleLiveEvent<>();
     private final SingleLiveEvent<Boolean> showScanDialogEvent = new SingleLiveEvent<>();
@@ -79,6 +80,10 @@ public class VideoRecoverViewModel extends BaseViewModel {
         EventHelper.timeEvent(EventId.hf1000525);
         EventHelper.timeEvent(EventId.hf1000525);
     }
     }
 
 
+    public LiveData<?> getShowTrialFinishDialog() {
+        return showTrialFinishDialog;
+    }
+
     public LiveData<String> getDetectedLastFileName() {
     public LiveData<String> getDetectedLastFileName() {
         return detectedLastFileName;
         return detectedLastFileName;
     }
     }
@@ -175,6 +180,9 @@ public class VideoRecoverViewModel extends BaseViewModel {
                     @Override
                     @Override
                     public void onComplete() {
                     public void onComplete() {
                         setFreeExport();
                         setFreeExport();
+                        if (isTrial) {
+                            showTrialFinishDialog.call();
+                        }
                         showScanDialogEvent.setValue(false);
                         showScanDialogEvent.setValue(false);
 
 
                     }
                     }

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -199,4 +199,6 @@
     <string name="trial_export_video_fail_content">您目前只可以试看该视频的50%,如需观看该视频的全部,请点击「去恢复」。</string>
     <string name="trial_export_video_fail_content">您目前只可以试看该视频的50%,如需观看该视频的全部,请点击「去恢复」。</string>
     <string name="trial_export_audio_fail_content">您目前只可以试听该音频的50%,如需试听该音频的全部,请点击「去恢复」。</string>
     <string name="trial_export_audio_fail_content">您目前只可以试听该音频的50%,如需试听该音频的全部,请点击「去恢复」。</string>
     <string name="mine_appeal">申诉/退款</string>
     <string name="mine_appeal">申诉/退款</string>
+    <string name="scanning_progress">已扫描%d%%</string>
+    <string name="trial_scanning_finish_content">目前只扫描到%d%%,您如需要开放「深层扫描」查看全部数据,请点击去「去恢复」按钮。</string>
 </resources>
 </resources>