Browse Source

分机呼叫和紧急呼叫功能ok

weizhengliang 3 years ago
parent
commit
b477294745
84 changed files with 2172 additions and 1651 deletions
  1. 0 2
      app/src/main/code/com/wdkl/app/ncs/application/Application.kt
  2. 8 1
      bedlib/src/main/java/serialporttest/utils/SerialPortUtil.java
  3. 1 1
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/activity/AppUpdateActivity.kt
  4. 500 271
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/activity/MainActivity.kt
  5. 61 0
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/adapter/BedItemAdapter.kt
  6. 1 1
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/agreement/Callingbed2Agreement.kt
  7. 25 0
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/bean/FrameDeviceBean.java
  8. 1 9
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/di/Callingbed2Component.kt
  9. 0 2
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/fragment/BaseCallFragment.kt
  10. 0 357
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/fragment/CallFragment.kt
  11. 0 75
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/fragment/CostFragment.kt
  12. 52 47
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/fragment/MainFragment.kt
  13. 0 107
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/fragment/QrCodeFragment.kt
  14. 1 15
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/fragment/SkyCallFragment.kt
  15. 0 137
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/fragment/VoiceMsgFragment.kt
  16. 29 0
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/helper/CutSerialPortUtil.java
  17. 34 0
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/helper/FrameHelper.java
  18. 8 2
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/helper/MediaPlayHelper.java
  19. 0 35
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/helper/SOSHelper.java
  20. 49 23
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/helper/SerialPortHelper.java
  21. 0 17
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/helper/Utils.java
  22. 4 4
      conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/launch/MainLaunch.kt
  23. 37 0
      conversion_box/src/main/res/layout/bed_item_view.xml
  24. 0 202
      conversion_box/src/main/res/layout/callingbed2_main_lay.xml
  25. 53 0
      conversion_box/src/main/res/layout/conversion_box_main_lay.xml
  26. 135 0
      conversion_box/src/main/res/layout/main_activity_layout.xml
  27. 1 3
      conversion_box/src/main/res/values/strings.xml
  28. 3 3
      gradle.properties
  29. 1 1
      middleware/build.gradle
  30. 1 1
      middleware/src/main/code/com/wdkl/ncs/android/middleware/api/ApiManager.kt
  31. 10 2
      middleware/src/main/code/com/wdkl/ncs/android/middleware/api/BedDevice2Api.kt
  32. 3 1
      middleware/src/main/code/com/wdkl/ncs/android/middleware/api/UrlManager.kt
  33. 8 22
      middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constant.java
  34. 2 3
      middleware/src/main/code/com/wdkl/ncs/android/middleware/di/ApiProvides.kt
  35. 1 2
      middleware/src/main/code/com/wdkl/ncs/android/middleware/di/ApplicationComponent.kt
  36. 0 8
      middleware/src/main/code/com/wdkl/ncs/android/middleware/di/PresenterComponent.kt
  37. 0 13
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/conversion_box/CallFragmentContract.kt
  38. 0 20
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/conversion_box/CostFragmentContract.kt
  39. 2 8
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/conversion_box/MainActivityContract.kt
  40. 11 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/conversion_box/MainFragmentContract.kt
  41. 0 13
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/conversion_box/QrCodeFragmentContract.kt
  42. 0 13
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/conversion_box/VoiceFragmentContract.kt
  43. 0 14
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/conversion_box/CallFragmentPresenter.kt
  44. 0 65
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/conversion_box/CostFragmentPresenter.kt
  45. 9 28
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/conversion_box/MainActivityPresenter.kt
  46. 41 14
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/conversion_box/MainFragmentPresenter.kt
  47. 0 45
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/conversion_box/QrCodeFragmentPresenter.kt
  48. 0 14
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/conversion_box/VoiceFragmentPresenter.kt
  49. 24 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/dos/DeviceDO.java
  50. 21 6
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/dos/FrameDO.java
  51. 89 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/DeviceNurseInfoVO.java
  52. 36 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/FrameAudioBedVO.java
  53. 46 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/FrameAudioRoomVO.java
  54. 23 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/FrameAudioVO.java
  55. 5 5
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/FramePartVO.java
  56. 5 6
      middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/FrameRoomVO.java
  57. 1 1
      middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/TcpClientHandler.java
  58. 15 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/VoiceUtil.java
  59. 1 1
      resource/src/main/res/values/strings.xml
  60. 2 2
      rtc-chat/src/main/java/com/wdkl/skywebrtc/engine/webrtc/WebRTCEngine.java
  61. 1 1
      settings.gradle
  62. 1 0
      traditionlib/.gitignore
  63. 43 0
      traditionlib/build.gradle
  64. 25 0
      traditionlib/proguard-rules.pro
  65. 26 0
      traditionlib/src/androidTest/java/serialcommunication/wdkl/com/bedlib/ExampleInstrumentedTest.java
  66. 10 0
      traditionlib/src/main/AndroidManifest.xml
  67. 74 0
      traditionlib/src/main/java/android_serialport_api/SerialPort.java
  68. 392 0
      traditionlib/src/main/java/serialporttest/utils/SerialPortUtil.java
  69. 11 0
      traditionlib/src/main/jni/Android.mk
  70. 1 0
      traditionlib/src/main/jni/Application.mk
  71. 167 0
      traditionlib/src/main/jni/SerialPort.c
  72. 29 0
      traditionlib/src/main/jni/SerialPort.h
  73. 3 0
      traditionlib/src/main/jni/gen_SerialPort_h.sh
  74. BIN
      traditionlib/src/main/jniLibs/armeabi-v7a/libserial_port.so
  75. BIN
      traditionlib/src/main/jniLibs/armeabi/libserial_port.so
  76. BIN
      traditionlib/src/main/jniLibs/x86/libserial_port.so
  77. 3 0
      traditionlib/src/main/res/values/strings.xml
  78. 17 0
      traditionlib/src/test/java/serialcommunication/wdkl/com/bedlib/ExampleUnitTest.java
  79. 3 1
      webrtc/src/main/java/com/wdkl/core/consts/Urls.java
  80. 1 5
      webrtc/src/main/java/com/wdkl/core/socket/SocketManager.java
  81. 2 2
      webrtc/src/main/java/com/wdkl/core/voip/AsyncPlayer.java
  82. 0 12
      webrtc/src/main/java/com/wdkl/core/voip/CallSingleActivity.java
  83. 3 7
      webrtc/src/main/java/com/wdkl/core/voip/FragmentMeeting.java
  84. 0 1
      welcome/src/main/code/com/wdkl/ncs/android/component/welcome/activity/WelcomeActivity.kt

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

@@ -7,7 +7,6 @@ import com.enation.javashop.net.engine.config.NetEngineConfig
 import com.enation.javashop.net.engine.plugin.exception.RestfulExceptionInterceptor
 import com.wdkl.app.ncs.conversion_box.helper.AnrFcExceptionUtil
 import com.wdkl.app.ncs.conversion_box.helper.NetHelper
-import com.wdkl.app.ncs.conversion_box.helper.Utils
 import com.wdkl.core.socket.SocketManager
 import com.wdkl.core.voip.VoipEvent
 import com.wdkl.net.HttpRequestPresenter
@@ -102,6 +101,5 @@ class Application : BaseApplication() {
         //anr catcher
         AnrFcExceptionUtil.getInstance(this).initFCException()
 
-        Utils.checkCameraSupport()
     }
 }

+ 8 - 1
bedlib/src/main/java/serialporttest/utils/SerialPortUtil.java

@@ -314,6 +314,13 @@ public class SerialPortUtil {
     }
 
     /**
+     * 门灯信号改变  7打开 8关闭
+     */
+    public void doorLamp(String type ,String mac) {
+        send(C_HEARD + type + C_SEPARATE + mac + "F" + C_END);
+    }
+
+    /**
      * 系统重启
      */
     public void systemRestart() {
@@ -337,7 +344,7 @@ public class SerialPortUtil {
      *
      * @param command 要发送的数据
      */
-    private void send(String command) {
+    public void send(String command) {
         try {
             if (isOpenSerialPortUtil) {
                 byte[] sendData = command.getBytes();

+ 1 - 1
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/activity/AppUpdateActivity.kt

@@ -18,7 +18,7 @@ import com.wdkl.ncs.android.middleware.logic.contract.conversion_box.AppUpdateCo
 import com.wdkl.ncs.android.middleware.logic.presenter.conversion_box.AppUpdatePresenter
 import kotlinx.android.synthetic.main.update_lay.*
 
-@Router(path = "/callingbed/update")
+@Router(path = "/conversion_box/update")
 class AppUpdateActivity :BaseActivity<AppUpdatePresenter, UpdateLayBinding>(), AppUpdateContract.View {
     private val TAG = "AppUpdateActivity"
 

File diff suppressed because it is too large
+ 500 - 271
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/activity/MainActivity.kt


+ 61 - 0
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/adapter/BedItemAdapter.kt

@@ -0,0 +1,61 @@
+package com.wdkl.app.ncs.conversion_box.adapter
+
+import android.content.Context
+import android.support.v7.widget.RecyclerView
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import com.wdkl.app.ncs.conversion_box.R
+import com.wdkl.app.ncs.conversion_box.bean.FrameDeviceBean
+
+class BedItemAdapter : RecyclerView.Adapter<BedItemAdapter.BedViewHolder> {
+
+    private var context: Context
+    private var mainData: ArrayList<FrameDeviceBean>
+
+    constructor(context: Context, data: ArrayList<FrameDeviceBean>) {
+        this.context = context
+        this.mainData = data
+    }
+
+    override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): BedViewHolder {
+        val view = LayoutInflater.from(parent?.context).inflate(R.layout.bed_item_view, parent, false)
+        val viewHolder = BedViewHolder(view)
+
+        return viewHolder
+    }
+
+    override fun onBindViewHolder(holder: BedViewHolder?, position: Int) {
+        //holder?.bedName?.text = mainData.get(position).frameBed.fullName
+        //holder?.bedAddr?.text = "地址: " + mainData.get(position).frameBed.
+
+        holder?.bedName?.text = mainData.get(position).frame.fullName
+        holder?.bedDevice?.text = mainData.get(position).device.name
+        holder?.bedType?.text = "" + mainData.get(position).device.deviceType
+        holder?.bedAddr?.text = mainData.get(position).device.ethMac
+    }
+
+    override fun getItemCount(): Int {
+        return mainData.size
+    }
+
+    fun updateData(data: ArrayList<FrameDeviceBean>) {
+        mainData = data
+        notifyDataSetChanged()
+    }
+
+    class BedViewHolder : RecyclerView.ViewHolder {
+        var bedName : TextView
+        var bedDevice : TextView
+        var bedType : TextView
+        var bedAddr : TextView
+
+        constructor(itemView: View): super(itemView) {
+            bedName = itemView.findViewById(R.id.tv_bed_item_name)
+            bedDevice = itemView.findViewById(R.id.tv_bed_device_name)
+            bedType = itemView.findViewById(R.id.tv_bed_item_type)
+            bedAddr = itemView.findViewById(R.id.tv_bed_item_addr)
+        }
+    }
+}

+ 1 - 1
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/agreement/Callingbed2Agreement.kt

@@ -2,7 +2,7 @@ package com.wdkl.app.ncs.conversion_box.agreement
 
 import com.wdkl.ncs.android.middleware.model.dto.NurseConfigDto
 
-interface Callingbed2Agreement {
+interface ConversionBoxAgreement {
 
     //更新护理数据
     fun updateNurseConfig(list: List<NurseConfigDto>)

+ 25 - 0
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/bean/FrameDeviceBean.java

@@ -0,0 +1,25 @@
+package com.wdkl.app.ncs.conversion_box.bean;
+
+import com.wdkl.ncs.android.middleware.model.dos.DeviceDO;
+import com.wdkl.ncs.android.middleware.model.dos.FrameDO;
+
+public class FrameDeviceBean {
+    private FrameDO frame;
+    private DeviceDO device;
+
+    public FrameDO getFrame() {
+        return frame;
+    }
+
+    public void setFrame(FrameDO frame) {
+        this.frame = frame;
+    }
+
+    public DeviceDO getDevice() {
+        return device;
+    }
+
+    public void setDevice(DeviceDO device) {
+        this.device = device;
+    }
+}

+ 1 - 9
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/di/Callingbed2Component.kt

@@ -7,18 +7,10 @@ import com.wdkl.ncs.android.middleware.di.ApplicationComponent
 import dagger.Component
 
 @Component(dependencies = arrayOf(ApplicationComponent::class))
-interface Callingbed2Component {
+interface ConversionBoxComponent {
     fun inject(activity: MainActivity)
 
     fun inject(activity: AppUpdateActivity)
 
     fun inject(activity: MainFragment)
-
-    fun inject(activity: CallFragment)
-
-    fun inject(activity: VoiceMsgFragment)
-
-    fun inject(activity: QrCodeFragment)
-
-    fun inject(activity: CostFragment)
 }

+ 0 - 2
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/fragment/BaseCallFragment.kt

@@ -9,7 +9,6 @@ import android.view.ViewGroup
 import android.widget.TextView
 import com.enation.javashop.utils.base.tool.BaseToolActivity
 import com.wdkl.app.ncs.conversion_box.helper.RingPlayHelper
-import com.wdkl.app.ncs.conversion_box.helper.SerialPortHelper
 import com.wdkl.app.ncs.conversion_box.settings.SettingConfig
 import com.wdkl.core.voip.VoipEvent
 import com.wdkl.ncs.android.lib.utils.showMessage
@@ -117,7 +116,6 @@ abstract class BaseCallFragment: Fragment() {
                 showMessage("无人应答...")
                 Constant.CALL_STATE = Constant.CALL_STANDBY
                 VoiceUtil.cancelAudioCall(Constant.DEVICE_ID)
-                SerialPortHelper.setCallStatus("0")
                 backToMain()
             }
         }

+ 0 - 357
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/fragment/CallFragment.kt

@@ -1,357 +0,0 @@
-package com.wdkl.app.ncs.conversion_box.fragment
-
-import android.os.CountDownTimer
-import android.os.SystemClock
-import android.util.Log
-import android.view.View
-import com.enation.javashop.net.engine.model.NetState
-import com.google.gson.Gson
-import com.wdkl.app.ncs.conversion_box.R
-import com.wdkl.app.ncs.conversion_box.databinding.VoiceCallLayBinding
-import com.wdkl.app.ncs.conversion_box.helper.MediaPlayHelper
-import com.wdkl.app.ncs.conversion_box.launch.MainLaunch
-import com.wdkl.app.ncs.conversion_box.settings.SettingConfig
-//import com.wdkl.app.ncs.sip.event.AEvent
-//import com.wdkl.app.ncs.sip.event.IEventListener
-//import com.wdkl.app.ncs.sip.helper.StarRtcHelper
-import com.wdkl.ncs.android.lib.base.BaseFragment
-import com.wdkl.ncs.android.lib.utils.errorLog
-import com.wdkl.ncs.android.lib.utils.showMessage
-import com.wdkl.ncs.android.lib.vo.filter
-import com.wdkl.ncs.android.middleware.common.Constant
-import com.wdkl.ncs.android.middleware.common.MessageEvent
-import com.wdkl.ncs.android.middleware.logic.contract.conversion_box.CallFragmentContract
-import com.wdkl.ncs.android.middleware.logic.presenter.conversion_box.MainFragmentPresenter
-import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
-import com.wdkl.ncs.android.middleware.tcp.channel.VoiceUtil
-import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
-import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction
-import kotlinx.android.synthetic.main.voice_call_lay.*
-import org.greenrobot.eventbus.EventBus
-import org.greenrobot.eventbus.Subscribe
-import org.greenrobot.eventbus.ThreadMode
-
-class CallFragment : BaseFragment<MainFragmentPresenter, VoiceCallLayBinding>(), CallFragmentContract.View/*, IEventListener*/ {
-    val TAG = "CallFragment"
-
-    //通话状态:0-去电, 1-来电, 2-接通, 3-挂断
-    var callState : Int = 0
-    //呼叫倒计时
-    lateinit var countDownTimer: CountDownTimer
-    //来电设备id
-    var fromId: Int = -1
-    //目的设备id
-    var toId: Int = -1
-    //Sip通话目标设备id
-    var sipTargetId: String = ""
-    //Interaction ID
-    var interactionId: Int = -1
-    //去电铃声id
-    //var outCallStreamId: Int = -1
-    //来电铃声id
-    //var inCallStreamId: Int = -1
-
-
-    override fun getLayId(): Int {
-        return R.layout.voice_call_lay
-    }
-
-    override fun bindDagger() {
-        MainLaunch.component.inject(this)
-    }
-
-    override fun init() {
-        initCountDownTimer()
-        //StarRtcHelper.getInstance().addAudioCallListeners(this)
-
-        when (callState) {
-            0 -> {
-                //去电
-                sendCall()
-                VoiceUtil.startAudioCall(Constant.DEVICE_ID)
-                //播放铃音
-                MediaPlayHelper.getInstance().playResMusic(R.raw.outgoing_call, 0.6f, true)
-            }
-
-            1 -> {
-                //来电
-                incomingCall()
-                //播放铃声
-                MediaPlayHelper.getInstance().playResMusic(R.raw.incoming_call, 1.0f, true)
-            }
-
-            2 -> {
-                //接通
-                //acceptCall()
-            }
-
-            3 -> {
-                //挂断
-                //rejectCall()
-            }
-        }
-    }
-
-    override fun bindEvent() {
-        //去电或正在通话界面挂断按钮
-        voice_call_hangup.setOnClickListener {
-            //挂断通话,返回首页
-            if (Constant.CALL_STATE == Constant.CALL_CALLING) {
-                Constant.CALL_STATE = Constant.CALL_STANDBY
-                //StarRtcHelper.getInstance().hangupAudioCall()
-                VoiceUtil.handoffAudioCall(Constant.DEVICE_ID, fromId, interactionId)
-                backToMain()
-            } else {
-                Constant.CALL_STATE = Constant.CALL_STANDBY
-                VoiceUtil.cancelAudioCall(Constant.DEVICE_ID)
-                cancelCall()
-            }
-        }
-        //来电界面挂断按钮
-        voice_call_ring_hangoff.setOnClickListener {
-            //挂断通话,返回首页
-            MediaPlayHelper.getInstance().stopMusic()
-            Constant.CALL_STATE = Constant.CALL_STANDBY
-            VoiceUtil.rejectAudioCall(Constant.DEVICE_ID, fromId, interactionId)
-            backToMain()
-        }
-        //来电界面接听按钮
-        voice_call_ring_pickup_audio.setOnClickListener {
-            //接收通话,向主叫方发出已接听的TCP消息,主叫方接收该消息后向我发起sip通话请求,我自动接听sip通话
-            Log.d("wzlll", "pickup call state: " + Constant.CALL_STATE + ", my id: " + Constant.DEVICE_ID + ", from id: " + fromId + ", interaction id: " + interactionId + ", target sip: " + sipTargetId)
-            MediaPlayHelper.getInstance().stopMusic()
-            //if (!TextUtils.isEmpty(sipTargetId)) {
-                Constant.CALL_STATE = Constant.CALL_INCOMING
-                VoiceUtil.acceptAudioCall(Constant.DEVICE_ID, fromId, interactionId)
-            //}
-        }
-    }
-
-    override fun onStart() {
-        EventBus.getDefault().register(this)
-        super.onStart()
-    }
-
-    override fun onStop() {
-        EventBus.getDefault().unregister(this)
-        super.onStop()
-    }
-
-    override fun destory() {
-        countDownTimer.cancel()
-        if (Constant.CALL_STATE == Constant.CALL_CALLING) {
-            //StarRtcHelper.getInstance().hangupAudioCall()
-            VoiceUtil.handoffAudioCall(Constant.DEVICE_ID, fromId, interactionId)
-        }
-        Constant.CALL_STATE = Constant.CALL_STANDBY
-        //StarRtcHelper.getInstance().removeAudioCallListeners(this)
-        MediaPlayHelper.getInstance().stopMusic()
-    }
-
-    override fun onError(message: String, type: Int) {
-        getUtils().dismissDialog()
-        errorLog("error",message)
-        showMessage(message)
-    }
-
-    override fun complete(message: String, type: Int) {
-        getUtils().dismissDialog()
-    }
-
-    override fun start() {
-        getUtils().showDialog()
-    }
-
-    override fun networkMonitor(state: NetState) {
-        state.filter(onWifi = {
-
-        },onMobile = {
-
-        },offline = {
-
-        })
-    }
-
-/*    override fun dispatchEvent(aEventID: String, success: Boolean, eventObj: Any) {
-        Log.d("wzlll", "call state: " + Constant.CALL_STATE)
-        Log.d("wzlll", "received sip event: " + aEventID + ", success: " + success + ", event obj: " + eventObj.toString())
-        when (aEventID) {
-            AEvent.AEVENT_VOIP_REV_CALLING_AUDIO -> {
-                //分机呼叫主机,主机接听,同时发送sip通话请求,分机自动接听
-                if (Constant.CALL_STATE != Constant.CALL_CALLING) {
-                    MediaPlayHelper.getInstance().stopMusic()
-                    StarRtcHelper.getInstance().pickupAudioCall(activity, eventObj.toString())
-                    activity.runOnUiThread {
-                        acceptCall()
-                    }
-                }
-            }
-            AEvent.AEVENT_VOIP_REV_CALLING -> {
-                //语音通话请求
-                //if (Constant.CALL_STATE != Constant.CALL_CALLING) {
-                //    StarRtcHelper.getInstance().pickupAudioCall(activity, eventObj.toString())
-                //    activity.runOnUiThread {
-                //                        acceptCall()
-                //                    }
-                //}
-            }
-            AEvent.AEVENT_VOIP_REV_BUSY -> {
-                //对方线路忙
-                activity.runOnUiThread {
-                    //rejectCall()
-                    showMessage("线路忙!")
-                }
-            }
-
-            AEvent.AEVENT_VOIP_REV_REFUSED -> {
-                //对方拒绝通话
-                activity.runOnUiThread {
-                    //rejectCall()
-                }
-            }
-
-            AEvent.AEVENT_VOIP_REV_HANGUP -> {
-                //对方已挂断
-                activity.runOnUiThread {
-                    if (Constant.CALL_STATE == Constant.CALL_CALLING) {
-                        rejectCall()
-                    }
-                }
-            }
-
-            AEvent.AEVENT_VOIP_REV_CONNECT -> {
-                //对方接受通话
-                activity.runOnUiThread {
-                    //showMessage("通话成功!")
-                    //acceptCall()
-                }
-            }
-
-            AEvent.AEVENT_VOIP_REV_ERROR -> {
-                //通话错误
-                activity.runOnUiThread {
-                    //showMessage("通话错误!")
-                    rejectCall()
-                }
-            }
-        }
-    }*/
-
-    fun initCountDownTimer() {
-        val overTime = SettingConfig.getSipOverTime(getActivity()) * 1000L
-        countDownTimer = object: CountDownTimer(overTime, 1000) {
-            override fun onTick(millisUntilFinished: Long) {
-                val time = millisUntilFinished/1000
-                voice_call_timeout?.setText("呼叫倒计时: " + time + " 秒")
-            }
-
-            override fun onFinish() {
-                //呼叫超时,返回到主界面
-                showMessage("无人应答...")
-                MediaPlayHelper.getInstance().stopMusic()
-                VoiceUtil.cancelAudioCall(Constant.DEVICE_ID)
-                backToMain()
-            }
-        }
-    }
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    fun onMoonEvent(messageEvent: MessageEvent) {
-        when (messageEvent.getType()) {
-            Constant.EVENT_TCP_MSG -> {
-                val tcpModel = messageEvent.message as TcpModel
-                if (tcpModel.getAction() == TcpAction.VoiceAction.ACCEPT) { //我方呼出,对方接受
-                    //todo: 通话中界面更新;建立数据通话
-                    val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
-                    interactionId = interactionVO.id
-                    fromId = tcpModel.fromId
-                    //acceptCall()
-                } else if (tcpModel.getAction() == TcpAction.VoiceAction.REJECT) { //我方呼出,对方拒绝
-                    //todo: 清掉呼出的TcpModel,通话中界面更新 --- 显示对方拒绝并停留3秒,结束至正常界面;更新左侧
-                    showMessage("对方已拒绝!")
-                    rejectCall()
-                } else if (tcpModel.getAction() == TcpAction.VoiceAction.CALLING) { //我方呼出,对方通话中
-                    //todo: 清掉呼出的TcpModel,通话中界面更新 --- 显示对方占线并停留3秒,结束至正常界面;更新左侧
-                    //对于分机来说,对方处于通话中应当还是可以正常呼叫,而不应该直接挂断
-                    //showMessage("对方处于通话中!")
-                    //rejectCall()
-                } else if (tcpModel.getAction() == TcpAction.VoiceAction.SUCCESS) { //呼叫成功
-                    val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
-                    interactionId = interactionVO.id
-                    voice_call_calling_text.setText("呼叫成功,等待接听中...")
-                } else if (tcpModel.getAction() == TcpAction.VoiceAction.FAILED) { //我方呼出,对方不在线,设备离线或其它错误
-                    //todo: 清掉呼出的TcpModel,通话中界面更新 --- 显示对方离线并停留3秒,结束至正常界面;更新左侧
-                    showMessage("呼叫失败,对方可能不在线!")
-                    MediaPlayHelper.getInstance().stopMusic()
-                    rejectCall()
-                } else if (tcpModel.getAction() == TcpAction.VoiceAction.HANDOFF) { //对方挂断,不论我方呼出或呼入
-                    //todo: 清掉呼出的TcpModel,通话中界面更新 --- 显示对方已挂断并停留3秒,结束至正常界面;更新左侧
-                    //showMessage("通话结束!")
-                    MediaPlayHelper.getInstance().stopMusic()
-                    rejectCall()
-                } else if (tcpModel.getAction() == TcpAction.VoiceAction.CANCEL) {
-                    //对方呼叫时取消
-                    MediaPlayHelper.getInstance().stopMusic()
-                    cancelCall()
-                }
-            }
-        }
-    }
-
-    //呼叫
-    fun sendCall() {
-        Constant.CALL_STATE = Constant.CALL_OUTGOING
-        voice_call_calling_text.setText("正在呼叫...")
-        voice_call_hangup_view.visibility = View.VISIBLE
-        voice_call_ring_view.visibility = View.GONE
-        voice_call_timer.visibility = View.GONE
-        voice_call_timeout.visibility = View.VISIBLE
-        countDownTimer.start()
-    }
-
-    //来电
-    fun incomingCall() {
-        Constant.CALL_STATE = Constant.CALL_INCOMING
-        countDownTimer.cancel()
-        voice_call_calling_text.setText("有新的来电...")
-        voice_call_hangup_view.visibility = View.GONE
-        voice_call_ring_view.visibility = View.VISIBLE
-        voice_call_timer.visibility = View.GONE
-        voice_call_timeout.visibility = View.GONE
-    }
-
-    //接通
-    fun acceptCall() {
-        Constant.CALL_STATE = Constant.CALL_CALLING
-        countDownTimer.cancel()
-        voice_call_calling_text.setText("通话中...")
-        voice_call_hangup_view.visibility = View.VISIBLE
-        voice_call_ring_view.visibility = View.GONE
-        voice_call_timer.visibility = View.VISIBLE
-        voice_call_timeout.visibility = View.GONE
-        voice_call_timer.base = SystemClock.elapsedRealtime()
-        voice_call_timer.start()
-    }
-
-    //挂断通话
-    fun rejectCall() {
-        Constant.CALL_STATE = Constant.CALL_STANDBY
-        countDownTimer.cancel()
-        voice_call_timer.base = SystemClock.elapsedRealtime()
-        voice_call_timer.stop()
-        backToMain()
-    }
-
-    //呼叫取消
-    fun cancelCall() {
-        Constant.CALL_STATE = Constant.CALL_STANDBY
-        countDownTimer.cancel()
-        voice_call_timer.base = SystemClock.elapsedRealtime()
-        voice_call_timer.stop()
-        backToMain()
-    }
-
-    private fun backToMain() {
-        EventBus.getDefault().post(MessageEvent("BackToMain", Constant.EVENT_BACK_MAIN))
-    }
-}

+ 0 - 75
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/fragment/CostFragment.kt

@@ -1,75 +0,0 @@
-package com.wdkl.app.ncs.conversion_box.fragment
-
-import android.support.v7.widget.LinearLayoutManager
-import com.enation.javashop.net.engine.model.NetState
-import com.wdkl.app.ncs.conversion_box.R
-import com.wdkl.app.ncs.conversion_box.adapter.CostItemAdapter
-import com.wdkl.app.ncs.conversion_box.databinding.CostViewLayBinding
-import com.wdkl.app.ncs.conversion_box.launch.MainLaunch
-import com.wdkl.ncs.android.lib.base.BaseFragment
-import com.wdkl.ncs.android.lib.utils.errorLog
-import com.wdkl.ncs.android.lib.utils.showMessage
-import com.wdkl.ncs.android.lib.vo.filter
-import com.wdkl.ncs.android.middleware.common.Constant
-import com.wdkl.ncs.android.middleware.logic.contract.conversion_box.CostFragmentContract
-import com.wdkl.ncs.android.middleware.logic.presenter.conversion_box.CostFragmentPresenter
-import com.wdkl.ncs.android.middleware.model.vo.CustomerFeeConfigByGroupNameVO
-import kotlinx.android.synthetic.main.cost_view_lay.*
-
-class CostFragment : BaseFragment<CostFragmentPresenter, CostViewLayBinding>(), CostFragmentContract.View {
-
-    override fun getLayId(): Int {
-        return R.layout.cost_view_lay
-    }
-
-    override fun bindDagger() {
-        MainLaunch.component.inject(this)
-    }
-
-    override fun init() {
-        if (Constant.CUSTOM_ID != -1) {
-            presenter.loadCustomCost(Constant.CUSTOM_ID)
-        } else {
-            showMessage("没有custom id")
-        }
-    }
-
-    override fun bindEvent() {
-        //
-    }
-
-    override fun destory() {
-        //
-    }
-
-    override fun showCustomCost(cost: ArrayList<CustomerFeeConfigByGroupNameVO>) {
-        val layoutManager = LinearLayoutManager(activity)
-        rv_cost_main_view.layoutManager = layoutManager
-        rv_cost_main_view.adapter = CostItemAdapter(activity, cost)
-    }
-
-    override fun onError(message: String, type: Int) {
-        errorLog("error",message)
-        showMessage(message)
-    }
-
-    override fun onNoNet() {
-        showMessage("没有网络")
-    }
-
-    override fun complete(message: String, type: Int) {
-    }
-
-    override fun start() {
-    }
-
-    override fun networkMonitor(state: NetState) {
-        state.filter(onWifi = {
-
-        },onMobile = {
-
-        },offline = {
-
-        })
-    }
-}

+ 52 - 47
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/fragment/MainFragment.kt

@@ -1,15 +1,16 @@
 package com.wdkl.app.ncs.conversion_box.fragment
 
-import android.text.TextUtils
-import android.text.method.ScrollingMovementMethod
-import android.view.View
+import android.util.Log
+import com.alibaba.android.vlayout.VirtualLayoutManager
 import com.enation.javashop.net.engine.model.NetState
 import com.wdkl.app.ncs.conversion_box.R
-import com.wdkl.app.ncs.conversion_box.activity.MainActivity
-import com.wdkl.app.ncs.conversion_box.databinding.MainView2LayoutBinding
+import com.wdkl.app.ncs.conversion_box.adapter.BedItemAdapter
+import com.wdkl.app.ncs.conversion_box.bean.FrameDeviceBean
+import com.wdkl.app.ncs.conversion_box.databinding.ConversionBoxMainLayBinding
+import com.wdkl.app.ncs.conversion_box.helper.FrameHelper
+import com.wdkl.app.ncs.conversion_box.helper.NetHelper
 import com.wdkl.app.ncs.conversion_box.launch.MainLaunch
 import com.wdkl.ncs.android.lib.base.BaseFragment
-import com.wdkl.ncs.android.lib.utils.TimeHandle
 import com.wdkl.ncs.android.lib.utils.errorLog
 import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.lib.vo.filter
@@ -17,19 +18,19 @@ import com.wdkl.ncs.android.middleware.common.Constant
 import com.wdkl.ncs.android.middleware.common.MessageEvent
 import com.wdkl.ncs.android.middleware.logic.contract.conversion_box.MainFragmentContract
 import com.wdkl.ncs.android.middleware.logic.presenter.conversion_box.MainFragmentPresenter
-import com.wdkl.ncs.android.middleware.model.vo.CustomerInfoVO
-import kotlinx.android.synthetic.main.main_view2_layout.*
-import kotlinx.android.synthetic.main.view_bed_name.*
+import com.wdkl.ncs.android.middleware.model.vo.*
+import kotlinx.android.synthetic.main.conversion_box_main_lay.*
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
 
-class MainFragment: BaseFragment<MainFragmentPresenter, MainView2LayoutBinding>(), MainFragmentContract.View {
+class MainFragment: BaseFragment<MainFragmentPresenter, ConversionBoxMainLayBinding>(), MainFragmentContract.View {
     val TAG = "MainFragment"
 
+    private var adapter: BedItemAdapter? = null
 
     override fun getLayId(): Int {
-        return R.layout.main_view2_layout
+        return R.layout.conversion_box_main_lay
     }
 
     override fun bindDagger() {
@@ -37,8 +38,9 @@ class MainFragment: BaseFragment<MainFragmentPresenter, MainView2LayoutBinding>(
     }
 
     override fun init() {
-        //医嘱内容可以滚动显示
-        tv_order_content.movementMethod = ScrollingMovementMethod.getInstance()
+        adapter = BedItemAdapter(this.activity, ArrayList())
+        bed_list_view.setAdapter(adapter)
+        bed_list_view.setLayoutManager(VirtualLayoutManager(this.activity))
 
         updateInfo()
     }
@@ -50,35 +52,43 @@ class MainFragment: BaseFragment<MainFragmentPresenter, MainView2LayoutBinding>(
     }
 
     override fun showCustomInfo(customInfo: CustomerInfoVO) {
-        //隐藏空页面并展示入住信息
-        ll_empty.visibility = View.GONE
-        ll_custom_view.visibility = View.VISIBLE
-        //床位名称
-        tv_bed_name.text = Constant.BED_NAME
-
-        //显示入住信息
-        tv_custom_name.text = customInfo.named
-        if (customInfo.sex == 0) {
-            tv_custom_gender.setBackgroundResource(R.mipmap.ic_gender_female)
-        } else if (customInfo.sex == 1) {
-            tv_custom_gender.setBackgroundResource(R.mipmap.ic_gender_male)
-        }
-        tv_custom_age.text = "" + customInfo.age + customInfo.ageUnit
-        if (customInfo.inDate != null) {
-            tv_custom_indate.text = "入院日期: " + TimeHandle.getDateTime(customInfo.inDate * 1000, "yyyy.MM.dd")
-        }
-        if (TextUtils.isEmpty(customInfo.advice)) {
-            tv_order_content.text = "暂无"
-        } else {
-            tv_order_content.text = customInfo.advice
-        }
+        //
+    }
 
-        tv_doctor_name.text = customInfo.doctorName
-        tv_nurse_name.text = customInfo.nurseName
+    override fun showFrames(framePartVO: FramePartVO) {
+        //
+    }
 
-        //更新护理项
-        if (customInfo.list != null) {
-            (activity as MainActivity).updateNurseConfig(customInfo.list)
+    override fun showFrameDevices(frameVO: FrameAudioVO) {
+        if (frameVO.frameAudioRoomVOList != null) {
+            FrameHelper.frameDeviceList.clear()
+            for (room in frameVO.frameAudioRoomVOList) {
+                //房间设备
+                if (room.roomDeviceList != null) {
+                    for (roomDevice in room.roomDeviceList) {
+                        var roomBean = FrameDeviceBean()
+                        roomBean.frame = room.frameRoom
+                        roomBean.device = roomDevice
+                        FrameHelper.frameDeviceList.add(roomBean)
+                    }
+                }
+
+                if (room.frameAudioBedVOList != null) {
+                    for (bed in room.frameAudioBedVOList) {
+                        //床位设备
+                        if (bed.bedDeviceList != null) {
+                            for (bedDevice in bed.bedDeviceList) {
+                                var bedBean = FrameDeviceBean()
+                                bedBean.frame = bed.frameBed
+                                bedBean.device = bedDevice
+                                FrameHelper.frameDeviceList.add(bedBean)
+                            }
+                        }
+                    }
+                }
+            }
+
+            adapter?.updateData(FrameHelper.frameDeviceList)
         }
     }
 
@@ -118,13 +128,8 @@ class MainFragment: BaseFragment<MainFragmentPresenter, MainView2LayoutBinding>(
     }
 
     fun updateInfo() {
-        if (!TextUtils.isEmpty(Constant.BED_NAME)) {
-            tv_bed_name.text = Constant.BED_NAME
-        }
-
-        if (Constant.CUSTOM_ID != -1) {
-            ll_empty.visibility = View.GONE
-            presenter.loadCustomInfo(Constant.CUSTOM_ID)
+        if (Constant.DEVICE_STATUS == 1) {
+            presenter.loadFrameDevices(Constant.DEVICE_ID)
         }
     }
 

+ 0 - 107
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/fragment/QrCodeFragment.kt

@@ -1,107 +0,0 @@
-package com.wdkl.app.ncs.conversion_box.fragment
-
-import com.enation.javashop.net.engine.model.NetState
-import com.wdkl.app.ncs.conversion_box.BuildConfig
-import com.wdkl.app.ncs.conversion_box.R
-import com.wdkl.app.ncs.conversion_box.activity.MainActivity
-import com.wdkl.app.ncs.conversion_box.databinding.QrCodeLayBinding
-import com.wdkl.app.ncs.conversion_box.helper.AppUpdateHelper
-import com.wdkl.app.ncs.conversion_box.helper.NetHelper
-import com.wdkl.app.ncs.conversion_box.launch.MainLaunch
-import com.wdkl.ncs.android.lib.base.BaseFragment
-import com.wdkl.ncs.android.lib.utils.*
-import com.wdkl.ncs.android.lib.vo.filter
-import com.wdkl.ncs.android.middleware.common.Constant
-import com.wdkl.ncs.android.middleware.logic.contract.conversion_box.QrCodeFragmentContract
-import com.wdkl.ncs.android.middleware.logic.presenter.conversion_box.QrCodeFragmentPresenter
-import kotlinx.android.synthetic.main.qr_code_lay.*
-import kotlinx.android.synthetic.main.view_bed_name.*
-import java.lang.StringBuilder
-
-class QrCodeFragment : BaseFragment<QrCodeFragmentPresenter, QrCodeLayBinding>(), QrCodeFragmentContract.View {
-    val TAG = "QrCodeFragment"
-
-    val QR_CODE_PATH = "http://m.wdklian.com/care/apk/care.user?type=NCS_DEVICE"
-
-    override fun getLayId(): Int {
-        return R.layout.qr_code_lay
-    }
-
-    override fun bindDagger() {
-        MainLaunch.component.inject(this)
-    }
-
-    override fun init() {
-        tv_bed_name.text = Constant.BED_NAME
-
-        Thread{
-            //val logoBitmap = BitmapFactory.decodeResource(resources, R.mipmap.erlogo)
-            var builder = StringBuilder()
-            builder.append(QR_CODE_PATH)
-            builder.append("&code=")
-            builder.append(Constant.DEVICE_CODE)
-            builder.append("&mac=")
-            builder.append(Constant.LOCAL_MAC)
-            builder.append("&model=")
-            builder.append(Constant.DEVICE_MODEL)
-            builder.append("&hard_ver=")
-            builder.append(Constant.DEVICE_HARD_VER)
-            builder.append("&soft_ver=")
-            builder.append(Constant.DEVICE_SOFT_VER)
-            builder.append("&device_type=")
-            builder.append(Constant.DEVICE_TYPE)
-            builder.append("&device_name=")
-            builder.append(Constant.DEVICE_NAME)
-            val code = EcodeHelper().createQRImage(builder.toString(),200, null)
-            activity.runOnUiThread {
-                view_qr_code?.setImageBitmap(code)
-            }
-        }.start()
-        val macAddr = NetHelper.getInstance().macAddress
-        val ipAddr = NetHelper.getInstance().localIP
-        tv_device_id.text = "设备ID: " + Constant.DEVICE_ID
-        tv_local_ip.text = "本机IP: " + ipAddr
-        tv_local_mac.text = "本机MAC: " + macAddr
-        tv_app_version.text = "版本信息: V" + BuildConfig.VERSION_NAME
-        tv_mcu_version.text = "MCU版本: " + Constant.MCU_VERSION_NUMBER
-    }
-
-    override fun bindEvent() {
-        tv_btn_update_app.setOnClickListener {
-            (activity as MainActivity).checkAppVersion()
-        }
-
-        tv_btn_reboot.setOnClickListener {
-            AppUpdateHelper.reboot(context)
-        }
-    }
-
-    override fun destory() {
-    }
-
-    override fun onError(message: String, type: Int) {
-        getUtils().dismissDialog()
-        errorLog("error",message)
-        showMessage(message)
-    }
-
-    override fun complete(message: String, type: Int) {
-    }
-
-    override fun start() {
-    }
-
-    override fun networkMonitor(state: NetState) {
-        state.filter(onWifi = {
-
-        },onMobile = {
-
-        },offline = {
-
-        })
-    }
-
-    override fun setUrlString(url: String) {
-        //
-    }
-}

+ 1 - 15
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/fragment/SkyCallFragment.kt

@@ -9,7 +9,6 @@ import android.view.ViewGroup
 import com.google.gson.Gson
 import com.wdkl.app.ncs.conversion_box.R
 import com.wdkl.app.ncs.conversion_box.helper.RingPlayHelper
-import com.wdkl.app.ncs.conversion_box.helper.SerialPortHelper
 import com.wdkl.ncs.android.lib.utils.AppTool
 import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.middleware.common.Constant
@@ -69,14 +68,6 @@ class SkyCallFragment: BaseCallFragment(), CallSession.CallSessionCallback {
                 showIncomingCall()
                 RingPlayHelper.playRingTone(baseActivity, R.raw.incoming_call, true)
             }
-
-            2 -> {
-                //探视
-                visiting = true
-                acceptCall()
-                //因为探视请求是由探视机发起的,所以在每一条的探视交互记录中的from为探视机
-                startVisiting(interactionVO!!.fromSipId)
-            }
         }
     }
 
@@ -125,7 +116,6 @@ class SkyCallFragment: BaseCallFragment(), CallSession.CallSessionCallback {
             sky_voice_call_timer.stop()
         }
         RingPlayHelper.stopRingTone()
-        SerialPortHelper.setCallStatus("0")
     }
 
     private fun startOutgoing() {
@@ -145,7 +135,6 @@ class SkyCallFragment: BaseCallFragment(), CallSession.CallSessionCallback {
         sky_voice_call_timeout.visibility = View.VISIBLE
         sky_voice_call_timer.visibility = View.GONE
         startTimer()
-        SerialPortHelper.setCallStatus("1")
     }
 
     //来电界面
@@ -157,7 +146,6 @@ class SkyCallFragment: BaseCallFragment(), CallSession.CallSessionCallback {
         sky_voice_call_timeout.visibility = View.GONE
         sky_voice_call_timer.visibility = View.GONE
         cancelTimer()
-        SerialPortHelper.setCallStatus("1")
     }
 
     //开始接听
@@ -175,7 +163,6 @@ class SkyCallFragment: BaseCallFragment(), CallSession.CallSessionCallback {
         cancelTimer()
         Constant.CALL_STATE = Constant.CALL_STANDBY
         sky_voice_call_timer.stop()
-        SerialPortHelper.setCallStatus("0")
         backToMain()
     }
 
@@ -232,7 +219,6 @@ class SkyCallFragment: BaseCallFragment(), CallSession.CallSessionCallback {
         sky_voice_call_timer.visibility = View.VISIBLE
         sky_voice_call_timer.base = SystemClock.elapsedRealtime()
         sky_voice_call_timer.start()
-        SerialPortHelper.setCallStatus("2")
     }
 
     //创建会话
@@ -434,7 +420,7 @@ class SkyCallFragment: BaseCallFragment(), CallSession.CallSessionCallback {
                             Constant.interactionId = curInteractionVO.id
                             fromId = curTcpModel.fromId
                             acceptCall()
-                            if (!startCall(curInteractionVO.toSipId, Constant.CALL_TYPE == Constant.VOICE_CALL)) {
+                            if (!startCall(curInteractionVO.toSipId, true)) {
                                 //通话失败,重置并返回主界面
                                 Constant.CALL_STATE = Constant.CALL_STANDBY
                                 VoiceUtil.handoffAudioCall(Constant.DEVICE_ID, fromId, Constant.interactionId)

+ 0 - 137
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/fragment/VoiceMsgFragment.kt

@@ -1,137 +0,0 @@
-package com.wdkl.app.ncs.conversion_box.fragment
-
-import android.os.SystemClock
-import android.view.MotionEvent
-import com.enation.javashop.net.engine.model.NetState
-import com.wdkl.app.ncs.conversion_box.R
-import com.wdkl.app.ncs.conversion_box.databinding.VoiceMsgLayBinding
-import com.wdkl.app.ncs.conversion_box.helper.HttpHelper
-import com.wdkl.app.ncs.conversion_box.helper.RecordHelper
-import com.wdkl.app.ncs.conversion_box.launch.MainLaunch
-import com.wdkl.ncs.android.lib.base.BaseFragment
-import com.wdkl.ncs.android.lib.utils.debugLog
-import com.wdkl.ncs.android.lib.utils.errorLog
-import com.wdkl.ncs.android.lib.utils.showMessage
-import com.wdkl.ncs.android.lib.vo.filter
-import com.wdkl.ncs.android.middleware.api.UrlManager
-import com.wdkl.ncs.android.middleware.common.Constant
-import com.wdkl.ncs.android.middleware.logic.contract.conversion_box.VoiceFragmentContract
-import com.wdkl.ncs.android.middleware.logic.presenter.conversion_box.VoiceFragmentPresenter
-import com.wdkl.ncs.android.middleware.tcp.TcpClient
-import com.wdkl.ncs.android.middleware.tcp.channel.ImUtil
-import kotlinx.android.synthetic.main.voice_msg_lay.*
-import java.io.File
-import javax.inject.Inject
-
-class VoiceMsgFragment @Inject constructor() : BaseFragment<VoiceFragmentPresenter, VoiceMsgLayBinding>(), VoiceFragmentContract.View {
-    val TAG = "VoiceMsgFragment"
-
-    var downTime : Long = 0
-    var upTime : Long = 0
-    var downY : Float = 0f
-    var cancel : Boolean = false
-    lateinit var voiceFile : String
-
-    private val urlManager = UrlManager.build()
-
-    override fun getLayId(): Int {
-        return R.layout.voice_msg_lay
-    }
-
-    override fun bindDagger() {
-        MainLaunch.component.inject(this)
-    }
-
-    override fun init() {
-        //
-    }
-
-    override fun bindEvent() {
-        //debugLog(TAG,"bindEvent")
-        tv_voice_button.setOnTouchListener { v, event ->
-            when(event.action) {
-                MotionEvent.ACTION_DOWN -> {
-                    cancel = false
-                    downTime = System.currentTimeMillis()
-                    downY = event.getY()
-                    RecordHelper.getInstance().startRecord()
-                    tv_voice_text.text = "松开留言,上滑取消"
-                    voice_call_timer.base = SystemClock.elapsedRealtime()
-                    voice_call_timer.start()
-                    voiceFile = RecordHelper.getInstance().audiofilePath
-                }
-
-                MotionEvent.ACTION_MOVE -> {
-                    val moveY = event.getY()
-                    if (downY - moveY > 100) {
-                        cancel = true
-                    }
-                }
-
-                MotionEvent.ACTION_UP -> {
-                    upTime = System.currentTimeMillis()
-                    RecordHelper.getInstance().stopRecord()
-                    tv_voice_text.text = "按住说话"
-                    voice_call_timer.base = SystemClock.elapsedRealtime()
-                    voice_call_timer.stop()
-
-                    if (Math.abs(upTime - downTime) <= 1000) {
-                        RecordHelper.getInstance().deleteAudioFile(voiceFile)
-                        showMessage("说话时间太短")
-                    } else if(cancel) {
-                        RecordHelper.getInstance().deleteAudioFile(voiceFile)
-                        showMessage("语音留言已取消")
-                    } else {
-                        //上传语音留言
-                        val callback = object : HttpHelper.UploadCallback {
-                            override fun onFail() {
-                                activity.runOnUiThread {
-                                    showMessage("留言发送失败!")
-                                }
-                            }
-
-                            override fun onSuccess(data: String) {
-                                activity.runOnUiThread {
-                                    val tcpModel = ImUtil.imMsg(Constant.DEVICE_ID, data)
-                                    TcpClient.getInstance().sendMsg(tcpModel.toJson())
-                                    showMessage("留言发送成功!")
-                                }
-                            }
-                        }
-                        HttpHelper.upload(urlManager.base + Constant.UPLOAD_VOICE_MSG_URL, File(voiceFile), callback)
-                    }
-                }
-            }
-
-            return@setOnTouchListener false
-        }
-    }
-
-    override fun destory() {
-        debugLog(TAG,"destory")
-    }
-
-    override fun onError(message: String, type: Int) {
-        getUtils().dismissDialog()
-        errorLog("error",message)
-        showMessage(message)
-    }
-
-    override fun complete(message: String, type: Int) {
-        getUtils().dismissDialog()
-    }
-
-    override fun start() {
-        getUtils().showDialog()
-    }
-
-    override fun networkMonitor(state: NetState) {
-        state.filter(onWifi = {
-
-        },onMobile = {
-
-        },offline = {
-
-        })
-    }
-}

+ 29 - 0
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/helper/CutSerialPortUtil.java

@@ -0,0 +1,29 @@
+package com.wdkl.app.ncs.conversion_box.helper;
+
+/**
+ * Created by 胡博文 on 2018/3/21.
+ */
+
+public class CutSerialPortUtil {
+    public static String delHeadAndEnd(String source, String beginTrim, String endTrim) {
+        if (source == null) {
+            return "";
+        }
+        source = source.trim(); // 循环去掉字符串首的beTrim字符
+        if (source.isEmpty()) {
+            return "";
+        }
+        String beginChar = source.substring(0, 1);
+        if (beginChar.equalsIgnoreCase(beginTrim)) {
+            source = source.substring(1, source.length());
+            beginChar = source.substring(0, 1);
+        }
+        // 循环去掉字符串尾的beTrim字符
+        String endChar = source.substring(source.length() - 1, source.length());
+        if (endChar.equalsIgnoreCase(endTrim)) {
+            source = source.substring(0, source.length() - 1);
+            endChar = source.substring(source.length() - 1, source.length());
+        }
+        return source;
+    }
+}

+ 34 - 0
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/helper/FrameHelper.java

@@ -0,0 +1,34 @@
+package com.wdkl.app.ncs.conversion_box.helper;
+
+import com.wdkl.app.ncs.conversion_box.bean.FrameDeviceBean;
+import com.wdkl.ncs.android.middleware.model.vo.FrameBedVO;
+import com.wdkl.ncs.android.middleware.model.vo.FrameRoomVO;
+
+import java.util.ArrayList;
+
+public class FrameHelper {
+    private static ArrayList<FrameRoomVO> frameRoomVOS = new ArrayList<>();
+    private static ArrayList<FrameBedVO> frameBedVOS = new ArrayList<>();
+
+    //转换盒下属空间结构及设备信息
+    public static ArrayList<FrameDeviceBean> frameDeviceList = new ArrayList<>();
+
+    public static void setRoomFrames(ArrayList<FrameRoomVO> roomFrames) {
+        frameRoomVOS.clear();
+        frameRoomVOS.addAll(roomFrames);
+    }
+
+    public static ArrayList<FrameRoomVO> getFrameRoomVOS() {
+        return frameRoomVOS;
+    }
+
+    public static void setBedFrames(ArrayList<FrameBedVO> bedFrames) {
+        frameBedVOS.clear();
+        frameBedVOS.addAll(bedFrames);
+    }
+
+    public static ArrayList<FrameBedVO> getFrameBedVOS() {
+        return frameBedVOS;
+    }
+
+}

+ 8 - 2
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/helper/MediaPlayHelper.java

@@ -108,8 +108,10 @@ public class MediaPlayHelper {
 
     //播放本地res音频资源
     private void playResMusicNow() {
-        if (mediaPlayer != null && mediaPlayer.isPlaying()) {
+        if (mediaPlayer != null) {
             mediaPlayer.stop();
+            mediaPlayer.reset();
+            mediaPlayer.release();
         }
         mediaPlayer = MediaPlayer.create(BaseApplication.appContext, mResId);
         try {
@@ -140,8 +142,10 @@ public class MediaPlayHelper {
 
     //播放远程或本地存储音频资源
     private void playUrlMusicNow() {
-        if (mediaPlayer != null && mediaPlayer.isPlaying()) {
+        if (mediaPlayer != null) {
             mediaPlayer.stop();
+            mediaPlayer.reset();
+            mediaPlayer.release();
         }
         mediaPlayer = new MediaPlayer();
         try {
@@ -187,6 +191,7 @@ public class MediaPlayHelper {
             try {
                 //if (mediaPlayer.isPlaying()) {
                     mediaPlayer.stop();
+                    mediaPlayer.reset();
                     mediaPlayer.release();
                 //}
             } catch (IllegalStateException e) {
@@ -202,6 +207,7 @@ public class MediaPlayHelper {
             mediaPlayer.setOnCompletionListener(null);
             try {
                 mediaPlayer.stop();
+                mediaPlayer.reset();
                 mediaPlayer.release();
             } catch (IllegalStateException e) {
                 e.printStackTrace();

+ 0 - 35
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/helper/SOSHelper.java

@@ -1,35 +0,0 @@
-package com.wdkl.app.ncs.conversion_box.helper;
-
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-
-import com.wdkl.ncs.android.middleware.common.Constant;
-import com.wdkl.ncs.android.middleware.tcp.channel.OtherUtil;
-
-
-/*
- * 紧急按钮辅助类
- */
-public class SOSHelper {
-
-    private static Handler handler = new Handler(Looper.getMainLooper()) {
-        @Override
-        public void handleMessage(Message msg) {
-            sosStop();
-        }
-    };
-
-    public static void sosStart() {
-        SerialPortHelper.setSosLight("2");
-        OtherUtil.sendSosCall(Constant.DEVICE_ID);
-
-        //60s之后紧急按钮灯自动复位
-        handler.sendEmptyMessageDelayed(110, 60000);
-    }
-
-    public static void sosStop() {
-        handler.removeCallbacksAndMessages(null);
-        SerialPortHelper.setSosLight("0");
-    }
-}

+ 49 - 23
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/helper/SerialPortHelper.java

@@ -1,37 +1,63 @@
 package com.wdkl.app.ncs.conversion_box.helper;
 
+import android.util.Log;
+
 import serialporttest.utils.SerialPortUtil;
 
 public class SerialPortHelper {
 
-    //MIC设置
-    public static void setHandsMIC(boolean isHandsMIC) {
-        if (isHandsMIC) {
-            //打开手柄mic
-            SerialPortUtil.getInstance().sendCommand(SerialPortUtil.MIC, "0", "F");
-        } else {
-            //打开面板mic
-            SerialPortUtil.getInstance().sendCommand(SerialPortUtil.MIC, "1", "F");
-        }
+    //重置设备
+    public static void resetDevice() {
+        SerialPortUtil.getInstance().sendCommand(SerialPortUtil.NET_STATUS , "1", "F");
     }
 
-    /*
-     * 呼叫和通话状态
-     * data: 0 -- 正常,  1 -- 呼叫中, 2 -- 通话中
-     */
-    public static void setCallStatus(String data) {
-        SerialPortUtil.getInstance().sendCommand(SerialPortUtil.CALL_STATUS , data, "F");
+    //sip注册状态: 0-注册中, 1-注册成功, 2-注册失败
+    public static void sipRegState(String state) {
+        SerialPortUtil.getInstance().send(SerialPortUtil.C_HEARD + "3" + SerialPortUtil.C_SEPARATE + state + "1" + SerialPortUtil.C_END);
     }
 
-    /**
-     * 设置卫生间紧急按钮灯状态: 0关闭1打开2闪烁
-     */
-    public static void setSosLight(String state) {
-        SerialPortUtil.getInstance().sendCommand(SerialPortUtil.ULED, state, "F");
+
+    //SIP呼入(主机呼叫分机、主机应答分机)
+    public static void openSoundChannel(String address) {
+        SerialPortUtil.getInstance().send(SerialPortUtil.C_HEARD + "4" + SerialPortUtil.C_SEPARATE + address + "F" + SerialPortUtil.C_END);
     }
 
-    //重置设备
-    public static void resetDevice() {
-        SerialPortUtil.getInstance().sendCommand(SerialPortUtil.NET_STATUS , "1", "F");
+    //SIP挂断(主机挂断分机) address为FFFFF时,为关闭全部通道
+    public static void closeSoundChannel(String address) {
+        Log.e("wzl", "closeSoundChannel: " + address);
+        SerialPortUtil.getInstance().send(SerialPortUtil.C_HEARD + "5" + SerialPortUtil.C_SEPARATE + address + "F" + SerialPortUtil.C_END);
+    }
+
+    //开启广播模式
+    public static void openBroadcast() {
+        SerialPortUtil.getInstance().send(SerialPortUtil.C_HEARD + "6" + SerialPortUtil.C_SEPARATE + "FFFF" + "F" + SerialPortUtil.C_END);
+    }
+
+    //打开指定门灯
+    public static void openDoorLight(String address) {
+        SerialPortUtil.getInstance().send(SerialPortUtil.C_HEARD + "7" + SerialPortUtil.C_SEPARATE + address + "F" + SerialPortUtil.C_END);
+    }
+
+    //关闭指定门灯
+    public static void closeDoorLight(String address) {
+        SerialPortUtil.getInstance().send(SerialPortUtil.C_HEARD + "8" + SerialPortUtil.C_SEPARATE + address + "F" + SerialPortUtil.C_END);
+    }
+
+    //取消紧急呼叫
+    public static void closeEmergency(String address) {
+        SerialPortUtil.getInstance().send(SerialPortUtil.C_HEARD + "9" + SerialPortUtil.C_SEPARATE + address + "F" + SerialPortUtil.C_END);
+    }
+
+    public static void register(String address){
+        SerialPortUtil.getInstance().send(SerialPortUtil.C_HEARD + "D" + SerialPortUtil.C_SEPARATE + address + "F" + SerialPortUtil.C_END);
+    }
+
+    public static void changeRegisterState(){
+        SerialPortUtil.getInstance().send(SerialPortUtil.C_HEARD + "E" + SerialPortUtil.C_SEPARATE + "FFFF" + "Y" + SerialPortUtil.C_END);
+    }
+
+    //设置通话模式: 0-双工, 1-单工
+    public static void changeCallingMode(String mode) {
+        SerialPortUtil.getInstance().send(SerialPortUtil.C_HEARD + "F" + SerialPortUtil.C_SEPARATE + "FFFF" + mode + SerialPortUtil.C_END);
     }
 }

+ 0 - 17
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/helper/Utils.java

@@ -1,17 +0,0 @@
-package com.wdkl.app.ncs.conversion_box.helper;
-
-import android.hardware.Camera;
-
-import com.wdkl.ncs.android.middleware.common.Constant;
-
-public class Utils {
-
-    public static void checkCameraSupport() {
-        int num = Camera.getNumberOfCameras();
-        if (num > 0) {
-            Constant.supportCamera = true;
-        } else {
-            Constant.supportCamera = false;
-        }
-    }
-}

+ 4 - 4
conversion_box/src/main/java/com/wdkl/app/ncs/conversion_box/launch/MainLaunch.kt

@@ -1,19 +1,19 @@
 package com.wdkl.app.ncs.conversion_box.launch
 
 import com.enation.javashop.android.jrouter.external.annotation.Router
-import com.wdkl.app.ncs.conversion_box.di.Callingbed2Component
-import com.wdkl.app.ncs.conversion_box.di.DaggerCallingbed2Component
+import com.wdkl.app.ncs.conversion_box.di.ConversionBoxComponent
+import com.wdkl.app.ncs.conversion_box.di.DaggerConversionBoxComponent
 import com.wdkl.ncs.android.lib.base.BaseLaunch
 import com.wdkl.ncs.android.middleware.di.DaggerManager
 
 @Router(path = "/conversion_box/launch")
 class MainLaunch :BaseLaunch() {
     companion object {
-        lateinit var component:Callingbed2Component
+        lateinit var component:ConversionBoxComponent
     }
 
     override fun moduleInit() {
-        component = DaggerCallingbed2Component.builder()
+        component = DaggerConversionBoxComponent.builder()
                 .applicationComponent(DaggerManager.APPLICATION_COMPONENT)
                 .build()
     }

+ 37 - 0
conversion_box/src/main/res/layout/bed_item_view.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <TextView
+        android:id="@+id/tv_bed_item_name"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="2"
+        android:padding="8dp"
+        android:text="空间"/>
+
+    <TextView
+        android:id="@+id/tv_bed_device_name"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="2"
+        android:padding="8dp"
+        android:text="设备"/>
+
+    <TextView
+        android:id="@+id/tv_bed_item_type"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:padding="8dp"
+        android:text="类型"/>
+
+    <TextView
+        android:id="@+id/tv_bed_item_addr"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:padding="8dp"
+        android:text="地址"/>
+</LinearLayout>

+ 0 - 202
conversion_box/src/main/res/layout/callingbed2_main_lay.xml

@@ -1,202 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<layout xmlns:bind="http://schemas.android.com/apk/res-auto">
-    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="#EAF2F9">
-
-        <include
-            android:id="@+id/activity_calling_bed_layout_title"
-            layout="@layout/view_title_layout"/>
-
-        <!--底部按钮区域-->
-        <RelativeLayout
-            android:id="@+id/ll_bottom"
-            android:layout_width="match_parent"
-            android:layout_height="80dp"
-            android:layout_alignParentBottom="true"
-            android:background="@color/main_color"
-            android:gravity="center_vertical"
-            android:paddingLeft="20dp"
-            android:paddingRight="20dp">
-
-            <TextView
-                android:id="@+id/tv_btn_home"
-                android:layout_width="140dp"
-                android:layout_height="wrap_content"
-                android:paddingLeft="32dp"
-                android:paddingTop="10dp"
-                android:paddingBottom="10dp"
-                android:background="@mipmap/bg_bottom_btn"
-                android:drawableLeft="@mipmap/ic_home"
-                android:drawablePadding="10dp"
-                android:text="首页"
-                android:textColor="@drawable/selector_bottom_btn_text_color"
-                android:textSize="24sp"/>
-
-            <TextView
-                android:id="@+id/tv_btn_more"
-                android:layout_width="140dp"
-                android:layout_height="wrap_content"
-                android:layout_toRightOf="@id/tv_btn_home"
-                android:paddingLeft="32dp"
-                android:paddingTop="10dp"
-                android:paddingBottom="10dp"
-                android:layout_marginLeft="20dp"
-                android:background="@mipmap/bg_bottom_btn"
-                android:drawableLeft="@mipmap/ic_more"
-                android:drawablePadding="10dp"
-                android:text="更多"
-                android:textColor="@drawable/selector_bottom_btn_text_color"
-                android:textSize="24sp"/>
-
-            <TextView
-                android:id="@+id/tv_btn_cost"
-                android:layout_width="140dp"
-                android:layout_height="wrap_content"
-                android:layout_toRightOf="@id/tv_btn_more"
-                android:paddingLeft="32dp"
-                android:paddingTop="10dp"
-                android:paddingBottom="10dp"
-                android:layout_marginLeft="20dp"
-                android:background="@mipmap/bg_bottom_btn"
-                android:drawableLeft="@mipmap/ic_cost"
-                android:drawablePadding="10dp"
-                android:text="费用"
-                android:textColor="@drawable/selector_bottom_btn_text_color"
-                android:textSize="24sp"/>
-
-            <TextView
-                android:id="@+id/tv_btn_voice_call"
-                android:layout_width="140dp"
-                android:layout_height="wrap_content"
-                android:layout_alignParentRight="true"
-                android:paddingLeft="32dp"
-                android:paddingTop="10dp"
-                android:paddingBottom="10dp"
-                android:background="@mipmap/bg_bottom_btn"
-                android:drawableLeft="@mipmap/ic_call"
-                android:drawablePadding="10dp"
-                android:text="呼叫"
-                android:textColor="@drawable/selector_bottom_btn_text_color"
-                android:textSize="24sp"/>
-
-            <TextView
-                android:id="@+id/tv_btn_support"
-                android:layout_width="140dp"
-                android:layout_height="wrap_content"
-                android:layout_toLeftOf="@id/tv_btn_voice_call"
-                android:paddingLeft="32dp"
-                android:paddingTop="10dp"
-                android:paddingBottom="10dp"
-                android:layout_marginRight="20dp"
-                android:background="@mipmap/bg_bottom_btn"
-                android:drawableLeft="@mipmap/ic_support"
-                android:drawablePadding="10dp"
-                android:text="增援"
-                android:textColor="@drawable/selector_bottom_btn_text_color"
-                android:textSize="24sp"/>
-        </RelativeLayout>
-
-        <LinearLayout
-            android:id="@+id/rl_left_view"
-            android:layout_width="220dp"
-            android:layout_height="match_parent"
-            android:layout_above="@id/ll_bottom"
-            android:layout_below="@id/activity_calling_bed_layout_title"
-            android:layout_marginTop="4dp"
-            android:paddingLeft="10dp"
-            android:paddingRight="10dp">
-
-            <!--左侧护理列表-->
-            <android.support.v7.widget.RecyclerView
-                android:id="@+id/rv_left_list"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent" />
-
-        </LinearLayout>
-
-        <!--右侧fragment区域-->
-        <FrameLayout
-            android:id="@+id/callingbed2_main_frame"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_marginTop="10dp"
-            android:layout_marginBottom="10dp"
-            android:layout_marginRight="10dp"
-            android:layout_toRightOf="@id/rl_left_view"
-            android:layout_above="@id/ll_bottom"
-            android:layout_below="@id/activity_calling_bed_layout_title" />
-
-        <!--通话界面-->
-        <FrameLayout
-            android:id="@+id/call_frame"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent" />
-
-
-
-
-        <!--呼叫状态显示-->
-        <LinearLayout
-            android:id="@+id/ll_call_view"
-            android:layout_width="match_parent"
-            android:layout_height="86dp"
-            android:layout_marginTop="10dp"
-            android:layout_marginBottom="10dp"
-            android:layout_marginRight="10dp"
-            android:layout_toRightOf="@id/rl_left_view"
-            android:layout_below="@id/activity_calling_bed_layout_title"
-            android:background="#37C127"
-            android:gravity="center_vertical"
-            android:visibility="gone">
-
-            <com.wdkl.ncs.android.lib.widget.MarqueeTextView
-                android:id="@+id/tv_call_bed_name"
-                android:layout_width="260dp"
-                android:layout_height="match_parent"
-                android:gravity="center"
-                android:ellipsize="marquee"
-                android:focusable="true"
-                android:focusableInTouchMode="true"
-                android:marqueeRepeatLimit="-1"
-                android:singleLine="true"
-                android:textColor="@color/white"
-                android:textSize="54sp"/>
-
-            <com.wdkl.ncs.android.lib.widget.MarqueeTextView
-                android:id="@+id/tv_call_state"
-                android:layout_width="320dp"
-                android:layout_height="match_parent"
-                android:paddingLeft="10dp"
-                android:paddingRight="10dp"
-                android:gravity="center"
-                android:ellipsize="marquee"
-                android:focusable="true"
-                android:focusableInTouchMode="true"
-                android:marqueeRepeatLimit="-1"
-                android:singleLine="true"
-                android:textColor="@color/red_color"
-                android:textSize="32sp" />
-
-            <Chronometer
-                android:id="@+id/voice_call_timer_view"
-                android:layout_width="wrap_content"
-                android:layout_height="match_parent"
-                android:layout_marginLeft="20dp"
-                android:gravity="center"
-                android:text="00:00"
-                android:textColor="@color/white"
-                android:textSize="24sp" />
-
-            <ImageView
-                android:id="@+id/iv_call_end"
-                android:layout_width="60dp"
-                android:layout_height="60dp"
-                android:layout_marginLeft="20dp"
-                android:src="@drawable/selector_call_end"
-                android:scaleType="centerInside"/>
-        </LinearLayout>
-
-    </RelativeLayout>
-</layout>

+ 53 - 0
conversion_box/src/main/res/layout/conversion_box_main_lay.xml

@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout>
+    <RelativeLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <LinearLayout
+            android:id="@+id/ll_bedlist_title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+            <TextView
+                android:id="@+id/tv_bed_list_frame"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="2"
+                android:padding="8dp"
+                android:text="设备空间"
+                android:textColor="@color/main_color"/>
+            <TextView
+                android:id="@+id/tv_bed_list_name"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="2"
+                android:padding="8dp"
+                android:text="设备名称"
+                android:textColor="@color/main_color"/>
+            <TextView
+                android:id="@+id/tv_bed_list_type"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:padding="8dp"
+                android:text="设备类型"
+                android:textColor="@color/main_color"/>
+            <TextView
+                android:id="@+id/tv_bed_list_uart"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:padding="8dp"
+                android:text="设备地址"
+                android:textColor="@color/main_color"/>
+        </LinearLayout>
+
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/bed_list_view"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_below="@id/ll_bedlist_title"/>
+
+    </RelativeLayout>
+</layout>

+ 135 - 0
conversion_box/src/main/res/layout/main_activity_layout.xml

@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout>
+    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="#EAF2F9">
+
+        <include
+            android:id="@+id/activity_calling_bed_layout_title"
+            layout="@layout/view_title_layout"/>
+
+        <!--底部按钮区域-->
+        <RelativeLayout
+            android:id="@+id/ll_bottom"
+            android:layout_width="match_parent"
+            android:layout_height="60dp"
+            android:layout_alignParentBottom="true"
+            android:background="@color/main_color"
+            android:gravity="center_vertical"
+            android:paddingLeft="20dp"
+            android:paddingRight="20dp">
+
+            <TextView
+                android:id="@+id/tv_btn_home"
+                android:layout_width="140dp"
+                android:layout_height="wrap_content"
+                android:paddingLeft="32dp"
+                android:paddingTop="6dp"
+                android:paddingBottom="6dp"
+                android:background="@mipmap/bg_bottom_btn"
+                android:drawableLeft="@mipmap/ic_home"
+                android:drawablePadding="10dp"
+                android:text="首页"
+                android:textColor="@drawable/selector_bottom_btn_text_color"
+                android:textSize="24sp"/>
+
+            <TextView
+                android:id="@+id/tv_btn_settings"
+                android:layout_width="140dp"
+                android:layout_height="wrap_content"
+                android:layout_toRightOf="@id/tv_btn_home"
+                android:paddingLeft="32dp"
+                android:paddingTop="6dp"
+                android:paddingBottom="6dp"
+                android:layout_marginLeft="20dp"
+                android:background="@mipmap/bg_bottom_btn"
+                android:drawableLeft="@mipmap/ic_more"
+                android:drawablePadding="10dp"
+                android:text="设置"
+                android:textColor="@drawable/selector_bottom_btn_text_color"
+                android:textSize="24sp"/>
+
+
+            <TextView
+                android:id="@+id/tv_btn_update"
+                android:layout_width="140dp"
+                android:layout_height="wrap_content"
+                android:layout_toRightOf="@id/tv_btn_settings"
+                android:paddingLeft="32dp"
+                android:paddingTop="6dp"
+                android:paddingBottom="6dp"
+                android:layout_marginLeft="20dp"
+                android:background="@mipmap/bg_bottom_btn"
+                android:drawableLeft="@mipmap/ic_support"
+                android:drawablePadding="10dp"
+                android:text="升级"
+                android:textColor="@drawable/selector_bottom_btn_text_color"
+                android:textSize="24sp"/>
+        </RelativeLayout>
+
+        <!--fragment区域-->
+        <FrameLayout
+            android:id="@+id/callingbed2_main_frame"
+            android:layout_width="500dp"
+            android:layout_height="match_parent"
+            android:layout_marginTop="10dp"
+            android:layout_marginBottom="10dp"
+            android:layout_marginRight="10dp"
+            android:layout_above="@id/ll_bottom"
+            android:layout_below="@id/activity_calling_bed_layout_title" />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_toRightOf="@id/callingbed2_main_frame"
+            android:layout_below="@id/activity_calling_bed_layout_title"
+            android:layout_above="@id/ll_bottom"
+            android:orientation="vertical">
+            <TextView
+                android:id="@+id/tv_mac_addr"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="@color/color_red"
+                android:text="MAC:"/>
+            <TextView
+                android:id="@+id/tv_mcu"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="@color/color_red"
+                android:text="MCU:"/>
+            <TextView
+                android:id="@+id/tv_device_status"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="10dp"
+                android:textSize="20sp"
+                android:textColor="@color/main_color"
+                android:text="设备状态:"/>
+            <TextView
+                android:id="@+id/tv_call_state"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="10dp"
+                android:textSize="20sp"
+                android:textColor="@color/main_color"
+                android:text="呼叫状态: 待机中"/>
+            <TextView
+                android:id="@+id/tv_uart_info"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="10dp"
+                android:textSize="20sp"
+                android:textColor="@color/main_color"
+                android:text="串口:"/>
+        </LinearLayout>
+
+        <!--通话界面-->
+        <FrameLayout
+            android:id="@+id/call_frame"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:visibility="gone"/>
+
+    </RelativeLayout>
+</layout>

+ 1 - 3
conversion_box/src/main/res/values/strings.xml

@@ -1,5 +1,3 @@
 <resources>
-    <string name="app_name">NCS-7寸床头机</string>
-    <string name="local_sip">4000360960</string>
-    <string name="target_sip">4000348830</string>
+    <string name="app_name">NCS-语音转换盒</string>
 </resources>

+ 3 - 3
gradle.properties

@@ -14,11 +14,11 @@
 # org.gradle.parallel=true
 #Wed Sep 27 17:07:24 CST 2017
 systemProp.http.proxyHost=mirrors.neusoft.edu.cn
-org.gradle.jvmargs=-XX\:MaxHeapSize\=4096m -Xmx4096m
 systemProp.http.proxyPort=80
+org.gradle.jvmargs=-XX\:MaxHeapSize\=4096m -Xmx4096m
 org.gradle.daemon=true
 org.gradle.parallel=true
 org.gradle.configureondemand=true
 #android.enableAapt2=false
-#android.useAndroidX=true
-#android.enableJetifier=true
+#android.useAndroidX=false
+#android.enableJetifier=false

+ 1 - 1
middleware/build.gradle

@@ -57,7 +57,7 @@ dependencies {
 
     compile project(':common')
     compile project(':resource')
-    compile project(':bedlib')
+    compile project(':traditionlib')
 
     /**
      * Dagger编译依赖

+ 1 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/api/ApiManager.kt

@@ -132,7 +132,7 @@ object ApiManager {
 
         val API_HELLO :HelloApi by lazy { apiFactory.createService(HelloApi::class.java, urlManager.buyer)}
 
-        val API_BED_DEVICE2 :BedDevice2Api by lazy { apiFactory.createService(BedDevice2Api::class.java, urlManager.base) }
+        val API_BOX_DEVICE :BoxDeviceApi by lazy { apiFactory.createService(BoxDeviceApi::class.java, urlManager.base) }
 
 
         /**

+ 10 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/api/BedDevice2Api.kt

@@ -4,12 +4,20 @@ import io.reactivex.Observable
 import okhttp3.ResponseBody
 import retrofit2.http.*
 
-interface BedDevice2Api {
+interface BoxDeviceApi {
 
     //设备信息
-    @GET("/deviceBed/getBedDeviceInfoByEthMac/{ethMac}")
+    @GET("/deviceNurse/getDeviceByEthMac/{ethMac}")
     fun getDeviceInfo(@Path("ethMac") ethMac :String): Observable<ResponseBody>
 
+    //科室空间结构
+    @GET("/deviceNurse/getFramePart/{partId}")
+    fun getFramePart(@Path("partId") partId :Int): Observable<ResponseBody>
+
+    //转换盒下属空间结构及设备信息
+    @GET("/deviceRs485/get_frame_by_audio_id/{audioId}")
+    fun getFrameDevice(@Path("audioId") audioId :Int): Observable<ResponseBody>
+
     //入住信息
     @GET("/deviceBed/getCustomerInfo/{customerId}")
     fun getCustomInfo(@Path("customerId") customerId :Int): Observable<ResponseBody>

+ 3 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/api/UrlManager.kt

@@ -75,7 +75,9 @@ private class ProUrlManager : UrlManager{
 
     override val base: String
         //get() = "http://api.%s.wdklian.com/"
-        get() = "http://172.28.100.100:8006"
+        //get() = "http://172.28.100.100:8006"
+        get() = "http://8.129.220.143:8006/"
+
         //get() = "http://dev.base.wdklian.com:6005/"
         //get() = "http://47.106.200.55:8006"
 

+ 8 - 22
middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constant.java

@@ -1,5 +1,9 @@
 package com.wdkl.ncs.android.middleware.common;
 
+import com.wdkl.ncs.android.middleware.model.vo.FrameAudioRoomVO;
+
+import java.util.ArrayList;
+
 public class Constant {
 
     public static String APP_PATH = "";
@@ -19,9 +23,6 @@ public class Constant {
     //TCP连接是否成功
     public static boolean TCP_CONNECTED = false;
 
-    //语音留言上传地址
-    public static final String UPLOAD_VOICE_MSG_URL = "/ncs/upload/File";
-
     public static boolean inday = true;
 
     //待机
@@ -40,13 +41,6 @@ public class Constant {
     public static int CALL_STATE = CALL_STANDBY;
 
 
-    public final static int VOICE_CALL = 0;
-
-    public final static int VIDEO_CALL = 1;
-
-    //通话类型
-    public static int CALL_TYPE = VOICE_CALL;
-
     //MAC地址
     public static String LOCAL_MAC = "";
 
@@ -59,19 +53,14 @@ public class Constant {
     //SIP ID
     public static String SIP_ID = "";
 
-    //探视主机sip id
-    public static String SIP_VISIT_HOST_ID = "";
-    //是否探视中
-    //public static boolean VISITING = false;
-
     //科室id
     public static Integer PART_ID;
 
-    //床位名称
-    public static String BED_NAME = "";
+    //设备启用状态
+    public static Integer DEVICE_STATUS = -1;
 
     //设备类型
-    public static Integer DEVICE_TYPE = 4;
+    public static Integer DEVICE_TYPE = 11;
     /**
      * 注册设备出厂编号
      */
@@ -95,7 +84,7 @@ public class Constant {
     /**
      * 设备别名
      */
-    public static String DEVICE_NAME = "病床分机";
+    public static String DEVICE_NAME = "总线转换盒";
 
     //MCU版本
     public static String MCU_VERSION_NUMBER = "";
@@ -106,9 +95,6 @@ public class Constant {
     //Interaction ID
     public static Integer interactionId = -1;
 
-    //设备是否有camera
-    public static boolean supportCamera = false;
-
     /**
      * Sip注册状态
      */

+ 2 - 3
middleware/src/main/code/com/wdkl/ncs/android/middleware/di/ApiProvides.kt

@@ -1,7 +1,6 @@
 package com.wdkl.ncs.android.middleware.di
 
 import com.wdkl.ncs.android.middleware.api.*
-import com.enation.javashop.net.engine.core.NetEngineFactory
 import dagger.Module
 import dagger.Provides
 
@@ -186,7 +185,7 @@ class ApiProvides {
     }
 
     @Provides
-    fun provideBedDevice2Api() :BedDevice2Api {
-        return ApiManager.API_BED_DEVICE2
+    fun provideBedDevice2Api() :BoxDeviceApi {
+        return ApiManager.API_BOX_DEVICE
     }
 }

+ 1 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/di/ApplicationComponent.kt

@@ -1,7 +1,6 @@
 package com.wdkl.ncs.android.middleware.di
 
 import com.wdkl.ncs.android.middleware.api.*
-import com.umeng.socialize.media.Base
 import dagger.Component
 
 /**
@@ -139,5 +138,5 @@ interface ApplicationComponent {
 
     fun provideHelloApi(): HelloApi
 
-    fun provideBedDevice2Api() :BedDevice2Api
+    fun provideBedDevice2Api() :BoxDeviceApi
 }

+ 0 - 8
middleware/src/main/code/com/wdkl/ncs/android/middleware/di/PresenterComponent.kt

@@ -57,12 +57,4 @@ interface PresenterComponent {
     fun inject(presenter: AppUpdatePresenter)
 
     fun inject(presenter: MainFragmentPresenter)
-
-    fun inject(presenter: CallFragmentPresenter)
-
-    fun inject(presenter: VoiceFragmentPresenter)
-
-    fun inject(presenter: QrCodeFragmentPresenter)
-
-    fun inject(presenter: CostFragmentPresenter)
 }

+ 0 - 13
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/conversion_box/CallFragmentContract.kt

@@ -1,13 +0,0 @@
-package com.wdkl.ncs.android.middleware.logic.contract.conversion_box
-
-import com.wdkl.ncs.android.lib.base.BaseContract
-
-interface CallFragmentContract {
-    interface View : BaseContract.BaseView {
-        //
-    }
-
-    interface Presenter : BaseContract.BasePresenter {
-        //
-    }
-}

+ 0 - 20
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/conversion_box/CostFragmentContract.kt

@@ -1,20 +0,0 @@
-package com.wdkl.ncs.android.middleware.logic.contract.conversion_box
-
-import com.wdkl.ncs.android.lib.base.BaseContract
-import com.wdkl.ncs.android.middleware.model.vo.CustomerFeeConfigByGroupNameVO
-
-interface CostFragmentContract {
-    interface View : BaseContract.BaseView {
-
-        fun showCustomCost(cost: ArrayList<CustomerFeeConfigByGroupNameVO>)
-
-        fun onNoNet()
-    }
-
-    interface Presenter : BaseContract.BasePresenter {
-
-        //获取客户费用信息
-        fun loadCustomCost(customId: Int)
-
-    }
-}

+ 2 - 8
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/conversion_box/MainActivityContract.kt

@@ -4,17 +4,14 @@ import com.wdkl.ncs.android.lib.base.BaseContract
 import com.wdkl.ncs.android.middleware.model.dos.AppVersionDO
 import com.wdkl.ncs.android.middleware.model.dos.PartSettingDO
 import com.wdkl.ncs.android.middleware.model.dto.TcpSeverDTO
-import com.wdkl.ncs.android.middleware.model.vo.BedDeviceInfoVO
-import com.wdkl.ncs.android.middleware.model.vo.CallRecordVO
+import com.wdkl.ncs.android.middleware.model.vo.DeviceNurseInfoVO
 
 //定义接口
 interface MainActivityContract {
 
     interface View :BaseContract.BaseView {
 
-        fun showDeviceInfo(deviceInfo: BedDeviceInfoVO)
-
-        fun showCallRecords(record : CallRecordVO)
+        fun showDeviceInfo(deviceInfo: DeviceNurseInfoVO)
 
         fun setPartSettings(partSetting : PartSettingDO)
 
@@ -30,9 +27,6 @@ interface MainActivityContract {
         //获取设备信息
         fun loadDeviceInfo(mac: String)
 
-        //获取左侧交互记录
-        fun loadCallRecords(page_no:Int, page_size:Int, customer_id:Int)
-
         //获取设置参数
         fun loadPartSettings(partId: Int)
 

+ 11 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/conversion_box/MainFragmentContract.kt

@@ -2,6 +2,8 @@ package com.wdkl.ncs.android.middleware.logic.contract.conversion_box
 
 import com.wdkl.ncs.android.lib.base.BaseContract
 import com.wdkl.ncs.android.middleware.model.vo.CustomerInfoVO
+import com.wdkl.ncs.android.middleware.model.vo.FrameAudioVO
+import com.wdkl.ncs.android.middleware.model.vo.FramePartVO
 
 interface MainFragmentContract {
 
@@ -9,6 +11,10 @@ interface MainFragmentContract {
 
         fun showCustomInfo(customInfo: CustomerInfoVO)
 
+        fun showFrames(framePartVO: FramePartVO)
+
+        fun showFrameDevices(frameVO: FrameAudioVO)
+
         fun onNoNet()
     }
 
@@ -17,5 +23,10 @@ interface MainFragmentContract {
         //获取病人信息
         fun loadCustomInfo(customId: Int)
 
+        //获取空间结构
+        fun loadFrame(partId: Int)
+
+        //通过转换盒设备id获取对应的空间结构及设备
+        fun loadFrameDevices(audioId: Int)
     }
 }

+ 0 - 13
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/conversion_box/QrCodeFragmentContract.kt

@@ -1,13 +0,0 @@
-package com.wdkl.ncs.android.middleware.logic.contract.conversion_box
-
-import com.wdkl.ncs.android.lib.base.BaseContract
-
-interface QrCodeFragmentContract {
-    interface View : BaseContract.BaseView {
-        fun setUrlString(url: String)
-    }
-
-    interface Presenter : BaseContract.BasePresenter {
-        fun loadUrlString()
-    }
-}

+ 0 - 13
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/conversion_box/VoiceFragmentContract.kt

@@ -1,13 +0,0 @@
-package com.wdkl.ncs.android.middleware.logic.contract.conversion_box
-
-import com.wdkl.ncs.android.lib.base.BaseContract
-
-interface VoiceFragmentContract {
-    interface View : BaseContract.BaseView {
-        //
-    }
-
-    interface Presenter : BaseContract.BasePresenter {
-        //
-    }
-}

+ 0 - 14
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/conversion_box/CallFragmentPresenter.kt

@@ -1,14 +0,0 @@
-package com.wdkl.ncs.android.middleware.logic.presenter.conversion_box
-
-import com.wdkl.ncs.android.lib.base.RxPresenter
-import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
-import com.wdkl.ncs.android.middleware.logic.contract.conversion_box.CallFragmentContract
-import javax.inject.Inject
-
-class CallFragmentPresenter @Inject constructor(): RxPresenter<CallFragmentContract.View>(), CallFragmentContract.Presenter {
-
-    override fun bindDagger() {
-        MiddlewareDaggerComponent.component.inject(this)
-    }
-
-}

+ 0 - 65
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/conversion_box/CostFragmentPresenter.kt

@@ -1,65 +0,0 @@
-package com.wdkl.ncs.android.middleware.logic.presenter.conversion_box
-
-import com.enation.javashop.net.engine.plugin.connection.ConnectionQuality
-import com.enation.javashop.net.engine.plugin.exception.ExceptionHandle
-import com.enation.javashop.net.engine.utils.ThreadFromUtils
-import com.google.gson.FieldNamingPolicy
-import com.google.gson.GsonBuilder
-import com.google.gson.reflect.TypeToken
-import com.wdkl.ncs.android.lib.base.RxPresenter
-import com.wdkl.ncs.android.lib.utils.ConnectionObserver
-import com.wdkl.ncs.android.lib.utils.getJsonString
-import com.wdkl.ncs.android.middleware.api.BedDevice2Api
-import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
-import com.wdkl.ncs.android.middleware.logic.contract.conversion_box.CostFragmentContract
-import com.wdkl.ncs.android.middleware.model.vo.CustomerFeeConfigByGroupNameVO
-import io.reactivex.disposables.Disposable
-import javax.inject.Inject
-
-class CostFragmentPresenter @Inject constructor() : RxPresenter<CostFragmentContract.View>(), CostFragmentContract.Presenter {
-    @Inject
-    protected lateinit var bedDevice2Api : BedDevice2Api
-
-    override fun bindDagger() {
-        MiddlewareDaggerComponent.component.inject(this)
-    }
-
-    private val observer = object : ConnectionObserver<Any>() {
-        override fun onStartWithConnection() {
-            providerView().start()
-        }
-
-        override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
-            providerView().complete("")
-            providerView().showCustomCost(result as ArrayList<CustomerFeeConfigByGroupNameVO>)
-        }
-
-        override fun onErrorWithConnection(error: ExceptionHandle.ResponeThrowable, connectionQuality: ConnectionQuality) {
-            providerView().onError(error.customMessage)
-        }
-
-        override fun attachSubscribe(var1: Disposable) {
-            addDisposable(var1)
-        }
-
-
-        override fun onNoneNet() {
-            super.onNoneNet()
-            providerView().onNoNet()
-        }
-    }
-
-    override fun loadCustomCost(customId: Int) {
-        bedDevice2Api.getCustomCost(customId)
-                .map {
-                    val data = it.getJsonString()
-                    val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
-                    val itemType = object : TypeToken<ArrayList<CustomerFeeConfigByGroupNameVO>>(){}.type
-                    val customCostVO = gson.fromJson<ArrayList<CustomerFeeConfigByGroupNameVO>>(data, itemType)
-
-                    return@map customCostVO
-                }
-                .compose(ThreadFromUtils.defaultSchedulers())
-                .subscribe(observer)
-    }
-}

+ 9 - 28
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/conversion_box/MainActivityPresenter.kt

@@ -7,14 +7,13 @@ import com.google.gson.FieldNamingPolicy
 import com.google.gson.GsonBuilder
 import com.wdkl.ncs.android.lib.base.RxPresenter
 import com.wdkl.ncs.android.lib.utils.*
-import com.wdkl.ncs.android.middleware.api.BedDevice2Api
+import com.wdkl.ncs.android.middleware.api.BoxDeviceApi
 import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
 import com.wdkl.ncs.android.middleware.logic.contract.conversion_box.MainActivityContract
 import com.wdkl.ncs.android.middleware.model.dos.AppVersionDO
 import com.wdkl.ncs.android.middleware.model.dos.PartSettingDO
 import com.wdkl.ncs.android.middleware.model.dto.TcpSeverDTO
-import com.wdkl.ncs.android.middleware.model.vo.BedDeviceInfoVO
-import com.wdkl.ncs.android.middleware.model.vo.CallRecordVO
+import com.wdkl.ncs.android.middleware.model.vo.DeviceNurseInfoVO
 import io.reactivex.disposables.Disposable
 import javax.inject.Inject
 
@@ -24,7 +23,7 @@ class MainActivityPresenter @Inject constructor() :RxPresenter<MainActivityContr
     }
 
     @Inject
-    protected lateinit var bedDevice2Api: BedDevice2Api
+    protected lateinit var boxDeviceApi: BoxDeviceApi
 
     private val observer = object :ConnectionObserver<Any>() {
         override fun onStartWithConnection() {
@@ -33,18 +32,12 @@ class MainActivityPresenter @Inject constructor() :RxPresenter<MainActivityContr
 
         override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
             when (result) {
-                is BedDeviceInfoVO -> {
+                is DeviceNurseInfoVO -> {
                     //设备信息
                     providerView().complete("")
                     providerView().showDeviceInfo(result)
                 }
 
-                is CallRecordVO -> {
-                    //呼叫记录
-                    providerView().complete("")
-                    providerView().showCallRecords(result)
-                }
-
                 is PartSettingDO -> {
                     //设置参数
                     providerView().complete("")
@@ -80,10 +73,10 @@ class MainActivityPresenter @Inject constructor() :RxPresenter<MainActivityContr
     }
 
     override fun loadDeviceInfo(mac: String) {
-        bedDevice2Api.getDeviceInfo(mac)
+        boxDeviceApi.getDeviceInfo(mac)
                 .map {
                     val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
-                    val deviceInfo = gson.fromJson(it.getJsonString(), BedDeviceInfoVO::class.java)
+                    val deviceInfo = gson.fromJson(it.getJsonString(), DeviceNurseInfoVO::class.java)
 
                     return@map deviceInfo
                 }
@@ -91,20 +84,8 @@ class MainActivityPresenter @Inject constructor() :RxPresenter<MainActivityContr
                 .subscribe(observer)
     }
 
-    override fun loadCallRecords(page_no: Int, page_size: Int, customer_id: Int) {
-        bedDevice2Api.getCallRecords(page_no, page_size, customer_id)
-                .map {
-                    val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
-                    val records = gson.fromJson(it.getJsonString(), CallRecordVO::class.java)
-
-                    return@map records
-                }
-                .compose(ThreadFromUtils.defaultSchedulers())
-                .subscribe(observer)
-    }
-
     override fun loadPartSettings(partId: Int) {
-        bedDevice2Api.getPartSettings(partId)
+        boxDeviceApi.getPartSettings(partId)
                 .map {
                     val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
                     val settings = gson.fromJson(it.getJsonString(), PartSettingDO::class.java)
@@ -116,7 +97,7 @@ class MainActivityPresenter @Inject constructor() :RxPresenter<MainActivityContr
     }
 
     override fun loadTcpServerHost() {
-        bedDevice2Api.getTcpServerHost()
+        boxDeviceApi.getTcpServerHost()
                 .map {
                     val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
                     val tcpServer = gson.fromJson(it.getJsonString(), TcpSeverDTO::class.java)
@@ -128,7 +109,7 @@ class MainActivityPresenter @Inject constructor() :RxPresenter<MainActivityContr
     }
 
     override fun getAppVersion(partId: Int, deviceType: Int) {
-        bedDevice2Api.getAppVersion(partId, deviceType)
+        boxDeviceApi.getAppVersion(partId, deviceType)
                 .map {
                     val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
                     val appVersion = gson.fromJson(it.getJsonString(), AppVersionDO::class.java)

File diff suppressed because it is too large
+ 41 - 14
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/conversion_box/MainFragmentPresenter.kt


+ 0 - 45
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/conversion_box/QrCodeFragmentPresenter.kt

@@ -1,45 +0,0 @@
-package com.wdkl.ncs.android.middleware.logic.presenter.conversion_box
-
-import com.enation.javashop.net.engine.plugin.connection.ConnectionQuality
-import com.enation.javashop.net.engine.plugin.exception.ExceptionHandle
-import com.wdkl.ncs.android.lib.base.RxPresenter
-import com.wdkl.ncs.android.lib.utils.ConnectionObserver
-import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
-import com.wdkl.ncs.android.middleware.logic.contract.conversion_box.QrCodeFragmentContract
-import io.reactivex.disposables.Disposable
-import javax.inject.Inject
-
-class QrCodeFragmentPresenter @Inject constructor() : RxPresenter<QrCodeFragmentContract.View>(), QrCodeFragmentContract.Presenter {
-
-    override fun bindDagger() {
-        MiddlewareDaggerComponent.component.inject(this)
-    }
-
-    /**
-     * @Name  observer
-     * @Type  ConnectionObserver
-     * @Note  数据监听者
-     */
-    private val observer = object : ConnectionObserver<String>() {
-        override fun onStartWithConnection() {
-            providerView()
-        }
-
-        override fun onNextWithConnection(result: String, connectionQuality: ConnectionQuality) {
-            providerView().complete()
-            providerView().setUrlString(result)
-        }
-
-        override fun onErrorWithConnection(error: ExceptionHandle.ResponeThrowable, connectionQuality: ConnectionQuality) {
-            providerView().onError(error.customMessage)
-        }
-
-        override fun attachSubscribe(var1: Disposable) {
-            addDisposable(var1)
-        }
-    }
-
-    override fun loadUrlString() {
-        //
-    }
-}

+ 0 - 14
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/conversion_box/VoiceFragmentPresenter.kt

@@ -1,14 +0,0 @@
-package com.wdkl.ncs.android.middleware.logic.presenter.conversion_box
-
-import com.wdkl.ncs.android.lib.base.RxPresenter
-import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
-import com.wdkl.ncs.android.middleware.logic.contract.conversion_box.VoiceFragmentContract
-import javax.inject.Inject
-
-class VoiceFragmentPresenter @Inject constructor() : RxPresenter<VoiceFragmentContract.View>(), VoiceFragmentContract.Presenter {
-
-    override fun bindDagger() {
-        MiddlewareDaggerComponent.component.inject(this)
-    }
-
-}

+ 24 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/dos/DeviceDO.java

@@ -204,6 +204,14 @@ public class DeviceDO implements Serializable {
     @ApiModelProperty(value = "roleId", required = false)
     private Integer roleId;
 
+    @Column(name = "trans_485_id", allowNullUpdate = true)
+    @ApiModelProperty(value = "485转换盒ID", required = false)
+    private Integer trans485Id;
+
+    @Column(name = "trans_audio_id", allowNullUpdate = true)
+    @ApiModelProperty(value = "语音转换盒ID", required = false)
+    private Integer transAudioId;
+
 
     @PrimaryKeyField
     public Integer getId() {
@@ -475,6 +483,22 @@ public class DeviceDO implements Serializable {
         this.config = config;
     }
 
+    public Integer getTrans485Id() {
+        return trans485Id;
+    }
+
+    public void setTrans485Id(Integer trans485Id) {
+        this.trans485Id = trans485Id;
+    }
+
+    public Integer getTransAudioId() {
+        return transAudioId;
+    }
+
+    public void setTransAudioId(Integer transAudioId) {
+        this.transAudioId = transAudioId;
+    }
+
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;

+ 21 - 6
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/dos/FrameDO.java

@@ -7,11 +7,11 @@ import com.wdkl.ncs.android.middleware.model.annotation.Id;
 import com.wdkl.ncs.android.middleware.model.annotation.PrimaryKeyField;
 import com.wdkl.ncs.android.middleware.model.annotation.Table;
 
+import java.io.Serializable;
+
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
-import java.io.Serializable;
-
 @Table(name = "ncs_frame")
 @ApiModel
 @JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
@@ -49,9 +49,10 @@ public class FrameDO implements Serializable {
     @ApiModelProperty(value = "null", required = false)
     private Integer partId;
     /**
-     *	医院shop_id
-     */	@Column(name = "hospital_id" )
-    @ApiModelProperty(value="医院shop_id",required=false)
+     * 医院shop_id
+     */
+    @Column(name = "hospital_id")
+    @ApiModelProperty(value = "医院shop_id", required = false)
     private Integer hospitalId;
     /**
      * 数据同步时间
@@ -90,6 +91,13 @@ public class FrameDO implements Serializable {
     @ApiModelProperty(value = "null", required = false)
     private Integer groupId;
 
+    /**
+     * 别名
+     */
+    @Column(name = "full_name")
+    @ApiModelProperty(value = "全名", required = false)
+    private String fullName;
+
 
     @PrimaryKeyField
     public Integer getId() {
@@ -199,4 +207,11 @@ public class FrameDO implements Serializable {
         this.groupId = groupId;
     }
 
-}
+    public String getFullName() {
+        return fullName;
+    }
+
+    public void setFullName(String fullName) {
+        this.fullName = fullName;
+    }
+}

+ 89 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/DeviceNurseInfoVO.java

@@ -0,0 +1,89 @@
+package com.wdkl.ncs.android.middleware.model.vo;
+
+import com.wdkl.ncs.android.middleware.model.annotation.Column;
+import com.wdkl.ncs.android.middleware.model.dos.DeviceDO;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @author
+ * @title: DeviceNurseInfoVO
+ * @projectName nc
+ * @description: TODO
+ * @date 2021/4/1320:49
+ */
+public class DeviceNurseInfoVO extends DeviceDO {
+
+    @Column(name = "hospital_id")
+    @ApiModelProperty(value = "医院id", required = false)
+    private Integer hospitalId;
+
+    @Column(name = "hospital_name")
+    @ApiModelProperty(value = "医院名称", required = false)
+    private String hospitalName;
+
+    @Column(name = "part_name")
+    @ApiModelProperty(value = "科室名称", required = false)
+    private String partName;
+
+    @Column(name = "full_name")
+    @ApiModelProperty(value = "病房病床名称", required = false)
+    private String fullName;
+
+    @Column(name = "member_name")
+    @ApiModelProperty(value = "用户名称", required = false)
+    private String memberName;
+
+    @Column(name = "role_name")
+    @ApiModelProperty(value = "角色名称", required = false)
+    private String roleName;
+
+
+    public Integer getHospitalId() {
+        return hospitalId;
+    }
+
+    public void setHospitalId(Integer hospitalId) {
+        this.hospitalId = hospitalId;
+    }
+
+    public String getHospitalName() {
+        return hospitalName;
+    }
+
+    public void setHospitalName(String hospitalName) {
+        this.hospitalName = hospitalName;
+    }
+
+    public String getPartName() {
+        return partName;
+    }
+
+    public void setPartName(String partName) {
+        this.partName = partName;
+    }
+
+    public String getFullName() {
+        return fullName;
+    }
+
+    public void setFullName(String fullName) {
+        this.fullName = fullName;
+    }
+
+    public String getMemberName() {
+        return memberName;
+    }
+
+    public void setMemberName(String memberName) {
+        this.memberName = memberName;
+    }
+
+    public String getRoleName() {
+        return roleName;
+    }
+
+    public void setRoleName(String roleName) {
+        this.roleName = roleName;
+    }
+}

+ 36 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/FrameAudioBedVO.java

@@ -0,0 +1,36 @@
+package com.wdkl.ncs.android.middleware.model.vo;
+
+
+import com.wdkl.ncs.android.middleware.model.dos.DeviceDO;
+import com.wdkl.ncs.android.middleware.model.dos.FrameDO;
+
+import java.util.List;
+
+/**
+ * @author
+ * @title: Vothin
+ * @projectName nc
+ * @description: TODO
+ * @date 2021/9/316:58
+ */
+public class FrameAudioBedVO {
+
+    private FrameDO frameBed;
+    private List<DeviceDO> bedDeviceList;
+
+    public FrameDO getFrameBed() {
+        return frameBed;
+    }
+
+    public void setFrameBed(FrameDO frameBed) {
+        this.frameBed = frameBed;
+    }
+
+    public List<DeviceDO> getBedDeviceList() {
+        return bedDeviceList;
+    }
+
+    public void setBedDeviceList(List<DeviceDO> bedDeviceList) {
+        this.bedDeviceList = bedDeviceList;
+    }
+}

+ 46 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/FrameAudioRoomVO.java

@@ -0,0 +1,46 @@
+package com.wdkl.ncs.android.middleware.model.vo;
+
+
+import com.wdkl.ncs.android.middleware.model.dos.DeviceDO;
+import com.wdkl.ncs.android.middleware.model.dos.FrameDO;
+
+import java.util.List;
+
+/**
+ * @author
+ * @title: Vothin
+ * @projectName nc
+ * @description: TODO
+ * @date 2021/9/316:52
+ */
+public class FrameAudioRoomVO {
+
+    private FrameDO frameRoom;
+    private List<DeviceDO> roomDeviceList;
+    private List<FrameAudioBedVO> frameAudioBedVolist;
+
+
+    public FrameDO getFrameRoom() {
+        return frameRoom;
+    }
+
+    public void setFrameRoom(FrameDO frameRoom) {
+        this.frameRoom = frameRoom;
+    }
+
+    public List<DeviceDO> getRoomDeviceList() {
+        return roomDeviceList;
+    }
+
+    public void setRoomDeviceList(List<DeviceDO> roomDeviceList) {
+        this.roomDeviceList = roomDeviceList;
+    }
+
+    public List<FrameAudioBedVO> getFrameAudioBedVOList() {
+        return frameAudioBedVolist;
+    }
+
+    public void setFrameAudioBedVOList(List<FrameAudioBedVO> frameAudioBedVOList) {
+        this.frameAudioBedVolist = frameAudioBedVOList;
+    }
+}

+ 23 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/FrameAudioVO.java

@@ -0,0 +1,23 @@
+package com.wdkl.ncs.android.middleware.model.vo;
+
+import java.util.List;
+
+/**
+ * @author
+ * @title: Vothin
+ * @projectName nc
+ * @description: TODO
+ * @date 2021/9/316:51
+ */
+public class FrameAudioVO {
+
+    private List<FrameAudioRoomVO> frameAudioRoomVolist;
+
+    public List<FrameAudioRoomVO> getFrameAudioRoomVOList() {
+        return frameAudioRoomVolist;
+    }
+
+    public void setFrameAudioRoomVOList(List<FrameAudioRoomVO> frameAudioRoomVOList) {
+        this.frameAudioRoomVolist = frameAudioRoomVOList;
+    }
+}

+ 5 - 5
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/FramePartVO.java

@@ -18,7 +18,7 @@ public class FramePartVO implements Serializable {
 
     private FrameDO framePart;
     private Integer deviceCount;
-    private List<FrameRoomVO> frameRoomVOs;
+    private List<FrameRoomVO> frameRoomVos;
 
 
     public FrameDO getFramePart() {
@@ -37,11 +37,11 @@ public class FramePartVO implements Serializable {
         this.deviceCount = deviceCount;
     }
 
-    public List<FrameRoomVO> getFrameRoomVOs() {
-        return frameRoomVOs;
+    public List<FrameRoomVO> getFrameRoomVos() {
+        return frameRoomVos;
     }
 
-    public void setFrameRoomVOs(List<FrameRoomVO> frameRoomVOs) {
-        this.frameRoomVOs = frameRoomVOs;
+    public void setFrameRoomVos(List<FrameRoomVO> frameRoomVos) {
+        this.frameRoomVos = frameRoomVos;
     }
 }

+ 5 - 6
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/FrameRoomVO.java

@@ -1,6 +1,5 @@
 package com.wdkl.ncs.android.middleware.model.vo;
 
-
 import com.wdkl.ncs.android.middleware.model.dos.FrameDO;
 
 import java.io.Serializable;
@@ -17,7 +16,7 @@ public class FrameRoomVO implements Serializable {
 
     private FrameDO frameRoom;
     private Integer deviceCount;
-    private List<FrameBedVO> frameBedVOs;
+    private List<FrameBedVO> frameBedList;
 
 
     public FrameDO getFrameRoom() {
@@ -36,11 +35,11 @@ public class FrameRoomVO implements Serializable {
         this.deviceCount = deviceCount;
     }
 
-    public List<FrameBedVO> getFrameBedVOs() {
-        return frameBedVOs;
+    public List<FrameBedVO> getFrameBedList() {
+        return frameBedList;
     }
 
-    public void setFrameBedVOs(List<FrameBedVO> frameBedVOs) {
-        this.frameBedVOs = frameBedVOs;
+    public void setFrameBedList(List<FrameBedVO> frameBedList) {
+        this.frameBedList = frameBedList;
     }
 }

+ 1 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/TcpClientHandler.java

@@ -120,7 +120,7 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
             }*/
             return;
         }
-        System.out.println("wzlll: tcp msg====" + msg);
+        System.out.println("wzlll: send tcp msg====" + msg);
         ctx.writeAndFlush(Unpooled.copiedBuffer(msg, CharsetUtil.UTF_8));
     }
 

+ 15 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/VoiceUtil.java

@@ -18,6 +18,15 @@ public class VoiceUtil {
         return tcpModel;
     }
 
+    public static TcpModel voiceCall2(Integer fromId, String uart){
+        TcpModel tcpModel = new TcpModel();
+        tcpModel.setType(TcpType.VOICE);
+        tcpModel.setAction(TcpAction.VoiceAction.CALL);
+        tcpModel.setFromId(fromId);
+        tcpModel.setData(uart);
+        return tcpModel;
+    }
+
     public static TcpModel voiceAccept(Integer fromId, Integer toId, Integer interactionId){
         TcpModel tcpModel = new TcpModel();
         tcpModel.setType(TcpType.VOICE);
@@ -95,6 +104,12 @@ public class VoiceUtil {
         TcpClient.getInstance().sendMsg(tcpModel.toJson());
     }
 
+    //语音呼叫2
+    public static void startAudioCall(Integer fromId, String uart) {
+        TcpModel tcpModel = VoiceUtil.voiceCall2(fromId, uart);
+        TcpClient.getInstance().sendMsg(tcpModel.toJson());
+    }
+
     //取消呼叫
     public static void cancelAudioCall(Integer fromId) {
         TcpModel tcpModel = VoiceUtil.voiceCancel(fromId);

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

@@ -1,5 +1,5 @@
 <resources>
-    <string name="javashop_app_name">NCS-7寸床头机</string>
+    <string name="javashop_app_name">NCS-语音转换盒</string>
     <string name="javashop_qrcode_name">扫啊扫</string>
     <string name="javashop_navigation_home_title">首页</string>
     <string name="javashop_navigation_category_title">分类</string>

+ 2 - 2
rtc-chat/src/main/java/com/wdkl/skywebrtc/engine/webrtc/WebRTCEngine.java

@@ -129,8 +129,8 @@ public class WebRTCEngine implements IEngine, Peer.IPeerEvent {
             mCallback.joinRoomSucc();
         }
 
-        toggleSpeaker(true);
-        audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
+        //toggleSpeaker(true);
+        //audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
     }
 
     @Override

+ 1 - 1
settings.gradle

@@ -1 +1 @@
-include ':app', ':common', ':welcome', ':home', ':resource', ':middleware', ':extra', ':conversion_box', ':bedlib', 'webrtc', 'rtc-chat', 'libwebrtc'
+include ':app', ':common', ':welcome', ':home', ':resource', ':middleware', ':extra', ':conversion_box', ':traditionlib', 'webrtc', 'rtc-chat', 'libwebrtc'

+ 1 - 0
traditionlib/.gitignore

@@ -0,0 +1 @@
+/build

+ 43 - 0
traditionlib/build.gradle

@@ -0,0 +1,43 @@
+apply plugin: 'com.android.library'
+
+android {
+
+
+
+
+    compileSdkVersion 25
+    buildToolsVersion "25.0.3"
+    defaultConfig {
+        minSdkVersion 15
+        targetSdkVersion 25
+        versionCode 1
+        versionName "1.0"
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+    }
+    buildTypes {
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+        sourceSets {
+            main { jni.srcDirs = [] }
+        }
+    }
+
+
+
+
+
+
+
+
+}
+
+dependencies {
+    compile fileTree(dir: 'libs', include: ['*.jar'])
+    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
+        exclude group: 'com.android.support', module: 'support-annotations'
+    })
+    compile 'com.android.support.constraint:constraint-layout:1.0.2'
+    testCompile 'junit:junit:4.12'
+}

+ 25 - 0
traditionlib/proguard-rules.pro

@@ -0,0 +1,25 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in D:\android_studio\sdk_path/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile

+ 26 - 0
traditionlib/src/androidTest/java/serialcommunication/wdkl/com/bedlib/ExampleInstrumentedTest.java

@@ -0,0 +1,26 @@
+package serialcommunication.wdkl.com.bedlib;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumentation test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+    @Test
+    public void useAppContext() throws Exception {
+        // Context of the app under test.
+        Context appContext = InstrumentationRegistry.getTargetContext();
+
+        assertEquals("serialcommunication.wdkl.com.bedlib.test", appContext.getPackageName());
+    }
+}

+ 10 - 0
traditionlib/src/main/AndroidManifest.xml

@@ -0,0 +1,10 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+
+    package="serialcommunication.wdkl.com.bedlib">
+
+    <application android:allowBackup="true" android:label="@string/app_name"
+        android:supportsRtl="true">
+
+    </application>
+
+</manifest>

+ 74 - 0
traditionlib/src/main/java/android_serialport_api/SerialPort.java

@@ -0,0 +1,74 @@
+package android_serialport_api;
+
+import android.util.Log;
+
+import java.io.File;
+import java.io.FileDescriptor;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+public class SerialPort {
+
+    private static final String TAG = "SerialPort";
+    private FileDescriptor mFd;
+    private FileInputStream mFileInputStream;
+    private FileOutputStream mFileOutputStream;
+
+    public SerialPort(File device, int baudrate, int flags) throws SecurityException, IOException {
+
+        //检查访问权限,如果没有读写权限,进行文件操作,修改文件访问权限
+        if (!device.canRead() || !device.canWrite()) {
+            try {
+                //通过挂载到linux的方式,修改文件的操作权限
+                Process su = Runtime.getRuntime().exec("/system/xbin/su");
+                String cmd = "chmod 777 " + device.getAbsolutePath() + "\n" + "exit\n";
+                su.getOutputStream().write(cmd.getBytes());
+
+                if ((su.waitFor() != 0) || !device.canRead() || !device.canWrite()) {
+                    throw new SecurityException();
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw new SecurityException();
+            }
+        }
+
+        mFd = open(device.getAbsolutePath(), baudrate, flags);
+
+        if (mFd == null) {
+            Log.e(TAG, "native open returns null");
+            throw new IOException();
+        }
+
+        mFileInputStream = new FileInputStream(mFd);
+        mFileOutputStream = new FileOutputStream(mFd);
+    }
+
+    // Getters and setters
+    public InputStream getInputStream() {
+        return mFileInputStream;
+    }
+
+    public OutputStream getOutputStream() {
+        return mFileOutputStream;
+    }
+
+
+    // JNI(调用java本地接口,实现串口的打开和关闭)
+/**串口有五个重要的参数:串口设备名,波特率,检验位,数据位,停止位
+ 其中检验位一般默认位NONE,数据位一般默认为8,停止位默认为1*/
+    /**
+     * @param path     串口设备的据对路径
+     * @param baudrate 波特率
+     * @param flags    校验位
+     */
+    private native static FileDescriptor open(String path, int baudrate, int flags);
+    public native void close();
+
+    static {//加载jni下的C文件库
+        System.loadLibrary("serial_port");
+    }
+}

+ 392 - 0
traditionlib/src/main/java/serialporttest/utils/SerialPortUtil.java

@@ -0,0 +1,392 @@
+package serialporttest.utils;
+
+import android.util.Log;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import android_serialport_api.SerialPort;
+
+/**
+ * Created by Administrator on 2017/6/6.
+ */
+
+public class SerialPortUtil {
+    private String TAG = "SerialPortUtil";
+
+    public SerialPort serialPort = null;
+    public InputStream inputStream = null;
+    public OutputStream outputStream = null;
+
+    private ISerialPortBedOnclickEvent onDataReceiveListener = null;
+    public boolean isOpenSerialPortUtil = false;
+    private static byte[] KeyValue = new byte[8];
+
+    int DataIndex = 0;
+    int DataValue = -1;
+
+    public Timer timer ;
+    public TimerTask timerTask ;
+
+    public Thread receiveThread = null;
+
+    public static SerialPortUtil instance = null;
+
+    public SerialPortUtil() {
+    }
+
+    public static SerialPortUtil getInstance() {
+        if (instance == null) {
+            synchronized (SerialPortUtil.class) {
+                if (instance == null) {
+                    instance = new SerialPortUtil();
+                }
+            }
+        }
+        return instance;
+    }
+
+    /**
+     * 打开串口的方法
+     */
+    public void openSerialPort() {
+        Log.i(TAG, "打开串口");
+        try {
+            serialPort = new SerialPort(new File("/dev/" + getSystemPort()), getSystemBaudrate(), 0);
+            //获取打开的串口中的输入输出流,以便于串口数据的收发
+            inputStream = serialPort.getInputStream();
+            outputStream = serialPort.getOutputStream();
+            isOpenSerialPortUtil = true;
+            receiveSerialPort();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 接收串口数据的方法
+     */
+    private byte[] buffer;
+    private String data;
+
+
+    public byte[] re_buffer = new byte[2048];
+    String data1 = "";
+    public int writeIndex = 0, readIndex = 0;
+    public boolean finshFlag = false;
+
+    public void receiveSerialPort() {
+        initKeyValue();
+        Log.i(TAG, "接收串口数据");
+        if (receiveThread != null)
+            return;
+        buffer = new byte[1024];
+        receiveThread = new Thread() {
+            @Override
+            public void run() {
+                while (isOpenSerialPortUtil) {
+                    try {
+                        if (inputStream == null) {
+                            return;
+                        }
+                        int size = inputStream.read(buffer);
+                        if (size > 0 && isOpenSerialPortUtil) {
+                            data = new String(buffer, 0, size);
+                            Log.d("aaaa", "size=="+size+"-----data=="+data);
+
+                            if (systemVersionIsO()) {//安卓8.1.0 版用
+                                changeData(size);//吴总改了后的
+                            } else {//安卓4.2.0 版用
+                                if (data.contains("$") && data.contains("#")) {
+                                    if (null != onDataReceiveListener) {
+                                        onDataReceiveListener.serialPortBedOnclick(data);
+                                    }
+                                }
+                            }
+
+                        }
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+        };
+        //启动接收线程
+        receiveThread.start();
+    }
+
+    public void changeData(int size) {
+        if (size > 0) {
+            for (int i = 0; i < size; i++) {
+                re_buffer[writeIndex] = buffer[i];
+                writeIndex++;
+                if (writeIndex > 2047) {
+                    writeIndex = 0;
+                }
+            }
+        }
+        if (readIndex != writeIndex) {
+            while (readIndex != writeIndex) {
+                if (re_buffer[readIndex] == '$') {
+                    data1 = "$";
+                    readIndex++;
+                    if (readIndex > 2047) {
+                        readIndex = 0;
+                    }
+                } else if (re_buffer[readIndex] == '#') {
+                    data1 = data1 + "#";
+                    readIndex++;
+                    if (readIndex > 2047) {
+                        readIndex = 0;
+                    }
+                    finshFlag = true;
+                    break;
+                } else if (data1.length() > 0) {
+                    data1 = data1 + new String(re_buffer, readIndex, 1);
+                    readIndex++;
+                    if (readIndex > 2047) {
+                        readIndex = 0;
+                    }
+                } else {
+                    readIndex++;
+                    if (readIndex > 2047) {
+                        readIndex = 0;
+                    }
+                }
+            }
+        }
+        if (finshFlag) {
+            if (data1.contains("$") && data1.contains("#")) {
+                if (null != onDataReceiveListener) {
+                    onDataReceiveListener.serialPortBedOnclick(data1);
+                }
+            }
+            data1 = "";
+            finshFlag = false;
+        }
+    }
+
+    /**
+     * 关闭串口的方法
+     * 关闭串口中的输入输出流
+     * 然后将flag的值设为flag,终止接收数据线程
+     */
+    public void closeSerialPort() {
+        Log.i(TAG, "关闭串口");
+        try {
+            if (inputStream != null) {
+                inputStream.close();
+            }
+            if (outputStream != null) {
+                outputStream.close();
+            }
+            if (receiveThread != null && receiveThread.isAlive()) {
+                receiveThread.interrupt();
+                receiveThread = null;
+            }
+            isOpenSerialPortUtil = false;
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    //初始化 key值
+    public static void initKeyValue() {
+        KeyValue[0] = -1;
+        KeyValue[1] = -1;
+        KeyValue[2] = -1;
+        KeyValue[3] = -1;
+        KeyValue[4] = -1;
+        KeyValue[5] = -1;
+        KeyValue[6] = -1;
+        KeyValue[7] = -1;
+    }
+
+    public void startHeartBeat() {
+        if (timer != null) timer.purge();
+        if (timerTask != null) timerTask.cancel();
+        timer = new Timer();
+        timerTask = new TimerTask() {
+            @Override
+            public void run() {
+                startHeart();
+            }
+        };
+        timer.schedule(timerTask, 0, 5000);
+    }
+
+
+    /**
+     * 门灯信号改变  7打开 8关闭
+     */
+    public void doorLamp(String type ,String mac) {
+        send(C_HEARD + type + C_SEPARATE + mac + "F" + C_END);
+    }
+    /**
+     * 心跳信号
+     */
+    public void startHeart() {
+        send(C_HEARD + "1" + C_SEPARATE + "1" + "1" + C_END);
+        //send("$HEART,1F#");
+    }
+
+    /**
+     * 关闭心跳<br>
+     * 若MCU在10秒内没有收到信号,将自动重启Android.  随机数为“W”时将关闭心跳<br>
+     */
+    public void closeHeart() {
+        send("$HEART,WE#");
+    }
+
+    /**
+     * 系统重启
+     */
+    public void systemRestart() {
+        send(C_HEARD + "2" + C_SEPARATE + "2" + "2" + C_END);
+    }
+
+    /*
+    * 进入系统ROM升级模式
+    * */
+    public void systemUpDate() {
+        Log.i(TAG, "系统ROM升级模式串口数据");
+        send("$SYSUPDATE,3C#");
+        Log.i(TAG, "系统ROM升级模式发送");
+
+    }
+
+
+    /**
+     * 发送串口数据的方法
+     *
+     * @param command 要发送的数据
+     */
+    public void send(String command) {
+        try {
+            if (isOpenSerialPortUtil) {
+                byte[] sendData = command.getBytes();
+                outputStream.write(sendData);
+                Log.i(TAG, "串口数据发送成功:" + command);
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            Log.i(TAG, "串口数据发送失败");
+        }
+    }
+
+    public void setOnDataReceiveListener(ISerialPortBedOnclickEvent dataReceiveListener) {
+        onDataReceiveListener = dataReceiveListener;
+    }
+
+
+    public interface ISerialPortBedOnclickEvent {
+        void serialPortBedOnclick(String str);
+    }
+
+    /**
+     * 判断是否是7.1以上的系统版本
+     *
+     * @return
+     */
+    public static boolean systemVersionIsO() {
+        if (android.os.Build.VERSION.SDK_INT >= 24) {//7.1以上的系统
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+
+    public static int getSystemVersion() {
+        return android.os.Build.VERSION.SDK_INT;
+    }
+
+    public static String getSystemPort() {
+        String port;
+        if (getSystemVersion() >= 26) { //android8.0 = 26
+            port = "ttyS4";// rk3368 android8.1
+        } else if (getSystemVersion() >= 24) { //android7.0 = 24
+            port = "ttyS1";//rk3128 android7.1
+        } else {
+            port = "ttyS7";// a20 android4.2
+        }
+        return port;
+    }
+
+    /**
+     * 得到波特率
+     *
+     * @return String
+     */
+    public static int getSystemBaudrate() {
+        int baudrate;
+        if (getSystemVersion() >= 26) { //android8.0 = 26
+            baudrate = 115200;// rk3368 android8.1
+        } else if (getSystemVersion() >= 24) { //android7.0 = 24
+            baudrate = 115200;//rk3128 android7.1
+        } else {
+            baudrate = 115200;// a20 android4.2
+        }
+        return baudrate;
+    }
+
+
+    //------------------------below things was add by Waderson 20171106  -----------------------------------
+
+    public static final String C_HEARD = "$";//开头符
+    public static final String C_END = "#";//结束符
+    public static final String C_SEPARATE = ",";//分隔符
+
+    /**
+     * 手柄MIC切换<br>
+     */
+    public static final String MIC = "MIC";
+    /**
+     * 床头灯的切换<br> 0 关闭 1打开 2闪烁
+     */
+    public static final String BEDLIGHT = "RELAY";
+    /**
+     * 卫生间呼叫灯控制<br>
+     */
+    public static final String ULED = "ULED";
+    /**
+     * 护理灯光控制<br>
+     */
+    public static final String NURSELIGHT = "NLED";
+
+    public static final String NET_STATUS = "NETRESET";
+
+    /**
+     * 心跳控制<br>
+     * 若MCU在10秒内没有收到信号,将自动重启Android.  随机数为“W”时将关闭心跳<br>
+     * $ HEART ,1 E #  <br>
+     */
+
+    /**
+     * 写入串口<br>
+     * Waderson 20171103
+     * command  命令 <br>
+     * random   随机数<br>
+     * check  校验符<br>
+     */
+    public void sendCommand(String command, String random, String check) {
+        String random_v = "1", check_v = "F";
+        if (null == command || "".equals(command)) {
+            return;
+        }
+        if (null != random && !"".equals(random)) {
+            random_v = random;
+        }
+        if (null != check && !"".equals(check)) {
+            check_v = check;
+        }
+        send(C_HEARD + command + C_SEPARATE + random_v + check_v + C_END);
+    }
+
+
+}

+ 11 - 0
traditionlib/src/main/jni/Android.mk

@@ -0,0 +1,11 @@
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+TARGET_PLATFORM := android-3
+LOCAL_MODULE    := serial_port
+LOCAL_SRC_FILES := SerialPort.c
+LOCAL_LDLIBS    := -llog
+
+include $(BUILD_SHARED_LIBRARY)

+ 1 - 0
traditionlib/src/main/jni/Application.mk

@@ -0,0 +1 @@
+APP_ABI := armeabi armeabi-v7a x86

+ 167 - 0
traditionlib/src/main/jni/SerialPort.c

@@ -0,0 +1,167 @@
+/*
+ * Copyright 2009-2011 Cedric Priscal
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <termios.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <string.h>
+#include <jni.h>
+
+#include "SerialPort.h"
+
+#include "android/log.h"
+static const char *TAG="serial_port";
+#define LOGI(fmt, args...) __android_log_print(ANDROID_LOG_INFO,  TAG, fmt, ##args)
+#define LOGD(fmt, args...) __android_log_print(ANDROID_LOG_DEBUG, TAG, fmt, ##args)
+#define LOGE(fmt, args...) __android_log_print(ANDROID_LOG_ERROR, TAG, fmt, ##args)
+
+static speed_t getBaudrate(jint baudrate)
+{
+	switch(baudrate) {
+	case 0: return B0;
+	case 50: return B50;
+	case 75: return B75;
+	case 110: return B110;
+	case 134: return B134;
+	case 150: return B150;
+	case 200: return B200;
+	case 300: return B300;
+	case 600: return B600;
+	case 1200: return B1200;
+	case 1800: return B1800;
+	case 2400: return B2400;
+	case 4800: return B4800;
+	case 9600: return B9600;
+	case 19200: return B19200;
+	case 38400: return B38400;
+	case 57600: return B57600;
+	case 115200: return B115200;
+	case 230400: return B230400;
+	case 460800: return B460800;
+	case 500000: return B500000;
+	case 576000: return B576000;
+	case 921600: return B921600;
+	case 1000000: return B1000000;
+	case 1152000: return B1152000;
+	case 1500000: return B1500000;
+	case 2000000: return B2000000;
+	case 2500000: return B2500000;
+	case 3000000: return B3000000;
+	case 3500000: return B3500000;
+	case 4000000: return B4000000;
+	default: return -1;
+	}
+}
+
+/*
+ * Class:     android_serialport_SerialPort
+ * Method:    open
+ * Signature: (Ljava/lang/String;II)Ljava/io/FileDescriptor;
+ */
+JNIEXPORT jobject JNICALL Java_android_1serialport_1api_SerialPort_open
+  (JNIEnv *env, jclass thiz, jstring path, jint baudrate, jint flags)
+{
+	int fd;
+	speed_t speed;
+	jobject mFileDescriptor;
+
+	/* Check arguments */
+	{
+		speed = getBaudrate(baudrate);
+		if (speed == -1) {
+			/* TODO: throw an exception */
+			LOGE("Invalid baudrate");
+			return NULL;
+		}
+	}
+
+	/* Opening device */
+	{
+		jboolean iscopy;
+		const char *path_utf = (*env)->GetStringUTFChars(env, path, &iscopy);
+		LOGD("Opening serial port %s with flags 0x%x", path_utf, O_RDWR | flags);
+		fd = open(path_utf, O_RDWR | flags);
+		LOGD("open() fd = %d", fd);
+		(*env)->ReleaseStringUTFChars(env, path, path_utf);
+		if (fd == -1)
+		{
+			/* Throw an exception */
+			LOGE("Cannot open port");
+			/* TODO: throw an exception */
+			return NULL;
+		}
+	}
+
+	/* Configure device */
+	{
+		struct termios cfg;
+		LOGD("Configuring serial port");
+		if (tcgetattr(fd, &cfg))
+		{
+			LOGE("tcgetattr() failed");
+			close(fd);
+			/* TODO: throw an exception */
+			return NULL;
+		}
+
+		cfmakeraw(&cfg);
+		cfsetispeed(&cfg, speed);
+		cfsetospeed(&cfg, speed);
+
+		if (tcsetattr(fd, TCSANOW, &cfg))
+		{
+			LOGE("tcsetattr() failed");
+			close(fd);
+			/* TODO: throw an exception */
+			return NULL;
+		}
+	}
+
+	/* Create a corresponding file descriptor */
+	{
+		jclass cFileDescriptor = (*env)->FindClass(env, "java/io/FileDescriptor");
+		jmethodID iFileDescriptor = (*env)->GetMethodID(env, cFileDescriptor, "<init>", "()V");
+		jfieldID descriptorID = (*env)->GetFieldID(env, cFileDescriptor, "descriptor", "I");
+		mFileDescriptor = (*env)->NewObject(env, cFileDescriptor, iFileDescriptor);
+		(*env)->SetIntField(env, mFileDescriptor, descriptorID, (jint)fd);
+	}
+
+	return mFileDescriptor;
+}
+
+/*
+ * Class:     cedric_serial_SerialPort
+ * Method:    close
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_android_1serialport_1api_SerialPort_close
+  (JNIEnv *env, jobject thiz)
+{
+	jclass SerialPortClass = (*env)->GetObjectClass(env, thiz);
+	jclass FileDescriptorClass = (*env)->FindClass(env, "java/io/FileDescriptor");
+
+	jfieldID mFdID = (*env)->GetFieldID(env, SerialPortClass, "mFd", "Ljava/io/FileDescriptor;");
+	jfieldID descriptorID = (*env)->GetFieldID(env, FileDescriptorClass, "descriptor", "I");
+
+	jobject mFd = (*env)->GetObjectField(env, thiz, mFdID);
+	jint descriptor = (*env)->GetIntField(env, mFd, descriptorID);
+
+	LOGD("close(fd = %d)", descriptor);
+	close(descriptor);
+}
+

+ 29 - 0
traditionlib/src/main/jni/SerialPort.h

@@ -0,0 +1,29 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class android_serialport_api_SerialPort */
+
+#ifndef _Included_android_serialport_api_SerialPort
+#define _Included_android_serialport_api_SerialPort
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class:     android_serialport_api_SerialPort
+ * Method:    open
+ * Signature: (Ljava/lang/String;II)Ljava/io/FileDescriptor;
+ */
+JNIEXPORT jobject JNICALL Java_android_1serialport_1api_SerialPort_open
+  (JNIEnv *, jclass, jstring, jint, jint);
+
+/*
+ * Class:     android_serialport_api_SerialPort
+ * Method:    close
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_android_1serialport_1api_SerialPort_close
+  (JNIEnv *, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+#endif

+ 3 - 0
traditionlib/src/main/jni/gen_SerialPort_h.sh

@@ -0,0 +1,3 @@
+#!/bin/sh
+javah -o SerialPort.h -jni -classpath ../src android_serialport_api.SerialPort
+

BIN
traditionlib/src/main/jniLibs/armeabi-v7a/libserial_port.so


BIN
traditionlib/src/main/jniLibs/armeabi/libserial_port.so


BIN
traditionlib/src/main/jniLibs/x86/libserial_port.so


+ 3 - 0
traditionlib/src/main/res/values/strings.xml

@@ -0,0 +1,3 @@
+<resources>
+    <string name="app_name">bedlib</string>
+</resources>

+ 17 - 0
traditionlib/src/test/java/serialcommunication/wdkl/com/bedlib/ExampleUnitTest.java

@@ -0,0 +1,17 @@
+package serialcommunication.wdkl.com.bedlib;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+    @Test
+    public void addition_isCorrect() throws Exception {
+        assertEquals(4, 2 + 2);
+    }
+}

+ 3 - 1
webrtc/src/main/java/com/wdkl/core/consts/Urls.java

@@ -8,7 +8,9 @@ public class Urls {
 
     //private final static String IP = "192.168.2.111";
     //public final static String IP = "42.192.40.58:5000";
-    public final static String IP = "172.28.100.100:5000";
+    //public final static String IP = "172.28.100.100:5000";
+
+    public final static String IP = "8.129.220.143:5000";
 
     private final static String HOST = "http://" + IP + "/";
 

+ 1 - 5
webrtc/src/main/java/com/wdkl/core/socket/SocketManager.java

@@ -230,11 +230,7 @@ public class SocketManager implements IEvent {
         SkyEngineKit.init(new VoipEvent());
         boolean b = SkyEngineKit.Instance().startInCall(mContext, room, inviteId, audioOnly);
         if (b) {
-            if (audioOnly) {
-                EventBus.getDefault().post(new MessageEvent("audio_call", Constant.EVENT_SIP_CALL_STATUS));
-            } else {
-                EventBus.getDefault().post(new MessageEvent("video_call", Constant.EVENT_SIP_CALL_STATUS));
-            }
+            EventBus.getDefault().post(new MessageEvent("audio_call", Constant.EVENT_SIP_CALL_STATUS));
             //CallSingleActivity.openActivity(mContext, inviteId, false, inviteId, audioOnly, false);
         }
     }

+ 2 - 2
webrtc/src/main/java/com/wdkl/core/voip/AsyncPlayer.java

@@ -46,9 +46,9 @@ public class AsyncPlayer {
             player.setVolume(1.0f, 1.0f);
             //player.prepare();
             player.start();
-            if (mPlayer != null) {
+            /*if (mPlayer != null) {
                 mPlayer.release();
-            }
+            }*/
             mPlayer = player;
             Log.w(mTag, "start sound " + cmd.resId);
         } catch (Exception e) {

+ 0 - 12
webrtc/src/main/java/com/wdkl/core/voip/CallSingleActivity.java

@@ -31,8 +31,6 @@ import com.wdkl.webrtc.R;
 
 import java.util.UUID;
 
-import serialporttest.utils.SerialPortUtil;
-
 
 /**
  * Created by dds on 2018/7/26.
@@ -290,15 +288,5 @@ public class CallSingleActivity extends BaseActivity implements CallSession.Call
     @Override
     protected void onDestroy() {
         super.onDestroy();
-
-        /*if (Constant.VISITING) {
-            VideoUtil.handoffVideoCall(Constant.DEVICE_ID, Constant.fromId, Constant.interactionId);
-        } else {
-            VoiceUtil.handoffAudioCall(Constant.DEVICE_ID, Constant.fromId, Constant.interactionId);
-        }
-        Constant.VISITING = false;*/
-
-        Constant.CALL_STATE = Constant.CALL_STANDBY;
-        SerialPortUtil.getInstance().sendCommand(SerialPortUtil.CALL_STATUS , "0", "F");
     }
 }

+ 3 - 7
webrtc/src/main/java/com/wdkl/core/voip/FragmentMeeting.java

@@ -97,13 +97,9 @@ public class FragmentMeeting extends Fragment implements CallSession.CallSession
     @Override
     public void didReceiveRemoteVideoTrack(String userId) {
         CallSession callSession = SkyEngineKit.Instance().getCurrentSession();
-        Log.d("wzlll", "didReceiveRemoteVideoTrack  user: " + userId + ", myid: " + callSession.mMyId + ", host id: " + Constant.SIP_VISIT_HOST_ID);
-        //护士主机画面不加入
-        if (!Constant.SIP_VISIT_HOST_ID.equals(userId)) {
-            View surfaceView = gEngineKit.getCurrentSession().setupRemoteVideo(userId, true);
-            if (surfaceView != null) {
-                grid_view.addView(userId, surfaceView);
-            }
+        View surfaceView = gEngineKit.getCurrentSession().setupRemoteVideo(userId, true);
+        if (surfaceView != null) {
+            grid_view.addView(userId, surfaceView);
         }
     }
 

+ 0 - 1
welcome/src/main/code/com/wdkl/ncs/android/component/welcome/activity/WelcomeActivity.kt

@@ -92,7 +92,6 @@ class WelcomeActivity :BaseActivity<WelcomePresenter, ActivityWelcomeBinding>(),
      */
     override fun toHome() {
         AppTool.Time.delay(200) {
-            //push("/home/main")
             push("/conversion_box/main")
             finish()
         }