[8.3.0] FSM Event消息 无法起自驾和异常推自驾消息添加到消息盒子中
This commit is contained in:
@@ -50,6 +50,7 @@ class MsgBoxTabAdapter(private val activity: Activity) :
|
||||
private val nde = 22 //NDE消息车龙
|
||||
private val ota = 23 //OTA升级消息
|
||||
private val cloud = 24 //云控基础平台
|
||||
private val fsmEvent = 25
|
||||
|
||||
private val none = -1
|
||||
|
||||
@@ -165,6 +166,11 @@ class MsgBoxTabAdapter(private val activity: Activity) :
|
||||
.inflate(R.layout.item_tab_cloud,parent,false)
|
||||
return MsgBoxCloud(view)
|
||||
}
|
||||
fsmEvent -> {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
.inflate(R.layout.item_tab_fm,parent,false)
|
||||
return FSMEventInfoHolder(view)
|
||||
}
|
||||
//V2X消息
|
||||
else -> {
|
||||
val view = LayoutInflater.from(parent.context)
|
||||
@@ -202,170 +208,176 @@ class MsgBoxTabAdapter(private val activity: Activity) :
|
||||
//FM信息
|
||||
is FmInfoHolder -> {
|
||||
data?.let {
|
||||
val fmInfoMsg = it[position].bean as FMInfoMsg
|
||||
//时间显示
|
||||
holder.tvFmTime.text =
|
||||
val temp = it[position]
|
||||
if (temp.type == MsgBoxType.FMINFO) {
|
||||
val fmInfoMsg = temp.bean as FMInfoMsg
|
||||
//时间显示
|
||||
holder.tvFmTime.text =
|
||||
// "时间:${fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1) }}"
|
||||
"${StringUtils.getString(R.string.module_core_time)}${fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1) }}"
|
||||
//建议操作
|
||||
if(fmInfoMsg.fmInfoList.isNullOrEmpty()){
|
||||
//建议操作暂无
|
||||
"${StringUtils.getString(R.string.module_core_time)}${fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1) }}"
|
||||
//建议操作
|
||||
if (fmInfoMsg.fmInfoList.isNullOrEmpty()) {
|
||||
//建议操作暂无
|
||||
// holder.tvFmAction.text = "建议操作:暂无"
|
||||
holder.tvFmAction.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
|
||||
//Title
|
||||
// holder.tvFmTitle.text = "暂无建议操作"
|
||||
holder.tvFmTitle.text = StringUtils.getString(R.string.module_core_not_available_suggested_procedure)
|
||||
}else{
|
||||
val receiveFaultLevel = ArrayList<Int>()
|
||||
fmInfoMsg.fmInfoList!!.forEach { info ->
|
||||
if(info.faultActionCount != 0){
|
||||
info.faultActionList.forEach { action ->
|
||||
//如果不包含此故障Level,则进行添加
|
||||
if(!receiveFaultLevel.contains(MsgFmData.FaultAction.getFaultLevel(action))){
|
||||
receiveFaultLevel.add(MsgFmData.FaultAction.getFaultLevel(action))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//对faultLevel集合进行排序,按照顺序输出建议操作
|
||||
if(receiveFaultLevel.size > 0){
|
||||
val faultActionStr: StringBuilder = StringBuilder()
|
||||
// faultActionStr.append("建议操作:")
|
||||
faultActionStr.append(StringUtils.getString(R.string.module_core_suggested_procedure))
|
||||
receiveFaultLevel.sort()
|
||||
// receiveFaultLevel.reverse()
|
||||
//Title
|
||||
holder.tvFmTitle.text = MsgFmData.FaultAction.getFaultTitle(receiveFaultLevel[0])
|
||||
//不同级别的Icon显示
|
||||
when(receiveFaultLevel[0]){
|
||||
0->{
|
||||
//重度预警样式
|
||||
holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_severe_warning))
|
||||
}
|
||||
1,2,3->{
|
||||
//中度预警样式
|
||||
holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_moderate_warning))
|
||||
}
|
||||
4,5->{
|
||||
//轻度预警样式
|
||||
holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_mild_warning))
|
||||
}
|
||||
}
|
||||
receiveFaultLevel.forEach {level->
|
||||
if(MsgFmData.FaultAction.getFaultAction(level).isNotBlank()){
|
||||
faultActionStr.append(MsgFmData.FaultAction.getFaultAction(level))
|
||||
}
|
||||
if(MsgFmData.FaultAction.getFaultActionCode(level).isNotBlank()){
|
||||
faultActionStr.append("(")
|
||||
faultActionStr.append(MsgFmData.FaultAction.getFaultActionCode(level))
|
||||
faultActionStr.append(")")
|
||||
}
|
||||
if(MsgFmData.FaultAction.getFaultAction(level).isNotBlank() || MsgFmData.FaultAction.getFaultActionCode(level).isNotBlank()){
|
||||
faultActionStr.append(";")
|
||||
}
|
||||
}
|
||||
if(faultActionStr.length > 5){
|
||||
if(faultActionStr.endsWith(";")){
|
||||
faultActionStr.deleteCharAt(faultActionStr.lastIndex)
|
||||
}
|
||||
holder.tvFmAction.text = faultActionStr.toString()
|
||||
}else{
|
||||
// holder.tvFmAction.text = "建议操作:暂无"
|
||||
holder.tvFmAction.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
|
||||
}
|
||||
}else{
|
||||
// holder.tvFmAction.text = "建议操作:暂无"
|
||||
holder.tvFmAction.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
|
||||
//轻度预警样式
|
||||
holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_mild_warning))
|
||||
}
|
||||
}
|
||||
//故障策略
|
||||
// holder.tvFmFault.text = "故障策略:${MsgFmData.getFmPolicyName(fmInfoMsg.policyCode)}(${fmInfoMsg.policyCode})"
|
||||
holder.tvFmFault.text = "${StringUtils.getString(R.string.module_core_fault_handling_strategy)}${MsgFmData.getFmPolicyName(fmInfoMsg.policyCode)}(${fmInfoMsg.policyCode})"
|
||||
//故障原因
|
||||
if(fmInfoMsg.fmInfoList.isNullOrEmpty()){
|
||||
// holder.tvFmReason.text = "故障原因:暂无"
|
||||
holder.tvFmReason.text = StringUtils.getString(R.string.module_core_failure_cause_not_available)
|
||||
}else{
|
||||
val fmFaultReason = StringBuilder()
|
||||
// fmFaultReason.append("故障原因:")
|
||||
fmFaultReason.append(StringUtils.getString(R.string.module_core_failure_cause))
|
||||
for((index,info) in fmInfoMsg.fmInfoList!!.withIndex()){
|
||||
fmFaultReason.append(info.faultName)
|
||||
if(info.faultId.isNotBlank()){
|
||||
fmFaultReason.append("(")
|
||||
fmFaultReason.append(info.faultId)
|
||||
fmFaultReason.append(")")
|
||||
}
|
||||
if(index!=(fmInfoMsg.fmInfoList!!.size-1)){
|
||||
fmFaultReason.append("/")
|
||||
}
|
||||
}
|
||||
holder.tvFmReason.text = fmFaultReason.toString()
|
||||
}
|
||||
//故障后果
|
||||
if(fmInfoMsg.fmInfoList.isNullOrEmpty()){
|
||||
// holder.tvFmResult.text = "故障后果:暂无"
|
||||
holder.tvFmResult.text = StringUtils.getString(R.string.module_core_consequences_failure_not_available)
|
||||
}else{
|
||||
val fmFaultResult = StringBuilder()
|
||||
// fmFaultResult.append("故障后果:")
|
||||
fmFaultResult.append(StringUtils.getString(R.string.module_core_consequences_failure))
|
||||
fmInfoMsg.fmInfoList!!.forEach { info->
|
||||
if(info.faultResultCount != 0){
|
||||
info.faultResultList.forEach { result->
|
||||
if(MsgFmData.FaultResult.getResultDefine(result).isNotBlank()){
|
||||
fmFaultResult.append(MsgFmData.FaultResult.getResultDefine(result))
|
||||
}
|
||||
if(result.isNotBlank()){
|
||||
fmFaultResult.append("(")
|
||||
fmFaultResult.append(result)
|
||||
fmFaultResult.append(")")
|
||||
}
|
||||
if(MsgFmData.FaultResult.getResultDefine(result).isNotBlank() || result.isNotBlank()){
|
||||
fmFaultResult.append("/")
|
||||
//Title
|
||||
// holder.tvFmTitle.text = "暂无建议操作"
|
||||
holder.tvFmTitle.text = StringUtils.getString(R.string.module_core_not_available_suggested_procedure)
|
||||
} else {
|
||||
val receiveFaultLevel = ArrayList<Int>()
|
||||
fmInfoMsg.fmInfoList!!.forEach { info ->
|
||||
if (info.faultActionCount != 0) {
|
||||
info.faultActionList.forEach { action ->
|
||||
//如果不包含此故障Level,则进行添加
|
||||
if (!receiveFaultLevel.contains(MsgFmData.FaultAction.getFaultLevel(action))) {
|
||||
receiveFaultLevel.add(MsgFmData.FaultAction.getFaultLevel(action))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//对faultLevel集合进行排序,按照顺序输出建议操作
|
||||
if (receiveFaultLevel.size > 0) {
|
||||
val faultActionStr: StringBuilder = StringBuilder()
|
||||
// faultActionStr.append("建议操作:")
|
||||
faultActionStr.append(StringUtils.getString(R.string.module_core_suggested_procedure))
|
||||
receiveFaultLevel.sort()
|
||||
// receiveFaultLevel.reverse()
|
||||
//Title
|
||||
holder.tvFmTitle.text = MsgFmData.FaultAction.getFaultTitle(receiveFaultLevel[0])
|
||||
//不同级别的Icon显示
|
||||
when (receiveFaultLevel[0]) {
|
||||
0 -> {
|
||||
//重度预警样式
|
||||
holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_severe_warning))
|
||||
}
|
||||
|
||||
1, 2, 3 -> {
|
||||
//中度预警样式
|
||||
holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_moderate_warning))
|
||||
}
|
||||
|
||||
4, 5 -> {
|
||||
//轻度预警样式
|
||||
holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_mild_warning))
|
||||
}
|
||||
}
|
||||
receiveFaultLevel.forEach { level ->
|
||||
if (MsgFmData.FaultAction.getFaultAction(level).isNotBlank()) {
|
||||
faultActionStr.append(MsgFmData.FaultAction.getFaultAction(level))
|
||||
}
|
||||
if (MsgFmData.FaultAction.getFaultActionCode(level).isNotBlank()) {
|
||||
faultActionStr.append("(")
|
||||
faultActionStr.append(MsgFmData.FaultAction.getFaultActionCode(level))
|
||||
faultActionStr.append(")")
|
||||
}
|
||||
if (MsgFmData.FaultAction.getFaultAction(level).isNotBlank() || MsgFmData.FaultAction.getFaultActionCode(level).isNotBlank()) {
|
||||
faultActionStr.append(";")
|
||||
}
|
||||
}
|
||||
if (faultActionStr.length > 5) {
|
||||
if (faultActionStr.endsWith(";")) {
|
||||
faultActionStr.deleteCharAt(faultActionStr.lastIndex)
|
||||
}
|
||||
holder.tvFmAction.text = faultActionStr.toString()
|
||||
} else {
|
||||
// holder.tvFmAction.text = "建议操作:暂无"
|
||||
holder.tvFmAction.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
|
||||
}
|
||||
} else {
|
||||
// holder.tvFmAction.text = "建议操作:暂无"
|
||||
holder.tvFmAction.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
|
||||
//轻度预警样式
|
||||
holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_mild_warning))
|
||||
}
|
||||
}
|
||||
if(fmFaultResult.endsWith("/")){
|
||||
holder.tvFmResult.text = fmFaultResult.deleteCharAt(fmFaultResult.lastIndex).toString()
|
||||
}else{
|
||||
// holder.tvFmResult.text = "故障后果:暂无"
|
||||
//故障策略
|
||||
// holder.tvFmFault.text = "故障策略:${MsgFmData.getFmPolicyName(fmInfoMsg.policyCode)}(${fmInfoMsg.policyCode})"
|
||||
holder.tvFmFault.text =
|
||||
"${StringUtils.getString(R.string.module_core_fault_handling_strategy)}${MsgFmData.getFmPolicyName(fmInfoMsg.policyCode)}(${fmInfoMsg.policyCode})"
|
||||
//故障原因
|
||||
if (fmInfoMsg.fmInfoList.isNullOrEmpty()) {
|
||||
// holder.tvFmReason.text = "故障原因:暂无"
|
||||
holder.tvFmReason.text = StringUtils.getString(R.string.module_core_failure_cause_not_available)
|
||||
} else {
|
||||
val fmFaultReason = StringBuilder()
|
||||
// fmFaultReason.append("故障原因:")
|
||||
fmFaultReason.append(StringUtils.getString(R.string.module_core_failure_cause))
|
||||
for ((index, info) in fmInfoMsg.fmInfoList!!.withIndex()) {
|
||||
fmFaultReason.append(info.faultName)
|
||||
if (info.faultId.isNotBlank()) {
|
||||
fmFaultReason.append("(")
|
||||
fmFaultReason.append(info.faultId)
|
||||
fmFaultReason.append(")")
|
||||
}
|
||||
if (index != (fmInfoMsg.fmInfoList!!.size - 1)) {
|
||||
fmFaultReason.append("/")
|
||||
}
|
||||
}
|
||||
holder.tvFmReason.text = fmFaultReason.toString()
|
||||
}
|
||||
//故障后果
|
||||
if (fmInfoMsg.fmInfoList.isNullOrEmpty()) {
|
||||
// holder.tvFmResult.text = "故障后果:暂无"
|
||||
holder.tvFmResult.text = StringUtils.getString(R.string.module_core_consequences_failure_not_available)
|
||||
} else {
|
||||
val fmFaultResult = StringBuilder()
|
||||
// fmFaultResult.append("故障后果:")
|
||||
fmFaultResult.append(StringUtils.getString(R.string.module_core_consequences_failure))
|
||||
fmInfoMsg.fmInfoList!!.forEach { info ->
|
||||
if (info.faultResultCount != 0) {
|
||||
info.faultResultList.forEach { result ->
|
||||
if (MsgFmData.FaultResult.getResultDefine(result).isNotBlank()) {
|
||||
fmFaultResult.append(MsgFmData.FaultResult.getResultDefine(result))
|
||||
}
|
||||
if (result.isNotBlank()) {
|
||||
fmFaultResult.append("(")
|
||||
fmFaultResult.append(result)
|
||||
fmFaultResult.append(")")
|
||||
}
|
||||
if (MsgFmData.FaultResult.getResultDefine(result).isNotBlank() || result.isNotBlank()) {
|
||||
fmFaultResult.append("/")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (fmFaultResult.endsWith("/")) {
|
||||
holder.tvFmResult.text = fmFaultResult.deleteCharAt(fmFaultResult.lastIndex).toString()
|
||||
} else {
|
||||
// holder.tvFmResult.text = "故障后果:暂无"
|
||||
holder.tvFmResult.text = StringUtils.getString(R.string.module_core_consequences_failure_not_available)
|
||||
}
|
||||
}
|
||||
}
|
||||
//对布局进行展开折叠操作
|
||||
if(fmInfoMsg.isShow){
|
||||
//对布局进行展开折叠操作
|
||||
if (fmInfoMsg.isShow) {
|
||||
// holder.tvFmShowStatus.text = "收起"
|
||||
holder.tvFmShowStatus.text = StringUtils.getString(R.string.module_core_pack_up)
|
||||
holder.tvFmFault.visibility = View.VISIBLE
|
||||
holder.tvFmReason.visibility = View.VISIBLE
|
||||
holder.tvFmResult.visibility = View.VISIBLE
|
||||
}else{
|
||||
// holder.tvFmShowStatus.text = "展开"
|
||||
holder.tvFmShowStatus.text = StringUtils.getString(R.string.module_core_unfold)
|
||||
holder.tvFmFault.visibility = View.GONE
|
||||
holder.tvFmReason.visibility = View.GONE
|
||||
holder.tvFmResult.visibility = View.GONE
|
||||
}
|
||||
holder.tvFmShowStatus.setOnClickListener{
|
||||
if(!fmInfoMsg.isShow){
|
||||
fmInfoMsg.isShow = true
|
||||
// holder.tvFmShowStatus.text = "收起"
|
||||
holder.tvFmShowStatus.text = StringUtils.getString(R.string.module_core_pack_up)
|
||||
holder.tvFmFault.visibility = View.VISIBLE
|
||||
holder.tvFmReason.visibility = View.VISIBLE
|
||||
holder.tvFmResult.visibility = View.VISIBLE
|
||||
}else{
|
||||
fmInfoMsg.isShow = false
|
||||
// holder.tvFmShowStatus.text = "展开"
|
||||
} else {
|
||||
// holder.tvFmShowStatus.text = "展开"
|
||||
holder.tvFmShowStatus.text = StringUtils.getString(R.string.module_core_unfold)
|
||||
holder.tvFmFault.visibility = View.GONE
|
||||
holder.tvFmReason.visibility = View.GONE
|
||||
holder.tvFmResult.visibility = View.GONE
|
||||
}
|
||||
holder.tvFmShowStatus.setOnClickListener {
|
||||
if (!fmInfoMsg.isShow) {
|
||||
fmInfoMsg.isShow = true
|
||||
// holder.tvFmShowStatus.text = "收起"
|
||||
holder.tvFmShowStatus.text = StringUtils.getString(R.string.module_core_pack_up)
|
||||
holder.tvFmFault.visibility = View.VISIBLE
|
||||
holder.tvFmReason.visibility = View.VISIBLE
|
||||
holder.tvFmResult.visibility = View.VISIBLE
|
||||
} else {
|
||||
fmInfoMsg.isShow = false
|
||||
// holder.tvFmShowStatus.text = "展开"
|
||||
holder.tvFmShowStatus.text = StringUtils.getString(R.string.module_core_unfold)
|
||||
holder.tvFmFault.visibility = View.GONE
|
||||
holder.tvFmReason.visibility = View.GONE
|
||||
holder.tvFmResult.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -627,6 +639,47 @@ class MsgBoxTabAdapter(private val activity: Activity) :
|
||||
holder.tvCloudTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat())
|
||||
}
|
||||
}
|
||||
is FSMEventInfoHolder -> {
|
||||
data?.let {
|
||||
val temp = it[position]
|
||||
if (temp.type == MsgBoxType.FSM_EVENT) {
|
||||
holder.ivFmImage.setImageResource(R.drawable.icon_warning_fsm_event)
|
||||
holder.tvFmReason.visibility = View.GONE
|
||||
holder.tvFmResult.visibility = View.GONE
|
||||
holder.tvFmFault.visibility = View.GONE
|
||||
val fsmEventMsg = temp.bean as FSMEventMsg
|
||||
//时间显示
|
||||
holder.tvFmTime.text =
|
||||
"${StringUtils.getString(R.string.module_core_time)}${fsmEventMsg.timestamp.let { it1 -> TimeUtils.millis2String(it1) }}"
|
||||
|
||||
holder.tvFmTitle.text = fsmEventMsg.title
|
||||
holder.tvFmShowStatus.visibility = if (fsmEventMsg.content.contains(';') || fsmEventMsg.content.contains(';')) View.VISIBLE else View.GONE
|
||||
//对布局进行展开折叠操作
|
||||
if (fsmEventMsg.isShow) {
|
||||
// holder.tvFmShowStatus.text = "收起"
|
||||
holder.tvFmShowStatus.text = StringUtils.getString(R.string.module_core_pack_up)
|
||||
holder.tvFmAction.text = StringUtils.getString(R.string.module_core_failure_cause) + fsmEventMsg.content
|
||||
} else {
|
||||
// holder.tvFmShowStatus.text = "展开"
|
||||
holder.tvFmShowStatus.text = StringUtils.getString(R.string.module_core_unfold)
|
||||
holder.tvFmAction.text = StringUtils.getString(R.string.module_core_failure_cause) + fsmEventMsg.summaryContent
|
||||
}
|
||||
holder.tvFmShowStatus.setOnClickListener {
|
||||
if (!fsmEventMsg.isShow) {
|
||||
fsmEventMsg.isShow = true
|
||||
// holder.tvFmShowStatus.text = "收起"
|
||||
holder.tvFmShowStatus.text = StringUtils.getString(R.string.module_core_pack_up)
|
||||
holder.tvFmAction.text = StringUtils.getString(R.string.module_core_failure_cause) + fsmEventMsg.content
|
||||
} else {
|
||||
fsmEventMsg.isShow = false
|
||||
// holder.tvFmShowStatus.text = "展开"
|
||||
holder.tvFmShowStatus.text = StringUtils.getString(R.string.module_core_unfold)
|
||||
holder.tvFmAction.text = StringUtils.getString(R.string.module_core_failure_cause) + fsmEventMsg.summaryContent
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -677,6 +730,8 @@ class MsgBoxTabAdapter(private val activity: Activity) :
|
||||
cloud
|
||||
} else if(data!![position].type == MsgBoxType.V2X || data!![position].type == MsgBoxType.OBU){
|
||||
v2x
|
||||
}else if (data!![position].type == MsgBoxType.FSM_EVENT){
|
||||
fsmEvent
|
||||
} else {
|
||||
none
|
||||
}
|
||||
@@ -805,5 +860,15 @@ class MsgBoxTabAdapter(private val activity: Activity) :
|
||||
var tvCloudTime: TextView = itemView.findViewById(R.id.tvCloudTime)
|
||||
var tvCloudContent: TextView = itemView.findViewById(R.id.tvCloudContent)
|
||||
}
|
||||
|
||||
//FSM Evet
|
||||
class FSMEventInfoHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
|
||||
var ivFmImage: ImageView = itemView.findViewById(R.id.ivFmImage) //故障级别图标
|
||||
var tvFmTitle: TextView = itemView.findViewById(R.id.tvFmTitle) //标题展示故障策略
|
||||
var tvFmShowStatus: TextView = itemView.findViewById(R.id.tvFmShowStatus) //折叠状态
|
||||
var tvFmTime: TextView = itemView.findViewById(R.id.tvFmTime) //发生时间
|
||||
var tvFmAction: TextView = itemView.findViewById(R.id.tvFmAction) //建议操作
|
||||
var tvFmFault: TextView = itemView.findViewById(R.id.tvFmFault) //故障策略
|
||||
var tvFmReason: TextView = itemView.findViewById(R.id.tvFmReason) //故障原因
|
||||
var tvFmResult: TextView = itemView.findViewById(R.id.tvFmResult) //后果
|
||||
}
|
||||
}
|
||||
@@ -154,8 +154,9 @@ class DriverMsgBoxBubbleView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
} else if (category == MsgCategory.FM_INFO) {
|
||||
CallerMsgBoxEventListenerManager.invokeUpdateTipListener(true)
|
||||
if (FunctionBuildConfig.isTakeoverRemind) {
|
||||
if (msgBoxBean.type == MsgBoxType.FMINFO) {
|
||||
CallerMsgBoxEventListenerManager.invokeUpdateTipListener(true)
|
||||
if (FunctionBuildConfig.isTakeoverRemind) {
|
||||
|
||||
// //属于停车警示(包括择机靠边停车、立即舒适停车、就地紧急停车)时,需要弹出消息气泡并伴有提示音
|
||||
// var curFaultLevel = 5 //默认级别,遍历数组找出级别最高的(level数越小,级别越高)
|
||||
@@ -192,64 +193,63 @@ class DriverMsgBoxBubbleView @JvmOverloads constructor(
|
||||
// }
|
||||
// }
|
||||
|
||||
/**
|
||||
* 8.2.0需求:定义三种不同提示强度的异常提示交互
|
||||
* 不判断驾驶状态,发生相应故障时立即有相应的提醒
|
||||
* 若同一时间触发多个多种级别异常,则按照最高级别的异常交互元素做提醒,低级别的异常不做特殊提醒
|
||||
* 若同一时间触发多个同一级别异常,则同一时刻只提醒一次,不互相打断
|
||||
* 除此以外不做其他提示频率限制
|
||||
*
|
||||
* 一级:安全停车
|
||||
* FM_DP_EMERGENCY_STOP(就地紧急停车)、FM_DP_COMFORTABLE_STOP(立刻舒适停车)、FM_DP_PNC_CHOOSE_STOP(择机靠边停车)
|
||||
* 交互:图像、TTS、消息盒子
|
||||
*
|
||||
* 二级:降速行驶
|
||||
* FM_DP_SPEED_LIMIT3(三级降速)、FM_DP_SPEED_LIMIT2(二级降速)、FM_DP_SPEED_LIMIT1(一级降速)
|
||||
* 交互:TTS、消息盒子
|
||||
*
|
||||
* 三级:无操作
|
||||
* FM_DP_ONLY_WARNING(警示)、FM_DP_NO_ACTION(报告)
|
||||
* ps:以上异常提醒受司机屏工具箱-运营面板-美化模式-接管提醒开关控制,默认开启有全量提示,关闭后无语音/图像提示,只有消息盒子红点展示
|
||||
*/
|
||||
val fmInfoMsg = msgBoxBean.bean as FMInfoMsg
|
||||
when(MsgFmData.getFmPolicyLevel(fmInfoMsg.policyCode)){
|
||||
//一级
|
||||
MsgFmData.LEVEL_ONE->{
|
||||
//接管图像提示、语音提示
|
||||
CallerDevaToolsManager.takeOver(TAKE_OVER_REQUEST)
|
||||
CallerHmiManager.warningV2X(
|
||||
EventTypeEnumNew.TAKE_OVER_EVENT.poiType,
|
||||
EventTypeEnumNew.TAKE_OVER_EVENT.content,
|
||||
/**
|
||||
* 8.2.0需求:定义三种不同提示强度的异常提示交互
|
||||
* 不判断驾驶状态,发生相应故障时立即有相应的提醒
|
||||
* 若同一时间触发多个多种级别异常,则按照最高级别的异常交互元素做提醒,低级别的异常不做特殊提醒
|
||||
* 若同一时间触发多个同一级别异常,则同一时刻只提醒一次,不互相打断
|
||||
* 除此以外不做其他提示频率限制
|
||||
*
|
||||
* 一级:安全停车
|
||||
* FM_DP_EMERGENCY_STOP(就地紧急停车)、FM_DP_COMFORTABLE_STOP(立刻舒适停车)、FM_DP_PNC_CHOOSE_STOP(择机靠边停车)
|
||||
* 交互:图像、TTS、消息盒子
|
||||
*
|
||||
* 二级:降速行驶
|
||||
* FM_DP_SPEED_LIMIT3(三级降速)、FM_DP_SPEED_LIMIT2(二级降速)、FM_DP_SPEED_LIMIT1(一级降速)
|
||||
* 交互:TTS、消息盒子
|
||||
*
|
||||
* 三级:无操作
|
||||
* FM_DP_ONLY_WARNING(警示)、FM_DP_NO_ACTION(报告)
|
||||
* ps:以上异常提醒受司机屏工具箱-运营面板-美化模式-接管提醒开关控制,默认开启有全量提示,关闭后无语音/图像提示,只有消息盒子红点展示
|
||||
*/
|
||||
val fmInfoMsg = msgBoxBean.bean as FMInfoMsg
|
||||
when (MsgFmData.getFmPolicyLevel(fmInfoMsg.policyCode)) {
|
||||
//一级
|
||||
MsgFmData.LEVEL_ONE -> {
|
||||
//接管图像提示、语音提示
|
||||
CallerDevaToolsManager.takeOver(TAKE_OVER_REQUEST)
|
||||
CallerHmiManager.warningV2X(
|
||||
EventTypeEnumNew.TAKE_OVER_EVENT.poiType,
|
||||
EventTypeEnumNew.TAKE_OVER_EVENT.content,
|
||||
// "识别车辆故障,建议安全停车并查看操作建议",
|
||||
StringUtils.getString(R.string.module_core_warning_vehicle_fault_safe_park),
|
||||
object : IMoGoWarningStatusListener {
|
||||
override fun onShow() {
|
||||
CallerTakeOverManager.invokeTakeOverEvent(true)
|
||||
}
|
||||
StringUtils.getString(R.string.module_core_warning_vehicle_fault_safe_park),
|
||||
object : IMoGoWarningStatusListener {
|
||||
override fun onShow() {
|
||||
CallerTakeOverManager.invokeTakeOverEvent(true)
|
||||
}
|
||||
|
||||
override fun onDismiss() {
|
||||
CallerTakeOverManager.invokeTakeOverEvent(false)
|
||||
}
|
||||
},expireTime =3000L, isFromObu = false
|
||||
)
|
||||
//展示消息盒子消息
|
||||
showData(msgBoxBean)
|
||||
}
|
||||
//二级
|
||||
MsgFmData.LEVEL_TWO->{
|
||||
//语音提示
|
||||
override fun onDismiss() {
|
||||
CallerTakeOverManager.invokeTakeOverEvent(false)
|
||||
}
|
||||
}, expireTime = 3000L, isFromObu = false
|
||||
)
|
||||
//展示消息盒子消息
|
||||
showData(msgBoxBean)
|
||||
}
|
||||
//二级
|
||||
MsgFmData.LEVEL_TWO -> {
|
||||
//语音提示
|
||||
// AIAssist.getInstance(context).speakTTSVoice("识别车辆异常,建议尽快安全停车,查看操作建议")
|
||||
AIAssist.getInstance(context).speakTTSVoice(StringUtils.getString(R.string.module_core_warning_vehicle_abnormal_safe_park))
|
||||
//展示消息盒子消息
|
||||
showData(msgBoxBean)
|
||||
}
|
||||
//三级
|
||||
MsgFmData.LEVEL_THREE->{
|
||||
//在消息盒子图标上,可查看到红点标记,无其他元素特殊提醒;点进消息盒子可查看到详细信息
|
||||
AIAssist.getInstance(context).speakTTSVoice(StringUtils.getString(R.string.module_core_warning_vehicle_abnormal_safe_park))
|
||||
//展示消息盒子消息
|
||||
showData(msgBoxBean)
|
||||
}
|
||||
//三级
|
||||
MsgFmData.LEVEL_THREE -> {
|
||||
//在消息盒子图标上,可查看到红点标记,无其他元素特殊提醒;点进消息盒子可查看到详细信息
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
} else {
|
||||
if (msgBoxBean.sourceType == DataSourceType.SUMMARY) {
|
||||
|
||||
@@ -9,6 +9,7 @@ import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.mogo.eagle.core.data.enums.DataSourceType
|
||||
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.function.api.datacenter.IDataCenterBizListener
|
||||
import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxEventListener
|
||||
@@ -249,9 +250,11 @@ class DriverMsgBoxListView @JvmOverloads constructor(
|
||||
}
|
||||
//FM信息
|
||||
MsgCategory.FM_INFO -> {
|
||||
fmList?.add(0,msgBoxList)
|
||||
if(MsgBoxConfig.getUserRecord() == 1){
|
||||
fmList?.let { driverMsgBoxListAdapter?.setData(it) }
|
||||
if (msgBoxList.type == MsgBoxType.FMINFO) {
|
||||
fmList?.add(0, msgBoxList)
|
||||
if (MsgBoxConfig.getUserRecord() == 1) {
|
||||
fmList?.let { driverMsgBoxListAdapter?.setData(it) }
|
||||
}
|
||||
}
|
||||
}
|
||||
//系统信息
|
||||
|
||||
@@ -146,8 +146,9 @@ class MsgBoxToastView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
} else if (category == MsgCategory.FM_INFO) {
|
||||
CallerMsgBoxEventListenerManager.invokeUpdateTipListener(true)
|
||||
if (FunctionBuildConfig.isTakeoverRemind) {
|
||||
if (msgBoxBean.type == MsgBoxType.FMINFO) {
|
||||
CallerMsgBoxEventListenerManager.invokeUpdateTipListener(true)
|
||||
if (FunctionBuildConfig.isTakeoverRemind) {
|
||||
// //属于停车警示(包括择机靠边停车、立即舒适停车、就地紧急停车)时,需要弹出消息气泡并伴有提示音
|
||||
// var curFaultLevel = 5 //默认级别,遍历数组找出级别最高的(level数越小,级别越高)
|
||||
// fmInfoMsg.fmInfoList?.forEach { faultInfo ->
|
||||
@@ -183,63 +184,65 @@ class MsgBoxToastView @JvmOverloads constructor(
|
||||
// }
|
||||
// }
|
||||
|
||||
/**
|
||||
* 8.2.0需求:定义三种不同提示强度的异常提示交互
|
||||
* 不判断驾驶状态,发生相应故障时立即有相应的提醒
|
||||
* 若同一时间触发多个多种级别异常,则按照最高级别的异常交互元素做提醒,低级别的异常不做特殊提醒
|
||||
* 若同一时间触发多个同一级别异常,则同一时刻只提醒一次,不互相打断
|
||||
* 除此以外不做其他提示频率限制
|
||||
*
|
||||
* 一级:安全停车
|
||||
* FM_DP_EMERGENCY_STOP(就地紧急停车)、FM_DP_COMFORTABLE_STOP(立刻舒适停车)、FM_DP_PNC_CHOOSE_STOP(择机靠边停车)
|
||||
* 交互:图像、TTS、消息盒子
|
||||
*
|
||||
* 二级:降速行驶
|
||||
* FM_DP_SPEED_LIMIT3(三级降速)、FM_DP_SPEED_LIMIT2(二级降速)、FM_DP_SPEED_LIMIT1(一级降速)
|
||||
* 交互:TTS、消息盒子
|
||||
*
|
||||
* 三级:无操作
|
||||
* FM_DP_ONLY_WARNING(警示)、FM_DP_NO_ACTION(报告)
|
||||
* ps:以上异常提醒受司机屏工具箱-运营面板-美化模式-接管提醒开关控制,默认开启有全量提示,关闭后无语音/图像提示,只有消息盒子红点展示
|
||||
*/
|
||||
val fmInfoMsg = msgBoxBean.bean as FMInfoMsg
|
||||
when(MsgFmData.getFmPolicyLevel(fmInfoMsg.policyCode)){
|
||||
//一级
|
||||
MsgFmData.LEVEL_ONE->{
|
||||
//接管图像提示、语音提示
|
||||
CallerDevaToolsManager.takeOver(TAKE_OVER_REQUEST)
|
||||
CallerHmiManager.warningV2X(
|
||||
EventTypeEnumNew.TAKE_OVER_EVENT.poiType,
|
||||
EventTypeEnumNew.TAKE_OVER_EVENT.content,
|
||||
/**
|
||||
* 8.2.0需求:定义三种不同提示强度的异常提示交互
|
||||
* 不判断驾驶状态,发生相应故障时立即有相应的提醒
|
||||
* 若同一时间触发多个多种级别异常,则按照最高级别的异常交互元素做提醒,低级别的异常不做特殊提醒
|
||||
* 若同一时间触发多个同一级别异常,则同一时刻只提醒一次,不互相打断
|
||||
* 除此以外不做其他提示频率限制
|
||||
*
|
||||
* 一级:安全停车
|
||||
* FM_DP_EMERGENCY_STOP(就地紧急停车)、FM_DP_COMFORTABLE_STOP(立刻舒适停车)、FM_DP_PNC_CHOOSE_STOP(择机靠边停车)
|
||||
* 交互:图像、TTS、消息盒子
|
||||
*
|
||||
* 二级:降速行驶
|
||||
* FM_DP_SPEED_LIMIT3(三级降速)、FM_DP_SPEED_LIMIT2(二级降速)、FM_DP_SPEED_LIMIT1(一级降速)
|
||||
* 交互:TTS、消息盒子
|
||||
*
|
||||
* 三级:无操作
|
||||
* FM_DP_ONLY_WARNING(警示)、FM_DP_NO_ACTION(报告)
|
||||
* ps:以上异常提醒受司机屏工具箱-运营面板-美化模式-接管提醒开关控制,默认开启有全量提示,关闭后无语音/图像提示,只有消息盒子红点展示
|
||||
*/
|
||||
val fmInfoMsg = msgBoxBean.bean as FMInfoMsg
|
||||
when (MsgFmData.getFmPolicyLevel(fmInfoMsg.policyCode)) {
|
||||
//一级
|
||||
MsgFmData.LEVEL_ONE -> {
|
||||
//接管图像提示、语音提示
|
||||
CallerDevaToolsManager.takeOver(TAKE_OVER_REQUEST)
|
||||
CallerHmiManager.warningV2X(
|
||||
EventTypeEnumNew.TAKE_OVER_EVENT.poiType,
|
||||
EventTypeEnumNew.TAKE_OVER_EVENT.content,
|
||||
// "识别车辆故障,建议安全停车并查看操作建议",
|
||||
StringUtils.getString(R.string.module_core_warning_vehicle_fault_safe_park),
|
||||
object : IMoGoWarningStatusListener {
|
||||
override fun onShow() {
|
||||
CallerTakeOverManager.invokeTakeOverEvent(true)
|
||||
}
|
||||
StringUtils.getString(R.string.module_core_warning_vehicle_fault_safe_park),
|
||||
object : IMoGoWarningStatusListener {
|
||||
override fun onShow() {
|
||||
CallerTakeOverManager.invokeTakeOverEvent(true)
|
||||
}
|
||||
|
||||
override fun onDismiss() {
|
||||
CallerTakeOverManager.invokeTakeOverEvent(false)
|
||||
}
|
||||
},expireTime =3000L, isFromObu = false
|
||||
)
|
||||
//展示消息盒子消息
|
||||
showData(msgBoxBean)
|
||||
}
|
||||
//二级
|
||||
MsgFmData.LEVEL_TWO->{
|
||||
//语音提示
|
||||
override fun onDismiss() {
|
||||
CallerTakeOverManager.invokeTakeOverEvent(false)
|
||||
}
|
||||
}, expireTime = 3000L, isFromObu = false
|
||||
)
|
||||
//展示消息盒子消息
|
||||
showData(msgBoxBean)
|
||||
}
|
||||
//二级
|
||||
MsgFmData.LEVEL_TWO -> {
|
||||
//语音提示
|
||||
// AIAssist.getInstance(context).speakTTSVoice("识别车辆异常,建议尽快安全停车,查看操作建议")
|
||||
AIAssist.getInstance(context).speakTTSVoice(StringUtils.getString(R.string.module_core_warning_vehicle_abnormal_safe_park))
|
||||
//展示消息盒子消息
|
||||
showData(msgBoxBean)
|
||||
}
|
||||
//三级
|
||||
MsgFmData.LEVEL_THREE->{
|
||||
//在消息盒子图标上,可查看到红点标记,无其他元素特殊提醒;点进消息盒子可查看到详细信息
|
||||
AIAssist.getInstance(context).speakTTSVoice(StringUtils.getString(R.string.module_core_warning_vehicle_abnormal_safe_park))
|
||||
//展示消息盒子消息
|
||||
showData(msgBoxBean)
|
||||
}
|
||||
//三级
|
||||
MsgFmData.LEVEL_THREE -> {
|
||||
//在消息盒子图标上,可查看到红点标记,无其他元素特殊提醒;点进消息盒子可查看到详细信息
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
showData(msgBoxBean)
|
||||
}
|
||||
} else {
|
||||
if (msgBoxBean.sourceType == DataSourceType.SUMMARY) {
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.mogo.eagle.core.data.enums.EventTypeEnumNew
|
||||
import com.mogo.eagle.core.data.msgbox.AutopilotMsg
|
||||
import com.mogo.eagle.core.data.msgbox.CloudControlMsg
|
||||
import com.mogo.eagle.core.data.msgbox.FMInfoMsg
|
||||
import com.mogo.eagle.core.data.msgbox.FSMEventMsg
|
||||
import com.mogo.eagle.core.data.msgbox.FSMMsg
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxCountDownBean
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxType
|
||||
@@ -331,7 +332,18 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter<
|
||||
))
|
||||
}
|
||||
}
|
||||
}else{
|
||||
}else if(it[position].msgBoxBean.type == MsgBoxType.FSM_EVENT){
|
||||
//FSM Event信息
|
||||
//FSM消息
|
||||
val fsmMsg = it[position].msgBoxBean.bean as FSMEventMsg
|
||||
holder.tvV2XTitle.text = fsmMsg.title
|
||||
holder.tvV2XContent.text = fsmMsg.summaryContent
|
||||
holder.ivV2XImage.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
activity,
|
||||
R.drawable.icon_warning_fsm_event
|
||||
))
|
||||
} else{
|
||||
//V2X消息
|
||||
val msgBoxBean = it[position].msgBoxBean
|
||||
val v2XMsg = msgBoxBean.bean as V2XMsg
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
@@ -33,7 +33,7 @@
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvMsgFm"
|
||||
android:layout_width="@dimen/dp_154"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_113"
|
||||
android:text="@string/msg_box_title_fm"
|
||||
android:textColor="#FFFFFFFF"
|
||||
@@ -49,7 +49,7 @@
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvMsgIpcReport"
|
||||
android:layout_width="@dimen/dp_154"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_113"
|
||||
android:text="@string/msg_box_title_report"
|
||||
android:textColor="#FFFFFFFF"
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
|
||||
<!--消息盒子-->
|
||||
<string name="msg_box_title_notice">Notice</string>
|
||||
<string name="msg_box_title_fm">FM Info</string>
|
||||
<string name="msg_box_title_fm">Fault Info</string>
|
||||
<string name="msg_box_title_report">System Info</string>
|
||||
<string name="msg_box_title_bad_case">Record</string>
|
||||
<string name="bad_case_icon">Record Icon</string>
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
|
||||
<!--消息盒子-->
|
||||
<string name="msg_box_title_notice">通知</string>
|
||||
<string name="msg_box_title_fm">FM信息</string>
|
||||
<string name="msg_box_title_fm">故障信息</string>
|
||||
<string name="msg_box_title_report">系统信息</string>
|
||||
<string name="msg_box_title_bad_case">录包</string>
|
||||
<string name="bad_case_icon">录包图标</string>
|
||||
|
||||
Reference in New Issue
Block a user