[6.7.0]冷启动更改

This commit is contained in:
xuxinchao
2024-10-22 20:06:13 +08:00
parent 304f67ad36
commit 0ea0604ef1
12 changed files with 317 additions and 17 deletions

View File

@@ -55,6 +55,7 @@ import com.mogo.eagle.core.function.hmi.ui.tools.ModifyBindingCarDialog
import com.mogo.eagle.core.function.hmi.ui.tools.ToBindingCarDialog
import com.mogo.eagle.core.function.hmi.ui.tools.UpgradeAppDialog
import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog
import com.mogo.eagle.core.function.hmi.ui.widget.ColdStartAgainWindow
import com.mogo.eagle.core.function.hmi.ui.widget.HDMapVisualAngleAdjustLayout
import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView
import com.mogo.eagle.core.function.hmi.xiaozhi.XiaoZhiStateManager
@@ -585,4 +586,13 @@ class MoGoHmiProvider : IMoGoHmiProvider {
override fun isHdMapVisualAngleAdjustShow(): Boolean {
return popOfVisualAngleAdjust.get()?.get()?.isShowing() ?: false
}
override fun showColdStartWindow() {
val activity = AppStateManager.currentActivity() ?: return
ThreadUtils.runOnUiThread {
val coldStartWindow = ColdStartAgainWindow(activity)
coldStartWindow.showFloatWindow()
}
}
}

View File

@@ -22,6 +22,7 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
import com.zhjt.mogo_core_function_devatools.coldstart.ColdStartConfig
import me.jessyan.autosize.utils.AutoSizeUtils
/**
@@ -107,12 +108,14 @@ class ColdStartAgainWindow constructor(activity: Activity){
mWindowParams!!.x = 0
mWindowParams!!.y = 0
mWindowManager!!.addView(mFloatLayout, mWindowParams)
ColdStartConfig.setShowWindowStatus(true)
}
}
fun hideFloatWindow() {
if (mFloatLayout.parent != null) mWindowManager!!.removeView(mFloatLayout)
ColdStartConfig.setShowWindowStatus(false)
}
}

View File

@@ -23,11 +23,14 @@ import com.mogo.eagle.core.utilcode.util.ResourceUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.zhjt.mogo.adas.data.AdasConstants
import com.zhjt.mogo_core_function_devatools.coldstart.ColdStartAnalyticsManager
import com.zhjt.mogo_core_function_devatools.coldstart.ColdStartConfig
import kotlinx.android.synthetic.main.view_cold_start.view.ivColdStartStatus
import kotlinx.android.synthetic.main.view_cold_start.view.ivIpcConnectStatus
import kotlinx.android.synthetic.main.view_cold_start.view.ivSsmConnectStatus
import kotlinx.android.synthetic.main.view_cold_start.view.tvColdStartContent
import kotlinx.android.synthetic.main.view_cold_start.view.tvColdStartNodeState
import kotlinx.android.synthetic.main.view_cold_start.view.tvColdStartNow
import kotlinx.android.synthetic.main.view_cold_start.view.tvIpcConnectContent
import kotlinx.android.synthetic.main.view_cold_start.view.tvSsmConnectContent
import kotlinx.android.synthetic.main.view_cold_start.view.tvSystemStartupTitle
@@ -76,9 +79,13 @@ class ColdStartView @JvmOverloads constructor(
}
private fun initView(){
tvSystemStartupTitle.setOnLongClickListener {
//立即用车
tvColdStartNow.setOnClickListener{
hideColdStartView()
true
//立即用车埋点统计
ColdStartAnalyticsManager.coldStartStepAnalytics(ColdStartAnalyticsManager.coldStartNow)
//保存点击时间
ColdStartConfig.setColdStartNowState(System.currentTimeMillis())
}
}
@@ -218,6 +225,10 @@ class ColdStartView @JvmOverloads constructor(
if(it.eventStatus == SsmInfo.CSState.COLD_START_READY){
//冷启动就绪
showColdStartSuccessView()
//冷启动成功埋点统计
ColdStartAnalyticsManager.coldStartStepAnalytics(ColdStartAnalyticsManager.coldStartSuccess)
//记录冷启动成功时间
ColdStartConfig.setColdStartSuccessTime(System.currentTimeMillis())
}
tvColdStartContent.text = getColdStartEventStatus(it.eventStatus)
nodeStatusSb.clear()
@@ -301,7 +312,7 @@ class ColdStartView @JvmOverloads constructor(
private fun showIPCConnectSuccessView(){
ipcRotationAnim?.cancel()
ivIpcConnectStatus.rotation = 0f
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_in_progress_title)
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_title_ssm_wait)
ivIpcConnectStatus.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_cold_start_success))
tvIpcConnectContent.text = resources.getString(R.string.ipc_connect_success)
//开启连接SSM倒计时
@@ -310,7 +321,9 @@ class ColdStartView @JvmOverloads constructor(
viewSsmConnectDivider.visibility = View.VISIBLE
ivSsmConnectStatus.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_cold_start_process))
//旋转动画
ssmRotationAnim = ObjectAnimator.ofFloat(ivSsmConnectStatus, "rotation", 0f, 360f)
if(ssmRotationAnim == null){
ssmRotationAnim = ObjectAnimator.ofFloat(ivSsmConnectStatus, "rotation", 0f, 360f)
}
ssmRotationAnim?.repeatCount = ValueAnimator.INFINITE
ssmRotationAnim?.repeatMode = ValueAnimator.RESTART
ssmRotationAnim?.duration = 1500
@@ -326,12 +339,15 @@ class ColdStartView @JvmOverloads constructor(
viewColdStartDivider.visibility = View.GONE
ivColdStartStatus.visibility = View.GONE
tvColdStartContent.visibility = View.GONE
//域控连接成功埋点统计
ColdStartAnalyticsManager.coldStartStepAnalytics(ColdStartAnalyticsManager.ipcConnectSuccess)
}
/**
* 展示域控连接失败视图
*/
private fun showIPCConnectFailView(reason: String?){
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_title_tel_exception)
if(tvIpcConnectContent.text.isNotEmpty() && tvIpcConnectContent.text.equals(reason)){
return
}
@@ -349,13 +365,17 @@ class ColdStartView @JvmOverloads constructor(
viewColdStartDivider.visibility = View.GONE
ivColdStartStatus.visibility = View.GONE
tvColdStartContent.visibility = View.GONE
//域控连接失败埋点统计
ColdStartAnalyticsManager.coldStartStepAnalytics(ColdStartAnalyticsManager.ipcConnectFail)
}
private fun showIPCConnecting(){
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_title_tel_wait)
ivIpcConnectStatus.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_cold_start_process))
tvIpcConnectContent.text = "正在连域控..."
ipcRotationAnim = ObjectAnimator.ofFloat(ivIpcConnectStatus, "rotation", 0f, 360f)
tvIpcConnectContent.text = "正在连域控..."
if(ipcRotationAnim == null){
ipcRotationAnim = ObjectAnimator.ofFloat(ivIpcConnectStatus, "rotation", 0f, 360f)
}
ipcRotationAnim?.repeatCount = ValueAnimator.INFINITE
ipcRotationAnim?.repeatMode = ValueAnimator.RESTART
ipcRotationAnim?.duration = 1500
@@ -383,6 +403,8 @@ class ColdStartView @JvmOverloads constructor(
coldStartProcess()
//主动查询冷启动状态
CallerAutoPilotControlManager.sendSsmFuncQueryColdStartState()
//SSM连接成功埋点统计
ColdStartAnalyticsManager.coldStartStepAnalytics(ColdStartAnalyticsManager.ssmConnectSuccess)
}
ssmConnectStatus = true
coldStartStatus = false
@@ -392,7 +414,7 @@ class ColdStartView @JvmOverloads constructor(
* 展示SSM连接成功视图
*/
private fun showSSMConnectSuccessView(){
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_in_progress_title)
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_title_sys_wait)
//取消旋转动画
ssmRotationAnim?.cancel()
//取消连接SSM超时等待倒计时
@@ -409,7 +431,9 @@ class ColdStartView @JvmOverloads constructor(
tvColdStartContent.text = "启动中…"
ivColdStartStatus.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_cold_start_process))
//开启冷启动连接状态动画
coldStartRotationAnim = ObjectAnimator.ofFloat(ivColdStartStatus, "rotation", 0f, 360f)
if(coldStartRotationAnim == null){
coldStartRotationAnim = ObjectAnimator.ofFloat(ivColdStartStatus, "rotation", 0f, 360f)
}
coldStartRotationAnim?.repeatCount = ValueAnimator.INFINITE
coldStartRotationAnim?.repeatMode = ValueAnimator.RESTART
coldStartRotationAnim?.duration = 1500
@@ -421,7 +445,7 @@ class ColdStartView @JvmOverloads constructor(
* 展示SSM连接失败视图
*/
private fun showSSMConnectFailView(){
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_fail_title)
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_title_ssm_exception)
//取消旋转动画
ssmRotationAnim?.cancel()
ivSsmConnectStatus.rotation = 0f
@@ -448,6 +472,8 @@ class ColdStartView @JvmOverloads constructor(
connectSSMTimer?.cancel()
//展示连接SSM失败视图
showSSMConnectFailView()
//SSM连接失败埋点统计
ColdStartAnalyticsManager.coldStartStepAnalytics(ColdStartAnalyticsManager.ssmConnectFail)
}
}
connectSSMTimer?.start()
@@ -468,6 +494,8 @@ class ColdStartView @JvmOverloads constructor(
coldStartStatus = false
//展示冷启动失败视图
showColdStartFailView()
//冷启动失败埋点统计
ColdStartAnalyticsManager.coldStartStepAnalytics(ColdStartAnalyticsManager.coldStartFail)
}
}
connectColdStartTimer?.start()
@@ -478,7 +506,7 @@ class ColdStartView @JvmOverloads constructor(
* 冷启动失败视图
*/
private fun showColdStartFailView(){
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_fail_title)
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_title_sys_exception)
coldStartRotationAnim?.cancel()
ivColdStartStatus.rotation = 0f
ivColdStartStatus.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_cold_start_fail))
@@ -490,7 +518,7 @@ class ColdStartView @JvmOverloads constructor(
* 冷启动成功视图
*/
private fun showColdStartSuccessView(){
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_success_title)
tvSystemStartupTitle.text = resources.getString(R.string.cold_start_title_sys_success)
coldStartRotationAnim?.cancel()
ivColdStartStatus.rotation = 0f
ivColdStartStatus.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_cold_start_success))

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -14,9 +14,9 @@
android:textSize="@dimen/sp_70"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:text="@string/cold_start_in_progress_title"
android:layout_marginTop="@dimen/dp_432"
android:layout_marginStart="@dimen/dp_261"
android:text="@string/cold_start_title_tel_wait"
/>
<ImageView
@@ -120,5 +120,32 @@
android:textColor="#B2FFFFFF"
/>
<TextView
android:id="@+id/tvColdStartNow"
android:layout_width="@dimen/dp_351"
android:layout_height="@dimen/dp_99"
android:background="@drawable/bg_cold_start_now"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginEnd="@dimen/dp_191"
android:layout_marginBottom="@dimen/dp_183"
android:text="@string/cold_start_now"
android:textSize="@dimen/sp_36"
android:textColor="@color/white"
android:gravity="center"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:text="@string/cold_start_now_tip"
android:textSize="@dimen/sp_28"
android:textColor="#82FFFFFF"
android:layout_marginEnd="@dimen/dp_191"
android:layout_marginBottom="@dimen/dp_116"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -220,10 +220,21 @@
<string name="cold_start_in_progress_title">系统启动中…</string>
<string name="cold_start_success_title">系统启动成功</string>
<string name="cold_start_fail_title">系统启动失败</string>
<string name="ssm_connect_loading">正在连接SSM</string>
<string name="ssm_connect_success">已连接SSM</string>
<string name="ssm_connect_fail">SSM连接异常,建议重启车辆并上报问题</string>
<string name="ssm_connect_loading">正在等待SSM信息</string>
<string name="ssm_connect_success">与SSM通信正常</string>
<string name="ssm_connect_fail">超时未收到SSM信息,建议重启车辆并上报问题</string>
<string name="cold_start_success_content">系统启动成功,即将进入主页</string>
<string name="cold_start_fail_content">系统启动异常,建议重启车辆并上报问题</string>
<string name="cold_start_fail_content">系统启动异常,建议上报问题,可尝试重启车辆</string>
<string name="cold_start_title_tel_wait">等待连接域控</string>
<string name="cold_start_title_tel_exception">连接域控异常</string>
<string name="cold_start_title_ssm_wait">等待SSM信息</string>
<string name="cold_start_title_ssm_exception">与SSM通信异常</string>
<string name="cold_start_title_sys_wait">等待系统启动</string>
<string name="cold_start_title_sys_success">系统启动成功,即将进入主页</string>
<string name="cold_start_title_sys_exception">系统启动异常</string>
<string name="cold_start_now">立即用车</string>
<string name="cold_start_now_tip">启动未完成时,可能会导致自动驾驶等功能无法使用</string>
</resources>