@@ -29,12 +29,9 @@ import com.tencent.iot.explorer.link.kitlink.activity.GuideActivity
2929import com.tencent.iot.explorer.link.kitlink.consts.CommonField
3030import com.tencent.iot.explorer.link.kitlink.util.HttpRequest
3131import com.tencent.iot.explorer.link.kitlink.util.WeatherUtils
32- import com.tencent.iot.explorer.link.rtc.model.RoomKey
33- import com.tencent.iot.explorer.link.rtc.model.TRTCCalling
34- import com.tencent.iot.explorer.link.rtc.model.TRTCUIManager
32+ import com.tencent.iot.explorer.link.rtc.model.*
3533import com.tencent.iot.explorer.link.rtc.ui.audiocall.TRTCAudioCallActivity
3634import com.tencent.iot.explorer.link.rtc.ui.videocall.TRTCVideoCallActivity
37- import com.tencent.iot.explorer.link.rtc.model.TRTCCallStatus
3835import java.util.*
3936import kotlin.collections.ArrayList
4037
@@ -314,7 +311,7 @@ class App : Application(), Application.ActivityLifecycleCallbacks, PayloadMessag
314311 calledUserId = calledUserIdJson.getString(" Value" )
315312 }
316313
317- val myUserId = SharePreferenceUtil .getString(activity, App . CONFIG , CommonField .USER_ID )
314+ val myUserId = SharePreferenceUtil .getString(activity, CONFIG , CommonField .USER_ID )
318315 // 判断设备的video_call_status, audio_call_status字段是否等于1,若等于1并且呼叫的是自己,就调用CallDevice接口
319316 if (calledUserId == myUserId) {
320317 if (videoCallStatus == 1 || audioCallStatus == 1 ) {
@@ -345,7 +342,7 @@ class App : Application(), Application.ActivityLifecycleCallbacks, PayloadMessag
345342 * 呼叫设备获取trtc参数信息
346343 */
347344 fun startBeingCall (callingType : Int , deviceId : String ) {
348- if (data .callingDeviceId != " " ) { // App主动呼叫
345+ if (TRTCUIManager .getInstance() .callingDeviceId != " " ) { // App主动呼叫
349346 trtcCallDevice(callingType)
350347 } else { // App被动
351348 appStartBeingCall(callingType, deviceId)
@@ -356,7 +353,7 @@ class App : Application(), Application.ActivityLifecycleCallbacks, PayloadMessag
356353 * 呼叫设备获取trtc参数信息
357354 */
358355 private fun trtcCallDevice (callingType : Int ) {
359- HttpRequest .instance.trtcCallDevice(App .data .callingDeviceId, object : MyCallback {
356+ HttpRequest .instance.trtcCallDevice(TRTCUIManager .getInstance() .callingDeviceId, object : MyCallback {
360357 override fun fail (msg : String? , reqCode : Int ) {
361358 if (msg != null ) L .e(msg)
362359 }
@@ -392,151 +389,64 @@ class App : Application(), Application.ActivityLifecycleCallbacks, PayloadMessag
392389 fun enterRoom (room : RoomKey ) {
393390 activity?.runOnUiThread {
394391 if (room.callType == TRTCCalling .TYPE_VIDEO_CALL ) {
395- TRTCUIManager .getInstance().joinRoom(TRTCCalling .TYPE_VIDEO_CALL , App .data .callingDeviceId, room)
392+ TRTCUIManager .getInstance().joinRoom(TRTCCalling .TYPE_VIDEO_CALL , TRTCUIManager .getInstance() .callingDeviceId, room)
396393 } else if (room.callType == TRTCCalling .TYPE_AUDIO_CALL ) {
397- TRTCUIManager .getInstance().joinRoom(TRTCCalling .TYPE_AUDIO_CALL , App .data .callingDeviceId, room)
394+ TRTCUIManager .getInstance().joinRoom(TRTCCalling .TYPE_AUDIO_CALL , TRTCUIManager .getInstance() .callingDeviceId, room)
398395 }
399396 }
400397 }
401398
402399 override fun payloadMessage (payload : Payload ) {
403-
404- var jsonObject = org.json.JSONObject (payload.json)
405- val action = jsonObject.getString(MessageConst .MODULE_ACTION );
406- if (action == MessageConst .DEVICE_CHANGE ) { // 收到了设备属性改变的wss消息
407- var paramsObject = jsonObject.getJSONObject(MessageConst .PARAM ) as org.json.JSONObject
408- val subType = paramsObject.getString(MessageConst .SUB_TYPE )
409- if (subType == MessageConst .REPORT ) { // 收到了设备端上报的属性状态改变的wss消息
410-
411- var payloadParamsObject = org.json.JSONObject (payload.payload)
412- val payloadParamsJson = payloadParamsObject.getJSONObject(MessageConst .PARAM )
413-
414- var method = " "
415- if (payloadParamsObject.has(MessageConst .METHOD )) {
416- method = payloadParamsObject.getString(MessageConst .METHOD )
417- }
418- if (method != " report" ) {
419- return ; // 过滤掉非report消息
420- }
421- var videoCallStatus = - 1
422- if (payloadParamsJson.has(MessageConst .TRTC_VIDEO_CALL_STATUS )) {
423- videoCallStatus = payloadParamsJson.getInt(MessageConst .TRTC_VIDEO_CALL_STATUS )
424- }
425- var audioCallStatus = - 1
426- if (payloadParamsJson.has(MessageConst .TRTC_AUDIO_CALL_STATUS )) {
427- audioCallStatus = payloadParamsJson.getInt(MessageConst .TRTC_AUDIO_CALL_STATUS )
400+ val userId = SharePreferenceUtil .getString(activity, CONFIG , CommonField .USER_ID )
401+ val trtcPayload = TRTCPayload (payload.json, payload.payload, payload.deviceId)
402+ TRTCUIManager .getInstance().payloadMessage(trtcPayload, userId, object :
403+ TRTCCallback {
404+ override fun busy () {
405+ TRTCUIManager .getInstance().userBusy()
406+ TRTCUIManager .getInstance().exitRoom()
407+ activity?.runOnUiThread {
408+ Toast .makeText(activity, " 对方正忙..." , Toast .LENGTH_LONG ).show()
428409 }
410+ }
429411
430- var deviceId = " "
431- if (payloadParamsJson.has(MessageConst .USERID )) {
432- deviceId = payloadParamsJson.getString(MessageConst .USERID )
433- }
412+ override fun updateCallStatus (key : String? , value : String? , deviceId : String? ) {
413+ controlDevice(key!! , value!! , deviceId!! )
414+ }
434415
435- var rejectId = " "
436- if (payloadParamsJson.has(MessageConst .TRTC_EXTRA_INFO )) {
437- val extraInfo = org.json.JSONObject (payloadParamsJson.getString(MessageConst .TRTC_EXTRA_INFO ))
438- if (extraInfo.has(MessageConst .TRTC_REJECT_USERID )) {
439- rejectId = extraInfo.getString(MessageConst .TRTC_REJECT_USERID )
440- }
441- }
416+ override fun startCall (type : Int , deviceId : String? ) {
417+ startBeingCall(type, deviceId!! )
418+ }
442419
443- if (videoCallStatus == - 1 && audioCallStatus == - 1 && rejectId.isEmpty()) {
444- return ; // 过滤掉非音视频通话的消息
420+ override fun otherUserAnswered () {
421+ activity?.runOnUiThread {
422+ Toast .makeText(activity, " 其他用户已接听..." , Toast .LENGTH_LONG ).show()
445423 }
424+ TRTCUIManager .getInstance().otherUserAccept()
425+ TRTCUIManager .getInstance().exitRoom()
426+ }
446427
447- val userId = SharePreferenceUtil .getString(activity, App .CONFIG , CommonField .USER_ID )
448- // 判断主动呼叫的回调中收到_sys_extra_info中的reject_userId为自己的userId,表示设备正和其他设备通话,拒绝了本次呼叫
449- if (! rejectId.isEmpty()) {
450- if (data.callingDeviceId != " " && rejectId == userId && TRTCUIManager .getInstance().isCalling) {
451- TRTCUIManager .getInstance().userBusy()
452- TRTCUIManager .getInstance().exitRoom()
428+ override fun hungUp () {
429+ if (TRTCUIManager .getInstance().callStatus == TRTCCallStatus .TYPE_CALLING .value) {
430+ if (TRTCUIManager .getInstance().callingDeviceId == " " ) { // 被动呼叫
453431 activity?.runOnUiThread {
454432 Toast .makeText(activity, " 对方正忙..." , Toast .LENGTH_LONG ).show()
455433 }
456- }
457- return
458- }
459-
460- // 判断主动呼叫的回调中收到的_sys_userid不为自己的userid则被其他用户抢先呼叫设备了,提示用户 对方正忙...
461- if (data.callingDeviceId != " " && deviceId != userId) {
462- if (TRTCUIManager .getInstance().isCalling) { // 当前正显示音视频通话页面,finish掉
463- if (data.callingDeviceId == payload.deviceId) {
464- TRTCUIManager .getInstance().userBusy()
465- TRTCUIManager .getInstance().exitRoom()
466- activity?.runOnUiThread {
467- Toast .makeText(activity, " 对方正忙..." , Toast .LENGTH_LONG ).show()
468- }
469- return
470- } else { // 其他的设备又呼叫了该用户
471- if (videoCallStatus == TRTCCallStatus .TYPE_CALLING .value) {
472- controlDevice(MessageConst .TRTC_VIDEO_CALL_STATUS , " 0" , payload.deviceId)
473- return
474- } else if (audioCallStatus == TRTCCallStatus .TYPE_CALLING .value) {
475- controlDevice(MessageConst .TRTC_AUDIO_CALL_STATUS , " 0" , payload.deviceId)
476- return
477- }
478- }
479- }
480- }
481-
482- // 判断被动呼叫时,已经被一台设备呼叫,又接到其他设备的呼叫请求,则调用AppControldeviceData拒绝其他设备的请求
483- if (data.callingDeviceId == " " && TRTCUIManager .getInstance().isCalling) {
484- if (videoCallStatus == TRTCCallStatus .TYPE_CALLING .value) {
485- controlDevice(MessageConst .TRTC_VIDEO_CALL_STATUS , " 0" , payload.deviceId)
486- } else if (audioCallStatus == TRTCCallStatus .TYPE_CALLING .value) {
487- controlDevice(MessageConst .TRTC_AUDIO_CALL_STATUS , " 0" , payload.deviceId)
488- }
489- }
490-
491- // 判断payload中是否包含设备的video_call_status, audio_call_status字段以及是否等于1,若等于1,就调用CallDevice接口, 主动拨打
492- if (videoCallStatus == 1 ) {
493- if (data.callingDeviceId == " " && deviceId != " " && ! deviceId.contains(userId)) { // App被动呼叫 _sys_userid有值 且不包含当前用户的userid
494- } else {
495- startBeingCall(TRTCCalling .TYPE_VIDEO_CALL , payload.deviceId)
496- }
497- } else if (audioCallStatus == 1 ) {
498- if (data.callingDeviceId == " " && deviceId != " " && ! deviceId.contains(userId)) { // App被动呼叫 _sys_userid有值 且不包含当前用户的userid
499- } else {
500- startBeingCall(TRTCCalling .TYPE_AUDIO_CALL , payload.deviceId)
501- }
502- } else if (videoCallStatus == 0 || audioCallStatus == 0 ) { // 空闲或拒绝了,当前正显示音视频通话页面的话,finish掉
503- if (TRTCUIManager .getInstance().deviceId == payload.deviceId) {
504- if (TRTCUIManager .getInstance().callStatus == TRTCCallStatus .TYPE_CALLING .value) {
505- if (data.callingDeviceId == " " ) { // 被动呼叫
506- activity?.runOnUiThread {
507- Toast .makeText(activity, " 对方正忙..." , Toast .LENGTH_LONG ).show()
508- }
509- } else { // 主动呼叫
510- activity?.runOnUiThread {
511- Toast .makeText(activity, " 对方正忙..." , Toast .LENGTH_LONG ).show()
512- }
513- }
514- }
515- TRTCUIManager .getInstance().exitRoom()
516- }
517- } else if (videoCallStatus == 2 || audioCallStatus == 2 ) {
518- if (TRTCUIManager .getInstance().callStatus == TRTCCallStatus .TYPE_CALLING .value && data.callingDeviceId == " " ) {
434+ } else { // 主动呼叫
519435 activity?.runOnUiThread {
520- Toast .makeText(activity, " 其他用户已接听 ..." , Toast .LENGTH_LONG ).show()
436+ Toast .makeText(activity, " 对方正忙 ..." , Toast .LENGTH_LONG ).show()
521437 }
522- TRTCUIManager .getInstance().otherUserAccept()
523- TRTCUIManager .getInstance().exitRoom()
524438 }
525439 }
526- } else if (subType == MessageConst .OFFLINE ) {
527- val deviceId = paramsObject.getString(MessageConst .DEVICE_ID )
528- TRTCUIManager .getInstance().userOffline(deviceId)
440+ TRTCUIManager .getInstance().exitRoom()
529441 }
530- }
442+ })
531443 }
532444
533445 /* *
534446 * 用户控制设备(上报数据)
535447 */
536448 fun controlDevice (id : String , value : String , deviceId : String ) {
537-
538449 val list = deviceId.split(" /" )
539-
540450 var productId = " "
541451 var deviceName = " "
542452 if (list.size == 2 ) {
@@ -554,15 +464,11 @@ class App : Application(), Application.ActivityLifecycleCallbacks, PayloadMessag
554464 if (msg != null ) L .e(msg)
555465 }
556466
557- override fun success (response : BaseResponse , reqCode : Int ) {
558-
559- }
560-
467+ override fun success (response : BaseResponse , reqCode : Int ) { }
561468 })
562469 }
563470
564- override fun connected () {
565- }
471+ override fun connected () { }
566472
567473 override fun disconnected () {
568474 L .e(" WebSocket已断开连接" )
0 commit comments