ソースを参照

红米手机tcp callback修改及其他优化

weizhengliang 2 年 前
コミット
133fcef3ed
17 ファイル変更141 行追加60 行削除
  1. 30 18
      android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/activity/ChannelImActivity.kt
  2. 10 3
      android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/activity/VoiceMsgActivity.kt
  3. 12 5
      android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/activity/WatchHome2Activity.kt
  4. 6 4
      android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/adapter/ChannelImItemAdapter.kt
  5. 8 7
      android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/adapter/NewEventItemAdapter.kt
  6. 29 6
      android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/adapter/WatchCallRecordsItemAdapter.kt
  7. 8 8
      android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/service/WdKeepAliveService.kt
  8. 3 3
      android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/ui/FragmentAudio.java
  9. 2 1
      android_mobile/src/main/yd_w_xiaomi_2/res/layout/adapter_channel_im_records_item.xml
  10. 2 2
      build.gradle
  11. 2 1
      keepalive/src/main/java/com/wdkl/ncs/keepbackground/utils/ForegroundNotificationUtils.java
  12. 5 2
      keepalive/src/main/java/com/wdkl/ncs/keepbackground/work/AbsWorkService.java
  13. 2 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constants.kt
  14. 4 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/TcpClientHandler.java
  15. 4 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/DeviceUtil.java
  16. 10 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/dto/DeviceConnectDTO.java
  17. 4 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/dto/TcpCallback.java

+ 30 - 18
android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/activity/ChannelImActivity.kt

@@ -25,6 +25,7 @@ import com.wdkl.ncs.android.middleware.logic.presenter.home.ChannelImPresenter
 import com.wdkl.ncs.android.middleware.model.dos.ChannelImDO
 import com.wdkl.ncs.android.middleware.model.vo.ChannelIMVO
 import com.wdkl.ncs.android.middleware.tcp.TcpClient
+import com.wdkl.ncs.android.middleware.tcp.TcpClientHandler
 import com.wdkl.ncs.android.middleware.tcp.channel.ChannelImUtil
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpCallback
 import kotlinx.android.synthetic.main.activity_channel_im_list.*
@@ -169,29 +170,40 @@ class ChannelImActivity : BaseActivity<ChannelImPresenter, ActivityChannelImList
         channelImDO.channelId = channelId
         channelImDO.senderMemberId = memberId
         channelImDO.audioPath = result
-        val tcpModel = ChannelImUtil.channelImMsg(deviceId, channelImDO)
-        val transaction: TcpCallback = object : TcpCallback(tcpModel.tid) {
-            override fun onSuccess(jsonObject: JSONObject) {
-                SoundPoolManager.getInstance().playSound(3)
-
-                activity.runOnUiThread {
-                    showMessage("留言发送成功!")
-                    //刷新列表
-                    page = 1
-                    presenter.getChannelIm(page, page_size, memberId!!, channelId)
+
+        if (TcpClientHandler.getConnected()) {
+            val tcpModel = ChannelImUtil.channelImMsg(deviceId, channelImDO)
+            val transaction: TcpCallback = object : TcpCallback(tcpModel.tid) {
+                override fun onAck() {
+                    //发送成功
+                    if (Locale.CHINESE.getLanguage().equals(language)) {
+                        SoundPoolManager.getInstance().playSound(3)
+                    }
+                    activity.runOnUiThread {
+                        showMessage("send success!")
+                        //刷新列表
+                        page = 1
+                        presenter.getChannelIm(page, page_size, memberId!!, channelId)
+                    }
+                }
+                override fun onSuccess(jsonObject: JSONObject) {
+                    //
                 }
-            }
 
-            override fun onFailed(jsonObject: JSONObject) {
-                // 这里写发送失败的方法
-                SoundPoolManager.getInstance().playSound(6)
-                val callbackString = jsonObject.getString(CALLBACK)
-                activity.runOnUiThread {
-                    showMessage("Failed: $callbackString")
+                override fun onFailed(jsonObject: JSONObject) {
+                    // 这里写发送失败的方法
+                    SoundPoolManager.getInstance().playSound(6)
+                    val callbackString = jsonObject.getString(CALLBACK)
+                    activity.runOnUiThread {
+                        showMessage("Failed: $callbackString")
+                    }
                 }
             }
+            TcpClient.getInstance().sendTcp(tcpModel, false, transaction)
+        } else {
+            SoundPoolManager.getInstance().playSound(6)
+            showMessage("send failed!")
         }
-        TcpClient.getInstance().sendTcp(tcpModel, false, transaction)
 
         /*instance.sendMsg(tcpModel.toJson()).subscribe { it: Boolean ->
             if (it) {

+ 10 - 3
android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/activity/VoiceMsgActivity.kt

@@ -152,14 +152,21 @@ class VoiceMsgActivity:BaseActivity<VoiceMsgPresenter,ActivityVoiceMsgBinding>()
         RecordHelper.getInstance().deleteAudioFile(voiceFile)
         val tcpModel = ImUtil.imMsg(Constants.deviceId, toDeviceId, result)
         val transaction: TcpCallback = object : TcpCallback(tcpModel.tid) {
-            override fun onSuccess(jsonObject: JSONObject) {
-                SoundPoolManager.getInstance().playSound(3)
+            override fun onAck() {
+                //发送成功
+                if (Locale.CHINESE.getLanguage().equals(language)) {
+                    SoundPoolManager.getInstance().playSound(3)
+                }
                 runOnUiThread {
-                    showMessage("留言发送成功!")
+                    showMessage("send success!")
                 }
                 finish()
             }
 
+            override fun onSuccess(jsonObject: JSONObject) {
+                //对方接收成功
+            }
+
             override fun onFailed(jsonObject: JSONObject) {
                 // 这里写发送失败的方法
                 SoundPoolManager.getInstance().playSound(6)

+ 12 - 5
android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/activity/WatchHome2Activity.kt

@@ -212,12 +212,11 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
 
         tv_server_ip.text = CommonUtils.getUrl(BaseApplication.appContext)
 
-        if (DaemonEnv.app == null && !WdKeepAliveService.instanceCreated) {
-            Log.d(TAG, "开始 WdKeepAliveService")
-            //保活守护进程
+        /*if (DaemonEnv.app == null && !WdKeepAliveService.instanceCreated) {
             DaemonEnv.init(this)
+            Log.d(TAG, "开始 WdKeepAliveService")
             DaemonEnv.startServiceSafely(this, WdKeepAliveService::class.java)
-        }
+        }*/
     }
 
 
@@ -457,6 +456,13 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         Constants.partId = data.partId
         Constants.deviceId = data.id
         Constants.sipId = data.sipId
+        Constants.deviceType = data.deviceType
+
+        if (DaemonEnv.app == null && !WdKeepAliveService.instanceCreated) {
+            DaemonEnv.init(this)
+            Log.d(TAG, "开始 WdKeepAliveService")
+            DaemonEnv.startServiceSafely(this, WdKeepAliveService::class.java)
+        }
 
         loadingDialog.dismiss()
         watch_activity_register_layout.visibility = View.GONE
@@ -707,8 +713,9 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
                 presenter.getServerInfo()
 
                 try {
-                    Thread.sleep(15000)
+                    Thread.sleep(20000)
                 } catch (e: Exception) {
+
                 }
                 count--
             }

+ 6 - 4
android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/adapter/ChannelImItemAdapter.kt

@@ -78,7 +78,7 @@ class ChannelImItemAdapter(val data: ArrayList<ChannelIMVO>, val imActivity: Act
 
             binding.imCallTimeTv.text = TimeTransition().stampToTime(itemData.sendTime*1000)
             binding.imSickbedTv.text = itemData.senderMemberName
-            if (itemData.is_self) {
+            /*if (itemData.is_self) {
                 binding.imTreatmentStateImagev.visibility = View.GONE
             } else {
                 binding.imTreatmentStateImagev.visibility = View.VISIBLE
@@ -88,7 +88,7 @@ class ChannelImItemAdapter(val data: ArrayList<ChannelIMVO>, val imActivity: Act
                 binding.imTreatmentStateImagev.setImageResource(R.drawable.checked_100)
             } else {
                 binding.imTreatmentStateImagev.setImageResource(R.drawable.unchecked_100)
-            }
+            }*/
 
 
             binding.imPlayTv.setOnClickListener {
@@ -101,7 +101,9 @@ class ChannelImItemAdapter(val data: ArrayList<ChannelIMVO>, val imActivity: Act
                 //如果是未读留言则回复已读tcp
                 if (!itemData.readed) {
                     val imTcpModel = ChannelImUtil.channelImRead(Constants.deviceId, itemData as ChannelImDO)
-                    val transaction: TcpCallback = object : TcpCallback(imTcpModel.tid) {
+                    TcpClient.getInstance().sendTcp(imTcpModel, false, null)
+
+                    /*val transaction: TcpCallback = object : TcpCallback(imTcpModel.tid) {
                         override fun onSuccess(jsonObject: JSONObject) {
                             if (imCallBack != null) {
                                 imCallBack!!.onChannelImRead(itemData, pos)
@@ -112,7 +114,7 @@ class ChannelImItemAdapter(val data: ArrayList<ChannelIMVO>, val imActivity: Act
                             // 这里写发送失败的方法
                         }
                     }
-                    TcpClient.getInstance().sendTcp(imTcpModel, false, transaction)
+                    TcpClient.getInstance().sendTcp(imTcpModel, false, transaction)*/
 
                     /*NettyClient.instance.sendMsg(imTcpModel.toJson()).subscribe {
                         if (it) {

+ 8 - 7
android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/adapter/NewEventItemAdapter.kt

@@ -91,7 +91,7 @@ class NewEventItemAdapter(var data:ArrayList<InteractionVO>, val activity: Activ
             }
             binding.eliVoiceRecorder.setOnClickListener{
                 var intent = Intent(activity,VoiceMsgActivity::class.java)
-                intent.putExtra(VoiceMsgActivity.TO_DEVICE_ID,toDeviceId)
+                intent.putExtra(VoiceMsgActivity.TO_DEVICE_ID, toDeviceId)
                 activity.startActivity(intent)
             }
 
@@ -100,7 +100,7 @@ class NewEventItemAdapter(var data:ArrayList<InteractionVO>, val activity: Activ
                     binding.eliImRead.visibility = View.GONE
                     binding.eliEventResponse.visibility = View.VISIBLE
                     binding.eliEventName.text = itemData.data
-                    if (itemData.actionEndMemberId != null){
+                    if (itemData.actionEndMemberId != null || itemData.actionEnd != null){
                         binding.eliEventResponse.visibility = View.GONE
                         binding.eliEventName.setTextColor(Color.GREEN)
                     } else {
@@ -115,7 +115,7 @@ class NewEventItemAdapter(var data:ArrayList<InteractionVO>, val activity: Activ
 
                                     if (activity != null) {
                                         activity.runOnUiThread {
-                                            showMessage("操作成功")
+                                            showMessage("success")
                                             loadingDialog.dismiss()
                                         }
                                     }
@@ -179,16 +179,17 @@ class NewEventItemAdapter(var data:ArrayList<InteractionVO>, val activity: Activ
 
                                         if (activity != null) {
                                             activity.runOnUiThread {
-                                                showMessage("消息已读")
+                                                showMessage("success")
                                             }
                                         }
                                     }
 
                                     override fun onFailed(jsonObject: JSONObject) {
                                         // 这里写发送失败的方法
+                                        val callbackString = jsonObject.getString(CALLBACK)
                                         if (activity != null) {
                                             activity.runOnUiThread {
-                                                showMessage("网络异常,请重试")
+                                                showMessage("Failed: $callbackString")
                                             }
                                         }
                                     }
@@ -208,11 +209,11 @@ class NewEventItemAdapter(var data:ArrayList<InteractionVO>, val activity: Activ
                     }
                 }
                 TcpType.SOS.name->{
+                    binding.eliVoiceRecorder.visibility = View.GONE
                     binding.eliEventName.setTextColor(activity.resources.getColor(R.color.warn_orange))
                     binding.eliImRead.visibility = View.GONE
                     binding.eliEventResponse.visibility = View.VISIBLE
                     binding.eliEventName.text = "SOS"
-//                    binding.eliEventName.setBackgroundResource(R.drawable.sos_96)
                     if (itemData.actionEnd!=null){
                         binding.eliEventResponse.visibility = View.GONE
                         binding.eliEventName.setTextColor(Color.GREEN)
@@ -230,7 +231,7 @@ class NewEventItemAdapter(var data:ArrayList<InteractionVO>, val activity: Activ
                                             tcpModel.data = Gson().toJson(itemData)
                                             EventBus.getDefault().post(MessageEvent(tcpModel, 999))
 
-                                            showMessage("操作成功")
+                                            showMessage("success")
                                             loadingDialog.dismiss()
                                         }
                                     }

+ 29 - 6
android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/adapter/WatchCallRecordsItemAdapter.kt

@@ -13,6 +13,7 @@ import com.wdkl.ncs.android.component.home.util.TimeTransition
 import com.wdkl.ncs.android.lib.adapter.BaseDelegateAdapter
 import com.wdkl.ncs.android.lib.utils.BaseRecyclerViewHolder
 import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
+import com.wdkl.ncs.android.middleware.tcp.enums.DeviceTypeEnum
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpType
 import com.wdkl.ncs.android.middleware.utils.StringUtil
 
@@ -68,6 +69,19 @@ class WatchCallRecordsItemAdapter(val data: ArrayList<InteractionVO>) : BaseDele
             if (itemData.createDate != null) {
                 binding.callTimeTv.text = TimeTransition().stampToDate(itemData.createDate*1000)
             }
+            binding.callStatusImagev.visibility = View.INVISIBLE
+
+            if (!TextUtils.isEmpty(itemData.fromMemberName)) {
+                binding.sickbedTv.text = "From: " + itemData.fromMemberName
+            } else {
+                binding.sickbedTv.text = "From: " + itemData.fromFrameFullName
+            }
+
+            if (!TextUtils.isEmpty(itemData.toMemberName)) {
+                binding.nameTv.text = "To: " + itemData.toMemberName
+            } else {
+                binding.nameTv.text = "To: " + itemData.toFrameFullName
+            }
 
             //是否已播放 已响应
             if (itemData.actionEnd != null) {
@@ -76,7 +90,7 @@ class WatchCallRecordsItemAdapter(val data: ArrayList<InteractionVO>) : BaseDele
                 binding.processingTimeTv.visibility = View.VISIBLE
 
                 //判断是呼入还是呼出
-                if (itemData.fromDeviceMemberId == Constants.memberId){
+                /*if (itemData.fromDeviceMemberId == Constants.memberId){
                     binding.sickbedTv.text = itemData.toFrameFullName
                     if (TextUtils.isEmpty(itemData.toMemberName)) {
                         binding.nameTv.text = "To: " + StringUtil.getResString(R.string.str_null)
@@ -92,26 +106,28 @@ class WatchCallRecordsItemAdapter(val data: ArrayList<InteractionVO>) : BaseDele
                         binding.nameTv.text = "From: " + itemData.fromMemberName
                     }
                     binding.callStatusImagev.setImageResource(R.drawable.hu_ru_yi_jie)
-                }
+                }*/
 
                 if(itemData.actionType == TcpType.SOS.name){ //sos紧急呼叫 已处理
                     binding.playTv.visibility = View.GONE
                     binding.projectTv.visibility = View.VISIBLE
                     binding.conductorNameTv.visibility = View.VISIBLE
                     binding.projectTv.text = "SOS"
-                    binding.conductorNameTv.text = itemData.toMemberName
+                    binding.conductorNameTv.text = itemData.actionEndMemberName
                     binding.processingTimeTv.text = TimeTransition().stampToDate(itemData.actionEnd*1000)
                     binding.projectTv.setBackgroundResource(R.drawable.sp_event_do)
                     binding.callStatusImagev.setImageResource(R.drawable.sos_96)
+                    binding.callStatusImagev.visibility = View.VISIBLE
                 }else if(itemData.actionType == TcpType.EVENT.name){//事件已经响应 相应的数据
                     binding.playTv.visibility = View.GONE
                     binding.projectTv.visibility = View.VISIBLE
                     binding.conductorNameTv.visibility = View.VISIBLE
                     binding.projectTv.text = itemData.data
-                    binding.conductorNameTv.text = itemData.toMemberName
+                    binding.conductorNameTv.text = itemData.actionEndMemberName
                     binding.processingTimeTv.text = TimeTransition().stampToDate(itemData.actionEnd*1000)
                     binding.projectTv.setBackgroundResource(R.drawable.sp_event_do)
                     binding.callStatusImagev.setImageResource(R.drawable.event_do)
+                    binding.callStatusImagev.visibility = View.VISIBLE
                 }else if (itemData.actionType == TcpType.IM.name){//语音已播放
 
                     binding.projectTv.visibility = View.GONE
@@ -125,6 +141,8 @@ class WatchCallRecordsItemAdapter(val data: ArrayList<InteractionVO>) : BaseDele
                         binding.processingTimeTv.text = "已播放"
                     }*/
                     binding.processingTimeTv.visibility = View.GONE
+                    binding.callStatusImagev.setImageResource(R.drawable.voice_recorder)
+                    binding.callStatusImagev.visibility = View.VISIBLE
 
                 }else if(itemData.actionType == TcpType.VOICE.name || itemData.actionType == TcpType.PHONE.name){ //语音呼叫已接听
                     binding.projectTv.visibility = View.GONE
@@ -149,7 +167,7 @@ class WatchCallRecordsItemAdapter(val data: ArrayList<InteractionVO>) : BaseDele
                 binding.processingTimeTv.visibility = View.VISIBLE
 
                 //判断是呼入还是呼出 1 分机到主机 2主机到分机
-                if(Constants.memberId != itemData.fromDeviceMemberId){
+                /*if(Constants.memberId != itemData.fromDeviceMemberId){
                     binding.sickbedTv.text = itemData.fromFrameFullName
                     if (TextUtils.isEmpty(itemData.fromMemberName)) {
                         binding.nameTv.text = "From: " + StringUtil.getResString(R.string.str_null)
@@ -165,7 +183,7 @@ class WatchCallRecordsItemAdapter(val data: ArrayList<InteractionVO>) : BaseDele
                         binding.nameTv.text = "To: " + itemData.toMemberName
                     }
                     binding.callStatusImagev.setImageResource(R.drawable.hu_chu_wei_jie)
-                }
+                }*/
 
                 if(itemData.actionType == TcpType.SOS.name){ //sos紧急呼叫 未处理
                     binding.playTv.visibility = View.GONE
@@ -174,12 +192,14 @@ class WatchCallRecordsItemAdapter(val data: ArrayList<InteractionVO>) : BaseDele
                     binding.projectTv.setBackgroundResource(R.drawable.sp_event_undo)
                     binding.processingTimeTv.setText(R.string.event_undo)
                     binding.callStatusImagev.setImageResource(R.drawable.sos_96)
+                    binding.callStatusImagev.visibility = View.VISIBLE
                 }else if(itemData.actionType == TcpType.EVENT.name){//事件未处理
                     binding.playTv.visibility = View.GONE
                     binding.projectTv.visibility = View.VISIBLE
                     binding.projectTv.text = itemData.data
                     binding.projectTv.setBackgroundResource(R.drawable.sp_event_undo)
                     binding.callStatusImagev.setImageResource(R.drawable.event_undo)
+                    binding.callStatusImagev.visibility = View.VISIBLE
                     binding.processingTimeTv.setText(R.string.event_undo)
                 }else if (itemData.actionType == TcpType.IM.name){//语音未播放
                     binding.projectTv.visibility = View.GONE
@@ -192,6 +212,8 @@ class WatchCallRecordsItemAdapter(val data: ArrayList<InteractionVO>) : BaseDele
                         binding.processingTimeTv.text = "未播放"
                     }*/
                     binding.processingTimeTv.visibility = View.GONE
+                    binding.callStatusImagev.setImageResource(R.drawable.voice_recorder)
+                    binding.callStatusImagev.visibility = View.VISIBLE
                 }else if(itemData.actionType == TcpType.VOICE.name || itemData.actionType == TcpType.PHONE.name){ //语音呼叫未接听
                     binding.projectTv.visibility = View.GONE
                     binding.playTv.visibility = View.GONE
@@ -225,6 +247,7 @@ class WatchCallRecordsItemAdapter(val data: ArrayList<InteractionVO>) : BaseDele
                         binding.callStatusImagev.setImageResource(R.drawable.hu_chu_wei_jie)
                     }
                 }
+                binding.callStatusImagev.visibility = View.VISIBLE
             }
         }
     }

+ 8 - 8
android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/service/WdKeepAliveService.kt

@@ -536,7 +536,7 @@ class WdKeepAliveService : AbsWorkService() {
                 val sosTcpModel = messageEvent.getMessage() as TcpModel
                 if (sosTcpModel.action == TcpAction.SOSAction.CANCELED) {
                     //紧急呼叫处理完成
-                    if (mNewEventListActive) {
+                    //if (mNewEventListActive) {
                         //先停止铃声或其他音频播放
                         SpeechUtil.getInstance().stopSpeak()
                         MediaPlayHelper.getInstance().stopMusic(true)
@@ -545,7 +545,7 @@ class WdKeepAliveService : AbsWorkService() {
                         if (mVibrator != null) {
                             mVibrator.cancel()
                         }
-                    }
+                    //}
 
                     Log.e(TAG, sosTcpModel.data.toString())
                     val interactionId =  sosTcpModel.data.toString().toInt()
@@ -560,7 +560,7 @@ class WdKeepAliveService : AbsWorkService() {
 
                 } else if (sosTcpModel.action == TcpAction.SOSAction.CANCEL) {
                     val sosInteractionVO = Gson().fromJson(sosTcpModel.data.toString(), InteractionVO::class.java)
-                    if (mNewEventListActive) {
+                    //if (mNewEventListActive) {
                         //先停止铃声或其他音频播放
                         SpeechUtil.getInstance().stopSpeak()
                         MediaPlayHelper.getInstance().stopMusic(true)
@@ -575,7 +575,7 @@ class WdKeepAliveService : AbsWorkService() {
                         } else {
                             showMessage("已响应")
                         }
-                    }
+                    //}
 
                     val iterator = Constants.eventList.iterator()
                     while (iterator.hasNext()) {
@@ -837,7 +837,7 @@ class WdKeepAliveService : AbsWorkService() {
                 RingPlayHelper.playRingTone(BaseApplication.appContext, R.raw.new_event, false)
             }
         } else if (model.action == TcpAction.SOSAction.CALL || model.action == TcpAction.SOSAction.ROOM_CALL) {
-            AppTool.Time.delay(500) {
+            AppTool.Time.delay(200) {
                 //MediaPlayHelper.getInstance().playResMusic(R.raw.sos, 1.0f, true)
                 RingPlayHelper.playRingTone(BaseApplication.appContext, R.raw.sos, false)
             }
@@ -852,7 +852,7 @@ class WdKeepAliveService : AbsWorkService() {
                     RingPlayHelper.playRingTone(BaseApplication.appContext, R.raw.event, false)
                 }
             } else {
-                AppTool.Time.delay(500) {
+                AppTool.Time.delay(200) {
                     //MediaPlayHelper.getInstance().playResMusic(R.raw.new_event, 1.0f, false)
                     RingPlayHelper.playRingTone(BaseApplication.appContext, R.raw.new_event, false)
                 }
@@ -868,7 +868,7 @@ class WdKeepAliveService : AbsWorkService() {
                     RingPlayHelper.playRingTone(BaseApplication.appContext, R.raw.event, false)
                 }
             } else {
-                AppTool.Time.delay(500) {
+                AppTool.Time.delay(200) {
                     RingPlayHelper.playRingTone(BaseApplication.appContext, R.raw.event, false)
                 }
             }
@@ -882,7 +882,7 @@ class WdKeepAliveService : AbsWorkService() {
                     RingPlayHelper.playRingTone(BaseApplication.appContext, R.raw.event, false)
                 }
             } else {
-                AppTool.Time.delay(500) {
+                AppTool.Time.delay(200) {
                     RingPlayHelper.playRingTone(BaseApplication.appContext, R.raw.event, false)
                 }
             }

+ 3 - 3
android_mobile/src/main/yd_w_xiaomi_2/code/com/wdkl/ncs/android/component/home/ui/FragmentAudio.java

@@ -121,9 +121,9 @@ public class FragmentAudio extends SingleCallFragment implements View.OnClickLis
                     String language = LocaleMangerUtils.getApplicationLocale().getLanguage();
                     String frameName;
                     if (Locale.CHINESE.getLanguage().equals(language)) {
-                        frameName = Util.INSTANCE.appendSpace(interactionVO.getFromFrameFullName().replace("-", ""));
+                        frameName = Util.INSTANCE.appendSpace(getShowName());
                     } else {
-                        frameName = interactionVO.getFromFrameFullName().replace("-", "");
+                        frameName = getShowName();
                     }
 
                     String text = frameName + getString(R.string.call_incoming) + frameName + getString(R.string.call_incoming)
@@ -158,7 +158,7 @@ public class FragmentAudio extends SingleCallFragment implements View.OnClickLis
             else {
                 //是客户
                 if (interactionVO.getFromClerkId() == null) {
-                    showName = interactionVO.getFromFrameFullName() + " " + interactionVO.getFromMemberName();
+                    showName = interactionVO.getFromFrameFullName() /*+ " " + interactionVO.getFromMemberName()*/;
                     portraitImageView.setImageResource(R.drawable.face_customer);
 
                     if (!isOutgoing) {

+ 2 - 1
android_mobile/src/main/yd_w_xiaomi_2/res/layout/adapter_channel_im_records_item.xml

@@ -48,7 +48,8 @@
                 android:id="@+id/im_treatment_state_imagev"
                 android:layout_width="30dp"
                 android:layout_height="30dp"
-                android:src="@drawable/checked_100" />
+                android:src="@drawable/checked_100"
+                android:visibility="gone"/>
 
             <ImageView
                 android:id="@+id/im_play_tv"

+ 2 - 2
build.gradle

@@ -40,7 +40,7 @@ buildscript {
      * YD-S5-W_QIN2PRO-2: 多亲手机
      * ...
      */
-    ext.app_device_type = "yd_s5_w_qin2_2_chile"
+    ext.app_device_type = "yd_w_xiaomi_2"
 
     if (app_device_type == "yd_s5_w_qin2_2") {
         ext.build_tools_version = "26.0.2"
@@ -53,7 +53,7 @@ buildscript {
         ext.build_tools_version = "26.0.2"
         ext.support_library_version = "26.1.0"
 
-        //多亲手机版本
+        //多亲手机版本-智利项目
         ext.app_version_code = 144
         ext.app_version = "1.4.1_qin2"
     } else if (app_device_type == "yd_w_xiaomi_2") {

+ 2 - 1
keepalive/src/main/java/com/wdkl/ncs/keepbackground/utils/ForegroundNotificationUtils.java

@@ -8,6 +8,7 @@ import android.content.Context;
 import android.graphics.BitmapFactory;
 import android.graphics.Color;
 import android.os.Build;
+import android.util.Log;
 
 import com.wdkl.ncs.keepbackground.R;
 
@@ -16,7 +17,7 @@ public class ForegroundNotificationUtils {
     private static final String CHANNEL_ID = "wdkl_main_channel";
     private static final int CHANNEL_POSITION = 1;
     public static void startForegroundNotification(Service service){
-
+        Log.e("sj_keep", "startForegroundNotification: " + service.getClass().getSimpleName());
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
             //启动前台服务而不显示通知的漏洞已在 API Level 25 修复
             NotificationManager manager = (NotificationManager)service.getSystemService(Context.NOTIFICATION_SERVICE);

+ 5 - 2
keepalive/src/main/java/com/wdkl/ncs/keepbackground/work/AbsWorkService.java

@@ -45,7 +45,9 @@ public abstract class AbsWorkService extends Service {
     @Override
     public void onCreate() {
         super.onCreate();
-        if(DaemonEnv.app==null)return;
+        if(DaemonEnv.app==null) {
+            return;
+        }
         Log.d("sj_keep", this.getClass()+"  onCreate 启动。。。。");
         WatchProcessPrefHelper.mWorkServiceClass=this.getClass();
         SpManager.getInstance().putString(WORK_SERVICE,this.getClass().getName());
@@ -56,7 +58,7 @@ public abstract class AbsWorkService extends Service {
             Log.d("sj_keep", "AbsWorkService  onCreate 启动。。。。");
             startRegisterReceiver();
             createScreenListener();
-            ForegroundNotificationUtils.startForegroundNotification(this);
+            //ForegroundNotificationUtils.startForegroundNotification(this);
             getPackageManager().setComponentEnabledSetting(new ComponentName(getPackageName(), WatchDogService.class.getName()),
                     PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
         }
@@ -83,6 +85,7 @@ public abstract class AbsWorkService extends Service {
         DaemonEnv.startServiceMayBind(AbsWorkService.this, WatchDogService.class, mConnection);
         Boolean workRunning = isWorkRunning();
         if (!workRunning){
+            ForegroundNotificationUtils.startForegroundNotification(this);
             //业务逻辑
             startWork();
         }

+ 2 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constants.kt

@@ -2,6 +2,7 @@ package com.wdkl.ncs.android.middleware.common
 
 import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
 import com.wdkl.ncs.android.middleware.tcp.enums.CommunicationEnum
+import com.wdkl.ncs.android.middleware.tcp.enums.DeviceTypeEnum
 
 class Constants {
     companion object {
@@ -12,6 +13,7 @@ class Constants {
         var frameId: String =""//医院结构ID
         var ethIp: String? ="" //当前设备的IP
         var deviceId: Int = 0//当前设备的ID
+        var deviceType: Int = DeviceTypeEnum.NURSE_WATCH.value()  //设备类型
         var sipIp: String? =""//sipip
         var sipId: String? =""//sipid
         var sipPassword: String? =""//sip密码

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

@@ -98,6 +98,10 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
                                 if (!Strings.isNullOrEmpty(tcpModel.getTid())) {
                                     // 取消定时任务
                                     tcpSendCache.remove(tcpModel.getTid());
+                                    TcpCallback transaction = trantCache.get(tcpModel.getTid());
+                                    if (transaction != null) {
+                                        transaction.onAck();
+                                    }
                                 }
                             } else if (tcpModel.getAction() == TcpAction.CallbackAction.SUCCESS) {
                                 //回调成功

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

@@ -21,6 +21,8 @@ public class DeviceUtil {
         deviceConnectDTO.setHardware_version(Build.HARDWARE);
         deviceConnectDTO.setCode(Constants.Companion.getImei());
         deviceConnectDTO.setPhoneNumber(ContactHelper.getPhoneNumber());
+        deviceConnectDTO.setDevice_type(Constants.Companion.getDeviceType());
+
         TcpModel tcpModel = new TcpModel(null);
         tcpModel.setType(TcpType.DEVICE);
         tcpModel.setAction(TcpAction.DeviceAction.CONNECT);
@@ -36,6 +38,8 @@ public class DeviceUtil {
         deviceConnectDTO.setHardware_version(Build.HARDWARE);
         deviceConnectDTO.setCode(Constants.Companion.getImei());
         deviceConnectDTO.setPhoneNumber(phoneNumber);
+        deviceConnectDTO.setDevice_type(Constants.Companion.getDeviceType());
+
         TcpModel tcpModel = new TcpModel(null);
         tcpModel.setType(TcpType.DEVICE);
         tcpModel.setAction(TcpAction.DeviceAction.CONNECT);

+ 10 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/dto/DeviceConnectDTO.java

@@ -33,6 +33,8 @@ public class DeviceConnectDTO implements Serializable {
 
     private String phoneNumber;
 
+    private int device_type;
+
     public String getIdentification() {
         return identification;
     }
@@ -80,4 +82,12 @@ public class DeviceConnectDTO implements Serializable {
     public void setPhoneNumber(String phoneNumber) {
         this.phoneNumber = phoneNumber;
     }
+
+    public int getDevice_type() {
+        return device_type;
+    }
+
+    public void setDevice_type(int device_type) {
+        this.device_type = device_type;
+    }
 }

+ 4 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/dto/TcpCallback.java

@@ -27,6 +27,10 @@ public class TcpCallback {
 
     }
 
+    public void onAck(){
+
+    }
+
     public String getTid() {
         return tid;
     }