Browse Source

修改门灯控制无效问题,linphone sdk集成

weizhengliang 2 years ago
parent
commit
a4b8d5b321

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

@@ -1,17 +1,21 @@
 package com.wdkl.app.ncs.application
 
+//import com.enation.javashop.utils.base.config.BaseConfig
+//import com.wdkl.app.ncs.callingdoor.helper.AnrFcExceptionUtil
+import android.content.ComponentName
+import android.content.Intent
+import android.content.ServiceConnection
 import android.os.Build
+import android.os.Handler
+import android.os.IBinder
 import com.enation.javashop.android.jrouter.JRouter
-import com.wdkl.ncs.android.lib.base.BaseApplication
 import com.enation.javashop.net.engine.config.NetEngineConfig
 import com.enation.javashop.net.engine.plugin.exception.RestfulExceptionInterceptor
 import com.enation.javashop.utils.base.config.BaseConfig
 import com.wdkl.app.ncs.callingdoor.helper.AnrFcExceptionUtil
-//import com.enation.javashop.utils.base.config.BaseConfig
-//import com.wdkl.app.ncs.callingdoor.helper.AnrFcExceptionUtil
 import com.wdkl.app.ncs.callingdoor.helper.NetHelper
-import com.wdkl.app.ncs.callingdoor.helper.Utils
-import com.wdkl.app.ncs.callingdoor.helper.XCrashUtils
+import com.wdkl.app.ncs.callingdoor.service.APPService
+import com.wdkl.ncs.android.lib.base.BaseApplication
 import serialporttest.utils.SerialPortUtil
 
 /**
@@ -90,19 +94,13 @@ class Application : BaseApplication() {
 
         //open serial port
         if ("rk3128".equals(Build.MODEL) || "rk3368".equals(Build.MODEL) || "WDMK_I".equals(Build.MODEL) || "WDMKI".equals(Build.MODEL)) {
-            SerialPortUtil.getInstance().openSerialPort()
-        }
+            Handler().postDelayed({
+                SerialPortUtil.getInstance().openSerialPort()
 
-        //屏幕适配方案
-        /*if ("rk3288".equals(Build.MODEL)) {
-            AutoSizeConfig.getInstance()
-                .setDesignWidthInDp(1080)
-                .setDesignHeightInDp(1920)
-        } else {
-            AutoSizeConfig.getInstance()
-                .setDesignWidthInDp(1024)
-                .setDesignHeightInDp(600)
-        }*/
+                val bindIntent = Intent(this@Application, APPService::class.java)
+                bindService(bindIntent, connection, BIND_AUTO_CREATE)
+            }, 2000)
+        }
 
 
         //anr catcher
@@ -113,4 +111,13 @@ class Application : BaseApplication() {
 
         //Utils.checkCameraSupport()
     }
+
+
+    private var connection: ServiceConnection = object : ServiceConnection {
+        override fun onServiceConnected(componentName: ComponentName, iBinder: IBinder) {
+            //
+        }
+
+        override fun onServiceDisconnected(componentName: ComponentName) {}
+    }
 }

+ 2 - 2
bedlib/src/main/java/serialporttest/utils/SerialPortUtil.java

@@ -333,11 +333,11 @@ public class SerialPortUtil {
             if (isOpenSerialPortUtil) {
                 byte[] sendData = command.getBytes();
                 outputStream.write(sendData);
-                Log.d("serialPort","==command==" + command);
+                Log.d("serialPort","==send command success==" + command);
             }
         } catch (IOException e) {
             e.printStackTrace();
-            Log.d("serialPort","==command==" + command);
+            Log.e("serialPort","==send command error==" + command);
         }
     }
 

+ 0 - 3
callingdoor/build.gradle

@@ -88,9 +88,6 @@ dependencies {
 
     //compile project(':janus')
 
-    //linphone sip
-    implementation "org.linphone:linphone-sdk-android:4.3.3"
-
     if(componentTag){
         debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1'
         releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'

+ 2 - 0
callingdoor/src/main/AndroidManifest.xml

@@ -26,6 +26,8 @@
             android:name=".sip.WdklSipService"
             android:label="@string/app_name" />
 
+        <service android:name=".service.APPService"/>
+
         <provider
             android:name="android.support.v4.content.FileProvider"
             android:authorities="${applicationId}.provider"

+ 28 - 7
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/activity/CallingdoorActivity.kt

@@ -10,6 +10,7 @@ import android.util.Log
 import android.view.Gravity
 import android.view.View
 import android.widget.TextView
+import com.alibaba.fastjson.JSON
 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
@@ -453,11 +454,12 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         //护理按钮
         room_action_nurse.setOnLongClickListener {
             if (!Constant.TCP_CONNECTED) {
+                showMessage("没有连接服务器")
                 return@setOnLongClickListener true
             }
 
             if (Constant.DEVICE_ID == -1) {
-                showMessage("没有设备id!")
+                showMessage("设备未注册!")
                 return@setOnLongClickListener true
             }
 
@@ -1131,16 +1133,24 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                             callControl(tcpModel)
                         }
                     } else if(tcpModel.action == TcpAction.TimeAction.SYNC && tcpModel.type==TcpType.TIME){
-                        val time =  tcpModel.data.toString().toLong()*1000
-                        //设置系统时间
+                        var time = 0L
+                        var timeZone="Asia/Shanghai"
+                        if (canParseJson(tcpModel.data.toString())) {
+                            val json = JSON.parseObject(tcpModel.data.toString())
+                            time = json.getLong("time")*1000
+                            timeZone = json.getString("time_zone")
+                        } else {
+                            time = tcpModel.data.toString().toLong() * 1000
+                        }
+
                         try {
-                            AppUtil.setSystemTime(BaseApplication.appContext, time)
-                            Log.d(TAG, "set sys time1: $time")
+                            AppUtil.setSystemTime(BaseApplication.appContext, time, timeZone)
+                            Log.d("setTime", "set sys time1: $time, $timeZone")
                         } catch (e: Exception) {
                             //"20211213:092314"
                             val timeStr = TimeHandle.getDateTime(time, "yyyyMMdd.HHmmss")
-                            AppUtil.setSysTime(timeStr)
-                            Log.d(TAG, "set sys time2: $timeStr")
+                            AppUtil.setSysTime(timeStr, timeZone)
+                            Log.d("setTime", "set sys time2: $timeStr, $timeZone")
                         }
                     } else if (tcpModel.action == TcpAction.ReinforceAction.RESPONSED) {
                         //SoundPoolManager.getInstance().playSound(4, 1.0f, 1.0f, 0)
@@ -1159,6 +1169,17 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         }
     }
 
+    private fun canParseJson(str:String) : Boolean {
+        var result = false
+        try {
+            JSON.parseObject(str)
+            result=true
+        }catch (e:java.lang.Exception){
+            result=false
+        }
+        return result
+    }
+
     private fun callControl(tcpModel: TcpModel) {
         if (tcpModel.action == TcpAction.SideAction.CALL) {
             //显示分机呼叫信息

+ 80 - 0
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/service/APPService.java

@@ -0,0 +1,80 @@
+package com.wdkl.app.ncs.callingdoor.service;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.Binder;
+import android.os.IBinder;
+import android.support.annotation.Nullable;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+import serialporttest.utils.SerialPortUtil;
+
+
+/**
+ * Created by Waderson on 2018/01/23.
+ */
+
+public class APPService extends Service {
+
+    ServiceBinder myBinder = new ServiceBinder();
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        sendHeartbeat();
+    }
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+        return super.onStartCommand(intent, flags, startId);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+    }
+
+    @Nullable
+    @Override
+    public IBinder onBind(Intent intent) {
+        return myBinder;
+    }
+
+    public Timer timer;
+    public TimerTask timerTask;
+    //初始化门灯
+    public boolean isFirstOpenDoorLight = true;
+
+
+    /**
+     * 发送心跳信号
+     */
+    private void sendHeartbeat() {
+        if (timer != null) timer.purge();
+        if (timerTask != null) timerTask.cancel();
+        timer = new Timer();
+        timerTask = new TimerTask() {
+            @Override
+            public void run() {
+                    if (SerialPortUtil.getInstance().isOpenSerialPortUtil) {
+                        SerialPortUtil.getInstance().startHeart();
+                        //串口开启后门灯立即初始化
+                        if (isFirstOpenDoorLight) {
+                            SerialPortUtil.getInstance().sendCommand(SerialPortUtil.DOORLIGHT, "111", "F");  //门灯白色
+                            isFirstOpenDoorLight = false;
+                        }
+                    }
+
+            }
+        };
+        timer.schedule(timerTask, 0, 5000);
+    }
+
+    public class ServiceBinder extends Binder {
+        public void doThings() {
+        }
+    }
+
+}

+ 3 - 0
common/build.gradle

@@ -249,6 +249,9 @@ dependencies {
      * google
      */
     //compile 'com.google.guava:guava:23.0'
+
+    //linphone sdk
+    compile files('libs/linphone-sdk-android-4.3.3.aar')
 }
 
 //tasks.withType(JavaCompile) {

BIN
common/libs/linphone-sdk-android-4.3.3.aar


+ 2 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/utils/AppUtil.java

@@ -15,7 +15,7 @@ public class AppUtil {
      *
      * @param time
      */
-    public static void setSysTime(String time) {
+    public static void setSysTime(String time, String timeZone) {
         try {
             Process process = Runtime.getRuntime().exec("su");
             if (null == process) return;
@@ -84,7 +84,7 @@ public class AppUtil {
         }
     }
 
-    public static void setSystemTime(Context context, long timeMills) {
+    public static void setSystemTime(Context context, long timeMills, String timeZone) {
         AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
         alarmManager.setTimeZone("Asia/Shanghai");
         alarmManager.setTime(timeMills);