|
@@ -6,6 +6,7 @@ import android.net.ConnectivityManager
|
|
|
import android.os.Build
|
|
|
import android.os.Bundle
|
|
|
import android.os.Handler
|
|
|
+import android.os.Looper
|
|
|
import android.support.v4.app.Fragment
|
|
|
import android.text.TextUtils
|
|
|
import android.util.Log
|
|
@@ -33,6 +34,8 @@ import com.wdkl.ncs.android.middleware.common.MessageEvent
|
|
|
import com.wdkl.ncs.android.middleware.common.SipStatus
|
|
|
import com.wdkl.ncs.android.middleware.logic.contract.callingdoor.CallingdoorActivityContract
|
|
|
import com.wdkl.ncs.android.middleware.logic.presenter.callingdoor.CallingdoorActivityPresenter
|
|
|
+import com.wdkl.ncs.android.middleware.model.ServerInfo
|
|
|
+import com.wdkl.ncs.android.middleware.model.ThirdServerInfo
|
|
|
import com.wdkl.ncs.android.middleware.model.dos.AppVersionDO
|
|
|
import com.wdkl.ncs.android.middleware.model.dos.PartSettingDO
|
|
|
import com.wdkl.ncs.android.middleware.model.dto.TcpSeverDTO
|
|
@@ -45,7 +48,10 @@ 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.udp.ServerInfoUtil
|
|
|
import com.wdkl.ncs.android.middleware.utils.AppUtil
|
|
|
+import com.wdkl.ncs.android.middleware.utils.CommonUtils
|
|
|
+import com.wdkl.ncs.janus.util.JanusConstant
|
|
|
import kotlinx.android.synthetic.main.callingdoor_main_lay.*
|
|
|
import kotlinx.android.synthetic.main.callingdoor_main_lay.app_version
|
|
|
import kotlinx.android.synthetic.main.callingdoor_main_lay.room_action_call
|
|
@@ -57,6 +63,8 @@ import kotlinx.android.synthetic.main.callingdoor_main_lay.tv_room_name
|
|
|
import kotlinx.android.synthetic.main.callingdoor_main_lay_rk3288.*
|
|
|
import kotlinx.android.synthetic.main.view_bed_name.*
|
|
|
import kotlinx.android.synthetic.main.view_title_layout.*
|
|
|
+import okhttp3.OkHttpClient
|
|
|
+import okhttp3.Request
|
|
|
import org.greenrobot.eventbus.EventBus
|
|
|
import org.greenrobot.eventbus.Subscribe
|
|
|
import org.greenrobot.eventbus.ThreadMode
|
|
@@ -64,6 +72,7 @@ import serialporttest.utils.SerialPortUtil
|
|
|
import java.io.DataOutputStream
|
|
|
import java.io.IOException
|
|
|
import java.io.PrintWriter
|
|
|
+import java.util.concurrent.TimeUnit
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -101,6 +110,11 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
|
|
|
|
|
|
private val uninstallApk = false
|
|
|
|
|
|
+ private var serverSuccess = false
|
|
|
+ private var cancelRestart = false
|
|
|
+
|
|
|
+ private val handler by lazy { Handler(Looper.getMainLooper()) }
|
|
|
+
|
|
|
//网络异常计数
|
|
|
private var netErrCount : Int = 0
|
|
|
|
|
@@ -133,7 +147,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
|
|
|
Constant.DEVICE_REGISTER_ID = Constant.LOCAL_MAC
|
|
|
}
|
|
|
|
|
|
- presenter.loadTcpServerHost()
|
|
|
+ //presenter.loadTcpServerHost()
|
|
|
//注册广播
|
|
|
regReceiver()
|
|
|
RecordHelper.getInstance().init()
|
|
@@ -187,6 +201,8 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
|
|
|
}
|
|
|
}.start()
|
|
|
}
|
|
|
+
|
|
|
+ checkServer()
|
|
|
}
|
|
|
|
|
|
private fun checkAppExist() : Boolean {
|
|
@@ -218,6 +234,96 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private fun checkServer() {
|
|
|
+ Thread {
|
|
|
+ while (!serverSuccess) {
|
|
|
+ val okHttpClient = OkHttpClient().newBuilder()
|
|
|
+ .connectTimeout(15 * 1000L, TimeUnit.MILLISECONDS)
|
|
|
+ .readTimeout(15 * 1000L, TimeUnit.MILLISECONDS)
|
|
|
+ .writeTimeout(15 * 1000L, TimeUnit.MILLISECONDS)
|
|
|
+ .build()
|
|
|
+ val url: String = CommonUtils.getUrl(BaseApplication.appContext)
|
|
|
+ val port: String = CommonUtils.getUrlPort(BaseApplication.appContext)
|
|
|
+ val request = Request.Builder()
|
|
|
+ .url("http://$url:$port/ncs_url/server_info")
|
|
|
+ .get()
|
|
|
+ .build()
|
|
|
+
|
|
|
+ try {
|
|
|
+ val response = okHttpClient.newCall(request).execute()
|
|
|
+ if (response != null && response.isSuccessful) {
|
|
|
+ //接口数据获取成功,进入下一步获取设备信息
|
|
|
+ serverSuccess = true
|
|
|
+ presenter.loadServerInfo()
|
|
|
+ } else {
|
|
|
+ //接口数据获取失败,可能服务器ip不对,尝试重新获取服务器ip
|
|
|
+ val info = ServerInfoUtil.get(Constant.DEVICE_REGISTER_ID!!)
|
|
|
+ checkServerInfo(info)
|
|
|
+ }
|
|
|
+ } catch (e: Exception) {
|
|
|
+ //接口数据获取失败,可能服务器ip不对,尝试重新获取服务器ip
|
|
|
+ val info = ServerInfoUtil.get(Constant.DEVICE_REGISTER_ID!!)
|
|
|
+ checkServerInfo(info)
|
|
|
+ //e.printStackTrace()
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ Thread.sleep(30000)
|
|
|
+ } catch (ex: Exception) {
|
|
|
+ ex.printStackTrace()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }.start()
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun checkServerInfo(info: ThirdServerInfo?) {
|
|
|
+ //检查获取到的服务器ip是否可用,可用则重启app重新初始化,不可用则什么都不做,等待下次重新获取服务器ip
|
|
|
+ if (info != null) {
|
|
|
+ if (info.thirdServer == null || info.thirdServerPort == null) {
|
|
|
+ Log.d(TAG, "server info data null")
|
|
|
+ showMsgMain("get server data null")
|
|
|
+ } else {
|
|
|
+ val okHttpClient = OkHttpClient().newBuilder()
|
|
|
+ .connectTimeout(15 * 1000L, TimeUnit.MILLISECONDS)
|
|
|
+ .readTimeout(15 * 1000L, TimeUnit.MILLISECONDS)
|
|
|
+ .writeTimeout(15 * 1000L, TimeUnit.MILLISECONDS)
|
|
|
+ .build()
|
|
|
+ val request = Request.Builder()
|
|
|
+ .url("http://${info.thirdServer}:${info.thirdServerPort}/ncs_url/server_info")
|
|
|
+ .get()
|
|
|
+ .build()
|
|
|
+
|
|
|
+ try {
|
|
|
+ val response = okHttpClient.newCall(request).execute()
|
|
|
+ if (response != null && response.isSuccessful) {
|
|
|
+ //接口数据获取成功,稍后重启app
|
|
|
+ serverSuccess = true
|
|
|
+ CommonUtils.setUrl(activity, info.thirdServer)
|
|
|
+ CommonUtils.setUrlPort(activity, info.thirdServerPort.toString())
|
|
|
+ showMsgMain("restart...")
|
|
|
+ handler.postDelayed({
|
|
|
+ if (!cancelRestart) {
|
|
|
+ AppUpdateHelper.restartApp(activity)
|
|
|
+ }
|
|
|
+ }, 10000)
|
|
|
+ }
|
|
|
+ } catch (e: Exception) {
|
|
|
+ e.printStackTrace()
|
|
|
+ showMsgMain("server error or net error")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Log.d(TAG, "server info null")
|
|
|
+ showMsgMain("get server null")
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private fun showMsgMain(msg: String) {
|
|
|
+ runOnUiThread {
|
|
|
+ showMessage(msg)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
fun switchFragment(id: Int, fragment: Fragment, tag: String) {
|
|
|
supportFragmentManager.beginTransaction()
|
|
|
.replace(id, fragment, tag)
|
|
@@ -452,6 +558,11 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
|
|
|
Log.d("AppUpdate", "checkAppVersion =====>> Constant.PART_ID: " + Constant.PART_ID)
|
|
|
}
|
|
|
|
|
|
+ override fun cancelRestart() {
|
|
|
+ cancelRestart = true
|
|
|
+ handler.removeCallbacksAndMessages(null)
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
override fun destory() {
|
|
|
SoundPoolManager.getInstance().release()
|
|
@@ -498,7 +609,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
|
|
|
}
|
|
|
|
|
|
override fun setTcpServerHost(tcpSeverDTO: TcpSeverDTO) {
|
|
|
- if (loaded) {
|
|
|
+ /*if (loaded) {
|
|
|
return
|
|
|
}
|
|
|
loaded = true
|
|
@@ -522,6 +633,39 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
|
|
|
//
|
|
|
}
|
|
|
}
|
|
|
+ }).start()*/
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun setServerInfo(data: ServerInfo) {
|
|
|
+ if (loaded) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ loaded = true
|
|
|
+
|
|
|
+
|
|
|
+ Constant.TCP_SERVER_URL = data.tcpPublicIp
|
|
|
+ Constant.TCP_PORT = data.tcpPort
|
|
|
+ Constant.TCP_HEART_BEAT = data.tcpIdleSeconds
|
|
|
+
|
|
|
+ JanusConstant.JANUS_URL = "ws://" + data.rtcLocalIp + ":" + data.rtcPort
|
|
|
+ JanusConstant.STUN_SERVER = arrayOf<String>(data.stunServer)
|
|
|
+ //JanusConstant.TURN_SERVER = data.turnServer
|
|
|
+
|
|
|
+ //开启TCP连接
|
|
|
+ startTcp()
|
|
|
+ showMessage("tcp开始连接...host: " + Constant.TCP_SERVER_URL + ", port: " + Constant.TCP_PORT)
|
|
|
+
|
|
|
+ Thread(Runnable {
|
|
|
+ while (!initialized) {
|
|
|
+ runOnUiThread(Runnable {
|
|
|
+ initDevice()
|
|
|
+ })
|
|
|
+ try {
|
|
|
+ Thread.sleep(20000)
|
|
|
+ } catch (e: Exception) {
|
|
|
+ //
|
|
|
+ }
|
|
|
+ }
|
|
|
}).start()
|
|
|
}
|
|
|
|
|
@@ -1009,7 +1153,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
|
|
|
}
|
|
|
} else if (TextUtils.isEmpty(Constant.TCP_SERVER_URL)) {
|
|
|
//还未连接tcp服务器
|
|
|
- presenter.loadTcpServerHost()
|
|
|
+ //presenter.loadTcpServerHost()
|
|
|
}
|
|
|
} else if (intent.action == ConnectivityManager.CONNECTIVITY_ACTION) {
|
|
|
updateNetState()
|