Bläddra i källkod

1。护士主机广播模块增加sip广播

xunchuanzhi 1 år sedan
förälder
incheckning
602d1c40bc

+ 21 - 10
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/activity/CallingbedActivity.kt

@@ -1606,7 +1606,6 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
                                     broadcastChannelId = tcpModel.data.toString()
                                     //如果当前有呼叫或通话则等待
                                     if (Constant.CALL_STATE == Constant.CALL_STANDBY) {
-                                        Log.d("BR", "启动 ")
                                         startBroadcast()
                                     }
                                 }
@@ -1834,6 +1833,15 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
                     switchFragment(R.id.callingbed_main_frame, MainFragment(), mainFragment)
                 }
             }
+
+            Constant.EVENT_END_CALL -> {
+               if(broadcastOn){
+                   broadcastOn = false
+                   stopBroadcast(true)
+               }
+
+            }
+
             //倒计时
             Constant.EVENT_COUNTDOWN_TIME -> {
                 if (!messageEvent.time_1.equals("00:00:00")) {
@@ -2022,19 +2030,22 @@ class CallingbedActivity :BaseActivity<BedCallingbedActivityPresenter, Callingbe
             broadcastOn = false
             return
         }
-
         playing = true
 
-        //初始化 engine
-        WebRTCEngine.getInstance().init(true, this)
-        //初始化 janusClient
-        janusClient = JanusClient(JanusConstant.JANUS_URL, Constant.SIP_ID.toBigInteger())
-        //初始化 StreamingCallback
-        val streamingCallback = StreamingCallback(janusClient, Constant.SIP_ID.toBigInteger(), broadcastChannelId.toBigInteger())
-        janusClient?.setJanusCallback(streamingCallback)
+        if (SettingConfig.getSipEnabled(activity)) {
+
 
-        janusClient?.connect(-1, false)
+        }else{
+            //初始化 engine
+            WebRTCEngine.getInstance().init(true, this)
+            //初始化 janusClient
+            janusClient = JanusClient(JanusConstant.JANUS_URL, Constant.SIP_ID.toBigInteger())
+            //初始化 StreamingCallback
+            val streamingCallback = StreamingCallback(janusClient, Constant.SIP_ID.toBigInteger(), broadcastChannelId.toBigInteger())
+            janusClient?.setJanusCallback(streamingCallback)
 
+            janusClient?.connect(-1, false)
+        }
         runOnUiThread {
             ll_broadcast_view_new.visibility = View.VISIBLE
             showMessage(R.string.broadcast_playing)

+ 2 - 0
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/service/WdklSipService.java

@@ -16,6 +16,7 @@ import android.widget.Toast;
 
 import com.wdkl.app.ncs.callingbed.R;
 import com.wdkl.app.ncs.callingbed.activity.CallActivity;
+import com.wdkl.app.ncs.callingbed.activity.CallingbedActivity;
 import com.wdkl.app.ncs.callingbed.settings.SettingConfig;
 import com.wdkl.ncs.android.lib.base.BaseApplication;
 import com.wdkl.ncs.android.middleware.common.Constant;
@@ -140,6 +141,7 @@ public class WdklSipService extends Service {
                     }
                 } else if (state == Call.State.End || state == Call.State.Released){
                     EventBus.getDefault().post(new MessageEvent("handoff", Constant.EVENT_END_CALL));
+
                 }
             }
 

+ 75 - 73
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/NurseHomeActivity.kt

@@ -7,7 +7,6 @@ import android.content.BroadcastReceiver
 import android.content.Context
 import android.content.Intent
 import android.content.IntentFilter
-import android.graphics.Color
 import android.net.ConnectivityManager
 import android.net.Uri
 import android.os.BatteryManager
@@ -29,10 +28,10 @@ import com.enation.javashop.android.jrouter.external.annotation.Router
 import com.enation.javashop.net.engine.model.NetState
 import com.google.common.base.Strings
 import com.google.gson.Gson
+import com.wdkl.gstreamer.demo.MyGStreamManager
 import com.wdkl.ncs.android.component.nursehome.BuildConfig
 import com.wdkl.ncs.android.component.nursehome.R
 import com.wdkl.ncs.android.component.nursehome.databinding.ActivityNewNurseHomeBinding
-import com.wdkl.ncs.android.component.nursehome.databinding.ActivityNurseHomeBinding
 import com.wdkl.ncs.android.component.nursehome.fragment.*
 import com.wdkl.ncs.android.component.nursehome.hardware.HardWareFactroy
 import com.wdkl.ncs.android.component.nursehome.launch.NurseHomeLaunch
@@ -64,6 +63,7 @@ import com.wdkl.ncs.android.middleware.tcp.channel.DeviceChannel
 import com.wdkl.ncs.android.middleware.tcp.channel.EntraceGuardUtil
 import com.wdkl.ncs.android.middleware.tcp.channel.OtherUtil
 import com.wdkl.ncs.android.middleware.tcp.channel.VoiceUtil
+import com.wdkl.ncs.android.middleware.tcp.dto.TcpCallback
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
 import com.wdkl.ncs.android.middleware.tcp.enums.DeviceTypeEnum
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction
@@ -73,18 +73,15 @@ import com.wdkl.ncs.android.middleware.utils.StringUtil
 import com.wdkl.ncs.janus.util.JanusConstant
 import kotlinx.android.synthetic.main.activity_new_nurse_home.*
 import kotlinx.android.synthetic.main.activity_nurse_home.*
-import kotlinx.android.synthetic.main.activity_nurse_home.day_night_state_imagev
-import kotlinx.android.synthetic.main.activity_nurse_home.home_radio_bt
-import kotlinx.android.synthetic.main.activity_nurse_home.system_settings_radio_bt
 import kotlinx.android.synthetic.main.activity_nurse_home.view_title_layout_tv_point
 import kotlinx.android.synthetic.main.view_title_layout.*
 import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
 import org.linphone.core.AccountCreator
+import org.linphone.core.Core
 import org.linphone.core.RegistrationState
 import org.linphone.core.TransportType
-import serialporttest.utils.SerialPortUtil
 import serialporttest.utils.SerialPortUtilHost
 import java.io.File
 import java.io.FileOutputStream
@@ -100,7 +97,7 @@ import kotlin.collections.ArrayList
  * 首页Activity
  */
 @Router(path = "/nursehome/main")
-class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNurseHomeBinding>(), NurseHomeActivityContract.View,
+class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter, ActivityNewNurseHomeBinding>(), NurseHomeActivityContract.View,
         View.OnClickListener, SerialPortUtilHost.ISerialPortOnclickEvent, SerialPortUtilHost.IForkSpringSwiData {
     var TAG = NurseHomeActivity::class.java.getSimpleName()
 
@@ -163,6 +160,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
 
 
 
+
     /**
      * 提供layoutID
      */
@@ -307,17 +305,17 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
 
     override fun onResume() {
         super.onResume()
-        HardWareFactroy.getHardTools().toggleStatusBar(activity,false)
+        HardWareFactroy.getHardTools().toggleStatusBar(activity, false)
     }
 
     override fun onStart() {
         super.onStart()
-        HardWareFactroy.getHardTools().toggleStatusBar(activity,true)
+        HardWareFactroy.getHardTools().toggleStatusBar(activity, true)
     }
 
     override fun onPause() {
         super.onPause()
-        HardWareFactroy.getHardTools().toggleStatusBar(activity,true)
+        HardWareFactroy.getHardTools().toggleStatusBar(activity, true)
     }
 
     private fun checkAppExist() : Boolean {
@@ -553,7 +551,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
             executor!!.shutdownNow()
         }
         SpeechUtil.getInstance().release()
-        HardWareFactroy.getHardTools().toggleStatusBar(activity,true)
+        HardWareFactroy.getHardTools().toggleStatusBar(activity, true)
         HardWareFactroy.getHardTools().unInit()
     }
 
@@ -632,8 +630,8 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
     }
 
     override fun setServerInfo(data: ServerInfo) {
-        Log.e(TAG,"收到返回的TCP信息1: " + data.tcpLocalIp + ", " + data.tcpPort + ", " + data.tcpIdleSeconds)
-        Log.e(TAG,"收到返回的TCP信息2: " + data.rtcLocalIp + ", " + data.rtcPort)
+        Log.e(TAG, "收到返回的TCP信息1: " + data.tcpLocalIp + ", " + data.tcpPort + ", " + data.tcpIdleSeconds)
+        Log.e(TAG, "收到返回的TCP信息2: " + data.rtcLocalIp + ", " + data.rtcPort)
         Constant.TCP_SERVER_URL = data.tcpLocalIp
         Constant.TCP_PORT = data.tcpPort
         Constant.reader_idle_time = data.tcpIdleSeconds
@@ -710,8 +708,8 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
      * 得到设置配置的信息
      */
     override fun showSettingData(data: HostDevicePartSettingVO) {
-        Log.e(TAG,"收到返回的设置配置信息 ")
-        Log.e(TAG,"partId "+data.partId)
+        Log.e(TAG, "收到返回的设置配置信息 ")
+        Log.e(TAG, "partId " + data.partId)
 
         if (SettingConfig.getSipEnabled(activity)) {
             //配置sip账户
@@ -804,7 +802,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
             setSettingConfiguration()
         } catch (e: Exception) {
             //showMessage("Setting configs error: " + e.message)
-            Log.i(TAG,"获取设置配置信息异常" + e.message)
+            Log.i(TAG, "获取设置配置信息异常" + e.message)
         }
     }
 
@@ -885,14 +883,14 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
     override fun onClick(p0: View) {
        when(p0.id){
 
-           R.id.menu_home ->{
+           R.id.menu_home -> {
                if (select_id != 0) {
                    showMiddleFragment(FramePartFragment())
                    select_id = 0
                }
            }
            //广播
-           R.id.menu_broadcasting ->{
+           R.id.menu_broadcasting -> {
                if (select_id != 1) {
                    showMiddleFragment(BroadcastNewFragment())
                    select_id = 1
@@ -907,14 +905,14 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
 //               showMiddleFragment(VisitManagementFragment())
 //           }
            //医生
-           R.id.menu_doctor ->{
+           R.id.menu_doctor -> {
                if (select_id != 3) {
                    select_id = 3
                    showMiddleFragment(DoctorHostFragment())
                }
            }
            //病区
-           R.id.menu_ward_disease ->{
+           R.id.menu_ward_disease -> {
                if (select_id != 4) {
                    select_id = 4
 //                   showLeftFragment(InpatientWardFragment())
@@ -922,22 +920,22 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                }
            }
            //病床
-           R.id.menu_ward ->{
+           R.id.menu_ward -> {
                if (select_id != 5) {
                    select_id = 5
                    showMiddleFragment(SickbedFragment())
                }
            }
            //移动设备
-           R.id.menu_moving ->{
+           R.id.menu_moving -> {
                if (select_id != 6) {
                    select_id = 6
                    showMiddleFragment(NurseMoveFragment())
                }
            }
            //其他
-           R.id.menu_others ->{
-                if (select_id != 7) {
+           R.id.menu_others -> {
+               if (select_id != 7) {
                    select_id = 7
                    showMiddleFragment(OtherHostFragment())
                }
@@ -951,7 +949,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
 //               }
 //           }
            //设置
-           R.id.menu_settings ->{
+           R.id.menu_settings -> {
                if (select_id != 9) {
                    select_id = 9
                    showMiddleFragment(SystemSettingsFragment())
@@ -969,8 +967,8 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
            }
            R.id.menu_more -> {
 //               if (select_id != 11) {
-                   showMiddleFragment(WorkFragment())
-                   select_id = 11
+               showMiddleFragment(WorkFragment())
+               select_id = 11
 //               }
 
            }
@@ -1216,8 +1214,8 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                                             frameName = item.interactionVO.fromFrameFullName.replace("-", "")
                                         }
                                         val text = BaseApplication.appContext.getString(
-                                            R.string.voice_call_speech,
-                                            frameName
+                                                R.string.voice_call_speech,
+                                                frameName
                                         )
                                         SpeechUtil.getInstance().removeSpeak(text)
                                     } else {
@@ -1246,7 +1244,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
     inner class TimeReceiver: BroadcastReceiver() {
         override fun onReceive(context: Context, intent: Intent) {
             if (intent.action == Constant.HOOK_ON) {
-                Log.e(TAG,"手柄放下 ")
+                Log.e(TAG, "手柄放下 ")
                 if (System.currentTimeMillis() - hookonTime > 2000) {
                     Constant.hookOn = true
                     VoiceManagerUtil.switchAudioMode(activity, true)
@@ -1267,7 +1265,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
 
                 hookonTime = System.currentTimeMillis()
             } else if (intent.action == Constant.HOOK_OFF) {
-                Log.e(TAG,"手柄拿起 ")
+                Log.e(TAG, "手柄拿起 ")
                 EventBus.getDefault().post(MessageEvent(false, Constant.EVENT_TOGGLE_SPEAKER))
                 if (System.currentTimeMillis() - hookoffTime > 2000) {
                     Constant.hookOn = false
@@ -1332,7 +1330,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
     /**
      * 设置系统音量
      */
-    fun setTheSystemVolume(value:Int){
+    fun setTheSystemVolume(value: Int){
         //todo 这里需要优化 滑动的时候会调起很多个打开权限的界面
         if (value <= 15) {
             val nm = this.activity.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
@@ -1358,11 +1356,11 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
 
             //白天起始时间戳
             val date = TimeTransition.getDateTime("yyyy-MM-dd")
-            val dayStartTimeStamp = TimeTransition.dateToStamp(date+" "+SettingConfig.getInitialDayTime(activity)+":00")
+            val dayStartTimeStamp = TimeTransition.dateToStamp(date + " " + SettingConfig.getInitialDayTime(activity) + ":00")
             //白天结束时间戳
-            var endOfDayTimeStamp = TimeTransition.dateToStamp(date+" "+SettingConfig.getEndOfDay(activity)+":00")
+            var endOfDayTimeStamp = TimeTransition.dateToStamp(date + " " + SettingConfig.getEndOfDay(activity) + ":00")
 
-            Log.e(TAG,"dayStartTimeStamp: " + dayStartTimeStamp + "----endOfDayTimeStamp: " + endOfDayTimeStamp)
+            Log.e(TAG, "dayStartTimeStamp: " + dayStartTimeStamp + "----endOfDayTimeStamp: " + endOfDayTimeStamp)
 
             val curInday = dayStartTimeStamp < currentTimestamp && currentTimestamp < endOfDayTimeStamp
             if (curInday) {
@@ -1602,8 +1600,8 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                                 bundle.putString("tcp_tid", tcpModel.tid)
                                 //bundle.putString("targetId", targetId)
                                 if (DeviceTypeEnum.DOCTOR_HOST.value() == interactionVO.toDeviceType
-                                    || DeviceTypeEnum.NURSE_HOST.value() == interactionVO.toDeviceType
-                                    || DeviceTypeEnum.OTHER_HOST.value() == interactionVO.toDeviceType
+                                        || DeviceTypeEnum.NURSE_HOST.value() == interactionVO.toDeviceType
+                                        || DeviceTypeEnum.OTHER_HOST.value() == interactionVO.toDeviceType
                                 ) {
                                     //医生机,护士主机,其他主机,总控主机等
                                     bundle.putString("call_name", interactionVO.toDeviceName)
@@ -1626,8 +1624,8 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                                 bundle.putString("tcp_tid", tcpModel.tid)
                                 //bundle.putString("targetId", targetId)
                                 if (DeviceTypeEnum.DOCTOR_HOST.value() == interactionVO.toDeviceType
-                                    || DeviceTypeEnum.NURSE_HOST.value() == interactionVO.toDeviceType
-                                    || DeviceTypeEnum.OTHER_HOST.value() == interactionVO.toDeviceType
+                                        || DeviceTypeEnum.NURSE_HOST.value() == interactionVO.toDeviceType
+                                        || DeviceTypeEnum.OTHER_HOST.value() == interactionVO.toDeviceType
                                 ) {
                                     //医生机,护士主机,其他主机,总控主机等
                                     bundle.putString("call_name", interactionVO.toDeviceName)
@@ -1676,7 +1674,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                             EventBus.getDefault().post(MessageEvent("handoff", Constant.EVENT_END_CALL))
                         }
 
-                        showSosAlert(tcpModel, false,true)
+                        showSosAlert(tcpModel, false, true)
 
                         LedHelper.updateLedInfo(interactionVO, true, true)
 
@@ -1688,7 +1686,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                         }
                         //如果分机绑定了紧急按钮则加上紧急按钮名称
                         if (interactionVO.fromDeviceType == DeviceTypeEnum.EMERGENCY_BUTTON.value()
-                            || interactionVO.fromDeviceType == DeviceTypeEnum.SIMULATE_EMERGENCY_BUTTON.value()) {
+                                || interactionVO.fromDeviceType == DeviceTypeEnum.SIMULATE_EMERGENCY_BUTTON.value()) {
                             if (SettingConfig.getSosCallNameOn(activity)) {
                                 if (Locale.CHINESE.getLanguage().equals(language)) {
                                     sosName = Util.appendSpace(interactionVO.fromDeviceName)
@@ -1706,7 +1704,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                                 } else {
                                     speakText = interactionVO.data.replace("-", "")
                                 }
-                                SpeechUtil.getInstance().addSpeech(speakText,true)
+                                SpeechUtil.getInstance().addSpeech(speakText, true)
                             } else {
                                 val text = BaseApplication.appContext.getString(R.string.sos_call_speech, sosName)
                                 SpeechUtil.getInstance().addSpeech(text, true)
@@ -1717,8 +1715,8 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
 
                         //是否开启呼叫转移
                         //if (SettingConfiguration.getInstance().transferCall) {
-                            val sosItem = CallingItem(tcpModel.tid, System.currentTimeMillis(), interactionVO, tcpModel.action)
-                            sosItemList.add(sosItem)
+                        val sosItem = CallingItem(tcpModel.tid, System.currentTimeMillis(), interactionVO, tcpModel.action)
+                        sosItemList.add(sosItem)
                         //}
 
                         EventBus.getDefault().post(MessageEvent(0, Constant.EVENT_REFRESH_CALL_LIST))
@@ -1734,7 +1732,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                             }
                             //如果分机绑定了紧急按钮则加上紧急按钮名称
                             if (interactionVO.fromDeviceType == DeviceTypeEnum.EMERGENCY_BUTTON.value()
-                                || interactionVO.fromDeviceType == DeviceTypeEnum.SIMULATE_EMERGENCY_BUTTON.value()) {
+                                    || interactionVO.fromDeviceType == DeviceTypeEnum.SIMULATE_EMERGENCY_BUTTON.value()) {
                                 if (SettingConfig.getSosCallNameOn(activity)) {
                                     if (Locale.CHINESE.getLanguage().equals(language)) {
                                         sosName = Util.appendSpace(interactionVO.fromDeviceName)
@@ -1778,7 +1776,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                                         }
                                         //如果分机绑定了紧急按钮则加上紧急按钮名称
                                         if (it.interactionVO.fromDeviceType == DeviceTypeEnum.EMERGENCY_BUTTON.value()
-                                            || it.interactionVO.fromDeviceType == DeviceTypeEnum.SIMULATE_EMERGENCY_BUTTON.value()) {
+                                                || it.interactionVO.fromDeviceType == DeviceTypeEnum.SIMULATE_EMERGENCY_BUTTON.value()) {
                                             if (SettingConfig.getSosCallNameOn(activity)) {
                                                 if (Locale.CHINESE.getLanguage().equals(language)) {
                                                     sosName = Util.appendSpace(it.interactionVO.fromDeviceName)
@@ -1842,7 +1840,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                         }
 
                         val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
-                        showSosAlert(tcpModel, false,true)
+                        showSosAlert(tcpModel, false, true)
                         RingPlayHelper.stopRingTone()
                         MediaPlayHelper.getInstance().stopMusic()
 
@@ -1861,8 +1859,8 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                             } else {
                                 if (tcpModel.action == TcpAction.SOSAction.AlARM_BUTTON) {
                                     val speakStr = BaseApplication.appContext.getString(
-                                        R.string.sos_call_speech,
-                                        interactionVO.fromMemberName
+                                            R.string.sos_call_speech,
+                                            interactionVO.fromMemberName
                                     )
                                     SpeechUtil.getInstance().addSpeech(speakStr, true)
                                 } else if (tcpModel.action == TcpAction.SOSAction.ALARM_FALL_RADAR) {
@@ -2012,7 +2010,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                 } else if (tcpModel.type == TcpType.DATA) {
                     if (tcpModel.action == TcpAction.DataAction.INTERACTION) {
                         EventBus.getDefault().post(MessageEvent(0, Constant.EVENT_REFRESH_CALL_LIST))
-                    }else if (tcpModel.action == TcpAction.DataAction.REMIND) {
+                    } else if (tcpModel.action == TcpAction.DataAction.REMIND) {
                         //如果当前不在NB-IoT设备界面则提醒
 //                        nb_device_radio_bt.update(0)
 //                        WidgetsUtil.showToastWithImage(getString(R.string.iot_device_warning), 360f, 320f, R.drawable.toast_warn)
@@ -2035,7 +2033,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                     }
                 } else if (tcpModel.type == TcpType.ENTRACEGUARD) {
                     if (tcpModel.action == TcpAction.EntraceGuardAction.STRANGER) {
-                        if(Constant.CALL_STATE == Constant.CALL_STANDBY) { //空闲状态
+                        if (Constant.CALL_STATE == Constant.CALL_STANDBY) { //空闲状态
                             SpeechUtil.getInstance().stopSpeak(true)
                             RingPlayHelper.stopRingTone()
 
@@ -2047,7 +2045,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                             entraceGuardVideoFragment!!.interactionVO = JSON.parseObject(tcpModel.data.toString(), InteractionVO::class.java)
                             entraceGuardVideoFragment!!.tcpModel = tcpModel
                             addCallFragment(entraceGuardVideoFragment!!)
-                            Log.i(TAG, "收到tcp消息111:"+tcpModel.toJson())
+                            Log.i(TAG, "收到tcp消息111:" + tcpModel.toJson())
                         } else { //忙线状态,发出tcp消息,无法接听
                             EntraceGuardUtil.rejectStranger(tcpModel)
                         }
@@ -2055,10 +2053,10 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                 } else if (tcpModel.type == TcpType.TIME) {
                     if (tcpModel.action == TcpAction.TimeAction.SYNC) {
                         var time = 0L
-                        var timeZone="Asia/Shanghai"
+                        var timeZone = "Asia/Shanghai"
                         if (canParseJson(tcpModel.data.toString())) {
                             val json = JSON.parseObject(tcpModel.data.toString())
-                            time = json.getLong("time")*1000
+                            time = json.getLong("time") * 1000
                             timeZone = json.getString("time_zone")
                         } else {
                             time = tcpModel.data.toString().toLong() * 1000
@@ -2074,7 +2072,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                             Log.d("setTime", "set sys time2: $timeStr, $timeZone")
                         }
                     }
-                }else if (tcpModel.type == TcpType.REINFORCE) {
+                } else if (tcpModel.type == TcpType.REINFORCE) {
                     if (tcpModel.action == TcpAction.ReinforceAction.CALL) {
                         val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
                         LedHelper.updateLedInfo(interactionVO, true, false)
@@ -2098,14 +2096,14 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                                 RingPlayHelper.playRingTone(activity, R.raw.incoming_call, true)
                             }
                         }
-                    }else if (tcpModel.action == TcpAction.ReinforceAction.RESPONSED) {
+                    } else if (tcpModel.action == TcpAction.ReinforceAction.RESPONSED) {
                         val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
                         SpeechUtil.getInstance().stopSpeak(false)
                         declineSosItem(interactionVO)
 
                         EventBus.getDefault().post(MessageEvent(0, Constant.EVENT_REFRESH_CALL_LIST))
                     }
-                }else if (tcpModel.type == TcpType.EVENT) {
+                } else if (tcpModel.type == TcpType.EVENT) {
                     if (tcpModel.action == TcpAction.EventAction.KEY_CLICK) {
                         val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
                         if (SettingConfig.getTtsMode(this) == SettingConfig.TTS_ON) {
@@ -2160,6 +2158,8 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
                         //广播结束
                         Constant.bcStart = false
                         tv_broadcast_state.visibility = View.GONE
+
+
                     }
                 }
 
@@ -2187,8 +2187,8 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
 
                     var name: String? = ""
                     if (DeviceTypeEnum.DOCTOR_HOST.value() == item.fromDeviceType
-                        || DeviceTypeEnum.NURSE_HOST.value() == item.fromDeviceType
-                        || DeviceTypeEnum.OTHER_HOST.value() == item.fromDeviceType) {
+                            || DeviceTypeEnum.NURSE_HOST.value() == item.fromDeviceType
+                            || DeviceTypeEnum.OTHER_HOST.value() == item.fromDeviceType) {
                         //医生机,护士主机,其他主机,总控主机等
                         name = item.fromDeviceName
                     } else if (DeviceTypeEnum.NURSE_WATCH.value() == item.fromDeviceType) {
@@ -2244,7 +2244,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
             }
 
             Constant.EVENT_r_br_set -> {
-               showMiddleFragment(BroadcastNewFragment())
+                showMiddleFragment(BroadcastNewFragment())
 
             }
 
@@ -2258,28 +2258,30 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
             }
 
             Constant.EVENT_V_br_set -> {
-                    supportFragmentManager.inTransaction {
-
-                        val bundle = Bundle()
-                        bundle.putString("id", messageEvent.message.toString())
-                        val fragment = BroadcastSetFragment()
-                        remove(currentFragment!!)
-                        currentFragment = fragment
-                        fragment.arguments = bundle
-                        add(R.id.host_main_frame, fragment)
-                    }
+                supportFragmentManager.inTransaction {
+
+                    val bundle = Bundle()
+                    bundle.putString("id", messageEvent.message.toString())
+                    val fragment = BroadcastSetFragment()
+                    remove(currentFragment!!)
+                    currentFragment = fragment
+                    fragment.arguments = bundle
+                    add(R.id.host_main_frame, fragment)
+                }
 
             }
         }
 
     }
 
-    private fun canParseJson(str:String) : Boolean {
+
+
+    private fun canParseJson(str: String) : Boolean {
         var result = false
         try {
             JSON.parseObject(str)
             result=true
-        }catch (e:java.lang.Exception){
+        }catch (e: java.lang.Exception){
             result=false
         }
         return result
@@ -2296,7 +2298,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter,ActivityNewNu
         }
     }
 
-    private fun declineSosItem(item:InteractionVO){
+    private fun declineSosItem(item: InteractionVO){
         if(incidentWindow!!.view==null){
             return
         }else{

+ 142 - 57
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/BroadcasthhFragment.kt

@@ -22,6 +22,8 @@ import com.wdkl.ncs.android.component.nursehome.databinding.FragmentBrCallBindin
 import com.wdkl.ncs.android.component.nursehome.databinding.FragmentBroadcastBinding
 import com.wdkl.ncs.android.component.nursehome.databinding.FragmentBroadcastHostBinding
 import com.wdkl.ncs.android.component.nursehome.launch.NurseHomeLaunch
+import com.wdkl.ncs.android.component.nursehome.service.WdklSipService
+import com.wdkl.ncs.android.component.nursehome.settingconfig.SettingConfig
 import com.wdkl.ncs.android.lib.base.BaseFragment
 import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.middleware.common.Constant
@@ -38,6 +40,8 @@ import com.wdkl.ncs.android.middleware.tcp.TcpClient
 import com.wdkl.ncs.android.middleware.tcp.channel.BroadcastUtil
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpCallback
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
+import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction
+import com.wdkl.ncs.android.middleware.tcp.enums.TcpType
 import kotlinx.android.synthetic.main.activity_frame_bed_info.*
 
 import kotlinx.android.synthetic.main.add_the_timing.*
@@ -48,8 +52,10 @@ import kotlinx.android.synthetic.main.fragment_broadcast_host.*
 import kotlinx.android.synthetic.main.fragment_broadcast_host.ll_gb_bt
 import kotlinx.android.synthetic.main.view_title_layout.*
 import kotlinx.android.synthetic.main.view_title_layout.view_title_layout_return
+import org.greenrobot.eventbus.EventBus
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
+import org.linphone.core.Core
 
 /**
  * 喊话广播界面
@@ -72,6 +78,8 @@ class BroadcasthhFragment : BaseFragment<BroadcasthhPresenter, FragmentBrCallBin
     private var bcVoiceOn = false
     private var initDone = false
 
+    var core: Core? = null
+
     /**
      * 提供layoutID
      */
@@ -98,6 +106,9 @@ class BroadcasthhFragment : BaseFragment<BroadcasthhPresenter, FragmentBrCallBin
         if (Constant.PART_ID!=null && Constant.PART_ID!=1 ){
             presenter.loadData(Constant.PART_ID)
         }
+        if (!SettingConfig.getSipEnabled(getActivity())){
+            btn_record.visibility =View.VISIBLE
+        }
     }
 
     /**
@@ -111,35 +122,68 @@ class BroadcasthhFragment : BaseFragment<BroadcasthhPresenter, FragmentBrCallBin
 //            if (group_id.equals("")){
 //                showMessage("请选择喊话区域")
 //            }else
+            if (SettingConfig.getSipEnabled(getActivity())){
+                if (Constant.bcStart) {
+                    showMessage(R.string.broadcast_playing)
+                }else {
+                    //先发起喊话广播请求,服务端返回端口再初始化
+                    val tcpModel = BroadcastUtil.startVoiceBroadcast(Constant.DEVICE_ID, "[0]")  //给所有分机设备发
+                    val transaction = object : TcpCallback(tcpModel.tid) {
+                        override fun onSuccess(jsonObject: JSONObject) {
+                            try {
+                                val port = jsonObject.get(CALLBACK_DATA)
+                                  //gstream初始化,指定服务器IP和音频端口
+                                    core = WdklSipService.getCore()
+                                    val addressToCall = core?.interpretUrl(port.toString())
+                                    val params = core?.createCallParams(null)
+                                    params?.isVideoEnabled = false
+                                    if (addressToCall != null) {
+                                        core?.inviteAddressWithParams(addressToCall, params!!)
+                                    }
+                            } catch (ex: Exception) {
+                                ex.printStackTrace()
+                            }
+                        }
 
-            if (Constant.bcStart) {
-            showMessage(R.string.broadcast_playing)
-            } else if (!Constant.gstreamer_init) {
-                tv_broadcast_title.setText(R.string.broadcast_init_error)
-            } else {
-                MyGStreamManager.getInstance().setCallBack(object : MyGStreamManager.StreamerCallBack {
-                    override fun onMessage(message: String?) {
-                        Log.d(TAG, "广播 ==> onMessage: $message")
+                        override fun onFailed(jsonObject: JSONObject) {
+                            // 这里写发送失败的方法
+                            activity.runOnUiThread {
+                                showMessage("broadcast send fail")
+                            }
+                        }
                     }
+                    TcpClient.getInstance().sendTcp(tcpModel, false, transaction)
+                }
+            }else{
+                if (Constant.bcStart) {
+                    showMessage(R.string.broadcast_playing)
+                } else if (!Constant.gstreamer_init) {
+                    tv_broadcast_title.setText(R.string.broadcast_init_error)
+                } else {
 
-                    override fun onStreamerInitialized() {
-                        Log.d(TAG, "广播 ==> 初始化完成...开始喊话")
-                        initDone = true
-
-                        activity.runOnUiThread {
-                            tv_broadcast_title.setText(R.string.broadcast_playing)
-                            btn_record.setBackgroundResource(R.drawable.mic_off)
-                            tv_record.setText(R.string.broadcast_record_stop)
-                            call_bt_call.visibility =View.GONE
-                            call_bt_bt.visibility =View.VISIBLE
-                            my_voice_load_view.start()
-                            showMessage(R.string.broadcast_record_start)
-                            bcVoiceOn = true
+                    MyGStreamManager.getInstance().setCallBack(object : MyGStreamManager.StreamerCallBack {
+                        override fun onMessage(message: String?) {
+                            Log.d(TAG, "广播 ==> onMessage: $message")
                         }
 
-                        MyGStreamManager.getInstance().play()
-                    }
-                })
+                        override fun onStreamerInitialized() {
+                            Log.d(TAG, "广播 ==> 初始化完成...开始喊话")
+                            initDone = true
+
+                            activity.runOnUiThread {
+                                tv_broadcast_title.setText(R.string.broadcast_playing)
+                                btn_record.setBackgroundResource(R.drawable.mic_off)
+                                tv_record.setText(R.string.broadcast_record_stop)
+                                call_bt_call.visibility =View.GONE
+                                call_bt_bt.visibility =View.VISIBLE
+                                my_voice_load_view.start()
+                                showMessage(R.string.broadcast_record_start)
+                                bcVoiceOn = true
+                            }
+
+                            MyGStreamManager.getInstance().play()
+                        }
+                    })
                     //先发起喊话广播请求,服务端返回端口再初始化
                     val tcpModel = BroadcastUtil.startVoiceBroadcast(Constant.DEVICE_ID, "[0]")  //给所有分机设备发
                     val transaction = object : TcpCallback(tcpModel.tid) {
@@ -148,7 +192,6 @@ class BroadcasthhFragment : BaseFragment<BroadcasthhPresenter, FragmentBrCallBin
                                 val port = jsonObject.get(CALLBACK_DATA)
                                 //gstream初始化,指定服务器IP和音频端口
                                 val uri = "host=" + Constant.RTC_URL + " port=" + port
-
                                 MyGStreamManager.getInstance().init(uri)
                             } catch (ex: Exception) {
                                 ex.printStackTrace()
@@ -164,6 +207,8 @@ class BroadcasthhFragment : BaseFragment<BroadcasthhPresenter, FragmentBrCallBin
                     }
                     TcpClient.getInstance().sendTcp(tcpModel, false, transaction)
                 }
+            }
+
         }
         //挂断
         call_bt_bt.setOnClickListener {
@@ -171,34 +216,34 @@ class BroadcasthhFragment : BaseFragment<BroadcasthhPresenter, FragmentBrCallBin
         }
 
         btn_record.setOnClickListener {
-            if (!Constant.gstreamer_init) {
-                tv_broadcast_title.setText(R.string.broadcast_init_error)
-                showMessage(R.string.broadcast_init_error)
-            } else if (!initDone) {
-                tv_broadcast_title.setText(R.string.broadcast_start_warning)
-                showMessage(R.string.broadcast_start_warning)
-            } else {
-                if (!bcVoiceOn) {
-                    //start broadcast
-                    tv_broadcast_title.setText(R.string.broadcast_playing)
-                    btn_record.setBackgroundResource(R.drawable.mic_off)
-                    tv_record.setText(R.string.broadcast_record_stop)
-                    bcVoiceOn = true
-
-                    MyGStreamManager.getInstance().play()
-                    my_voice_load_view.start()
+                if (!Constant.gstreamer_init) {
+                    tv_broadcast_title.setText(R.string.broadcast_init_error)
+                    showMessage(R.string.broadcast_init_error)
+                } else if (!initDone) {
+                    tv_broadcast_title.setText(R.string.broadcast_start_warning)
+                    showMessage(R.string.broadcast_start_warning)
                 } else {
-                    //stop broadcast
-                    tv_broadcast_title.setText(R.string.broadcast_stop)
-                    btn_record.setBackgroundResource(R.drawable.mic_on)
-                    tv_record.setText(R.string.broadcast_record_start)
-                    bcVoiceOn = false
-
-                    MyGStreamManager.getInstance().pause()
-                    my_voice_load_view.stop()
+                    if (!bcVoiceOn) {
+                        //start broadcast
+                        tv_broadcast_title.setText(R.string.broadcast_playing)
+                        btn_record.setBackgroundResource(R.drawable.mic_off)
+                        tv_record.setText(R.string.broadcast_record_stop)
+                        bcVoiceOn = true
+
+                        MyGStreamManager.getInstance().play()
+                        my_voice_load_view.start()
+                    } else {
+                        //stop broadcast
+                        tv_broadcast_title.setText(R.string.broadcast_stop)
+                        btn_record.setBackgroundResource(R.drawable.mic_on)
+                        tv_record.setText(R.string.broadcast_record_start)
+                        bcVoiceOn = false
+                        MyGStreamManager.getInstance().pause()
+                        my_voice_load_view.stop()
+                    }
                 }
+
             }
-        }
 
     }
 
@@ -210,11 +255,25 @@ class BroadcasthhFragment : BaseFragment<BroadcasthhPresenter, FragmentBrCallBin
      *页面销毁回调
      */
     override fun destory() {
+
         if (initDone && !Constant.bcStart) {
             val tcpModel = BroadcastUtil.stopBroadcast(Constant.DEVICE_ID, Constant.bcInteractionId)
             TcpClient.getInstance().sendMsg(tcpModel.toJson())
         }
-        MyGStreamManager.getInstance().release()
+        if (SettingConfig.getSipEnabled(getActivity())) {
+            if (core != null) {
+                if (core!!.callsNb > 0) {
+                    var call = core!!.currentCall
+                    if (call == null) {
+                        call = core!!.calls[0]
+                    }
+                    call!!.terminate()
+                }
+            }
+        }else{
+            MyGStreamManager.getInstance().release()
+        }
+
     }
 
     /**
@@ -246,6 +305,23 @@ class BroadcasthhFragment : BaseFragment<BroadcasthhPresenter, FragmentBrCallBin
     override fun start() {
     }
 
+    override fun onStart() {
+        super.onStart()
+        if (!EventBus.getDefault().isRegistered(this)) {
+            // 未注册的逻辑处理
+            EventBus.getDefault().register(this)
+        }
+
+    }
+
+    override fun onStop() {
+        super.onStop()
+        if (EventBus.getDefault().isRegistered(this)) {
+            // 已注册的逻辑处理
+            EventBus.getDefault().unregister(this)
+        }
+
+    }
     /**
      *处理网络状态
      */
@@ -254,12 +330,21 @@ class BroadcasthhFragment : BaseFragment<BroadcasthhPresenter, FragmentBrCallBin
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun onMoonEvent(messageEvent: MessageEvent) {
-//        Log.e(TAG,"收到tcp消息")
-//        var messageEvent = messageEvent.getMessage() as TcpModel
-//        if(messageEvent.getAction() === TcpAction.EventAction.KEY_CLICK){
-//
-//            Log.e(TAG,"收到tcp消息"+messageEvent.toJson())
-//        }
+        when (messageEvent.getType()) {
+            Constant.SIP_CONNECTED -> {
+                initDone = true
+                activity.runOnUiThread {
+                    tv_broadcast_title.setText(R.string.broadcast_playing)
+                    btn_record.setBackgroundResource(R.drawable.mic_off)
+                    tv_record.setText(R.string.broadcast_record_stop)
+                    call_bt_call.visibility =View.GONE
+                    call_bt_bt.visibility =View.VISIBLE
+                    my_voice_load_view.start()
+                    showMessage(R.string.broadcast_record_start)
+                    bcVoiceOn = true
+                }
+            }
+        }
     }
 
     override fun onItemClick(view: View, keyId: Int, ids: String) {

+ 1 - 1
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/service/WdklSipService.java

@@ -125,7 +125,7 @@ public class WdklSipService extends Service {
                     return;
                 }
 
-                Toast.makeText(WdklSipService.this, message, Toast.LENGTH_SHORT).show();
+//                Toast.makeText(WdklSipService.this, message, Toast.LENGTH_SHORT).show();
                 Log.d("sipCall", ">>>>>>>>>>>> call state: " + state + ", " + call.getRemoteAddress().asString());
 
                 if (state == Call.State.IncomingReceived || state == Call.State.IncomingEarlyMedia) {

+ 1 - 0
android_host/src/main/res/layout/fragment_br_call.xml

@@ -115,6 +115,7 @@
                 android:layout_marginTop="@dimen/d8"
                 android:scaleType="center"
                 android:background="@drawable/mic_on"
+                android:visibility="gone"
                />
 
             <TextView

+ 2 - 2
build.gradle

@@ -48,8 +48,8 @@ buildscript {
      * 配置要打包的模块
      */
     ext.callingdoor = false
-    ext.android_bed = true
-    ext.android_host = false
+    ext.android_bed = false
+    ext.android_host = true
     ext.is_mom = false