Merge branch 'dev_robotaxi-d_240912_6.7.2_local' of gitlab.zhidaoauto.com:SCA/L4HA/AndroidApp/MoGoEagleEye into dev_robotaxi-d_240912_6.7.2_local

This commit is contained in:
xuxinchao
2024-10-29 11:41:18 +08:00
23 changed files with 240 additions and 149 deletions

View File

@@ -59,7 +59,7 @@ object ColdStartAnalyticsManager {
coldStartParams[eventParamLatitude] = latitude
coldStartParams[eventParamLongitude] = longitude
coldStartParams[eventParamStep] = step
coldStartParams[eventParamReason] =
coldStartParams[eventParamReason] = reason
MogoAnalyticUtils.track(coldStartStep,coldStartParams)
}

View File

@@ -544,6 +544,7 @@ class FaultReasonView @JvmOverloads constructor(
override fun onVisibilityAggregated(isVisible: Boolean) {
super.onVisibilityAggregated(isVisible)
if(visibility == View.VISIBLE){
CallerDevaToolsListenerManager.addListener(TAG, this)
//获取一级分类
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId, 1, 0, type, 0)
//弹窗展示时间
@@ -585,4 +586,14 @@ class FaultReasonView @JvmOverloads constructor(
}
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
CallerDevaToolsListenerManager.addListener(TAG, this)
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
CallerDevaToolsListenerManager.removeListener(TAG)
}
}

View File

@@ -344,6 +344,7 @@ class WorkOrderView @JvmOverloads constructor(
override fun onVisibilityChanged(changedView: View, visibility: Int) {
super.onVisibilityChanged(changedView, visibility)
if(visibility == View.VISIBLE){
CallerDevaToolsListenerManager.addListener(TAG, this)
//弹窗展示时间
tv_work_order_time.text =
millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat())
@@ -364,7 +365,16 @@ class WorkOrderView @JvmOverloads constructor(
//重置工单问题类型
workOrderType = ""
}
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
CallerDevaToolsListenerManager.addListener(TAG, this)
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
CallerDevaToolsListenerManager.removeListener(TAG)
}
}

View File

@@ -486,6 +486,10 @@ class MoGoHmiProvider : IMoGoHmiProvider {
ToolKitDataManager.addListener(TAG, listener)
}
override fun removeToolKitDefaultItemClickListener(tag: String) {
ToolKitDataManager.removeListener(TAG)
}
/**
* 增加单个默认样式的工具箱item
* @param toolTag 唯一标识tag和前面toolTag重复的默认不添加跳过

View File

@@ -534,7 +534,7 @@ class OperatePanelLayout : LinearLayout {
val isPressed = preference.extras.getBoolean("is_pressed", true)
if (!isPressed) {
preference.extras.remove("is_pressed")
return true
return false
}
val isChecked = newValue as? Boolean ?: false
hmiAction("SOP 演示模式开关, ", !FunctionBuildConfig.isDemoMode)
@@ -545,18 +545,21 @@ class OperatePanelLayout : LinearLayout {
if (!FunctionBuildConfig.isDemoMode) { //关闭美化模式时,通知工控机
CallerAutoPilotControlManager.setIPCDemoMode(FunctionBuildConfig.isDemoMode)
}
return true
}
KEY_RECORD_BAG_DIALOG -> {
val isChecked = newValue as? Boolean ?: false
FunctionBuildConfig.isShowBagRecordWindow = isChecked
hmiAction("SOP 是否展示录包弹窗, ", isChecked)
clickEventAnalytics("录包弹窗", isChecked)
return true
}
KEY_TAKE_OVER_WAKE -> {
val isChecked = newValue as? Boolean ?: false
FunctionBuildConfig.isTakeoverRemind = isChecked
hmiAction("SOP 是否展示接管提醒, ", isChecked)
clickEventAnalytics("接管提醒", isChecked)
return true
}
}
return super.onPreferenceChange(preference, newValue)
@@ -810,6 +813,7 @@ class OperatePanelLayout : LinearLayout {
CallerLogger.d(TAG, "发送开关数据:${isChecked}到乘客屏")
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.WEATHER_SWITCH_STATUS, (if (isChecked) "1" else "0").toByteArray())
clickEventAnalytics("天气效果开关", isChecked)
return true
}
KEY_SYSTEM_BOOT_STATUS_SHOW -> {
val isChecked = newValue as? Boolean ?: false
@@ -817,6 +821,7 @@ class OperatePanelLayout : LinearLayout {
clickEventAnalytics("系统启动状态展示", isChecked)
HmiBuildConfig.isShowConnectionProgressView = isChecked
CallerHmiViewControlListenerManager.updateConnectionProgressView(isChecked)
return true
}
KEY_SWEEPER_CLOUD_CONTROL -> {
val isChecked = newValue as? Boolean ?: false
@@ -836,6 +841,7 @@ class OperatePanelLayout : LinearLayout {
confirmDialog.showSweeperModeChangeConfirmDialog()
}
clickEventAnalytics("清扫云控业务", isChecked)
return true
}
}
return super.onPreferenceChange(preference, newValue)
@@ -1217,7 +1223,7 @@ class OperatePanelLayout : LinearLayout {
val isPressed = preference.extras.getBoolean("is_pressed", true)
if (!isPressed) {
preference.extras.remove("is_pressed")
return true
return false
}
val isChecked = newValue as? Boolean ?: false
hmiAction("SOP 雨天模式开关, ", isChecked)

View File

@@ -30,6 +30,7 @@ import com.zhjt.mogo_core_function_devatools.coldstart.ColdStartNodeAdapter
import kotlinx.android.synthetic.main.view_cold_start.view.ivColdStartNow
import kotlinx.android.synthetic.main.view_cold_start.view.ivColdStartStatus
import kotlinx.android.synthetic.main.view_cold_start.view.ivIpcConnectStatus
import kotlinx.android.synthetic.main.view_cold_start.view.ivNodeListMask
import kotlinx.android.synthetic.main.view_cold_start.view.ivSsmConnectStatus
import kotlinx.android.synthetic.main.view_cold_start.view.rvNodeList
import kotlinx.android.synthetic.main.view_cold_start.view.tvColdStartContent
@@ -110,7 +111,6 @@ class ColdStartView @JvmOverloads constructor(
//保存点击时间
ColdStartConfig.setColdStartNowState(System.currentTimeMillis())
}
}
override fun onAttachedToWindow() {
@@ -123,6 +123,11 @@ class ColdStartView @JvmOverloads constructor(
super.onDetachedFromWindow()
CallerAutoPilotStatusListenerManager.removeListener(TAG)
CallerColdStartStateListenerManager.removeListener(TAG)
ipcRotationAnim?.cancel()
ssmRotationAnim?.cancel()
connectSSMTimer?.cancel()
coldStartRotationAnim?.cancel()
connectColdStartTimer?.cancel()
}
override fun onAutopilotIpcConnectStatusChanged(
@@ -285,6 +290,13 @@ class ColdStartView @JvmOverloads constructor(
//记录冷启动成功时间
ColdStartConfig.setColdStartSuccessTime(System.currentTimeMillis())
}
if(it.eventStatus == SsmInfo.CSState.COLD_START_UNREADY || it.eventStatus == SsmInfo.CSState.COLD_START_TIMEOUT){
//展示冷启动失败视图
showColdStartFailView()
//冷启动失败埋点统计
reason = "SSM返回冷启动失败"
ColdStartAnalyticsManager.coldStartStepAnalytics(ColdStartAnalyticsManager.coldStartFail,reason)
}
tvColdStartContent.text = getColdStartEventStatus(it.eventStatus)
nodeList.clear()
it.nodeList.forEach {node->
@@ -335,7 +347,7 @@ class ColdStartView @JvmOverloads constructor(
}
// 超时
SsmInfo.CSState.COLD_START_TIMEOUT->{
"系统启动异常,建议重启车辆并上报问题"
"系统启动超时,建议重启车辆并上报问题"
}
}
}
@@ -399,9 +411,14 @@ class ColdStartView @JvmOverloads constructor(
viewColdStartDivider.visibility = View.GONE
ivColdStartStatus.visibility = View.GONE
tvColdStartContent.visibility = View.GONE
rvNodeList.visibility = View.GONE
ivNodeListMask.visibility = View.GONE
//域控连接成功埋点统计
reason = "域控连接成功"
ColdStartAnalyticsManager.coldStartStepAnalytics(ColdStartAnalyticsManager.ipcConnectSuccess,reason)
ssmConnectStatus = false
coldStartStatus = false
newColdStart = false
}
/**
@@ -426,6 +443,8 @@ class ColdStartView @JvmOverloads constructor(
viewColdStartDivider.visibility = View.GONE
ivColdStartStatus.visibility = View.GONE
tvColdStartContent.visibility = View.GONE
rvNodeList.visibility = View.GONE
ivNodeListMask.visibility = View.GONE
//域控连接失败埋点统计
this.reason = "域控连接失败:$failReason"
ColdStartAnalyticsManager.coldStartStepAnalytics(ColdStartAnalyticsManager.ipcConnectFail,reason)
@@ -451,6 +470,8 @@ class ColdStartView @JvmOverloads constructor(
viewColdStartDivider.visibility = View.GONE
ivColdStartStatus.visibility = View.GONE
tvColdStartContent.visibility = View.GONE
rvNodeList.visibility = View.GONE
ivNodeListMask.visibility = View.GONE
}
/**
@@ -488,6 +509,8 @@ class ColdStartView @JvmOverloads constructor(
viewColdStartDivider.visibility = View.VISIBLE
ivColdStartStatus.visibility = View.VISIBLE
tvColdStartContent.visibility = View.VISIBLE
rvNodeList.visibility = View.VISIBLE
ivNodeListMask.visibility = View.VISIBLE
tvColdStartContent.text = "启动中…"
ivColdStartStatus.setImageDrawable(ResourceUtils.getDrawable(R.drawable.icon_cold_start_process))
//开启冷启动连接状态动画
@@ -610,7 +633,7 @@ class ColdStartView @JvmOverloads constructor(
fun coldStartFail()
}
fun setColdStartResultListener(listener: ColdStartResultListener){
fun setColdStartResultListener(listener: ColdStartResultListener?){
coldStartResultListener = listener
}

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:startColor="#00000000"
android:endColor="#68696B"
android:angle="270"
/>
<corners
android:radius="@dimen/dp_8"/>
</shape>

View File

@@ -110,17 +110,6 @@
android:layout_marginStart="@dimen/dp_15"
/>
<TextView
android:id="@+id/tvColdStartNodeState"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/tvColdStartContent"
app:layout_constraintLeft_toLeftOf="@id/tvColdStartContent"
android:textSize="@dimen/sp_32"
android:textColor="#B2FFFFFF"
android:visibility="gone"
/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvNodeList"
android:layout_width="wrap_content"
@@ -130,17 +119,41 @@
android:layout_marginTop="@dimen/dp_26"
/>
<ImageView
android:id="@+id/ivNodeListMask"
android:layout_width="@dimen/dp_0"
android:layout_height="@dimen/dp_40"
app:layout_constraintBottom_toBottomOf="@id/rvNodeList"
app:layout_constraintLeft_toLeftOf="@id/rvNodeList"
app:layout_constraintRight_toRightOf="@id/rvNodeList"
android:src="@drawable/bg_cold_start_list_mask"
android:contentDescription="@string/cold_start_list_mask"
android:elevation="@dimen/dp_10"
/>
<TextView
android:id="@+id/tvColdStartTip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@id/tvColdStartNow"
android:text="@string/cold_start_now_tip"
android:textSize="@dimen/sp_28"
android:textColor="#82FFFFFF"
android:layout_marginBottom="@dimen/dp_124"
/>
<TextView
android:id="@+id/tvColdStartNow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="@id/tvSystemStartupTitle"
app:layout_constraintTop_toBottomOf="@id/rvNodeList"
app:layout_constraintBottom_toTopOf="@id/tvColdStartTip"
android:text="@string/cold_start_now"
android:textSize="@dimen/sp_40"
android:textColor="@color/white"
android:gravity="center"
android:layout_marginTop="@dimen/dp_154"
android:layout_marginBottom="@dimen/dp_16"
/>
<ImageView
@@ -156,16 +169,5 @@
android:layout_marginTop="@dimen/dp_4"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/tvColdStartNow"
app:layout_constraintStart_toStartOf="@id/tvColdStartNow"
android:text="@string/cold_start_now_tip"
android:textSize="@dimen/sp_28"
android:textColor="#82FFFFFF"
android:layout_marginTop="@dimen/dp_16"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -141,20 +141,20 @@ class TravelRealityModel private constructor() {
fun cancelAllRequest() {
if (eventKey.isNotEmpty()) {
eventKey = ""
cancel(eventKey)
eventKey = ""
}
if (deviceKey.isNotEmpty()) {
deviceKey = ""
cancel(deviceKey)
deviceKey = ""
}
if (trackKey.isNotEmpty()) {
trackKey = ""
cancel(trackKey)
trackKey = ""
}
if (liveKey.isNotEmpty()) {
liveKey = ""
cancel(liveKey)
liveKey = ""
}
clearDownload()
}

View File

@@ -11,6 +11,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationWGS84Liste
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisStatesListener
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisStatesListenerManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.map.MogoMap
import com.mogo.map.MogoMapView
import com.mogo.map.overlay.line.Polyline
@@ -137,6 +138,10 @@ class MapBizView(context: Context?, attrs: AttributeSet?) : MogoMapView(context,
// 先取消注册数据再onDestroy
CallerChassisLocationWGS84ListenerManager.removeListener(TAG)
CallerChassisStatesListenerManager.removeListener(TAG)
CallerMapUIServiceManager.getOverlayManager()?.let {
it.removeAllLines()
it.removeAllPoints()
}
super.onDestroy()
}

View File

@@ -146,6 +146,11 @@ class MapRoamView(context: Context?, attrs: AttributeSet?) : MogoMapView(context
getUI()?.setVisible(false)
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
CallerMapAiCloudDataManager.removeListener(RoadCrossRoamView.TAG)
}
@ChainLog(
linkChainLog = ChainConstant.CHAIN_TYPE_STATUS,
linkCode = ChainConstant.CHAIN_SOURCE_ADAS,