[6.7.0]冷启动
This commit is contained in:
@@ -56,6 +56,8 @@ class ColdStartView @JvmOverloads constructor(
|
||||
private var ssmConnectStatus = false //SSM连接状态,默认是未连接
|
||||
private var coldStartStatus = false //冷启动状态,默认是未冷启动成功
|
||||
|
||||
private var ipcRotationAnim: ObjectAnimator?= null //域控连接状态动画
|
||||
|
||||
private var ssmRotationAnim: ObjectAnimator?= null //SSM连接状态动画
|
||||
private var connectSSMTimer: CountDownTimer?= null //连接SSM等待倒计时
|
||||
|
||||
@@ -100,12 +102,69 @@ class ColdStartView @JvmOverloads constructor(
|
||||
true
|
||||
}else{
|
||||
//域控连接失败
|
||||
showIPCConnectFailView(reason)
|
||||
when(status){
|
||||
//主动断开连接
|
||||
AdasConstants.IpcConnectionStatus.DISCONNECTED ->{
|
||||
showIPCConnectFailView("域控未连接或主动断开连接,建议重启车辆并上报问题")
|
||||
}
|
||||
//连接中
|
||||
AdasConstants.IpcConnectionStatus.CONNECTING ->{
|
||||
showIPCConnecting()
|
||||
}
|
||||
//重连中(定时器)
|
||||
AdasConstants.IpcConnectionStatus.RECONNECTING_TIMER ->{
|
||||
showIPCConnecting()
|
||||
}
|
||||
//重连中(网络监听)
|
||||
AdasConstants.IpcConnectionStatus.RECONNECTING_NETWORK ->{
|
||||
showIPCConnecting()
|
||||
}
|
||||
//连接异常(鹰眼与域控连接失败、无法连接、非正常断开等)
|
||||
AdasConstants.IpcConnectionStatus.CONNECT_EXCEPTION ->{
|
||||
showIPCConnectFailView("域控连接异常,建议检查WiFi连接情况及域控是否开机")
|
||||
}
|
||||
//非法地址(连接模式为指定地址时:表示当前鹰眼调用连接时传入的域控地址错误或不符合规则【不修改默认配置不会出现此问题】;
|
||||
// 连接模式为PING模式时:表示传入的PING地址列表存在问题)
|
||||
AdasConstants.IpcConnectionStatus.ILLEGAL_ADDRESS ->{
|
||||
showIPCConnectFailView("非法域控地址,建议重启车辆并上报问题")
|
||||
}
|
||||
//正在搜索域控地址
|
||||
AdasConstants.IpcConnectionStatus.SEARCH_ADDRESS ->{
|
||||
showIPCConnecting()
|
||||
}
|
||||
//找不到可用地址(域控地址列表中的全部地址均无法连通
|
||||
// 【不修改默认配置的情况下需要排查PAD是否连接车载路由器、工控机是否连接车载路由器、
|
||||
// 工控机是否开机等】)
|
||||
AdasConstants.IpcConnectionStatus.NOT_FOUND_ADDRESS ->{
|
||||
showIPCConnectFailView("找不到域控可用地址,建议检查车载路由器及域控是否开机")
|
||||
}
|
||||
//域控证书认证异常
|
||||
AdasConstants.IpcConnectionStatus.CERTIFICATION_FAILED ->{
|
||||
showIPCConnectFailView("域控证书认证异常")
|
||||
}
|
||||
//心跳超时(连接域控成功后在一段时间内未收到域控任何数据),超时时间:
|
||||
AdasConstants.IpcConnectionStatus.HEARTBEAT_TIMEOUT ->{
|
||||
showIPCConnectFailView("心跳超时(连接域控成功后在一段时间内未收到域控任何数据)")
|
||||
}
|
||||
//協議不匹配(被连接的域控端非WebSocket协议【可能性非常低】)
|
||||
AdasConstants.IpcConnectionStatus.PROTOCOL_MISMATCH ->{
|
||||
showIPCConnectFailView("协议不匹配")
|
||||
}
|
||||
//域控主动断开连接(域控主动发起断开WebSocket连接
|
||||
AdasConstants.IpcConnectionStatus.SERVER_DISCONNECTED ->{
|
||||
showIPCConnectFailView("域控主动断开连接,建议重启车辆并上报问题")
|
||||
}
|
||||
}
|
||||
false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 状态查询应答
|
||||
* @param status 数据
|
||||
@@ -230,6 +289,8 @@ class ColdStartView @JvmOverloads constructor(
|
||||
* 展示域控连接成功视图
|
||||
*/
|
||||
private fun showIPCConnectSuccessView(){
|
||||
ipcRotationAnim?.cancel()
|
||||
ivIpcConnectStatus.rotation = 0f
|
||||
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_in_progress_title)
|
||||
ivIpcConnectStatus.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_cold_start_success))
|
||||
tvIpcConnectContent.text = resources.getString(R.string.ipc_connect_success)
|
||||
@@ -261,6 +322,11 @@ class ColdStartView @JvmOverloads constructor(
|
||||
* 展示域控连接失败视图
|
||||
*/
|
||||
private fun showIPCConnectFailView(reason: String?){
|
||||
if(tvIpcConnectContent.text.isNotEmpty() && tvIpcConnectContent.text.equals(reason)){
|
||||
return
|
||||
}
|
||||
ipcRotationAnim?.cancel()
|
||||
ivIpcConnectStatus.rotation = 0f
|
||||
ivIpcConnectStatus.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_cold_start_fail))
|
||||
reason?.let {
|
||||
tvIpcConnectContent.text = it
|
||||
@@ -276,6 +342,25 @@ class ColdStartView @JvmOverloads constructor(
|
||||
|
||||
}
|
||||
|
||||
private fun showIPCConnecting(){
|
||||
ivIpcConnectStatus.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_cold_start_process))
|
||||
tvIpcConnectContent.text = "正在连接域控..."
|
||||
ipcRotationAnim = ObjectAnimator.ofFloat(ivIpcConnectStatus, "rotation", 0f, 360f)
|
||||
ipcRotationAnim?.repeatCount = ValueAnimator.INFINITE
|
||||
ipcRotationAnim?.repeatMode = ValueAnimator.RESTART
|
||||
ipcRotationAnim?.duration = 1500
|
||||
ipcRotationAnim?.interpolator = LinearInterpolator()
|
||||
ipcRotationAnim?.start()
|
||||
//隐藏SSM相关视图
|
||||
viewSsmConnectDivider.visibility = View.GONE
|
||||
ivSsmConnectStatus.visibility = View.GONE
|
||||
tvSsmConnectContent.visibility = View.GONE
|
||||
//隐藏冷启动相关视图
|
||||
viewColdStartDivider.visibility = View.GONE
|
||||
ivColdStartStatus.visibility = View.GONE
|
||||
tvColdStartContent.visibility = View.GONE
|
||||
}
|
||||
|
||||
/**
|
||||
* SSM连接成功
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user