Merge branch 'release_robobus-d_230413_3.1.0.1'

# Conflicts:
#	OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java
#	OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/SweeperProvider.java
#	OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/fragment/SweeperFragment.java
#	core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/AppIdentityModeUtils.kt
#	gradle.properties
This commit is contained in:
yangyakun
2023-04-23 14:28:19 +08:00
732 changed files with 15968 additions and 23238 deletions

View File

@@ -226,6 +226,14 @@ class MoGoHmiProvider : IMoGoHmiProvider {
}
}
override fun showDispatchRestartDialog(msgData: DispatchAdasAutoPilotLocReceiverBean) {
ThreadUtils.runOnUiThread {
context?.let{
DispatchDialogManager.getInstance(it).showRestartDialog(msgData)
}
}
}
override fun showNoticeForTrafficWithData(pushData: NoticeTrafficStylePushData?) {
pushData?.let {
ThreadUtils.runOnUiThread {

View File

@@ -8,6 +8,7 @@ import android.widget.ProgressBar
import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.call.hmi.CallerHmiListenerManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.hmi.R
@@ -37,6 +38,8 @@ class OfflineMapDialog(context: Context): BaseFloatDialog(context) {
private var isConfirm = true
private var isRetry = false
var location: MogoLocation? = null
init {
setContentView(R.layout.dialog_offline_map)
setCanceledOnTouchOutside(true)
@@ -89,8 +92,8 @@ class OfflineMapDialog(context: Context): BaseFloatDialog(context) {
}
}
private fun cacheHDOfflineData() {
CallerMapUIServiceManager.cacheHDDataByCity(object : IHdCacheListener {
private fun cacheHDDataByCityByLonLat() {
CallerMapUIServiceManager.cacheHDDataByCityByLonLat(object : IHdCacheListener {
override fun onMapHdCacheProgress(cityId: Int, progress: Double) {
updateProgress(progress.toInt())
}
@@ -100,7 +103,25 @@ class OfflineMapDialog(context: Context): BaseFloatDialog(context) {
showNewContent(isLoading = false, false)
}
}
})
}, location!!)
}
private fun cacheHDOfflineData() {
if (location == null) {// 拿到了高德地图的cityCode
CallerMapUIServiceManager.cacheHDDataByCity(object : IHdCacheListener {
override fun onMapHdCacheProgress(cityId: Int, progress: Double) {
updateProgress(progress.toInt())
}
override fun onMapHdCacheResult(cityId: Int, state: Int) {
if (state == 0) {// 失败
showNewContent(isLoading = false, false)
}
}
})
} else {// 只拿到了高精的经纬度
cacheHDDataByCityByLonLat()
}
}
@SuppressLint("SetTextI18n")

View File

@@ -0,0 +1,81 @@
package com.mogo.eagle.core.function.hmi.ui.msgbox
import android.app.Activity
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.LinearLayoutManager
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.data.msgbox.MsgBoxCountDownBean
import com.mogo.eagle.core.data.msgbox.MsgBoxType
import com.mogo.eagle.core.data.msgbox.MsgCategory
import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxListener
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxEventListenerManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxListenerManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.hmi.ui.msgbox.adapter.BusPassengerMsgBoxBubbleAdapter
import com.mogo.eagle.core.function.msgbox.MsgBoxConfig
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import kotlinx.android.synthetic.main.layout_bus_passenegr_msg_box_bubble.view.*
class BusPassengerMsgBoxBubbleView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr), IMsgBoxListener {
private val TAG = "BusPassengerMsgBoxBubbleView"
private val dataList :ArrayList<MsgBoxCountDownBean> = ArrayList()
private var busPassengerMsgBoxBubbleAdapter: BusPassengerMsgBoxBubbleAdapter?= null
private var isShowData = true
init {
LayoutInflater.from(context).inflate(R.layout.layout_bus_passenegr_msg_box_bubble, this, true)
initView()
}
private fun initView(){
val linearLayoutManager = LinearLayoutManager(context)
linearLayoutManager.orientation = LinearLayoutManager.VERTICAL
busPassengerMsgBoxBubbleAdapter = BusPassengerMsgBoxBubbleAdapter(context as Activity)
rvBusBoxBubbleList.adapter =busPassengerMsgBoxBubbleAdapter
rvBusBoxBubbleList.layoutManager = linearLayoutManager
}
/**
* 是否展示接收消息,消息盒子打开状态下不再展示气泡消息
* @param show true 展示false 不展示
*/
fun isShowData(show: Boolean){
isShowData = show
}
override fun onDataChanged(category: MsgCategory, msgBoxList: MsgBoxBean){
UiThreadHandler.post({
if(category == MsgCategory.NOTICE){
if(msgBoxList.type == MsgBoxType.NOTICE || msgBoxList.type == MsgBoxType.V2X
|| msgBoxList.type == MsgBoxType.OBU || msgBoxList.type == MsgBoxType.OPERATION){
MsgBoxConfig.noticeList.add(msgBoxList)
if(isShowData){
CallerMsgBoxEventListenerManager.invokeUpdateTipListener(true)
val msgBoxCountDownBean = MsgBoxCountDownBean(msgBoxList)
dataList.add(msgBoxCountDownBean)
busPassengerMsgBoxBubbleAdapter?.setData(dataList)
}
}
}
},UiThreadHandler.MODE.QUEUE)
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
CallerMsgBoxListenerManager.addListener(TAG,this)
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
CallerMsgBoxListenerManager.removeListener(TAG)
}
}

View File

@@ -70,7 +70,7 @@ class DriverMsgBoxBubbleView @JvmOverloads constructor(
}
override fun onDataChanged(category: MsgCategory, msgBoxBean: MsgBoxBean) {
UiThreadHandler.post {
UiThreadHandler.post({
when (category) {
MsgCategory.NOTICE -> {
MsgBoxConfig.noticeList.add(msgBoxBean)
@@ -98,7 +98,7 @@ class DriverMsgBoxBubbleView @JvmOverloads constructor(
driverMsgBoxBubbleAdapter?.setData(dataList)
}
}
}
}, UiThreadHandler.MODE.QUEUE)
}
override fun onAttachedToWindow() {

View File

@@ -171,7 +171,7 @@ class DriverMsgBoxListView @JvmOverloads constructor(
}
override fun onDataChanged(category: MsgCategory, msgBoxList: MsgBoxBean) {
UiThreadHandler.post{
UiThreadHandler.post({
when (category) {
MsgCategory.NOTICE -> {
noticeList?.add(0,msgBoxList)
@@ -192,7 +192,7 @@ class DriverMsgBoxListView @JvmOverloads constructor(
}
}
}
}
},UiThreadHandler.MODE.QUEUE)
}
override fun onAttachedToWindow() {

View File

@@ -19,6 +19,9 @@ import com.mogo.eagle.core.function.msgbox.MsgBoxConfig
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import kotlinx.android.synthetic.main.layout_m_box_bubble.view.*
/**
* M2气泡态消息盒子
*/
class MBoxBubbleView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
@@ -52,7 +55,7 @@ class MBoxBubbleView @JvmOverloads constructor(
}
override fun onDataChanged(category: MsgCategory, msgBoxList: MsgBoxBean) {
UiThreadHandler.post {
UiThreadHandler.post({
if(category == MsgCategory.NOTICE){
if(msgBoxList.type == MsgBoxType.NOTICE || msgBoxList.type == MsgBoxType.V2X
|| msgBoxList.type == MsgBoxType.OBU || msgBoxList.type == MsgBoxType.OPERATION){
@@ -65,7 +68,7 @@ class MBoxBubbleView @JvmOverloads constructor(
}
}
}
}
},UiThreadHandler.MODE.QUEUE)
}
override fun onAttachedToWindow() {

View File

@@ -49,14 +49,14 @@ class MMsgBoxBubbleView @JvmOverloads constructor(
}
override fun onDataChanged(category: MsgCategory, msgBoxList: MsgBoxBean) {
UiThreadHandler.post {
UiThreadHandler.post({
if(category == MsgCategory.NOTICE){
if(msgBoxList.type == MsgBoxType.NOTICE || msgBoxList.type == MsgBoxType.V2X
|| msgBoxList.type == MsgBoxType.OBU || msgBoxList.type == MsgBoxType.OPERATION){
update(msgBoxList)
}
}
}
},UiThreadHandler.MODE.QUEUE)
}
private fun update(msgBoxList: MsgBoxBean){

View File

@@ -56,7 +56,7 @@ class MMsgBoxListView @JvmOverloads constructor(
}
override fun onDataChanged(category: MsgCategory, msgBoxList: MsgBoxBean) {
UiThreadHandler.post{
UiThreadHandler.post({
if(category == MsgCategory.NOTICE){
if(msgBoxList.type == MsgBoxType.NOTICE || msgBoxList.type == MsgBoxType.V2X
|| msgBoxList.type == MsgBoxType.OBU || msgBoxList.type == MsgBoxType.OPERATION){
@@ -66,7 +66,7 @@ class MMsgBoxListView @JvmOverloads constructor(
}
}
}
}
},UiThreadHandler.MODE.QUEUE)
}
override fun onAttachedToWindow() {

View File

@@ -57,7 +57,7 @@ class PassengerMsgBoxBubbleView @JvmOverloads constructor(
}
override fun onDataChanged(category: MsgCategory, msgBoxList: MsgBoxBean) {
UiThreadHandler.post {
UiThreadHandler.post({
if(category == MsgCategory.NOTICE){
if(msgBoxList.type == MsgBoxType.NOTICE || msgBoxList.type == MsgBoxType.V2X
|| msgBoxList.type == MsgBoxType.OBU){
@@ -70,7 +70,7 @@ class PassengerMsgBoxBubbleView @JvmOverloads constructor(
}
}
}
}
},UiThreadHandler.MODE.QUEUE)
}
override fun onAttachedToWindow() {

View File

@@ -60,7 +60,7 @@ class PassengerMsgBoxListView @JvmOverloads constructor(
}
override fun onDataChanged(category: MsgCategory, msgBoxList: MsgBoxBean) {
UiThreadHandler.post{
UiThreadHandler.post({
if(category == MsgCategory.NOTICE){
if(msgBoxList.type == MsgBoxType.NOTICE || msgBoxList.type == MsgBoxType.V2X
|| msgBoxList.type == MsgBoxType.OBU){
@@ -70,7 +70,7 @@ class PassengerMsgBoxListView @JvmOverloads constructor(
}
}
}
}
},UiThreadHandler.MODE.QUEUE)
}
override fun onAttachedToWindow() {

View File

@@ -0,0 +1,138 @@
package com.mogo.eagle.core.function.hmi.ui.msgbox.adapter
import android.app.Activity
import android.os.CountDownTimer
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.mogo.eagle.core.data.enums.EventTypeEnumNew
import com.mogo.eagle.core.data.msgbox.*
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils.getHourMinFormat
class BusPassengerMsgBoxBubbleAdapter(private val activity: Activity): RecyclerView.Adapter<RecyclerView.ViewHolder>() {
private var data: ArrayList<MsgBoxCountDownBean> ?= null
private val notice: Int = 1
private val v2x: Int = 2
private val operation: Int = 3
fun setData(data: ArrayList<MsgBoxCountDownBean>){
this.data = data
if(data.size>3){
data.removeAt(0)
}
notifyDataSetChanged()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder{
return when (viewType){
notice ->{
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_bus_box_notice,parent,false)
BusBubbleNoticeHolder(view)
}
operation ->{
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_bus_box_operation,parent,false)
BusBubbleOperationHolder(view)
}
else ->{
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_bus_box_v2x,parent,false)
BusBubbleV2XHolder(view)
}
}
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int){
when (holder){
is BusBubbleNoticeHolder -> {
data?.let{
val noticeFrCloudMsg = it[position].msgBoxBean.bean as NoticeFrCloudMsg
if(noticeFrCloudMsg.type == 0){
val noticeNormalData = noticeFrCloudMsg.noticeNormalData
holder.tvBusPNoticeTime.text = TimeUtils.millis2String(it[position].msgBoxBean.timestamp,getHourMinFormat())
holder.tvBusPNoticeContent.text = noticeNormalData?.content
}else{
val noticeTrafficStylePushData = noticeFrCloudMsg.trafficPushData
holder.tvBusPNoticeTime.text = TimeUtils.millis2String(it[position].msgBoxBean.timestamp,getHourMinFormat())
holder.tvBusPNoticeContent.text = noticeTrafficStylePushData?.content
}
}
}
is BusBubbleOperationHolder -> {
//运营消息
data?.let{
val operationMsg = it[position].msgBoxBean.bean as OperationMsg
holder.tvBusPOperationTime.text = TimeUtils.millis2String(it[position].msgBoxBean.timestamp,getHourMinFormat())
holder.tvBusPOperationContent.text = operationMsg.content
}
}
is BusBubbleV2XHolder -> {
data?.let{
val msgBoxBean = it[position]
val v2XMsg = msgBoxBean.msgBoxBean.bean as V2XMsg
holder.tvBusPV2XTime.text = TimeUtils.millis2String(it[position].msgBoxBean.timestamp,getHourMinFormat())
holder.tvBusPV2XContent.text = v2XMsg.content
holder.ivBusPV2XImage.setImageDrawable(activity.resources.getDrawable(
EventTypeEnumNew.getUpdateIconRes(v2XMsg.type)))
holder.tvBusPV2XTitle.text = EventTypeEnumNew.getEventTitle(v2XMsg.type)
}
}
}
val msgBoxBean: MsgBoxCountDownBean = data!![position]
msgBoxBean.countDownTimer =object: CountDownTimer(CallerMsgBoxManager.getDismissTime(),CallerMsgBoxManager.getDismissTime()){
override fun onTick(p0: Long) {
}
override fun onFinish() {
data?.remove(msgBoxBean)
notifyDataSetChanged()
// notifyItemRemoved(index)
// notifyItemRangeChanged(index,recordTypeEntity.size-index)
}
}
msgBoxBean.countDownTimer?.start()
}
override fun getItemCount() = data?.size ?: 0
override fun getItemViewType(position: Int): Int{
return if(data!![position].msgBoxBean.type == MsgBoxType.NOTICE){
notice
}else if(data!![position].msgBoxBean.type == MsgBoxType.OPERATION){
operation
} else{
v2x
}
}
//Notice
class BusBubbleNoticeHolder(itemView: View): RecyclerView.ViewHolder(itemView){
var tvBusPNoticeTime: TextView = itemView.findViewById(R.id.tvBusPNoticeTime)
var tvBusPNoticeContent: TextView = itemView.findViewById(R.id.tvBusPNoticeContent)
}
//OBU、V2X
class BusBubbleV2XHolder(itemView: View): RecyclerView.ViewHolder(itemView){
var ivBusPV2XImage: ImageView = itemView.findViewById(R.id.ivBusPV2XImage)
var tvBusPV2XTime: TextView = itemView.findViewById(R.id.tvBusPV2XTime)
var tvBusPV2XContent: TextView = itemView.findViewById(R.id.tvBusPV2XContent)
var tvBusPV2XTitle: TextView = itemView.findViewById(R.id.tvBusPV2XTitle)
}
//运营消息
class BusBubbleOperationHolder(itemView: View): RecyclerView.ViewHolder(itemView){
var tvBusPOperationTime: TextView = itemView.findViewById(R.id.tvBusPOperationTime)
var tvBusPOperationContent: TextView = itemView.findViewById(R.id.tvBusPOperationContent)
}
}

View File

@@ -181,6 +181,7 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A
holder.clV2XLayout.setOnClickListener {
CallerMsgBoxEventListenerManager.invokeBubbleV2XListener(msgBoxBean)
}
holder.tvV2XTitle.text = EventTypeEnumNew.getEventTitle(v2XMsg.type)
}
}
is BubbleSummaryHolder -> {
@@ -275,6 +276,7 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A
var tvV2XTime: TextView = itemView.findViewById(R.id.tvV2XTime)
var tvV2XContent: TextView = itemView.findViewById(R.id.tvV2XContent)
var clV2XLayout: RoundCanClickConstraintLayout = itemView.findViewById(R.id.clV2XLayout)
var tvV2XTitle: TextView = itemView.findViewById(R.id.tvV2XTitle)
}
//汇总消息

View File

@@ -369,6 +369,7 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
holder.ivV2XImage.setImageDrawable(activity.resources.getDrawable(
EventTypeEnumNew.getUpdateIconRes(v2XMsg.type))
)
holder.tvV2XTitle.text = EventTypeEnumNew.getEventTitle(v2XMsg.type)
}
}
is MsgBoxSummary -> {
@@ -472,6 +473,7 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
var ivV2XImage: ImageView = itemView.findViewById(R.id.ivV2XImage)
var tvV2XTime: TextView = itemView.findViewById(R.id.tvV2XTime)
var tvV2XContent: TextView = itemView.findViewById(R.id.tvV2XContent)
var tvV2XTitle: TextView = itemView.findViewById(R.id.tvV2XTitle)
}
//汇总消息

View File

@@ -82,6 +82,7 @@ class MBoxBubbleAdapter(private val activity: Activity): RecyclerView.Adapter<Re
holder.tvMV2XContent.text = v2XMsg.content
holder.ivMV2XImage.setImageDrawable(activity.resources.getDrawable(
EventTypeEnumNew.getUpdateIconRes(v2XMsg.type)))
holder.tvMV2XTitle.text = EventTypeEnumNew.getEventTitle(v2XMsg.type)
}
}
}
@@ -128,6 +129,7 @@ class MBoxBubbleAdapter(private val activity: Activity): RecyclerView.Adapter<Re
var ivMV2XImage: ImageView = itemView.findViewById(R.id.ivMV2XImage)
var tvMV2XTime: TextView = itemView.findViewById(R.id.tvMV2XTime)
var tvMV2XContent: TextView = itemView.findViewById(R.id.tvMV2XContent)
var tvMV2XTitle: TextView = itemView.findViewById(R.id.tvMV2XTitle)
}
//运营消息

View File

@@ -110,6 +110,7 @@ class MMsgBoxBubbleAdapter(private val activity: Activity): RecyclerView.Adapter
holder.clMVeXLayout.setOnClickListener {
CallerMsgBoxEventListenerManager.invokeBubbleV2XListener(msgBoxBean)
}
holder.tvMV2XTitle.text = EventTypeEnumNew.getEventTitle(v2XMsg.type)
}
}
is BubbleSummaryHolder -> {
@@ -179,6 +180,7 @@ class MMsgBoxBubbleAdapter(private val activity: Activity): RecyclerView.Adapter
var tvMV2XTime: TextView = itemView.findViewById(R.id.tvMV2XTime)
var tvMV2XContent: TextView = itemView.findViewById(R.id.tvMV2XContent)
var clMVeXLayout: RoundCanClickConstraintLayout = itemView.findViewById(R.id.clMVeXLayout)
var tvMV2XTitle: TextView = itemView.findViewById(R.id.tvMV2XTitle)
}
//汇总消息

View File

@@ -100,6 +100,7 @@ class MMsgBoxListAdapter(private val activity: Activity): RecyclerView.Adapter<R
holder.tvMV2XContent.text = v2XMsg.content
holder.ivMV2XImage.setImageDrawable(activity.resources.getDrawable(
EventTypeEnumNew.getUpdateIconRes(v2XMsg.type)))
holder.tvMV2XTitle.text = EventTypeEnumNew.getEventTitle(v2XMsg.type)
}
}
is ListSummaryHolder -> {
@@ -155,6 +156,7 @@ class MMsgBoxListAdapter(private val activity: Activity): RecyclerView.Adapter<R
var ivMV2XImage: ImageView = itemView.findViewById(R.id.ivMV2XImage)
var tvMV2XTime: TextView = itemView.findViewById(R.id.tvMV2XTime)
var tvMV2XContent: TextView = itemView.findViewById(R.id.tvMV2XContent)
var tvMV2XTitle: TextView = itemView.findViewById(R.id.tvMV2XTitle)
}
//汇总消息

View File

@@ -107,6 +107,7 @@ class PassengerMsgBoxBubbleAdapter(private val activity: Activity): RecyclerView
holder.clPassengerVeXLayout.setOnClickListener {
CallerMsgBoxEventListenerManager.invokeBubbleV2XListener(msgBoxBean)
}
holder.tvPassengerV2XTitle.text = EventTypeEnumNew.getEventTitle(v2XMsg.type)
}
}
is BubbleSummaryHolder -> {
@@ -167,6 +168,7 @@ class PassengerMsgBoxBubbleAdapter(private val activity: Activity): RecyclerView
var tvPassengerV2XTime: TextView = itemView.findViewById(R.id.tvPassengerV2XTime)
var tvPassengerV2XContent: TextView = itemView.findViewById(R.id.tvPassengerV2XContent)
var clPassengerVeXLayout: RoundCanClickConstraintLayout = itemView.findViewById(R.id.clPassengerVeXLayout)
var tvPassengerV2XTitle: TextView = itemView.findViewById(R.id.tvPassengerV2XTitle)
}
//汇总消息

View File

@@ -97,6 +97,7 @@ class PassengerMsgBoxListAdapter(private val activity: Activity): RecyclerView.A
holder.tvPassengerV2XContent.text = v2XMsg.content
holder.ivPassengerV2XImage.setImageDrawable(activity.resources.getDrawable(
EventTypeEnumNew.getUpdateIconRes(v2XMsg.type)))
holder.tvPassengerV2XTitle.text = EventTypeEnumNew.getEventTitle(v2XMsg.type)
}
}
is ListSummaryHolder -> {
@@ -140,6 +141,7 @@ class PassengerMsgBoxListAdapter(private val activity: Activity): RecyclerView.A
var ivPassengerV2XImage: ImageView = itemView.findViewById(R.id.ivPassengerV2XImage)
var tvPassengerV2XTime: TextView = itemView.findViewById(R.id.tvPassengerV2XTime)
var tvPassengerV2XContent: TextView = itemView.findViewById(R.id.tvPassengerV2XContent)
var tvPassengerV2XTitle: TextView = itemView.findViewById(R.id.tvPassengerV2XTitle)
}
//汇总消息

View File

@@ -21,6 +21,10 @@ public class DispatchCarsDialog extends DispatchBaseDialog {
private final TextView tvTimer;
private final TextView tvLoc;
private final TextView tvAdasDispatchTitle;
private final TextView tvAdasDispatchRemindContent;
private int dispatchType = 1;//调度类型1启动 2停止
private final Handler handler = new Handler() {
@Override
@@ -44,21 +48,40 @@ public class DispatchCarsDialog extends DispatchBaseDialog {
setCanceledOnTouchOutside(false);
tvTimer = findViewById(R.id.module_adas_dispatch_remind_timer);
tvLoc = findViewById(R.id.module_adas_dispatch_remind_loc);
Button btnAffirm = (Button) findViewById(R.id.module_adas_dispatch_remind_affirm);
Button btnCancel = (Button) findViewById(R.id.module_adas_dispatch_remind_cancel);
tvAdasDispatchTitle = findViewById(R.id.tv_adas_dispatch_title);
tvAdasDispatchRemindContent = findViewById(R.id.tv_adas_dispatch_remind_content);
Button btnAffirm = findViewById(R.id.module_adas_dispatch_remind_affirm);
Button btnCancel = findViewById(R.id.module_adas_dispatch_remind_cancel);
tvTimer.setText(String.valueOf(TIMER));
btnAffirm.setOnClickListener(v -> {
CallerFuncBizManager.getBizProvider().dispatchAffirm();
if(dispatchType == 1){
//开始调度确认
CallerFuncBizManager.getBizProvider().dispatchAffirm();
}else if(dispatchType == 2){
//停止调度确认
CallerFuncBizManager.getBizProvider().stopDispatchAffirm();
}
dismissDialog();
});
btnCancel.setOnClickListener(v -> {
CallerFuncBizManager.getBizProvider().dispatchCancel(true);
if(dispatchType == 1){
//开始调度手动取消
CallerFuncBizManager.getBizProvider().dispatchCancel(true);
}else if(dispatchType == 2){
//停止调度手动取消
CallerFuncBizManager.getBizProvider().stopDispatchCancel(true);
}
dismissDialog();
});
}
private void hideDialog() {
CallerFuncBizManager.getBizProvider().dispatchCancel(false);
if(dispatchType == 1){
//开始调度自动取消
CallerFuncBizManager.getBizProvider().dispatchCancel(false);
}else if(dispatchType == 2){
CallerFuncBizManager.getBizProvider().stopDispatchCancel(false);
}
dismissDialog();
}
@@ -74,6 +97,12 @@ public class DispatchCarsDialog extends DispatchBaseDialog {
return;
}
show();
if(dispatchContent.getType() == 2){
//取消调度
tvAdasDispatchTitle.setText("调度取消确认");
tvAdasDispatchRemindContent.setText("车辆将取消到以下位置的自动驾驶");
}
dispatchType = dispatchContent.getType();
handler.sendEmptyMessage(MSG_TYPE_TIMER);
tvLoc.setText(dispatchContent.getEndLocAddress());
}

View File

@@ -53,16 +53,38 @@ public class DispatchDialogManager {
}
}
private void dispatchHengYang(DispatchAdasAutoPilotLocReceiverBean msgData) {
if (msgData.getType() == DISPATCH_TYPE_START) { //衡阳只有开始调度
if (dialog != null && dialog.isShowing()) { //避免下发两次
return;
}
if (dialog == null) {
dialog = new DispatchCarsDialog(mContext);
}
dialog.showDialog(msgData);
/**
* 云调度重启自驾
* @param msgData 长链下发实体
*/
public void showRestartDialog(DispatchAdasAutoPilotLocReceiverBean msgData){
if(isShowing()){
return;
}
if (msgData == null) {
return;
}
if (dialog != null && dialog.isShowing()) { //避免下发两次
return;
}
if(dialog == null){
dialog = new DispatchRestartDialog(mContext);
}
dialog.showDialog(msgData);
}
private void dispatchHengYang(DispatchAdasAutoPilotLocReceiverBean msgData) {
// if (msgData.getType() == DISPATCH_TYPE_START) { //衡阳只有开始调度
// }
//开始、取消调度
if (dialog != null && dialog.isShowing()) { //避免下发两次
return;
}
if (dialog == null) {
dialog = new DispatchCarsDialog(mContext);
}
dialog.showDialog(msgData);
}
private void dispatchEZhou(DispatchAdasAutoPilotLocReceiverBean msgData) {

View File

@@ -0,0 +1,29 @@
package com.mogo.eagle.core.function.hmi.ui.notice;
import android.content.Context;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.mogo.eagle.core.data.biz.dispatch.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager;
import com.mogo.eagle.core.function.hmi.R;
public class DispatchRestartDialog extends DispatchBaseDialog{
public DispatchRestartDialog(@NonNull Context context) {
super(context);
setContentView(R.layout.dialog_adas_dispatch_restart);
setCanceledOnTouchOutside(false);
TextView dispatchRestartEnter = findViewById(R.id.tv_dispatch_restart_enter);
dispatchRestartEnter.setOnClickListener(v -> {
//启动自动驾驶
CallerFuncBizManager.getBizProvider().restartDispatchAffirm();
});
}
@Override
public void showDialog(DispatchAdasAutoPilotLocReceiverBean dispatchContent) {
show();
}
}

View File

@@ -2069,11 +2069,11 @@ internal class DebugSettingView @JvmOverloads constructor(
}
override fun onLogCatch(lineLog: String) {
logInfoView?.let {
if (logViewAttach) {
it.onLogCatch(lineLog)
}
}
// logInfoView?.let {
// if (logViewAttach) {
// it.onLogCatch(lineLog)
// }
// }
}
private fun restartApp() {

View File

@@ -10,7 +10,6 @@ import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.widget.FrameLayout
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
import com.mogo.eagle.core.data.deva.bindingcar.IPCUpgradeStateInfo
@@ -31,6 +30,7 @@ import mogo.telematics.pad.MessagePad
import org.greenrobot.eventbus.EventBus
import kotlin.system.exitProcess
/**
* @author ChenFufeng
* 设置自动驾驶速度和检测页入口
@@ -69,29 +69,60 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor(
@SuppressLint("ClickableViewAccessibility")
private fun initView() {
background = ColorDrawable(Color.parseColor("#F0151D41"))
keyBoardUtil?.setActionListener { inputContent ->
inputContent.toIntOrNull()?.let { speed ->
when {
speed > 60 -> {
// 设置失败键盘不消失,让用户直接修改
ToastUtils.showShort("超过最大限速值60设置失败")
}
else -> {
// 设置自动驾驶速度
val isSuccess = CallerAutoPilotControlManager.setAutoPilotSpeed(speed)
when {
isSuccess -> {
ToastUtils.showShort("车速设置成功,立即生效")
}
else -> {
ToastUtils.showShort("设置车速失败,请启动域控制器")
if (keyBoardUtil == null) {
keyBoardUtil = KeyBoardUtil(sKeyBoardView, etInputSpeed)
}
keyBoardUtil?.setActionListener(object: KeyBoardUtil.ActionListener{
override fun onComplete(inputContent: String?) {
inputContent?.toIntOrNull()?.let { speed ->
when {
speed > 60 -> {
// 设置失败键盘不消失,让用户直接修改
ToastUtils.showShort("超过最大限速值60设置失败")
}
else -> {
keyBoardUtil?.hideKeyboard()
etInputSpeed.clearFocus()
// 设置自动驾驶速度
val isSuccess = CallerAutoPilotControlManager.setAutoPilotSpeed(speed)
when {
isSuccess -> {
ToastUtils.showShort("车速设置成功,立即生效")
}
else -> {
ToastUtils.showShort("设置车速失败,请启动域控制器")
}
}
}
}
}
}
}
override fun onUpdate(inputContent: String?) {
if (inputContent != null) {
try {
if(inputContent.isEmpty()){
speedLimit = 0
}else{
speedLimit = inputContent.toInt()
if(speedLimit>60){
speedLimit = 60
ToastUtils.showShort("最大限速60")
}
}
}catch (t: Exception){
ToastUtils.showShort("最大限速60")
speedLimit = 60
}
etInputSpeed.setText(speedLimit.toString())
etInputSpeed.setSelection(speedLimit.toString().length)
}
}
})
KeyBoardUtil.hideSystemSoftKeyboard(context, etInputSpeed)
ivCloseIcon.setOnClickListener {
clickListener?.onClose(it)
}
@@ -123,42 +154,79 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor(
// }
tvAcceleration.text = "每次调整车速±5km/h,点击确定生效"
if (speedLimit > 0) {
tvSpeed.text = speedLimit.toString()
etInputSpeed.setText(speedLimit.toString())
}else{
tvSpeed.text = "0"
etInputSpeed.setText("0")
}
etInputSpeed.setOnTouchListener { _, _ ->
val curTime = System.currentTimeMillis()
if (curTime - lastTime < 1000) {
return@setOnTouchListener true
}
etInputSpeed.isFocusableInTouchMode = true
etInputSpeed.setSelection(speedLimit.toString().length)
if (keyBoardUtil == null) {
keyBoardUtil = KeyBoardUtil(sKeyBoardView, etInputSpeed)
}
keyBoardUtil?.showKeyboard()
//滑动滚动条
svLayout.post {
svLayout.fullScroll(View.FOCUS_DOWN)
}
if (!connectStatus) {
ToastUtils.showShort("设置车速失败,请启动域控制器")
keyBoardUtil?.hideKeyboard()
return@setOnTouchListener true
} else {
return@setOnTouchListener false
}
}
ivSpeedReduce.setOnClickListener {
if(speedLimit>=5){
speedLimit -= 5
tvSpeed.text = speedLimit.toString()
}else{
etInputSpeed.setText(speedLimit.toString())
}else if(speedLimit in 1..4){
speedLimit = 0
etInputSpeed.setText(speedLimit.toString())
} else{
ToastUtils.showShort("车速不能再减了")
}
etInputSpeed.setSelection(speedLimit.toString().length)
}
ivSpeedAdd.setOnClickListener {
if(speedLimit<=55){
speedLimit += 5
tvSpeed.text = speedLimit.toString()
}else{
etInputSpeed.setText(speedLimit.toString())
}else if(speedLimit in 56..59){
speedLimit = 60
etInputSpeed.setText(speedLimit.toString())
} else{
ToastUtils.showShort("车速不能再加了")
}
etInputSpeed.setSelection(speedLimit.toString().length)
}
//速度确认
tvSureModify.setOnClickListener {
if(speedLimit>60){
// 设置失败键盘不消失,让用户直接修改
ToastUtils.showShort("超过最大限速值60设置失败")
return@setOnClickListener
}
val isSuccess = CallerAutoPilotControlManager.setAutoPilotSpeed(speedLimit)
when {
isSuccess -> {
//速度显示
tvSpeed.text = speedLimit.toString()
etInputSpeed.setText(speedLimit.toString())
ToastUtils.showShort("车速设置成功,立即生效")
}
else -> {
ToastUtils.showShort("设置车速失败,请启动域控制器")
}
}
etInputSpeed.setSelection(speedLimit.toString().length)
}
initOchView()
@@ -230,7 +298,7 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor(
// }
maxAcceleration = carConfigResp.maxAcceleration
speedLimit = (carConfigResp.speedLimit * 3.6).toInt()
tvSpeed.text = speedLimit.toString()
etInputSpeed.setText(speedLimit.toString())
}
}
}

View File

@@ -31,14 +31,27 @@ class BusOperationView @JvmOverloads constructor(
actvAccountPhone.text = phoneMask(SharedPrefs.getInstance(it).getString("och_account",""))
}
clickPersonalRightView()
clickQRBtn()
}
private fun clickQRBtn() {
actvAccountQR.onClick {
EventBus.getDefault().post(EventLogout(EventLogout.SHOW_QR_TYPE))
}
}
private fun initPersonalIcon() {
if(AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)){
ivGotoPersonalInfo.visibility = VISIBLE
}else{
ivGotoPersonalInfo.visibility = GONE
}
if (AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) {
actvAccountQR.visibility = VISIBLE
}else{
actvAccountQR.visibility = GONE
}
}
private fun clickPersonalRightView() {

View File

@@ -6,6 +6,7 @@ import android.inputmethodservice.KeyboardView;
import android.os.Build;
import android.text.Editable;
import android.text.InputType;
import android.util.Log;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
@@ -78,6 +79,9 @@ public class KeyBoardUtil {
editable.delete(start - 1, start);
}
}
if(actionListener != null){
actionListener.onUpdate(editText.getText().toString());
}
break;
case Keyboard.KEYCODE_DONE:
if (actionListener != null) {
@@ -86,6 +90,9 @@ public class KeyBoardUtil {
break;
default:
editable.insert(start, Character.toString((char) primaryCode));
if(actionListener != null){
actionListener.onUpdate(editText.getText().toString());
}
break;
}
}
@@ -133,5 +140,6 @@ public class KeyBoardUtil {
public interface ActionListener {
void onComplete(String inputContent);
void onUpdate(String inputContent);
}
}

View File

@@ -48,7 +48,7 @@ class BrakeViewStatus @JvmOverloads constructor(
if (brakeLight == 1) { //刹车灯亮
if (!isBrake) {
isBrake = true
CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(0, 500)
CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(4, 500)
GlobalScope.launch(Dispatchers.Main) {
var appearAnimation = AlphaAnimation(0f, 1f)
appearAnimation.duration = 300
@@ -63,7 +63,7 @@ class BrakeViewStatus @JvmOverloads constructor(
} else { //不踩刹车,就消失
if (isBrake) {
isBrake = false
CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(3, 500)
CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(0, 500)
GlobalScope.launch(Dispatchers.Main) {
// scaleImageAndTv()
var disappearAnimation = AlphaAnimation(1f, 0f)

View File

@@ -44,8 +44,8 @@ class PncActionsView @JvmOverloads constructor(
private var mAutoPilotStatusInfo: AutopilotStatusInfo? = null
private val bgResources: Int
private val topMargin: Int
private val txtSize: Int
private val topMargin: Float
private val txtSize: Float
init {
LayoutInflater.from(context).inflate(R.layout.view_pnc_actions, this, true)
@@ -54,20 +54,20 @@ class PncActionsView @JvmOverloads constructor(
R.styleable.PncActionsView_background_resource,
R.drawable.pnc_actions_bg
)
topMargin = a.getResourceId(
topMargin = a.getDimension(
R.styleable.PncActionsView_pnc_top_margin,
resources.getDimension(R.dimen.dp_30).toInt()
resources.getDimension(R.dimen.dp_30)
)
txtSize = a.getResourceId(
txtSize = a.getDimension(
R.styleable.PncActionsView_pnc_size,
resources.getDimension(R.dimen.dp_34).toInt()
resources.getDimension(R.dimen.dp_34)
)
a.recycle()
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
(tvHmiPncActions.layoutParams as MarginLayoutParams).topMargin = topMargin
(tvHmiPncActions.layoutParams as MarginLayoutParams).topMargin = topMargin.toInt()
tvHmiPncActions.setTextSize(COMPLEX_UNIT_PX, txtSize.toFloat())
CallerAutoPilotStatusListenerManager.addListener(TAG, this)

View File

@@ -2,15 +2,22 @@ package com.mogo.eagle.core.function.hmi.ui.vehicle
import android.content.Context
import android.util.AttributeSet
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.enums.EventTypeEnumNew
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.data.msgbox.MsgBoxType
import com.mogo.eagle.core.data.msgbox.V2XMsg
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager.saveMsgBox
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.zhjt.mogo.adas.data.bean.MogoReport
@@ -26,6 +33,10 @@ class TakeOverView @JvmOverloads constructor(
const val TAG = "TakeOverView"
}
private var autopilotStatus: Int = 0 //自动驾驶状态 0代表不可自动驾驶,1代表可自动驾驶,2代表自动驾驶中,7:平行驾驶中
private var isParallel: Boolean = false //是否是平行驾驶
init {
LayoutInflater.from(context).inflate(R.layout.view_take_over, this, true)
}
@@ -37,6 +48,21 @@ class TakeOverView @JvmOverloads constructor(
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
}
/**
* 自动驾驶状态信息
*
* @param autoPilotStatusInfo 状态信息
*/
override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) {
autopilotStatus = autoPilotStatusInfo.state
if(autoPilotStatusInfo.state == 7){
isParallel = true
}else if(autoPilotStatusInfo.state == 0 || autoPilotStatusInfo.state == 1){
isParallel = false
}
Log.i(TAG,"自动驾驶状态${autopilotStatus}")
}
/**
* 工控机监控节点上报
*/
@@ -54,7 +80,7 @@ class TakeOverView @JvmOverloads constructor(
MogoReport.Code.Error.EMAP.EXIT_AUTOPILOT_FOR_PLANNING,
MogoReport.Code.Error.EMAP.EXIT_AUTOPILOT_FOR_LOCATION,
MogoReport.Code.Error.EMAP.EXIT_AUTOPILOT_FOR_CHASSIS,
MogoReport.Code.Error.EMAP.EXIT_AUTOPILOT_FOR_DISTANCE -> {
MogoReport.Code.Error.EMAP.EXIT_AUTOPILOT_FOR_DISTANCE ->{
CallerHmiManager.warningV2X(
EventTypeEnumNew.TAKE_OVER_EVENT.poiType,
EventTypeEnumNew.TAKE_OVER_EVENT.content,
@@ -63,6 +89,16 @@ class TakeOverView @JvmOverloads constructor(
override fun onShow() {
takeOver = true
visibility = View.VISIBLE
//加入消息盒子
saveMsgBox(
MsgBoxBean(
MsgBoxType.V2X, V2XMsg(
EventTypeEnumNew.TAKE_OVER_EVENT.poiType,
EventTypeEnumNew.TAKE_OVER_EVENT.content,
EventTypeEnumNew.TAKE_OVER_EVENT.tts
)
)
)
}
override fun onDismiss() {
@@ -72,6 +108,41 @@ class TakeOverView @JvmOverloads constructor(
}
)
}
//弱网
MogoReport.Code.Error.EMAP.EPARALLEL_AICLOUD_NETWORK_WEAK,
MogoReport.Code.Error.EMAP.EPARALLEL_AICLOUD_CONNECTION_ERROR -> {
//如果是平行驾驶状态下,提示弱网接管
Log.i(TAG,"弱网时自动驾驶状态:${autopilotStatus}")
if(isParallel){
CallerHmiManager.warningV2X(
EventTypeEnumNew.NETWORK_WEAK_EVENT.poiType,
EventTypeEnumNew.NETWORK_WEAK_EVENT.content,
EventTypeEnumNew.NETWORK_WEAK_EVENT.tts,
object : IMoGoWarningStatusListener {
override fun onShow() {
takeOver = true
visibility = View.VISIBLE
//加入消息盒子
Log.i(TAG,"弱网时加入消息盒子${EventTypeEnumNew.NETWORK_WEAK_EVENT.content}")
saveMsgBox(
MsgBoxBean(
MsgBoxType.V2X, V2XMsg(
EventTypeEnumNew.NETWORK_WEAK_EVENT.poiType,
EventTypeEnumNew.NETWORK_WEAK_EVENT.content,
EventTypeEnumNew.NETWORK_WEAK_EVENT.tts
)
)
)
}
override fun onDismiss() {
takeOver = false
visibility = View.GONE
}
}
)
}
}
}
}
}

View File

@@ -8,10 +8,13 @@ import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
import com.mogo.eagle.core.data.deva.bindingcar.AdUpgradeStateHelper
import com.mogo.eagle.core.data.deva.bindingcar.IPCUpgradeStateInfo
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationWGS84Listener
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener
import com.mogo.eagle.core.function.api.hmi.autopilot.IMoGoCheckAutoPilotBtnListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
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.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiListenerManager
@@ -37,7 +40,7 @@ class SystemVersionView @JvmOverloads constructor(
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoAutopilotStatusListener,
IMoGoDevaToolsListener, IMoGoCheckAutoPilotBtnListener {
IMoGoDevaToolsListener, IMoGoCheckAutoPilotBtnListener, IMoGoChassisLocationWGS84Listener {
companion object {
const val TAG = "SystemVersionView"
@@ -55,6 +58,7 @@ class SystemVersionView @JvmOverloads constructor(
private var currentProgress: Int = -1 //当前已下载包体大小
private var isHDCached = false
private var location: MogoLocation? = null
init {
LayoutInflater.from(context).inflate(R.layout.view_system_version, this, true)
@@ -137,7 +141,17 @@ class SystemVersionView @JvmOverloads constructor(
if (isHDCached) {// 已缓存
ToastUtils.showShort(resources.getString(R.string.offline_had_downloaded))
} else {// 未缓存
OfflineMapDialog(context).show()
if (CallerMapUIServiceManager.getCityCode().isNullOrEmpty()) {// 未拿到高德的cityCode
if (location == null || (location!!.longitude <= 0.0 && location!!.latitude <= 0.0)) {// 未拿到高精的经纬度
ToastUtils.showShort(resources.getString(R.string.location_try_again))
} else {// 拿到了高精的经纬度
val dialog = OfflineMapDialog(context)
dialog.location = location
dialog.show()
}
} else {// 拿到高德的cityCode
OfflineMapDialog(context).show()
}
}
}
@@ -292,6 +306,7 @@ class SystemVersionView @JvmOverloads constructor(
CallerHmiListenerManager.addListener(TAG, this)
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
CallerDevaToolsListenerManager.addListener(TAG,this)
CallerChassisLocationWGS84ListenerManager.addListener(TAG, this)
needQueryContainers = true
}
@@ -303,6 +318,7 @@ class SystemVersionView @JvmOverloads constructor(
CallerHmiListenerManager.removeListener(TAG)
CallerAutoPilotStatusListenerManager.removeListener(TAG)
CallerDevaToolsListenerManager.removeListener(TAG)
CallerChassisLocationWGS84ListenerManager.removeListener(TAG)
needQueryContainers = false
}
@@ -361,4 +377,7 @@ class SystemVersionView @JvmOverloads constructor(
adCircularProgressView?.visibility = View.GONE
}
override fun onChassisLocationWGS84(gnssInfo: MogoLocation) {
location = gnssInfo
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 143 KiB

View File

@@ -19,6 +19,7 @@
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_adas_dispatch_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/module_services_dispatch_cars_dialog_title_margin_top"
@@ -30,6 +31,7 @@
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_adas_dispatch_remind_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/module_services_dispatch_cars_dialog_content_margin_top"

View File

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/module_services_dispatch_cars_dialog_width"
android:layout_height="@dimen/module_services_dispatch_cars_dialog_height"
android:background="@drawable/bg_dispatch_cars">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="@string/dispatch_dialog_restart_title"
android:textColor="@android:color/white"
android:textSize="@dimen/dp_48"
android:layout_marginTop="@dimen/module_services_dispatch_cars_dialog_title_margin_top"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="@dimen/dp_200"
android:gravity="center_horizontal"
android:text="@string/dispatch_dialog_restart_content"
android:textColor="@android:color/white"
android:textSize="@dimen/dp_40"
/>
<TextView
android:id="@+id/tv_dispatch_restart_enter"
android:layout_width="0dp"
android:layout_height="@dimen/module_services_dispatch_cars_dialog_line_margin_bottom"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:text="@string/dispatch_dialog_restart_enter"
android:textColor="@color/color_1F9BFE"
android:textSize="@dimen/module_services_dispatch_cars_dialog_title_size"
android:gravity="center"
/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/color_66B8BFE8"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toTopOf="@+id/tv_dispatch_restart_enter"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<com.mogo.eagle.core.widget.RoundConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/dp_637"
android:layout_height="@dimen/dp_160"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#E3ECFE"
app:roundLayoutRadius="@dimen/dp_30"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginBottom="@dimen/dp_12"
>
<ImageView
android:id="@+id/ivBusPNoticeImage"
android:layout_width="@dimen/dp_107"
android:layout_height="@dimen/dp_107"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:src="@drawable/icon_bus_passenger_logo"
android:layout_marginStart="@dimen/dp_26"
/>
<TextView
android:id="@+id/tvBusPNoticeTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#991A273F"
android:textSize="@dimen/dp_36"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginEnd="@dimen/dp_26"
/>
<TextView
android:id="@+id/tvBusPNoticeContent"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/ivBusPNoticeImage"
app:layout_constraintRight_toLeftOf="@id/tvBusPNoticeTime"
android:layout_marginStart="@dimen/dp_26"
android:layout_marginEnd="@dimen/dp_16"
android:textColor="#FF203555"
android:textSize="@dimen/dp_36"
android:gravity="start"
android:maxLines="3"
android:ellipsize="end"
/>
</com.mogo.eagle.core.widget.RoundConstraintLayout>

View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<com.mogo.eagle.core.widget.RoundConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/dp_637"
android:layout_height="@dimen/dp_160"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#E3ECFE"
app:roundLayoutRadius="@dimen/dp_30"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginBottom="@dimen/dp_12"
>
<ImageView
android:id="@+id/ivBusPOperationImage"
android:layout_width="@dimen/dp_107"
android:layout_height="@dimen/dp_107"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:src="@drawable/icon_bus_passenger_logo"
android:layout_marginStart="@dimen/dp_26"
/>
<TextView
android:id="@+id/tvBusPOperationTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#991A273F"
android:textSize="@dimen/dp_36"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginEnd="@dimen/dp_26"
/>
<TextView
android:id="@+id/tvBusPOperationContent"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/ivBusPOperationImage"
app:layout_constraintRight_toLeftOf="@id/tvBusPOperationTime"
android:layout_marginStart="@dimen/dp_26"
android:layout_marginEnd="@dimen/dp_16"
android:textColor="#FF203555"
android:textSize="@dimen/dp_36"
android:gravity="start"
android:maxLines="3"
android:ellipsize="end"
/>
</com.mogo.eagle.core.widget.RoundConstraintLayout>

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<com.mogo.eagle.core.widget.RoundConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/dp_637"
android:layout_height="@dimen/dp_160"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#E3ECFE"
app:roundLayoutRadius="@dimen/dp_30"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginBottom="@dimen/dp_12"
>
<ImageView
android:id="@+id/ivBusPV2XImage"
android:layout_width="@dimen/dp_107"
android:layout_height="@dimen/dp_107"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginStart="@dimen/dp_26"
/>
<TextView
android:id="@+id/tvBusPV2XTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_26"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/tvBusPV2XContent"
app:layout_constraintLeft_toRightOf="@id/ivBusPV2XImage"
android:textColor="#FF203555"
android:textSize="@dimen/dp_36"
/>
<TextView
android:id="@+id/tvBusPV2XTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#991A273F"
android:textSize="@dimen/dp_36"
app:layout_constraintTop_toTopOf="@id/tvBusPV2XTitle"
app:layout_constraintBottom_toBottomOf="@id/tvBusPV2XTitle"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginEnd="@dimen/dp_26"
/>
<TextView
android:id="@+id/tvBusPV2XContent"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@id/tvBusPV2XTitle"
app:layout_constraintRight_toRightOf="@id/tvBusPV2XTime"
app:layout_constraintTop_toBottomOf="@id/tvBusPV2XTitle"
app:layout_constraintBottom_toBottomOf="parent"
android:textColor="#CC203555"
android:textSize="@dimen/dp_28"
android:gravity="start"
android:maxLines="2"
android:ellipsize="end"
/>
</com.mogo.eagle.core.widget.RoundConstraintLayout>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<com.mogo.eagle.core.widget.RoundConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/dp_291"
android:layout_width="@dimen/dp_400"
android:layout_height="@dimen/dp_80"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#CCFFFFFF"

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<com.mogo.eagle.core.widget.RoundConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/dp_291"
android:layout_width="@dimen/dp_400"
android:layout_height="@dimen/dp_80"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#CCFFFFFF"

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<com.mogo.eagle.core.widget.RoundCanClickConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/dp_291"
android:layout_width="@dimen/dp_400"
android:layout_height="@dimen/dp_80"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#CCFFFFFF"
@@ -19,13 +19,25 @@
android:layout_marginStart="@dimen/dp_13"
/>
<TextView
android:id="@+id/tvMV2XTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF203555"
android:textSize="@dimen/dp_24"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/tvMV2XContent"
app:layout_constraintLeft_toRightOf="@id/ivMV2XImage"
android:layout_marginStart="@dimen/dp_10"
/>
<TextView
android:id="@+id/tvMV2XTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/tvMV2XTitle"
app:layout_constraintBottom_toBottomOf="@id/tvMV2XTitle"
android:textColor="#991A273F"
android:textSize="@dimen/dp_18"
android:layout_marginEnd="@dimen/dp_13"
@@ -35,17 +47,15 @@
android:id="@+id/tvMV2XContent"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvMV2XTitle"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/ivMV2XImage"
app:layout_constraintRight_toLeftOf="@id/tvMV2XTime"
app:layout_constraintLeft_toLeftOf="@id/tvMV2XTitle"
app:layout_constraintRight_toRightOf="@id/tvMV2XTime"
android:gravity="start"
android:maxLines="1"
android:maxLines="2"
android:ellipsize="end"
android:textColor="#FF203555"
android:textColor="#CC203555"
android:textSize="@dimen/dp_18"
android:layout_marginStart="@dimen/dp_18"
android:layout_marginEnd="@dimen/dp_18"
/>
</com.mogo.eagle.core.widget.RoundCanClickConstraintLayout>

View File

@@ -19,12 +19,25 @@
android:layout_marginStart="@dimen/dp_13"
/>
<TextView
android:id="@+id/tvMV2XTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF203555"
android:textSize="@dimen/dp_25"
android:textStyle="bold"
android:layout_marginStart="@dimen/dp_10"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/tvMV2XContent"
app:layout_constraintLeft_toRightOf="@id/ivMV2XImage"
/>
<TextView
android:id="@+id/tvMV2XTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="@id/tvMV2XTitle"
app:layout_constraintBottom_toBottomOf="@id/tvMV2XTitle"
app:layout_constraintRight_toRightOf="parent"
android:textColor="#99203555"
android:textSize="18dp"
@@ -35,18 +48,15 @@
android:id="@+id/tvMV2XContent"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/ivMV2XImage"
app:layout_constraintRight_toLeftOf="@id/tvMV2XTime"
app:layout_constraintTop_toBottomOf="@id/tvMV2XTitle"
app:layout_constraintLeft_toLeftOf="@id/tvMV2XTitle"
app:layout_constraintRight_toRightOf="@id/tvMV2XTime"
android:gravity="start"
android:maxLines="1"
android:maxLines="2"
android:ellipsize="end"
android:textColor="#FF203555"
android:textSize="25dp"
android:textStyle="bold"
android:layout_marginStart="@dimen/dp_13"
android:layout_marginEnd="@dimen/dp_13"
android:textColor="#CC203555"
android:textSize="@dimen/dp_20"
/>
</com.mogo.eagle.core.widget.RoundCanClickConstraintLayout>

View File

@@ -14,12 +14,25 @@
android:layout_marginStart="@dimen/dp_16"
/>
<TextView
android:id="@+id/tvMV2XTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF203555"
android:textSize="@dimen/dp_25"
android:layout_marginStart="@dimen/dp_16"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/tvMV2XContent"
app:layout_constraintLeft_toRightOf="@id/ivMV2XImage"
android:textStyle="bold"
/>
<TextView
android:id="@+id/tvMV2XTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="@id/tvMV2XTitle"
app:layout_constraintBottom_toBottomOf="@id/tvMV2XTitle"
app:layout_constraintRight_toRightOf="parent"
android:textColor="#FF4A5B76"
android:textSize="@dimen/dp_18"
@@ -30,18 +43,15 @@
android:id="@+id/tvMV2XContent"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvMV2XTitle"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/ivMV2XImage"
app:layout_constraintRight_toLeftOf="@id/tvMV2XTime"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="@id/tvMV2XTitle"
app:layout_constraintRight_toRightOf="@id/tvMV2XTime"
android:gravity="start"
android:maxLines="1"
android:maxLines="2"
android:ellipsize="end"
android:textColor="#FF203555"
android:textSize="@dimen/dp_25"
android:layout_marginStart="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_16"
android:textColor="#CC203555"
android:textSize="@dimen/dp_20"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -3,8 +3,7 @@
android:layout_width="804dp"
android:layout_height="160dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#53000000"
app:roundLayoutRadius="24dp"
android:background="@drawable/bg_msg_box_v2x"
android:layout_gravity="center_horizontal"
android:layout_marginStart="30dp"
android:layout_marginEnd="30dp"
@@ -20,11 +19,24 @@
app:layout_constraintLeft_toLeftOf="parent"
android:layout_margin="25dp"/>
<TextView
android:id="@+id/tvV2XTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/tvV2XContent"
app:layout_constraintLeft_toRightOf="@id/ivV2XImage"
android:layout_marginStart="@dimen/dp_15"
android:textColor="#FFFFFFFF"
android:textSize="@dimen/dp_32"
/>
<TextView
android:id="@+id/tvV2XTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@id/ivV2XImage"
app:layout_constraintTop_toTopOf="@id/tvV2XTitle"
app:layout_constraintBottom_toBottomOf="@id/tvV2XTitle"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginEnd="25dp"
android:textColor="#80FFFFFF"
@@ -35,14 +47,13 @@
android:id="@+id/tvV2XContent"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toRightOf="@id/ivV2XImage"
app:layout_constraintRight_toRightOf="@id/tvV2XTime"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvV2XTitle"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginStart="25dp"
android:textColor="#FFFFFFFF"
android:textSize="32dp"
android:maxLines="1"
app:layout_constraintLeft_toLeftOf="@id/tvV2XTitle"
app:layout_constraintRight_toRightOf="@id/tvV2XTime"
android:textColor="#B3FFFFFF"
android:textSize="@dimen/dp_28"
android:maxLines="2"
android:ellipsize="end"
/>

View File

@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<com.mogo.eagle.core.widget.RoundCanClickConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/clV2XLayout"
android:layout_width="804dp"
android:layout_width="@dimen/dp_804"
android:layout_height="160dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#53000000"
app:roundLayoutRadius="24dp"
android:background="@drawable/bg_msg_box_v2x"
android:layout_gravity="center_horizontal"
android:layout_marginTop="7dp"
android:layout_marginBottom="7dp">
android:layout_marginBottom="7dp"
>
<ImageView
android:id="@+id/ivV2XImage"
@@ -19,11 +19,24 @@
app:layout_constraintLeft_toLeftOf="parent"
android:layout_margin="25dp"/>
<TextView
android:id="@+id/tvV2XTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/tvV2XContent"
app:layout_constraintLeft_toRightOf="@id/ivV2XImage"
android:layout_marginStart="@dimen/dp_15"
android:textColor="#FFFFFFFF"
android:textSize="@dimen/dp_32"
/>
<TextView
android:id="@+id/tvV2XTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@id/ivV2XImage"
app:layout_constraintTop_toTopOf="@id/tvV2XTitle"
app:layout_constraintBottom_toBottomOf="@id/tvV2XTitle"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginEnd="25dp"
android:textColor="#80FFFFFF"
@@ -34,14 +47,13 @@
android:id="@+id/tvV2XContent"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toRightOf="@id/ivV2XImage"
app:layout_constraintRight_toRightOf="@id/tvV2XTime"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvV2XTitle"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginStart="25dp"
android:textColor="#FFFFFFFF"
android:textSize="32dp"
android:maxLines="1"
app:layout_constraintLeft_toLeftOf="@id/tvV2XTitle"
app:layout_constraintRight_toRightOf="@id/tvV2XTime"
android:textColor="#B3FFFFFF"
android:textSize="@dimen/dp_28"
android:maxLines="2"
android:ellipsize="end"
/>

View File

@@ -20,32 +20,42 @@
/>
<TextView
android:id="@+id/tvPassengerV2XTime"
android:id="@+id/tvPassengerV2XTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toTopOf="@id/tvPassengerV2XContent"
app:layout_constraintLeft_toRightOf="@id/ivPassengerV2XImage"
android:layout_marginStart="@dimen/dp_20"
android:textColor="#FFFFFFFF"
android:textSize="@dimen/dp_36"
/>
<TextView
android:id="@+id/tvPassengerV2XTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@id/tvPassengerV2XTitle"
app:layout_constraintBottom_toBottomOf="@id/tvPassengerV2XTitle"
app:layout_constraintRight_toRightOf="parent"
android:textColor="#FFFFFFFF"
android:textSize="26dp"
android:layout_marginEnd="20dp"
android:textSize="@dimen/dp_26"
android:layout_marginEnd="@dimen/dp_20"
/>
<TextView
android:id="@+id/tvPassengerV2XContent"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvPassengerV2XTitle"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/ivPassengerV2XImage"
app:layout_constraintRight_toLeftOf="@id/tvPassengerV2XTime"
app:layout_constraintLeft_toLeftOf="@id/tvPassengerV2XTitle"
app:layout_constraintRight_toRightOf="@id/tvPassengerV2XTime"
android:gravity="start"
android:maxLines="1"
android:maxLines="2"
android:ellipsize="end"
android:textColor="#FFFFFFFF"
android:textSize="36dp"
android:layout_marginStart="25dp"
android:layout_marginEnd="25dp"
android:textSize="@dimen/dp_28"
/>
</com.mogo.eagle.core.widget.RoundCanClickConstraintLayout>

View File

@@ -14,31 +14,41 @@
/>
<TextView
android:id="@+id/tvPassengerV2XTime"
android:id="@+id/tvPassengerV2XTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toTopOf="@id/tvPassengerV2XContent"
app:layout_constraintLeft_toRightOf="@id/ivPassengerV2XImage"
android:textColor="#FFFFFFFF"
android:textSize="@dimen/dp_36"
android:layout_marginStart="@dimen/dp_20"
/>
<TextView
android:id="@+id/tvPassengerV2XTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="@id/tvPassengerV2XTitle"
app:layout_constraintBottom_toBottomOf="@id/tvPassengerV2XTitle"
app:layout_constraintRight_toRightOf="parent"
android:textColor="#99FFFFFF"
android:textSize="26dp"
android:textSize="@dimen/dp_26"
/>
<TextView
android:id="@+id/tvPassengerV2XContent"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvPassengerV2XTitle"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/ivPassengerV2XImage"
app:layout_constraintRight_toLeftOf="@id/tvPassengerV2XTime"
app:layout_constraintLeft_toLeftOf="@id/tvPassengerV2XTitle"
app:layout_constraintRight_toRightOf="@id/tvPassengerV2XTime"
android:gravity="start"
android:maxLines="1"
android:maxLines="2"
android:ellipsize="end"
android:textColor="#FFFFFFFF"
android:textSize="36dp"
android:layout_marginStart="25dp"
android:layout_marginEnd="25dp"
android:textSize="@dimen/dp_28"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rvBusBoxBubbleList"
android:layout_width="@dimen/dp_637"
android:layout_height="wrap_content"
>
</androidx.recyclerview.widget.RecyclerView>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rvMBoxBubbleList"
android:layout_width="@dimen/dp_291"
android:layout_width="@dimen/dp_400"
android:layout_height="wrap_content"
>

View File

@@ -6,6 +6,7 @@
android:layout_height="match_parent">
<ScrollView
android:id="@+id/svLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
@@ -223,8 +224,8 @@
app:layout_constraintTop_toBottomOf="@id/tvSpeedTitle"
/>
<TextView
android:id="@+id/tvSpeed"
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/etInputSpeed"
android:layout_width="189dp"
android:layout_height="140dp"
app:layout_constraintTop_toTopOf="@id/ivSpeedReduce"
@@ -234,15 +235,17 @@
android:textColor="#FFFFFFFF"
android:textSize="80dp"
android:gravity="center"
tools:ignore="SpeakableTextPresentCheck"
android:focusableInTouchMode="false"
/>
<ImageView
android:id="@+id/ivSpeedAdd"
android:layout_width="105dp"
android:layout_height="140dp"
app:layout_constraintTop_toTopOf="@id/tvSpeed"
app:layout_constraintBottom_toBottomOf="@id/tvSpeed"
app:layout_constraintLeft_toRightOf="@id/tvSpeed"
app:layout_constraintTop_toTopOf="@id/etInputSpeed"
app:layout_constraintBottom_toBottomOf="@id/etInputSpeed"
app:layout_constraintLeft_toRightOf="@id/etInputSpeed"
android:src="@drawable/icon_speed_add"
/>
@@ -268,8 +271,8 @@
android:textColor="@android:color/white"
android:textSize="42dp"
android:layout_marginLeft="50dp"
app:layout_constraintTop_toTopOf="@id/tvSpeed"
app:layout_constraintBottom_toBottomOf="@id/tvSpeed"
app:layout_constraintTop_toTopOf="@id/etInputSpeed"
app:layout_constraintBottom_toBottomOf="@id/etInputSpeed"
app:layout_constraintLeft_toRightOf="@id/tvUnit"
tools:visibility="visible" />

View File

@@ -1968,6 +1968,7 @@
android:layout_margin="2dp"
android:padding="@dimen/dp_20"
android:gravity="center"
android:visibility="gone"
android:textOff="展示日志过滤面板"
android:textOn="关闭日志过滤面板"
android:textSize="@dimen/dp_24" />

View File

@@ -60,6 +60,16 @@
android:textColor="@android:color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/actvAccountQR"
android:layout_width="@dimen/dp_84"
android:layout_height="@dimen/dp_84"
android:src="@drawable/icon_bind_driver_qrcode"
android:layout_marginLeft="@dimen/dp_32"
app:layout_constraintLeft_toRightOf="@+id/actvAccountPhone"
app:layout_constraintTop_toTopOf="@+id/actvAccountPhone"
app:layout_constraintBottom_toBottomOf="@+id/actvAccountPhone"/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/ivGotoPersonalInfo"

View File

@@ -76,8 +76,8 @@
<declare-styleable name="PncActionsView">
<attr name="background_resource" format="reference"/>
<attr name="pnc_top_margin" format="reference"/>
<attr name="pnc_size" format="reference"/>
<attr name="pnc_top_margin" format="dimension"/>
<attr name="pnc_size" format="dimension"/>
</declare-styleable>
<declare-styleable name="DriverMsgBoxButtonView">

View File

@@ -63,6 +63,9 @@
<string name="dispatch_dialog_flight_info">航班信息:</string>
<string name="dispatch_dialog_affirm">接受任务</string>
<string name="dispatch_cars_remind_title">调度确认</string>
<string name="dispatch_dialog_restart_title">提示</string>
<string name="dispatch_dialog_restart_content">当前车辆已退出自动驾驶,请点击下方按钮恢复</string>
<string name="dispatch_dialog_restart_enter">进入自动驾驶</string>
<string name="dispatch_cars_remind_content">车辆将开启自动驾驶,并行驶至:</string>
<string name="dispatch_cars_affirm">确认</string>
<string name="dispatch_cars_cancel">取消</string>
@@ -72,6 +75,7 @@
<string name="offline_download_success">离线地图下载成功</string>
<string name="offline_download_failure">离线地图下载失败</string>
<string name="offline_had_downloaded">当前已为最新版本</string>
<string name="location_try_again">请检查定位是否正常</string>
<string name="ok_tip">确定</string>
<string name="retry">重试</string>
</resources>