|
@@ -1,340 +0,0 @@
|
|
|
-package com.wdkl.ncs.android.component.home.activity
|
|
|
-
|
|
|
-import android.content.Context
|
|
|
-import android.content.Intent
|
|
|
-import android.os.CountDownTimer
|
|
|
-import android.os.VibrationEffect
|
|
|
-import android.os.Vibrator
|
|
|
-import android.util.Log
|
|
|
-import android.view.View
|
|
|
-import com.enation.javashop.android.jrouter.external.annotation.Autowired
|
|
|
-import com.enation.javashop.android.jrouter.external.annotation.Router
|
|
|
-import com.enation.javashop.net.engine.model.NetState
|
|
|
-import com.enation.javashop.utils.base.tool.CommonTool
|
|
|
-import com.enation.javashop.utils.base.widget.LoadingDialog
|
|
|
-import com.google.gson.Gson
|
|
|
-import com.wdkl.ncs.android.component.home.R
|
|
|
-import com.wdkl.ncs.android.component.home.databinding.WatchActivityEventDetailBinding
|
|
|
-import com.wdkl.ncs.android.component.home.launch.HomeLaunch
|
|
|
-import com.wdkl.ncs.android.component.home.ui.CallSingleActivity
|
|
|
-import com.wdkl.ncs.android.component.home.util.HandleTcpConnect
|
|
|
-import com.wdkl.ncs.android.component.home.util.MediaPlayHelper
|
|
|
-import com.wdkl.ncs.android.component.home.util.RingPlayHelper
|
|
|
-import com.wdkl.ncs.android.component.home.util.SpeechUtil
|
|
|
-import com.wdkl.ncs.android.middleware.common.Constants
|
|
|
-import com.wdkl.ncs.android.component.home.util.TimeTransition
|
|
|
-import com.wdkl.ncs.android.lib.utils.AppTool
|
|
|
-import com.wdkl.ncs.android.lib.utils.showMessage
|
|
|
-import com.wdkl.ncs.android.lib.vo.MessageEvent
|
|
|
-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.ServerIpInfo
|
|
|
-import com.wdkl.ncs.android.middleware.model.dos.AppVersionDO
|
|
|
-import com.wdkl.ncs.android.middleware.model.dos.ChannelDO
|
|
|
-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.model.vo.WatchContactVO
|
|
|
-import com.wdkl.ncs.android.middleware.tcp.NettyClient
|
|
|
-import com.wdkl.ncs.android.middleware.tcp.channel.DeviceChannel
|
|
|
-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.channel.VoiceUtil
|
|
|
-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.watch_activity_event_detail.*
|
|
|
-import org.greenrobot.eventbus.Subscribe
|
|
|
-import org.greenrobot.eventbus.ThreadMode
|
|
|
-
|
|
|
-@Router(path = "/event/detail")
|
|
|
-class WatchEventDetailActivity : BaseActivity<WatchHomeActivityPresenter, WatchActivityEventDetailBinding>(), WatchHomeActivityContract.View {
|
|
|
-
|
|
|
- var TAG = WatchEventDetailActivity::class.java.getSimpleName()
|
|
|
- //参数自动注入
|
|
|
- @Autowired(name = "tcpModelStr", required = true)
|
|
|
- @JvmField
|
|
|
- var tcpModelStr: String = ""
|
|
|
- @Autowired(name = "boolVibrator", required = false)
|
|
|
- @JvmField
|
|
|
- var boolVibrator = false
|
|
|
-
|
|
|
- var interactionVO: InteractionVO? = null
|
|
|
- var tcpModel: TcpModel? = null
|
|
|
- private var CALL_TIMEOUT = 2 //多久可以再次点击
|
|
|
-
|
|
|
-
|
|
|
- lateinit var countDownTimer: CountDownTimer
|
|
|
- private lateinit var loadingDialog: LoadingDialog
|
|
|
- lateinit var mVibrator: Vibrator
|
|
|
-
|
|
|
- override fun getLayId(): Int {
|
|
|
- return R.layout.watch_activity_event_detail
|
|
|
- }
|
|
|
-
|
|
|
- override fun enableHeadsetVoiceMsg(): Boolean {
|
|
|
- return false
|
|
|
- }
|
|
|
-
|
|
|
- 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 bindDagger() {
|
|
|
- HomeLaunch.component.inject(this)
|
|
|
- }
|
|
|
-
|
|
|
- override fun bindEvent() {
|
|
|
- back.setOnClickListener {
|
|
|
- // push("/watch/callrecords", { postcard ->
|
|
|
-// postcard.withString("action","UNREAD")
|
|
|
-// postcard.withString("customer_id","")
|
|
|
- finish()
|
|
|
-// })
|
|
|
- }
|
|
|
-
|
|
|
- call_relyout.setOnClickListener {
|
|
|
-
|
|
|
- call_relyout.isEnabled = false
|
|
|
- Log.i(TAG, "当前界面 tcpModel " + this.tcpModel?.toJson())
|
|
|
- var tcpModel: TcpModel? = null
|
|
|
- if (interactionVO?.fromDeviceMemberId==null){
|
|
|
- tcpModel = VoiceUtil.voiceCall(Constants.deviceId, interactionVO?.fromDeviceId)
|
|
|
- } else if (interactionVO?.fromDeviceMemberId != Constants.memberId) {
|
|
|
- tcpModel = VoiceUtil.voiceCall(Constants.deviceId, interactionVO?.fromDeviceId)
|
|
|
- } else {
|
|
|
- tcpModel = VoiceUtil.voiceCall(Constants.deviceId, interactionVO?.toDeviceId)
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- DeviceChannel.calling = true
|
|
|
-
|
|
|
- val intent = Intent(this@WatchEventDetailActivity, CallSingleActivity::class.java)
|
|
|
- intent.putExtra(CallSingleActivity.EXTRA_ROOM_ID, Constants.sipId)
|
|
|
- intent.putExtra(CallSingleActivity.EXTRA_MO, true)
|
|
|
- intent.putExtra(CallSingleActivity.EXTRA_AUDIO_ONLY, true)
|
|
|
- intent.putExtra(CallSingleActivity.EXTRA_TCPMODEL, tcpModel);
|
|
|
- //intent.putExtra(CallSingleActivity.EXTRA_SHOWNAME, receivedData!!.frameFullName + " "+receivedData!!.customerNamed)
|
|
|
- //intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
- startActivity(intent)
|
|
|
-
|
|
|
- countDownTimer.start()
|
|
|
- SpeechUtil.getInstance().stopSpeak()
|
|
|
- }
|
|
|
-
|
|
|
- event_status_img.setOnClickListener {
|
|
|
- event_status_img.isEnabled = false
|
|
|
- countDownTimer.start()
|
|
|
- if (tcpModel?.type == TcpType.EVENT) {
|
|
|
- loadingDialog.show()
|
|
|
- val tcpModel = EventUtil.eventResponse(Constants.deviceId, interactionVO!!.fromDeviceId, interactionVO!!.id)
|
|
|
- NettyClient.instance.sendMsg(tcpModel.toJson()).subscribe {
|
|
|
- if (it) {
|
|
|
- Log.d(TAG, "TCP.发送消息完成")
|
|
|
- } else {
|
|
|
- Log.e(TAG, "TCP.发送消息失败")
|
|
|
- HandleTcpConnect.instance.tcpReConnectWithMsgShow()
|
|
|
- }
|
|
|
- loadingDialog.dismiss()
|
|
|
- }
|
|
|
- } else if (tcpModel?.type == TcpType.IM) {
|
|
|
- if (!Constants.deviceId.equals("")) {
|
|
|
- if (interactionVO!!.actionEnd == null) {
|
|
|
- var imUtilTcpModel = ImUtil.imRead(Constants.deviceId, interactionVO!!.fromDeviceId, interactionVO!!.id)
|
|
|
- NettyClient.instance.sendMsg(imUtilTcpModel.toJson()).subscribe {
|
|
|
- if (it) {
|
|
|
- Log.d(TAG, "TCP.发送消息完成")
|
|
|
- } else {
|
|
|
- Log.e(TAG, "TCP.发送消息失败")
|
|
|
- HandleTcpConnect.instance.tcpReConnectWithMsgShow()
|
|
|
- }
|
|
|
- }
|
|
|
- MediaPlayHelper.getInstance().stopMusic(false)
|
|
|
- MediaPlayHelper.getInstance().playUrlMusic(ApiManager.urlManager.device_url + interactionVO!!.data, 1f, false)
|
|
|
- } else {
|
|
|
- MediaPlayHelper.getInstance().stopMusic(false)
|
|
|
- MediaPlayHelper.getInstance().playUrlMusic(ApiManager.urlManager.device_url + interactionVO!!.data, 1f, false)
|
|
|
- }
|
|
|
- } else {
|
|
|
- showMessage("获取不到当给前设备id")
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- override fun destory() {
|
|
|
- if(countDownTimer != null){
|
|
|
- countDownTimer.cancel()
|
|
|
- }
|
|
|
- MediaPlayHelper.getInstance().stopMusic(true)
|
|
|
- RingPlayHelper.stopRingTone()
|
|
|
- }
|
|
|
-
|
|
|
- override fun init() {
|
|
|
- loadingDialog = CommonTool.createLoadingDialog(this, R.layout.custom_loading,R.id.loadding_image)
|
|
|
- initCountDownTimer()
|
|
|
- //震动
|
|
|
- mVibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
|
|
|
- if (boolVibrator){
|
|
|
- mVibrator.cancel()
|
|
|
- //开启振动后 等待0.1s振动 振动2s 等待1s 振动2s 等待1s
|
|
|
- val pattern = longArrayOf(100, 2000, 1000, 2000)
|
|
|
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
|
|
|
- mVibrator.vibrate(VibrationEffect.createWaveform(pattern, -1))
|
|
|
- } else {
|
|
|
- mVibrator.vibrate(pattern, -1)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- Log.i(TAG, "参数 tcpModelStr : " + tcpModelStr)
|
|
|
- tcpModel = TcpModel.getModelByJson(tcpModelStr)
|
|
|
- //var gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
|
|
|
- interactionVO = Gson().fromJson(tcpModel?.data.toString(), InteractionVO::class.java)
|
|
|
-
|
|
|
- if (interactionVO != null) {
|
|
|
- tv_frame_name.setText(interactionVO?.fromFrameFullName)
|
|
|
- if (interactionVO?.fromDeviceMemberId == Constants.memberId){
|
|
|
- baby_mother_name.setText(interactionVO?.toMemberName)
|
|
|
- } else {
|
|
|
- baby_mother_name.setText(interactionVO?.fromMemberName)
|
|
|
- }
|
|
|
-
|
|
|
- if (tcpModel?.type == TcpType.IM) {
|
|
|
- event_text.setText("语音留言")
|
|
|
- event_status_img.setImageResource(R.drawable.icon_hd_live)
|
|
|
- if (interactionVO?.actionEnd != null) {
|
|
|
- event_end_text.setText("响应时间:" + TimeTransition().stampToDate(interactionVO!!.actionEnd * 1000))
|
|
|
- //event_status_img.isEnabled = false
|
|
|
- //event_status_img.setImageResource(com.starrtc.demo.R.drawable.icon_hd_live_item)
|
|
|
- } /*else {
|
|
|
- event_status_img.setImageResource(com.starrtc.demo.R.drawable.icon_hd_live)
|
|
|
- }*/
|
|
|
- } else if (tcpModel?.type == TcpType.EVENT) {
|
|
|
- event_text.setText(interactionVO?.data)
|
|
|
-
|
|
|
- if (interactionVO?.actionEnd != null) {
|
|
|
- event_end_text.setText("响应时间:" + TimeTransition().stampToDate(interactionVO!!.actionEnd * 1000))
|
|
|
- event_status_img.isEnabled = false
|
|
|
- event_status_img.setImageResource(R.drawable.icon_switch_on)
|
|
|
- }
|
|
|
- } else {
|
|
|
- event_status_img.visibility = View.GONE
|
|
|
-// call_relyout.visibility = View.VISIBLE
|
|
|
- if (tcpModel?.type == TcpType.VOICE) {
|
|
|
- //todo 腕表没有按主机这边设计 没数据
|
|
|
- if (interactionVO?.actionEnd != null) {
|
|
|
- //判断是呼入还是呼出 1 分机到主机 2主机到分机
|
|
|
- if (interactionVO?.actionDirectionType == 1) {
|
|
|
- event_text.setText("语音呼入已接")
|
|
|
- } else if (interactionVO?.actionDirectionType == 2 || interactionVO?.actionDirectionType == 3) {
|
|
|
- event_text.setText("语音呼出已接")
|
|
|
- }
|
|
|
- } else {
|
|
|
- //判断是呼入还是呼出 1 分机到主机 2主机到分机
|
|
|
- if (interactionVO?.actionDirectionType == 1) {
|
|
|
- event_text.setText("语音呼入未接")
|
|
|
- } else if (interactionVO?.actionDirectionType == 2 || interactionVO?.actionDirectionType == 3) {
|
|
|
- event_text.setText("语音呼出未接")
|
|
|
- }
|
|
|
- }
|
|
|
-// event_text.setText("语音呼叫")
|
|
|
-
|
|
|
- } else if (tcpModel?.type == TcpType.VIDEO) {
|
|
|
-
|
|
|
- event_text.setText("视频呼叫")
|
|
|
- } else if (tcpModel?.type == TcpType.SOS) {
|
|
|
- event_text.setText("SOS紧急呼叫")
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- fun initCountDownTimer() {
|
|
|
- countDownTimer = object : CountDownTimer(CALL_TIMEOUT * 1000L, 1000) {
|
|
|
- override fun onTick(millisUntilFinished: Long) {
|
|
|
- }
|
|
|
-
|
|
|
- override fun onFinish() {
|
|
|
- loadingDialog.dismiss()
|
|
|
- call_relyout.isEnabled = true
|
|
|
- event_status_img.isEnabled = true
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- override fun handleAppVersion(appInfo: AppVersionDO) {
|
|
|
- }
|
|
|
-
|
|
|
- override fun setDeviceDo(data: DeviceVO) {
|
|
|
- }
|
|
|
-
|
|
|
- override fun setTcpServerHost(tcpSeverDTO: TcpSeverDTO) {
|
|
|
- }
|
|
|
-
|
|
|
- override fun setDeviceVoiceChannel(channelList: ArrayList<ChannelDO>) {
|
|
|
- }
|
|
|
-
|
|
|
- override fun setPhoneNumberWhiteList(phoneList: ArrayList<String>) {
|
|
|
- }
|
|
|
-
|
|
|
- override fun setContact(contactsVOs: List<WatchContactVO>) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- override fun setServerInfo(serverIpInfo: ServerIpInfo) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Subscribe(threadMode = ThreadMode.MAIN)
|
|
|
- fun onMoonEvent(messageEvent: MessageEvent) {
|
|
|
- if (messageEvent.tag == 4) {
|
|
|
- val resTcpModel = messageEvent.getMessage() as TcpModel
|
|
|
- if (resTcpModel.type == TcpType.DATA && resTcpModel.action == TcpAction.DataAction.INTERACTION) {
|
|
|
- if (resTcpModel.data != null) {
|
|
|
- loadingDialog.dismiss()
|
|
|
- val responseInteractionVO = Gson().fromJson<InteractionVO>(resTcpModel.getData().toString(), InteractionVO::class.java)
|
|
|
-
|
|
|
- if (tcpModel?.type == TcpType.IM) {
|
|
|
- event_status_img.setImageResource(R.drawable.icon_hd_live_item)
|
|
|
- showMessage("已播放")
|
|
|
- } else if (tcpModel?.type == TcpType.EVENT) {
|
|
|
- event_status_img.setImageResource(R.drawable.icon_switch_on)
|
|
|
- showMessage("已响应")
|
|
|
- AppTool.Time.delay(1500){
|
|
|
- finish()
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- mVibrator.cancel()
|
|
|
- event_end_text.setText("响应时间:" + TimeTransition().stampToDate(responseInteractionVO.actionEnd * 1000))
|
|
|
- }
|
|
|
- }
|
|
|
- } else if (messageEvent.tag == 1) {
|
|
|
- loadingDialog.dismiss()
|
|
|
- mVibrator.cancel()
|
|
|
- //具体逻辑在TcpHandleService中处理
|
|
|
- } else if (messageEvent.tag == 2) {
|
|
|
- val resTcpModel = messageEvent.getMessage() as TcpModel
|
|
|
- if (resTcpModel.action == TcpAction.VoiceAction.FAILED){
|
|
|
- showMessage("呼叫失败,可能对方不在线")
|
|
|
- } else if (resTcpModel.action == TcpAction.VoiceAction.CALLING){
|
|
|
- showMessage("对方通话中")
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|