Bläddra i källkod

3128主机增加断网重启功能

weizhengliang 1 år sedan
förälder
incheckning
ec60b7d2b8

+ 62 - 2
android_host/src/main/h10_z3128_1h/java/com/wdkl/ncs/android/component/nursehome/activity/RegisterActivity.kt

@@ -16,6 +16,7 @@ import com.wdkl.ncs.android.component.nursehome.launch.NurseHomeLaunch
 import com.wdkl.ncs.android.lib.base.BaseActivity
 import io.reactivex.Observable
 import com.wdkl.ncs.android.component.nursehome.BuildConfig
+import com.wdkl.ncs.android.component.nursehome.settingconfig.SettingConfig
 import com.wdkl.ncs.android.component.nursehome.util.*
 import com.wdkl.ncs.android.middleware.common.Constants
 import com.wdkl.ncs.android.lib.base.BaseApplication
@@ -36,6 +37,7 @@ import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
 import serialporttest.utils.SerialPortUtil
 import java.lang.StringBuilder
+import java.util.*
 import java.util.concurrent.TimeUnit
 
 /**
@@ -54,6 +56,9 @@ class RegisterActivity : BaseActivity<DevicePresenter, ActivityRegisterBinding>(
     private var cancelRestart = false
     private var homeLaunch = false
 
+    //网络异常计数
+    private var netErrCount : Int = 0
+
     /**
      * 提供layoutID
      */
@@ -205,7 +210,7 @@ class RegisterActivity : BaseActivity<DevicePresenter, ActivityRegisterBinding>(
                 }
 
                 try {
-                    Thread.sleep(30000)
+                    Thread.sleep(45000)
                 } catch (ex: Exception) {
                     ex.printStackTrace()
                 }
@@ -214,6 +219,10 @@ class RegisterActivity : BaseActivity<DevicePresenter, ActivityRegisterBinding>(
     }
 
     private fun checkServerInfo(info: ThirdServerInfo?) {
+        runOnUiThread {
+            checkNet()
+        }
+
         //检查获取到的服务器ip是否可用,可用则重启app重新初始化,不可用则什么都不做,等待下次重新获取服务器ip
         if (info != null) {
             if (info.thirdServer == null || info.thirdServerPort == null) {
@@ -301,6 +310,9 @@ class RegisterActivity : BaseActivity<DevicePresenter, ActivityRegisterBinding>(
             Constants.back_id = data.backupId
         }
 
+        SettingConfig.setNetErrResetCount(this, 0)
+        WarningDialogHelper.dismiss()
+
         if(TextUtils.isEmpty(data.partId.toString())|| TextUtils.isEmpty(data.id.toString())
                 || TextUtils.isEmpty(data.sipId)){
             feedback_device_info_tv.setText(R.string.device_init_fail)
@@ -367,7 +379,7 @@ class RegisterActivity : BaseActivity<DevicePresenter, ActivityRegisterBinding>(
         btn_reboot.setOnClickListener {
             cancelRestart = true
             handler.removeCallbacksAndMessages(null)
-            AppUpdateHelper.restartApp(activity)
+            AppUpdateHelper.reboot(activity)
         }
 
         btn_set_language.setOnClickListener {
@@ -384,6 +396,54 @@ class RegisterActivity : BaseActivity<DevicePresenter, ActivityRegisterBinding>(
             }
         }
     }
+
+    private fun checkNet() {
+        /*
+        * 检查网络情况,若tcp断开连接多次且IP也是空的则网络异常,重启设备
+        * 仅对3128设备有效
+         */
+        if (Build.MODEL.equals("rk3128")) {
+            var count = SettingConfig.getNetErrResetCount(this)
+            Log.e("checkNet", "checkNet --> netErrCount: " + netErrCount
+                    + ", IP isEmpty: " + TextUtils.isEmpty(NetHelper.getInstance().localIP)
+                    + ", count: " + count)
+            if (!Constants.tcp_connected && TextUtils.isEmpty(NetHelper.getInstance().localIP)) {
+                netErrCount++
+            } else {
+                netErrCount = 0
+                if (count > 0) {
+                    count = 0
+                    SettingConfig.setNetErrResetCount(this, count)
+                    WarningDialogHelper.dismiss()
+                }
+            }
+
+            if (netErrCount >= 5) {
+                //如果重启次数超过8次还是无网则不再重启
+                if (count < 8) {
+                    count++
+                    SettingConfig.setNetErrResetCount(this, count)
+                    Handler().postDelayed({
+                        AppUpdateHelper.reboot(activity)
+                    }, 5000)
+                } else {
+                    WarningDialogHelper.showDialog(activity, getString(R.string.device_error),true)
+
+                    //隔2个小时再重启
+                    val calendar = Calendar.getInstance()
+                    val hour = calendar[Calendar.HOUR_OF_DAY]
+                    val minute = calendar[Calendar.MINUTE]
+                    Log.e("checkNet", "show net error dialog --> hour: $hour, minute: $minute")
+                    if (hour%2 == 0 && minute == 0) {
+                        Handler().postDelayed({
+                            AppUpdateHelper.reboot(activity)
+                        }, 5000)
+                    }
+                }
+            }
+        }
+    }
+
     /**
      *页面销毁回调
      */

+ 4 - 4
android_host/src/main/h10_z3128_1h/java/com/wdkl/ncs/android/component/nursehome/fragment/SystemSettingsFragment.kt

@@ -348,11 +348,11 @@ class SystemSettingsFragment:BaseFragment<SystemSettingsPresenter,FragmentSystem
             if (checkedId == R.id.radio_transfer_on) {
                 SettingConfiguration.getInstance().transferCall = true
                 SettingConfig.setTransferCall(activity, true)
-                WarningDialogHelper.showDialog(activity, false)
+                WarningDialogHelper.showDialog(activity, getString(R.string.reboot_conform),false)
             } else {
                 SettingConfiguration.getInstance().transferCall = false
                 SettingConfig.setTransferCall(activity, false)
-                WarningDialogHelper.showDialog(activity, false)
+                WarningDialogHelper.showDialog(activity, getString(R.string.reboot_conform), false)
             }
         }
 
@@ -374,7 +374,7 @@ class SystemSettingsFragment:BaseFragment<SystemSettingsPresenter,FragmentSystem
                 Log.d(TAG, "select pos: $position, origin: $originTime")
                 if (originTime != position) {
                     SettingConfig.setCallStayTime(activity, position)
-                    WarningDialogHelper.showDialog(activity, false)
+                    WarningDialogHelper.showDialog(activity, getString(R.string.reboot_conform),false)
                 }
             }
 
@@ -399,7 +399,7 @@ class SystemSettingsFragment:BaseFragment<SystemSettingsPresenter,FragmentSystem
                     SettingConfig.setSipEnable(activity, false)
                 }
 
-                WarningDialogHelper.showDialog(activity, true)
+                WarningDialogHelper.showDialog(activity, getString(R.string.reboot_conform),true)
             }
         }
 

+ 21 - 0
android_host/src/main/h10_z3128_1h/java/com/wdkl/ncs/android/component/nursehome/settingconfig/SettingConfig.java

@@ -149,6 +149,9 @@ public class SettingConfig {
     private static final String KEY_SP_LED_TYPE = "KEY_SP_LED_TYPE";
     private static final String KEY_SP_LED_AUTO_SYNC_TIME = "KEY_SP_LED_AUTO_SYNC_TIME";
 
+    //网络异常重启次数
+    private static final String KEY_SP_NET_ERR_RESET_COUNT = "KEY_SP_NET_ERR_RESET_COUNT";
+
     //语音播报模式
     public static int getTtsMode(Context context) {
         return getSP(context).getInt(KEY_SP_TTS_MODE, TTS_ON);
@@ -248,6 +251,24 @@ public class SettingConfig {
         getEditor(context).putBoolean(KEY_SP_LED_AUTO_SYNC_TIME, enable).apply();
     }
 
+    /**
+     * 获取网络异常重启次数
+     *
+     * @return
+     */
+    public static int getNetErrResetCount(Context context) {
+        return getSP(context).getInt(KEY_SP_NET_ERR_RESET_COUNT, 0);
+    }
+
+    /**
+     * 设置网络异常重启次数
+     *
+     * @param value
+     */
+    public static void setNetErrResetCount(Context context, int value) {
+        getEditor(context).putInt(KEY_SP_NET_ERR_RESET_COUNT, value).apply();
+    }
+
 
     /**
      * 获取播报次数

+ 12 - 2
android_host/src/main/h10_z3128_1h/java/com/wdkl/ncs/android/component/nursehome/util/WarningDialogHelper.java

@@ -8,6 +8,7 @@ import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
 import android.widget.Button;
+import android.widget.TextView;
 
 import com.wdkl.ncs.android.component.nursehome.R;
 import com.wdkl.ncs.android.lib.base.BaseApplication;
@@ -16,7 +17,7 @@ import com.wdkl.ncs.android.lib.base.BaseApplication;
 public class WarningDialogHelper {
     private static AlertDialog dialog;
 
-    public static void showDialog(final Activity activity, final boolean reboot) {
+    public static void showDialog(final Activity activity, final String title, final boolean reboot) {
         if (dialog != null && dialog.isShowing()) {
             return;
         }
@@ -24,14 +25,17 @@ public class WarningDialogHelper {
         View contentView = LayoutInflater.from(activity).inflate(R.layout.warning_dialog_lay, null);
         AlertDialog.Builder builder = new AlertDialog.Builder(activity);
         builder.setView(contentView);
+        TextView textView = contentView.findViewById(R.id.warning_text);
+        textView.setText(title);
         Button button = contentView.findViewById(R.id.confirm_button);
         button.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 if (reboot) {
                     AppUpdateHelper.reboot(BaseApplication.appContext);
+                } else {
+                    AppUpdateHelper.restartApp(activity);
                 }
-                AppUpdateHelper.restartApp(activity);
             }
         });
 
@@ -52,4 +56,10 @@ public class WarningDialogHelper {
             e.printStackTrace();
         }*/
     }
+
+    public static void dismiss() {
+        if (dialog != null) {
+            dialog.dismiss();
+        }
+    }
 }

+ 2 - 1
android_host/src/main/h10_z3128_1h/res/layout/warning_dialog_lay.xml

@@ -8,12 +8,13 @@
     android:orientation="vertical">
 
     <TextView
-        android:id="@+id/warnig_text"
+        android:id="@+id/warning_text"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginTop="20dp"
         android:padding="8dp"
         android:text="@string/reboot_conform"
+        android:textColor="@color/red_color"
         android:textSize="32sp"
         android:gravity="center" />
 

+ 0 - 9
app/src/main/sharedUserId/AndroidManifest.xml

@@ -28,15 +28,6 @@
         android:name="com.wdkl.app.ncs.application.Application"
         android:theme="@style/MyAppTheme">
 
-        <activity android:name="com.wdkl.ncs.android.component.nursehome.activity.RegisterActivity"
-            android:launchMode="singleInstance">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-
-                <category android:name="android.intent.category.LAUNCHER"/>
-            </intent-filter>
-        </activity>
-
     </application>
 
 </manifest>

+ 1 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/utils/CommonUtils.java

@@ -27,6 +27,7 @@ public class CommonUtils {
     //private static final String DEFAULT_URL = "119.23.151.229";
     //private static final String DEFAULT_URL = "120.77.212.146";
     //private static final String DEFAULT_URL = "192.168.101.1";
+    //private static final String DEFAULT_URL = "111.111.0.34"; //祁阳
     private static final String DEFAULT_URL_PORT = "8006";
     private static final String DEFAULT_SIP_PORT = "8188";
 

+ 1 - 0
resource/src/main/res/values-es/strings.xml

@@ -225,6 +225,7 @@
     <string name="nursing_configs">Proyectos de enfermería:</string>
     <string name="orders">Pedidos:</string>
     <string name="illness">Información de la enfermedad:</string>
+    <string name="device_error">Error del dispositivo, reinicie!</string>
     <string name="reboot_conform">configuración exitosa, ?reiniciar ahora?</string>
     <string name="new_event_title">Nuevo evento</string>
     <string name="responsible_bed">responsible bed</string>

+ 1 - 0
resource/src/main/res/values-ru/strings.xml

@@ -227,6 +227,7 @@
     <string name="orders">Заказы:</string>
     <string name="illness">Болезнь:</string>
     <string name="responsible_bed">основная кровать</string>
+    <string name="device_error">Ошибка устройства, перезагрузите компьютер!</string>
     <string name="reboot_conform">установка завершена, перезагрузить сейчас?</string>
     <string name="new_event_title">Новое мероприятие</string>
     <string name="call_stay_time">Время ожидания входящего вызова</string>

+ 1 - 0
resource/src/main/res/values-zh/strings.xml

@@ -247,6 +247,7 @@
     <string name="str_fall_alarm">跌倒报警</string>
     <string name="none_warning">无人警报</string>
 
+    <string name="device_error">设备网络出现异常,请检查网络或尝试断电重启!</string>
     <string name="reboot_conform">设置成功,重启生效</string>
     <string name="new_event_title">事件待处理</string>
     <string name="call_stay_time">来电超时时间</string>

+ 1 - 0
resource/src/main/res/values/strings.xml

@@ -247,6 +247,7 @@
     <string name="str_fall_alarm">fall alarm</string>
     <string name="none_warning">No one alerts</string>
 
+    <string name="device_error">Device error, please reboot!</string>
     <string name="reboot_conform">set success, reboot now?</string>
     <string name="new_event_title">New event</string>
     <string name="call_stay_time">Incoming Call timeout</string>