Browse Source

<设备断网时将下发命令给MCU重启,若重启多次仍然无网则可能需要更换设备>

weizhengliang 4 years ago
parent
commit
5ea2c785a0

+ 1 - 1
app/build.gradle

@@ -31,7 +31,7 @@ android {
         minSdkVersion 15
         targetSdkVersion 26
         versionCode 1
-        versionName "1.54"
+        versionName "1.57"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
 
         buildConfigField "String", "BUILD_TIME", getDate()

+ 2 - 0
app/src/main/java/com/wdkl/callingbed/common/Constants.java

@@ -288,4 +288,6 @@ public class Constants {
      * 单片机版本号  add by waderson 20190708
      */
     public static String MCU_VERSION_NUMBER = "";
+
+    public static String REBOOT_COUNT = "RebootCount";
 }

+ 29 - 3
app/src/main/java/com/wdkl/callingbed/ui/CallingBedActivity.java

@@ -25,6 +25,7 @@ import android.support.annotation.Nullable;
 import android.support.design.widget.Snackbar;
 import android.support.v4.content.ContextCompat;
 import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.View;
@@ -179,6 +180,8 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
      */
     public static final String REGISTERCOM = "register_com";
 
+    private static boolean netOff = false;
+
     /**
      * 注册检测wifi强度广播
      */
@@ -435,6 +438,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
     private final int TURN_OFF_SCREEN = 2007;
     private final int RESET_UPDATE_FLAG = 2008;
     private final int RESET_BROADCAST_VIEW = 2009;
+    private final int RESET_ETHE = 2010;
     private MyHandler handler = new MyHandler(this);
 
     private String SCREEN_OFF_LIGHT = "1";
@@ -511,6 +515,11 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                         tvBroadcasting.setText("");
                         tvBroadcasting.setVisibility(View.INVISIBLE);
                         break;
+                    case RESET_ETHE:
+                        if (netOff) {
+                            ToastUtil.showToast("网络异常,设备即将重启!!!");
+                            CallingBedSendCommand.setNetStatus(serialPortUtil, "1");
+                        }
                 }
             } else {
                 // 没有实例不进行操作
@@ -688,7 +697,12 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         getSystemSettingData();
         getNoticeData();
         setTrustIcon();
-        getBroadcastAudioFiles();
+
+        if (isDownloadMp3) {
+            ToastUtil.showToast("广播文件正在下载中,请稍等...");
+        } else {
+            getBroadcastAudioFiles();
+        }
         /**
          * 由于机器性能方面的差异有些机子的串口反应速度比较慢;急速初始化将失效!
          * */
@@ -761,15 +775,23 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
             public void run() {
                 switch (state) {
                     case REGISTERING:
+                        netOff = false;
                         tvSipStatePoint.setBackgroundResource(R.color.yellow_color);
+                        //网络恢复正常,重置重启计数
+                        SharedPreferencesUtil.putIntSp(context, Constants.REBOOT_COUNT, Constants.REBOOT_COUNT, 0);
                         //CallingBedSendCommand.setSipStatus(serialPortUtil, "1");
                         break;
                     case REGISTERFAIL:
+                        netOff = true;
                         tvSipStatePoint.setBackgroundResource(R.color.red_color);
+                        handler.sendEmptyMessageDelayed(RESET_ETHE, 120000);
                         //CallingBedSendCommand.setSipStatus(serialPortUtil, "0");
                         break;
                     case REGISTERCOM:
+                        netOff = false;
                         tvSipStatePoint.setBackgroundResource(R.color.green);
+                        //网络恢复正常,重置重启计数
+                        SharedPreferencesUtil.putIntSp(context, Constants.REBOOT_COUNT, Constants.REBOOT_COUNT, 0);
                         //CallingBedSendCommand.setSipStatus(serialPortUtil, "2");
                         //if (!state_bk.equals(REGISTERCOM)) {
                         //    upDateParameter();
@@ -1798,7 +1820,11 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                         long curTime = System.currentTimeMillis();
                         if (curTime - updateAudioTime > 10000) {
                             updateAudioTime = curTime;
-                            getBroadcastAudioFiles();
+                            if (isDownloadMp3) {
+                                ToastUtil.showToast("广播文件正在下载中,请稍等...");
+                            } else {
+                                getBroadcastAudioFiles();
+                            }
                         }
                         break;
                     case "broadcast_1":
@@ -2711,7 +2737,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
 
     //广播的实体
     private ArrayList<AllBroadcastEntity> allBroadcastList = new ArrayList<>();
-    private boolean isDownloadMp3;
+    private boolean isDownloadMp3 = false;
     private boolean needReDownload = false;
 
     //下载广播音频文件

+ 28 - 4
app/src/main/java/com/wdkl/callingbed/ui/InitActivity.java

@@ -12,6 +12,7 @@ import android.net.NetworkInfo;
 import android.os.Environment;
 import android.os.Handler;
 import android.os.Message;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
 import android.widget.ImageView;
@@ -31,6 +32,7 @@ import com.wdkl.callingbed.util.DownloadUtil;
 import com.wdkl.callingbed.util.LogUtil;
 import com.wdkl.callingbed.util.NetUtil;
 import com.wdkl.callingbed.util.ScreenManagerUtil;
+import com.wdkl.callingbed.util.SharedPreferencesUtil;
 import com.wdkl.callingbed.util.StringUtils;
 import com.wdkl.callingbed.util.ToastUtil;
 import com.wdkl.callingbed.util.UdpSendUtil;
@@ -193,8 +195,8 @@ public class InitActivity extends BaseActivity implements SerialPortUtil.ISerial
                 CallingBedSendCommand.setSipStatus(serialPortUtil, "0");
                 showNetErrorView("MAC地址: " + macAddress + " IP地址: " + ipStr + "\nError:无网络连接;以太网是否连接正常?");//网络信息初始化错误
                 ToastUtil.showToast("无网络连接;以太网是否连接正常?");//网络信息初始化错误
-                //autoReboot();//wuyq remove
 
+                resetEthernet();
             }
         } else {
             updateHandler.sendEmptyMessageDelayed(404, DATEREFRESH_DELAYMILLIS);
@@ -207,14 +209,15 @@ public class InitActivity extends BaseActivity implements SerialPortUtil.ISerial
     /**
      * =================================================(网络不通)15次以上自动重启系统=====================================================
      */
-    private void autoReboot() {
-        if (countsReboot == 16) {
-            AutoRebootUtil.calculate(this);
+    private void resetEthernet() {
+        if (countsReboot == 10) {
+            updateHandler.sendEmptyMessage(222);
             countsReboot = 0;
         }
         countsReboot++;
     }
 
+
     /**
      * 检查APP更新版本
      *
@@ -272,6 +275,10 @@ public class InitActivity extends BaseActivity implements SerialPortUtil.ISerial
     private void getInitData() {
         LogUtil.d("getInitData", "URL==" + Constants.URL + Constants.URL_END + Constants.CALLINGBED_INIT);
         final String ipStr = NetUtil.getLocalIP();
+        //网络恢复正常,重置重启计数
+        if (!TextUtils.isEmpty(ipStr)) {
+            SharedPreferencesUtil.putIntSp(context, Constants.REBOOT_COUNT, Constants.REBOOT_COUNT, 0);
+        }
         if (Constants.URL.length() > 7) {
             OkHttpUtils
                     .post()
@@ -589,6 +596,23 @@ public class InitActivity extends BaseActivity implements SerialPortUtil.ISerial
                         stopRecord();
                     }
                     break;
+                case 222:
+                    int count = SharedPreferencesUtil.getIntSp(context, Constants.REBOOT_COUNT, Constants.REBOOT_COUNT);
+                    LogUtil.d("wzlll", "NetReset reboot count: " + count);
+                    if (count >= 10) {
+                        ToastUtil.showToast("设备出现异常,请确保网络连接正常或重启设备");
+                    } else {
+                        count++;
+                        SharedPreferencesUtil.putIntSp(context, Constants.REBOOT_COUNT, Constants.REBOOT_COUNT, count);
+                        ToastUtil.showToast("网络异常,即将重启");
+                        updateHandler.sendEmptyMessageDelayed(333, 5000);
+                    }
+                    break;
+                case 333:
+                    LogUtil.d("wzlll", "NetReset reboot...");
+                    AutoRebootUtil.reboot(MyApplication.getAppContext());
+                    CallingBedSendCommand.setNetStatus(serialPortUtil, "1");
+                    break;
             }
         }
     };

+ 11 - 0
app/src/main/java/com/wdkl/callingbed/util/SharedPreferencesUtil.java

@@ -36,6 +36,17 @@ public class SharedPreferencesUtil {
         sp.edit().putString(vname, vdata).commit();
     }
 
+    public static int getIntSp(Context context, String spname, String vname) {
+        SharedPreferences sp = context.getSharedPreferences(spname, Context.MODE_PRIVATE);
+        int value = sp.getInt(vname, 0);
+        return value;
+    }
+
+    public static void putIntSp(Context context, String spname, String vname, int vdata) {
+        SharedPreferences sp = context.getSharedPreferences(spname, Context.MODE_PRIVATE);
+        sp.edit().putInt(vname, vdata).commit();
+    }
+
     /**
      * SharedPreferences数据的清除
      *

+ 8 - 0
app/src/main/java/com/wdkl/callingbed/util/sendcommand/CallingBedSendCommand.java

@@ -50,6 +50,14 @@ public class CallingBedSendCommand {
         return false;
     }
 
+    /*
+     * 重置网络
+     * data: 0 -- 断电,  1 -- 上电
+     */
+    public static void setNetStatus(SerialPortUtil serialPortUtil, String data) {
+        serialPortUtil.sendCommand(SerialPortUtil.NET_STATUS , data, "F");
+    }
+
     /**
      * 设置手柄MIC
      */

+ 4 - 0
bedlib/src/main/java/serialporttest/utils/SerialPortUtil.java

@@ -420,6 +420,10 @@ public class SerialPortUtil {
      */
     public static final String SIP_STATUS = "SIP";
     /**
+     * 网络状态<br>
+     */
+    public static final String NET_STATUS = "NETRESET";
+    /**
      * 心跳控制<br>
      * 若MCU在10秒内没有收到信号,将自动重启Android.  随机数为“W”时将关闭心跳<br>
      * $ HEART ,1 E #  <br>