diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/constant/BusConst.kt b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/constant/BusConst.kt index 9beee80214..b75ef88c4c 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/constant/BusConst.kt +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/constant/BusConst.kt @@ -65,6 +65,9 @@ class BusConst { const val EVENT_PARAM_START_RESULT = "start_autopilot" // true/false const val EVENT_PARAM_PLATE_NUM = "plate_number" // 车牌号 const val EVENT_PARAM_ENV_ONLINE = "env_online" // 是否线上环境:true/false + // 埋点key:开启自动驾驶前已识别的异常,会导致无法开启自驾 + const val EVENT_KEY_AP_UNABLE_START_REASON = "event_key_och_bus_ap_unable_start_reason" + const val EVENT_PARAM_UNABLE_START_REASON = "unable_start_reason"; /** * 订单起终点Marker类型 diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index b77cc12df7..058019a8a9 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -532,6 +532,7 @@ public class BusOrderModel { if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()){ ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() + ", 请稍候重试"); + triggerUnableStartAPReasonEvent(); return; } @@ -976,6 +977,17 @@ public class BusOrderModel { currentStation.getName(), nextStation.getName(), currentLineId); } + public void triggerUnableStartAPReasonEvent() { + if (stationList == null || backgroundCurrentStationIndex >= stationList.size()-1) { + return; + } + BusStationBean currentStation = stationList.get( backgroundCurrentStationIndex); + BusStationBean nextStation = stationList.get( backgroundCurrentStationIndex +1); + BusAnalyticsManager.getInstance().triggerUnableStartAPReasonEvent( + currentStation.getName(), nextStation.getName(), currentLineId, + OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason()); + } + public BusRoutesResult getBusRoutesResult() { return busRoutesResult; } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusAnalyticsManager.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusAnalyticsManager.java index 915070fad4..63d749bf3c 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusAnalyticsManager.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusAnalyticsManager.java @@ -79,4 +79,31 @@ public class BusAnalyticsManager { UiThreadHandler.postDelayed(startAutopilotRunnable, BusConst.LOOP_PERIOD_15S); } } + + /** + * 触发"无法开启自驾已知异常"埋点 + * @param startName + * @param endName + * @param lineId + */ + public void triggerUnableStartAPReasonEvent(String startName, String endName, int lineId, + String reason) { + String sn = MoGoAiCloudClientConfig.getInstance().getSn(); + String plateNum = AppConfigInfo.INSTANCE.getPlateNumber(); + String dateTime = DateTimeUtils.getTimeText( + System.currentTimeMillis(), DateTimeUtils.yyyy_MM_dd_HH_mm_ss); + + HashMap params = new HashMap<>(); + + params.put(BusConst.EVENT_PARAM_SN, sn); + params.put(BusConst.EVENT_PARAM_PLATE_NUM, TextUtils.isEmpty(plateNum) ? "" : plateNum); + params.put(BusConst.EVENT_PARAM_ENV_ONLINE, + DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE ? true : false); + params.put(BusConst.EVENT_PARAM_TIME, dateTime); + params.put(BusConst.EVENT_PARAM_START_NAME, startName); + params.put(BusConst.EVENT_PARAM_END_NAME, endName); + params.put(BusConst.EVENT_PARAM_LINE_ID, lineId); + params.put(BusConst.EVENT_PARAM_UNABLE_START_REASON, reason); + AnalyticsManager.INSTANCE.track(BusConst.EVENT_KEY_AP_UNABLE_START_REASON, params); + } } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt index 45d89d2359..9d0073363a 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt @@ -29,7 +29,8 @@ object BusSendTripInfoManager{ arrivalStopName: String, isLastStop: Boolean) { d(SceneConstant.M_BUS + "BusSendTripInfoManager", "type: "+ type - +", lineName: "+ lineName + ", stationName: "+arrivalStopName+", isLastStop: "+isLastStop) + +", lineName: "+ lineName +", departureStopName: "+ departureStopName + + ", arrivalStopName: "+arrivalStopName+", isLastStop: "+isLastStop) CallerAutoPilotManager.sendTripInfo(type,lineName,departureStopName, arrivalStopName, isLastStop) } } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt index 2a399bb339..ae074c74fe 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt @@ -67,6 +67,9 @@ class TaxiConst { const val EVENT_PARAM_START_RESULT = "start_autopilot" // true/false const val EVENT_PARAM_PLATE_NUM = "plate_number" // 车牌号 const val EVENT_PARAM_ENV_ONLINE = "env_online" // 是否线上环境:true/false + // 埋点key:开启自动驾驶前已识别的异常,会导致无法开启自驾 + const val EVENT_KEY_AP_UNABLE_START_REASON = "event_key_och_taxi_ap_unable_start_reason" + const val EVENT_PARAM_UNABLE_START_REASON = "unable_start_reason"; // 实时计算当前剩余里程和时间 间隔 2秒 const val LOOP_CALCULATEROUTE_2S = 2 * 1000L diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 064730a4f2..59fb2c2462 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -811,6 +811,7 @@ public class TaxiModel { } if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.getCode()){ if (FunctionBuildConfig.isDemoMode) { + CallerLogger.INSTANCE.d(M_TAXI + TAG, "setIPCDemoMode:false"); CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false); } @@ -885,6 +886,9 @@ public class TaxiModel { if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()){ ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() + ", 请稍候重试"); + TaxiAnalyticsManager.getInstance().triggerUnableStartAPReasonEvent( + mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo, + OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason()); return; } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java index 2434a7fcec..83eecfc45d 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java @@ -620,6 +620,7 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment public void onCurrentOrderCancelDone() { //去除起终点 + saveOrderState = -1; if (mCurrentOrder != null){ setOrRemoveMapMaker(false, TaxiConst.TAXI_START_MAP_MAKER,mCurrentOrder.startSitePoint,R.raw.star_marker); setOrRemoveMapMaker(false, TaxiConst.TAXI_END_MAP_MAKER,mCurrentOrder.endSitePoint,R.raw.end_marker); diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/utils/TaxiAnalyticsManager.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/utils/TaxiAnalyticsManager.java index 797a79d5e6..c1d843dc6e 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/utils/TaxiAnalyticsManager.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/utils/TaxiAnalyticsManager.java @@ -79,4 +79,31 @@ public class TaxiAnalyticsManager { UiThreadHandler.postDelayed(startAutopilotRunnable, TaxiConst.LOOP_PERIOD_15S); } } + + /** + * 触发"无法开启自驾已知异常"埋点 + * @param startName + * @param endName + * @param orderNo + */ + public void triggerUnableStartAPReasonEvent(String startName, String endName, String orderNo, + String reason) { + String sn = MoGoAiCloudClientConfig.getInstance().getSn(); + String plateNum = AppConfigInfo.INSTANCE.getPlateNumber(); + String dateTime = DateTimeUtils.getTimeText( + System.currentTimeMillis(), DateTimeUtils.yyyy_MM_dd_HH_mm_ss); + + HashMap params = new HashMap<>(); + + params.put(TaxiConst.EVENT_PARAM_SN, sn); + params.put(TaxiConst.EVENT_PARAM_PLATE_NUM, TextUtils.isEmpty(plateNum) ? "" : plateNum); + params.put(TaxiConst.EVENT_PARAM_ENV_ONLINE, + DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE ? true : false); + params.put(TaxiConst.EVENT_PARAM_TIME, dateTime); + params.put(TaxiConst.EVENT_PARAM_START_NAME, startName); + params.put(TaxiConst.EVENT_PARAM_END_NAME, endName); + params.put(TaxiConst.EVENT_PARAM_ORDER_NUMBER, orderNo); + params.put(TaxiConst.EVENT_PARAM_UNABLE_START_REASON, reason); + AnalyticsManager.INSTANCE.track(TaxiConst.EVENT_KEY_AP_UNABLE_START_REASON, params); + } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index a6cc679a5f..2561d020c1 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -107,8 +107,24 @@ internal object BadCaseManager : LifecycleEventObserver { if(ClickUtils.isFastClick()){ if(NetworkUtils.isConnected()){ if(BadCaseConfig.dockerVersion!=null){ - val caseListDialog = CaseListDialog(activity) - caseListDialog.show() + //兼容老MAP版本 + if(BadCaseConfig.dockerVersion!!.contains("2.3.0") + || BadCaseConfig.dockerVersion!!.contains("2.4.0") + || BadCaseConfig.dockerVersion!!.contains("2.5.0") + || BadCaseConfig.dockerVersion!!.contains("2.6.0") + || BadCaseConfig.dockerVersion!!.contains("2.8.0")){ + val initiativeBadCaseWindow = InitiativeBadCaseWindow(activity) + initiativeBadCaseWindow.setClickListener(object: InitiativeBadCaseWindow.ClickListener{ + override fun closeWindow() { + initiativeBadCaseWindow.hideFloatWindow() + } + + }) + initiativeBadCaseWindow.showFloatWindow(null) + }else{ + val caseListDialog = CaseListDialog(activity) + caseListDialog.show() + } }else{ ToastUtils.showShort("工控机连接状态异常") } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt index 8d3f361326..cbdaa3df24 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt @@ -174,19 +174,27 @@ internal class BadCaseConfigView @JvmOverloads constructor( override fun onAutopilotRecordConfig(config: MessagePad.RecordDataConfig) { super.onAutopilotRecordConfig(config) ThreadUtils.runOnUiThread { - config.recordTypesList.iterator().forEach { - if (it.id != 99){ - val topicList = ArrayList() - it.topicsList.iterator().forEach { - topicList.add(TopicEntity(it,true,false)) + if(BadCaseConfig.dockerVersion!!.contains("2.3.0") + || BadCaseConfig.dockerVersion!!.contains("2.4.0") + || BadCaseConfig.dockerVersion!!.contains("2.5.0") + || BadCaseConfig.dockerVersion!!.contains("2.6.0") + || BadCaseConfig.dockerVersion!!.contains("2.8.0")){ + rvTemplate.visibility = View.GONE + }else{ + config.recordTypesList.iterator().forEach { + if (it.id != 99){ + val topicList = ArrayList() + it.topicsList.iterator().forEach { + topicList.add(TopicEntity(it,true,false)) + } + recordTypesList.add(RecordTypeEntity(it.id,it.desc,topicList)) } - recordTypesList.add(RecordTypeEntity(it.id,it.desc,topicList)) } - } - if(recordTypesList.size>1){ - rvTemplate.visibility = View.VISIBLE - recordTemplateAdapter?.setData(recordTypesList) - recordTemplateAdapter?.notifyDataSetChanged() + if(recordTypesList.size>1){ + rvTemplate.visibility = View.VISIBLE + recordTemplateAdapter?.setData(recordTypesList) + recordTemplateAdapter?.notifyDataSetChanged() + } } } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java index 7c54e6011c..c9f0686c77 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java @@ -163,20 +163,21 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL ToastUtils.showShort("Topic设置成功"); if(recordType.getId() == 0){ //自定义Topic + BadCaseConfig.customTopicList.clear(); BadCaseConfig.customTopicList.addAll(addTopicList); } addTopicList.clear(); + recordType.getTopicsList().removeAll(allTopicList); dismiss(); }else{ ToastUtils.showShort("Topic设置失败"); } } - - }); tvCancel.setOnClickListener(v -> { - dismiss(); + recordType.getTopicsList().removeAll(allTopicList); + dismiss(); }); } @@ -184,11 +185,13 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL @Override public void onAutopilotRecordConfig(MessagePad.RecordDataConfig config) { ThreadUtils.runOnUiThread(() -> { + Log.i("houyanli","AllTopicsCount="+config.getAllTopicsCount()); if(config.getAllTopicsCount()>0){ for(int index=0;index() } private var container: WeakReference? = null - private val listener = object : IMoGoAutopilotStatusListener { - override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) { - super.onAutopilotGuardian(guardianInfo) - guardianInfo?.code?.takeIf { - CallerLogger.d("$M_DEVA$TAG", "-- onAutopilotGuardian ---: code: $it") - it.contains("RTK_STATUS", true) || it.contains("CAN", true) || it == "ILCT_RTK_OR_SLAM_CHANGE" - }?.run { - CallerLogger.d("$M_DEVA$TAG", "-- onAutopilotGuardian trigger req ---: code: $this") - req() - } - } - } +// private val listener = object : IMoGoAutopilotStatusListener { +// override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) { +// super.onAutopilotGuardian(guardianInfo) +// guardianInfo?.code?.takeIf { +// CallerLogger.d("$M_DEVA$TAG", "-- onAutopilotGuardian ---: code: $it") +// it.contains("RTK_STATUS", true) || it.contains("CAN", true) || it == "ILCT_RTK_OR_SLAM_CHANGE" +// }?.run { +// CallerLogger.d("$M_DEVA$TAG", "-- onAutopilotGuardian trigger req ---: code: $this") +// req() +// } +// } +// } - private val appStateListener = object : IAppStateListener { - - override fun onAppStateChanged(isForeground: Boolean) { - if (isForeground) { - req() - } else { - timer?.cancel() - } - } - } +// private val appStateListener = object : IAppStateListener { +// +// override fun onAppStateChanged(isForeground: Boolean) { +// if (isForeground) { +// req() +// } else { +// timer?.cancel() +// } +// } +// } private val flows: ArrayList> by lazy { ArrayList() } - private fun req() { - timer?.cancel() - model.viewModelScope.launch(Dispatchers.IO) { - CallerAutoPilotManager.sendStatusQueryReq() - while (true) { - delay(60000) //一分钟主动请求一次 - CallerAutoPilotManager.sendStatusQueryReq() - } - }.also { - timer = it - } - } +// private fun req() { +// timer?.cancel() +// model.viewModelScope.launch(Dispatchers.IO) { +// CallerAutoPilotManager.sendStatusQueryReq() +// while (true) { +// delay(60000) //一分钟主动请求一次 +// CallerAutoPilotManager.sendStatusQueryReq() +// } +// }.also { +// timer = it +// } +// } fun init(ctx: Context) { if (hasInit) { @@ -109,9 +109,9 @@ object StatusManager { private fun onCreate(ctx: Context) { val values = model.status.value?.second ?: throw IllegalStateException("state is not right.") - CallerAutoPilotStatusListenerManager.addListener(TAG, listener) - AppStateManager.registerAppStateListener(appStateListener) - req() +// CallerAutoPilotStatusListenerManager.addListener(TAG, listener) +// AppStateManager.registerAppStateListener(appStateListener) +// req() values.map { when (it) { is CanStatus -> CanImpl(ctx) @@ -166,9 +166,9 @@ object StatusManager { private fun onDestroy(ctx: Context) { hasInit = false - CallerAutoPilotStatusListenerManager.removeListener(TAG) - AppStateManager.unRegisterAppStateListener(appStateListener) - timer?.cancel() +// CallerAutoPilotStatusListenerManager.removeListener(TAG) +// AppStateManager.unRegisterAppStateListener(appStateListener) +// timer?.cancel() flows.forEach { it.onDestroy() } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/trace/TracingImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/trace/TracingImpl.kt index 9728d4c1ba..1d71984ad3 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/trace/TracingImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/flow/trace/TracingImpl.kt @@ -32,9 +32,9 @@ internal class TracingImpl(ctx: Context): IFlow(ctx), IMoGoAutopi super.onAutopilotGuardian(guardianInfo) val current = guardianInfo?.code val newState = current?.toState(guardianInfo.msg) - if (newState != null && newState != old) { - send(TracingStatus(newState)) + if (newState != null) { old = newState + send(TracingStatus(newState)) } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/ui/adapter/StatusAdapter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/ui/adapter/StatusAdapter.kt index 040e8a70c2..56955dcda9 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/ui/adapter/StatusAdapter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/ui/adapter/StatusAdapter.kt @@ -129,14 +129,14 @@ internal class StatusAdapter(val ctx: Context, var data: ArrayList): Rec MAP_TRA_TYPE -> { "暂无轨迹" } - MAP_DATA_EXIST -> "地图数据存在,正在加载${if (extraDesc.isEmpty()) "" else "[$extraDesc]" }" - MAP_DATA_NOT_EXIST -> "地图数据不存在${if (extraDesc.isEmpty()) "" else "[$extraDesc]"}" - TRACK_FINDED -> "轨迹类型:循迹[已找到轨迹$extraDesc]" - TRACK_LOADED -> "轨迹类型:循迹[加载成功$extraDesc]" - TRACK_NOT_EXIST -> "轨迹类型:循迹[不存在$extraDesc]" - TRACK_LOAD_FAIL -> "轨迹类型:循迹[加载失败$extraDesc]" - ROUTE_LOADED -> "轨迹类型:自主算路[加载成功$extraDesc]" - ROUTE_FAILED -> "轨迹类型:自主算路[加载失败$extraDesc]" + MAP_DATA_EXIST -> "地图数据存在,正在加载${ if(extraDesc.isNotEmpty()) "\n[$extraDesc]" else "" }" + MAP_DATA_NOT_EXIST -> "地图数据不存在${ if(extraDesc.isNotEmpty()) "\n[$extraDesc]" else "" }" + TRACK_FINDED -> "轨迹类型:循迹(已找到轨迹)${ if(extraDesc.isNotEmpty()) "\n[$extraDesc]" else "" }" + TRACK_LOADED -> "轨迹类型:循迹(加载成功)${ if(extraDesc.isNotEmpty()) "\n[$extraDesc]" else "" }" + TRACK_NOT_EXIST -> "轨迹类型:循迹(未找到轨迹)${ if(extraDesc.isNotEmpty()) "\n[$extraDesc]" else "" }" + TRACK_LOAD_FAIL -> "轨迹类型:循迹(加载失败)${ if(extraDesc.isNotEmpty()) "\n[$extraDesc]" else "" }" + ROUTE_LOADED -> "轨迹类型:自主算路(加载成功)${ if(extraDesc.isNotEmpty()) "\n[$extraDesc]" else "" }" + ROUTE_FAILED -> "轨迹类型:自主算路(加载失败)${ if(extraDesc.isNotEmpty()) "\n[$extraDesc]" else "" }" UNKNOWN -> "暂无轨迹" } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index f77c252142..f26a810247 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -17,7 +17,9 @@ import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.module.service.routeoverlay.RouteStrategy +import kotlinx.android.synthetic.main.view_debug_setting.view.* import kotlinx.android.synthetic.main.view_sop_setting.view.* +import kotlinx.android.synthetic.main.view_sop_setting.view.tbRouteDynamicEffect /** * SOP设置窗口 @@ -134,11 +136,18 @@ class SOPSettingView @JvmOverloads constructor( } } + + //是否开启异常上报 + tbIPCReport.isChecked = FunctionBuildConfig.isReportWarning + tbIPCReport.setOnCheckedChangeListener { _, isChecked -> + FunctionBuildConfig.isReportWarning = isChecked + } + //变道绕障的目标障碍物速度阈值 tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" ivSpeedReduce.setOnClickListener { if (FunctionBuildConfig.detouringSpeed <= 3) { - ToastUtils.showShort("阈值小可为3 m/s") + ToastUtils.showShort("阈值最小可为3 m/s") } else { FunctionBuildConfig.detouringSpeed-- tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.java index 260e4b3faa..bded69ba63 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.java @@ -196,6 +196,7 @@ public class MainActivity extends MvpActivity implement @Override public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); if (hasFocus) { // 统计代码 final Map properties = new HashMap<>(); diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java index f99afd3f39..2c01c33429 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java @@ -10,6 +10,7 @@ import com.elegant.utils.UiThreadHandler; import com.mogo.cloud.socket.SocketBuildConfig; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.debug.DebugConfig; +import com.mogo.commons.voice.AIAssist; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.constants.MoGoConfig; import com.mogo.eagle.core.data.constants.MogoServicePaths; @@ -56,6 +57,7 @@ public abstract class MainMoGoApplication extends AbsMogoApplication { initCrashConfig(); initLogConfig(); initTipToast(); + AIAssist.getInstance(this); initModules(); if (DebugConfig.isDebug()) { initKoom(); diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml index 5644c7fbec..f574e97e7d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml @@ -121,12 +121,25 @@ app:layout_constraintTop_toBottomOf="@id/tbRainMode" /> + + > exten return this; } + @Override + public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); + BarUtils.hideStatusBarAndSticky(this.getWindow()); + } + @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN && enableDispatchTouchEventToDismissSoftKeyBoard()) { @@ -88,8 +94,8 @@ public abstract class MvpActivity> exten } @Override - public void onWindowFocusChanged(boolean hasFocus) { - super.onWindowFocusChanged(hasFocus); + protected void onRestart() { + super.onRestart(); BarUtils.hideStatusBarAndSticky(this.getWindow()); } diff --git a/gradle.properties b/gradle.properties index 201fe22676..219642a716 100644 --- a/gradle.properties +++ b/gradle.properties @@ -63,7 +63,7 @@ BIZCONFIG_VERSION=1.3.2 SERVICE_BIZ_VERSION=1.2.4 ################ 外部依赖引用 ################ # loglib -LOGLIB_VERSION=1.3.38 +LOGLIB_VERSION=1.3.39 ######## MogoAiCloudSDK Version ######## # 网络请求LOGLIB_VERSION MOGO_NETWORK_VERSION=1.4.3.26 diff --git a/libraries/mogo-adas-data/src/main/proto/chassis.proto b/libraries/mogo-adas-data/src/main/proto/chassis.proto index be6cada7fb..b793f61a80 100644 --- a/libraries/mogo-adas-data/src/main/proto/chassis.proto +++ b/libraries/mogo-adas-data/src/main/proto/chassis.proto @@ -23,6 +23,7 @@ enum PilotMode { MODE_AUTO_DRIVE = 1; MODE_STEER_ONLY = 2; MODE_SPEED_ONLY = 3; + MODE_REMOTE_DRIVE = 6; } enum LongitudeDrivingMode { diff --git a/libraries/mogo-adas-data/src/main/proto/message_pad.proto b/libraries/mogo-adas-data/src/main/proto/message_pad.proto index 8d17379521..236d2fa216 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -143,11 +143,11 @@ message GnssInfo // message definition for MessageType: MsgTypeAutopilotState message AutopilotState { - uint32 state = 1; //0: 不可用(abandoned), 1:ready, 2:自动驾驶中,3:平行驾驶 + uint32 state = 1; //0: 不可用(abandoned), 1:ready, 2:自动驾驶中, 7:平行驾驶中 uint32 camera = 2; //camera节点状态 1:开启,0:关闭 uint32 radar = 3; //雷达节点状态 1:开启,0:关闭 uint32 rtk = 4; //RTK节点状态 1:开启,0:关闭 - uint32 autopilotMode = 5; //自动驾驶状态 0: 非自动驾驶,1: 自动驾驶,2平行驾驶 + uint32 autopilotMode = 5; //自动驾驶状态 0: 非自动驾驶,1: 自动驾驶 double speed = 6; //惯导车速 m/s string reason = 7; //不可用原因(abandoned) } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/AutopilotAbilityManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/AutopilotAbilityManager.java index 2ae5d68e20..02d90a102d 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/AutopilotAbilityManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/AutopilotAbilityManager.java @@ -15,6 +15,8 @@ import system_master.SystemStatusInfo; * 是否可以启动自动驾驶能力检测 * 目前监控了底盘的一些状态和查询节点状态应答的数据 * 没有使用监控事件报告的原因是因为,部分异常没进行正常恢复通知,例如收到了异常监控数据,但是异常恢复之后没有恢复的通知 + * + * 此定时器不能停止 鹰眼中存在UI更新依赖循环查询系统状态 */ public class AutopilotAbilityManager { private static final String TAG = AutopilotAbilityManager.class.getSimpleName(); diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/marker/AMapMarkerWrapper.java b/libraries/mogo-map/src/main/java/com/mogo/map/marker/AMapMarkerWrapper.java index cdada69601..04685480fd 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/marker/AMapMarkerWrapper.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/marker/AMapMarkerWrapper.java @@ -73,15 +73,17 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer { @Override public void destroy() { - if ( mMogoMarkerOptions != null ) { - mMogoMarkerOptions.deleteObservers(); - mMogoMarkerOptions = null; - } - if ( mMarker != null ) { - mMarker.remove(); - mMarker.setMObject( null ); - mMarker.setOnInfoWindowClickListener( null ); - mMarker = null; + synchronized (this) { + if ( mMogoMarkerOptions != null ) { + mMogoMarkerOptions.deleteObservers(); + mMogoMarkerOptions = null; + } + if ( mMarker != null ) { + mMarker.remove(); + mMarker.setMObject( null ); + mMarker.setOnInfoWindowClickListener( null ); + mMarker = null; + } } mMogoInfoWindowAdapter = null; mMogoMarkerClickListener = null;