|
@@ -1,273 +0,0 @@
|
|
|
-package com.wdkl.ncs.android.component.nursehome.fragment
|
|
|
-
|
|
|
-import android.os.Bundle
|
|
|
-import android.os.Handler
|
|
|
-import android.os.Looper
|
|
|
-import android.support.v4.app.Fragment
|
|
|
-import android.util.Log
|
|
|
-import android.view.LayoutInflater
|
|
|
-import android.view.View
|
|
|
-import android.view.ViewGroup
|
|
|
-import com.enation.javashop.utils.base.tool.BaseToolActivity
|
|
|
-import com.wdkl.core.voip.VoipEvent
|
|
|
-import com.wdkl.ncs.android.component.nursehome.R
|
|
|
-import com.wdkl.ncs.android.middleware.common.Constants
|
|
|
-import com.wdkl.ncs.android.component.nursehome.util.RingPlayHelper
|
|
|
-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.DeviceChannel
|
|
|
-import com.wdkl.ncs.android.middleware.tcp.channel.EntraceGuardUtil
|
|
|
-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 com.wdkl.ncs.android.middleware.utils.MessageEvent
|
|
|
-import com.wdkl.skywebrtc.CallSession
|
|
|
-import com.wdkl.skywebrtc.EnumType
|
|
|
-import com.wdkl.skywebrtc.SkyEngineKit
|
|
|
-import com.wdkl.skywebrtc.except.NotInitializedException
|
|
|
-import kotlinx.android.synthetic.main.fragment_entraceguard_video.*
|
|
|
-import org.greenrobot.eventbus.EventBus
|
|
|
-import org.greenrobot.eventbus.Subscribe
|
|
|
-import org.greenrobot.eventbus.ThreadMode
|
|
|
-import org.webrtc.SurfaceViewRenderer
|
|
|
-
|
|
|
-/**
|
|
|
- * 门禁机请求开门视频界面fragment
|
|
|
- */
|
|
|
-class EntraceGuardVideoFragment : Fragment(), CallSession.CallSessionCallback {
|
|
|
-
|
|
|
- private var layout: View? = null
|
|
|
- protected lateinit var baseActivity: BaseToolActivity
|
|
|
-
|
|
|
- protected var gEngineKit: SkyEngineKit? = null
|
|
|
-
|
|
|
- private var isMute: Boolean = true
|
|
|
- private var remoteSurfaceView: SurfaceViewRenderer? = null
|
|
|
-
|
|
|
- private val handler = Handler(Looper.getMainLooper())
|
|
|
-
|
|
|
- var interactionVO: InteractionVO? = null
|
|
|
- var tcpModel: TcpModel? = null
|
|
|
-
|
|
|
- override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
- super.onCreate(savedInstanceState)
|
|
|
- EventBus.getDefault().register(this)
|
|
|
- }
|
|
|
-
|
|
|
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
|
|
- if (layout == null) {
|
|
|
- layout = inflater.inflate(R.layout.fragment_entraceguard_video, null)
|
|
|
- }
|
|
|
-
|
|
|
- /**初始化宿主Activity*/
|
|
|
- baseActivity = getActivity() as BaseToolActivity
|
|
|
-
|
|
|
- return layout
|
|
|
- }
|
|
|
-
|
|
|
- override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
|
|
|
- super.onViewCreated(view, savedInstanceState)
|
|
|
- EntraceGuardUtil.acceptStranger(tcpModel)
|
|
|
-
|
|
|
- try {
|
|
|
- SkyEngineKit.init(VoipEvent())
|
|
|
- gEngineKit = SkyEngineKit.Instance()
|
|
|
- } catch (e: NotInitializedException) {
|
|
|
- SkyEngineKit.init(VoipEvent())
|
|
|
- try {
|
|
|
- gEngineKit = SkyEngineKit.Instance()
|
|
|
- } catch (ex: NotInitializedException) {
|
|
|
- ex.printStackTrace()
|
|
|
- baseActivity.finish()
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- init()
|
|
|
- bindEvent()
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- override fun onDestroy() {
|
|
|
- super.onDestroy()
|
|
|
- RingPlayHelper.stopRingTone()
|
|
|
- EventBus.getDefault().unregister(this)
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- private fun init() {
|
|
|
- val session = gEngineKit?.getCurrentSession()
|
|
|
- if (session != null) {
|
|
|
- session.setSessionCallback(this)
|
|
|
- }
|
|
|
- title.setText(interactionVO!!.fromDeviceName + ",请求开门")
|
|
|
- RingPlayHelper.playRingTone(activity, R.raw.door_bell, true)
|
|
|
- speaker_on.isSelected = isMute
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- private fun bindEvent() {
|
|
|
-
|
|
|
- unlock_door.setOnClickListener {
|
|
|
- var tcpModel = EntraceGuardUtil.unlockDoor(interactionVO)
|
|
|
- TcpClient.getInstance().sendMsg(tcpModel.toJson())
|
|
|
- SkyEngineKit.Instance().endCall()
|
|
|
- Constants.CALL_STATE = Constants.CALL_STANDBY
|
|
|
- DeviceChannel.calling = false
|
|
|
- backToMain()
|
|
|
- }
|
|
|
-
|
|
|
- sky_voice_call_hangup.setOnClickListener {
|
|
|
-
|
|
|
- //发送挂断消息
|
|
|
- TcpClient.getInstance().sendMsg(EntraceGuardUtil.hangup(interactionVO).toJson())
|
|
|
- //结束sip通话
|
|
|
- SkyEngineKit.Instance().endCall()
|
|
|
- Constants.CALL_STATE = Constants.CALL_STANDBY
|
|
|
- DeviceChannel.calling = false
|
|
|
- backToMain()
|
|
|
- }
|
|
|
-
|
|
|
- speaker_on.setOnClickListener {
|
|
|
- var session = gEngineKit?.currentSession
|
|
|
- if (session != null) {
|
|
|
- isMute = !isMute
|
|
|
- session.toggleMuteAudio(isMute)
|
|
|
- session.toggleSpeaker(!isMute)
|
|
|
- speaker_on.isSelected = isMute
|
|
|
- TcpClient.getInstance().sendMsg(EntraceGuardUtil.toggleAudio(interactionVO, isMute).toJson())
|
|
|
- }
|
|
|
- RingPlayHelper.stopRingTone()
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- private fun backToMain() {
|
|
|
-
|
|
|
- RingPlayHelper.stopRingTone()
|
|
|
- EventBus.getDefault().post(MessageEvent("BackCall", Constants.EVENT_REMOVE_CALL_FRAGMENT))
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- @Subscribe(threadMode = ThreadMode.MAIN)
|
|
|
- fun onMoonEvent(messageEvent: MessageEvent) {
|
|
|
- when (messageEvent.getType()) {
|
|
|
- Constants.EVENT_JOIN_HOME_READY -> {
|
|
|
- Log.i("wdkl", "准备加入房间")
|
|
|
- val session = SkyEngineKit.Instance().getCurrentSession()
|
|
|
- if (session != null) {
|
|
|
- session.toggleSpeaker(false)
|
|
|
- session.toggleMuteAudio(true)
|
|
|
- Log.d("WDKL", "session = " + session + "; session.getState() = " + session.state + ",roomId=" + session.roomId)
|
|
|
- session.setSessionCallback(this)
|
|
|
- session.joinHome(session.roomId)
|
|
|
- }else{ //会话未成功建立
|
|
|
- EntraceGuardUtil.rejectStranger(interactionVO)
|
|
|
- backToMain()
|
|
|
- }
|
|
|
- }
|
|
|
- Constants.EVENT_TCP_MSG -> {
|
|
|
- var tcpModel = messageEvent.getMessage() as TcpModel
|
|
|
- if (tcpModel.getType() == TcpType.ENTRACEGUARD) { //超时未响应,结束通话退出界面
|
|
|
- if(tcpModel.action == TcpAction.EntraceGuardAction.TIMEOUT){
|
|
|
- SkyEngineKit.Instance().endCall()
|
|
|
- backToMain()
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- //视频来电接通
|
|
|
- private fun joinVideoCall() {
|
|
|
- val session = gEngineKit?.getCurrentSession()
|
|
|
- if (session != null) {
|
|
|
- Log.e("dds", "video call session state: " + session.state)
|
|
|
-
|
|
|
-// if (session.state == EnumType.CallState.Incoming) {
|
|
|
-// val surfaceView = gEngineKit!!.currentSession.setupLocalVideo(false)
|
|
|
-// if (surfaceView != null) {
|
|
|
-// localSurfaceView = surfaceView as SurfaceViewRenderer
|
|
|
-// localSurfaceView!!.setZOrderMediaOverlay(false)
|
|
|
-// fullscreen_video_frame.addView(localSurfaceView)
|
|
|
-// }
|
|
|
-//
|
|
|
-// session.joinHome(session.roomId)
|
|
|
-// session.toggleSpeaker(true)
|
|
|
-// } else if (session.state == EnumType.CallState.Idle) {
|
|
|
-// callEnd()
|
|
|
-// return
|
|
|
-// }
|
|
|
-
|
|
|
-// Handler().postDelayed({
|
|
|
-// if (session.state == EnumType.CallState.Connected){
|
|
|
-// //showCalling(onlyAudio)
|
|
|
-// } else {
|
|
|
-// gEngineKit?.endCall()
|
|
|
-// callEnd()
|
|
|
-// }
|
|
|
-// }, 2000)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- override fun didChangeState(var1: EnumType.CallState?) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- override fun didDisconnected(userId: String?) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- override fun didCreateLocalVideoTrack() {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- override fun didError(error: String?) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- //处理远端视频画面
|
|
|
- override fun didReceiveRemoteVideoTrack(userId: String?) {
|
|
|
- Log.e("dds", "didReceiveRemoteVideoTrack userId: " + userId)
|
|
|
- handler.post {
|
|
|
- val session = gEngineKit!!.currentSession
|
|
|
- if (session != null) {
|
|
|
-// //本地画面
|
|
|
-// if (localSurfaceView != null) {
|
|
|
-// localSurfaceView!!.setZOrderMediaOverlay(true)
|
|
|
-// if (outGoing) {
|
|
|
-// if (localSurfaceView!!.parent != null) {
|
|
|
-// (localSurfaceView!!.parent as ViewGroup).removeView(localSurfaceView)
|
|
|
-// }
|
|
|
-// pip_video_frame!!.addView(localSurfaceView)
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
- //远端画面
|
|
|
- val surfaceView = gEngineKit!!.currentSession.setupRemoteVideo(userId, false)
|
|
|
- Log.e("dds", "didReceiveRemoteVideoTrack,surfaceView = $surfaceView")
|
|
|
- if (surfaceView != null) {
|
|
|
- remoteSurfaceView = surfaceView as SurfaceViewRenderer
|
|
|
- remote_video_surface.removeAllViews()
|
|
|
-// if (remoteSurfaceView!!.parent != null) {
|
|
|
-// (remoteSurfaceView!!.parent as ViewGroup).removeView(remoteSurfaceView)
|
|
|
-// }
|
|
|
- remote_video_surface.addView(remoteSurfaceView)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- override fun didCallEndWithReason(var1: EnumType.CallEndReason?) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- override fun didChangeMode(isAudioOnly: Boolean) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- override fun didUserLeave(userId: String?) {
|
|
|
-
|
|
|
- }
|
|
|
-}
|