1、拨打紧急电话延后5秒,以便可以提前发送AP10报警定位信息,防止后报警数据上报延时过久。
authorsnickersun <snickersun@qq.com>
Mon, 10 Feb 2020 15:46:54 +0000 (23:46 +0800)
committersnickersun <snickersun@qq.com>
Mon, 10 Feb 2020 15:46:54 +0000 (23:46 +0800)
2、添加 低电关机上报AP10报警。

app/src/main/java/com/enqualcomm/support/CoreService.java
app/src/main/java/com/enqualcomm/support/service/Deliver.java
app/src/main/java/com/enqualcomm/support/service/KeepAlive.java

index e55b9e1..825ed15 100644 (file)
@@ -56,6 +56,8 @@ import com.enqualcomm.support.utils.Util;
 import java.lang.ref.WeakReference;\r
 import chestnut.ui.Toastc;\r
 import chestnut.utils.PhoneUtils;\r
+import rx.Observable;\r
+import rx.functions.Action1;\r
 \r
 import android.content.BroadcastReceiver;\r
 import android.content.Context;\r
@@ -67,6 +69,7 @@ import android.telephony.TelephonyManager;
 import java.util.Random;\r
 import java.util.Timer;\r
 import java.util.TimerTask;\r
+import java.util.concurrent.TimeUnit;\r
 \r
 import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;\r
 import static com.enqualcomm.support.Constants.ACTION_ALARM_ADD_DATAPOINTS;\r
@@ -220,7 +223,13 @@ public class CoreService extends Service {
                     //设置5分钟后结束紧急定位模式\r
                    setEmegencyLocationSTOPAlarm(5);\r
 \r
-                   trigger_SOS_Call();\r
+                //5秒后开始拨打电话\r
+                Observable.timer(5000L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
+                    public void call(Long param1Long) {\r
+                        trigger_SOS_Call();\r
+                    }\r
+                });\r
+\r
 \r
                 }\r
         }\r
index 989af5c..36627df 100644 (file)
@@ -93,8 +93,6 @@ public class Deliver extends AbstractConnectionService {
   \r
   private static Runtime mRuntime;\r
   \r
-  private final String spilForWifi = "@EQCWIFI@";\r
-  \r
   private boolean wakeLockWifiList = false;\r
   \r
   private boolean wakeLockWifiSet = false;\r
@@ -112,7 +110,6 @@ public class Deliver extends AbstractConnectionService {
     //把queue 保存在磁盘中的缓存文件\r
     //此文件只缓存 除了 登录指令AP00,心跳AP03以及voice 分包指令以外的需要上传的指令。初步规划为 定位AP01和心率/血压 APHT\r
     fileCache = new FileCache(paramRuntime.getFileDir());\r
-    initQueue();\r
   }\r
 \r
   private static boolean checkNetwork(){\r
@@ -163,36 +160,10 @@ public class Deliver extends AbstractConnectionService {
         }\r
         Logger.i("send cached cmd: \n"+str);\r
       }finally {\r
-        lock.unlock();\r
+        if(lock!=null && lock.isLocked())\r
+          lock.unlock();\r
       }\r
-//      mLock.lock();\r
-//      try {\r
-//        mCondition.signal();\r
-//\r
-//      } finally {\r
-//        mLock.unlock();\r
-//      }\r
-    }\r
-  }\r
-  MyThread2 mythread2=null;\r
-\r
-  private void initQueue(){\r
-//    if (mRuntime.getUseQueue()) {\r
-//      /*启动 阻塞队列buffer 发送县城,随时准备发送buffer的message*/\r
-//      if (mythread2 == null)\r
-//        mythread2 = new MyThread2(this.mCondition, this.mLock);\r
-//      mythread2.exitthread=false;\r
-//      mythread2.start();\r
-//    }\r
-  }\r
 \r
-  private void deInitQueue(){\r
-    if (mRuntime.getUseQueue()) {\r
-      mythread2.exitthread = true;\r
-      if (mythread2 != null) {\r
-//      mythread2.stop();\r
-        mythread2 = null;\r
-      }\r
     }\r
   }\r
   private static void loadMessage2Queue() {\r
@@ -243,99 +214,6 @@ public class Deliver extends AbstractConnectionService {
   }\r
 \r
 \r
-  static class MyThread2 extends Thread {\r
-    Condition condition;\r
-\r
-    boolean isResent = false;\r
-    public boolean exitthread=false;\r
-    ReentrantLock lock;\r
-\r
-    public MyThread2(Condition param1Condition, ReentrantLock param1ReentrantLock) {\r
-      this.condition = param1Condition;\r
-      this.lock = param1ReentrantLock;\r
-    }\r
-\r
-    public void run() {\r
-      StringMessage stringMessage = null;\r
-\r
-      while (!exitthread) {\r
-\r
-        //循环发送queue 中的数据\r
-\r
-        try {\r
-          Logger.i("Sending Thread Queue Take ");\r
-\r
-          StringMessage stringMessage1 = (StringMessage)queue.take();\r
-          try {\r
-\r
-            int signal=mRuntime.getSignalStrength();\r
-            int networkType=SimSignalUtil.getInstance((mRuntime.getContextProxy()).context).getNetworkType();\r
-            if (signal + 110 < getMinSignalStrength(networkType)) {\r
-              Logger.i("Skip Send for SignalStrengh "+(signal + 110 )+" < "+getMinSignalStrength(networkType));\r
-              //如果信号不好,把msg放回去\r
-              queue.putFirst(stringMessage1);\r
-\r
-            } else {\r
-\r
-              stringMessage=stringMessage1;\r
-\r
-              Context context = (mRuntime.getContextProxy()).context;\r
-              StringBuilder stringBuilder = new StringBuilder();\r
-              stringBuilder.append("send=");\r
-              stringBuilder.append(stringMessage.cmd());\r
-              stringBuilder.append(", ");\r
-              stringBuilder.append(stringMessage.isFromCache());\r
-              if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(mRuntime.getCacheDir(), "MessageInfo", stringBuilder.toString());\r
-              Logger.i(stringBuilder.toString());\r
-              if( connection.isServerConnected() ==false  && !KeepAlive.isConnected  ) {\r
-\r
-                Logger.i("Skip Send for connection and KeepAlive both false ");\r
-                //发现连接断开则重试连接\r
-//                CoreService.getInstance().startConnectionRetryTimer();\r
-                //连接断开就把msg放回队列,以便重发\r
-                queue.putFirst(stringMessage1);\r
-              }else{\r
-                //连接状态都正常才发送包\r
-                connection.send(stringMessage);\r
-              }\r
-\r
-\r
-              this.lock.lock();\r
-\r
-              try {\r
-                if (KeepAlive.isConnected) {\r
-                  //如果 服务器连接状态,等30秒,随时等待数据发送\r
-                  Logger.i("KeepAlive.isConnected "+KeepAlive.isConnected+" delay 30000ms");\r
-                  this.condition.await(30000L, TimeUnit.MILLISECONDS);\r
-                } else {\r
-                  //如果服务器断开,等5秒 以便连接后尽快进入下一循环,尽量及时响应\r
-                  Logger.i("KeepAlive.isConnected "+KeepAlive.isConnected+ "  , connection isconnected "+connection.isServerConnected()+" delay 5000ms");\r
-\r
-                  this.condition.await(5000L, TimeUnit.MILLISECONDS);\r
-                }\r
-\r
-\r
-                if (queue.peek() == null) {\r
-                  loadMessage2Queue();\r
-                  this.lock.unlock();\r
-                  continue;\r
-                }\r
-\r
-              } catch (InterruptedException e) {\r
-                e.printStackTrace();\r
-              }finally{\r
-                this.lock.unlock();\r
-              }\r
-            }\r
-          } catch (Exception e) {\r
-            e.printStackTrace();\r
-          }\r
-        } catch (Exception e) {\r
-          e.printStackTrace();\r
-        }\r
-      }//while end\r
-    }\r
-  }\r
 public static void sendLocationMSG( String Msg){\r
 \r
     if(mRuntime.getUseQueue()){\r
index edbae05..056b500 100644 (file)
@@ -221,6 +221,8 @@ public class KeepAlive extends AbstractConnectionService {
     public void onReceive(Context param1Context, Intent param1Intent) {\r
       boolean bool = param1Intent.getBooleanExtra("reboot", false);\r
       if (KeepAlive.this.mRuntime.getBatteryLow() && !KeepAlive.this.mRuntime.getBatterychanging() && !bool && !KeepAlive.this.mRuntime.isShutdown()){\r
+\r
+          KeepAlive.this.mRuntime.setAlarmType(false,KeepAlive.this.mRuntime.getBatteryLow(),false,false);\r
           KeepAlive.this.connection.send(protocolAPIHelper.genStringMessage("AP10",protocolAPIHelper.AP10(KeepAlive.this.mRuntime)));\r
       }\r
 \r