修改SOS拨号策略
authorTrillGates <williamtrillgates@gmail.com>
Tue, 26 Oct 2021 09:24:13 +0000 (17:24 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Tue, 26 Oct 2021 09:24:13 +0000 (17:24 +0800)
.idea/gradle.xml
app/src/main/java/com/ic/sos/MainActivity.java
app/src/main/java/com/ic/sos/SOSPresenter.java

index 13e2937..b617266 100644 (file)
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
+  <component name="GradleMigrationSettings" migrationVersion="1" />
   <component name="GradleSettings">
     <option name="linkedExternalProjectsSettings">
       <GradleProjectSettings>
index a798e6e..7070d2b 100644 (file)
@@ -1,13 +1,10 @@
 package com.ic.sos;
 
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.lifecycle.Observer;
-
-import android.content.Intent;
 import android.os.Bundle;
-import android.support.v4.app.INotificationSideChannel;
 import android.view.View;
 
+import androidx.appcompat.app.AppCompatActivity;
+
 /**
  * SOS拨号策略:
  * 影响因素有:
index 496756f..53c44af 100644 (file)
@@ -116,12 +116,16 @@ public class SOSPresenter {
     public void checkNextCall() {
         boolean doCallNext;
         //是否进行下一个拨号,结合策略和是否有接听
-
         //已经接听了
         //stop,continue,loop
         if ("continue".equals(callWay)) {
+            //如果拨通了,就不再往下轮询了
             //播完此轮就好
-            doCallNext = currentCallIndex != phoneNumList.size() - 1;
+            boolean isLastOne = currentCallIndex == phoneNumList.size() - 1;
+            //是否有拨通hasRemoteAnswer
+            boolean isLastLoop = currentLoopGroupTime == loopTime;
+            //有接听的,拨完这轮,没接听的,一直拨到最后一轮
+            doCallNext = (hasRemoteAnswer && !isLastOne) || !isLastLoop;
         } else if ("loop".equals(callWay)) {
             //连续拨打完目标轮询组的次数
             doCallNext = currentLoopGroupTime != loopTime;
@@ -144,7 +148,7 @@ public class SOSPresenter {
         ICLogger.d("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
         //组的叠加会在拨号位置到了列表尾部时增加
         if (doCallNext) {
-            handler.postDelayed(this::doSosCall, 10000);
+            handler.postDelayed(this::doSosCall, 1000);
         } else {
             ICLogger.d("结束界面...");
             stateValue.postValue(SOSState.FINISH);