|
@@ -1,11 +1,19 @@
|
|
|
package com.wdkl.app.ncs.callingbed.activity
|
|
|
|
|
|
+//import com.wdkl.app.ncs.callingbed.sip.SipHelper
|
|
|
+//import com.wdkl.app.ncs.callingbed.sip.SipStatus
|
|
|
+//import com.vvsip.ansip.IVvsipServiceListener
|
|
|
+//import com.vvsip.ansip.VvsipCall
|
|
|
+//import com.wdkl.app.ncs.callingbed.fragment.SkyCallFragment
|
|
|
import android.content.BroadcastReceiver
|
|
|
import android.content.Context
|
|
|
import android.content.Intent
|
|
|
import android.content.IntentFilter
|
|
|
import android.net.ConnectivityManager
|
|
|
-import android.os.*
|
|
|
+import android.os.Build
|
|
|
+import android.os.Bundle
|
|
|
+import android.os.Handler
|
|
|
+import android.os.Message
|
|
|
import android.support.v4.app.Fragment
|
|
|
import android.support.v7.widget.LinearLayoutManager
|
|
|
import android.text.TextUtils
|
|
@@ -16,20 +24,18 @@ import com.enation.javashop.android.jrouter.external.annotation.Router
|
|
|
import com.enation.javashop.net.engine.model.NetState
|
|
|
import com.google.gson.Gson
|
|
|
import com.wdkl.app.ncs.callingbed.BuildConfig
|
|
|
-//import com.wdkl.app.ncs.callingbed.sip.SipHelper
|
|
|
-//import com.wdkl.app.ncs.callingbed.sip.SipStatus
|
|
|
-//import com.vvsip.ansip.IVvsipServiceListener
|
|
|
-//import com.vvsip.ansip.VvsipCall
|
|
|
import com.wdkl.app.ncs.callingbed.R
|
|
|
import com.wdkl.app.ncs.callingbed.adapter.NurseConfigAdpter
|
|
|
+import com.wdkl.app.ncs.callingbed.agreement.CallingbedAgreement
|
|
|
import com.wdkl.app.ncs.callingbed.databinding.CallingbedMainLayBinding
|
|
|
-import com.wdkl.app.ncs.callingbed.fragment.*
|
|
|
+import com.wdkl.app.ncs.callingbed.fragment.CostFragment
|
|
|
+import com.wdkl.app.ncs.callingbed.fragment.MainFragment
|
|
|
+import com.wdkl.app.ncs.callingbed.fragment.QrCodeFragment
|
|
|
+import com.wdkl.app.ncs.callingbed.fragment.SipCallFragment
|
|
|
import com.wdkl.app.ncs.callingbed.helper.*
|
|
|
import com.wdkl.app.ncs.callingbed.launch.CallingbedLaunch
|
|
|
import com.wdkl.app.ncs.callingbed.settings.SettingConfig
|
|
|
-import com.wdkl.app.ncs.callingbed.agreement.CallingbedAgreement
|
|
|
-//import com.wdkl.app.ncs.callingbed.fragment.SkyCallFragment
|
|
|
-import com.wdkl.app.ncs.callingbed.helper.ScreenManagerUtil
|
|
|
+import com.wdkl.app.ncs.callingbed.sip.WdklSipService
|
|
|
import com.wdkl.ncs.android.lib.base.BaseActivity
|
|
|
import com.wdkl.ncs.android.lib.base.BaseApplication
|
|
|
import com.wdkl.ncs.android.lib.utils.AppTool
|
|
@@ -37,7 +43,6 @@ import com.wdkl.ncs.android.lib.utils.TimeHandle
|
|
|
import com.wdkl.ncs.android.lib.utils.push
|
|
|
import com.wdkl.ncs.android.lib.utils.showMessage
|
|
|
import com.wdkl.ncs.android.lib.vo.filter
|
|
|
-import com.wdkl.ncs.android.lib.widget.MenuDialog
|
|
|
import com.wdkl.ncs.android.middleware.common.Constant
|
|
|
import com.wdkl.ncs.android.middleware.common.MessageEvent
|
|
|
import com.wdkl.ncs.android.middleware.common.SipStatus
|
|
@@ -49,11 +54,9 @@ import com.wdkl.ncs.android.middleware.model.dos.PartSettingDO
|
|
|
import com.wdkl.ncs.android.middleware.model.dto.NurseConfigDto
|
|
|
import com.wdkl.ncs.android.middleware.model.dto.TcpSeverDTO
|
|
|
import com.wdkl.ncs.android.middleware.model.vo.BedDeviceInfoVO
|
|
|
-import com.wdkl.ncs.android.middleware.model.vo.CustomerInfoVO
|
|
|
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.OtherUtil
|
|
|
-import com.wdkl.ncs.android.middleware.tcp.channel.VideoUtil
|
|
|
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
|
|
@@ -63,11 +66,13 @@ import kotlinx.android.synthetic.main.view_title_layout.*
|
|
|
import org.greenrobot.eventbus.EventBus
|
|
|
import org.greenrobot.eventbus.Subscribe
|
|
|
import org.greenrobot.eventbus.ThreadMode
|
|
|
+import org.linphone.core.AccountCreator
|
|
|
+import org.linphone.core.RegistrationState
|
|
|
+import org.linphone.core.TransportType
|
|
|
import serialporttest.utils.SerialPortUtil
|
|
|
import java.io.DataOutputStream
|
|
|
import java.io.IOException
|
|
|
import java.io.PrintWriter
|
|
|
-import java.lang.Process
|
|
|
import java.lang.ref.WeakReference
|
|
|
|
|
|
|
|
@@ -102,6 +107,7 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
|
|
|
|
//通话界面fragment
|
|
|
private var skyCallFragment: Fragment? = null
|
|
|
+ private var mAccountCreator: AccountCreator? = null
|
|
|
|
|
|
//网络异常计数
|
|
|
private var netErrCount : Int = 0
|
|
@@ -123,7 +129,7 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
|
//呼叫护士
|
|
|
//private val callNurseFragment = "call_nurse_fragment"
|
|
|
|
|
|
- private val uninstallApk = false
|
|
|
+ private val uninstallApk = true
|
|
|
|
|
|
companion object {
|
|
|
private const val TIME_WHAT = 1000
|
|
@@ -141,6 +147,9 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
|
//开始ping网络,30秒ping一次
|
|
|
//NetHelper.startNetCheck()
|
|
|
|
|
|
+ //启动sip服务
|
|
|
+ startService(Intent().setClass(this, WdklSipService::class.java))
|
|
|
+
|
|
|
//获取mac地址
|
|
|
Constant.LOCAL_MAC = NetHelper.getInstance().macAddress
|
|
|
|
|
@@ -213,7 +222,7 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
|
|
|
|
|
|
|
private fun RunAsRoot(cmds: ArrayList<String>) {
|
|
|
- val p = Runtime.getRuntime().exec("su")
|
|
|
+ val p = Runtime.getRuntime().exec("sh")
|
|
|
val os = DataOutputStream(p.outputStream)
|
|
|
for (tmpCmd in cmds) {
|
|
|
os.writeBytes(
|
|
@@ -400,6 +409,21 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
|
|
|
|
presenter.loadPartSettings(Constant.PART_ID)
|
|
|
|
|
|
+ //配置sip账户
|
|
|
+ if (WdklSipService.getCore() != null) {
|
|
|
+ mAccountCreator = WdklSipService.getCore().createAccountCreator(null)
|
|
|
+ // 以下三项必须
|
|
|
+ mAccountCreator!!.setDomain(Constant.TCP_SERVER_URL)
|
|
|
+ mAccountCreator!!.setUsername("3309")
|
|
|
+ mAccountCreator!!.setPassword("3309")
|
|
|
+ //默认使用udp
|
|
|
+ mAccountCreator!!.transport = TransportType.Udp
|
|
|
+
|
|
|
+ // 这里会自动创建代理配置、认证信息到 SIP核心
|
|
|
+ val cfg = mAccountCreator!!.createProxyConfig()
|
|
|
+ // 确保新创建的是最新
|
|
|
+ WdklSipService.getCore().defaultProxyConfig = cfg
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
override fun setPartSettings(partSetting: PartSettingDO) {
|
|
@@ -916,10 +940,16 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
|
|
|
|
//Sip注册状态
|
|
|
Constant.EVENT_SIP_REGISTER_STATUS -> {
|
|
|
- if (messageEvent.message is String) run {
|
|
|
+ /*if (messageEvent.message is String) run {
|
|
|
val status = messageEvent.message as String
|
|
|
Log.d("sip", "sip regist status: " + status)
|
|
|
updateStatus(status)
|
|
|
+ }*/
|
|
|
+
|
|
|
+ if (messageEvent.message is RegistrationState) {
|
|
|
+ val state = messageEvent.message as RegistrationState
|
|
|
+ Log.d("callingbed", "sip register state: $state")
|
|
|
+ updateSipState(state)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1060,6 +1090,32 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private fun updateSipState(state: RegistrationState) {
|
|
|
+ runOnUiThread {
|
|
|
+ when (state) {
|
|
|
+ RegistrationState.Ok -> {
|
|
|
+ //连接完成
|
|
|
+ view_title_layout_tv_point.setBackgroundResource(R.color.green)
|
|
|
+ }
|
|
|
+
|
|
|
+ RegistrationState.Failed -> {
|
|
|
+ //连接错误
|
|
|
+ view_title_layout_tv_point.setBackgroundResource(R.color.red_color)
|
|
|
+ }
|
|
|
+
|
|
|
+ RegistrationState.Progress -> {
|
|
|
+ //正在连接
|
|
|
+ view_title_layout_tv_point.setBackgroundResource(R.color.yellow_color)
|
|
|
+ }
|
|
|
+
|
|
|
+ RegistrationState.None, RegistrationState.Cleared -> {
|
|
|
+ //默认状态,断开连接
|
|
|
+ view_title_layout_tv_point.setBackgroundResource(R.color.register_text_color)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private fun updateNetState() {
|
|
|
if (NetHelper.getInstance().networkType == ConnectivityManager.TYPE_WIFI) {
|
|
|
view_title_layout_iv_wifi.visibility = View.VISIBLE
|
|
@@ -1112,16 +1168,24 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
|
|
|
private fun updateTcpState() {
|
|
|
if (Constant.TCP_CONNECTED) {
|
|
|
view_title_layout_iv_tcp.setImageResource(R.mipmap.ic_tcp_success)
|
|
|
- view_title_layout_tv_point.setBackgroundResource(R.color.green)
|
|
|
+ //view_title_layout_tv_point.setBackgroundResource(R.color.green)
|
|
|
} else {
|
|
|
view_title_layout_iv_tcp.setImageResource(R.mipmap.ic_tcp_fail)
|
|
|
- view_title_layout_tv_point.setBackgroundResource(R.color.red_color)
|
|
|
+ //view_title_layout_tv_point.setBackgroundResource(R.color.red_color)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
inner class TimeReceiver: BroadcastReceiver() {
|
|
|
override fun onReceive(context: Context, intent: Intent) {
|
|
|
if (intent.action == Intent.ACTION_TIME_TICK) {
|
|
|
+ //更新sip注册状态
|
|
|
+ if (WdklSipService.getCore() != null) {
|
|
|
+ val proxyConfig = WdklSipService.getCore().defaultProxyConfig
|
|
|
+ if (proxyConfig != null) {
|
|
|
+ updateSipState(proxyConfig.state)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
updateNetState()
|
|
|
if (initialized) {
|
|
|
updateSettings(false)
|