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

@@ -92,17 +92,9 @@ class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(), ILoginView
override fun initViews() {
CallerLogger.d(TAG, "init")
context?.let {
val videoUrl: String
if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) {
//aciv_login_bg.setImageResource(R.drawable.biz_login_bg_taxi_start)
biz_login_svp.setBackgroundResource(R.drawable.biz_login_bg_taxi_start)
videoUrl = SkinResources.getInstance().getRawMp4FilePath(R.raw.video_biz_login_taxi_bg)
} else {
//aciv_login_bg.setImageResource(R.drawable.biz_login_bg_bus_start)
biz_login_svp.setBackgroundResource(R.drawable.biz_login_bg_bus_start)
videoUrl = SkinResources.getInstance().getRawMp4FilePath(R.raw.video_biz_login_bus_bg)
}
Debuger.enable()
biz_login_svp.setIsTouchWiget(false)
@@ -110,73 +102,7 @@ class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(), ILoginView
biz_login_svp.enableshowProgressDialog = false
biz_login_svp.enableDoubleClick = false
viewColdStart.setColdStartResultListener(object :
ColdStartView.ColdStartResultListener {
override fun coldStartSuccess() {
gsyVideoOptionBuilder.setUrl(videoUrl)
.setCacheWithPlay(false)
.setPlayTag("TaxiPassengerArrivedView")
.build(biz_login_svp)
biz_login_svp.setVideoAllCallBack(object : GSYSampleCallBack() {
override fun onAutoComplete(url: String?, vararg objects: Any?) {
if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) {
biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_taxi_end)
} else {
biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_bus_end)
}
}
})
if (showLoginInfoAnimator1 == null) {
showLoginInfoAnimator1 =
ObjectAnimator.ofFloat(cl_login_info, "alpha", 0f, 1f)
showLoginInfoAnimator1?.interpolator = LinearInterpolator()
}
if (showLoginInfoAnimator2 == null) {
val dp2px = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(), -50f)
showLoginInfoAnimator2 = ObjectAnimator.ofFloat(
cl_login_info,
"translationY",
0f,
dp2px.toFloat()
)
showLoginInfoAnimator2?.interpolator = DecelerateInterpolator()
}
UiThreadHandler.postDelayed({
cl_login_info?.let {
val animatorSet = AnimatorSet()
animatorSet.playTogether(showLoginInfoAnimator1, showLoginInfoAnimator2)
animatorSet.duration = 500
animatorSet.addListener(object : AnimatorListener {
override fun onAnimationStart(animation: Animator) {
cl_login_info?.visibility = View.VISIBLE
}
override fun onAnimationEnd(animation: Animator) {
}
override fun onAnimationCancel(animation: Animator) {
}
override fun onAnimationRepeat(animation: Animator) {
}
})
animatorSet.start()
}
}, 2_000, UiThreadHandler.MODE.QUEUE)
biz_login_svp.startPlayLogic()
}
override fun coldStartFail() {
}
})
}
inputPhoneNormal()
@@ -325,11 +251,86 @@ class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(), ILoginView
biz_cl_driver_main?.viewTreeObserver?.addOnGlobalLayoutListener(onlayoutListener)
super.onResume()
CallerLogger.d(TAG, "onResume")
context?.let {
val videoUrl:String
if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) {
//aciv_login_bg.setImageResource(R.drawable.biz_login_bg_taxi_start)
biz_login_svp.setBackgroundResource(R.drawable.biz_login_bg_taxi_start)
videoUrl = SkinResources.getInstance().getRawMp4FilePath(R.raw.video_biz_login_taxi_bg)
} else {
//aciv_login_bg.setImageResource(R.drawable.biz_login_bg_bus_start)
biz_login_svp.setBackgroundResource(R.drawable.biz_login_bg_bus_start)
videoUrl = SkinResources.getInstance().getRawMp4FilePath(R.raw.video_biz_login_bus_bg)
}
viewColdStart.setColdStartResultListener(object: ColdStartView.ColdStartResultListener{
override fun coldStartSuccess() {
biz_login_svp?.let {
gsyVideoOptionBuilder.setUrl(videoUrl)
.setCacheWithPlay(false)
.setPlayTag("TaxiPassengerArrivedView")
.build(biz_login_svp)
biz_login_svp?.setVideoAllCallBack(object : GSYSampleCallBack() {
override fun onAutoComplete(url: String?, vararg objects: Any?) {
if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) {
biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_taxi_end)
}else{
biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_bus_end)
}
}
})
if (showLoginInfoAnimator1 == null) {
showLoginInfoAnimator1 = ObjectAnimator.ofFloat(cl_login_info, "alpha", 0f, 1f)
showLoginInfoAnimator1?.interpolator = LinearInterpolator()
}
if (showLoginInfoAnimator2 == null) {
val dp2px = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(), -50f)
showLoginInfoAnimator2 = ObjectAnimator.ofFloat(cl_login_info, "translationY", 0f, dp2px.toFloat())
showLoginInfoAnimator2?.interpolator = DecelerateInterpolator()
}
UiThreadHandler.postDelayed({
cl_login_info?.let {
val animatorSet = AnimatorSet()
animatorSet.playTogether(showLoginInfoAnimator1, showLoginInfoAnimator2)
animatorSet.duration = 500
animatorSet.addListener(object :AnimatorListener{
override fun onAnimationStart(animation: Animator) {
cl_login_info?.visibility = View.VISIBLE
}
override fun onAnimationEnd(animation: Animator) {
}
override fun onAnimationCancel(animation: Animator) {
}
override fun onAnimationRepeat(animation: Animator) {
}
})
animatorSet.start()
}
},2_000,UiThreadHandler.MODE.QUEUE)
biz_login_svp?.startPlayLogic()
}
}
override fun coldStartFail() {
}
})
}
}
override fun onPause() {
biz_cl_driver_main?.viewTreeObserver?.removeOnGlobalLayoutListener(onlayoutListener)
super.onPause()
CallerLogger.d(TAG, "onPause")
viewColdStart.setColdStartResultListener(null)
}
}

View File

@@ -74,6 +74,7 @@ class AutopilotState @JvmOverloads constructor(
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
autopilotStateAnimator?.release()
}

View File

@@ -10,8 +10,8 @@ import com.mogo.och.weaknet.repository.db.bean.EventDataBean
*/
data class ShuttleEventRequest(val requestId: String, val sn: String, val businessType: Int,val eventList:MutableList<Event>){
companion object{
val businessTypeShuttle = LoginStatusManager.getLoginInfo()?.businessType?:11
fun transformDb2Net(waitUpdateEvent: List<EventDataBean>): ShuttleEventRequest {
val businessTypeShuttle = LoginStatusManager.getLoginInfo()?.businessType?:11
val md5Hex = DigestUtils.md5Hex(waitUpdateEvent.toString())
val eventList4Request = mutableListOf<Event>()
var tempEvent: Event?=null

View File

@@ -51,23 +51,21 @@ class ShuttleFragment : MvpFragment<ShuttleFragment?, BusPresenter?>() {
context?.let {
if(RepositoryManager.supportDb()){
CallerEagleBaseFunctionCall4OchManager.addSingleToolKitDefaultItem(runningTaskGateWay,"本地缓存任务", R.drawable.bus_running_task_history,4)
}
CallerEagleBaseFunctionCall4OchManager.addToolKitDefaultItemClickListener(runningTaskGateWay,object :
IToolKitItemClickListener{
override fun onItemClick(toolTag: String, ctx: Context?) {
when (toolTag) {
runningTaskGateWay -> {
d(TAG, "runningTaskGateWay:$runningTaskGateWay---toolTag:$toolTag")
RunningTaskManager.showBadCaseConfigWindow(it)
CallerEagleBaseFunctionCall4OchManager.addToolKitDefaultItemClickListener(runningTaskGateWay,object :
IToolKitItemClickListener{
override fun onItemClick(toolTag: String, ctx: Context?) {
when (toolTag) {
runningTaskGateWay -> {
d(TAG, "runningTaskGateWay:$runningTaskGateWay---toolTag:$toolTag")
RunningTaskManager.showBadCaseConfigWindow(it)
}
}
}
}
})
CallerEagleBaseFunctionCall4OchManager.addSingleToolKitCustomItem(lineView, LineView(it),10)
})
CallerEagleBaseFunctionCall4OchManager.addSingleToolKitCustomItem(lineView, LineView(it),10)
}
}
initListener()
}
override fun initViews(savedInstanceState: Bundle?) {
@@ -88,7 +86,6 @@ class ShuttleFragment : MvpFragment<ShuttleFragment?, BusPresenter?>() {
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
EventBus.getDefault().register(this)
return super.onCreateView(inflater, container, savedInstanceState)
}
@@ -112,35 +109,17 @@ class ShuttleFragment : MvpFragment<ShuttleFragment?, BusPresenter?>() {
if (mPresenter != null) {
mPresenter!!.onDestroy(this)
}
if(ProjectUtils.isSaas()&& AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) {
CallerEagleBaseFunctionCall4OchManager.removeToolkitByTag(mutableListOf(lineView))
CallerEagleBaseFunctionCall4OchManager.removeToolKitDefaultItemClickListener(lineView)
}
super.onDestroyView()
CallerAutopilotRecordListenerManager.removeListener(TAG)
EventBus.getDefault().unregister(this)
}
private fun initListener() {
}
override fun onDestroy() {
super.onDestroy()
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun changeOverview(eventLogout: EventLogout) {
when (eventLogout.messgae) {
EventLogout.SHOW_QR_TYPE-> { //显示二维码
}
EventLogout.SHOW_WAIT_UPLOAD_TASK-> {
context?.let {
RunningTaskManager.showBadCaseConfigWindow(it)
}
}
else -> {}
}
}
/**
* END
*/

View File

@@ -46,7 +46,7 @@ class SwitchLineView: WindowRelativeLayout, SwtichLineModel.SwtichLineViewCallba
companion object {
const val TAG = "BadCaseManagerView"
const val TAG = "SwitchLineView"
}
private var viewModel:SwtichLineModel?=null
@@ -120,6 +120,12 @@ class SwitchLineView: WindowRelativeLayout, SwtichLineModel.SwtichLineViewCallba
}
viewModel?.setDistanceCallback(this)
CallerLogger.d(TAG,"onAttachedToWindow")
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
CallerLogger.d(TAG,"onDetachedFromWindow")
}
override fun startTaskState(success: Boolean) {

View File

@@ -5,6 +5,7 @@ import com.mogo.commons.env.ProjectUtils
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.RxUtils
@@ -33,6 +34,7 @@ class SwtichLineModel : ViewModel(), IBusLinesCallback {
override fun onCleared() {
CallerLogger.d(TAG,"onCleared")
LineModel.setBusLinesCallback(TAG,null)
}

View File

@@ -186,6 +186,8 @@ class TaxiFragment :MvpFragment<TaxiFragment?, TaxiPresenter?>(),
it.removeAllLines()
it.removeAllPoints()
}
CallerEagleBaseFunctionCall4OchManager.removeToolkitByTag(mutableListOf(lineView))
CallerEagleBaseFunctionCall4OchManager.removeToolKitDefaultItemClickListener(lineView)
startAutopilotAnimationView.cancelCountdown()
super.onDestroyView()
}

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,

View File

@@ -250,6 +250,11 @@ interface IMoGoHmiProvider :IProvider{
*/
fun addToolKitDefaultItemClickListener( tag: String, listener: IToolKitItemClickListener)
/**
* 移除 工具箱 item点击事件监听 (默认样式item的点击事件监听自定义样式的item的点击交给view自己处理)
*/
fun removeToolKitDefaultItemClickListener( tag: String)
/**
* 增加单个默认样式的工具箱item
* @param toolTag 唯一标识tag和前面toolTag重复的默认不添加跳过

View File

@@ -16,6 +16,11 @@ interface IEagleBaseFunctionCall4Och {
*/
fun addToolKitDefaultItemClickListener(tag: String, listener: IToolKitItemClickListener)
/**
* 移除 工具箱 item点击事件监听 (默认样式item的点击事件监听自定义样式的item的点击交给view自己处理)
*/
fun removeToolKitDefaultItemClickListener(tag: String)
/**
* 增加单个默认样式的工具箱item
* @param toolTag 唯一标识tag和前面toolTag重复的默认不添加跳过

View File

@@ -379,6 +379,13 @@ object CallerHmiManager {
hmiProviderApi?.addToolKitDefaultItemClickListener(tag, listener)
}
/**
* 移除 工具箱 item点击事件监听 (默认样式item的点击事件监听自定义样式的item的点击交给view自己处理)
*/
fun removeToolKitDefaultItemClickListener(tag: String) {
hmiProviderApi?.removeToolKitDefaultItemClickListener(tag)
}
/**
* 增加单个默认样式的工具箱item
* @param toolTag 唯一标识tag和前面toolTag重复的默认不添加跳过

View File

@@ -27,6 +27,13 @@ object CallerEagleBaseFunctionCall4OchManager : IEagleBaseFunctionCall4Och {
CallerHmiManager.addToolKitDefaultItemClickListener(tag, listener)
}
/**
* 移除 工具箱 item点击事件监听 (默认样式item的点击事件监听自定义样式的item的点击交给view自己处理)
*/
override fun removeToolKitDefaultItemClickListener(tag: String) {
CallerHmiManager.removeToolKitDefaultItemClickListener(tag)
}
/**
* 增加单个默认样式的工具箱item
* @param toolTag 唯一标识tag和前面toolTag重复的默认不添加跳过

View File

@@ -83,7 +83,7 @@ MOGO_TELEMATIC_VERSION=1.4.7.42
MOGO_SKIN_VERSION=1.4.7.49.18-debug
######## MogoAiCloudSDK Version ########
# 自研地图
MAP_SDK_VERSION=3.4.1.19
MAP_SDK_VERSION=3.4.1.21
MAP_SDK_DATA_VERSION=1.0.0.9
MAP_SDK_OPERATION_VERSION=1.1.4.1
# websocket