[6.2.4]录包截图增加信息
This commit is contained in:
@@ -1,164 +0,0 @@
|
||||
package com.mogo.eagle.core.function.msgbox
|
||||
|
||||
import com.zhjt.mogo.adas.data.bean.MogoReport
|
||||
|
||||
/**
|
||||
* FM信息对照表
|
||||
*/
|
||||
class MsgFmData{
|
||||
/**
|
||||
* 当出现多个建议操作时,按照整车下电重启、请求人工驾驶接管、请求平行驾驶接管、系统重启、联系硬件工程师、联系运维工程师、联系软件工程师优先级递减的顺序,只展示最高优先级的内容
|
||||
*/
|
||||
enum class FaultAction(
|
||||
val faultType: String,//故障处理类别
|
||||
val faultAction: String,//故障处理行为定义
|
||||
val faultActionCode: String,//故障处理行为标识
|
||||
val faultActionDesc: String,//故障处理行为描述
|
||||
val faultLevel: Int//故障处理级别
|
||||
){
|
||||
//请求平行驾驶接管
|
||||
FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER("恢复策略","请求平行驾驶接管","FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER","如planing出站时,规划失败",5),
|
||||
//请求人工驾驶接管
|
||||
FM_ACT_NEED_MANNUAL_DERVING("恢复策略","请求人工驾驶接管","FM_ACT_NEED_MANNUAL_DERVING","如planing规划失败,且存在弱网判断",6),
|
||||
//系统重启
|
||||
FM_ACT_NEED_RESTART_SYSTEM("恢复策略","系统重启","FM_ACT_NEED_RESTART_SYSTEM","如检测到出现多个节点奔溃",4),
|
||||
//整车下电重启
|
||||
FM_ACT_MUST_VEHICLE_POWER_RESET("恢复策略","整车下电重启","FM_ACT_MUST_VEHICLE_POWER_RESET","如底盘无数据,需要下电重启",7),
|
||||
//请联系硬件工程师
|
||||
FM_ACT_CONTACT_HARDWARE_ENGINEER("人工处理","请联系硬件工程师","FM_ACT_CONTACT_HARDWARE_ENGINEER","硬件接线,域控启动等故障",3),
|
||||
//请联系运维工程师
|
||||
FM_ACT_CONTACT_OPERATIONS_ENGINEER("人工处理","请联系运维工程师","FM_ACT_CONTACT_OPERATIONS_ENGINEER","系统配置不对,网络等故障",2),
|
||||
//请联系软件工程师
|
||||
FM_ACT_CONTACT_SOFTWARE_ENGINEER("人工处理","请联系软件工程师","FM_ACT_CONTACT_SOFTWARE_ENGINEER","节点挂掉,无法启动等故障",1);
|
||||
|
||||
companion object{
|
||||
|
||||
//获取故障建议操作级别
|
||||
fun getFaultLevel(faultActionCode: String): Int{
|
||||
return when(faultActionCode){
|
||||
//请求平行驾驶接管
|
||||
FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER.faultActionCode -> FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER.faultLevel
|
||||
//请求人工驾驶接管
|
||||
FM_ACT_NEED_MANNUAL_DERVING.faultActionCode -> FM_ACT_NEED_MANNUAL_DERVING.faultLevel
|
||||
//系统重启
|
||||
FM_ACT_NEED_RESTART_SYSTEM.faultActionCode -> FM_ACT_NEED_RESTART_SYSTEM.faultLevel
|
||||
//整车下电重启
|
||||
FM_ACT_MUST_VEHICLE_POWER_RESET.faultActionCode -> FM_ACT_MUST_VEHICLE_POWER_RESET.faultLevel
|
||||
//请联系硬件工程师
|
||||
FM_ACT_CONTACT_HARDWARE_ENGINEER.faultActionCode -> FM_ACT_CONTACT_HARDWARE_ENGINEER.faultLevel
|
||||
//请联系运维工程师
|
||||
FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultActionCode ->FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultLevel
|
||||
//请联系软件工程师
|
||||
FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultActionCode -> FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultLevel
|
||||
else -> 0
|
||||
}
|
||||
}
|
||||
|
||||
//获取故障建议操作
|
||||
fun getFaultAction(faultActionLevel: Int): String{
|
||||
return when(faultActionLevel){
|
||||
//请求平行驾驶接管
|
||||
FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER.faultLevel -> FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER.faultAction
|
||||
//请求人工驾驶接管
|
||||
FM_ACT_NEED_MANNUAL_DERVING.faultLevel -> FM_ACT_NEED_MANNUAL_DERVING.faultAction
|
||||
//系统重启
|
||||
FM_ACT_NEED_RESTART_SYSTEM.faultLevel -> FM_ACT_NEED_RESTART_SYSTEM.faultAction
|
||||
//整车下电重启
|
||||
FM_ACT_MUST_VEHICLE_POWER_RESET.faultLevel -> FM_ACT_MUST_VEHICLE_POWER_RESET.faultAction
|
||||
//请联系硬件工程师
|
||||
FM_ACT_CONTACT_HARDWARE_ENGINEER.faultLevel -> FM_ACT_CONTACT_HARDWARE_ENGINEER.faultAction
|
||||
//请联系运维工程师
|
||||
FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultLevel ->FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultAction
|
||||
//请联系软件工程师
|
||||
FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultLevel -> FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultAction
|
||||
else -> ""
|
||||
}
|
||||
}
|
||||
|
||||
//获取故障建议操作Code值
|
||||
fun getFaultActionCode(faultActionLevel: Int): String{
|
||||
return when(faultActionLevel){
|
||||
//请求平行驾驶接管
|
||||
FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER.faultLevel -> FM_ACT_NEED_PARALLEL_DERVING_TAKEOVER.faultActionCode
|
||||
//请求人工驾驶接管
|
||||
FM_ACT_NEED_MANNUAL_DERVING.faultLevel -> FM_ACT_NEED_MANNUAL_DERVING.faultActionCode
|
||||
//系统重启
|
||||
FM_ACT_NEED_RESTART_SYSTEM.faultLevel -> FM_ACT_NEED_RESTART_SYSTEM.faultActionCode
|
||||
//整车下电重启
|
||||
FM_ACT_MUST_VEHICLE_POWER_RESET.faultLevel -> FM_ACT_MUST_VEHICLE_POWER_RESET.faultActionCode
|
||||
//请联系硬件工程师
|
||||
FM_ACT_CONTACT_HARDWARE_ENGINEER.faultLevel -> FM_ACT_CONTACT_HARDWARE_ENGINEER.faultActionCode
|
||||
//请联系运维工程师
|
||||
FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultLevel ->FM_ACT_CONTACT_OPERATIONS_ENGINEER.faultActionCode
|
||||
//请联系软件工程师
|
||||
FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultLevel -> FM_ACT_CONTACT_SOFTWARE_ENGINEER.faultActionCode
|
||||
else -> ""
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
enum class FaultResult(
|
||||
val resultType: String,//影响类别
|
||||
val resultDefine: String,//故障影响定义
|
||||
val resultCode: String,//故障影响的标识
|
||||
val resultDesc: String//后果对应的处理描述
|
||||
){
|
||||
//无法作业
|
||||
FM_RST_FUNCTION_LOST("功能影响","无法作业","FM_RST_FUNCTION_LOST","需要禁止作业,如扫盘故障,清扫车无法清扫作业"),
|
||||
//无法开放运营
|
||||
FM_RST_FORBID_OPEN_WORK("功能影响","无法开放运营","FM_RST_FORBID_OPEN_WORK","需要禁止运营,如安全带故障,可以自驾,不能载人"),
|
||||
//无法平行驾驶
|
||||
FM_RST_FORBID_PARALLEL_DERVING("驾驶影响","无法平行驾驶","FM_RST_FORBID_PARALLEL_DERVING","需要禁止平行驾驶"),
|
||||
//无法自动驾驶
|
||||
FM_RST_FORBID_AUTOPILOT_DERVING("驾驶影响","无法自动驾驶","FM_RST_FORBID_AUTOPILOT_DERVING","需要禁止自驾"),
|
||||
//无法手动驾驶
|
||||
FM_RST_FORBID_MANNUAL_DERVING("驾驶影响","无法手动驾驶","FM_RST_FORBID_MANNUAL_DERVING","需要禁止行车,如底盘存在故障,需要通知出来"),
|
||||
//失控,无法策略停车
|
||||
FM_RST_OUT_OF_CONTROL("安全影响","失控,无法策略停车","FM_RST_OUT_OF_CONTROL","需要立即紧急通知到人,车辆失控,如驾驶中controller挂掉,发送102重启");
|
||||
|
||||
companion object{
|
||||
//获取结果原因描述
|
||||
fun getResultDefine(resultCode: String): String{
|
||||
return when(resultCode){
|
||||
//无法作业
|
||||
FM_RST_FUNCTION_LOST.resultCode -> FM_RST_FUNCTION_LOST.resultDefine
|
||||
//无法开放运营
|
||||
FM_RST_FORBID_OPEN_WORK.resultCode -> FM_RST_FORBID_OPEN_WORK.resultDefine
|
||||
//无法平行驾驶
|
||||
FM_RST_FORBID_PARALLEL_DERVING.resultCode -> FM_RST_FORBID_PARALLEL_DERVING.resultDefine
|
||||
//无法自动驾驶
|
||||
FM_RST_FORBID_AUTOPILOT_DERVING.resultCode -> FM_RST_FORBID_AUTOPILOT_DERVING.resultDefine
|
||||
//无法手动驾驶
|
||||
FM_RST_FORBID_MANNUAL_DERVING.resultCode -> FM_RST_FORBID_MANNUAL_DERVING.resultDefine
|
||||
//失控,无法策略停车
|
||||
FM_RST_OUT_OF_CONTROL.resultCode -> FM_RST_OUT_OF_CONTROL.resultDefine
|
||||
else -> ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
companion object{
|
||||
|
||||
@JvmStatic
|
||||
fun getFmPolicyName(policyCode: String?): String{
|
||||
return when(policyCode){
|
||||
"FM_DP_NO_ACTION" -> "报告"
|
||||
"FM_DP_ONLY_WARNING" -> "警示"
|
||||
"FM_DP_SPEED_LIMIT1" -> "一级降速"
|
||||
"FM_DP_SPEED_LIMIT2" -> "二级降速"
|
||||
"FM_DP_SPEED_LIMIT3" -> "三级降速"
|
||||
"FM_DP_PNC_CHOOSE_STOP" -> "择机靠边停车"
|
||||
"FM_DP_COMFORTABLE_STOP" -> "立刻舒适停车"
|
||||
"FM_DP_EMERGENCY_STOP" -> "就地紧急停车"
|
||||
else -> "暂无"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -11,14 +11,27 @@ import androidx.lifecycle.Lifecycle.Event
|
||||
import androidx.lifecycle.LifecycleEventObserver
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.commons.module.status.IMogoStatusChangedListener
|
||||
import com.mogo.commons.module.status.MogoStatusManager
|
||||
import com.mogo.commons.module.status.StatusDescriptor
|
||||
import com.mogo.eagle.core.data.app.AppConfigInfo
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.data.deva.report.ReportEntity
|
||||
import com.mogo.eagle.core.data.map.MogoLocation
|
||||
import com.mogo.eagle.core.data.msgbox.FMInfoMsg
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxType
|
||||
import com.mogo.eagle.core.data.msgbox.MsgCategory
|
||||
import com.mogo.eagle.core.data.msgbox.RecordBagMsg
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
|
||||
import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxListener
|
||||
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager
|
||||
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxListenerManager
|
||||
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
@@ -32,8 +45,11 @@ import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPi
|
||||
import com.zhjt.mogo_core_function_devatools.ext.enqueuePop
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
import record_cache.RecordPanelOuterClass
|
||||
import kotlin.math.abs
|
||||
|
||||
internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordListener {
|
||||
internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordListener,
|
||||
IMoGoChassisLocationGCJ02Listener, IMsgBoxListener, IMoGoDevaToolsListener,
|
||||
IMogoStatusChangedListener {
|
||||
|
||||
const val TAG = "BadCase"
|
||||
|
||||
@@ -45,6 +61,14 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis
|
||||
fun init(context: Context) {
|
||||
CallerAutopilotRecordListenerManager.addListener(TAG, this)
|
||||
SpeechUtils.init(context)
|
||||
//定位监听, 传false是高德坐标系
|
||||
CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 1, this)
|
||||
//消息盒子监听,获取FM和Report信息
|
||||
CallerMsgBoxListenerManager.addListener(TAG,this)
|
||||
CallerDevaToolsListenerManager.addListener(TAG, this)
|
||||
// 云socket连接状态
|
||||
MogoStatusManager.getInstance()
|
||||
.registerStatusChangedListener(TAG, StatusDescriptor.CLOUD_SOCKET, this)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -302,4 +326,36 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis
|
||||
|
||||
}
|
||||
|
||||
override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) {
|
||||
mogoLocation?.let {
|
||||
BadCaseConfig.currentSpeed = (abs(it.gnssSpeed) * 3.6f).toInt()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDataChanged(category: MsgCategory, msgBoxList: MsgBoxBean) {
|
||||
if(category == MsgCategory.SYS_INFO){
|
||||
//上报
|
||||
BadCaseConfig.newReportEntity = msgBoxList.bean as ReportEntity
|
||||
}else if(category == MsgCategory.FM_INFO){
|
||||
//FM
|
||||
BadCaseConfig.newFMInfoMsg = msgBoxList.bean as FMInfoMsg
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun gpsStatus(status: Boolean) {
|
||||
super.gpsStatus(status)
|
||||
BadCaseConfig.gpsStatus = "GPS${if (status) "正常" else "异常"}"
|
||||
}
|
||||
|
||||
override fun tracingStatus(status: Boolean) {
|
||||
super.tracingStatus(status)
|
||||
BadCaseConfig.tracingStatus = "寻迹算路${if (status) "正常" else "异常"}"
|
||||
}
|
||||
|
||||
override fun onStatusChanged(descriptor: StatusDescriptor?, isTrue: Boolean) {
|
||||
BadCaseConfig.socketStatus = "云Socket连接${if (isTrue) "正常" else "异常"}"
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener
|
||||
import com.mogo.eagle.core.function.api.devatools.badcase.BadCaseNetListener
|
||||
import com.mogo.eagle.core.function.api.map.deva.IMoGoMapScreenListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsNetManager
|
||||
@@ -645,6 +646,23 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
|
||||
* 高精地图截图回调
|
||||
*/
|
||||
override fun onMapScreen(bitmap: Bitmap) {
|
||||
//在截图上保存即时信息
|
||||
val time = "时间:${millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat())}"
|
||||
val lineId = "路线ID:${CallerAutoPilotStatusListenerManager.getLineId()}"
|
||||
val state = when(CallerAutoPilotStatusListenerManager.getState()){
|
||||
0->"自驾状态:不可自驾"
|
||||
1->"自驾状态:可自驾"
|
||||
2->"自驾状态:自驾中"
|
||||
7->"自驾状态:平行驾驶中"
|
||||
else->"自驾状态:未知"
|
||||
}
|
||||
val speed = "当前车速:${BadCaseConfig.currentSpeed}"
|
||||
|
||||
|
||||
val outBitmap = RecordBitmapUtils.drawTextOnBitmap(bitmap,time,lineId,state,speed,
|
||||
BadCaseConfig.gpsStatus,BadCaseConfig.tracingStatus,BadCaseConfig.socketStatus
|
||||
,BadCaseConfig.newFMInfoMsg,BadCaseConfig.newReportEntity)
|
||||
|
||||
//图片保存本地
|
||||
val currentDay = millis2String(System.currentTimeMillis(), TimeUtils.getMdFormat())
|
||||
val fileDir: String = Environment.getExternalStorageDirectory().absolutePath + File.separator+
|
||||
@@ -654,7 +672,12 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
|
||||
if (!File(fileDir).exists()) {
|
||||
File(fileDir).mkdirs()
|
||||
}
|
||||
RecordBitmapUtils.bitmap2Path(bitmap,path)
|
||||
if(outBitmap != null){
|
||||
RecordBitmapUtils.bitmap2Path(outBitmap,path)
|
||||
}else{
|
||||
RecordBitmapUtils.bitmap2Path(bitmap,path)
|
||||
}
|
||||
|
||||
//遍历是否有非当日的文件并删除
|
||||
RecordBitmapUtils.deleteExpiredFile(currentDay)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.zhjt.mogo_core_function_devatools.badcase.consts
|
||||
|
||||
import com.mogo.eagle.core.data.deva.badcase.BagInfoEntity
|
||||
import com.mogo.eagle.core.data.deva.report.ReportEntity
|
||||
import com.mogo.eagle.core.data.msgbox.FMInfoMsg
|
||||
|
||||
/**
|
||||
* @author XuXinChao
|
||||
@@ -29,6 +31,23 @@ object BadCaseConfig {
|
||||
//工控机版本
|
||||
@JvmField
|
||||
var dockerVersion:String ?= null
|
||||
//当前车速
|
||||
@JvmField
|
||||
var currentSpeed: Int = 0
|
||||
//最新的上报消息
|
||||
@JvmField
|
||||
var newReportEntity: ReportEntity ?= null
|
||||
//最新的FM消息
|
||||
@JvmField
|
||||
var newFMInfoMsg: FMInfoMsg ?= null
|
||||
//GPS状态
|
||||
@JvmField
|
||||
var gpsStatus: String ?= null
|
||||
//寻迹算路
|
||||
@JvmField
|
||||
var tracingStatus: String ?= null
|
||||
//云Socket连接状态
|
||||
var socketStatus: String ?= null
|
||||
@JvmField
|
||||
var recordKeyList:ArrayList<Long> = ArrayList()
|
||||
//自定义Topic清单列表
|
||||
|
||||
@@ -6,6 +6,10 @@ import android.graphics.Color
|
||||
import android.graphics.Paint
|
||||
import android.os.Environment
|
||||
import android.util.Log
|
||||
import com.mogo.eagle.core.data.deva.report.ReportEntity
|
||||
import com.mogo.eagle.core.data.msgbox.FMInfoMsg
|
||||
import com.mogo.eagle.core.data.msgbox.MsgFmData
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.biz.InitiativeBadCaseWindow
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
@@ -19,7 +23,7 @@ object RecordBitmapUtils {
|
||||
fun bitmap2Path(bitmap: Bitmap, path: String?): String? {
|
||||
try {
|
||||
val os: OutputStream = FileOutputStream(path)
|
||||
bitmap.compress(Bitmap.CompressFormat.PNG, 100, os)
|
||||
bitmap.compress(Bitmap.CompressFormat.PNG, 80, os)
|
||||
os.flush()
|
||||
os.close()
|
||||
} catch (e: java.lang.Exception) {
|
||||
@@ -49,14 +53,64 @@ object RecordBitmapUtils {
|
||||
/**
|
||||
* 在指定Bitmap中绘制文字
|
||||
*/
|
||||
fun drawTextOnBitmap(bitmap: Bitmap, text: String?, x: Int, y: Int): Bitmap? {
|
||||
fun drawTextOnBitmap(bitmap: Bitmap, time: String,lineId: String,state: String,currentSpeed: String
|
||||
,gpsStatus: String?,tracingStatus: String?,socketStatus: String?
|
||||
,fm: FMInfoMsg?,report: ReportEntity?
|
||||
): Bitmap? {
|
||||
val mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true)
|
||||
val canvas = Canvas(mutableBitmap)
|
||||
val paint = Paint()
|
||||
paint.color = Color.RED
|
||||
paint.textSize = 100f
|
||||
paint.textSize = 50f
|
||||
paint.isAntiAlias = true
|
||||
canvas.drawText(text!!, x.toFloat(), y.toFloat(), paint)
|
||||
canvas.drawText(time, 100f, 100f, paint)
|
||||
canvas.drawText(lineId,100f,200f,paint)
|
||||
canvas.drawText(state,100f,300f,paint)
|
||||
canvas.drawText(currentSpeed,100f,400f,paint)
|
||||
|
||||
gpsStatus?.let {
|
||||
canvas.drawText(it,1000f,100f,paint)
|
||||
}
|
||||
tracingStatus?.let {
|
||||
canvas.drawText(it,1000f,200f,paint)
|
||||
}
|
||||
socketStatus?.let {
|
||||
canvas.drawText(it,1000f,300f,paint)
|
||||
}
|
||||
|
||||
fm?.let {
|
||||
canvas.drawText("FM:${MsgFmData.getFmPolicyName(it.policyCode)}",100f,600f,paint)
|
||||
canvas.drawText("故障策略:${MsgFmData.getFmPolicyName(it.policyCode)}(${it.policyCode})",100f,700f,paint)
|
||||
//故障原因
|
||||
if(it.fmInfoList.isNullOrEmpty()){
|
||||
canvas.drawText("故障原因:暂无",100f,800f,paint)
|
||||
}else{
|
||||
val fmFaultReason = StringBuilder()
|
||||
fmFaultReason.append("故障原因:")
|
||||
for((index,info) in it.fmInfoList!!.withIndex()){
|
||||
fmFaultReason.append(info.faultName)
|
||||
if(info.faultId.isNotBlank()){
|
||||
fmFaultReason.append("(")
|
||||
fmFaultReason.append(info.faultId)
|
||||
fmFaultReason.append(")")
|
||||
}
|
||||
if(index!=(it.fmInfoList!!.size-1)){
|
||||
fmFaultReason.append("/")
|
||||
}
|
||||
}
|
||||
canvas.drawText(fmFaultReason.toString(),100f,800f,paint)
|
||||
}
|
||||
}
|
||||
report?.let {
|
||||
var resultStr = "上报类型:"
|
||||
for (result in it.resultList) {
|
||||
resultStr =
|
||||
"${resultStr}${CallerAutoPilotControlManager.getReportResultDesc(result)}"
|
||||
}
|
||||
canvas.drawText(resultStr,100f,1000f,paint)
|
||||
canvas.drawText("原因:${it.msg}",100f,1100f,paint)
|
||||
canvas.drawText("消息来源:${it.src}",100f,1200f,paint)
|
||||
}
|
||||
return mutableBitmap
|
||||
}
|
||||
|
||||
|
||||
@@ -19,8 +19,6 @@ import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxEventListenerManager
|
||||
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.function.msgbox.MsgBoxConfig
|
||||
import com.mogo.eagle.core.function.msgbox.MsgFmData
|
||||
import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp
|
||||
import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform
|
||||
import com.mogo.eagle.core.utilcode.util.TimeUtils
|
||||
|
||||
@@ -18,7 +18,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.function.msgbox.MsgFmData
|
||||
import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp
|
||||
import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform
|
||||
import com.mogo.eagle.core.utilcode.util.ResourceUtils.getDrawable
|
||||
|
||||
Reference in New Issue
Block a user