瀏覽代碼

增加志合A133主板兼容

weizhengliang 1 年之前
父節點
當前提交
22b0531897

+ 4 - 2
android_door/build.gradle

@@ -35,6 +35,8 @@ android {
         }
 
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+
+        buildConfigField "String", "APP_DEVICE_TYPE", "\""+app_device_type+"\""
     }
 
     sourceSets {
@@ -42,7 +44,7 @@ android {
         main.java.srcDirs += 'src/main/common/java'
         main.res.srcDirs += 'src/main/common/res'
 
-        if ("mk_h10_z_3128_1" == app_device_type) {
+        if ("mk_h10_z_3128_1" == app_device_type || "mk_h10_a133_1" == app_device_type) {
             main.java.srcDirs += 'src/main/h10_3128/java'
             main.res.srcDirs += 'src/main/h10_3128/res'
             main.manifest.srcFile 'src/main/h10_3128/AndroidManifest.xml'
@@ -115,7 +117,7 @@ dependencies {
     //rk3288接口
     compile files('libs/rk3288_api.jar')
 
-    if (app_device_type == "mk_h10_w_a133_1_chile") {
+    if (app_device_type == "mk_h10_w_a133_1_chile" || app_device_type == "mk_h10_a133_1") {
         //志合sdk
         compile files('libs/zhylapi.jar')
     }

+ 20 - 0
android_door/src/main/h10_3128/java/com/wdkl/app/ncs/callingdoor/activity/AppUpdateActivity.kt

@@ -7,6 +7,7 @@ import android.text.TextUtils
 import android.util.Log
 import com.enation.javashop.android.jrouter.external.annotation.Router
 import com.enation.javashop.net.engine.model.NetState
+import com.wdkl.app.ncs.callingdoor.BuildConfig
 import com.wdkl.app.ncs.callingdoor.R
 import com.wdkl.app.ncs.callingdoor.databinding.UpdateLayBinding
 import com.wdkl.app.ncs.callingdoor.helper.AppUpdateHelper
@@ -81,6 +82,8 @@ class AppUpdateActivity :BaseActivity<AppUpdatePresenter, UpdateLayBinding>(), A
                     }
                     if ("rk3288".equals(Build.MODEL)) {
                         installApkForRk3288()
+                    } else if ("mk_h10_a133_1" == BuildConfig.APP_DEVICE_TYPE) {
+                        startInstallA133()
                     } else {
                         startInstallApk()
                     }
@@ -134,6 +137,23 @@ class AppUpdateActivity :BaseActivity<AppUpdatePresenter, UpdateLayBinding>(), A
         }.start()
     }
 
+    fun startInstallA133() {
+        Thread {
+            AppUpdateHelper.updateAppA133(this, object : AppUpdateHelper.UpdateCallBack {
+                override fun onFailed() {
+                    runOnUiThread {
+                        showMessage(R.string.update_fail)
+                    }
+                }
+
+                override fun onSuccess() {
+                    runOnUiThread {
+                        showMessage(R.string.update_success)
+                    }
+                }
+            })
+        }.start()
+    }
 
     fun installApkForRk3288() {
         val path = AppUpdateHelper.FILE_APK_PATH + "/" + AppUpdateHelper.FILE_APK_NAME

+ 50 - 15
android_door/src/main/h10_3128/java/com/wdkl/app/ncs/callingdoor/activity/CallingdoorActivity.kt

@@ -1,5 +1,6 @@
 package com.wdkl.app.ncs.callingdoor.activity
 
+import android.app.zhyl.ZhylManager
 import android.content.*
 import android.graphics.Color
 import android.net.ConnectivityManager
@@ -16,6 +17,7 @@ import com.enation.javashop.android.jrouter.external.annotation.Router
 import com.enation.javashop.net.engine.model.NetState
 import com.example.yf_rk3288_api.YF_RK3288_API_Manager
 import com.google.gson.Gson
+import com.wdkl.app.ncs.callingdoor.BuildConfig
 import com.wdkl.app.ncs.callingdoor.R
 import com.wdkl.app.ncs.callingdoor.agreement.CallingdoorAgreement
 import com.wdkl.app.ncs.callingdoor.databinding.CallingdoorMainLayBinding
@@ -160,8 +162,29 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
     override fun init() {
         yfRk3288ApiManager = YF_RK3288_API_Manager(activity)
 
-        //rk3288使用序列号注册,其他使用mac地址注册
-        if ("rk3288".equals(Build.MODEL)) {
+        //志合A133平台sdk
+        if ("mk_h10_a133_1".equals(BuildConfig.APP_DEVICE_TYPE)) {
+            val zhylManager = ZhylManager.getInstance(BaseApplication.appContext)
+            //设置开机自启动
+            zhylManager.sys_setSystemBootApp("com.wdkl.app.ncs.callingdoor/com.wdkl.ncs.android.component.welcome.activity.WelcomeActivity")
+            //隐藏虚拟导航栏
+            zhylManager.disp_setNavigationBar(false)
+            //切换mic
+            if (!zhylManager.sys_getMICEnable()) {
+                zhylManager.sys_setMICEnable(true)
+                AppTool.Time.delay(10000) {
+                    zhylManager.sys_setReboot()
+                }
+            }
+
+
+            try {
+                Constant.LOCAL_MAC = zhylManager.net_getMacAddress("eth0")
+                Constant.DEVICE_REGISTER_ID = Constant.LOCAL_MAC
+            } catch (e: Exception) {
+                //
+            }
+        } else if ("rk3288".equals(Build.MODEL)) { //rk3288使用序列号注册,其他使用mac地址注册
             //获取设备序列号
             Constant.DEVICE_SN = yfRk3288ApiManager.yfgetSerialNumber()
             Constant.DEVICE_REGISTER_ID = Constant.DEVICE_SN
@@ -203,10 +226,14 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         //更新状态图标
         updateNetState()
 
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
+        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL) || "mk_h10_a133_1".equals(BuildConfig.APP_DEVICE_TYPE)) {
             AppTool.Time.delay(1500) {
                 //串口监听
-                setSerialListener()
+                if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
+                    setSerialListener(true)
+                } else {
+                    setSerialListener(false)
+                }
 
                 //打开MIC
                 SerialPortHelper.setMIC(false)
@@ -475,9 +502,9 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
     }
 
     private fun enterNursing() {
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
+        //if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
             SerialPortHelper.setDoorLight(1, Constant.nursingColor) //绿色
-        }
+        //}
         //room_action_nurse.text = "退出护理"
         room_action_nurse.setBackgroundResource(R.mipmap.ic_bottom_btn_bg)
         if (TextUtils.isEmpty(Constant.NursingTitle)) {
@@ -489,10 +516,10 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
     }
 
     private fun exitNursing() {
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
+        //if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
             //SerialPortHelper.setDoorLight(1, "111") //白色
             DoorLightHelper.resetDoorLight()
-        }
+        //}
         //room_action_nurse.text = "进入护理"
         room_action_nurse.setBackgroundResource(R.mipmap.bg_bottom_btn)
         tv_room_name.text = Constant.ROOM_NAME
@@ -675,13 +702,21 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
 
 
     //设置串口监听
-    private fun setSerialListener() {
+    private fun setSerialListener(heartBeat: Boolean) {
         SerialPortUtil.getInstance().setOnDataReceiveListener(this)
         SerialPortUtil.getInstance().setOnDataReceiveStringListener(this)
-        //开启串口心跳
-        SerialPortUtil.getInstance().startHeartBeat()
-
         SerialPortUtil433.getInstance().setOn433DataReceiveListener(this)
+
+        if (heartBeat) {
+            //开启串口心跳
+            val timerTask: TimerTask = object : TimerTask() {
+                override fun run() {
+                    SerialPortUtil.getInstance().startHeart()
+                }
+            }
+            val executor = Executors.newSingleThreadScheduledExecutor()
+            executor.scheduleAtFixedRate(timerTask, 0, 5, TimeUnit.SECONDS)
+        }
     }
 
     override fun checkAppVersion() {
@@ -709,11 +744,11 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         }
         MediaPlayHelper.getInstance().stopMusic()
 
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
+        //if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
             SerialPortUtil.getInstance().closeHeart()
             SerialPortUtil.getInstance().closeSerialPort()
             SerialPortUtil433.getInstance().closeSerialPort()
-        }
+        //}
     }
 
     //数据加载错误
@@ -1092,7 +1127,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
     }
 
     override fun serialPortBedOnclick(buffer: ByteArray) {
-        Log.d("serialPortBedOnclick", "面板按键: " + buffer[0])
+        Log.d("serialPortBedOnclick", "按键: buffer[0]=" + buffer[0] + ", buffer[7]=" + buffer[7])
         //测试模式
         if (testFragment == curFragment) {
             if (buffer[0].toInt() == 1 || buffer[0].toInt() == 2) {

+ 7 - 0
android_door/src/main/h10_3128/java/com/wdkl/app/ncs/callingdoor/fragment/QrCodeFragment.kt

@@ -1,7 +1,9 @@
 package com.wdkl.app.ncs.callingdoor.fragment
 
+import android.app.zhyl.ZhylManager
 import android.os.Build
 import com.enation.javashop.net.engine.model.NetState
+import com.wdkl.app.ncs.callingdoor.BuildConfig
 import com.wdkl.app.ncs.callingdoor.R
 import com.wdkl.app.ncs.callingdoor.activity.CallingdoorActivity
 import com.wdkl.app.ncs.callingdoor.databinding.QrCodeLayBinding
@@ -88,6 +90,11 @@ class QrCodeFragment : BaseFragment<QrCodeFragmentPresenter, QrCodeLayBinding>()
         tv_device_test.setOnClickListener {
             PasswordDialogHelper.showPasswordDialog(activity) {
                 (activity as CallingdoorActivity).startTestMode()
+
+                if ("mk_h10_a133_1".equals(BuildConfig.APP_DEVICE_TYPE)) {
+                    //显示虚拟导航栏
+                    ZhylManager.getInstance(BaseApplication.appContext).disp_setNavigationBar(true)
+                }
             }
         }
     }

+ 1 - 1
android_door/src/main/h10_3128/java/com/wdkl/app/ncs/callingdoor/fragment/SipCallFragment.kt

@@ -203,7 +203,7 @@ class SipCallFragment: BaseCallFragment() {
         handler.removeCallbacksAndMessages(null)
 
         //如果当前在护理中则不操作门灯,如果不在护理中则重置门灯
-        if (("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) && !Constant.inNursing && !Constant.sosOn) {
+        if (!Constant.inNursing && !Constant.sosOn) {
             //SerialPortHelper.setDoorLight(1, "111") //白色
             if (SettingConfig.getDoorLightAlwaysOn(activity) == 0) {
                 DoorLightHelper.resetDoorLight()

+ 1 - 1
android_door/src/main/h10_3128/java/com/wdkl/app/ncs/callingdoor/fragment/SkyCallFragment.kt

@@ -250,7 +250,7 @@ class SkyCallFragment: BaseCallFragment(), CallSessionCallback {
         RingPlayHelper.stopRingTone()
 
         //如果当前在护理中则不操作门灯,如果不在护理中则重置门灯
-        if (("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) && !Constant.inNursing && !Constant.sosOn) {
+        if (!Constant.inNursing && !Constant.sosOn) {
             //SerialPortHelper.setDoorLight(1, "111") //白色
             if (SettingConfig.getDoorLightAlwaysOn(activity) == 0) {
                 DoorLightHelper.resetDoorLight()

+ 57 - 12
android_door/src/main/h10_3128/java/com/wdkl/app/ncs/callingdoor/helper/AppUpdateHelper.java

@@ -2,6 +2,7 @@ package com.wdkl.app.ncs.callingdoor.helper;
 
 import android.app.AlarmManager;
 import android.app.PendingIntent;
+import android.app.zhyl.ZhylManager;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ApplicationInfo;
@@ -10,11 +11,14 @@ import android.content.pm.PackageManager;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Environment;
+import android.os.RemoteException;
 import android.util.Log;
 
 import androidx.core.content.FileProvider;
 
+import com.wdkl.app.ncs.callingdoor.BuildConfig;
 import com.wdkl.ncs.android.component.welcome.activity.WelcomeActivity;
+import com.wdkl.ncs.android.lib.base.BaseApplication;
 import com.wdkl.ncs.android.lib.settings.SettingConfig;
 import com.wdkl.ncs.host.service.WdklSipService;
 
@@ -99,6 +103,34 @@ public class AppUpdateHelper {
         }*/
     }
 
+    public static void updateAppA133(Context context, UpdateCallBack callBack) {
+        if (checkApkExit(context)) {
+            Log.d(TAG, "文件存在");
+        } else {
+            Log.d(TAG, "文件不存在");
+            if (callBack != null) {
+                callBack.onFailed();
+            }
+            return;
+        }
+
+        String path = FILE_APK_PATH + "/" + FILE_APK_NAME;
+        ZhylManager zhylManager = ZhylManager.getInstance(context);
+        zhylManager.sys_doSilentInstallApp(path, context);
+
+        /*zhylManager.sys_doSilentInstallAppObserver(path, new IAppInstallObserver() {
+            @Override
+            public void onInstallFinished(String s, int i, String s1) throws RemoteException {
+                Log.d(TAG, "install result: " + s);
+            }
+
+            @Override
+            public IBinder asBinder() {
+                return null;
+            }
+        });*/
+    }
+
     private static boolean checkApkExit(Context context) {
         File file = new File(FILE_APK_PATH + "/" + FILE_APK_NAME);
         return file.exists();
@@ -210,20 +242,33 @@ public class AppUpdateHelper {
     }
 
     public static void reboot(Context context) {
-        try {
-            if ("rk3128".equals(Build.MODEL)) {
-                SerialPortHelper.resetDevice();
+        if (Build.MODEL.equals("rk3128")) {
+            SerialPortHelper.resetDevice();
+            try {
+                Intent intent = new Intent(Intent.ACTION_REBOOT);
+                intent.putExtra("nowait", 1);
+                intent.putExtra("interval", 1);
+                intent.putExtra("window", 0);
+                context.sendBroadcast(intent);
+            } catch (Exception e) {
+                e.printStackTrace();
             }
-
-            Intent intent = new Intent(Intent.ACTION_REBOOT);
-            intent.putExtra("nowait", 1);
-            intent.putExtra("interval", 1);
-            intent.putExtra("window", 0);
-            context.sendBroadcast(intent);
-        } catch (Exception e) {
-            e.printStackTrace();
+        } else if (Build.MODEL.equals("rk3288")) {
+            Process process;
+            PrintWriter printWriter;
+            try {
+                process = Runtime.getRuntime().exec("su");
+                printWriter = new PrintWriter(process.getOutputStream());
+                printWriter.println("reboot");
+                printWriter.flush();
+                printWriter.close();
+                process.waitFor();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        } else if ("mk_h10_a133_1".equals(BuildConfig.APP_DEVICE_TYPE)) {
+            ZhylManager.getInstance(BaseApplication.appContext).sys_setReboot();
         }
-
     }
 
     public static void restartApp(Context context) {

+ 4 - 4
android_door/src/main/h10_3128/java/com/wdkl/app/ncs/callingdoor/helper/SOSHelper.java

@@ -24,7 +24,7 @@ public class SOSHelper {
     };
 
     public static void sosStart() {
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
+        //if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
             SerialPortHelper.setSosLight("2");
             OtherUtil.sendSosCall(Constant.DEVICE_ID);
             SerialPortHelper.setDoorLight(1, "200"); //红色闪烁
@@ -33,11 +33,11 @@ public class SOSHelper {
 
             //5min之后紧急按钮灯自动复位
             handler.sendEmptyMessageDelayed(110, 600000);
-        }
+        //}
     }
 
     public static void sosStop() {
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
+        //if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
             handler.removeCallbacksAndMessages(null);
             if (Constant.day_state == 1) {
                 SerialPortHelper.setSosLight("1");
@@ -56,6 +56,6 @@ public class SOSHelper {
                     DoorLightHelper.resetDoorLight();
                 }
             }
-        }
+        //}
     }
 }

+ 8 - 8
android_door/src/main/h10_3128/java/com/wdkl/app/ncs/callingdoor/helper/SerialPortHelper.java

@@ -10,26 +10,26 @@ public class SerialPortHelper {
      * 麦克风切换控制
      */
     public static void setMIC(boolean mainMIC) {
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
+        //if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
             if (mainMIC) {
                 SerialPortUtil.getInstance().sendCommand(SerialPortUtil.MIC, "0", "F");
             } else {
                 SerialPortUtil.getInstance().sendCommand(SerialPortUtil.MIC, "1", "F");
             }
-        }
+        //}
     }
 
     /**
      * 设置免提
      */
     public static void setHandsFree(boolean isHandsFree) {
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
+        //if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
             if (isHandsFree) {
                 SerialPortUtil.getInstance().sendCommand(SerialPortUtil.AUDIO, "0", "F");
             } else {
                 SerialPortUtil.getInstance().sendCommand(SerialPortUtil.AUDIO, "1", "F");
             }
-        }
+        //}
     }
 
     /**
@@ -39,7 +39,7 @@ public class SerialPortHelper {
      * @param color 0 表示灯灭  非0表示灯的颜色
      */
     public static void setDoorLight(int data, String color) {
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
+        //if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
             String command;
             if (data == 0 || color == null) {
                 command = "000";
@@ -47,16 +47,16 @@ public class SerialPortHelper {
                 command = color;
             }
             SerialPortUtil.getInstance().sendCommand(SerialPortUtil.DOORLIGHT, command, "F");
-        }
+        //}
     }
 
     /**
      * 设置卫生间紧急按钮灯状态: 0关闭1打开2闪烁
      */
     public static void setSosLight(String state) {
-        if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
+        //if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL)) {
             SerialPortUtil.getInstance().sendCommand(SerialPortUtil.ULED, state, "F");
-        }
+        //}
     }
 
     //重置设备

+ 1 - 1
android_door/src/main/h10_3128/java/com/wdkl/app/ncs/callingdoor/helper/UpdateTipsDialogHelper.java

@@ -31,7 +31,7 @@ public class UpdateTipsDialogHelper {
         builder.setView(contentView);
         Button buttonCancel = contentView.findViewById(R.id.cancel_button);
         Button buttonConfirm = contentView.findViewById(R.id.confirm_button);
-        final CountDownTimer timer = new CountDownTimer(15000, 1000) {
+        final CountDownTimer timer = new CountDownTimer(30000, 1000) {
 
             @Override
             public void onTick(long millisUntilFinished) {

+ 1 - 1
app/src/main/code/com/wdkl/app/ncs/application/Application.kt

@@ -109,7 +109,7 @@ class Application : BaseApplication() {
                     }
                 }.start()
             }
-        } else if ("mk_h10_w_a133_1_chile".equals(BuildConfig.APP_DEVICE_TYPE)) {
+        } else if ("mk_h10_w_a133_1_chile".equals(BuildConfig.APP_DEVICE_TYPE) || "mk_h10_a133_1".equals(BuildConfig.APP_DEVICE_TYPE)) {
             //志合A133主板
             SerialPortUtil.getInstance().openSerialPort("/dev/ttyS2")
         }

+ 5 - 1
build.gradle

@@ -44,12 +44,16 @@ buildscript {
      */
     ext.support_library_version = "28.0.0"
 
-    ext.app_device_type = "mk_h10_w_a133_1_chile"
+    ext.app_device_type = "mk_h10_a133_1"
 
     if (app_device_type == "mk_h10_z_3128_1") {
         //rk3128 10寸门口机
         ext.app_version_code = 54
         ext.app_version = "1.2.5"
+    } else if (app_device_type == "mk_h10_a133_1") {
+        //志合a133 10寸门口机
+        ext.app_version_code = 55
+        ext.app_version = "1.2.6"
     } else if (app_device_type == "mk_h10_z_3128_1_chile") {
         //rk3128 10寸门口机-智利
         ext.app_version_code = 50