wangjk 4 éve
szülő
commit
11de08cfea

+ 2 - 1
app/src/main/AndroidManifest.xml

@@ -47,8 +47,9 @@
 
 <!--        <activity android:name="com.wdkl.ncs.android.component.welcome.activity.WelcomeActivity"-->
 <!--            >-->
-        <activity android:name="com.wdkl.ncs.android.component.home.activity.WatchRegisterActivity">
+<!--        <activity android:name="com.wdkl.ncs.android.component.home.activity.WatchRegisterActivity">-->
 <!--        <activity android:name="com.starrtc.demo.demo.SplashActivity">-->
+        <activity android:name="com.wdkl.ncs.android.component.home.activity.WatchHome2Activity">-->
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
 

+ 7 - 0
home/src/main/code/com/wdkl/ncs/android/component/home/activity/EventActivity.kt

@@ -18,6 +18,8 @@ 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.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.model.vo.InteractionVO
 import com.wdkl.ncs.android.middleware.tcp.TcpClient
 import com.wdkl.ncs.android.middleware.tcp.channel.EventUtil
@@ -29,6 +31,7 @@ import kotlinx.android.synthetic.main.watch_activity_event.*
 class EventActivity : BaseActivity<WatchHomeActivityPresenter, WatchActivityEventBinding>(), WatchHomeActivityContract.View, View.OnClickListener {
 
 
+
     var TAG = EventActivity::class.java.simpleName
 
     var tcpModel = TcpModel()
@@ -196,7 +199,11 @@ class EventActivity : BaseActivity<WatchHomeActivityPresenter, WatchActivityEven
 
     override fun networkMonitor(state: NetState) {
     }
+    override fun showData(data: DeviceDO) {
+    }
 
+    override fun setTcpServerHost(tcpSeverDTO: TcpSeverDTO) {
+    }
     override fun onClick(p0: View?) {
         if (interactionVO!!.actionType == TcpType.EVENT.name) {
             if (!Constants.ids.equals("")) {

+ 7 - 0
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchEventDetailActivity.kt

@@ -30,6 +30,8 @@ import com.wdkl.ncs.android.middleware.api.UrlManager
 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.model.vo.InteractionVO
 import com.wdkl.ncs.android.middleware.tcp.TcpClient
 import com.wdkl.ncs.android.middleware.tcp.channel.DeviceChannel
@@ -48,6 +50,7 @@ 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)
@@ -234,7 +237,11 @@ class WatchEventDetailActivity : BaseActivity<WatchHomeActivityPresenter, WatchA
             }
         }
     }
+    override fun showData(data: DeviceDO) {
+    }
 
+    override fun setTcpServerHost(tcpSeverDTO: TcpSeverDTO) {
+    }
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun onMoonEvent(messageEvent: MessageEvent) {

+ 656 - 0
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchHome2Activity.kt

@@ -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信号较弱,请注意"
+                    }
+                }
+            }
+        }
+    }
+}

+ 8 - 0
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchHomeActivity.kt

@@ -42,6 +42,8 @@ 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
 
@@ -65,6 +67,7 @@ class WatchHomeActivity : BaseActivity<WatchHomeActivityPresenter, WatchActivity
         SipCallBack , IVvsipServiceListener, IUserState {
 
 
+
     var TAG = WatchHomeActivity::class.java.getSimpleName()
 
     //监听网络变化
@@ -219,6 +222,11 @@ class WatchHomeActivity : BaseActivity<WatchHomeActivityPresenter, WatchActivity
             }
         }
     }
+    override fun showData(data: DeviceDO) {
+    }
+
+    override fun setTcpServerHost(tcpSeverDTO: TcpSeverDTO) {
+    }
 
     fun checkAppVersion() {
         Constants.APP_PATH = ""

+ 48 - 38
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WebRTCVoipAudioActivity.kt

@@ -7,8 +7,10 @@ import android.os.Handler
 import android.os.SystemClock
 import android.support.v7.app.AlertDialog
 import android.util.Log
+import android.view.KeyEvent
 import android.view.View
 import android.view.WindowManager
+import android.widget.Toast
 import com.google.gson.Gson
 import com.vvsip.ansip.IVvsipServiceListener
 import com.wdkl.core.voip.VoipEvent
@@ -350,45 +352,53 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener {
     }
 
 
-    override fun onBackPressed() {
-        AlertDialog.Builder(this).setCancelable(true)
-                .setTitle("是否挂断?")
-                .setNegativeButton("取消") { arg0, arg1
-                    -> }.setPositiveButton("确定"
-                ) { arg0, arg1 ->
-                    var interactionVO: InteractionVO? = null
-                    if (tcpModel.data.javaClass.name == String::class.java.name) {
-                        interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
-                    } else {
-                        interactionVO = tcpModel.data as InteractionVO
-                    }
-                    Log.e(TAG, "tcpModel" + interactionVO!!.id!!)
-                    Log.e(TAG, "tcpModel" + tcpModel.toJson())
-                    //todo 给服务器发送挂断 tcp
-                    if (interactionVO != null) {
-                        if (tcpModel.type == TcpType.VOICE) {
-                            if (tcpModel.action === TcpAction.VoiceAction.SUCCESS) {
-                                val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel.toId, interactionVO.id)
-                                TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
-                            } else if (tcpModel.action === TcpAction.VoiceAction.CALL) {
-                                val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel.fromId, interactionVO.id)
-                                TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
-                            }
-//                      SipHelperUtil.getInstance(this).getmSipCallBack().endCall()
-
-                            //webrtc
-                            val session = gEngineKit?.getCurrentSession()
-                            if (session != null) {
-                                SkyEngineKit.Instance().endCall()
-                            }
-
-                            finish()
-
-                        }
-
-                    }
+//    override fun onBackPressed() {
+//        AlertDialog.Builder(this).setCancelable(true)
+//                .setTitle("是否挂断?")
+//                .setNegativeButton("取消") { arg0, arg1
+//                    -> }.setPositiveButton("确定"
+//                ) { arg0, arg1 ->
+//                    var interactionVO: InteractionVO? = null
+//                    if (tcpModel.data.javaClass.name == String::class.java.name) {
+//                        interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
+//                    } else {
+//                        interactionVO = tcpModel.data as InteractionVO
+//                    }
+//                    Log.e(TAG, "tcpModel" + interactionVO!!.id!!)
+//                    Log.e(TAG, "tcpModel" + tcpModel.toJson())
+//                    //todo 给服务器发送挂断 tcp
+//                    if (interactionVO != null) {
+//                        if (tcpModel.type == TcpType.VOICE) {
+//                            if (tcpModel.action === TcpAction.VoiceAction.SUCCESS) {
+//                                val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel.toId, interactionVO.id)
+//                                TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
+//                            } else if (tcpModel.action === TcpAction.VoiceAction.CALL) {
+//                                val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel.fromId, interactionVO.id)
+//                                TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
+//                            }
+////                      SipHelperUtil.getInstance(this).getmSipCallBack().endCall()
+//
+//                            //webrtc
+//                            val session = gEngineKit?.getCurrentSession()
+//                            if (session != null) {
+//                                SkyEngineKit.Instance().endCall()
+//                            }
+//
+//                            finish()
+//
+//                        }
+//
+//                    }
+//
+//                }.show()
+//    }
 
-                }.show()
+    override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
+        if (keyCode == KeyEvent.KEYCODE_BACK) {
+//            Toast.makeText(this, "按下了back键   onKeyDown()", Toast.LENGTH_SHORT).show()
+            return false
+        }
+        return super.onKeyDown(keyCode, event)
     }
 
     override fun onDestroy() {

+ 0 - 3
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WebRTCVoipAudioRingingActivity.kt

@@ -187,9 +187,6 @@ class WebRTCVoipAudioRingingActivity : Activity(), View.OnClickListener {
         }
     }
 
-
-
-
     override fun onDestroy() {
         super.onDestroy()
         isAnswerOrHangUp = false

+ 4 - 2
home/src/main/code/com/wdkl/ncs/android/component/home/di/HomeComponent.kt

@@ -22,16 +22,18 @@ interface HomeComponent {
     fun inject(activity: CategoryFragment)
 
     //手表
+    fun inject(activity: WatchRegisterActivity)
+
     fun inject(activity: WatchHomeActivity)
 
+    fun inject(activity: WatchHome2Activity)
+
     fun inject(activity: AppUpdateActivity)
 
     fun inject(activity: WatchContactsActivity)
 
     fun inject(activity: WatchCallRecordsActivity)
 
-    fun inject(activity: WatchRegisterActivity)
-
     fun inject(activity: EventActivity)
 
     fun inject(activity: WatchEventDetailActivity)

+ 261 - 0
home/src/main/res/layout/watch_activity_home2.xml

@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout>
+
+    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+      <include
+          android:id="@+id/watch_activity_register_layout"
+          layout="@layout/watch_activity_register"
+          ></include>>
+
+        <LinearLayout
+            android:id="@+id/watch_activity_home_linyout"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical"
+            android:visibility="gone">
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:layout_weight="1">
+
+                <LinearLayout
+                    android:id="@+id/customer_list_linlyout"
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1"
+                    android:background="#00B5DC"
+                    android:gravity="center"
+                    android:orientation="vertical">
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:src="@drawable/gu_ke_lie_biao" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="10px"
+                        android:text="顾客列表"
+                        android:textColor="#ffffff"
+                        android:textSize="16px" />
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/call_records_linlyout"
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1"
+                    android:background="#E56D37"
+                    android:gravity="center"
+                    android:orientation="vertical">
+
+                    <ImageView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:src="@drawable/tong_hu_ji_lu" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="10px"
+                        android:text="通话记录"
+                        android:textColor="#ffffff"
+                        android:textSize="16px" />
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:layout_weight="1"
+                android:orientation="horizontal">
+
+
+                <RelativeLayout
+                    android:id="@+id/user_nume_linlyout"
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1"
+                    android:background="#5CB615"
+                    >
+
+                    <TextView
+                        android:id="@+id/list_item_img_icon_num"
+                        android:layout_width="10dp"
+                        android:layout_height="10dp"
+                        android:layout_alignParentRight="true"
+                        android:background="@drawable/shape_untreated_quantity"
+                        android:gravity="center"
+                        android:textColor="#FF3030"
+                        android:textSize="12sp" />
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:gravity="center"
+                        android:orientation="vertical">
+
+                        <ImageView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:src="@drawable/hu_shi_to_xiang" />
+
+                        <TextView
+                            android:id="@+id/watch_name_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginTop="10px"
+                            android:text="王护士"
+                            android:textColor="#ffffff"
+                            android:textSize="16px" />
+
+                        <TextView
+                            android:id="@+id/watch_role_name_tv"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginTop="10px"
+                            android:text="护士"
+                            android:textColor="#ffffff"
+                            android:textSize="16px" />
+                    </LinearLayout>
+                </RelativeLayout>
+
+                <LinearLayout
+                    android:id="@+id/state_linlyout"
+                    android:layout_width="0dp"
+                    android:layout_height="match_parent"
+                    android:layout_weight="1"
+                    android:gravity="center"
+                    android:orientation="vertical">
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="0dp"
+                        android:layout_weight="1"
+                        android:orientation="horizontal">
+
+                        <LinearLayout
+                            android:layout_width="0dp"
+                            android:layout_height="match_parent"
+                            android:layout_weight="1"
+                            android:background="#EA89C0"
+                            android:gravity="center"
+                            android:orientation="vertical">
+
+                            <ImageView
+                                android:id="@+id/network_state_imagev"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:src="@drawable/wifi_lian_jie" />
+
+                            <TextView
+                                android:id="@+id/wifi_rssi_tv"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="100%"
+                                android:textColor="#ffffff"
+                                android:textSize="16px" />
+                        </LinearLayout>
+
+
+                        <LinearLayout
+                            android:layout_width="0dp"
+                            android:layout_height="match_parent"
+                            android:layout_weight="1"
+                            android:background="#FF9900"
+                            android:gravity="center">
+
+                            <ImageView
+                                android:id="@+id/sip_state_imagev"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:src="@drawable/sip_lian_jie" />
+
+                        </LinearLayout>
+
+
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="0dp"
+                        android:layout_weight="1"
+                        android:orientation="horizontal">
+
+                        <LinearLayout
+                            android:layout_width="0dp"
+                            android:layout_height="match_parent"
+                            android:layout_weight="1"
+                            android:background="#48CFB0"
+                            android:gravity="center"
+                            android:orientation="vertical">
+
+                            <ImageView
+                                android:id="@+id/electric_quantity_imagev"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:src="@drawable/dian_liang" />
+
+                            <TextView
+                                android:id="@+id/electric_quantity_tv"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text="100%"
+                                android:textColor="#ffffff"
+                                android:textSize="16px" />
+
+                            <TextView
+                                android:id="@+id/battery_warning_tv"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:text=""
+                                android:textColor="#ffffff"
+                                android:textSize="16px"
+                                android:visibility="gone" />
+                        </LinearLayout>
+
+
+                        <LinearLayout
+                            android:id="@+id/other_linyout"
+                            android:layout_width="0dp"
+                            android:layout_height="match_parent"
+                            android:layout_weight="1"
+                            android:background="#FFDE00"
+                            android:gravity="center"
+                            android:orientation="vertical">
+
+                            <TextView
+                                android:id="@+id/sip_state_tv"
+                                android:layout_width="8dp"
+                                android:layout_height="8dp"
+                                android:background="#FF0000"
+                                 />
+
+                            <ImageView
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:layout_marginTop="2dp"
+                                android:src="@drawable/geng_duo" />
+
+
+                        </LinearLayout>
+
+                    </LinearLayout>
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+
+        </LinearLayout>
+
+    </RelativeLayout>
+</layout>

+ 12 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/home/WatchHomeActivityContract.kt

@@ -2,13 +2,25 @@ package com.wdkl.ncs.android.middleware.logic.contract.home
 
 import com.wdkl.ncs.android.lib.base.BaseContract
 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.model.vo.WatchContactsVO
 
 interface WatchHomeActivityContract{
     interface View : BaseContract.BaseView{
+        //显示设备信息
+        fun showData(data : DeviceDO)
+        //显示tcp通讯地址
+        fun setTcpServerHost(tcpSeverDTO: TcpSeverDTO)
+        //版本号信息
         fun render(appInfo: AppVersionDO)
     }
     interface Presenter : BaseContract.BasePresenter{
+        //获取设备信息
+        fun loadData(ethMac:String)
+        //获取tcp服务器地址
+        fun loadTcpServerHost()
+        //获取版本信息
         fun getAppVersion(partId: Int, deviceType: Int)
     }
 }

+ 60 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/home/WatchHomeActivityPresenter.kt

@@ -11,10 +11,13 @@ import com.wdkl.ncs.android.lib.utils.ConnectionObserver
 import com.wdkl.ncs.android.lib.utils.getEventCenter
 import com.wdkl.ncs.android.lib.utils.getJsonString
 import com.wdkl.ncs.android.lib.vo.NetStateEvent
+import com.wdkl.ncs.android.middleware.api.WatchDeviceInfoAndTCPMailingAddressApi
 import com.wdkl.ncs.android.middleware.api.WatchManageDeviceApi
 import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
 import com.wdkl.ncs.android.middleware.logic.contract.home.WatchHomeActivityContract
 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 io.reactivex.disposables.Disposable
 import javax.inject.Inject
 
@@ -22,9 +25,16 @@ class WatchHomeActivityPresenter @Inject constructor(): RxPresenter<WatchHomeAct
 
 
 
+
+
+    /**
+     *获取当前设备数据api
+     */
     @Inject
-    protected lateinit var watchManageDeviceApi: WatchManageDeviceApi
+    protected lateinit var registerDeviceApi: WatchDeviceInfoAndTCPMailingAddressApi
 
+    @Inject
+    protected lateinit var watchManageDeviceApi: WatchManageDeviceApi
 
 
     override fun bindDagger() {
@@ -39,7 +49,25 @@ class WatchHomeActivityPresenter @Inject constructor(): RxPresenter<WatchHomeAct
 
         override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
             providerView().complete()
-            providerView().render(result as AppVersionDO)
+            when (result) {
+                is DeviceDO -> {
+                    providerView().complete()
+                    providerView().showData(result as DeviceDO)
+                }
+
+                is TcpSeverDTO -> {
+                    //tcp服务器地址
+                    providerView().complete("")
+                    providerView().setTcpServerHost(result)
+                }
+                 is AppVersionDO -> {
+                     //版本信息
+                     providerView().complete("")
+                     providerView().render(result as AppVersionDO)
+                 }
+
+            }
+
         }
 
         override fun onErrorWithConnection(error: ExceptionHandle.ResponeThrowable, connectionQuality: ConnectionQuality) {
@@ -56,6 +84,36 @@ class WatchHomeActivityPresenter @Inject constructor(): RxPresenter<WatchHomeAct
     }
 
 
+    /**
+     *获取当前设备数据
+     */
+    override fun loadData(ethMac:String) {
+
+        registerDeviceApi.getDeviceMessage(ethMac).map {
+            var deviceDO = DeviceDO()
+
+            var gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+            deviceDO = gson.fromJson(it.getJsonString(), DeviceDO::class.java)
+            return@map deviceDO
+        }
+                .compose(ThreadFromUtils.defaultSchedulers())
+                .subscribe(observer)
+
+    }
+
+    override fun loadTcpServerHost() {
+        registerDeviceApi.getTcpServerHost()
+                .map {
+                    val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+                    val tcpServer = gson.fromJson(it.getJsonString(), TcpSeverDTO::class.java)
+
+                    return@map tcpServer
+                }
+                .compose(ThreadFromUtils.defaultSchedulers())
+                .subscribe(observer)
+    }
+
+
     override fun getAppVersion(partId: Int, deviceType: Int) {
 
         watchManageDeviceApi.getAppVersion(partId, deviceType)