diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index ca49ae0e1c..55cb48a236 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -55,6 +55,7 @@ import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig import com.zhjt.mogo_core_function_devatools.binding.BindingCarManager import com.zhjt.mogo_core_function_devatools.block.MoGoBlockProviderImpl +import com.zhjt.mogo_core_function_devatools.coldstart.ColdStartManager import com.zhjt.mogo_core_function_devatools.env.EnvChangeManager import com.zhjt.mogo_core_function_devatools.exam.ExamControlManager import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigCenter.Companion.bizConfigCenter @@ -172,6 +173,7 @@ class DevaToolsProvider : IDevaToolsProvider, IAppStateListener { BindingCarManager.init(mContext!!) // apmEnvProvider.init(if(DebugConfig.isDebug()) "0" else "1", "${ DebugConfig.getNetMode() }", mDockerVersion ?: "") BadCaseManager.init(mContext!!) + ColdStartManager.init(mContext!!) if (DebugConfig.isDebug()) { SdtManager.init(mContext!!, true, DetectResultImpl()) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/coldstart/ColdStartAnalyticsManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/coldstart/ColdStartAnalyticsManager.kt new file mode 100644 index 0000000000..c148d65cfb --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/coldstart/ColdStartAnalyticsManager.kt @@ -0,0 +1,76 @@ +package com.zhjt.mogo_core_function_devatools.coldstart + +import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.commons.utils.MogoAnalyticUtils +import com.mogo.eagle.core.data.app.AppConfigInfo +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager +import com.mogo.eagle.core.utilcode.util.AppUtils + +/** + * 冷启动关键节点埋点统计管理 + */ +object ColdStartAnalyticsManager { + + private const val coldStartStep = "cold_start_step" //冷启动步骤埋点Key + + private const val eventParamPlateNumber = "plateNumber" //车牌号 + private const val eventParamCarSn = "carSn" //鹰眼SN + private const val eventParamMapVersion = "mapVersion" //工控机版本 + private const val eventParamEyeVersion = "eyeVersion" //鹰眼版本 + private const val eventParamAppFlavor = "appFlavor" //渠道信息 + private const val eventParamBranchHash = "branchHash" //Git Hash + private const val eventParamLatitude = "latitude" //纬度 + private const val eventParamLongitude = "longitude" //经度 + private const val eventParamStep = "step" //冷启动步骤 + + const val ipcConnectSuccess = "ipcConnectSuccess" //域控连接成功 + const val ipcConnectFail = "ipcConnectFail"//域控连接失败 + const val ssmConnectSuccess = "ssmConnectSuccess" //SSM连接成功 + const val ssmConnectFail = "ssmConnectFail"//SSM连接失败 + const val coldStartSuccess = "coldStartSuccess" //冷启动成功 + const val coldStartFail = "coldStartFail"//冷启动失败 + const val coldStartNow = "coldStartNow" //立即用车 + + /** + * 冷启动埋点统计 + * @param plateNumber 车牌号 + * @param carSn 鹰眼SN + * @param mapVersion 工控机版本 + * @param eyeVersion 鹰眼版本 + * @param appFlavor 渠道信息 + * @param branchHash Git Hash + * @param latitude 纬度 + * @param longitude 经度 + * @param step 冷启动步骤 + */ + private fun realColdStartStepAnalytics(plateNumber: String,carSn: String,mapVersion: String,eyeVersion: String, + appFlavor: String,branchHash: String,latitude: String,longitude: String, + step: String){ + val coldStartParams = HashMap() + coldStartParams[eventParamPlateNumber] = plateNumber + coldStartParams[eventParamCarSn] = carSn + coldStartParams[eventParamMapVersion] = mapVersion + coldStartParams[eventParamEyeVersion] = eyeVersion + coldStartParams[eventParamAppFlavor] = appFlavor + coldStartParams[eventParamBranchHash] = branchHash + coldStartParams[eventParamLatitude] = latitude + coldStartParams[eventParamLongitude] = longitude + coldStartParams[eventParamStep] = step + MogoAnalyticUtils.track(coldStartStep,coldStartParams) + } + + /** + * 冷启动埋点统计 + * @param step 冷启动步骤 + */ + fun coldStartStepAnalytics(step: String){ + realColdStartStepAnalytics(AppConfigInfo.plateNumber, SharedPrefsMgr.getInstance().sn, + CallerAutoPilotStatusListenerManager.getDockerVersion() ?: "", + AppUtils.getAppVersionName(), AppConfigInfo.flavor,AppConfigInfo.workingBranchHash, + CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude.toString(), + CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude.toString(),step) + } + + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/coldstart/ColdStartConfig.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/coldstart/ColdStartConfig.kt new file mode 100644 index 0000000000..6a87032ae8 --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/coldstart/ColdStartConfig.kt @@ -0,0 +1,54 @@ +package com.zhjt.mogo_core_function_devatools.coldstart + +import com.mogo.eagle.core.utilcode.util.SPUtils + +/** + * 冷启动配置参数 + */ +object ColdStartConfig { + + private var isShowing: Boolean = false + + private const val coldStartTime = "COLD_START_TIME" //启动时间 + private const val coldStartNow = "COLD_START_NOW" //立即用车 + + fun getShowWindowStatus(): Boolean{ + return isShowing + } + + fun setShowWindowStatus(isShowing: Boolean){ + this.isShowing = isShowing + } + + /** + * 获取上一次冷启动启动成功日期 + */ + fun getColdStartSuccessTime(): Long{ + return SPUtils.getInstance().getLong(coldStartTime) + } + + /** + * 记录冷启动成功日期 + */ + fun setColdStartSuccessTime(successTime: Long){ + SPUtils.getInstance().put(coldStartTime,successTime) + } + + /** + * 记录立即用车点击时间 + */ + fun setColdStartNowState(coldStartNowTime: Long){ + SPUtils.getInstance().put(coldStartNow,coldStartNowTime) + } + + /** + * 获取立即用车点击时间 + */ + fun getColdStartNowTime(): Long{ + return SPUtils.getInstance().getLong(coldStartNow) + } + + + + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/coldstart/ColdStartManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/coldstart/ColdStartManager.kt new file mode 100644 index 0000000000..72810d66b4 --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/coldstart/ColdStartManager.kt @@ -0,0 +1,76 @@ +package com.zhjt.mogo_core_function_devatools.coldstart + +import android.content.Context +import android.util.Log +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.api.datacenter.IDataCenterBizListener +import com.mogo.eagle.core.function.api.och.IOchFunctionCallNotify +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.datacenter.CallerDataCenterBizListener +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager +import com.mogo.eagle.core.utilcode.util.TimeUtils +import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String +import com.zhjt.mogo.adas.data.AdasConstants + +/** + * 冷启动管理 + */ +object ColdStartManager: IMoGoAutopilotStatusListener, IDataCenterBizListener { + + const val TAG = "ColdStartManager" + private var isColdStartNow: Boolean = false //当天是否点击了“立即用车” + private var isColdStartSuccess: Boolean = false //当天是否冷启动成功 + private var loginStatus: Boolean = false //当前登录状态 + private var ipcConnectedTime: Long = System.currentTimeMillis() + + + fun init(context: Context){ + CallerAutoPilotStatusListenerManager.addListener(TAG, this) + CallerDataCenterBizListener.addListener(TAG,this) + val currentDay = millis2String(System.currentTimeMillis(), TimeUtils.getMdFormat()) + //获取当天是否点击过“立即用车” + val coldStartNowDay = millis2String(ColdStartConfig.getColdStartNowTime(), TimeUtils.getMdFormat()) + if(coldStartNowDay == currentDay){ + isColdStartNow = true + } + //获取当天是否冷启动成功 + val coldStartSuccessDay = millis2String(ColdStartConfig.getColdStartSuccessTime(), TimeUtils.getMdFormat()) + if(coldStartSuccessDay == currentDay){ + isColdStartSuccess = true + } + } + + override fun onAutopilotIpcConnectStatusChanged( + status: AdasConstants.IpcConnectionStatus, + reason: String? + ){ + //域控连接异常 + if(status != AdasConstants.IpcConnectionStatus.CONNECTED){ + //当前进入主页方式为立即用车,则在主页面不再展示冷启动页面 + if(isColdStartNow && !isColdStartSuccess){ + return + } + if(isColdStartNow && ColdStartConfig.getColdStartNowTime() > ColdStartConfig.getColdStartSuccessTime()){ + return + } + //已登录且距离上次冷启动成功超过1分钟,再次展示冷启动页面 + if(!ColdStartConfig.getShowWindowStatus() && loginStatus && System.currentTimeMillis().minus(ColdStartConfig.getColdStartSuccessTime())>60000){ + if(System.currentTimeMillis().minus(ipcConnectedTime) > 60000){ + CallerHmiManager.showColdStartWindow() + } + } + }else{ + ipcConnectedTime = System.currentTimeMillis() + } + } + + /** + * 当前登录状态 + * @param isLogin 是否登录 + */ + override fun invokeLoginStatus(isLogin: Boolean) { + super.invokeLoginStatus(isLogin) + loginStatus = isLogin + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt index c0cfd20528..9e9cd27db8 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt @@ -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() + } + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartAgainWindow.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartAgainWindow.kt index 54d9b9b6fd..51cd586556 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartAgainWindow.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartAgainWindow.kt @@ -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) } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt index 9ff75c45eb..5f9805503c 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ColdStartView.kt @@ -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)) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_cold_start_now.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_cold_start_now.png new file mode 100644 index 0000000000..44dfd6ee78 Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_cold_start_now.png differ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_cold_start.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_cold_start.xml index b9e400dd05..998743ab30 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_cold_start.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_cold_start.xml @@ -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" /> + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml index 6d5a785236..2b2587dd2d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml @@ -220,10 +220,21 @@ 系统启动中… 系统启动成功 系统启动失败 - 正在连接SSM… - 已连接SSM - SSM连接异常,建议重启车辆并上报问题 + 正在等待SSM信息 + 与SSM通信正常 + 超时未收到SSM信息,建议重启车辆并上报问题 系统启动成功,即将进入主页 - 系统启动异常,建议重启车辆并上报问题 + 系统启动异常,建议上报问题,可尝试重启车辆 + + 等待连接域控 + 连接域控异常 + 等待SSM信息 + 与SSM通信异常 + 等待系统启动 + 系统启动成功,即将进入主页 + 系统启动异常 + + 立即用车 + 启动未完成时,可能会导致自动驾驶等功能无法使用 diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt index cf34f1b926..b705a6ef8b 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt @@ -302,4 +302,9 @@ interface IMoGoHmiProvider :IProvider{ * 视角弹窗是否已展示 */ fun isHdMapVisualAngleAdjustShow(): Boolean + + /** + * 展示冷启动弹窗 + */ + fun showColdStartWindow() } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt index 1e2be844e8..cd3d6461fc 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt @@ -440,4 +440,12 @@ object CallerHmiManager { fun isHdMapVisualAngleAdjustShow(): Boolean { return hmiProviderApi?.isHdMapVisualAngleAdjustShow() ?: false } + + /** + * 展示冷启动弹窗 + */ + fun showColdStartWindow(){ + hmiProviderApi?.showColdStartWindow() + } + } \ No newline at end of file