[6.7.0]冷启动

This commit is contained in:
xuxinchao
2024-10-16 19:03:04 +08:00
parent b0dc7fc818
commit 7711a19995

View File

@@ -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连接成功
*/