From 7210e657379bb1b92df7e3f1799f9eb228d1c043 Mon Sep 17 00:00:00 2001 From: snickersun Date: Sat, 14 Nov 2020 18:11:14 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E6=94=B9=E6=96=AD=E7=BD=91=E9=80=BB?= =?utf8?q?=E8=BE=91=EF=BC=8C12=E6=AC=A1=E5=BF=83=E8=B7=B3=E6=A3=80?= =?utf8?q?=E6=B5=8B=E5=87=BA=E6=96=AD=E7=BD=91=E6=88=96=E8=80=85=E5=BF=83?= =?utf8?q?=E8=B7=B3=E6=B2=A1=E6=9C=89=E5=93=8D=E5=BA=94=E7=9A=84=E6=83=85?= =?utf8?q?=E5=86=B5=E4=B8=8B=EF=BC=8C=E9=80=9A=E8=BF=87=E9=A3=9E=E8=A1=8C?= =?utf8?q?=E6=A8=A1=E5=BC=8F=E5=BC=80=E5=85=B3=E9=87=8D=E7=BD=AE=E7=BD=91?= =?utf8?q?=E7=BB=9C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../com/enqualcomm/support/CoreService.java | 19 +++++++++++++++---- .../enqualcomm/support/LocationClient.java | 4 ++-- .../com/enqualcomm/support/bean/Runtime.java | 3 ++- .../support/utils/SimSignalUtil.java | 3 ++- .../com/ic/protocols/protocolAPIHelper.java | 4 ++++ 5 files changed, 25 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/enqualcomm/support/CoreService.java b/app/src/main/java/com/enqualcomm/support/CoreService.java index 9ae656f1..ac9c1d77 100644 --- a/app/src/main/java/com/enqualcomm/support/CoreService.java +++ b/app/src/main/java/com/enqualcomm/support/CoreService.java @@ -1549,7 +1549,10 @@ public class CoreService extends Service { private static int no_network_Heartbeats_Count=0; public void ReConnectToServer(){ - + long timeSincelastReceive=0; + if(Runtime.lastLinkReceiveStamp>0) + timeSincelastReceive=(System.currentTimeMillis()-Runtime.lastLinkReceiveStamp)/1000; + if (timeSincelastReceive>0) ICLogger.i("距离上次从服务器收到数据,已经有 " + timeSincelastReceive + " 秒!"); if (SimSignalUtil.checkNet(runtime.getContextProxy().context) ) { //里面如果连接成功 connectionOpen 会先发送 AP00 登录包 和发送AP03 心跳包 , // isServerConnected 成功则停止重试, KeepAlive会检测AP03心跳包的成功与否。此处只管socket连接是否成功 @@ -1581,13 +1584,21 @@ public class CoreService extends Service { no_network_Heartbeats_Count++; stopConnectionRetryTimer(); } - if( no_network_Heartbeats_Count >10){ + if( no_network_Heartbeats_Count >12){ ICLogger.i("当前第"+no_network_Heartbeats_Count+"次心跳都没有连接服务器成功 > 10 ,重置SIM卡尝试重新注册网络!"); - SimSignalUtil.send_at_to_reset_simcard(runtime); + //SimSignalUtil.send_at_to_reset_simcard(runtime); //直接下此命令不能实现断网重连,所以干脆采用关闭网络再打开的方式。 + SimSignalUtil.setAirMode(this,"OpenAirplane"); + mHandler.postDelayed(reopenSim,5000); no_network_Heartbeats_Count=0;//重置Sim卡后重置计数。防止后面多次重置Sim卡。 } } - + private Runnable reopenSim =new Runnable(){ + @Override + public void run() { + if (CoreService.getInstance()!=null) + SimSignalUtil.setAirMode(CoreService.getInstance(),"CloseAirplane"); + } + }; public void stopConnectionRetryTimer(){ if (mTimer_retry_connect !=null){ mTimer_retry_connect.shutdownNow(); diff --git a/app/src/main/java/com/enqualcomm/support/LocationClient.java b/app/src/main/java/com/enqualcomm/support/LocationClient.java index 9074ea46..5eda9bc1 100644 --- a/app/src/main/java/com/enqualcomm/support/LocationClient.java +++ b/app/src/main/java/com/enqualcomm/support/LocationClient.java @@ -1114,7 +1114,7 @@ public void updateCellInfo() { case 1: if (!isAirModeOn && !isScreenOn) { - this.mSignalUtil.setAirMode("OpenAirplane"); + // this.mSignalUtil.setAirMode("OpenAirplane"); runtime.isAirMode = true; notifiSetAirModeMethod(); @@ -1124,7 +1124,7 @@ public void updateCellInfo() { case 0: if (isAirModeOn) { - this.mSignalUtil.setAirMode("CloseAirplane"); + //this.mSignalUtil.setAirMode("CloseAirplane"); runtime.isAirMode = false; notifiSetAirModeMethod(); return; diff --git a/app/src/main/java/com/enqualcomm/support/bean/Runtime.java b/app/src/main/java/com/enqualcomm/support/bean/Runtime.java index 237ff0df..bc26c6ad 100644 --- a/app/src/main/java/com/enqualcomm/support/bean/Runtime.java +++ b/app/src/main/java/com/enqualcomm/support/bean/Runtime.java @@ -518,7 +518,8 @@ public class Runtime { public int saveStepCount; private boolean shutdown; - + + public static long lastLinkReceiveStamp=0; private boolean PowerConnected=false; diff --git a/app/src/main/java/com/enqualcomm/support/utils/SimSignalUtil.java b/app/src/main/java/com/enqualcomm/support/utils/SimSignalUtil.java index 654d0d56..50ab9445 100644 --- a/app/src/main/java/com/enqualcomm/support/utils/SimSignalUtil.java +++ b/app/src/main/java/com/enqualcomm/support/utils/SimSignalUtil.java @@ -240,10 +240,11 @@ public class SimSignalUtil { send_at_cmd(runtime,"AT+SPIMEI=1,"+imei); } - public void setAirMode(String paramString) { + public static void setAirMode(Context context,String paramString) { final ContentResolver cr = context.getContentResolver(); + ICLogger.i("setAirMode "+paramString); if ("OpenAirplane".equals(paramString)) { if (Settings.System.getString(cr, Settings.System.AIRPLANE_MODE_ON).equals("0")) { diff --git a/app/src/main/java/com/ic/protocols/protocolAPIHelper.java b/app/src/main/java/com/ic/protocols/protocolAPIHelper.java index 7e21969d..c92ad15d 100644 --- a/app/src/main/java/com/ic/protocols/protocolAPIHelper.java +++ b/app/src/main/java/com/ic/protocols/protocolAPIHelper.java @@ -42,6 +42,10 @@ public class protocolAPIHelper { 每个字符串如果发现 #,却又没有Header,“IW”则会被丢弃 */ public boolean parserCmd(String cmd_type,byte[] bytes) { + + //只要服务器收到消息,就认为服务器是联通的,保存联通的时间 + Runtime.lastLinkReceiveStamp=System.currentTimeMillis(); + if (is_protocol_not_Initialled()) return false; switch(Config.protocol_no) { -- 2.17.1