浏览代码

## [1.1.21] version 40 - 2020-08-06
### Fixed
- 通话逻辑修改

allen 3 年之前
父节点
当前提交
d499d9c9ae

+ 2 - 2
build.gradle

@@ -47,12 +47,12 @@ buildscript {
     /**
      * APP版本码
      */
-    ext.app_version_code = 39
+    ext.app_version_code = 40
 
     /**
      * APP版本号
      */
-    ext.app_version = "1.1.20"
+    ext.app_version = "1.1.21"
 
     /**
      * 项目依赖库

+ 0 - 1
home/src/main/AndroidManifest.xml

@@ -22,7 +22,6 @@
         <activity android:name=".activity.WatchHome2Activity"/>
         <activity android:name=".activity.WatchContactsActivity" />
         <activity android:name=".activity.WatchCallRecordsActivity" />
-        <activity android:name=".activity.EventActivity" />
         <activity android:name=".activity.WatchEventDetailActivity" />
         <activity android:name=".activity.WatchUserSettingActivity" />
         <activity android:name=".activity.SOSEmergencyCallActivity" />

+ 0 - 221
home/src/main/code/com/wdkl/ncs/android/component/home/activity/EventActivity.kt

@@ -1,221 +0,0 @@
-package com.wdkl.ncs.android.component.home.activity
-
-import android.util.Log
-import android.view.View
-import com.enation.javashop.net.engine.model.NetState
-import com.google.gson.Gson
-import com.wdkl.ncs.android.component.home.R
-import com.wdkl.ncs.android.component.home.databinding.WatchActivityEventBinding
-import com.wdkl.ncs.android.component.home.launch.HomeLaunch
-import com.wdkl.ncs.android.component.home.util.MediaPlayHelper
-import com.wdkl.ncs.android.component.nursehome.common.Constants
-import com.wdkl.ncs.android.component.nursehome.util.TimeTransition
-import com.wdkl.ncs.android.lib.base.BaseActivity
-import com.wdkl.ncs.android.lib.utils.showMessage
-import com.wdkl.ncs.android.middleware.api.ApiManager
-import com.wdkl.ncs.android.middleware.logic.contract.home.WatchHomeActivityContract
-import com.wdkl.ncs.android.middleware.logic.presenter.home.WatchHomeActivityPresenter
-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.DeviceVO
-import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
-import com.wdkl.ncs.android.middleware.tcp.TcpClient
-import com.wdkl.ncs.android.middleware.tcp.channel.EventUtil
-import com.wdkl.ncs.android.middleware.tcp.channel.ImUtil
-import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
-import com.wdkl.ncs.android.middleware.tcp.enums.TcpType
-import kotlinx.android.synthetic.main.watch_activity_event.*
-
-class EventActivity : BaseActivity<WatchHomeActivityPresenter, WatchActivityEventBinding>(), WatchHomeActivityContract.View, View.OnClickListener {
-
-
-
-    var TAG = EventActivity::class.java.simpleName
-
-    var tcpModel = TcpModel()
-    var interactionVO: InteractionVO? = null
-
-
-    override fun getLayId(): Int {
-        return R.layout.watch_activity_event
-
-
-    }
-
-    override fun bindDagger() {
-        HomeLaunch.component.inject(this)
-    }
-
-
-    override fun init() {
-        tcpModel = intent.getSerializableExtra("TcpModel") as TcpModel
-        interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
-
-//            //判断是呼入还是呼出 1 分机到主机 2主机到分机
-//            if(interactionVO.actionDirectionType == 1){
-//                interactionVO.sickbedTv.text = itemData.fromFrameFullName
-//                interactionVO.nameTv.text = itemData.fromMemberName
-//                //TODO 图标显示不正常 暂时没放完整图标
-//                binding.callStatusImagev.setImageResource(R.drawable.hu_ru_yi_jie)
-//            }else if(interactionVO.actionDirectionType == 2 || itemData.actionDirectionType == 3){
-//                binding.sickbedTv.text = interactionVO.toFrameFullName
-//                binding.nameTv.text = interactionVO.toMemberName
-//                binding.callStatusImagev.setImageResource(R.drawable.hu_chu_yi_jie)
-//            }
-//
-//            if(itemData.actionType == TcpType.EVENT.name){//事件已经响应 相应的数据
-//                binding.playTv.visibility = View.GONE
-//                binding.projectTv.visibility = View.VISIBLE
-//                binding.conductorNameTv.visibility = View.VISIBLE
-//                binding.projectTv.text = interactionVO.data
-//                binding.conductorNameTv.text = interactionVO.toMemberName
-//                binding.processingTimeTv.text = TimeTransition().stampToDate(interactionVO.actionEnd*1000)
-//                binding.projectTv.setBackgroundResource(R.drawable.sp_event_handled)
-//            }else if (interactionVO.actionType == TcpType.IM.name){//语音已播放
-//
-//                binding.projectTv.visibility = View.GONE
-//                binding.playTv.visibility = View.VISIBLE
-//                binding.conductorNameTv.visibility = View.GONE
-//                binding.playTv.setBackgroundResource(R.drawable.yi_bo_fang)
-//                binding.processingTimeTv.text = "已播放"
-//
-//            }else if(interactionVO.actionType == TcpType.VOICE.name){ //语音呼叫已接听
-//                binding.projectTv.visibility = View.GONE
-//                binding.playTv.visibility = View.VISIBLE
-//                binding.treatmentStateImagev.visibility = View.GONE
-//                binding.processingTimeTv.visibility = View.GONE
-//
-//            }else if(interactionVO.actionType == TcpType.VIDEO.name){ //视频呼叫已接听
-//
-//                binding.projectTv.visibility = View.GONE
-//                binding.playTv.visibility = View.VISIBLE
-//                binding.treatmentStateImagev.visibility = View.GONE
-//                binding.processingTimeTv.visibility = View.GONE
-//            }
-//
-//        } else {
-//            Log.e(TAG, "" + interactionVO.actionEnd+" ")
-//            Log.e(TAG, "" + interactionVO.actionType+" ")
-//            Log.e(TAG, "" + interactionVO.data+" ")
-//            Log.e(TAG, "" + interactionVO.actionDirectionType+" ")
-//            //判断是呼入还是呼出 1 分机到主机 2主机到分机
-//            if(interactionVO.actionDirectionType == 1){
-//                Log.e(TAG, "进入。。。。" )
-//                binding.sickbedTv.text = interactionVO.fromFrameFullName
-//                binding.nameTv.text = interactionVO.fromMemberName
-//                // 图标显示不正常 暂时没放完整图标
-//                binding.callStatusImagev.setImageResource(R.drawable.hu_ru_wei_jie)
-//            }else if(interactionVO.actionDirectionType == 2 || interactionVO.actionDirectionType == 3){
-//                binding.sickbedTv.text = interactionVO.toFrameFullName
-//                binding.nameTv.text = interactionVO.toMemberName
-//                binding.callStatusImagev.setImageResource(R.drawable.hu_chu_wei_jie)
-//            }
-//
-//            binding.treatmentStateImagev.setImageResource(R.drawable.wei_chu_li)
-////                binding.callStatusImagev.setImageResource(R.drawable.wei_jie)
-//            binding.conductorNameTv.visibility = View.GONE
-//            binding.treatmentStateImagev.visibility = View.VISIBLE
-//            binding.processingTimeTv.visibility = View.VISIBLE
-//            if(itemData.actionType == TcpType.EVENT.name){//事件未处理
-//                binding.playTv.visibility = View.GONE
-//                binding.projectTv.visibility = View.VISIBLE
-//                binding.projectTv.text = interactionVO.data
-//                binding.projectTv.setBackgroundResource(R.drawable.sp_event_unhandled_bg)
-//                binding.processingTimeTv.text = "未处理"
-//            }else if (interactionVO.actionType == TcpType.IM.name){//语音未播放
-//                binding.projectTv.visibility = View.GONE
-//                binding.playTv.visibility = View.VISIBLE
-//                binding.playTv.setBackgroundResource(R.drawable.bo_fang)
-//                binding.processingTimeTv.text = "未播放"
-//            }else if(interactionVO.actionType == TcpType.VOICE.name){ //语音呼叫未接听
-//                binding.projectTv.visibility = View.GONE
-//                binding.playTv.visibility = View.GONE
-//                binding.treatmentStateImagev.visibility = View.GONE
-//                binding.processingTimeTv.visibility = View.GONE
-//            }else if(interactionVO.actionType == TcpType.VIDEO.name){ //视频呼叫未接听
-//                binding.projectTv.visibility = View.GONE
-//                binding.playTv.visibility = View.GONE
-//                binding.treatmentStateImagev.visibility = View.GONE
-//                binding.processingTimeTv.visibility = View.GONE
-//
-//            }
-//    }
-        if (interactionVO!!.createDate != null) {
-            call_time_tv.text = TimeTransition().stampToDate(interactionVO!!.createDate * 1000)
-        }
-        sickbed_tv.text = interactionVO!!.fromFrameFullName
-        name_tv.text = interactionVO!!.fromMemberName
-
-        if (interactionVO!!.actionType == TcpType.EVENT.name) {
-            project_tv.visibility = View.VISIBLE
-            play_tv.visibility = View.GONE
-            processing_time_tv.text = "未处理"
-            event_state_tv.text = "未处理"
-        } else if (interactionVO!!.actionType == TcpType.IM.name) {
-            play_tv.visibility = View.VISIBLE
-            project_tv.visibility = View.GONE
-            processing_time_tv.text = "未播放"
-            event_state_tv.text = "未播放"
-
-        }
-
-        event_button_relyout.setOnClickListener(this)
-
-
-    }
-
-    override fun bindEvent() {
-
-    }
-
-    override fun destory() {
-
-    }
-
-    override fun setDeviceSettingData(partSettingDO: PartSettingDO) {
-    }
-
-    override fun onError(message: String, type: Int) {
-    }
-
-    override fun complete(message: String, type: Int) {
-    }
-
-    override fun start() {
-    }
-
-    override fun networkMonitor(state: NetState) {
-    }
-    override fun setDeviceDo(data: DeviceVO) {
-    }
-
-    override fun setTcpServerHost(tcpSeverDTO: TcpSeverDTO) {
-    }
-    override fun onClick(p0: View?) {
-        if (interactionVO!!.actionType == TcpType.EVENT.name) {
-            if (!Constants.deviceId.equals("")) {
-                var eventTcpModel = EventUtil.eventResponse(Constants.deviceId.toInt(), interactionVO!!.fromDeviceId, interactionVO!!.id)
-                TcpClient.getInstance().sendMsg(eventTcpModel.toJson())
-            } else {
-                showMessage("获取不到当给前设备id")
-            }
-
-        } else if (interactionVO!!.actionType == TcpType.IM.name) {
-            if (!Constants.deviceId.equals("")) {
-                var imUtilTcpModel = ImUtil.imRead(Constants.deviceId.toInt(), interactionVO!!.fromDeviceId, interactionVO!!.id)
-                TcpClient.getInstance().sendMsg(imUtilTcpModel.toJson())
-                //var mediaPlayer = MediaPlayer()
-                //mediaPlayer.startMediaPlayer(Constants.eth_ip + interactionVO!!.data)
-                //mediaPlayer.setVolume(0.3f)
-                MediaPlayHelper.getInstance().playUrlMusic(ApiManager.urlManager.device_url +interactionVO!!.data,1f,false)
-
-            } else {
-                showMessage("获取不到当给前设备id")
-            }
-
-        }
-
-    }
-
-
-}

+ 16 - 5
home/src/main/code/com/wdkl/ncs/android/component/home/activity/NewEventListActivity.kt

@@ -62,17 +62,26 @@ class NewEventListActivity : BaseActivity<NewEventListPresenter,ActivityEventLis
     }
 
     override fun init() {
+        WdKeepAliveService.mNewEventListActive = true
         //震动
         mVibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
-        if (boolVibrator) {
-            handleVibrator()
-        }
-
         val tcpModel = TcpModel.getModelByJson(tcpModelStr)
         val interactionVO = Gson().fromJson<InteractionVO>(tcpModel.data.toString(),InteractionVO::class.java)
         listData.add(interactionVO)
 
-        WdKeepAliveService.mNewEventListActive = true
+        if (boolVibrator) {
+            handleVibrator()
+
+            //语音播放
+            if (tcpModel.type == TcpType.EVENT && tcpModel.action == TcpAction.EventAction.KEY_CLICK) {
+                val eventStr = Util.appendSpace(interactionVO.fromFrameFullName.replace("-", ",")) + ", " + interactionVO.data
+                SpeechUtil.getInstance().newSpeech("您有新的事件待处理, " + eventStr, false)
+
+            } else if (tcpModel.type == TcpType.IM && tcpModel.action == TcpAction.IMAction.MSG) {
+                SpeechUtil.getInstance().newSpeech("您有新的语音留言待处理", false)
+            }
+        }
+
         /**初始化LayoutMannager*/
         virtualLayoutManager = VirtualLayoutManager(this.activity)
 
@@ -201,6 +210,7 @@ class NewEventListActivity : BaseActivity<NewEventListPresenter,ActivityEventLis
             SpeechUtil.getInstance().stopSpeak()
             if (tcpModel.type == TcpType.EVENT) {
                 if (tcpModel.action == TcpAction.EventAction.KEY_CLICK) {
+                    handleVibrator()
                     listData.add(responseInteractionVO)
                     renderData(listData)
                     val eventStr = Util.appendSpace(responseInteractionVO.fromFrameFullName.replace("-", ",")) + ", " + responseInteractionVO.data
@@ -208,6 +218,7 @@ class NewEventListActivity : BaseActivity<NewEventListPresenter,ActivityEventLis
                 }
             } else if (tcpModel.type == TcpType.IM){
                 if (tcpModel.action == TcpAction.IMAction.MSG) {
+                    handleVibrator()
                     listData.add(responseInteractionVO)
                     renderData(listData)
                     SpeechUtil.getInstance().newSpeech("您有新的语音留言待处理", false)

+ 5 - 0
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchEventDetailActivity.kt

@@ -25,6 +25,7 @@ import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.middleware.api.ApiManager
 import com.wdkl.ncs.android.middleware.logic.contract.home.WatchHomeActivityContract
 import com.wdkl.ncs.android.middleware.logic.presenter.home.WatchHomeActivityPresenter
+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.DeviceVO
@@ -241,6 +242,10 @@ class WatchEventDetailActivity : BaseActivity<WatchHomeActivityPresenter, WatchA
             }
         }
     }
+
+    override fun handleAppVersion(appInfo: AppVersionDO) {
+    }
+
     override fun setDeviceDo(data: DeviceVO) {
     }
 

+ 38 - 11
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchHome2Activity.kt

@@ -4,9 +4,12 @@ import android.Manifest
 import android.content.Context
 import android.content.Intent
 import android.content.IntentFilter
+import android.content.pm.PackageManager
 import android.graphics.Color
 import android.os.Bundle
 import android.os.CountDownTimer
+import android.support.v4.app.ActivityCompat
+import android.support.v4.content.ContextCompat
 import android.telephony.PhoneStateListener
 import android.telephony.SignalStrength
 import android.telephony.TelephonyManager
@@ -22,6 +25,7 @@ import com.google.common.base.Strings
 import com.wdkl.core.consts.Urls
 import com.wdkl.core.socket.IUserState
 import com.wdkl.core.socket.SocketManager
+import com.wdkl.ncs.android.component.home.BuildConfig
 import com.wdkl.ncs.android.component.home.R
 import com.wdkl.ncs.android.component.home.broadcast.BatteryBroadcastReceiver
 import com.wdkl.ncs.android.component.home.broadcast.MyMediaButtonReceiver
@@ -29,10 +33,7 @@ import com.wdkl.ncs.android.component.home.databinding.WatchActivityHome2Binding
 import com.wdkl.ncs.android.component.home.launch.HomeLaunch
 import com.wdkl.ncs.android.component.home.service.WdKeepAliveService
 import com.wdkl.ncs.android.component.home.settingconfig.SettingConfig
-import com.wdkl.ncs.android.component.home.util.AnrFcExceptionUtil
-import com.wdkl.ncs.android.component.home.util.NetHelper
-import com.wdkl.ncs.android.component.home.util.SpeechUtil
-import com.wdkl.ncs.android.component.home.util.Util
+import com.wdkl.ncs.android.component.home.util.*
 import com.wdkl.ncs.android.component.nursehome.common.Constants
 import com.wdkl.ncs.android.lib.base.BaseActivity
 import com.wdkl.ncs.android.lib.base.BaseApplication
@@ -40,8 +41,10 @@ import com.wdkl.ncs.android.lib.utils.AppTool
 import com.wdkl.ncs.android.lib.utils.joinManager
 import com.wdkl.ncs.android.lib.utils.push
 import com.wdkl.ncs.android.lib.utils.showMessage
+import com.wdkl.ncs.android.middleware.api.UrlManager
 import com.wdkl.ncs.android.middleware.logic.contract.home.WatchHomeActivityContract
 import com.wdkl.ncs.android.middleware.logic.presenter.home.WatchHomeActivityPresenter
+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.DeviceVO
@@ -61,7 +64,6 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
        IUserState {
 
     var TAG = WatchHome2Activity::class.java.getSimpleName()
-
     //监听网络变化
     lateinit var teleManager: TelephonyManager
     private var netType: Int = -1
@@ -95,6 +97,8 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         //注册广播
         regReceiver()
 
+        tv_register_version.text = "v" + BuildConfig.VERSION_NAME
+
         //TTS初始化
         SpeechUtil.getInstance().init(BaseApplication.appContext)
         SpeechUtil.getInstance().startSpeechThread()
@@ -134,7 +138,7 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
                         } else if (ltedbm>=-120 && ltedbm<=-110){
                             tv_signal_strength.text = "网络极差"
                         }
-                        Log.i(TAG, "网络:LTE 信号强度:$ltedbm======Detail:$signalinfo")
+                        //Log.i(TAG, "网络:LTE 信号强度:$ltedbm======Detail:$signalinfo")
 
                         super.onSignalStrengthsChanged(signalStrength)
                     }
@@ -154,7 +158,11 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
             DaemonEnv.startServiceSafelyWithData(this, WdKeepAliveService::class.java)
             presenter.getDeviceVO(Constants.imei)
         } else {
-            requestPermissions()
+            if (!requestPermissions()){
+                showMessage("请重新授权")
+                AppUtils.restartApp()
+                return
+            }
 
             Constants.imei = Util.getIMEI(this)
             Log.i(TAG, "IMEI " + Util.getIMEI(this))
@@ -215,9 +223,6 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
             tv_server_ip.text = tcpSeverDTO.publicIp
 
             if (SpManager.getInstance().getBoolean(Constants.SYSTEM_REGISTERED)){
-                tv_register_ok.visibility = View.GONE
-                tv_register_status.text = "本机已注册,进入系统中"
-                tv_register_status.setTextColor(Color.GREEN)
                 presenter.getDeviceVO(Constants.imei)
             } else {
                 tv_register_status.text = "本机未注册,请将识别码发给管理员。管理员注册本机后请点击注册完成进入"
@@ -225,7 +230,8 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         }
     }
 
-    private fun requestPermissions() {
+    private fun requestPermissions(): Boolean {
+        var permissionChecked = false
         Observable.just("")
                 .compose(RxPermissions(this)
                     .ensure(
@@ -241,8 +247,20 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
                 .subscribe {
             if (!it) {
                 showMessage("请重新授权,进入App")
+            } else {
+                permissionChecked = true
             }
         }.joinManager(disposableManager)
+        return permissionChecked
+    }
+
+    override fun handleAppVersion(appInfo: AppVersionDO) {
+        if (BuildConfig.VERSION_CODE < appInfo.versionNo){
+            showMessage("有新版本")
+            val intent = Intent()
+            intent.setClass(this, AppUpdateActivity::class.java)
+            startActivity(intent)
+        }
     }
 
     /**
@@ -252,6 +270,9 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         if (data.id == null || data.id<=0){
             loadingDialog.dismiss()
             showMessage("本机未注册,请将识别码发给管理员")
+            tv_register_status.text = "本机未注册,请将识别码发给管理员。管理员注册本机后请点击注册完成进入"
+            SpManager.getInstance().putBoolean(Constants.SYSTEM_REGISTERED,false)
+            tv_register_ok.visibility = View.VISIBLE
             return
         }
 
@@ -280,6 +301,10 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         loadingDialog.dismiss()
         watch_activity_register_layout.visibility = View.GONE
         watch_activity_home_linyout.visibility = View.VISIBLE
+        tv_register_ok.visibility = View.GONE
+
+        tv_register_status.text = "本机已注册,进入系统中"
+        tv_register_status.setTextColor(Color.GREEN)
 
         SpManager.getInstance().putBoolean(Constants.SYSTEM_REGISTERED,true)
 
@@ -294,6 +319,8 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         Constants.userName = data.memberName
         Constants.userRoleName = data.roleName
 
+        presenter.getAppVersion(Constants.partId, 7)
+
         DaemonEnv.startServiceSafelyWithData(this, WdKeepAliveService::class.java)
 
         if (Constants.deviceId<=0 || TextUtils.isEmpty(Constants.sipId)) {

+ 39 - 10
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WebRTCVoipAudioActivity.kt

@@ -136,7 +136,7 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener, CallSessionCal
         Handler().postDelayed({
             call_duration_tv.base = SystemClock.elapsedRealtime()
             call_duration_tv.start()
-        }, 2900)
+        }, 3500)
 
         val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
         if ((interactionVO.fromClerkId!=null && interactionVO.fromClerkId>=0) && interactionVO.fromDeviceId!=Constants.deviceId){
@@ -145,7 +145,7 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener, CallSessionCal
                 if (session != null) {
                     session.setSessionCallback(this)
                     Log.d(TAG, "session = " + session + "; session.getState() = " + session.state)
-                    if (session.state == EnumType.CallState.Incoming){
+                    if (session.state == EnumType.CallState.Incoming || session.state == EnumType.CallState.Connected || session.state == EnumType.CallState.Connecting){
                         session.joinHome(session.roomId)
                         setAudioDeviceOut(session)
                     } else {
@@ -163,21 +163,25 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener, CallSessionCal
             },1000)
         } else {
             var room = UUID.randomUUID().toString() + System.currentTimeMillis()
-            Log.i(TAG, "生成的房间号room " + room + "sipid targetId" + targetId)
+            Log.d(TAG, "生成的房间号room " + room + "sipid targetId" + targetId)
+            gEngineKit?.currentSession?.setCallState(EnumType.CallState.Idle)
             val outCallResult = gEngineKit?.startOutCall(applicationContext, room, targetId, true)
             val session = gEngineKit?.currentSession
             if (session == null){
-                showMessage("通话失败,请重试")
+                showMessage("通话失败,请重试1")
                 AppTool.Time.delay(800) {
                     finish()
                 }
             } else {
                 session.setSessionCallback(this)
+                Log.d(TAG+"_peer"," 呼出状态: myId = ${session?.mMyId} , targetId = ${session?.mTargetId}, roomId = ${session?.roomId}, state = ${session?.state}, outCallResult = $outCallResult")
                 if (outCallResult!!) {
                     setAudioDeviceOut(session)
+                } else if (session.state == EnumType.CallState.Connected || session.state == EnumType.CallState.Connecting){
+                    setAudioDeviceOut(session)
                 } else {
                     if (session.state != EnumType.CallState.Idle) {
-                        showMessage("对方忙线中")
+                        showMessage("对方忙线中2")
                     } else {
                         showMessage("通话失败,请重试")
                     }
@@ -344,6 +348,7 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener, CallSessionCal
         }
         MediaPlayHelper.getInstance().stopMusic()
         EventBus.getDefault().unregister(this)
+        gEngineKit?.currentSession?.setCallState(EnumType.CallState.Idle)
     }
 
     override fun onResume() {
@@ -390,37 +395,61 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener, CallSessionCal
         runOnUiThread(Runnable {
             when (var1) {
                 CallEndReason.Busy -> {
-                    showMessage("对方忙线中")
+                    showMessage("对方忙线中3")
+                    gEngineKit?.endCall()
+                    AppTool.Time.delay(800) {
+                        finish()
+                    }
                 }
                 CallEndReason.AcceptByOtherClient -> {
                     showMessage("通话中")
+                    gEngineKit?.endCall()
+                    AppTool.Time.delay(800) {
+                        finish()
+                    }
                 }
                 CallEndReason.Hangup -> {
                     //showMessage("挂断")
                 }
                 CallEndReason.MediaError -> {
                     showMessage("媒体错误")
+                    gEngineKit?.endCall()
+                    AppTool.Time.delay(800) {
+                        finish()
+                    }
                 }
                 CallEndReason.OpenCameraFailure -> {
                     showMessage("打开摄像头错误")
+                    gEngineKit?.endCall()
+                    AppTool.Time.delay(800) {
+                        finish()
+                    }
                 }
                 CallEndReason.RemoteHangup -> {
                     //showMessage("对方挂断")
                 }
                 CallEndReason.RemoteSignalError -> {
                     showMessage("对方网络断开")
+                    gEngineKit?.endCall()
+                    AppTool.Time.delay(800) {
+                        finish()
+                    }
                 }
                 CallEndReason.SignalError -> {
                     showMessage("连接断开")
+                    gEngineKit?.endCall()
+                    AppTool.Time.delay(800) {
+                        finish()
+                    }
                 }
                 CallEndReason.Timeout -> {
                     showMessage("对方未接听")
+                    gEngineKit?.endCall()
+                    AppTool.Time.delay(800) {
+                        finish()
+                    }
                 }
             }
-            //gEngineKit?.endCall()
-            AppTool.Time.delay(800) {
-                finish()
-            }
         })
     }
 

+ 0 - 2
home/src/main/code/com/wdkl/ncs/android/component/home/di/HomeComponent.kt

@@ -22,8 +22,6 @@ interface HomeComponent {
 
     fun inject(activity: WatchCallRecordsActivity)
 
-    fun inject(activity: EventActivity)
-
     fun inject(activity: WatchEventDetailActivity)
 
     fun inject(activity: TakeoverActivity)

+ 15 - 3
home/src/main/res/layout/watch_activity_home2.xml

@@ -8,14 +8,15 @@
       <include
           android:id="@+id/watch_activity_register_layout"
           layout="@layout/watch_activity_register"
-          ></include>>
+          android:visibility="gone"
+          ></include>
 
         <LinearLayout
             android:id="@+id/watch_activity_home_linyout"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:orientation="vertical"
-            android:visibility="gone">
+            android:visibility="visible">
 
             <LinearLayout
                 android:layout_width="match_parent"
@@ -251,7 +252,6 @@
                                 android:layout_marginTop="2dp"
                                 android:src="@drawable/geng_duo" />
 
-
                         </LinearLayout>
 
                     </LinearLayout>
@@ -263,5 +263,17 @@
 
         </LinearLayout>
 
+        <TextView
+            android:id="@+id/tv_register_version"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textSize="12sp"
+            android:text="version"
+            android:textColor="@color/color_white"
+            android:layout_marginTop="5dp"
+            android:layout_marginEnd="5dp"
+            android:gravity="center"
+            android:layout_alignParentEnd="true"/>
+
     </RelativeLayout>
 </layout>

+ 2 - 0
home/src/main/res/layout/watch_activity_register.xml

@@ -9,6 +9,8 @@
     <ScrollView
         android:layout_width="match_parent"
         android:layout_height="match_parent">
+
+
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"

+ 4 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/home/WatchHomeActivityContract.kt

@@ -10,6 +10,8 @@ import com.wdkl.ncs.android.middleware.model.vo.WatchContactsVO
 
 interface WatchHomeActivityContract{
     interface View : BaseContract.BaseView{
+        //版本号信息
+        fun handleAppVersion(appInfo: AppVersionDO)
         //显示设备信息
         fun setDeviceDo(data : DeviceVO)
         //显示tcp通讯地址
@@ -18,6 +20,8 @@ interface WatchHomeActivityContract{
         fun setDeviceSettingData(partSettingDO: PartSettingDO)
     }
     interface Presenter : BaseContract.BasePresenter{
+        //获取版本信息
+        fun getAppVersion(partId: Int, deviceType: Int)
         //获取设备信息
         fun getDeviceVO(ethMac:String)
         //获取tcp服务器地址

+ 18 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/home/WatchHomeActivityPresenter.kt

@@ -16,6 +16,7 @@ import com.wdkl.ncs.android.middleware.api.WatchDeviceInfoAndTCPMailingAddressAp
 import com.wdkl.ncs.android.middleware.api.WatchManageDeviceApi
 import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
 import com.wdkl.ncs.android.middleware.logic.contract.home.WatchHomeActivityContract
+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.DeviceVO
@@ -49,6 +50,12 @@ class WatchHomeActivityPresenter @Inject constructor(): RxPresenter<WatchHomeAct
             Log.i(TAG, "result === $result")
             providerView().complete()
             when (result) {
+                is AppVersionDO -> {
+                    //版本信息
+                    providerView().complete("")
+                    providerView().handleAppVersion(result as AppVersionDO)
+                }
+
                 is DeviceVO -> {
                     //设备信息
                     providerView().complete()
@@ -83,6 +90,17 @@ class WatchHomeActivityPresenter @Inject constructor(): RxPresenter<WatchHomeAct
         }
     }
 
+    override fun getAppVersion(partId: Int, deviceType: Int) {
+        watchManageDeviceApi.getAppVersion(partId, deviceType)
+                .map {
+                    val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+                    val appVersion = gson.fromJson(it.getJsonString(), AppVersionDO::class.java)
+
+                    return@map appVersion
+                }
+                .compose(ThreadFromUtils.defaultSchedulers())
+                .subscribe(observer)
+    }
 
     /**
      *获取当前设备数据

+ 6 - 0
readme.md

@@ -26,6 +26,12 @@
 
 ---
 
+## [1.1.21] version 40 - 2020-08-06
+### Fixed
+- 通话逻辑修改
+
+---
+
 ## [1.1.20] version 39 - 2020-08-05
 ### Changed
 - 优化事件、语音留言和SOS的详情展示及接入