Merge branch 'refs/heads/dev_robotaxi-d_240912_6.7.0' into dev_robotaxi-d_240912_6.7.2_local
# Conflicts: # core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/roadcross/RoadCrossCameraManager.kt # core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/RoadCrossRoamView.kt
This commit is contained in:
@@ -15,6 +15,7 @@ import com.mogo.eagle.core.function.api.hmi.xiaozhi.event.V2N
|
||||
import com.mogo.eagle.core.function.api.hmi.xiaozhi.state.State.START
|
||||
import com.mogo.eagle.core.function.api.hmi.xiaozhi.state.State.STOP
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerServicesEventManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerV2nNioEventListenerManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerRoadV2NEventWindowListenerManager
|
||||
@@ -190,6 +191,8 @@ object PassBusStationEventManager : IMoGoChassisLocationWGS84Listener {
|
||||
).toString()
|
||||
).toString()
|
||||
)
|
||||
// 事件弹框 次数+1
|
||||
CallerServicesEventManager.updateServicesNum(CallerServicesEventManager.ServiceType.BUS_STOP)
|
||||
trackEvent("showBusStationNotification --> ${it.toString()}")
|
||||
Logger.d(
|
||||
TAG,
|
||||
|
||||
@@ -24,6 +24,7 @@ import com.mogo.eagle.core.function.biz.R
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerServicesEventManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerV2XListenerManager.V2NCarTypeCheck
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerV2nNioEventListenerManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
@@ -107,6 +108,11 @@ internal object V2NIdentifyDrawer: IEventDismissListener {
|
||||
// delay(2000)
|
||||
// }
|
||||
// Log.d("V2NIdentifyDrawer", "--- 不在路口了 ---")
|
||||
if (msg.what == MSG_WHAT_DRAW_SHIGONE) {
|
||||
CallerServicesEventManager.updateServicesNum(CallerServicesEventManager.ServiceType.ROAD_CONSTRUCTION)
|
||||
} else {
|
||||
CallerServicesEventManager.updateServicesNum(CallerServicesEventManager.ServiceType.ROAD_ACCIDENT)
|
||||
}
|
||||
val poiType = getPoiType(itx.type).poiType
|
||||
val polygon = itx.polygonList.map { Pair.create(it.longitude, it.latitude) }
|
||||
marker(Marker(id,
|
||||
@@ -216,6 +222,7 @@ internal object V2NIdentifyDrawer: IEventDismissListener {
|
||||
V2XBizTrace.onAck(TAG, mapOf("other_retrograde_vehicle" to "distance > 150"), true)
|
||||
return@Callback true
|
||||
}
|
||||
CallerServicesEventManager.updateServicesNum(CallerServicesEventManager.ServiceType.RETROGRADE_EVENT)
|
||||
val isDriver = AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)
|
||||
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
|
||||
runCatching {
|
||||
@@ -340,6 +347,7 @@ internal object V2NIdentifyDrawer: IEventDismissListener {
|
||||
V2XBizTrace.onAck(TAG, mapOf("people cross" to "distance > 150"), true)
|
||||
return@Callback true
|
||||
}
|
||||
CallerServicesEventManager.updateServicesNum(CallerServicesEventManager.ServiceType.TRAVERSE_CROSSING)
|
||||
Logger.i(TAG, "people cross -- 3 --")
|
||||
val isDriver = AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)
|
||||
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
|
||||
|
||||
@@ -8,7 +8,6 @@ import com.mogo.eagle.core.function.call.datacenter.CallerDataCenterBizListener
|
||||
import com.mogo.eagle.core.function.call.datacenter.CallerDataCenterBizManager
|
||||
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
|
||||
import com.mogo.eagle.core.function.datacenter.location.MoGoLocationDispatcher
|
||||
import com.mogo.eagle.core.function.datacenter.v2x.RoadLineEventManager
|
||||
import com.mogo.eagle.core.function.datacenter.v2x.SpeedLimitDispatcher
|
||||
import com.mogo.eagle.core.function.datacenter.v2x.TrafficLightDispatcher
|
||||
|
||||
@@ -28,7 +27,6 @@ class DataCenterProvider: IDataCenterProvider {
|
||||
CallerMsgBoxManager.queryAllMessages(it)
|
||||
TrafficLightDispatcher.INSTANCE.initServer(it)
|
||||
SpeedLimitDispatcher.INSTANCE.initLimit(it)
|
||||
RoadLineEventManager.INSTANCE.init()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import chassis.Chassis
|
||||
import chassis.ChassisStatesOuterClass
|
||||
import chassis.VehicleStateOuterClass
|
||||
import com.mogo.eagle.core.data.app.AppConfigInfo
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.data.config.HdMapBuildConfig
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_ARRIVE
|
||||
@@ -67,6 +68,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerColdStartStateListenerM
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerFaultManagementStateListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerFsm2024ListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerLocalizationStateListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerNodeStateListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerParallelDrivingActionsListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerParallelDrivingListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerPlanningActionsListenerManager.invokePNCActions
|
||||
@@ -78,7 +80,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerRoboBusJinlvM1StitchedV
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerStartAutopilotFailedListenerManager.invokeStartAutopilotFailed
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerSweeperFutianCleanSystemListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerSweeperFutianCloudTaskListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerNodeStateListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerTakeoverListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerV2XListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerV2nNioEventListenerManager
|
||||
@@ -991,8 +992,19 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
* @param sysTime 当前时间戳
|
||||
* @param bigTaskActionPush 数据
|
||||
*/
|
||||
override fun onSweeperFutianCloudTaskCloudSuspendResume(header: MessagePad.Header, messageType: AiCloudTask.MessageType, reqNo: String?, sysTime: Long, bigTaskActionPush: SweeperTaskCloudSuspendResume.BigTaskActionPush?) {
|
||||
CallerSweeperFutianCloudTaskListenerManager.invokeSweeperFutianCloudTaskCloudSuspendResume(messageType, reqNo, sysTime, bigTaskActionPush)
|
||||
override fun onSweeperFutianCloudTaskCloudSuspendResume(
|
||||
header: MessagePad.Header,
|
||||
messageType: AiCloudTask.MessageType,
|
||||
reqNo: String?,
|
||||
sysTime: Long,
|
||||
bigTaskActionPush: SweeperTaskCloudSuspendResume.BigTaskActionPush?
|
||||
) {
|
||||
CallerSweeperFutianCloudTaskListenerManager.invokeSweeperFutianCloudTaskCloudSuspendResume(
|
||||
messageType,
|
||||
reqNo,
|
||||
sysTime,
|
||||
bigTaskActionPush
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1116,6 +1128,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
getParamResp: MessagePad.SetParamReq,
|
||||
adasParam: AdasParam
|
||||
) {
|
||||
FunctionBuildConfig.fusionMode = adasParam.fusionMode
|
||||
CallerAutopilotGetParamResponseDispatcher.dispatchResponse(header, getParamResp, adasParam)
|
||||
}
|
||||
|
||||
@@ -1249,9 +1262,19 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
if (stateInfo.nodeName == AdasConstants.NodeName.SSM) {
|
||||
//域控SSM接口接收是否超时
|
||||
if (stateInfo.existState == NodeExistState.NODE_EXIST_TIMEOUT) {
|
||||
CallerMsgBoxManager.saveMsgBox(MsgBoxBean(MsgBoxType.SSMINFO, SSMMsg(0, "连接超时", "SSM超时无响应", System.currentTimeMillis())))
|
||||
CallerMsgBoxManager.saveMsgBox(
|
||||
MsgBoxBean(
|
||||
MsgBoxType.SSMINFO,
|
||||
SSMMsg(0, "连接超时", "SSM超时无响应", System.currentTimeMillis())
|
||||
)
|
||||
)
|
||||
} else {
|
||||
CallerMsgBoxManager.saveMsgBox(MsgBoxBean(MsgBoxType.SSMINFO, SSMMsg(0, "连接恢复", "SSM连接恢复", System.currentTimeMillis())))
|
||||
CallerMsgBoxManager.saveMsgBox(
|
||||
MsgBoxBean(
|
||||
MsgBoxType.SSMINFO,
|
||||
SSMMsg(0, "连接恢复", "SSM连接恢复", System.currentTimeMillis())
|
||||
)
|
||||
)
|
||||
}
|
||||
} else if (stateInfo.nodeName == AdasConstants.NodeName.FSM2024) {
|
||||
//域控FSM接口接收是否超时
|
||||
|
||||
@@ -137,6 +137,8 @@ class MoGoAdasMsgConnectStatusListenerImpl :
|
||||
}
|
||||
//每次工控机连接成功后,需同步当前设置的雨天模式状态
|
||||
CallerAutoPilotControlManager.setRainMode(FunctionBuildConfig.isRainMode)
|
||||
// 6.6.2 版本默认开启,与海江确认过,默认发盲区模式
|
||||
CallerAutoPilotControlManager.sendFusionMode(2)
|
||||
connectToast("域控已连接")
|
||||
}
|
||||
|
||||
|
||||
@@ -31,16 +31,16 @@ class MoGoObuProvider : IMoGoObuProvider {
|
||||
|
||||
//bus乘客版本obu功能去掉,大理项目需要全部车辆接收,不再限制
|
||||
mContext = context
|
||||
mContext?.let {
|
||||
val ipAddress =
|
||||
SharedPrefsMgr.getInstance().getString(MoGoConfig.OBU_IP, MogoObuConst.OBU_DEFAULT_IP)
|
||||
//mogo obu
|
||||
MogoPrivateObuNewManager.INSTANCE.connectObu(
|
||||
it,
|
||||
ipAddress,
|
||||
CommonUtils.getIpAddressString()
|
||||
)
|
||||
}
|
||||
// mContext?.let {
|
||||
// val ipAddress =
|
||||
// SharedPrefsMgr.getInstance().getString(MoGoConfig.OBU_IP, MogoObuConst.OBU_DEFAULT_IP)
|
||||
// //mogo obu
|
||||
// MogoPrivateObuNewManager.INSTANCE.connectObu(
|
||||
// it,
|
||||
// ipAddress,
|
||||
// CommonUtils.getIpAddressString()
|
||||
// )
|
||||
// }
|
||||
|
||||
//监听obu版本数据
|
||||
MogoPrivateObuNewManager.INSTANCE.readSystemConfig()
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
package com.mogo.eagle.core.function.datacenter.v2x
|
||||
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.function.api.map.road.IMoGoMapRoadListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager
|
||||
import com.zhidaoauto.map.data.road.RoadCross
|
||||
|
||||
|
||||
/**
|
||||
* 路线功能相关,绑定路线id后,业务控制,数据变化均可以封装在这里实现
|
||||
*/
|
||||
class RoadLineEventManager : IMoGoMapRoadListener, IMoGoAutopilotStatusListener {
|
||||
|
||||
companion object{
|
||||
|
||||
private const val TAG = "RoadLineEventManager"
|
||||
|
||||
val INSTANCE by lazy(LazyThreadSafetyMode.SYNCHRONIZED){
|
||||
RoadLineEventManager()
|
||||
}
|
||||
}
|
||||
|
||||
@Volatile
|
||||
private var record = false
|
||||
|
||||
fun init() {
|
||||
CallerMapRoadListenerManager.addListener(TAG, this)
|
||||
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun onAutopilotRouteLineId(lineId: Long) {
|
||||
super.onAutopilotRouteLineId(lineId)
|
||||
record = lineId != 0L
|
||||
}
|
||||
|
||||
override fun onRoadChange(cross: Boolean, roadCross: RoadCross?) {
|
||||
super.onRoadChange(cross, roadCross)
|
||||
if(!record){
|
||||
return
|
||||
}
|
||||
if(cross){
|
||||
CallerAutoPilotStatusListenerManager.updateRoadCount()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -106,7 +106,7 @@ class UpgradeAppNetWorkManager private constructor() {
|
||||
provider?.recordUpgradeRequestSuccess(GsonUtils.toJson(info))
|
||||
doUpgrade(info)
|
||||
} else {
|
||||
provider?.recordUpgradeRequestFailed(GsonUtils.toJson(info))
|
||||
provider?.recordUpgradeRequestFailed(info.msg?:"请检查升级服务日志")
|
||||
}
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.zhjt.mogo_core_function_devatools.upgrade.provider
|
||||
|
||||
import android.content.*
|
||||
import android.content.pm.PackageInstaller
|
||||
import android.widget.Toast
|
||||
import com.alibaba.android.arouter.facade.annotation.Route
|
||||
import com.mogo.eagle.core.data.constants.MogoServicePaths
|
||||
import com.mogo.eagle.core.data.deva.chain.*
|
||||
@@ -58,6 +59,9 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
||||
}
|
||||
|
||||
override suspend fun recordUpgradeRequestFailed(error: String) {
|
||||
if(error.isNotEmpty()){
|
||||
ToastUtils.showShort(error)
|
||||
}
|
||||
UpgradeDbHelper.insertCheckRecord(CheckRecord(AppUtils.getAppVersionName(), FAIL, error, time = System.currentTimeMillis()))
|
||||
try {
|
||||
onUpgradeRecordLinkLog(mapOf("upgrade_request_failed" to error))
|
||||
|
||||
@@ -186,7 +186,7 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun initEvent(){
|
||||
CallerDevaToolsListenerManager.addListener(TAG, this)
|
||||
CallerDevaToolsListenerManager.addListener(this.hashCode().toString(), this)
|
||||
val iconDown = ContextCompat.getDrawable(mActivity, R.drawable.icon_fault_expand)
|
||||
iconDown?.setBounds(0, 0, iconDown.minimumWidth, iconDown.minimumHeight)
|
||||
val iconUp = ContextCompat.getDrawable(mActivity, R.drawable.icon_fault_retract)
|
||||
@@ -466,7 +466,7 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
mWindowManager!!.removeView(mFloatLayout)
|
||||
}
|
||||
setWindowShowStatus(false)
|
||||
CallerDevaToolsListenerManager.removeListener(TAG)
|
||||
CallerDevaToolsListenerManager.removeListener(this.hashCode().toString())
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -179,12 +179,14 @@ class MapContainerLayout @JvmOverloads constructor(
|
||||
override fun onAnimationStart(animation: Animator) {
|
||||
super.onAnimationStart(animation)
|
||||
isPlayingAnim = true
|
||||
overMapView.setIsPlaying(true)
|
||||
overMapView.setMapFlag(isScaled)
|
||||
}
|
||||
|
||||
override fun onAnimationCancel(animation: Animator) {
|
||||
super.onAnimationCancel(animation)
|
||||
isPlayingAnim = false
|
||||
overMapView.setIsPlaying(false)
|
||||
overMapView.swapSettings()
|
||||
updateShadowBg(isScaled)
|
||||
isScaled = !isScaled
|
||||
@@ -199,6 +201,7 @@ class MapContainerLayout @JvmOverloads constructor(
|
||||
override fun onAnimationEnd(animation: Animator) {
|
||||
super.onAnimationEnd(animation)
|
||||
isPlayingAnim = false
|
||||
overMapView.setIsPlaying(false)
|
||||
overMapView.swapSettings()
|
||||
updateShadowBg(isScaled)
|
||||
isScaled = !isScaled
|
||||
|
||||
@@ -188,15 +188,6 @@ open class AutomaticExplorationView @JvmOverloads constructor(
|
||||
|
||||
})
|
||||
automaticExplorationAdapter?.setData(dataList)
|
||||
//每出现一次自动探查,增加相应的服务次数
|
||||
//道路信息提醒次数
|
||||
AutopilotSummaryInfo.infoTipNum += 9
|
||||
//车辆行为提醒次数
|
||||
AutopilotSummaryInfo.vehicleTipNum += 13
|
||||
//弱势参与者提醒次数
|
||||
AutopilotSummaryInfo.vulnerableTipNum += 4
|
||||
//消除安全风险隐患次数
|
||||
AutopilotSummaryInfo.dangerNum += 24
|
||||
//启动扫描
|
||||
ivScan?.let {
|
||||
rotationAnim = ObjectAnimator.ofFloat(it, "rotation", 0f, 360f)
|
||||
|
||||
@@ -196,9 +196,9 @@ class OperatePanelLayout : LinearLayout {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setDefaultVal(preferenceScreen)
|
||||
setPreferenceChangeListener(preferenceScreen)
|
||||
setPreferenceClickListener(preferenceScreen)
|
||||
setDefaultVal(preferenceScreen)
|
||||
}
|
||||
|
||||
protected open fun getDefaultVal(pref: Preference): Any? {
|
||||
@@ -426,6 +426,11 @@ class OperatePanelLayout : LinearLayout {
|
||||
KEY_V2I_TO_PNC -> {
|
||||
val isChecked = newValue as? Boolean ?: false
|
||||
FunctionBuildConfig.v2iToPNC = isChecked
|
||||
FunctionBuildConfig.isFusionColor = isChecked //6.6.2版本基于运营需求-产品设计-v2i进pnc,感知目标颜色替换
|
||||
FunctionBuildConfig.fusionMode = 2
|
||||
CallerAutoPilotControlManager.sendFusionMode(2)
|
||||
CallerHmiViewControlListenerManager.invokeFuncMode(IViewControlListener.FUNC_FUSION_COLOR,isChecked)
|
||||
|
||||
CallerAutoPilotControlManager.sendV2iToPncCmd(isChecked)
|
||||
hmiAction("V2I场景进PNC, ", isChecked)
|
||||
clickEventAnalytics("V2I场景进PNC", isChecked)
|
||||
@@ -980,7 +985,6 @@ class OperatePanelLayout : LinearLayout {
|
||||
when(adasParam.fusionMode) {
|
||||
1 -> {
|
||||
//全融合模式
|
||||
FunctionBuildConfig.fusionMode = 1
|
||||
prevCheckedKeyForFusionMode?.takeIf { it != KEY_ALL_MERGE_MODE }?.let {
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
|
||||
}?.also {
|
||||
@@ -994,7 +998,6 @@ class OperatePanelLayout : LinearLayout {
|
||||
}
|
||||
2 -> {
|
||||
//盲区模式
|
||||
FunctionBuildConfig.fusionMode = 2
|
||||
prevCheckedKeyForFusionMode?.takeIf { it != KEY_BLIND_AREA_MODE }?.let {
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
|
||||
}?.also {
|
||||
@@ -1008,7 +1011,6 @@ class OperatePanelLayout : LinearLayout {
|
||||
}
|
||||
3 -> {
|
||||
//超视距模式
|
||||
FunctionBuildConfig.fusionMode = 3
|
||||
prevCheckedKeyForFusionMode?.takeIf { it != KEY_BEYOND_VISUAL_RANGE_MODE }?.let {
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
|
||||
}?.also {
|
||||
@@ -1022,7 +1024,6 @@ class OperatePanelLayout : LinearLayout {
|
||||
}
|
||||
4 -> {
|
||||
//透传模式
|
||||
FunctionBuildConfig.fusionMode = 4
|
||||
prevCheckedKeyForFusionMode?.takeIf { it != KEY_TRANSPARENT_TRANSFER_MODE }?.let {
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
|
||||
}?.also {
|
||||
@@ -1036,7 +1037,6 @@ class OperatePanelLayout : LinearLayout {
|
||||
}
|
||||
5 -> {
|
||||
//纯路侧模式
|
||||
FunctionBuildConfig.fusionMode = 5
|
||||
prevCheckedKeyForFusionMode?.takeIf { it != KEY_PURE_OBU_MODE }?.let {
|
||||
preferenceScreen.findPreferenceReal<TwoStatePreference>(it)
|
||||
}?.also {
|
||||
|
||||
@@ -69,6 +69,7 @@ import com.mogo.eagle.core.function.api.datacenter.obu.IMoGoObuInfoListener
|
||||
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsFuncConfigListener
|
||||
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_FUSION_COLOR
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_MODE_DEMO
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_MODE_RAIN
|
||||
import com.mogo.eagle.core.function.api.setting.ISopSettingListener
|
||||
@@ -453,6 +454,8 @@ internal class DebugSettingView @JvmOverloads constructor(
|
||||
//雨天、美化、点云设置同步
|
||||
CallerSopSettingManager.addListener(TAG, this)
|
||||
|
||||
CallerHmiViewControlListenerManager.addListener(TAG, this)
|
||||
|
||||
//添加 业务配置监听
|
||||
CallerDevaToolsFuncConfigListenerManager.registerDevaToolsFuncConfigListener(
|
||||
FuncBizConfig.FOUNDATION, TAG, true, this
|
||||
@@ -495,6 +498,7 @@ internal class DebugSettingView @JvmOverloads constructor(
|
||||
//雨天、美化、点云设置同步
|
||||
CallerSopSettingManager.removeListener(TAG)
|
||||
|
||||
CallerHmiViewControlListenerManager.removeListener(TAG)
|
||||
|
||||
// 移除 业务配置监听
|
||||
CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener(
|
||||
@@ -2668,7 +2672,10 @@ internal class DebugSettingView @JvmOverloads constructor(
|
||||
tbIsDemoMode.isChecked = FunctionBuildConfig.isDemoMode
|
||||
}
|
||||
if (tag == FUNC_MODE_RAIN) {
|
||||
tbIsDemoMode.isChecked = FunctionBuildConfig.isRainMode
|
||||
tbIsRainMode.isChecked = FunctionBuildConfig.isRainMode
|
||||
}
|
||||
if(tag == FUNC_FUSION_COLOR){
|
||||
btnDrawFusion.isChecked = FunctionBuildConfig.isFusionColor
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoGetParamResponseListener
|
||||
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsFuncConfigListener
|
||||
import com.mogo.eagle.core.function.api.devatools.mofang.IMoGoMoFangProvider
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_FUSION_COLOR
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_MODE_DEMO
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_MODE_RAIN
|
||||
import com.mogo.eagle.core.function.api.setting.ISopSettingListener
|
||||
@@ -250,6 +251,9 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
if (isChecked) {
|
||||
//V2I场景进PNC
|
||||
scV2iPnc.isChecked = FunctionBuildConfig.v2iToPNC
|
||||
if(FunctionBuildConfig.v2iToPNC){
|
||||
FunctionBuildConfig.isFusionColor = true //6.6.2版本基于运营需求-产品设计-开启v2i进pnc,开启感知目标颜色替换
|
||||
}
|
||||
hmiAction("SOP V2I场景进PNC, ", FunctionBuildConfig.v2iToPNC)
|
||||
CallerAutoPilotControlManager.sendV2iToPncCmd(FunctionBuildConfig.v2iToPNC)
|
||||
//闯红灯预警
|
||||
@@ -265,6 +269,7 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
} else {
|
||||
//V2I场景进PNC
|
||||
scV2iPnc.isChecked = false
|
||||
FunctionBuildConfig.isFusionColor = false //6.6.2版本基于运营需求-产品设计-关闭v2i进pnc,关闭感知目标颜色替换
|
||||
CallerAutoPilotControlManager.sendV2iToPncCmd(false)
|
||||
hmiAction("SOP V2I场景进PNC, ", false)
|
||||
//闯红灯预警
|
||||
@@ -345,6 +350,11 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
}
|
||||
clickEventAnalytics("V2I场景进PNC",isChecked)
|
||||
hmiAction("SOP V2I场景进PNC, ", isChecked)
|
||||
FunctionBuildConfig.isFusionColor = isChecked //6.6.2版本基于运营需求-产品设计-v2i进pnc,感知目标颜色替换
|
||||
FunctionBuildConfig.fusionMode = 2
|
||||
CallerAutoPilotControlManager.sendFusionMode(2)
|
||||
updateFusionModeUI()
|
||||
CallerHmiViewControlListenerManager.invokeFuncMode(FUNC_FUSION_COLOR,isChecked)
|
||||
CallerAutoPilotControlManager.sendV2iToPncCmd(isChecked)
|
||||
FunctionBuildConfig.v2iToPNC = isChecked
|
||||
}
|
||||
@@ -600,6 +610,9 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
clickEventAnalytics("考试功能面板",isChecked)
|
||||
}
|
||||
|
||||
// 6.6.2 与海江确认,默认发盲区模式
|
||||
CallerAutoPilotControlManager.sendFusionMode(2)
|
||||
updateFusionModeUI()
|
||||
//融合模式
|
||||
rgFusionMode.setOnCheckedChangeListener { _, p1 ->
|
||||
when (p1) {
|
||||
@@ -1101,32 +1114,34 @@ internal class SOPSettingView @JvmOverloads constructor(
|
||||
) {
|
||||
//融合模式
|
||||
ThreadUtils.runOnUiThread {
|
||||
FunctionBuildConfig.fusionMode = adasParam.fusionMode
|
||||
when (FunctionBuildConfig.fusionMode) {
|
||||
1 -> {
|
||||
//全融合模式
|
||||
rgFusionMode.check(R.id.rbFullIntegration)
|
||||
}
|
||||
2 -> {
|
||||
//盲区模式
|
||||
rgFusionMode.check(R.id.rbBlind)
|
||||
}
|
||||
3 -> {
|
||||
//超视距模式
|
||||
rgFusionMode.check(R.id.rbBeyondSight)
|
||||
}
|
||||
4 -> {
|
||||
//透传模式
|
||||
rgFusionMode.check(R.id.rbTransparent)
|
||||
}
|
||||
5 -> {
|
||||
//纯路侧模式
|
||||
rgFusionMode.check(R.id.rbPureRoad)
|
||||
}
|
||||
}
|
||||
|
||||
updateFusionModeUI()
|
||||
val overTakeSpeed = adasParam.overtakeMaxSpeed
|
||||
tvOverTakeLimit.text = "$overTakeSpeed m/s"
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateFusionModeUI(){
|
||||
when (FunctionBuildConfig.fusionMode) {
|
||||
1 -> {
|
||||
//全融合模式
|
||||
rgFusionMode.check(R.id.rbFullIntegration)
|
||||
}
|
||||
2 -> {
|
||||
//盲区模式
|
||||
rgFusionMode.check(R.id.rbBlind)
|
||||
}
|
||||
3 -> {
|
||||
//超视距模式
|
||||
rgFusionMode.check(R.id.rbBeyondSight)
|
||||
}
|
||||
4 -> {
|
||||
//透传模式
|
||||
rgFusionMode.check(R.id.rbTransparent)
|
||||
}
|
||||
5 -> {
|
||||
//纯路侧模式
|
||||
rgFusionMode.check(R.id.rbPureRoad)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import android.os.Build
|
||||
import android.os.CountDownTimer
|
||||
import android.text.Html
|
||||
import android.util.AttributeSet
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.animation.LinearInterpolator
|
||||
@@ -85,7 +86,6 @@ class ColdStartView @JvmOverloads constructor(
|
||||
super.onAttachedToWindow()
|
||||
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
|
||||
CallerColdStartStateListenerManager.addListener(TAG,this)
|
||||
CallerAutoPilotControlManager.sendSsmFuncQueryColdStartState()
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
@@ -211,6 +211,9 @@ class ColdStartView @JvmOverloads constructor(
|
||||
coldStartState: SsmInfo.ColdStartState?
|
||||
) {
|
||||
coldStartState?.let {
|
||||
Log.i(TAG,"节点自上报冷启动状态="+it.eventStatus)
|
||||
Log.i(TAG,"旧冷启动状态="+it.processStatus)
|
||||
Log.i(TAG,"旧冷启动超时原因="+it.processTimeoutReason)
|
||||
ThreadUtils.runOnUiThread {
|
||||
if(it.eventStatus == SsmInfo.CSState.COLD_START_READY){
|
||||
//冷启动就绪
|
||||
@@ -219,6 +222,8 @@ class ColdStartView @JvmOverloads constructor(
|
||||
tvColdStartContent.text = getColdStartEventStatus(it.eventStatus)
|
||||
nodeStatusSb.clear()
|
||||
it.nodeList.forEach {node->
|
||||
Log.i(TAG,"node nodeName="+node.nodeName+"node status="+node.status)
|
||||
|
||||
val nodeDetail = node.nodeName+ " " + getColdStartNodeStatus(node.status)
|
||||
if(node.status == SsmInfo.NodeStatus.NODE_FAILED || node.status ==SsmInfo.NodeStatus.NODE_TIMEOUT){
|
||||
nodeStatusSb.append("<font color=\"#FFCD3D\">${nodeDetail}</font>")
|
||||
@@ -321,8 +326,6 @@ class ColdStartView @JvmOverloads constructor(
|
||||
viewColdStartDivider.visibility = View.GONE
|
||||
ivColdStartStatus.visibility = View.GONE
|
||||
tvColdStartContent.visibility = View.GONE
|
||||
//主动查询冷启动状态
|
||||
CallerAutoPilotControlManager.sendSsmFuncQueryColdStartState()
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -378,11 +381,11 @@ class ColdStartView @JvmOverloads constructor(
|
||||
connectSSMTimer?.cancel()
|
||||
//开始启动冷启动等待倒计时
|
||||
coldStartProcess()
|
||||
//主动查询冷启动状态
|
||||
CallerAutoPilotControlManager.sendSsmFuncQueryColdStartState()
|
||||
}
|
||||
ssmConnectStatus = true
|
||||
coldStartStatus = false
|
||||
//主动查询冷启动状态
|
||||
CallerAutoPilotControlManager.sendSsmFuncQueryColdStartState()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.mogo.eagle.core.data.autopilot.AutopilotSummaryInfo
|
||||
import com.mogo.eagle.core.data.enums.DataSourceType
|
||||
import com.mogo.eagle.core.data.enums.TrafficLightEnum
|
||||
import com.mogo.eagle.core.function.api.datacenter.union.IMoGoTrafficLightListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerServicesEventManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
|
||||
import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
@@ -205,7 +206,7 @@ class FusionTrafficLightView @JvmOverloads constructor(
|
||||
if(this@FusionTrafficLightView.visibility == View.GONE){
|
||||
this@FusionTrafficLightView.visibility = View.VISIBLE
|
||||
CallerHmiViewControlListenerManager.invokeV2XEvent(View.VISIBLE, TAG)
|
||||
AutopilotSummaryInfo.lightServicesNum++
|
||||
CallerServicesEventManager.updateServicesNum(CallerServicesEventManager.ServiceType.LIGHT)
|
||||
}
|
||||
|
||||
val colorList = ArrayList<TrafficLightEnum>()
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotSummaryInfo
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerServicesEventManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.function.view.TravelRealityView
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
@@ -70,26 +71,23 @@ open class ItinerarySummaryDialog(context: Context, isDriver: Boolean, theme: In
|
||||
}
|
||||
//全息路口服务次数
|
||||
tvIntersectionServicesNum = findViewById(R.id.tvIntersectionServicesNum)
|
||||
tvIntersectionServicesNum?.text = CallerAutoPilotStatusListenerManager.getRoadCount().toString()
|
||||
tvIntersectionServicesNum?.text = CallerServicesEventManager.getRoadNum().toString()
|
||||
//路口灯态服务次数
|
||||
tvLightServicesNum = findViewById(R.id.tvLightServicesNum)
|
||||
tvLightServicesNum?.text = AutopilotSummaryInfo.lightServicesNum.toString()
|
||||
tvLightServicesNum?.text = CallerServicesEventManager.getLightServicesNum().toString()
|
||||
//道路信息提醒次数
|
||||
tvInfoTipNum = findViewById(R.id.tvInfoTipNum)
|
||||
AutopilotSummaryInfo.infoTipNum += random.nextInt(7) +2
|
||||
tvInfoTipNum?.text = AutopilotSummaryInfo.infoTipNum.toString()
|
||||
tvInfoTipNum?.text = CallerServicesEventManager.getInfoTipNum().toString()
|
||||
//车辆行为提醒次数
|
||||
tvVehicleTipNum = findViewById(R.id.tvVehicleTipNum)
|
||||
AutopilotSummaryInfo.vehicleTipNum += random.nextInt(7) +2
|
||||
tvVehicleTipNum?.text = AutopilotSummaryInfo.vehicleTipNum.toString()
|
||||
tvVehicleTipNum?.text = CallerServicesEventManager.getVehicleTipNum().toString()
|
||||
//弱势参与者提醒次数
|
||||
tvVulnerableTipNum = findViewById(R.id.tvVulnerableTipNum)
|
||||
AutopilotSummaryInfo.vulnerableTipNum += random.nextInt(7)+2
|
||||
tvVulnerableTipNum?.text = AutopilotSummaryInfo.vulnerableTipNum.toString()
|
||||
tvVulnerableTipNum?.text = CallerServicesEventManager.getVulnerableTipNum().toString()
|
||||
//消除安全风险隐患次数
|
||||
tvDangerNum = findViewById(R.id.tvDangerNum)
|
||||
AutopilotSummaryInfo.dangerNum += random.nextInt(7)+2
|
||||
tvDangerNum?.text = AutopilotSummaryInfo.dangerNum.toString()
|
||||
val dangerNum = CallerServicesEventManager.getInfoTipNum()+ CallerServicesEventManager.getVehicleTipNum() + CallerServicesEventManager.getVulnerableTipNum()
|
||||
tvDangerNum?.text = dangerNum.toString()
|
||||
//通行效率提升:本期为假数据,数据为百分数,值为7-14%之间的随机数,保留小数点后1位
|
||||
tvEfficiencyNum = findViewById(R.id.tvEfficiencyNum)
|
||||
val next: Float= random.nextInt(70).toFloat()/10
|
||||
@@ -113,7 +111,12 @@ open class ItinerarySummaryDialog(context: Context, isDriver: Boolean, theme: In
|
||||
|
||||
private fun showSummaryTipContent(){
|
||||
ThreadUtils.runOnUiThread {
|
||||
val vehicleServiceNum = AutopilotSummaryInfo.infoTipNum+ AutopilotSummaryInfo.vehicleTipNum + AutopilotSummaryInfo.vulnerableTipNum + AutopilotSummaryInfo.lightServicesNum + CallerAutoPilotStatusListenerManager.getRoadCount()
|
||||
val vehicleServiceNum =
|
||||
CallerServicesEventManager.getInfoTipNum()+
|
||||
CallerServicesEventManager.getVehicleTipNum() +
|
||||
CallerServicesEventManager.getVulnerableTipNum() +
|
||||
CallerServicesEventManager.getLightServicesNum() +
|
||||
CallerServicesEventManager.getRoadNum()
|
||||
var smartRoadLen = 1000f
|
||||
try {
|
||||
smartRoadLen =random.nextFloat()*mileage
|
||||
@@ -138,12 +141,7 @@ open class ItinerarySummaryDialog(context: Context, isDriver: Boolean, theme: In
|
||||
travelRealityView?.onPause()
|
||||
travelRealityView?.onDestroy()
|
||||
//对本次服务记录清零
|
||||
AutopilotSummaryInfo.lightServicesNum = 0
|
||||
AutopilotSummaryInfo.infoTipNum = 0
|
||||
AutopilotSummaryInfo.vehicleTipNum = 0
|
||||
AutopilotSummaryInfo.vulnerableTipNum = 0
|
||||
AutopilotSummaryInfo.dangerNum = 0
|
||||
CallerAutoPilotStatusListenerManager.resetRoadCount()
|
||||
CallerServicesEventManager.resetServicesNum()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,6 +16,7 @@ import com.mogo.eagle.core.function.api.datacenter.union.IMoGoTrafficLightListen
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.TrafficLightView_TAG
|
||||
import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerServicesEventManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
|
||||
import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager
|
||||
import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager
|
||||
@@ -54,6 +55,8 @@ class SingleTrafficLightView @JvmOverloads constructor(
|
||||
|
||||
private var trafficLightUser = 0 //0:默认;1:Taxi乘客屏肤色
|
||||
|
||||
private var isShowLight: Boolean = false
|
||||
|
||||
init{
|
||||
context?.let {
|
||||
val typedArray = it.obtainStyledAttributes(attrs, R.styleable.SingleTrafficLightView)
|
||||
@@ -119,6 +122,7 @@ class SingleTrafficLightView @JvmOverloads constructor(
|
||||
super.showTrafficLight(checkLightId, lightSource)
|
||||
UiThreadHandler.post {
|
||||
CallerLogger.d("$M_HMI$TAG","update checkLightId:$checkLightId, lightSource: $lightSource")
|
||||
isShowLight = true
|
||||
mCurrentLightId = checkLightId
|
||||
updateTrafficLightIcon(checkLightId, lightSource)
|
||||
}
|
||||
@@ -400,4 +404,11 @@ class SingleTrafficLightView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun onVisibilityChanged(changedView: View, visibility: Int) {
|
||||
super.onVisibilityChanged(changedView, visibility)
|
||||
if(visibility == View.VISIBLE && isShowLight){
|
||||
CallerServicesEventManager.updateServicesNum(CallerServicesEventManager.ServiceType.LIGHT)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,13 +7,15 @@ import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.os.Message
|
||||
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.deva.chain.ChainConstant
|
||||
import com.mogo.eagle.core.data.road.CameraDeviceInfo
|
||||
import com.mogo.eagle.core.data.road.RoadCrossCamera
|
||||
import com.mogo.eagle.core.function.api.map.listener.IGaoDeMapLocationListener
|
||||
import com.mogo.eagle.core.function.api.map.road.IMoGoMapRoadListener
|
||||
import com.mogo.eagle.core.function.business.roadcross.net.NDERoadCameraNetWorkModel.Companion.ndeRoadCameraNetWorkModel
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerGaoDeMapLocationListenerManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.function.map.R
|
||||
@@ -24,17 +26,19 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.map.overlay.core.Level
|
||||
import com.mogo.map.overlay.point.Point
|
||||
import com.mogo.skin.utils.SkinResources
|
||||
import com.zhidaoauto.map.data.road.RoadCross
|
||||
import com.zhidaoauto.map.data.road.StopLine
|
||||
import com.zhjt.service.chain.ChainLog
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
class RoadCrossCameraManager : IMoGoMapRoadListener {
|
||||
@SuppressLint("NewApi")
|
||||
class RoadCrossCameraManager : IMoGoMapRoadListener, IGaoDeMapLocationListener {
|
||||
companion object {
|
||||
|
||||
private const val TAG = "RoadCrossCameraManager"
|
||||
private const val REQUEST_CAMERA_MSG = 0
|
||||
private const val REMOVE_MARKER_MSG = 1
|
||||
private const val REQUEST_CAMERA_DELAY_TIME = 50000L
|
||||
private const val REMOVE_MARKER_DELAY_TIME = 10000L
|
||||
|
||||
val instance: RoadCrossCameraManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
|
||||
@@ -48,25 +52,71 @@ class RoadCrossCameraManager : IMoGoMapRoadListener {
|
||||
private var isCameraRequest = false
|
||||
|
||||
@Volatile
|
||||
private var roadCrossCameraList: List<CameraDeviceInfo>? = null
|
||||
private var roadCrossCameraList: List<RoadCrossCamera>? = null
|
||||
|
||||
private val overlayManager = CallerMapUIServiceManager.getOverlayManager()
|
||||
|
||||
private val handler = object :Handler(Looper.getMainLooper()){
|
||||
private val handler = object : Handler(Looper.getMainLooper()) {
|
||||
override fun handleMessage(msg: Message) {
|
||||
super.handleMessage(msg)
|
||||
CallerLogger.d("$M_MAP$TAG", "remove marker")
|
||||
overlayManager?.removeAllPointsInOwner(TAG)
|
||||
when (msg.what) {
|
||||
REQUEST_CAMERA_MSG -> {
|
||||
getAllRoadCross()
|
||||
}
|
||||
|
||||
REMOVE_MARKER_MSG -> {
|
||||
CallerLogger.d("$M_MAP$TAG", "remove marker")
|
||||
overlayManager?.removeAllPointsInOwner(TAG)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun init(context: Context?) {
|
||||
mContext = context
|
||||
CallerMapRoadListenerManager.addListener(TAG, this)
|
||||
CallerGaoDeMapLocationListenerManager.addListener(TAG, this)
|
||||
getAllRoadCross()
|
||||
}
|
||||
|
||||
private fun getAllRoadCross() {
|
||||
val cityCode = CallerMapUIServiceManager.getCityCode()
|
||||
if (cityCode.isNullOrEmpty() || (cityCode.isNotEmpty() && cityCode == "010")) {
|
||||
handler.removeMessages(REQUEST_CAMERA_MSG)
|
||||
handler.sendEmptyMessageDelayed(REQUEST_CAMERA_MSG, REQUEST_CAMERA_DELAY_TIME + 100000)
|
||||
return
|
||||
}
|
||||
ndeRoadCameraNetWorkModel.getRoadCrossInfo(
|
||||
onSuccess = { it ->
|
||||
if (it.isNotEmpty()) {
|
||||
roadCrossCameraList = it
|
||||
val map = mutableMapOf<String, RoadCrossCamera>()
|
||||
it.forEach { road ->
|
||||
road.crossingId?.let { id ->
|
||||
map[id] = road
|
||||
}
|
||||
}
|
||||
roadCrossTrace("getAllRoadCross", map)
|
||||
} else {
|
||||
traceError("roadCrossInfo request size is zero")
|
||||
}
|
||||
},
|
||||
onError = {
|
||||
handler.removeMessages(REQUEST_CAMERA_MSG)
|
||||
handler.sendEmptyMessageDelayed(REQUEST_CAMERA_MSG, REQUEST_CAMERA_DELAY_TIME)
|
||||
traceError("roadCrossInfo request errorMsg: $it")
|
||||
})
|
||||
}
|
||||
|
||||
override fun onCityCodeChanged(cityCode: String) {
|
||||
super.onCityCodeChanged(cityCode)
|
||||
if (cityCode != "010") {
|
||||
getAllRoadCross()
|
||||
}
|
||||
}
|
||||
|
||||
private var distance: Double by Delegates.observable(0.0) { _, _, newV ->
|
||||
if(!AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)){
|
||||
if (!AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) {
|
||||
return@observable
|
||||
}
|
||||
if (!isCameraRequest && newV < 100) {
|
||||
@@ -76,38 +126,26 @@ class RoadCrossCameraManager : IMoGoMapRoadListener {
|
||||
"$M_MAP$TAG",
|
||||
"触发接口调用 dis: $distance , roadCrossEnd: ${roadCrossEnd ?: "null"} "
|
||||
)
|
||||
if(roadCrossEnd == null){
|
||||
if (roadCrossEnd == null) {
|
||||
roadCrossTrace(
|
||||
TAG, mapOf("errorMsg" to "触发接口调用,roadCrossEnd获取为null",)
|
||||
TAG, mapOf("errorMsg" to "触发接口调用,roadCrossEnd获取为null")
|
||||
)
|
||||
}
|
||||
|
||||
if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){
|
||||
AIAssist.getInstance(mContext).speakTTSVoice("${SkinResources.getInstance().getString(
|
||||
com.mogo.eagle.core.data.R.string.operation_platform_name)}检测到前方${distance.toInt()}米您将通过路口,已为您切换展示路口全息影像")
|
||||
}
|
||||
if (roadCrossEnd != null) {
|
||||
ndeRoadCameraNetWorkModel.getRoadCrossInfo(roadCrossEnd,
|
||||
onSuccess = {
|
||||
if (it.crossingId == null) {
|
||||
traceError("roadUniqueId is null")
|
||||
return@getRoadCrossInfo
|
||||
}
|
||||
if (it.deviceInfoList.isEmpty()) {
|
||||
traceError("deviceInfoList isEmpty")
|
||||
return@getRoadCrossInfo
|
||||
}
|
||||
roadCrossCameraList = it.deviceInfoList
|
||||
// 地图上打marker(注意marker方向),marker点击获取对应ip
|
||||
ThreadUtils.runOnUiThread {
|
||||
if (roadCrossCameraList != null) {
|
||||
roadCrossCameraList?.forEach {
|
||||
if (!it.roadUniqueId.isNullOrEmpty() && it.roadUniqueId == roadCrossEnd) {
|
||||
it.deviceInfoList.forEach { deviceInfo ->
|
||||
addCameraDeviceMarker(deviceInfo)
|
||||
}
|
||||
} else {
|
||||
requestSingleCross(roadCrossEnd)
|
||||
}
|
||||
},
|
||||
onError = {
|
||||
traceError("roadCrossInfo request errorMsg: $it")
|
||||
})
|
||||
}
|
||||
} else {
|
||||
requestSingleCross(roadCrossEnd)
|
||||
}
|
||||
} else {
|
||||
traceError("roadCross is null")
|
||||
}
|
||||
@@ -116,6 +154,30 @@ class RoadCrossCameraManager : IMoGoMapRoadListener {
|
||||
}
|
||||
}
|
||||
|
||||
private fun requestSingleCross(roadCrossEnd: String) {
|
||||
ndeRoadCameraNetWorkModel.getRoadCrossInfo(roadCrossEnd,
|
||||
onSuccess = { result ->
|
||||
val it = result[0]
|
||||
if (it.crossingId == null) {
|
||||
traceError("roadUniqueId is null")
|
||||
return@getRoadCrossInfo
|
||||
}
|
||||
if (it.deviceInfoList.isEmpty()) {
|
||||
traceError("deviceInfoList isEmpty")
|
||||
return@getRoadCrossInfo
|
||||
}
|
||||
// 地图上打marker(注意marker方向),marker点击获取对应ip
|
||||
ThreadUtils.runOnUiThread {
|
||||
it.deviceInfoList.forEach { deviceInfo ->
|
||||
addCameraDeviceMarker(deviceInfo)
|
||||
}
|
||||
}
|
||||
},
|
||||
onError = {
|
||||
traceError("roadCrossInfo request errorMsg: $it")
|
||||
})
|
||||
}
|
||||
|
||||
private fun addCameraDeviceMarker(cameraDeviceInfo: CameraDeviceInfo) {
|
||||
mContext?.let {
|
||||
val builder =
|
||||
@@ -146,6 +208,46 @@ class RoadCrossCameraManager : IMoGoMapRoadListener {
|
||||
}
|
||||
}
|
||||
|
||||
fun hasCrossCamera(): Boolean {
|
||||
if(CallerMapUIServiceManager.getCityCode() == "010"){
|
||||
roadCrossTrace(
|
||||
TAG, mapOf("errorMsg" to "cityCode限制 - 北京无路口设备")
|
||||
)
|
||||
return false
|
||||
}
|
||||
|
||||
val roadCrossEnd = CallerMapRoadListenerManager.getCrossEndInfo()
|
||||
if(roadCrossEnd == null){
|
||||
roadCrossTrace(
|
||||
TAG, mapOf("errorMsg" to "hasCrossCamera - 未获取到地图crossEnd数据")
|
||||
)
|
||||
return false
|
||||
}
|
||||
|
||||
if (roadCrossCameraList == null) {
|
||||
roadCrossTrace(
|
||||
TAG, mapOf("errorMsg" to "hasCrossCamera - 未获取到全市路口设备信息")
|
||||
)
|
||||
return false
|
||||
}
|
||||
|
||||
roadCrossCameraList?.forEach {
|
||||
val result = (!it.roadUniqueId.isNullOrEmpty()
|
||||
&& it.roadUniqueId == roadCrossEnd)
|
||||
if(result){
|
||||
roadCrossTrace(
|
||||
TAG, mapOf("errorMsg" to "hasCrossCamera - 遍历匹配路口数据命中 - $roadCrossEnd")
|
||||
)
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
roadCrossTrace(
|
||||
TAG, mapOf("errorMsg" to "hasCrossCamera - 均不匹配上述条件")
|
||||
)
|
||||
return false
|
||||
}
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
private fun batchRequestCrossLive(cameraDeviceInfo: List<CameraDeviceInfo>) {
|
||||
val list = mutableListOf<String>()
|
||||
@@ -168,7 +270,7 @@ class RoadCrossCameraManager : IMoGoMapRoadListener {
|
||||
override fun onRoadChange(cross: Boolean, roadCross: RoadCross?) {
|
||||
super.onRoadChange(cross, roadCross)
|
||||
// 出路口
|
||||
if(!isCameraRequest){
|
||||
if (!isCameraRequest) {
|
||||
CallerLogger.d("$M_MAP$TAG", "未触发路口获取marker")
|
||||
return
|
||||
}
|
||||
@@ -177,7 +279,7 @@ class RoadCrossCameraManager : IMoGoMapRoadListener {
|
||||
ndeRoadCameraNetWorkModel.cancelRequest("roadCross")
|
||||
// 清除marker
|
||||
CallerLogger.d("$M_MAP$TAG", "remove marker handler")
|
||||
handler.sendEmptyMessageDelayed(REQUEST_CAMERA_MSG, REMOVE_MARKER_DELAY_TIME)
|
||||
handler.sendEmptyMessageDelayed(REMOVE_MARKER_MSG, REMOVE_MARKER_DELAY_TIME)
|
||||
// 释放控制
|
||||
isCameraRequest = false
|
||||
CallerLogger.d("$M_MAP$TAG", "经过路口,释放控制")
|
||||
@@ -202,7 +304,7 @@ class RoadCrossCameraManager : IMoGoMapRoadListener {
|
||||
linkChainLog = ChainConstant.CHAIN_TYPE_STATUS,
|
||||
linkCode = ChainConstant.CHAIN_SOURCE_MAP,
|
||||
nodeAliasCode = ChainConstant.CHAIN_CODE_MAP_ROAD_CROSS_ERROR,
|
||||
paramIndexes = [0]
|
||||
paramIndexes = [0, 1]
|
||||
)
|
||||
private fun roadCrossTrace(tag: String, paramMap: Any) {
|
||||
CallerLogger.d("$M_MAP$tag", "$paramMap")
|
||||
|
||||
@@ -27,8 +27,8 @@ class NDERoadCameraNetWorkModel private constructor() {
|
||||
}
|
||||
|
||||
fun getRoadCrossInfo(
|
||||
crossID: String,
|
||||
onSuccess: ((RoadCrossCamera) -> Unit),
|
||||
crossID: String? = null,
|
||||
onSuccess: ((List<RoadCrossCamera>) -> Unit),
|
||||
onError: ((String) -> Unit)
|
||||
) {
|
||||
request<BaseResponse<List<RoadCrossCamera>>>("roadCross") {
|
||||
@@ -39,7 +39,7 @@ class NDERoadCameraNetWorkModel private constructor() {
|
||||
getNetWorkApi().roadCameraRequest(
|
||||
pair.first,
|
||||
pair.second,
|
||||
crossID,
|
||||
crossID?:"",
|
||||
loc.longitude,
|
||||
loc.latitude,
|
||||
CallerMapUIServiceManager.getCityCode() ?: ""
|
||||
@@ -48,7 +48,7 @@ class NDERoadCameraNetWorkModel private constructor() {
|
||||
}
|
||||
onSuccess {
|
||||
if (it.result.isNotEmpty()) {
|
||||
onSuccess.invoke(it.result[0])
|
||||
onSuccess.invoke(it.result)
|
||||
} else {
|
||||
onError.invoke("getRoadCrossInfo empty camera info")
|
||||
}
|
||||
|
||||
@@ -121,6 +121,9 @@ class MapRoamView(context: Context?, attrs: AttributeSet?) : MogoMapView(context
|
||||
}
|
||||
|
||||
override fun onAiIdentifyData(obj: SocketDownData.SocketDownDataProto?) {
|
||||
if(obj == null){
|
||||
trace(TAG, mapOf("onAiIdentifyData" to "空数据"))
|
||||
}
|
||||
obj?.let {
|
||||
obj.data?.let {
|
||||
if (it.allListList == null || it.allListList.size == 0) {
|
||||
|
||||
@@ -19,7 +19,9 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.V2X_EVENT_TAG
|
||||
import com.mogo.eagle.core.function.api.map.road.IMoGoMapRoadListener
|
||||
import com.mogo.eagle.core.function.business.roadcross.RoadCrossCameraManager.Companion.instance
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerServicesEventManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapIdentifyManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager
|
||||
@@ -56,10 +58,14 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
private const val MSG_HIDE_VIEW_TIME = 10_000L
|
||||
}
|
||||
|
||||
@Volatile
|
||||
private var isShow = false
|
||||
|
||||
private var showState by Delegates.observable(false) { _, oldV, newV ->
|
||||
if (oldV != newV) {
|
||||
updateView(newV)
|
||||
if (!newV) {
|
||||
isShow = false
|
||||
}
|
||||
updateView(newV)
|
||||
}
|
||||
|
||||
private var animator: ObjectAnimator? = null
|
||||
@@ -184,16 +190,28 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
|
||||
override fun onStopLineInfo(info: StopLine) {
|
||||
super.onStopLineInfo(info)
|
||||
val cross = CallerMapRoadListenerManager.getCrossEndInfo()
|
||||
if (info.distance == 0.0 || info.distance > 200) {
|
||||
CallerLogger.d("$M_MAP$TAG", "showState return , distance is ${info.distance}")
|
||||
if (cross != null && cross != "0") {
|
||||
CallerLogger.d("$M_MAP$TAG", "未触发,路口ID:$cross , 距离超出:${info.distance}")
|
||||
}
|
||||
return
|
||||
}
|
||||
showState = info.distance in 110.0..200.0
|
||||
CallerLogger.d("$M_MAP$TAG", "命中 before:$showState")
|
||||
showState = info.distance in 100.0..200.0
|
||||
CallerLogger.d("$M_MAP$TAG", "命中 after:$showState,路口ID:$cross , dis:${info.distance}")
|
||||
}
|
||||
|
||||
private fun attachView() {
|
||||
if (isShow) {
|
||||
return
|
||||
}
|
||||
if (this.visibility == View.VISIBLE) {
|
||||
return
|
||||
}
|
||||
// 没有路线不做提示
|
||||
if (CallerAutoPilotStatusListenerManager.getLineId() == 0L) {
|
||||
CallerLogger.d("$M_MAP$TAG", "没有路线不做提示")
|
||||
return
|
||||
}
|
||||
// 处于漫游模式下不做处理
|
||||
@@ -209,13 +227,29 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
CallerLogger.d("$M_MAP$TAG", "attachView return , mainPageVisible is false")
|
||||
return
|
||||
}
|
||||
// 没有路侧设备,不做处理
|
||||
CallerLogger.d("$M_MAP$TAG", "命中,attachView")
|
||||
val cross = CallerMapRoadListenerManager.getCrossEndInfo()
|
||||
if (cross.isNullOrEmpty()) {
|
||||
CallerLogger.d("$M_MAP$TAG", "未触发,路口ID:$cross")
|
||||
return
|
||||
}
|
||||
if (!instance.hasCrossCamera()) {
|
||||
CallerLogger.d("$M_MAP$TAG", "没有路侧设备,不做处理")
|
||||
return
|
||||
}
|
||||
isShow = true
|
||||
//播放语音
|
||||
val dis = CallerMapRoadListenerManager.getStopLineDistance()?.toInt() ?: 0
|
||||
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
AIAssist.getInstance(context)
|
||||
.speakTTSVoice("前方${dis}米将通过路口,${SkinResources.getInstance().getString(R.string.operation_platform_name)}为您提供路口全息影像,助力出行")
|
||||
var disStr = "前方即将通过路口,蘑菇为您提供路口全息影像,助力出行"
|
||||
if (dis >= 80) {
|
||||
disStr = "前方${dis}米将通过路口,${SkinResources.getInstance().getString(R.string.operation_platform_name)}为您提供路口全息影像,助力出行"
|
||||
}
|
||||
AIAssist.getInstance(context).speakTTSVoice(disStr)
|
||||
}
|
||||
CallerHmiViewControlListenerManager.invokeV2XEvent(View.VISIBLE, TAG)
|
||||
CallerServicesEventManager.updateServicesNum(CallerServicesEventManager.ServiceType.ROAD)
|
||||
bringToFront()
|
||||
this.visibility = View.VISIBLE
|
||||
ivZhiRoadRoamView.visibility = View.VISIBLE
|
||||
|
||||
@@ -33,9 +33,11 @@ import com.amap.api.maps.model.PolylineOptions
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.data.map.MogoLatLng
|
||||
import com.mogo.eagle.core.data.map.MogoLocation
|
||||
import com.mogo.eagle.core.data.och.OchInfo
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener
|
||||
import com.mogo.eagle.core.function.api.datacenter.IDataCenterBizListener
|
||||
import com.mogo.eagle.core.function.business.travelreality.CrossDeviceBean
|
||||
import com.mogo.eagle.core.function.business.travelreality.DeviceInfoBean
|
||||
import com.mogo.eagle.core.function.business.travelreality.EventBean
|
||||
@@ -48,6 +50,7 @@ import com.mogo.eagle.core.function.business.travelreality.view.VideoMarkerEntit
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager
|
||||
import com.mogo.eagle.core.function.call.datacenter.CallerDataCenterBizListener
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.function.map.R
|
||||
import com.mogo.eagle.core.function.smp.view.SmallMapView
|
||||
@@ -74,7 +77,8 @@ class TravelRealityView @JvmOverloads constructor(
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoChassisLocationGCJ02Listener,
|
||||
IMoGoPlanningRottingListener, IMoGoAutopilotStatusListener {
|
||||
IMoGoPlanningRottingListener, IMoGoAutopilotStatusListener,
|
||||
IDataCenterBizListener {
|
||||
|
||||
companion object {
|
||||
private const val TAG = "TravelRealityView"
|
||||
@@ -227,6 +231,9 @@ class TravelRealityView @JvmOverloads constructor(
|
||||
*/
|
||||
@Volatile
|
||||
private var isSmallMap: Boolean = true
|
||||
|
||||
@Volatile
|
||||
private var isPlayingAnim = false
|
||||
private var iconRes = R.drawable.small_map_car
|
||||
|
||||
@Volatile
|
||||
@@ -236,6 +243,8 @@ class TravelRealityView @JvmOverloads constructor(
|
||||
private var mPolyline: Polyline? = null
|
||||
private var mSmallStartMarker: Marker? = null
|
||||
private var mSmallEndMarker: Marker? = null
|
||||
private var mStartLatLng: LatLng? = null
|
||||
private var mEndLatLng: LatLng? = null
|
||||
|
||||
init {
|
||||
try {
|
||||
@@ -321,6 +330,10 @@ class TravelRealityView @JvmOverloads constructor(
|
||||
this.isSmallMap = isSmallMap
|
||||
}
|
||||
|
||||
fun setIsPlaying(isPlaying: Boolean) {
|
||||
isPlayingAnim = isPlaying
|
||||
}
|
||||
|
||||
fun swapSettings() {
|
||||
if (isSmallMap) {
|
||||
Message.obtain().apply {
|
||||
@@ -329,6 +342,7 @@ class TravelRealityView @JvmOverloads constructor(
|
||||
}
|
||||
// 显示小地图样式
|
||||
changeMapSettings(true)
|
||||
resumeStartEndMarker()
|
||||
globalPathResp?.let {
|
||||
if (it.wayPointsList.size > 0) {
|
||||
drawRotting()
|
||||
@@ -339,6 +353,7 @@ class TravelRealityView @JvmOverloads constructor(
|
||||
hideSmallCarMarker()
|
||||
// 显示行程总览地图样式
|
||||
changeMapSettings(false)
|
||||
resumeStartEndMarker()
|
||||
// 绘制自车
|
||||
mLocation?.let { drawCarMarker(it) }
|
||||
val globalPath = reqData
|
||||
@@ -595,6 +610,7 @@ class TravelRealityView @JvmOverloads constructor(
|
||||
// 注册定位监听
|
||||
CallerChassisLocationGCJ02ListenerManager.addListener("${TAG}${this.hashCode()}", this)
|
||||
CallerAutoPilotStatusListenerManager.addListener("${TAG}${this.hashCode()}", this)
|
||||
CallerDataCenterBizListener.addListener("${TAG}${this.hashCode()}", this)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
@@ -606,6 +622,7 @@ class TravelRealityView @JvmOverloads constructor(
|
||||
CallerChassisLocationGCJ02ListenerManager.removeListener("${TAG}${this.hashCode()}")
|
||||
CallerPlanningRottingListenerManager.removeListener("${TAG}${this.hashCode()}")
|
||||
CallerAutoPilotStatusListenerManager.removeListener("${TAG}${this.hashCode()}")
|
||||
CallerDataCenterBizListener.removeListener("${TAG}${this.hashCode()}")
|
||||
nonFrequentHandler?.looper?.quitSafely()
|
||||
nonFrequentHandler = null
|
||||
travelNetWorkModel.cancelAllRequest()
|
||||
@@ -684,38 +701,6 @@ class TravelRealityView @JvmOverloads constructor(
|
||||
globalData[0].lon
|
||||
)
|
||||
CallerLogger.w("$M_MAP$TAG", "起终点距离为:$distance")
|
||||
// if (distance < 2000) {
|
||||
// roadRange = maxRoadRange
|
||||
// roadWidth = minRoadWidth
|
||||
// globalWidth = minGlobalWidth
|
||||
// } else {
|
||||
// roadRange = minRoadRange
|
||||
// roadWidth = maxRoadWidth
|
||||
// globalWidth = maxGlobalWidth
|
||||
// }
|
||||
val optionList = ArrayList<MarkerOptions>()
|
||||
optionList.add(
|
||||
MarkerOptions().apply {
|
||||
icon(BitmapDescriptorFactory.fromResource(startPointDrawable))
|
||||
position(
|
||||
coordinateConverterWgsToGcj(
|
||||
globalData[0].lat,
|
||||
globalData[0].lon
|
||||
)
|
||||
)
|
||||
}
|
||||
)
|
||||
val endOption = MarkerOptions()
|
||||
endOption.icon(BitmapDescriptorFactory.fromResource(endPointDrawable))
|
||||
endOption.position(
|
||||
coordinateConverterWgsToGcj(
|
||||
globalData[globalData.size - 1].lat,
|
||||
globalData[globalData.size - 1].lon
|
||||
)
|
||||
)
|
||||
optionList.add(endOption)
|
||||
// 绘制起终点
|
||||
drawStartEndMarker(optionList)
|
||||
// 绘制全局轨迹
|
||||
drawPolyline(DRAW_POLY_LINE, globalOptions)
|
||||
}
|
||||
@@ -1523,14 +1508,6 @@ class TravelRealityView @JvmOverloads constructor(
|
||||
clearPolyline()
|
||||
if (mAMap != null) {
|
||||
if (mCoordinatesLatLng.size >= 2) {
|
||||
// 设置开始结束Marker位置
|
||||
mSmallStartMarker!!.position = mCoordinatesLatLng[0]
|
||||
mSmallEndMarker!!.position = mCoordinatesLatLng[mCoordinatesLatLng.size - 1]
|
||||
mSmallStartMarker!!.setToTop()
|
||||
mSmallStartMarker!!.isVisible = true
|
||||
mSmallEndMarker!!.isVisible = true
|
||||
mSmallEndMarker!!.setToTop()
|
||||
|
||||
//存放所有点的经纬度
|
||||
val boundsBuilder = LatLngBounds.Builder()
|
||||
for (i in mCoordinatesLatLng.indices) {
|
||||
@@ -1571,6 +1548,15 @@ class TravelRealityView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private fun hideStartEndMarker() {
|
||||
if (mSmallStartMarker != null) {
|
||||
mSmallStartMarker!!.isVisible = false
|
||||
}
|
||||
if (mSmallEndMarker != null) {
|
||||
mSmallEndMarker!!.isVisible = false
|
||||
}
|
||||
}
|
||||
|
||||
private fun hideSmallCarMarker() {
|
||||
mSmallCarMarker?.isVisible = false
|
||||
}
|
||||
@@ -1702,6 +1688,72 @@ class TravelRealityView @JvmOverloads constructor(
|
||||
return latLngList
|
||||
}
|
||||
|
||||
override fun invokeOchInfo(ochInfo: OchInfo) {
|
||||
super.invokeOchInfo(ochInfo)
|
||||
Log.d(TAG, "invokeOchInfo:$ochInfo")
|
||||
if (ochInfo.type == 0) {
|
||||
val locList = ochInfo.latLonList
|
||||
if (locList.isEmpty() || locList.size < 2) {
|
||||
mStartLatLng = null
|
||||
mEndLatLng = null
|
||||
UiThreadHandler.post {
|
||||
hideStartEndMarker()
|
||||
}
|
||||
} else {
|
||||
// 设置开始结束Marker位置
|
||||
mStartLatLng = coordinateConverterWgsToGcj(
|
||||
locList[0].latitude,
|
||||
locList[0].longitude
|
||||
)
|
||||
mEndLatLng = coordinateConverterWgsToGcj(
|
||||
locList[1].latitude,
|
||||
locList[1].longitude
|
||||
)
|
||||
}
|
||||
if (!isPlayingAnim) {
|
||||
drawStartAndEnd()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun resumeStartEndMarker() {
|
||||
if (mStartLatLng != null && mEndLatLng != null) {
|
||||
drawStartAndEnd()
|
||||
} else {
|
||||
if (isSmallMap) {
|
||||
UiThreadHandler.post {
|
||||
hideStartEndMarker()
|
||||
}
|
||||
} else {
|
||||
drawStartEndMarker(emptyList())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun drawStartAndEnd() {
|
||||
if (isSmallMap) {
|
||||
UiThreadHandler.post {
|
||||
mSmallStartMarker!!.position = mStartLatLng
|
||||
mSmallEndMarker!!.position = mEndLatLng
|
||||
mSmallStartMarker!!.setToTop()
|
||||
mSmallStartMarker!!.isVisible = true
|
||||
mSmallEndMarker!!.isVisible = true
|
||||
mSmallEndMarker!!.setToTop()
|
||||
}
|
||||
} else {
|
||||
val options = ArrayList<MarkerOptions>()
|
||||
options.add(MarkerOptions().also { option ->
|
||||
option.icon(BitmapDescriptorFactory.fromResource(startPointDrawable))
|
||||
option.position(mStartLatLng)
|
||||
})
|
||||
options.add(MarkerOptions().also { option ->
|
||||
option.icon(BitmapDescriptorFactory.fromResource(endPointDrawable))
|
||||
option.position(mEndLatLng)
|
||||
})
|
||||
drawStartEndMarker(options)
|
||||
}
|
||||
}
|
||||
|
||||
interface OnDrawListener {
|
||||
// isEvent为true表示是事件,反之则表示全息路口
|
||||
fun onDraw(eventList: List<EventDrawBean>, isEvent: Boolean)
|
||||
|
||||
Reference in New Issue
Block a user