Bläddra i källkod

解决录音提醒弹窗问题

zk 2 år sedan
förälder
incheckning
56252d324b

+ 8 - 2
app/src/main/java/com/atmob/voiceai/data/repositories/MemberRepository.java

@@ -5,7 +5,6 @@ import android.os.Handler;
 
 
 import androidx.lifecycle.MutableLiveData;
 import androidx.lifecycle.MutableLiveData;
 
 
-import com.android.billingclient.api.AccountIdentifiers;
 import com.android.billingclient.api.BillingClient;
 import com.android.billingclient.api.BillingClient;
 import com.android.billingclient.api.Purchase;
 import com.android.billingclient.api.Purchase;
 import com.atmob.app.lib.handler.RxHttpHandler;
 import com.atmob.app.lib.handler.RxHttpHandler;
@@ -61,6 +60,12 @@ public class MemberRepository {
 
 
     public Single<Object> subscriptionResume() {
     public Single<Object> subscriptionResume() {
         return gpBillingClient.queryPurchase(BillingClient.ProductType.SUBS)
         return gpBillingClient.queryPurchase(BillingClient.ProductType.SUBS)
+                .map(list -> {
+                    if (list == null || list.isEmpty()) {
+                        throw new RxHttpHandler.ServerErrorException(-1, "Unsuccessful: Subscription not found");
+                    }
+                    return list;
+                })
                 .filter(purchases -> purchases != null && !purchases.isEmpty())
                 .filter(purchases -> purchases != null && !purchases.isEmpty())
                 .toSingle()
                 .toSingle()
                 .flatMap(purchases -> Observable.fromIterable(purchases)
                 .flatMap(purchases -> Observable.fromIterable(purchases)
@@ -70,7 +75,8 @@ public class MemberRepository {
                             String googlePurchaseToken = purchase.getPurchaseToken();
                             String googlePurchaseToken = purchase.getPurchaseToken();
                             return subscriptionResume(4, 1, googlePurchaseToken);
                             return subscriptionResume(4, 1, googlePurchaseToken);
                         }))
                         }))
-                .compose(RxJavaUtil.SingleSchedule.io2Main());
+                .compose(RxJavaUtil.SingleSchedule.io2Main())
+                .doOnSuccess(o -> refreshUserData());
     }
     }
 
 
 
 

+ 2 - 2
app/src/main/java/com/atmob/voiceai/dialog/RecordingInstructionsDialog.java

@@ -27,7 +27,7 @@ public class RecordingInstructionsDialog extends BaseDialog<DialogRecordingInstr
         binding.setOnCloseClick(v -> dismiss());
         binding.setOnCloseClick(v -> dismiss());
         binding.setKnowClick(v -> {
         binding.setKnowClick(v -> {
             if (onRecordingListener != null) {
             if (onRecordingListener != null) {
-                onRecordingListener.onKnowClick();
+                onRecordingListener.onKnowClick(isCheck);
             }
             }
             dismiss();
             dismiss();
         });
         });
@@ -46,6 +46,6 @@ public class RecordingInstructionsDialog extends BaseDialog<DialogRecordingInstr
     }
     }
 
 
     public interface OnRecordingListener {
     public interface OnRecordingListener {
-        void onKnowClick();
+        void onKnowClick(boolean isCheck);
     }
     }
 }
 }

+ 2 - 4
app/src/main/java/com/atmob/voiceai/module/clonevoice/CloneVoiceFragment.java

@@ -70,9 +70,7 @@ public class CloneVoiceFragment extends BaseFragment<FragmentCloneVoiceBinding>
     public void showRecordingInstructionsDialog() {
     public void showRecordingInstructionsDialog() {
         if (recordingInstructionsDialog == null) {
         if (recordingInstructionsDialog == null) {
             recordingInstructionsDialog = new RecordingInstructionsDialog(requireContext());
             recordingInstructionsDialog = new RecordingInstructionsDialog(requireContext());
-            recordingInstructionsDialog.setOnRecordingListener(() -> {
-                cloneVoiceViewModel.onDialogKnowClick();
-            });
+            recordingInstructionsDialog.setOnRecordingListener(isCheck -> cloneVoiceViewModel.onDialogKnowClick(isCheck));
         }
         }
         recordingInstructionsDialog.show();
         recordingInstructionsDialog.show();
     }
     }
@@ -238,7 +236,7 @@ public class CloneVoiceFragment extends BaseFragment<FragmentCloneVoiceBinding>
     private void requestAudioPermission() {
     private void requestAudioPermission() {
         new ActivityForResultUtil<String, Boolean>().startActivityForResult(requireActivity(), new ActivityResultContracts.RequestPermission(), CloneVoiceViewModel.PERMISSION_AUDIO, result -> {
         new ActivityForResultUtil<String, Boolean>().startActivityForResult(requireActivity(), new ActivityResultContracts.RequestPermission(), CloneVoiceViewModel.PERMISSION_AUDIO, result -> {
             if (result) {
             if (result) {
-                cloneVoiceViewModel.startRecordAudio();
+                cloneVoiceViewModel.onPermissionNext();
             }
             }
         });
         });
     }
     }

+ 19 - 6
app/src/main/java/com/atmob/voiceai/module/clonevoice/CloneVoiceViewModel.java

@@ -25,6 +25,7 @@ import com.atmob.voiceai.module.main.MainActivity;
 import com.atmob.voiceai.module.setting.SettingActivity;
 import com.atmob.voiceai.module.setting.SettingActivity;
 import com.atmob.voiceai.module.subscription.SubscriptionPageActivity;
 import com.atmob.voiceai.module.subscription.SubscriptionPageActivity;
 import com.atmob.voiceai.module.voiceai.VoiceAIFragment;
 import com.atmob.voiceai.module.voiceai.VoiceAIFragment;
+import com.atmob.voiceai.utils.BoxingUtil;
 import com.atmob.voiceai.utils.DateUtil;
 import com.atmob.voiceai.utils.DateUtil;
 import com.atmob.voiceai.utils.FileUtils;
 import com.atmob.voiceai.utils.FileUtils;
 import com.atmob.voiceai.utils.PermissionUtil;
 import com.atmob.voiceai.utils.PermissionUtil;
@@ -92,9 +93,9 @@ public class CloneVoiceViewModel extends BaseViewModel {
 
 
     private int lastColor;
     private int lastColor;
 
 
-    private int color_0_20 = ContextUtil.getContext().getColor(R.color.voice_record_0_20);
-    private int color_20_30 = ContextUtil.getContext().getColor(R.color.voice_record_20_30);
-    private int color_exceed_30 = ContextUtil.getContext().getColor(R.color.voice_record_exceed_30);
+    private int color_0_20 = ContextUtil.getContext().getResources().getColor(R.color.voice_record_0_20);
+    private int color_20_30 = ContextUtil.getContext().getResources().getColor(R.color.voice_record_20_30);
+    private int color_exceed_30 = ContextUtil.getContext().getResources().getColor(R.color.voice_record_exceed_30);
     private String record_can_not = ContextUtil.getContext().getString(R.string.record_can_not);
     private String record_can_not = ContextUtil.getContext().getString(R.string.record_can_not);
     private String record_maybe_best = ContextUtil.getContext().getString(R.string.record_maybe_best);
     private String record_maybe_best = ContextUtil.getContext().getString(R.string.record_maybe_best);
     private String record_best = ContextUtil.getContext().getString(R.string.record_best);
     private String record_best = ContextUtil.getContext().getString(R.string.record_best);
@@ -358,6 +359,10 @@ public class CloneVoiceViewModel extends BaseViewModel {
         if (value == null) {
         if (value == null) {
             return;
             return;
         }
         }
+        if (!BoxingUtil.boxing(memberRepository.getIsMember().getValue())) {
+            SubscriptionPageActivity.start(ActivityUtil.getTopActivity());
+            return;
+        }
         File file = FileUtils.uriToFileApiQ(value, ContextUtil.getContext());
         File file = FileUtils.uriToFileApiQ(value, ContextUtil.getContext());
         if (state == CloneState.UPLOAD_CHOICE_RECORDING) {
         if (state == CloneState.UPLOAD_CHOICE_RECORDING) {
             requestCloneVoice(RECORD_UPLOAD, file);
             requestCloneVoice(RECORD_UPLOAD, file);
@@ -388,7 +393,13 @@ public class CloneVoiceViewModel extends BaseViewModel {
     public void onRecordClick() {
     public void onRecordClick() {
         if (!PermissionUtil.hasPermission(PERMISSION_AUDIO)) {
         if (!PermissionUtil.hasPermission(PERMISSION_AUDIO)) {
             requestAudioPermission.call();
             requestAudioPermission.call();
-        } else if (KVUtils.getDefault().getBoolean(RECORD_DIALOG_SHOW, true)) {
+            return;
+        }
+        onPermissionNext();
+    }
+
+    public void onPermissionNext() {
+        if (KVUtils.getDefault().getBoolean(RECORD_DIALOG_SHOW, true)) {
             showRecordDialogEvent.call();
             showRecordDialogEvent.call();
         } else {
         } else {
             startRecordAudio();
             startRecordAudio();
@@ -419,8 +430,10 @@ public class CloneVoiceViewModel extends BaseViewModel {
         countDownTimer.start();
         countDownTimer.start();
     }
     }
 
 
-    public void onDialogKnowClick() {
-        KVUtils.getDefault().putBoolean(RECORD_DIALOG_SHOW, false);
+    public void onDialogKnowClick(boolean isCheck) {
+        if (isCheck) {
+            KVUtils.getDefault().putBoolean(RECORD_DIALOG_SHOW, false);
+        }
         startRecordAudio();
         startRecordAudio();
     }
     }
 
 

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 7 - 3
app/src/main/res/values/strings.xml