|
@@ -0,0 +1,656 @@
|
|
|
+package com.wdkl.ncs.android.component.home.activity
|
|
|
+
|
|
|
+import android.Manifest
|
|
|
+import android.content.BroadcastReceiver
|
|
|
+import android.content.Context
|
|
|
+import android.content.Intent
|
|
|
+import android.content.IntentFilter
|
|
|
+import android.graphics.Color
|
|
|
+import android.net.wifi.WifiManager
|
|
|
+import android.os.Handler
|
|
|
+import android.telephony.PhoneStateListener
|
|
|
+import android.telephony.SignalStrength
|
|
|
+import android.telephony.TelephonyManager
|
|
|
+import android.text.TextUtils
|
|
|
+import android.util.Log
|
|
|
+import android.view.View
|
|
|
+import com.enation.javashop.android.jrouter.external.annotation.Router
|
|
|
+import com.enation.javashop.net.engine.model.NetState
|
|
|
+import com.enation.javashop.net.engine.plugin.permission.RxPermissions
|
|
|
+import com.google.gson.Gson
|
|
|
+import com.starrtc.demo.demo.service.KeepLiveService
|
|
|
+import com.starrtc.demo.utils.AEvent
|
|
|
+import com.vvsip.ansip.IVvsipServiceListener
|
|
|
+import com.vvsip.ansip.VvsipCall
|
|
|
+import com.wdkl.core.consts.Urls
|
|
|
+import com.wdkl.core.socket.IUserState
|
|
|
+import com.wdkl.core.socket.SocketManager
|
|
|
+import com.wdkl.core.voip.VoipEvent
|
|
|
+import com.wdkl.ncs.android.component.home.BuildConfig
|
|
|
+import com.wdkl.ncs.android.component.home.R
|
|
|
+import com.wdkl.ncs.android.component.home.SOSEmergencyCallActivity
|
|
|
+import com.wdkl.ncs.android.component.home.SipUtil.SipCallBack
|
|
|
+import com.wdkl.ncs.android.component.home.SipUtil.SipHelper
|
|
|
+import com.wdkl.ncs.android.component.home.SipUtil.SipHelperUtil
|
|
|
+import com.wdkl.ncs.android.component.home.SipUtil.SipHelperUtil2
|
|
|
+import com.wdkl.ncs.android.component.home.broadcast.BatteryBroadcastReceiver
|
|
|
+import com.wdkl.ncs.android.component.home.databinding.WatchActivityHomeBinding
|
|
|
+import com.wdkl.ncs.android.component.home.launch.HomeLaunch
|
|
|
+import com.wdkl.ncs.android.component.home.service.APPService
|
|
|
+import com.wdkl.ncs.android.component.home.service.TcpHandleService
|
|
|
+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.nursehome.common.Constants
|
|
|
+import com.wdkl.ncs.android.lib.base.BaseActivity
|
|
|
+import com.wdkl.ncs.android.lib.base.BaseApplication
|
|
|
+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.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.DeviceDO
|
|
|
+import com.wdkl.ncs.android.middleware.model.dto.TcpSeverDTO
|
|
|
+
|
|
|
+import com.wdkl.ncs.android.middleware.tcp.TcpClient
|
|
|
+
|
|
|
+import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
|
|
|
+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 com.wdkl.ncs.android.middleware.utils.MessageEvent
|
|
|
+import com.wdkl.skywebrtc.SkyEngineKit
|
|
|
+import com.wdkl.skywebrtc.except.NotInitializedException
|
|
|
+import io.reactivex.Observable
|
|
|
+import kotlinx.android.synthetic.main.watch_activity_home.*
|
|
|
+import kotlinx.android.synthetic.main.watch_activity_home.battery_warning_tv
|
|
|
+import kotlinx.android.synthetic.main.watch_activity_home.call_records_linlyout
|
|
|
+import kotlinx.android.synthetic.main.watch_activity_home.customer_list_linlyout
|
|
|
+import kotlinx.android.synthetic.main.watch_activity_home.electric_quantity_tv
|
|
|
+import kotlinx.android.synthetic.main.watch_activity_home.list_item_img_icon_num
|
|
|
+import kotlinx.android.synthetic.main.watch_activity_home.other_linyout
|
|
|
+import kotlinx.android.synthetic.main.watch_activity_home.sip_state_tv
|
|
|
+import kotlinx.android.synthetic.main.watch_activity_home.state_linlyout
|
|
|
+import kotlinx.android.synthetic.main.watch_activity_home.user_nume_linlyout
|
|
|
+import kotlinx.android.synthetic.main.watch_activity_home.watch_name_tv
|
|
|
+import kotlinx.android.synthetic.main.watch_activity_home.watch_role_name_tv
|
|
|
+import kotlinx.android.synthetic.main.watch_activity_home.wifi_rssi_tv
|
|
|
+import kotlinx.android.synthetic.main.watch_activity_home2.*
|
|
|
+import kotlinx.android.synthetic.main.watch_activity_register.*
|
|
|
+import org.greenrobot.eventbus.Subscribe
|
|
|
+import org.greenrobot.eventbus.ThreadMode
|
|
|
+import java.util.*
|
|
|
+import kotlin.collections.ArrayList
|
|
|
+import kotlin.math.log
|
|
|
+
|
|
|
+@Router(path = "/watch/home")
|
|
|
+class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivityHomeBinding>(), WatchHomeActivityContract.View, View.OnClickListener, View.OnLongClickListener,
|
|
|
+ SipCallBack, IVvsipServiceListener, IUserState {
|
|
|
+
|
|
|
+
|
|
|
+ var TAG = WatchHome2Activity::class.java.getSimpleName()
|
|
|
+
|
|
|
+ //监听网络变化
|
|
|
+ lateinit var wifiManager: WifiManager
|
|
|
+ lateinit var teleManager: TelephonyManager
|
|
|
+ lateinit var wifiReceiver: WifiReceiver
|
|
|
+ private var netType: Int = -1
|
|
|
+
|
|
|
+ lateinit var batteryBroadcastReceiver: BatteryBroadcastReceiver
|
|
|
+
|
|
|
+
|
|
|
+ override fun getLayId(): Int {
|
|
|
+ return R.layout.watch_activity_home2
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun bindDagger() {
|
|
|
+ HomeLaunch.component.inject(this)
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun init() {
|
|
|
+// AppTool.SystemUI.showNavigationBar(this,false)
|
|
|
+// AppTool.SystemUI.ImmersiveWithBottomBarColor(this, Color.BLACK)
|
|
|
+
|
|
|
+ presenter.loadTcpServerHost()
|
|
|
+
|
|
|
+ requestPermissions()
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun requestPermissions() {
|
|
|
+ Observable.just("").compose(RxPermissions(this).ensure(Manifest.permission.CAMERA,
|
|
|
+ Manifest.permission.READ_EXTERNAL_STORAGE,
|
|
|
+ Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
|
|
+ Manifest.permission.ACCESS_WIFI_STATE,
|
|
|
+ Manifest.permission.BLUETOOTH,
|
|
|
+ Manifest.permission.RECORD_AUDIO,
|
|
|
+ Manifest.permission.READ_PHONE_STATE)).subscribe {
|
|
|
+ if (it) {
|
|
|
+ Constants.imei = Util().getIMEI(this)
|
|
|
+ Log.e(TAG, "IMEI " + Util().getIMEI(this))
|
|
|
+
|
|
|
+ Constants.mac = NetHelper.getInstance().macAddress
|
|
|
+ //Constants.mac = "4C:C0:0A:8E:D6:BB"
|
|
|
+ Log.e(TAG, "mac " + Constants.mac)
|
|
|
+ tv_mac_addr.text = "MAC地址: " + Constants.mac + "\n" + "IMEI号:" + Constants.imei
|
|
|
+
|
|
|
+// presenter.loadData(Constants.mac)//传Mac
|
|
|
+ presenter.loadData(Constants.imei)// 传imei
|
|
|
+ } else {
|
|
|
+ showMessage("请重新授权,进入App")
|
|
|
+ requestPermissions()
|
|
|
+ }
|
|
|
+ }.joinManager(disposableManager)
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun regReceiver() {
|
|
|
+ wifiReceiver = WifiReceiver()
|
|
|
+ val intentFilter = IntentFilter()
|
|
|
+ intentFilter.addAction(WifiManager.RSSI_CHANGED_ACTION)
|
|
|
+ registerReceiver(wifiReceiver, intentFilter)
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun userLogin() {
|
|
|
+ Log.e(TAG, "webrtc 注册完成")
|
|
|
+ sip_state_tv.setBackgroundColor(Color.parseColor("#00FFFF"))
|
|
|
+ // webRTC呼叫测试
|
|
|
+// var room = UUID.randomUUID().toString() + System.currentTimeMillis()
|
|
|
+// var gEngineKit:SkyEngineKit? = null
|
|
|
+// try {
|
|
|
+// SkyEngineKit.init(VoipEvent()) //重新初始化
|
|
|
+// gEngineKit = SkyEngineKit.Instance()
|
|
|
+// } catch (e: NotInitializedException) {
|
|
|
+// SkyEngineKit.init(VoipEvent()) //重新初始化
|
|
|
+// try {
|
|
|
+// gEngineKit = SkyEngineKit.Instance()
|
|
|
+// } catch (ex: NotInitializedException) {
|
|
|
+// }
|
|
|
+// }
|
|
|
+// val b = gEngineKit?.startOutCall(applicationContext, room, "4000000210", true)
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun userLogout() {
|
|
|
+ sip_state_tv.setBackgroundColor(Color.parseColor("#FF0000"))
|
|
|
+ Log.e(TAG, "webrtc 注册失败")
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun unRegReceiver() {
|
|
|
+ unregisterReceiver(wifiReceiver)
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun bindEvent() {
|
|
|
+ customer_list_linlyout.setOnClickListener(this)
|
|
|
+ call_records_linlyout.setOnClickListener(this)
|
|
|
+ user_nume_linlyout.setOnClickListener(this)
|
|
|
+ state_linlyout.setOnClickListener(this)
|
|
|
+ user_nume_linlyout.setOnLongClickListener(this)
|
|
|
+ other_linyout.setOnClickListener(this)
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun destory() {
|
|
|
+ unRegReceiver()
|
|
|
+ SpeechUtil.getInstance().release()
|
|
|
+// SipHelperUtil.getInstance(this).unRegisterSip()
|
|
|
+// SipHelper.getInstance().unRegisterSip()
|
|
|
+
|
|
|
+ //注销webRTC
|
|
|
+ SocketManager.getInstance().unConnect()
|
|
|
+
|
|
|
+ if (batteryBroadcastReceiver != null) {
|
|
|
+ unregisterReceiver(batteryBroadcastReceiver)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun render(appInfo: AppVersionDO) {
|
|
|
+ Log.d("AppUpdate", "loadAppVersion111 =====>> version_code: " + appInfo.versionCode + ", path: " + appInfo.appPath)
|
|
|
+ val newAppVersion = appInfo.versionCode.substring(1)
|
|
|
+ Log.d("AppUpdate", "loadAppVersion222 =====>> newAppVersion: " + newAppVersion + ", curAppVersion: " + BuildConfig.VERSION_NAME)
|
|
|
+ showMessage("获取版本成功,当前版本: " + BuildConfig.VERSION_NAME + ", 服务器版本: " + newAppVersion)
|
|
|
+
|
|
|
+ //服务器版本和当前版本不一致才做升级操作
|
|
|
+ if (!BuildConfig.VERSION_NAME.equals(newAppVersion)) {
|
|
|
+ Constants.APP_PATH = appInfo.appPath
|
|
|
+ AppTool.Time.delay(200) {
|
|
|
+ push("/callingbed/update")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ fun checkAppVersion() {
|
|
|
+ Constants.APP_PATH = ""
|
|
|
+ //获取APP版本信息,7寸分机type=204
|
|
|
+ if (Constants.part_id != null) {
|
|
|
+ presenter.getAppVersion(Constants.part_id, 7)
|
|
|
+ }
|
|
|
+ Log.d("AppUpdate", "checkAppVersion =====>> Constant.PART_ID: " + Constants.part_id)
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 返回的设备信息
|
|
|
+ */
|
|
|
+ override fun showData(data: DeviceDO) {
|
|
|
+ watch_activity_register_layout.visibility = View.GONE
|
|
|
+ watch_activity_home_linyout.visibility = View.VISIBLE
|
|
|
+
|
|
|
+ Log.e(TAG, "收到返回的设备信息 ")
|
|
|
+ Constants.part_id = data.partId
|
|
|
+ Constants.ids = "" + data.id
|
|
|
+ Constants.sip_id = data.sipId
|
|
|
+ Constants.eth_ip = "192.168.1.138:8006/"
|
|
|
+ Constants.sip_ip = "192.168.1.162"
|
|
|
+ Constants.sip_id = data.sipId
|
|
|
+ Constants.sip_password = data.sipPassword
|
|
|
+ Constants.user_name = data.memberName
|
|
|
+ Constants.user_role_name = data.name
|
|
|
+
|
|
|
+ if (TextUtils.isEmpty(Constants.ids) || TextUtils.isEmpty(Constants.sip_id) || TextUtils.isEmpty(Constants.user_name)
|
|
|
+ || TextUtils.isEmpty(Constants.user_role_name)) {
|
|
|
+ showMessage("初始化数据时服务器返回数据不全,请联系管理员")
|
|
|
+ tv_feedback_device_info.text = "初始化数据时服务器返回数据不全,请联系管理员"
|
|
|
+ return
|
|
|
+ } else if (TextUtils.isEmpty(Constants.tcp_server)) {
|
|
|
+ showMessage("初始化tcp连接数据为null")
|
|
|
+ tv_feedback_device_info.text = "初始化tcp连接数据为null"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //这里的是视频通话有关的
|
|
|
+ AEvent.setHandler(Handler())
|
|
|
+ //这里的是视频通话有关的
|
|
|
+
|
|
|
+// initSDK("000100")
|
|
|
+ initSDK(data.sipId)
|
|
|
+ initInterfaceData()
|
|
|
+ showMessage("初始化完成")
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 返回的tcp信息
|
|
|
+ */
|
|
|
+ override fun setTcpServerHost(tcpSeverDTO: TcpSeverDTO) {
|
|
|
+ Constants.tcp_server = tcpSeverDTO.publicIp
|
|
|
+ Constants.tcp_port = tcpSeverDTO.tcpPort
|
|
|
+ Constants.heart_beat = tcpSeverDTO.readerIdleTime
|
|
|
+
|
|
|
+ startConnectTcpServer()
|
|
|
+ showMessage("开始连接TCP服务器...")
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun startConnectTcpServer() {
|
|
|
+ Thread(Runnable {
|
|
|
+ run {
|
|
|
+ //TcpClient.getInstance().init("192.168.1.138", 5080, 9)
|
|
|
+ //TcpClient.getInstance().init("47.106.200.55", 5080, 9)
|
|
|
+
|
|
|
+ TcpClient.getInstance().init(Constants.tcp_server, Constants.tcp_port, Constants.heart_beat)
|
|
|
+ }
|
|
|
+ }).start()
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun initSDK(DeviceSipId: String) {
|
|
|
+ val intent = Intent(this, KeepLiveService::class.java)
|
|
|
+ intent.putExtra("DeviceSipId", DeviceSipId)
|
|
|
+ startService(intent)
|
|
|
+
|
|
|
+ val intent2 = Intent(this, TcpHandleService::class.java)
|
|
|
+ startService(intent2)
|
|
|
+
|
|
|
+
|
|
|
+ val intent3 = Intent(this, APPService::class.java)
|
|
|
+ startService(intent3)
|
|
|
+
|
|
|
+
|
|
|
+// val intent2 = Intent(this, RTCKeepLiveService::class.java)
|
|
|
+// startService(intent2)
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 初始化界面数据
|
|
|
+ */
|
|
|
+ fun initInterfaceData() {
|
|
|
+ watch_name_tv.text = Constants.user_name
|
|
|
+
|
|
|
+ if (Constants.user_role_name!!.contains("腕表")) {
|
|
|
+ watch_role_name_tv.text = Constants.user_role_name!!.substring(0, (Constants.user_role_name)!!.indexOf("腕表"))
|
|
|
+ } else {
|
|
|
+ watch_role_name_tv.text = Constants.user_role_name
|
|
|
+ }
|
|
|
+
|
|
|
+ //开始ping网络,30秒ping一次
|
|
|
+// NetHelper.startNetCheck()
|
|
|
+// //SIP准备工作
|
|
|
+// initSip()
|
|
|
+ //WEBRTC 语音初始化
|
|
|
+ // 添加登录回调
|
|
|
+ SocketManager.getInstance().addUserStateCallback(this)
|
|
|
+ // 连接socket:登录
|
|
|
+ SocketManager.getInstance().connect(Urls.WS, Constants.sip_id, 0)
|
|
|
+
|
|
|
+ Log.e(TAG, "Urls.WS " + Urls.WS + " sip_id " + Constants.sip_id)
|
|
|
+
|
|
|
+ wifiManager = (applicationContext.getSystemService(Context.WIFI_SERVICE)) as WifiManager
|
|
|
+ teleManager = (applicationContext.getSystemService(Context.TELEPHONY_SERVICE)) as TelephonyManager
|
|
|
+
|
|
|
+ netType = NetHelper.getInstance().getNetworkState(applicationContext)
|
|
|
+ Log.e(TAG, "wzlll 网络类型:" + netType)
|
|
|
+ if (netType == NetHelper.NETWORK_2G || netType == NetHelper.NETWORK_3G || netType == NetHelper.NETWORK_4G) {
|
|
|
+ if (teleManager != null) {
|
|
|
+ teleManager.listen(object : PhoneStateListener() {
|
|
|
+ override fun onSignalStrengthsChanged(signalStrength: SignalStrength) {
|
|
|
+ super.onSignalStrengthsChanged(signalStrength)
|
|
|
+ val asu = signalStrength.gsmSignalStrength
|
|
|
+ val lastSignal = -113 + 2 * asu;
|
|
|
+ if (lastSignal > 0) {
|
|
|
+ var mobileNetworkSignal = lastSignal
|
|
|
+ }
|
|
|
+ Log.e(TAG, "wzlll 数据连接信号强度:" + lastSignal)
|
|
|
+ }
|
|
|
+ }, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ regReceiver()
|
|
|
+
|
|
|
+ batteryBroadcastReceiver = BatteryBroadcastReceiver(electric_quantity_tv)
|
|
|
+
|
|
|
+ val intentFilter = IntentFilter()
|
|
|
+ intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED)
|
|
|
+ registerReceiver(batteryBroadcastReceiver, intentFilter)
|
|
|
+
|
|
|
+ //TTS初始化
|
|
|
+ SpeechUtil.getInstance().init(BaseApplication.appContext)
|
|
|
+ SpeechUtil.getInstance().startSpeechThread()
|
|
|
+
|
|
|
+ //检查版本
|
|
|
+// checkAppVersion()
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ override fun onError(message: String, type: Int) {
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun complete(message: String, type: Int) {
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun start() {
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun networkMonitor(state: NetState) {
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun initSip() {
|
|
|
+
|
|
|
+
|
|
|
+ //=============================================Sip启动服务===================================//
|
|
|
+ SipHelperUtil.getInstance(this).sipStartService(Constants.sip_ip, Constants.sip_id, Constants.sip_password)
|
|
|
+ //=============================================SIP状态回调===================================//
|
|
|
+ SipHelperUtil.getInstance(this).setSipCallBack(this)
|
|
|
+ //=============================================SIP服务监听===================================//
|
|
|
+ SipHelperUtil.getInstance(this).obtainSipInfo()
|
|
|
+
|
|
|
+// SipHelper.getInstance().sipStartService()
|
|
|
+// SipHelper.getInstance().initSip(this, Constants.sip_ip,Constants.sip_id,Constants.sip_password)
|
|
|
+// SipHelper.getInstance().setSipCallBack(this)
|
|
|
+// SipHelper.getInstance().setSipListner(this)
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * sip开始通话 ------------------sip回调操作----------------------
|
|
|
+ */
|
|
|
+ override fun startCall(sipAddress: String?) {
|
|
|
+ SipHelperUtil.getInstance(this).startCall(sipAddress)
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * sip自动接听
|
|
|
+ */
|
|
|
+ override fun autoTalking() {
|
|
|
+ SipHelperUtil.getInstance(this).autoTalking()
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * sip结束通话
|
|
|
+ */
|
|
|
+ override fun endCall() {
|
|
|
+ SipHelperUtil.getInstance(this).endCall()
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onNewVvsipCallEvent(call: VvsipCall?) {
|
|
|
+ SipHelperUtil.getInstance(this).addCallObject(call)
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onRemoveVvsipCallEvent(call: VvsipCall?) {
|
|
|
+ SipHelperUtil.getInstance(this).removeCallObject(call)
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onStatusVvsipCallEvent(call: VvsipCall?) {
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onRegistrationEvent(rid: Int, remote_uri: String?, code: Int, reason: String?) {
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 监听
|
|
|
+ */
|
|
|
+ override fun onClick(p0: View) {
|
|
|
+ when (p0.id) {
|
|
|
+ R.id.customer_list_linlyout -> {
|
|
|
+ push("/watch/contacts")
|
|
|
+
|
|
|
+ }
|
|
|
+ R.id.call_records_linlyout -> {
|
|
|
+// push("/watch/callrecords")
|
|
|
+ var intent = Intent(this, WatchCallRecordsActivity::class.java)
|
|
|
+ intent.putExtra("action", "ALL")
|
|
|
+ intent.putExtra("customer_id", "")
|
|
|
+ startActivity(intent)
|
|
|
+ }
|
|
|
+ R.id.user_nume_linlyout -> {
|
|
|
+ var intent = Intent(this, WatchCallRecordsActivity::class.java)
|
|
|
+ intent.putExtra("action", "UNREAD")
|
|
|
+ intent.putExtra("customer_id", "")
|
|
|
+ startActivity(intent)
|
|
|
+
|
|
|
+ }
|
|
|
+ R.id.state_linlyout -> {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ R.id.other_linyout -> {
|
|
|
+ val intent = Intent(this, WatchUserSettingActivity::class.java)
|
|
|
+ startActivity(intent)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 长按进入
|
|
|
+ */
|
|
|
+ override fun onLongClick(p0: View): Boolean {
|
|
|
+ when (p0.id) {
|
|
|
+ R.id.user_nume_linlyout -> {
|
|
|
+// val intent = Intent(this, WatchUserSettingActivity::class.java)
|
|
|
+// startActivity(intent)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // ====================================== 处理tcp
|
|
|
+ var calling: Boolean = false
|
|
|
+
|
|
|
+ @Subscribe(threadMode = ThreadMode.MAIN)
|
|
|
+ fun onMoonEvent(messageEvent: MessageEvent) {
|
|
|
+// Log.e(TAG,""+messageEvent.tag)
|
|
|
+// var tcpModels = messageEvent.getMessage() as TcpModel
|
|
|
+// Log.e(TAG,""+tcpModels.getAction())
|
|
|
+ if (messageEvent.tag == 14) {
|
|
|
+ //唤醒屏幕并解锁屏幕
|
|
|
+ Util().wakeUpAndUnlock(this)
|
|
|
+
|
|
|
+ } else if (messageEvent.tag == Constants.EVENT_TCP_APP_UPDATE) {
|
|
|
+ //更新APP
|
|
|
+ checkAppVersion()
|
|
|
+ } else if (messageEvent.tag == Constants.EVENT_SIP_REGISTER_STATUS) {
|
|
|
+ var message = messageEvent.getMessage() as String
|
|
|
+ Log.e(TAG, "收到sip註冊消息 " + message)
|
|
|
+ runOnUiThread {
|
|
|
+ if (message.equals(SipHelperUtil.REGISTERING)) {
|
|
|
+ sip_state_tv.setBackgroundColor(Color.parseColor("#FFFF00"))
|
|
|
+ } else if (message.equals(SipHelperUtil.REGISTERFAIL)) {
|
|
|
+ sip_state_tv.setBackgroundColor(Color.parseColor("#FF0000"))
|
|
|
+ } else if (message.equals(SipHelperUtil.REGISTERCOM)) {
|
|
|
+ sip_state_tv.setBackgroundColor(Color.parseColor("#00FFFF"))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (messageEvent.tag == Constants.EVENT_INTERNETPING) {
|
|
|
+ SipHelperUtil.getInstance(this).obtainSipInfo()
|
|
|
+
|
|
|
+ } else if (messageEvent.tag == Constants.EVENT_UNTREATED_QUANTITY) {
|
|
|
+ var message = messageEvent.getMessage() as ArrayList<InteractionVO>
|
|
|
+ list_item_img_icon_num.text = "" + message.size
|
|
|
+
|
|
|
+ } else if (messageEvent.tag == Constants.EVENT_WIFI_RSSI) {
|
|
|
+ var message = messageEvent.getMessage() as Int
|
|
|
+ if (10 < message && message < 20) {
|
|
|
+ electric_quantity_tv.text = "" + message
|
|
|
+ battery_warning_tv.setTextColor(Color.parseColor("#FF3030"))
|
|
|
+ battery_warning_tv.visibility = View.VISIBLE
|
|
|
+ battery_warning_tv.text = "低电量,请注意充电"
|
|
|
+
|
|
|
+ } else if (10 > message) {
|
|
|
+ electric_quantity_tv.text = "" + message
|
|
|
+ battery_warning_tv.setTextColor(Color.parseColor("#8B2323"))
|
|
|
+ battery_warning_tv.visibility = View.VISIBLE
|
|
|
+ battery_warning_tv.text = "电量过低,请充电"
|
|
|
+ } else {
|
|
|
+ battery_warning_tv.visibility = View.GONE
|
|
|
+ electric_quantity_tv.text = "" + message
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ } else if (messageEvent.tag == 0) {
|
|
|
+ //唤醒屏幕并解锁屏幕
|
|
|
+ Util().wakeUpAndUnlock(this)
|
|
|
+
|
|
|
+ var tcpModel = messageEvent.getMessage() as TcpModel
|
|
|
+ var responseTcpModel: TcpModel
|
|
|
+ Log.e(TAG, "" + tcpModel.getType() + " " + tcpModel.getAction())
|
|
|
+ when (tcpModel.getType()) {
|
|
|
+ TcpType.CALLBACK -> if (tcpModel.getAction() === TcpAction.CallbackAction.SUCCESS) {
|
|
|
+ //todo: 刷新呼叫记录列表
|
|
|
+
|
|
|
+ } else if (tcpModel.getAction() === TcpAction.CallbackAction.FAILED) {
|
|
|
+ //呼叫失败
|
|
|
+ }
|
|
|
+ TcpType.VOICE -> if (tcpModel.getAction() === TcpAction.VoiceAction.CALL) { //语音呼入
|
|
|
+ val interactionVO = Gson().fromJson<InteractionVO>(tcpModel.getData().toString(), InteractionVO::class.java)
|
|
|
+ //判断当前是否通话
|
|
|
+ // 通话中
|
|
|
+ if (calling) {
|
|
|
+ responseTcpModel = VoiceUtil.voiceCalling(tcpModel.getToId(), tcpModel.getFromId(), interactionVO.getId())
|
|
|
+ //给服务器发送正在通话中 tcp
|
|
|
+ TcpClient.getInstance().sendMsg(responseTcpModel.toJson())
|
|
|
+ } else {
|
|
|
+ Log.e(TAG, "启动接听界面")
|
|
|
+ responseTcpModel = VoiceUtil.voiceSuccess(tcpModel.getToId(), tcpModel.getFromId(), interactionVO.getId())
|
|
|
+ TcpClient.getInstance().sendMsg(responseTcpModel.toJson())
|
|
|
+
|
|
|
+ //界面呈现
|
|
|
+ AppTool.Time.delay(300) {
|
|
|
+ //rtc
|
|
|
+// var intent = Intent()
|
|
|
+// intent.setClass(this, RTCVoipAudioRingingActivity::class.java)
|
|
|
+// intent.putExtra("targetId", interactionVO.fromSipId)
|
|
|
+// intent.putExtra("TcpModel", tcpModel)
|
|
|
+// startActivity(intent)
|
|
|
+
|
|
|
+ //sip
|
|
|
+// var intent = Intent()
|
|
|
+// intent.setClass(this, SipVoipAudioRingingActivity::class.java)
|
|
|
+// intent.putExtra("targetId", interactionVO.fromSipId)
|
|
|
+// intent.putExtra("TcpModel", tcpModel)
|
|
|
+// startActivity(intent)
|
|
|
+
|
|
|
+
|
|
|
+ //webRTC
|
|
|
+ var intent = Intent()
|
|
|
+ intent.setClass(this, WebRTCVoipAudioRingingActivity::class.java)
|
|
|
+ intent.putExtra("targetId", interactionVO.fromSipId)
|
|
|
+ intent.putExtra("TcpModel", tcpModel)
|
|
|
+ startActivity(intent)
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (tcpModel.getAction() === TcpAction.VoiceAction.HANDOFF) { //对方挂断,不论我方呼出或呼入
|
|
|
+ //todo: 清掉呼出的TcpModel,通话中界面更新 --- 显示对方已挂断并停留3秒,结束至正常界面;更新左侧
|
|
|
+
|
|
|
+ } else if (tcpModel.getAction() === TcpAction.VoiceAction.SUCCESS) {
|
|
|
+ //todo 更新呼出的TcpModel,data放置vo
|
|
|
+ }
|
|
|
+ TcpType.VIDEO -> {
|
|
|
+ }
|
|
|
+ TcpType.IM -> if (tcpModel.getAction() === TcpAction.IMAction.MSG) {
|
|
|
+ //todo: 使用通话中界面,显示有语音留言,停留3秒,结束至正常界面
|
|
|
+
|
|
|
+ }
|
|
|
+ TcpType.EVENT -> if (tcpModel.getAction() === TcpAction.EventAction.KEY_CLICK) { //有新事件过来
|
|
|
+ //todo: 服务端通过data给出具体的事件名称放置data。使用通话中界面,显示事件名称,停留3秒,结束至正常界面
|
|
|
+ Log.e(TAG, "收到事件tcp")
|
|
|
+ }
|
|
|
+ TcpType.SOS -> if (tcpModel.getAction() === TcpAction.SOSAction.CALL) {
|
|
|
+ Log.e(TAG, "" + tcpModel.getType() + " " + tcpModel.getAction())
|
|
|
+
|
|
|
+ var intent = Intent()
|
|
|
+ intent.setClass(this, SOSEmergencyCallActivity::class.java)
|
|
|
+ intent.putExtra("TcpModel", tcpModel)
|
|
|
+ startActivity(intent)
|
|
|
+ }
|
|
|
+ TcpType.DEVICE -> if (tcpModel.getAction() === TcpAction.DeviceAction.APP_UPDATE) {//更新APP
|
|
|
+ checkAppVersion()
|
|
|
+ } else if (tcpModel.getAction() === TcpAction.DeviceAction.RESTART) { //刷新数据
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //WiFi监听
|
|
|
+ inner class WifiReceiver : BroadcastReceiver() {
|
|
|
+ override fun onReceive(context: Context, intent: Intent) {
|
|
|
+ if (intent.action == WifiManager.RSSI_CHANGED_ACTION) {
|
|
|
+ if (wifiManager != null && netType == NetHelper.NETWORK_WIFI) {
|
|
|
+ val wifiInfo = wifiManager.getConnectionInfo()
|
|
|
+ val wifi = wifiInfo.getRssi();//获取wifi信号强度
|
|
|
+// Log.e(TAG,"wifi 信号强度"+wifi)
|
|
|
+
|
|
|
+ if (wifi > -50 && wifi < 0) {//最强
|
|
|
+// Log.e(TAG, "wzlll 最强")
|
|
|
+ wifi_rssi_tv.text = "较强"
|
|
|
+ } else if (wifi > -70 && wifi < -50) {//较强
|
|
|
+// Log.e(TAG, "wzlll 较强")
|
|
|
+ wifi_rssi_tv.text = "一般"
|
|
|
+ } else if (wifi > -80 && wifi < -70) {//较弱
|
|
|
+// Log.e(TAG, "wzlll 较弱")
|
|
|
+ wifi_rssi_tv.text = "微弱"
|
|
|
+ } else if (wifi > -100 && wifi < -80) {//微弱
|
|
|
+// Log.e(TAG, "wzlll 微弱")
|
|
|
+ wifi_rssi_tv.setTextColor(Color.parseColor("#FF3030"))
|
|
|
+ wifi_rssi_tv.text = "wifi信号较弱,请注意"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|