diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeManager.kt index 0976b77e33..199f3f05e4 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ota/OTAUpgradeManager.kt @@ -56,8 +56,14 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener, }else{ Log.i(TAG,"20分钟没有收到OTA升级推送置为失败") CallerHmiManager.showOTADownloadStatusDialog(false, emptyList()) - CallerHmiManager.showOTAResultDialog(false) + CallerHmiManager.showOTAResultDialog(isShow = true, result = false) } + }else if(msg.what == 2){ + Log.i(TAG,"司机屏弹窗提示用车人执行车辆下电操作") + //如果OTA升级弹窗没有点击关闭,则自动关闭 + CallerHmiManager.showOTAResultDialog(isShow = false, result = true) + //司机屏弹窗提示用车人执行车辆下电操作 + CallerHmiManager.showOTAPowerOffFinishDialog() } } } @@ -126,7 +132,7 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener, val token = productInfo.optString("token") val productStatus = productInfo.optInt("status") val failReason = productInfo.optString("fail_reason") - val upgradeReason = productInfo.optString("upgrade_reason") + val upgradeReason = productInfo.optString("upgrade_reason")//升级原因 val taskId = productInfo.optInt("task_id") val taskItemId = productInfo.optInt("task_item_id") val otaType = productInfo.optInt("ota_type") @@ -136,6 +142,7 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener, val curSize = productInfo.optDouble("cur_size") val totalSize = productInfo.optDouble("total_size") val taskNumber = productInfo.optInt("task_number") + val leftTime = productInfo.optInt("left_time") //剩余时间,单位秒 Log.i(TAG, "index=$index") Log.i(TAG, "token=$token") @@ -150,7 +157,8 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener, Log.i(TAG, "is_delay=$isDelay") Log.i(TAG, "cur_size=$curSize") Log.i(TAG, "total_size=$totalSize") - Log.i(TAG,"taskNumber=$taskNumber") + Log.i(TAG,"task_number=$taskNumber") + Log.i(TAG,"left_time=$leftTime") if(index == 0){ //是否需要触发提示升级只判断第一个任务 @@ -251,7 +259,7 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener, val token = productInfo.optString("token") val productStatus = productInfo.optInt("status") val failReason = productInfo.optString("fail_reason") - val upgradeReason = productInfo.optString("upgrade_reason") + val upgradeReason = productInfo.optString("upgrade_reason")//升级原因 val taskId = productInfo.optInt("task_id") val taskItemId = productInfo.optInt("task_item_id") val otaType = productInfo.optInt("ota_type") @@ -261,6 +269,7 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener, val curSize = productInfo.optDouble("cur_size") val totalSize = productInfo.optDouble("total_size") val taskNumber = productInfo.optInt("task_number") + val leftTime = productInfo.optInt("left_time")//剩余时间,单位秒 Log.i(TAG, "index=$index") Log.i(TAG, "token=$token") @@ -276,6 +285,7 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener, Log.i(TAG, "cur_size=$curSize") Log.i(TAG, "total_size=$totalSize") Log.i(TAG,"task_number=$taskNumber") + Log.i(TAG,"left_time=$leftTime") if(index == 0){ //是否需要触发提示升级只判断第一个任务 @@ -334,7 +344,13 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener, OTAUpgradeConfig.isQuery = false }else{ CallerHmiManager.showOTADownloadStatusDialog(false,otaUpgradeList) - CallerHmiManager.showOTAResultDialog(upgradeResult) + CallerHmiManager.showOTAResultDialog(true,upgradeResult) + //升级成功,自动执行优雅停服 + if(upgradeResult){ + CallerAutoPilotControlManager.sendIpcPowerOff() + //当优雅停服完成、需要车辆下电的时候(比如当前是停服触发60s后),车端告知鹰眼,司机屏弹窗提示用车人执行车辆下电操作 + handler.sendEmptyMessageDelayed(2,60000) + } } CallerOTAManager.invokeOtaDownloadStatus(false) }else{ 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 ba66a8430a..b0573865c1 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 @@ -61,6 +61,7 @@ import com.mogo.eagle.core.function.hmi.ui.setting.ToolsView.Companion.toolsView import com.mogo.eagle.core.function.hmi.ui.tools.AdUpgradeDialog import com.mogo.eagle.core.function.hmi.ui.tools.ModifyBindingCarDialog import com.mogo.eagle.core.function.hmi.ui.tools.OTADownloadStatusDialog +import com.mogo.eagle.core.function.hmi.ui.tools.OTAPowerOffFinishDialog import com.mogo.eagle.core.function.hmi.ui.tools.OTAUpgradeDialog import com.mogo.eagle.core.function.hmi.ui.tools.OTAUpgradeResultDialog import com.mogo.eagle.core.function.hmi.ui.tools.ToBindingCarDialog @@ -667,6 +668,7 @@ class MoGoHmiProvider : IMoGoHmiProvider { private var otaUpgradeDialog: OTAUpgradeDialog ?= null private var otaDownloadStatusDialog: OTADownloadStatusDialog ?= null private var otaUpgradeResultDialog: OTAUpgradeResultDialog ?= null + private var otaPowerOffFinishDialog: OTAPowerOffFinishDialog ?= null /** * 展示OTA升级弹窗 @@ -720,18 +722,42 @@ class MoGoHmiProvider : IMoGoHmiProvider { /** * 展示OTA升级结果弹窗 + * @param isShow 是否展示 * @param result true升级成功 false升级失败 */ - override fun showOTAResultDialog(result: Boolean) { + override fun showOTAResultDialog(isShow: Boolean,result: Boolean) { ThreadUtils.runOnUiThread{ - context?.let{ - if(otaUpgradeResultDialog == null){ - otaUpgradeResultDialog = OTAUpgradeResultDialog(it) + if(isShow){ + context?.let{ + if(otaUpgradeResultDialog == null){ + otaUpgradeResultDialog = OTAUpgradeResultDialog(it) + } + if(otaUpgradeResultDialog?.isShowing == false){ + otaUpgradeResultDialog?.show() + } + otaUpgradeResultDialog?.showResult(result) } - if(otaUpgradeResultDialog?.isShowing == false){ - otaUpgradeResultDialog?.show() + }else{ + if(otaUpgradeResultDialog?.isShowing == true){ + otaUpgradeResultDialog?.dismiss() + } + } + + } + } + + /** + * OTA升级完成且优雅停服完成、需要车辆下电的时候车端告知鹰眼,司机屏弹窗提示用车人执行车辆下电操作 + */ + override fun showOTAPowerOffFinishDialog() { + ThreadUtils.runOnUiThread { + context?.let { + if(otaPowerOffFinishDialog == null){ + otaPowerOffFinishDialog = OTAPowerOffFinishDialog(it) + } + if(otaPowerOffFinishDialog?.isShowing == false){ + otaPowerOffFinishDialog?.show() } - otaUpgradeResultDialog?.showResult(result) } } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OTAPowerOffFinishDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OTAPowerOffFinishDialog.kt new file mode 100644 index 0000000000..8794be964a --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OTAPowerOffFinishDialog.kt @@ -0,0 +1,31 @@ +package com.mogo.eagle.core.function.hmi.ui.tools + +import android.content.Context +import androidx.lifecycle.LifecycleObserver +import com.mogo.commons.voice.AIAssist +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog +import kotlinx.android.synthetic.main.dialog_ota_power_off_finish.tvPowerOffClose + +/** + * OTA升级完成且优雅停服完成、需要车辆下电的时候车端告知鹰眼, + * 司机屏弹窗提示用车人执行车辆下电操作 + */ +class OTAPowerOffFinishDialog(context: Context) : + BaseFloatDialog(context,TAG), LifecycleObserver { + + companion object { + private const val TAG = "OTAPowerOffFinishDialog" + } + + init{ + setContentView(R.layout.dialog_ota_power_off_finish) + setCanceledOnTouchOutside(false) + tvPowerOffClose.setOnClickListener { + dismiss() + } + //语音提示下电重启 + AIAssist.getInstance(context).speakTTSVoice("优雅停服完成,请操作车辆下电重启") + } + +} \ 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/tools/OTAUpgradeResultDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OTAUpgradeResultDialog.kt index dc34c1bdc2..bcebb8df8f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OTAUpgradeResultDialog.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/OTAUpgradeResultDialog.kt @@ -11,6 +11,8 @@ import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog import com.mogo.eagle.core.utilcode.util.ResourceUtils +import com.mogo.eagle.core.utilcode.util.TimeUtils +import com.mogo.eagle.core.utilcode.util.TimeUtils.getHourMinSecondFormat import kotlinx.android.synthetic.main.dialog_ota_upgrade_result.ivUpgradeResult import kotlinx.android.synthetic.main.dialog_ota_upgrade_result.tvResultClose import kotlinx.android.synthetic.main.dialog_ota_upgrade_result.tvResultContent @@ -43,16 +45,18 @@ class OTAUpgradeResultDialog(context: Context) : //升级成功 ivUpgradeResult.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_ota_upgrade_success)) tvResultContent.text = context.resources.getString(R.string.ota_result_success) - tvResultTip.text = context.resources.getString(R.string.ota_result_success_tip) + tvResultTip.text = + String.format(context.resources.getString(R.string.ota_result_success_tip), + TimeUtils.millis2String(System.currentTimeMillis()+60000,getHourMinSecondFormat())) //消息盒子和语音提示升级成功结果 CallerMsgBoxManager.saveMsgBox( MsgBoxBean( MsgBoxType.OTA, OTAMsg( - "成功", "车辆部署任务执行结果", "车辆部署任务执行成功,请重启车辆") + "成功", "车辆部署任务执行结果", "任务下载完成,一分钟后操作车辆下电重启") ) ) - AIAssist.getInstance(context).speakTTSVoice("车辆部署任务执行成功,请重启车辆") + AIAssist.getInstance(context).speakTTSVoice("任务下载完成,一分钟后操作车辆下电重启") }else{ //升级失败 ivUpgradeResult.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_ota_upgrade_fail)) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_ota_power_off_finish.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_ota_power_off_finish.xml new file mode 100644 index 0000000000..d3833005b0 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_ota_power_off_finish.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + \ 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 e2a7d5ac30..15413fdf70 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 @@ -267,11 +267,13 @@ 稍后升级 资源下载中 OTA升级结果图片示例 - ⻋辆部署任务执⾏成功 + ⻋辆部署任务下载完成 ⻋辆部署任务执⾏失败 - 请重启⻋辆 + 已自动发起优雅停服,%s后可操作车辆下电重启 请联系管理员 关闭 + 车辆优雅停服完成 + 请操作车辆下电重启 FSM美化模式状态下异常标识 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 1a2a59ded4..93e84c86f8 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 @@ -337,9 +337,15 @@ interface IMoGoHmiProvider :IProvider{ /** * 展示OTA升级结果弹窗 + * @param isShow 是否展示 * @param result true升级成功 false升级失败 */ - fun showOTAResultDialog(result: Boolean) + fun showOTAResultDialog(isShow: Boolean,result: Boolean) + + /** + * OTA升级完成且优雅停服完成、需要车辆下电的时候车端告知鹰眼,司机屏弹窗提示用车人执行车辆下电操作 + */ + fun showOTAPowerOffFinishDialog() /** * 展示数据落盘拷贝成功对话框 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 15376239ce..c03078f0af 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 @@ -490,10 +490,18 @@ object CallerHmiManager { /** * 展示OTA升级结果弹窗 + * @param isShow 是否展示 * @param result true升级成功 false升级失败 */ - fun showOTAResultDialog(result: Boolean){ - hmiProviderApi?.showOTAResultDialog(result) + fun showOTAResultDialog(isShow: Boolean,result: Boolean){ + hmiProviderApi?.showOTAResultDialog(isShow,result) + } + + /** + * OTA升级完成且优雅停服完成、需要车辆下电的时候车端告知鹰眼,司机屏弹窗提示用车人执行车辆下电操作 + */ + fun showOTAPowerOffFinishDialog(){ + hmiProviderApi?.showOTAPowerOffFinishDialog() } /**