[8.1.0]云控基础平台消息接入

This commit is contained in:
xuxinchao
2025-06-11 10:59:25 +08:00
parent 6cf2dce10c
commit fcbb538919
19 changed files with 1093 additions and 3 deletions

View File

@@ -48,6 +48,7 @@ class MsgBoxTabAdapter(private val activity: Activity) :
private val fsm = 21 //fsm消息
private val nde = 22 //NDE消息车龙
private val ota = 23 //OTA升级消息
private val cloud = 24 //云控基础平台
private val none = -1
@@ -157,6 +158,12 @@ class MsgBoxTabAdapter(private val activity: Activity) :
.inflate(R.layout.item_tab_ota,parent,false)
return MsgBoxOTA(view)
}
//云控基础平台
cloud -> {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_tab_cloud,parent,false)
return MsgBoxCloud(view)
}
//V2X消息
else -> {
val view = LayoutInflater.from(parent.context)
@@ -579,6 +586,17 @@ class MsgBoxTabAdapter(private val activity: Activity) :
}
}
}
//云控基础平台
is MsgBoxCloud->{
data?.let {
val cloudMsg = it[position].bean as CloudControlMsg
holder.ivCloudImage.setImageDrawable(ResourcesCompat.getDrawable
(activity.resources,EventTypeEnumNew.getUpdateIconRes(cloudMsg.msgType),null))
holder.tvCloudTitle.text = cloudMsg.title
holder.tvCloudContent.text = cloudMsg.des
holder.tvCloudTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat())
}
}
}
}
@@ -625,6 +643,8 @@ class MsgBoxTabAdapter(private val activity: Activity) :
nde
} else if(data!![position].type == MsgBoxType.OTA){
ota
} else if(data!![position].type == MsgBoxType.CLOUD){
cloud
} else if(data!![position].type == MsgBoxType.V2X || data!![position].type == MsgBoxType.OBU){
v2x
} else {
@@ -748,4 +768,12 @@ class MsgBoxTabAdapter(private val activity: Activity) :
var tvOTAContent: TextView = itemView.findViewById(R.id.tvOTAContent)
}
//云控基础平台
class MsgBoxCloud(itemView: View) : RecyclerView.ViewHolder(itemView){
var ivCloudImage: ImageView = itemView.findViewById(R.id.ivCloudImage)
var tvCloudTitle: TextView = itemView.findViewById(R.id.tvCloudTitle)
var tvCloudTime: TextView = itemView.findViewById(R.id.tvCloudTime)
var tvCloudContent: TextView = itemView.findViewById(R.id.tvCloudContent)
}
}

View File

@@ -50,6 +50,7 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A
private val none: Int = 10
private val nde: Int = 11
private val ota: Int = 12
private val cloud: Int = 13 //云控基础平台
private var changeViewListener: ChangeViewListener?=null
@@ -118,6 +119,11 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_ota,parent,false)
return BubbleOTAHolder(view)
}
//云控基础平台
cloud -> {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_cloud,parent,false)
return BubbleCloudHolder(view)
}
else -> {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_v2x,parent,false)
return BubbleV2XHolder(view)
@@ -360,6 +366,17 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A
}
}
}
//云控基础平台消息
is BubbleCloudHolder -> {
data?.let {
val cloudMsg = it[position].msgBoxBean.bean as CloudControlMsg
holder.ivCloudImage.setImageDrawable(ResourcesCompat.getDrawable
(activity.resources,EventTypeEnumNew.getUpdateIconRes(cloudMsg.msgType),null))
holder.tvCloudTitle.text = cloudMsg.title
holder.tvCloudContent.text = cloudMsg.des
holder.tvCloudTime.text = TimeUtils.millis2String(it[position].msgBoxBean.timestamp,getHourMinFormat())
}
}
}
val msgBoxBean: MsgBoxCountDownBean = data!![position]
@@ -419,6 +436,8 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A
nde
}else if(data!![position].msgBoxBean.type == MsgBoxType.OTA){
ota
}else if(data!![position].msgBoxBean.type == MsgBoxType.CLOUD){
cloud
}
else {
v2x
@@ -526,6 +545,14 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A
var tvOTAContent: TextView = itemView.findViewById(R.id.tvOTAContent)
}
//云控基础平台消息
class BubbleCloudHolder(itemView: View): RecyclerView.ViewHolder(itemView){
var ivCloudImage: ImageView = itemView.findViewById(R.id.ivCloudImage)
var tvCloudTitle: TextView = itemView.findViewById(R.id.tvCloudTitle)
var tvCloudTime: TextView = itemView.findViewById(R.id.tvCloudTime)
var tvCloudContent: TextView = itemView.findViewById(R.id.tvCloudContent)
}
fun setChangeListener(listener: ChangeViewListener){
changeViewListener = listener
}

View File

@@ -51,6 +51,7 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
private val fsm = 21 //fsm消息
private val nde = 22 //NDE消息
private val ota = 23 //OTA升级消息
private val cloud = 24 //云控基础平台
private val none = -1
@@ -148,6 +149,12 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
.inflate(R.layout.item_msg_box_ota,parent,false)
return MsgBoxOta(view)
}
//云控基础平台
cloud->{
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_msg_box_cloud,parent,false)
return MsgBoxCloud(view)
}
else -> {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_msg_box_v2x, parent, false)
@@ -745,6 +752,17 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
}
}
}
//云控基础平台消息
is MsgBoxCloud -> {
data?.let {
val cloudMsg = it[position].bean as CloudControlMsg
holder.ivCloudImage.setImageDrawable(ResourcesCompat.getDrawable
(activity.resources,EventTypeEnumNew.getUpdateIconRes(cloudMsg.msgType),null))
holder.tvCloudTitle.text = cloudMsg.title
holder.tvCloudContent.text = cloudMsg.des
holder.tvCloudTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat())
}
}
}
}
@@ -791,6 +809,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
nde
} else if(data!![position].type == MsgBoxType.OTA){
ota
} else if(data!![position].type == MsgBoxType.CLOUD){
cloud
} else if(data!![position].type == MsgBoxType.V2X || data!![position].type == MsgBoxType.OBU){
v2x
} else {
@@ -930,4 +950,11 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
var ivOTAImage: ImageView = itemView.findViewById(R.id.ivOTAImage)
}
//云控基础平台
class MsgBoxCloud(itemView: View) : RecyclerView.ViewHolder(itemView){
var ivCloudImage: ImageView = itemView.findViewById(R.id.ivCloudImage)
var tvCloudTitle: TextView = itemView.findViewById(R.id.tvCloudTitle)
var tvCloudTime: TextView = itemView.findViewById(R.id.tvCloudTime)
var tvCloudContent: TextView = itemView.findViewById(R.id.tvCloudContent)
}
}

View File

@@ -17,6 +17,7 @@ import com.mogo.eagle.core.data.deva.report.ReportEntity
import com.mogo.eagle.core.data.enums.DataSourceType
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.FSMMsg
import com.mogo.eagle.core.data.msgbox.MsgBoxCountDownBean
@@ -52,6 +53,7 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter<
private val report: Int = 3
private val nde: Int = 4
private val ota: Int = 5
private val cloud: Int = 6
fun setData(data: ArrayList<MsgBoxCountDownBean>){
@@ -80,6 +82,11 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter<
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_toast_ota,parent,false)
BubbleOTAHolder(view)
}
//云控基础平台
cloud -> {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_toast_cloud,parent,false)
BubbleCloudHolder(view)
}
else -> {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_toast_v2x,parent,false)
BubbleV2XHolder(view)
@@ -176,6 +183,16 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter<
}
}
}
//云控基础平台消息
is BubbleCloudHolder->{
data?.let {
val cloudMsg = it[position].msgBoxBean.bean as CloudControlMsg
holder.ivCloudImage.setImageDrawable(ResourcesCompat.getDrawable
(activity.resources,EventTypeEnumNew.getUpdateIconRes(cloudMsg.msgType),null))
holder.tvCloudTitle.text = cloudMsg.title
holder.tvCloudContent.text = cloudMsg.des
}
}
//V2X消息
is BubbleV2XHolder -> {
data?.let {
@@ -356,6 +373,9 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter<
MsgBoxType.OTA ->{
ota
}
MsgBoxType.CLOUD ->{
cloud
}
else -> {
v2x
}
@@ -408,4 +428,10 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter<
var ivOTAImage: ImageView = itemView.findViewById(R.id.ivOTAImage)
}
//云控基础平台
class BubbleCloudHolder(itemView: View): RecyclerView.ViewHolder(itemView){
var ivCloudImage: ImageView = itemView.findViewById(R.id.ivCloudImage)
var tvCloudTitle: TextView = itemView.findViewById(R.id.tvCloudTitle)
var tvCloudContent: TextView = itemView.findViewById(R.id.tvCloudContent)
}
}

View File

@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/dp_804"
android:layout_height="wrap_content"
android:minHeight="@dimen/dp_160"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@drawable/bg_msg_box_v2x"
android:layout_gravity="center_horizontal"
android:layout_marginStart="30dp"
android:layout_marginEnd="30dp"
android:layout_marginTop="7dp"
android:layout_marginBottom="7dp">
<ImageView
android:id="@+id/ivCloudImage"
android:layout_width="110dp"
android:layout_height="110dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_margin="25dp"
/>
<TextView
android:id="@+id/tvCloudTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/tvCloudContent"
app:layout_constraintLeft_toRightOf="@id/ivCloudImage"
android:layout_marginStart="@dimen/dp_15"
android:textColor="#FFFFFFFF"
android:textSize="@dimen/sp_32"
android:layout_marginTop="@dimen/dp_5"
android:layout_marginBottom="@dimen/dp_5"
/>
<TextView
android:id="@+id/tvCloudTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@id/tvCloudTitle"
app:layout_constraintBottom_toBottomOf="@id/tvCloudTitle"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginEnd="25dp"
android:textColor="#80FFFFFF"
android:textSize="@dimen/sp_24"
/>
<TextView
android:id="@+id/tvCloudContent"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/tvCloudTitle"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@id/tvCloudTitle"
app:layout_constraintRight_toRightOf="@id/tvCloudTime"
android:textColor="#B3FFFFFF"
android:textSize="@dimen/sp_28"
android:layout_marginBottom="@dimen/dp_5"
android:layout_marginTop="@dimen/dp_5"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/clCloudLayout"
android:layout_width="@dimen/dp_804"
android:layout_height="wrap_content"
android:minHeight="@dimen/dp_160"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@drawable/bg_msg_box_v2x"
android:layout_gravity="center_horizontal"
android:layout_marginTop="7dp"
android:layout_marginBottom="7dp"
>
<ImageView
android:id="@+id/ivCloudImage"
android:layout_width="110dp"
android:layout_height="110dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_margin="25dp"
/>
<TextView
android:id="@+id/tvCloudTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/tvCloudContent"
app:layout_constraintLeft_toRightOf="@id/ivCloudImage"
android:layout_marginStart="@dimen/dp_15"
android:textColor="#FFFFFFFF"
android:textSize="@dimen/sp_32"
android:layout_marginTop="@dimen/dp_5"
android:layout_marginBottom="@dimen/dp_5"
/>
<TextView
android:id="@+id/tvCloudTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@id/tvCloudTitle"
app:layout_constraintBottom_toBottomOf="@id/tvCloudTitle"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginEnd="25dp"
android:textColor="#80FFFFFF"
android:textSize="@dimen/sp_24"
/>
<TextView
android:id="@+id/tvCloudContent"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/tvCloudTitle"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@id/tvCloudTitle"
app:layout_constraintRight_toRightOf="@id/tvCloudTime"
android:textColor="#B3FFFFFF"
android:textSize="@dimen/sp_28"
android:layout_marginTop="@dimen/dp_5"
android:layout_marginBottom="@dimen/dp_5"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/clCloudLayout"
android:layout_width="@dimen/dp_694"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@drawable/bg_msg_box_toast"
android:layout_gravity="center_horizontal"
>
<ImageView
android:id="@+id/ivCloudImage"
android:layout_width="@dimen/dp_120"
android:layout_height="@dimen/dp_120"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
/>
<TextView
android:id="@+id/tvCloudTitle"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toRightOf="@id/ivCloudImage"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginStart="@dimen/dp_20"
android:textColor="#FFFFFFFF"
android:textSize="@dimen/sp_40"
/>
<TextView
android:id="@+id/tvCloudContent"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/tvCloudTitle"
app:layout_constraintLeft_toLeftOf="@id/tvCloudTitle"
app:layout_constraintRight_toRightOf="parent"
android:textColor="@color/white"
android:textSize="@dimen/sp_32"
android:layout_marginTop="@dimen/dp_6"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="@dimen/dp_180"
xmlns:app="http://schemas.android.com/apk/res-auto">
<ImageView
android:id="@+id/ivCloudImage"
android:layout_width="@dimen/dp_120"
android:layout_height="@dimen/dp_120"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="@dimen/dp_14"
/>
<TextView
android:id="@+id/tvCloudTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toRightOf="@id/ivCloudImage"
android:layout_marginStart="@dimen/dp_30"
android:layout_marginTop="@dimen/dp_30"
android:textSize="@dimen/sp_38"
android:textColor="@color/white"
android:textStyle="bold"
/>
<TextView
android:id="@+id/tvCloudTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@id/tvCloudTitle"
app:layout_constraintBottom_toBottomOf="@id/tvCloudTitle"
app:layout_constraintRight_toRightOf="parent"
android:textSize="@dimen/sp_32"
android:textColor="#999999"
/>
<TextView
android:id="@+id/tvCloudContent"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/tvCloudTitle"
app:layout_constraintLeft_toLeftOf="@id/tvCloudTitle"
app:layout_constraintRight_toRightOf="@id/tvCloudTime"
android:textSize="@dimen/sp_32"
android:textColor="#CCCCCC"
android:layout_marginTop="@dimen/dp_15"
android:paddingBottom="@dimen/dp_30"
/>
</androidx.constraintlayout.widget.ConstraintLayout>