diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MoGoObuProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MoGoObuProvider.kt
index 29eb90cdbc..0e6f1f200d 100644
--- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MoGoObuProvider.kt
+++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MoGoObuProvider.kt
@@ -20,7 +20,6 @@ import com.mogo.support.obu.MogoObuManager
@Route(path = MogoServicePaths.PATH_V2X_OBU_MOGO)
class MoGoObuProvider : IMoGoObuProvider {
private val TAG = "MoGoObuProvider"
-
private var mContext: Context? = null
private val taxiObuIp = "192.168.1.199" //obu的taxi和bus的ip已经全部统一成1网段ip
@@ -36,10 +35,11 @@ class MoGoObuProvider : IMoGoObuProvider {
MogoObuDcCombineManager.INSTANCE.init(context)
CallerLogger.d("$M_OBU$TAG", "初始化蘑菇自研OBU…… localIp = " + CommonUtils.getLocalIPAddress())
- //bus乘客版本obu功能去掉,大理项目需要全部车辆接收,不在限制
+ //bus乘客版本obu功能去掉,大理项目需要全部车辆接收,不再限制
mContext = context
mContext?.let {
- val ipAddress = SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, taxiObuIp)
+ val ipAddress =
+ SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, taxiObuIp)
//mogo obu
MogoPrivateObuNewManager.INSTANCE.connectObu(
it,
@@ -53,32 +53,28 @@ class MoGoObuProvider : IMoGoObuProvider {
* 通过控制面板设置ip,进行传递
*/
override fun connect(ipAddress: String) {
- if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)
- && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)
- ) {
- //不处理
- } else {
- mContext?.let {
- // 保存本地OBU IP地址
- SharedPrefsMgr.getInstance(it).putString(MoGoConfig.OBU_IP, ipAddress)
+ mContext?.let {
+ // 保存本地OBU IP地址
+ SharedPrefsMgr.getInstance(it).putString(MoGoConfig.OBU_IP, ipAddress)
- //连接 mogo obu
- MogoPrivateObuNewManager.INSTANCE.connectObu(
- it,
- ipAddress,
- CommonUtils.getIpAddressString()
- )
-
- }
+ //连接 mogo obu
+ MogoPrivateObuNewManager.INSTANCE.connectObu(
+ it,
+ ipAddress,
+ CommonUtils.getIpAddressString()
+ )
}
}
override fun disConnect() {
- MogoPrivateObuNewManager.INSTANCE.disconnect()
+ MogoPrivateObuNewManager.INSTANCE.disConnectObu()
}
override fun isConnected(): Boolean {
- return MogoObuManager.getInstance().connectStatus == 1
+ return MogoPrivateObuNewManager.INSTANCE.isConnected()
}
+ override fun setObuLog(isChecked: Boolean) {
+ MogoPrivateObuNewManager.INSTANCE.setObuLog(isChecked)
+ }
}
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt
index 71a0eab932..7ab13fcfb4 100644
--- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt
+++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt
@@ -29,9 +29,11 @@ import com.mogo.support.obu.ObuBase
import com.mogo.support.obu.ObuScene
import com.mogo.support.obu.constants.MogoObuComType
import com.mogo.support.obu.constants.MogoObuConstants
+import com.mogo.support.obu.constants.MogoObuLogLevel
import com.mogo.support.obu.constants.MogoObuTopicId
import com.mogo.support.obu.model.*
import com.mogo.support.obu.option.MogoObuCom
+import com.mogo.support.obu.option.MogoObuLog
import com.mogo.support.obu.option.MogoObuOptions
import com.zhidao.support.obu.ObuManager
import com.zhidao.support.obu.OnObuListener
@@ -74,7 +76,7 @@ class MogoPrivateObuNewManager private constructor() {
.build()
//每次连接的时候如果连接连接了,先断开,防止ip改变等导致的连接失败
- if (ObuManager.getInstance().connectStatus == 1) {
+ if (ObuManager.getInstance().connectStatus == MogoObuConstants.CONNECT_STATUS.CONNECTED) {
try {
ObuManager.getInstance().disconnect()
} catch (e: Exception) {
@@ -84,12 +86,32 @@ class MogoPrivateObuNewManager private constructor() {
ObuManager.getInstance().connect(options)
}
- fun getMogoObuListener(): OnObuListener {
- return mogoObuListener
+ /**
+ * 断开新obu
+ */
+ fun disConnectObu() {
+ try {
+ ObuManager.getInstance().disconnect()
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
}
- fun disconnect() {
- ObuManager.getInstance().disconnect()
+ /**
+ * 新obu是否连接
+ */
+ fun isConnected(): Boolean {
+ return ObuManager.getInstance().connectStatus == MogoObuConstants.CONNECT_STATUS.CONNECTED
+ }
+
+ fun setObuLog(isChecked: Boolean) {
+ ObuManager.getInstance().setEnableLog(isChecked)
+ val builder: com.mogo.support.obu.option.MogoObuLog.Builder =
+ MogoObuLog.newBuilder().setEnableStdio(isChecked)
+ if (isChecked) {
+ builder.setStdioLevel(MogoObuLogLevel.DBG)
+ }
+ ObuManager.getInstance().logConfig(builder.build())
}
private val mogoObuListener: OnObuListener = object : OnObuListener {
@@ -133,15 +155,16 @@ class MogoPrivateObuNewManager private constructor() {
* v2v预警信息 CvxRvInfoIndInfo CvxV2vThreatIndInfo 他车
*/
override fun onObuRvWarning(data: ObuScene.RvWarningData) {
-// if (HmiBuildConfig.isShowObuV2vView) { //TODO 临时需要关闭v2v开关
- if (data.warningMsg != null && !data.warningMsg.warningDataList.isNullOrEmpty()) {
- // 更新数据,远车数据,之前要匹配uuid
- TrafficDataConvertUtilsNew.cvxRvInfoIndInfo2TrafficData(data.vehBasicsMsg)?.let {
- CallerMapUIServiceManager.getMarkerService()?.updateITrafficLocationInfo(it)
- }
+ if (HmiBuildConfig.isShowObuV2vView) {
+ if (data.warningMsg != null) {
+ // 更新数据,远车数据,之前要匹配uuid
+ TrafficDataConvertUtilsNew.cvxRvInfoIndInfo2TrafficData(data.vehBasicsMsg)
+ ?.let {
+ CallerMapUIServiceManager.getMarkerService()
+ ?.updateITrafficLocationInfo(it)
+ }
- CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", data.toString())
- data.let {
+ CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", data.toString())
//预警信息,预警类型 threat_level 2、3
data.vehBasicsMsg?.let {
//预警方位
@@ -150,14 +173,12 @@ class MogoPrivateObuNewManager private constructor() {
var appId = ""
var level = -1
var status = -1
- data.warningMsg?.let {
- if (data.warningMsg.warningDataList != null && data.warningMsg.warningDataList.size > 0) {
- level = data.warningMsg.warningDataList[0].warningLevel
- appId = data.warningMsg.warningDataList[0].warningType.toString()
- status = data.warningMsg.warningDataList[0].status
- //拼凑数据
- handleSdkObu(appId, direction, status, level, data)
- }
+ if (data.warningMsg.warningDataList != null && data.warningMsg.warningDataList.size > 0) {
+ level = data.warningMsg.warningDataList[0].warningLevel
+ appId = data.warningMsg.warningDataList[0].warningType.toString()
+ status = data.warningMsg.warningDataList[0].status
+ //拼凑数据
+ handleSdkObu(appId, direction, status, level, data)
}
CallerLogger.d(
@@ -169,224 +190,230 @@ class MogoPrivateObuNewManager private constructor() {
}
}
}
-// }
}
/**
* 红绿灯预警信息 CvxIvpThreatIndInfo
*/
override fun onObuSpatWarning(data: ObuScene.SpatWarningData) {
- handlerTrafficLight(
- data.warningType,
- data.status,
- data.lightsList
- )
+ if (HmiBuildConfig.isShowObuV2iView) {
+ handlerTrafficLight(
+ data.warningType,
+ data.status,
+ data.lightsList
+ )
+ }
}
/**
* RSI预警信息 onMogoObuRsiWarning(交通标志预警(前方限速、前方学校等等),交通事件预警(前方拥堵、前方积水等等))
*/
override fun onObuRsiWarning(data: ObuScene.RsiWarningData) {
-// if (HmiBuildConfig.isShowObuV2iView) {
- if (data.warningMsgList != null && data.warningMsgList.size > 0) {
- var alertContent = ""
- var ttsContent = ""
- var appId = data.warningMsgList[0].sceneType.toString()
- val status = data.status
- val level = data.warningMsgList[0].warningLevel
- val direction = getMessageDirection(data.warningMsgList[0].targetPosition)
- CallerLogger.d(
- "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}",
- "onMogoObuRsiWarning appId = $appId --status = $status --level = $level -- eventSerialNum = ${data.warningMsgList[0].eventSerialNum} ---signSerialNum = ${data.warningMsgList[0].signSerialNum} --- direction = $direction -- targetPosition = ${data.warningMsgList[0].targetPosition}"
- )
+ if (HmiBuildConfig.isShowObuV2iView) {
+ if (data.warningMsgList != null && data.warningMsgList.size > 0) {
+ var alertContent = ""
+ var ttsContent = ""
+ var appId = data.warningMsgList[0].sceneType.toString()
+ val status = data.status
+ val level = data.warningMsgList[0].warningLevel
+ val direction = getMessageDirection(data.warningMsgList[0].targetPosition)
+ CallerLogger.d(
+ "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}",
+ "onMogoObuRsiWarning appId = $appId --status = $status --level = $level -- eventSerialNum = ${data.warningMsgList[0].eventSerialNum} ---signSerialNum = ${data.warningMsgList[0].signSerialNum} --- direction = $direction -- targetPosition = ${data.warningMsgList[0].targetPosition}"
+ )
- if (appId != "0") {
- when (appId) {
- // 道路危险情况预警
- MogoObuConstants.RSI_SCENE_TYPE.HLW.toString() -> {
- when (data.warningMsgList[0].eventSerialNum) {
- MogoObuConstants.RTE.RTI_TYPE_BREAKDOWN -> {//车辆故障
- appId =
- EventTypeEnumNew.TYPE_USECASE_ID_BREAKDOWN_WARNING.poiType
- }
- MogoObuConstants.RTE.RTI_TYPE_ROAD_WATER -> { //道路积水
- appId = EventTypeEnumNew.FOURS_PONDING.poiType
- }
- MogoObuConstants.RTE.RTI_TYPE_PARKING_VIOLATION -> { //异常停车
- appId = EventTypeEnumNew.TYPE_USECASE_ID_ROAD_PARKING.poiType
- }
+ if (appId != "0") {
+ when (appId) {
+ // 道路危险情况预警
+ MogoObuConstants.RSI_SCENE_TYPE.HLW.toString() -> {
+ when (data.warningMsgList[0].eventSerialNum) {
+ MogoObuConstants.RTE.RTI_TYPE_BREAKDOWN -> {//车辆故障
+ appId =
+ EventTypeEnumNew.TYPE_USECASE_ID_BREAKDOWN_WARNING.poiType
+ }
+ MogoObuConstants.RTE.RTI_TYPE_ROAD_WATER -> { //道路积水
+ appId = EventTypeEnumNew.FOURS_PONDING.poiType
+ }
+ MogoObuConstants.RTE.RTI_TYPE_PARKING_VIOLATION -> { //异常停车
+ appId =
+ EventTypeEnumNew.TYPE_USECASE_ID_ROAD_PARKING.poiType
+ }
// MogoObuConstants.RTE.RTI_TYPE_CONSTRUCTION_RTE -> { //施工占道,和标牌重复
// appId = EventTypeEnumNew.FOURS_ROAD_WORK.poiType
// }
- MogoObuConstants.RTE.RTI_TYPE_SPEEDING -> { //超速行驶
- appId = EventTypeEnumNew.TYPE_USECASE_ID_SLW.poiType
- }
- MogoObuConstants.RTE.RTI_TYPE_RETRIGRADE -> { //车辆逆行
- appId =
- EventTypeEnumNew.TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.poiType
+ MogoObuConstants.RTE.RTI_TYPE_SPEEDING -> { //超速行驶
+ appId = EventTypeEnumNew.TYPE_USECASE_ID_SLW.poiType
+ }
+ MogoObuConstants.RTE.RTI_TYPE_RETRIGRADE -> { //车辆逆行
+ appId =
+ EventTypeEnumNew.TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.poiType
+ }
}
+ alertContent = EventTypeEnumNew.getWarningContent(appId)
+ ttsContent = EventTypeEnumNew.getWarningTts(appId)
+ alertContent = String.format( //事件才有影响范围
+ alertContent,
+ Math.round(data.warningMsgList[0].distance).toString(),
+ Math.round(data.warningMsgList[0].eventRadius).toString()
+ )
+ ttsContent = String.format(
+ ttsContent,
+ Math.round(data.warningMsgList[0].distance).toString(),
+ Math.round(data.warningMsgList[0].eventRadius).toString()
+ )
}
- alertContent = EventTypeEnumNew.getWarningContent(appId)
- ttsContent = EventTypeEnumNew.getWarningTts(appId)
- alertContent = String.format( //事件才有影响范围
- alertContent,
- Math.round(data.warningMsgList[0].distance).toString(),
- Math.round(data.warningMsgList[0].eventRadius).toString()
- )
- ttsContent = String.format(
- ttsContent,
- Math.round(data.warningMsgList[0].distance).toString(),
- Math.round(data.warningMsgList[0].eventRadius).toString()
- )
- }
- //车内标牌
- MogoObuConstants.RSI_SCENE_TYPE.IVS.toString() -> {
- when (data.warningMsgList[0].signSerialNum) {
- MogoObuConstants.RTS.RTI_TYPE_SHAPR_TURNS -> { //急转弯
- appId = EventTypeEnumNew.TYPE_ID_SHAPR_TURNS.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_BRIDGE -> { //桥梁
- appId = EventTypeEnumNew.TYPE_ID_BRIDGE.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_PEDESTRIAN -> { //行人
- appId = EventTypeEnumNew.TYPE_ID_PEDESTRIAN.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_SLIPPERY_ROAD -> { //路滑
- appId = EventTypeEnumNew.TYPE_ID_SLIPPERY_ROAD.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_TUNNEL -> { //隧道
- appId = EventTypeEnumNew.TYPE_ID_TUNNEL.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_FERRY -> { //渡轮
- appId = EventTypeEnumNew.TYPE_ID_FERRY.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_UNEVEN_ROAD -> { //路面不平
- appId = EventTypeEnumNew.TYPE_ID_UNEVEN_ROAD.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_NON_MOTOR_VEHICLE -> { //非机动车
- appId = EventTypeEnumNew.TYPE_ID_NON_MOTOR_VEHICLE.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_OBSTACLE -> { //障碍
- appId = EventTypeEnumNew.TYPE_ID_OBSTACLE.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_CONSTRUCTION -> { //施工
- appId = EventTypeEnumNew.TYPE_FOURS_ROAD_WORK.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_VEHICLE_QUEUE -> { //车队
- appId = EventTypeEnumNew.TYPE_VEHICLE_QUEUE.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_NO_PASSING -> { //不通
- appId = EventTypeEnumNew.TYPE_NO_PASSING.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_NO_TURNING_AROUND -> { //禁止掉头
- appId = EventTypeEnumNew.TYPE_NO_TURNING_AROUND.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_NO_STOPPING -> { //禁止停车
- appId = EventTypeEnumNew.TYPE_USECASE_ID_ROAD_NO_PARKING.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_NO_TOOTING -> { //禁止鸣笛
- appId = EventTypeEnumNew.TYPE_USECASE_ID_ROAD_NO_TOOTING.poiType
- }
+ //车内标牌
+ MogoObuConstants.RSI_SCENE_TYPE.IVS.toString() -> {
+ when (data.warningMsgList[0].signSerialNum) {
+ MogoObuConstants.RTS.RTI_TYPE_SHAPR_TURNS -> { //急转弯
+ appId = EventTypeEnumNew.TYPE_ID_SHAPR_TURNS.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_BRIDGE -> { //桥梁
+ appId = EventTypeEnumNew.TYPE_ID_BRIDGE.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_PEDESTRIAN -> { //行人
+ appId = EventTypeEnumNew.TYPE_ID_PEDESTRIAN.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_SLIPPERY_ROAD -> { //路滑
+ appId = EventTypeEnumNew.TYPE_ID_SLIPPERY_ROAD.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_TUNNEL -> { //隧道
+ appId = EventTypeEnumNew.TYPE_ID_TUNNEL.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_FERRY -> { //渡轮
+ appId = EventTypeEnumNew.TYPE_ID_FERRY.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_UNEVEN_ROAD -> { //路面不平
+ appId = EventTypeEnumNew.TYPE_ID_UNEVEN_ROAD.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_NON_MOTOR_VEHICLE -> { //非机动车
+ appId = EventTypeEnumNew.TYPE_ID_NON_MOTOR_VEHICLE.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_OBSTACLE -> { //障碍
+ appId = EventTypeEnumNew.TYPE_ID_OBSTACLE.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_CONSTRUCTION -> { //施工
+ appId = EventTypeEnumNew.TYPE_FOURS_ROAD_WORK.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_VEHICLE_QUEUE -> { //车队
+ appId = EventTypeEnumNew.TYPE_VEHICLE_QUEUE.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_NO_PASSING -> { //不通
+ appId = EventTypeEnumNew.TYPE_NO_PASSING.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_NO_TURNING_AROUND -> { //禁止掉头
+ appId = EventTypeEnumNew.TYPE_NO_TURNING_AROUND.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_NO_STOPPING -> { //禁止停车
+ appId =
+ EventTypeEnumNew.TYPE_USECASE_ID_ROAD_NO_PARKING.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_NO_TOOTING -> { //禁止鸣笛
+ appId =
+ EventTypeEnumNew.TYPE_USECASE_ID_ROAD_NO_TOOTING.poiType
+ }
// MogoObuConstants.RTS.RTI_TYPE_SPEED_LIMIT -> { //限速
// appId =
// EventTypeEnumNew.TYPE_USECASE_ID_ROAD_SPEED_LIMIT.poiType
// }
- MogoObuConstants.RTS.RTI_TYPE_BUS_WARNING -> { //公交提醒
- appId = EventTypeEnumNew.TYPE_USECASE_ID_BUS_WARNING.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_NARROW_RIGHT -> { //右侧变窄/车道数减少
- appId = EventTypeEnumNew.TYPE_USECASE_ID_NARROW_RIGHT.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_GAS_STATION -> { //加油站
- appId = EventTypeEnumNew.TYPE_USECASE_ID_GAS_STATION.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_SCHOOL -> { //学校
- appId =
- EventTypeEnumNew.TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType
- }
- MogoObuConstants.RTS.RTI_TYPE_ACCIDENT -> { //事故
- appId = EventTypeEnumNew.TYPE_USECASE_ID_ACCIDENT.poiType
+ MogoObuConstants.RTS.RTI_TYPE_BUS_WARNING -> { //公交提醒
+ appId = EventTypeEnumNew.TYPE_USECASE_ID_BUS_WARNING.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_NARROW_RIGHT -> { //右侧变窄/车道数减少
+ appId =
+ EventTypeEnumNew.TYPE_USECASE_ID_NARROW_RIGHT.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_GAS_STATION -> { //加油站
+ appId = EventTypeEnumNew.TYPE_USECASE_ID_GAS_STATION.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_SCHOOL -> { //学校
+ appId =
+ EventTypeEnumNew.TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType
+ }
+ MogoObuConstants.RTS.RTI_TYPE_ACCIDENT -> { //事故
+ appId = EventTypeEnumNew.TYPE_USECASE_ID_ACCIDENT.poiType
+ }
}
+
+ alertContent = EventTypeEnumNew.getWarningContent(appId)
+ ttsContent = EventTypeEnumNew.getWarningTts(appId)
+ alertContent = String.format( //标牌是没有影响范围的
+ alertContent,
+ Math.round(data.warningMsgList[0].distance).toString()
+ )
+ ttsContent = String.format(
+ ttsContent,
+ Math.round(data.warningMsgList[0].distance).toString()
+ )
}
- alertContent = EventTypeEnumNew.getWarningContent(appId)
- ttsContent = EventTypeEnumNew.getWarningTts(appId)
- alertContent = String.format( //标牌是没有影响范围的
- alertContent,
- Math.round(data.warningMsgList[0].distance).toString()
- )
- ttsContent = String.format(
- ttsContent,
- Math.round(data.warningMsgList[0].distance).toString()
- )
- }
-
- // 拥堵
- MogoObuConstants.RSI_SCENE_TYPE.TJW.toString() -> {
- appId = EventTypeEnumNew.TYPE_USECASE_ID_TJW.poiType
- alertContent = EventTypeEnumNew.getWarningContent(appId)
- ttsContent = EventTypeEnumNew.getWarningTts(appId)
- alertContent = String.format( //事件才有影响范围
- alertContent,
- Math.round(data.warningMsgList[0].distance).toString(),
- Math.round(data.warningMsgList[0].eventRadius).toString()
- )
- ttsContent = String.format(
- ttsContent,
- Math.round(data.warningMsgList[0].distance).toString(),
- Math.round(data.warningMsgList[0].eventRadius).toString()
- )
- }
-
- //限速预警, ADD处理一次
- MogoObuConstants.RSI_SCENE_TYPE.SLW.toString() -> {
- appId = EventTypeEnumNew.TYPE_USECASE_ID_ROAD_SPEED_LIMIT.poiType
- alertContent = EventTypeEnumNew.getWarningContent(appId)
- ttsContent = EventTypeEnumNew.getWarningTts(appId)
- }
- }
-
- CallerLogger.d(
- "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}",
- "new onMogoObuRsiWarning appId = $appId ---status = $status --- ttsContent = $ttsContent --alertContent = $alertContent -- eventSerialNum = ${data.warningMsgList[0].eventSerialNum} ---signSerialNum = ${data.warningMsgList[0].signSerialNum} ---direction = ${direction.direction} --distance = ${
- Math.round(data.warningMsgList[0].distance)
- } ---eventRadius = ${Math.round(data.warningMsgList[0].eventRadius)} --speedMaxLimit = ${data.warningMsgList[0].speedMaxLimit.toInt()}"
- )
-
- when (status) {
- MogoObuConstants.STATUS.ADD -> { // 添加
- //不显示弹框,语音提示,数据在消息盒子里面展示,此处不在处理弹框
- if (alertContent.isEmpty() || ttsContent.isEmpty()) {
- return
+ // 拥堵
+ MogoObuConstants.RSI_SCENE_TYPE.TJW.toString() -> {
+ appId = EventTypeEnumNew.TYPE_USECASE_ID_TJW.poiType
+ alertContent = EventTypeEnumNew.getWarningContent(appId)
+ ttsContent = EventTypeEnumNew.getWarningTts(appId)
+ alertContent = String.format( //事件才有影响范围
+ alertContent,
+ Math.round(data.warningMsgList[0].distance).toString(),
+ Math.round(data.warningMsgList[0].eventRadius).toString()
+ )
+ ttsContent = String.format(
+ ttsContent,
+ Math.round(data.warningMsgList[0].distance).toString(),
+ Math.round(data.warningMsgList[0].eventRadius).toString()
+ )
}
- saveObuData(appId, alertContent, ttsContent)
- showWarning(appId, alertContent, ttsContent, direction)
- // 更新数据
- TrafficDataConvertUtilsNew.cvxRtiThreatIndInfo2TrafficData(data)?.let {
- CallerMapUIServiceManager.getMarkerService()
- ?.updateITrafficThreatLevelInfo(it)
+ //限速预警, ADD处理一次
+ MogoObuConstants.RSI_SCENE_TYPE.SLW.toString() -> {
+ appId = EventTypeEnumNew.TYPE_USECASE_ID_ROAD_SPEED_LIMIT.poiType
+ alertContent = EventTypeEnumNew.getWarningContent(appId)
+ ttsContent = EventTypeEnumNew.getWarningTts(appId)
}
}
- MogoObuConstants.STATUS.UPDATE -> { // 更新
- }
+ CallerLogger.d(
+ "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}",
+ "new onMogoObuRsiWarning appId = $appId ---status = $status --- ttsContent = $ttsContent --alertContent = $alertContent -- eventSerialNum = ${data.warningMsgList[0].eventSerialNum} ---signSerialNum = ${data.warningMsgList[0].signSerialNum} ---direction = ${direction.direction} --distance = ${
+ Math.round(data.warningMsgList[0].distance)
+ } ---eventRadius = ${Math.round(data.warningMsgList[0].eventRadius)} --speedMaxLimit = ${data.warningMsgList[0].speedMaxLimit.toInt()}"
+ )
- MogoObuConstants.STATUS.DELETE -> { // 删除
- // 更新数据
- TrafficDataConvertUtilsNew.cvxRtiThreatIndInfo2TrafficData(data)
- ?.let {
- // 事件结束,还原车辆颜色
- it.threatLevel = 0x01
- CallerMapUIServiceManager.getMarkerService()
- ?.updateITrafficInfo(it)
+ when (status) {
+ MogoObuConstants.STATUS.ADD -> { // 添加
+ //不显示弹框,语音提示,数据在消息盒子里面展示,此处不在处理弹框
+ if (alertContent.isEmpty() || ttsContent.isEmpty()) {
+ return
}
+ saveObuData(appId, alertContent, ttsContent)
+ showWarning(appId, alertContent, ttsContent, direction)
+
+ // 更新数据
+ TrafficDataConvertUtilsNew.cvxRtiThreatIndInfo2TrafficData(data)
+ ?.let {
+ CallerMapUIServiceManager.getMarkerService()
+ ?.updateITrafficThreatLevelInfo(it)
+ }
+ }
+
+ MogoObuConstants.STATUS.UPDATE -> { // 更新
+ }
+
+ MogoObuConstants.STATUS.DELETE -> { // 删除
+ // 更新数据
+ TrafficDataConvertUtilsNew.cvxRtiThreatIndInfo2TrafficData(data)
+ ?.let {
+ // 事件结束,还原车辆颜色
+ it.threatLevel = 0x01
+ CallerMapUIServiceManager.getMarkerService()
+ ?.updateITrafficInfo(it)
+ }
+ }
}
}
}
}
-// }
}
/**
@@ -405,133 +432,135 @@ class MogoPrivateObuNewManager private constructor() {
"$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}",
"onMogoObuRsmWarning ------> ${data.toString()}"
)
-// if (HmiBuildConfig.isShowObuV2iView) {
- if (HmiBuildConfig.isShowObuWeaknessTrafficView) {
- // 交通参与者类型 0x0:未知 UNKNOWN | 1机动车 2:非机动车 NON_MOTOR | 3:行人 PEDESTRIAN 4:obu
- if (data != null && data.participant != null) {
- var v2xType = ""
- if (data.participant.ptcType == 1) { //机动车
- v2xType =
- EventTypeEnumNew.TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.poiType
- } else if (data.participant.ptcType == 2) { //非机动车
- v2xType =
- EventTypeEnumNew.TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiType
- } else if (data.participant.ptcType == 3) { //行人
- v2xType =
- EventTypeEnumNew.TYPE_USECASE_ID_VRUCW_PERSON.poiType
- } else { //未知
- v2xType = EventTypeEnumNew.TYPE_ERROR.poiType
- }
-
- val ttsContent = EventTypeEnumNew.getWarningTts(v2xType)
- val alertContent =
- EventTypeEnumNew.getWarningContent(v2xType)
- var level = -1
- val direction = getMessageDirection(data.participant.targetPosition)
-
- //物体数据绘制
- CallerLogger.d(
- "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}",
- "onMogoObuRsmWarning ---- data.status = ${data.status} ---data.participant.ptcId = ${data.participant.ptcId} ---data.participant.ptcType = ${data.participant.ptcType} ---data.warningMsg = ${data.warningMsg} -----data = ${data.toString()}"
- )
- when (data.status) {
- MogoObuConstants.STATUS.ADD -> { // 添加
- // 更新数据,模型变色的时候是不是update,如果不是更新,可能导致模型不变色,(add的时候,是否有level高的) TODO
- TrafficDataConvertUtilsNew.cvxPtcThreatIndInfo2TrafficData(data)
- ?.let {
- CallerMapUIServiceManager.getMarkerService()
- ?.updateITrafficThreatLevelInfo(it)
- }
+ if (HmiBuildConfig.isShowObuV2iView) {
+ if (HmiBuildConfig.isShowObuWeaknessTrafficView) {
+ // 交通参与者类型 0x0:未知 UNKNOWN | 1机动车 2:非机动车 NON_MOTOR | 3:行人 PEDESTRIAN 4:obu
+ if (data != null && data.participant != null) {
+ var v2xType = ""
+ if (data.participant.ptcType == 1) { //机动车
+ v2xType =
+ EventTypeEnumNew.TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.poiType
+ } else if (data.participant.ptcType == 2) { //非机动车
+ v2xType =
+ EventTypeEnumNew.TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiType
+ } else if (data.participant.ptcType == 3) { //行人
+ v2xType =
+ EventTypeEnumNew.TYPE_USECASE_ID_VRUCW_PERSON.poiType
+ } else { //未知
+ v2xType = EventTypeEnumNew.TYPE_ERROR.poiType
}
- MogoObuConstants.STATUS.UPDATE -> { // 更新
- }
+ val ttsContent = EventTypeEnumNew.getWarningTts(v2xType)
+ val alertContent =
+ EventTypeEnumNew.getWarningContent(v2xType)
+ var level = -1
+ val direction = getMessageDirection(data.participant.targetPosition)
- MogoObuConstants.STATUS.DELETE -> { // 删除
- // 更新数据 TODO 删除原来的,改变颜色,删除marker。不影响别的模型添加
- TrafficDataConvertUtilsNew.cvxPtcThreatIndInfo2TrafficData(data)
- ?.let {
- // 事件结束,还原交通参与者颜色
- it.threatLevel = 0x01
- CallerMapUIServiceManager.getMarkerService()
- ?.updateITrafficThreatLevelInfo(it)
- }
-
- //删除弱势交通元素
- CallerMapUIServiceManager.getMarkerService()
- ?.removeCvxRvInfoIndInfo(data.participant.ptcId.toString())
- }
- }
-
- //预警status
- if (data.warningMsg != null && data.warningMsg.warningDataList != null && data.warningMsg.warningDataList.size > 0) {
- level = data.warningMsg.warningDataList[0].warningLevel //默认是1个
+ //物体数据绘制
CallerLogger.d(
"$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}",
- "onMogoObuRsmWarning ---status---> ${data.status} ---data.warningMsg.warningData[0].status = ${data.warningMsg.warningDataList[0].status} ---v2xType = $v2xType ---alertContent = $alertContent ---ttsContent = $ttsContent ---level = $level"
+ "onMogoObuRsmWarning ---- data.status = ${data.status} ---data.participant.ptcId = ${data.participant.ptcId} ---data.participant.ptcType = ${data.participant.ptcType} ---data.warningMsg = ${data.warningMsg} -----data = ${data.toString()}"
)
- when (data.warningMsg.warningDataList[0].status) {
+ when (data.status) {
MogoObuConstants.STATUS.ADD -> { // 添加
- //更新模型的颜色
+ // 更新数据,模型变色的时候是不是update,如果不是更新,可能导致模型不变色,(add的时候,是否有level高的) TODO
TrafficDataConvertUtilsNew.cvxPtcThreatIndInfo2TrafficData(data)
?.let {
CallerMapUIServiceManager.getMarkerService()
?.updateITrafficThreatLevelInfo(it)
}
-
- if (alertContent.isEmpty() || ttsContent.isEmpty()) {
- return
- }
- saveObuData(v2xType, alertContent, ttsContent)
- showWarning(v2xType, alertContent, ttsContent, direction)
}
- MogoObuConstants.STATUS.UPDATE -> {// 更新
+ MogoObuConstants.STATUS.UPDATE -> { // 更新
}
MogoObuConstants.STATUS.DELETE -> { // 删除
- // 关闭警告红边
- CallerHmiManager.dismissWarning(WarningDirectionEnum.ALERT_WARNING_ALL)
+ // 更新数据 TODO 删除原来的,改变颜色,删除marker。不影响别的模型添加
+ TrafficDataConvertUtilsNew.cvxPtcThreatIndInfo2TrafficData(data)
+ ?.let {
+ // 事件结束,还原交通参与者颜色
+ it.threatLevel = 0x01
+ CallerMapUIServiceManager.getMarkerService()
+ ?.updateITrafficThreatLevelInfo(it)
+ }
+
//删除弱势交通元素
CallerMapUIServiceManager.getMarkerService()
?.removeCvxRvInfoIndInfo(data.participant.ptcId.toString())
}
}
+
+ //预警status
+ if (data.warningMsg != null && data.warningMsg.warningDataList != null && data.warningMsg.warningDataList.size > 0) {
+ level = data.warningMsg.warningDataList[0].warningLevel //默认是1个
+ CallerLogger.d(
+ "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}",
+ "onMogoObuRsmWarning ---status---> ${data.status} ---data.warningMsg.warningData[0].status = ${data.warningMsg.warningDataList[0].status} ---v2xType = $v2xType ---alertContent = $alertContent ---ttsContent = $ttsContent ---level = $level"
+ )
+ when (data.warningMsg.warningDataList[0].status) {
+ MogoObuConstants.STATUS.ADD -> { // 添加
+ //更新模型的颜色
+ TrafficDataConvertUtilsNew.cvxPtcThreatIndInfo2TrafficData(data)
+ ?.let {
+ CallerMapUIServiceManager.getMarkerService()
+ ?.updateITrafficThreatLevelInfo(it)
+ }
+
+ if (alertContent.isEmpty() || ttsContent.isEmpty()) {
+ return
+ }
+ saveObuData(v2xType, alertContent, ttsContent)
+ showWarning(v2xType, alertContent, ttsContent, direction)
+ }
+
+ MogoObuConstants.STATUS.UPDATE -> {// 更新
+ }
+
+ MogoObuConstants.STATUS.DELETE -> { // 删除
+ // 关闭警告红边
+ CallerHmiManager.dismissWarning(WarningDirectionEnum.ALERT_WARNING_ALL)
+ //删除弱势交通元素
+ CallerMapUIServiceManager.getMarkerService()
+ ?.removeCvxRvInfoIndInfo(data.participant.ptcId.toString())
+ }
+ }
+ }
}
}
}
-// }
}
/**
* 地图匹配 是OBU算法输出地图匹配结果,主车匹配道路哪条路或者哪条车道
*/
override fun onObuMapMath(data: ObuScene.MapMatchData?) {
- if (data != null) {
- CallerLogger.d(
- "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}",
- "onMogoObuMapMath = ${data.status} --speedMaxLimit = ${(data.speedMaxLimit * 3.6).roundToInt()}"
- )
- when (data.status) {
- MogoObuConstants.STATUS.ADD -> { // 添加
- UiThreadHandler.post {
- if (data.speedMaxLimit > 0) {
- CallerLimitingVelocityListenerManager.invokeUnion(
- (data.speedMaxLimit * 3.6).roundToInt(), DataSourceType.OBU
- )
+ if (HmiBuildConfig.isShowObuV2iView) {
+ if (data != null) {
+ CallerLogger.d(
+ "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}",
+ "onMogoObuMapMath = ${data.status} --speedMaxLimit = ${(data.speedMaxLimit * 3.6).roundToInt()}"
+ )
+ when (data.status) {
+ MogoObuConstants.STATUS.ADD -> { // 添加
+ UiThreadHandler.post {
+ if (data.speedMaxLimit > 0) {
+ CallerLimitingVelocityListenerManager.invokeUnion(
+ (data.speedMaxLimit * 3.6).roundToInt(), DataSourceType.OBU
+ )
+ }
}
}
- }
- MogoObuConstants.STATUS.UPDATE -> { // 更新
- }
+ MogoObuConstants.STATUS.UPDATE -> { // 更新
+ }
- MogoObuConstants.STATUS.DELETE -> { // 删除
- UiThreadHandler.post {
- CallerLimitingVelocityListenerManager.invokeUnion(
- -1,
- DataSourceType.OBU
- )
+ MogoObuConstants.STATUS.DELETE -> { // 删除
+ UiThreadHandler.post {
+ CallerLimitingVelocityListenerManager.invokeUnion(
+ -1,
+ DataSourceType.OBU
+ )
+ }
}
}
}
@@ -543,7 +572,6 @@ class MogoPrivateObuNewManager private constructor() {
* 获取消息的方位 车辆相关
*/
private fun getMessageDirection(targetClassification: Int): WarningDirectionEnum {
- // CallerLogger.d("$M_OBU${TAG_MOGO_NEW_OBU}", "预警红边:预警方向->$targetClassification")
return when (targetClassification) {
MogoObuConstants.VEH_TARGET_POSITION.AHEAD_IN_LANE,
MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_IN_LANE -> WarningDirectionEnum.ALERT_WARNING_TOP //正前方
@@ -589,7 +617,9 @@ class MogoPrivateObuNewManager private constructor() {
if (FunctionBuildConfig.isObuWarningFusionUnion) {
alertContent = "前车距离过近"
ttsContent = "前车距离过近"
- CallerObuWarningListenerManager.invokeTrackerFusionData(ObuManager.getInstance().obuRvToTrackedObject(info))
+ CallerObuWarningListenerManager.invokeTrackerFusionData(
+ ObuManager.getInstance().obuRvToTrackedObject(info)
+ )
} else {
alertContent =
EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_FCW.poiType)
@@ -650,7 +680,7 @@ class MogoPrivateObuNewManager private constructor() {
ttsContent =
EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_LCW.poiType)
v2xType = EventTypeEnumNew.TYPE_USECASE_ID_LCW.poiType
- if (
+ if (
direction == WarningDirectionEnum.ALERT_WARNING_LEFT ||
direction == WarningDirectionEnum.ALERT_WARNING_TOP_LEFT ||
direction == WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT
diff --git a/core/function-impl/mogo-core-function-hmi/build.gradle b/core/function-impl/mogo-core-function-hmi/build.gradle
index 852be9bd7f..5229ec0dd4 100644
--- a/core/function-impl/mogo-core-function-hmi/build.gradle
+++ b/core/function-impl/mogo-core-function-hmi/build.gradle
@@ -68,7 +68,6 @@ dependencies {
// debugImplementation rootProject.ext.dependencies.debugleakcanary
// releaseImplementation rootProject.ext.dependencies.releaseleakcanary
- implementation project(':libraries:mogo-obu')
implementation rootProject.ext.dependencies.arouter
kapt rootProject.ext.dependencies.aroutercompiler
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/map/OfflineMapDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/map/OfflineMapDialog.kt
new file mode 100644
index 0000000000..aa62c470b2
--- /dev/null
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/map/OfflineMapDialog.kt
@@ -0,0 +1,170 @@
+package com.mogo.eagle.core.function.hmi.ui.map
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.view.View
+import android.widget.ImageView
+import android.widget.ProgressBar
+import android.widget.TextView
+import androidx.annotation.MainThread
+import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.core.content.ContextCompat
+import androidx.core.content.res.ResourcesCompat
+import androidx.core.view.marginTop
+import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
+import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
+import com.mogo.eagle.core.function.hmi.R
+import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
+import com.mogo.map.hdcache.IHdCacheListener
+import me.jessyan.autosize.utils.AutoSizeUtils
+
+/**
+ * 离线地图缓存
+ */
+class OfflineMapDialog(context: Context): BaseFloatDialog(context) {
+
+ private var roundRootLayout: ConstraintLayout? = null
+ private var offlineTitleView: TextView? = null
+ private var leftView: TextView? = null
+ private var rightView: TextView? = null
+ private var okView: TextView? = null
+ private var vertLineView: View? = null
+ private var horizontalLineView: View? = null
+ private var cacheTipView: TextView? = null
+
+ private var progressBar: ProgressBar? = null
+ private var downloadPercentView: TextView? = null
+ private var downloadResultImg: ImageView? = null
+
+ private var isLoading = false
+ private var isConfirm = true
+ private var isRetry = false
+
+ init {
+ setContentView(R.layout.dialog_offline_map)
+ setCanceledOnTouchOutside(true)
+
+ initView()
+ }
+
+ private fun initView() {
+ roundRootLayout = findViewById(R.id.roundRootLayout)
+ offlineTitleView = findViewById(R.id.tv_cache_title)
+ progressBar = findViewById(R.id.progressBar)
+ downloadPercentView = findViewById(R.id.tvDownloadProgress)
+ leftView = findViewById(R.id.tv_cache_confirm)
+ rightView = findViewById(R.id.tv_cache_cancel)
+ okView = findViewById(R.id.tv_cache_ok)
+ vertLineView = findViewById(R.id.view_vertical_line)
+ horizontalLineView = findViewById(R.id.view_horizontal_line)
+ cacheTipView = findViewById(R.id.tv_cache_tips)
+ downloadResultImg = findViewById(R.id.iv_download_Status)
+
+ leftView?.setOnClickListener {
+ when {
+ isConfirm -> {
+ cacheHDOfflineData()
+ showNewContent(isLoading = true, false)
+ }
+ else -> {
+ dismiss()
+ }
+ }
+ }
+
+ rightView?.setOnClickListener {
+ when {
+ isRetry -> {
+ cacheHDOfflineData()
+ }
+ else -> {
+ dismiss()
+ }
+ }
+ }
+
+ okView?.setOnClickListener {
+ dismiss()
+ }
+ }
+
+ private fun cacheHDOfflineData() {
+ CallerMapUIServiceManager.cacheHDDataByCity(object : IHdCacheListener {
+ override fun onMapHdCacheProgress(cityId: Int, progress: Double) {
+ updateProgress(progress.toInt())
+ }
+ })
+ }
+
+ @SuppressLint("SetTextI18n")
+ private fun updateProgress(progress: Int) {
+ if (this@OfflineMapDialog.isShowing) {
+ progressBar?.let {
+ if (it.visibility == View.VISIBLE) {
+ it.progress = if (progress in 1..5) 5 else progress
+ }
+ }
+ downloadPercentView?.text = "$progress%"
+ if (progress == 100) {
+ showNewContent(isLoading = false, true)
+ CallerHmiManager.updateHDDataCacheStatus(true)
+ }
+ }
+ }
+
+ private fun change2NewStyle() {
+ roundRootLayout?.layoutParams?.width = AutoSizeUtils.dp2px(context, 1110f)
+ roundRootLayout?.layoutParams?.height = AutoSizeUtils.dp2px(context, 668f)
+
+ val titleParams = offlineTitleView?.layoutParams as ConstraintLayout.LayoutParams
+ titleParams.topMargin = AutoSizeUtils.dp2px(context, 51f)
+
+ val horizontalLineParams = horizontalLineView?.layoutParams as ConstraintLayout.LayoutParams
+ horizontalLineParams.topMargin = AutoSizeUtils.dp2px(context, 374f)
+
+ progressBar?.visibility = View.VISIBLE
+ downloadPercentView?.visibility = View.VISIBLE
+ okView?.visibility = View.VISIBLE
+
+ vertLineView?.visibility = View.GONE
+ leftView?.visibility = View.GONE
+ rightView?.visibility = View.GONE
+ cacheTipView?.visibility = View.INVISIBLE
+ }
+
+ @SuppressLint("UseCompatLoadingForDrawables")
+ private fun showNewContent(isLoading: Boolean, isSuccess: Boolean) {
+ change2NewStyle()
+ when {
+ isLoading -> {
+ okView?.text = context.resources.getString(R.string.cancel)
+ offlineTitleView?.text = context.resources.getString(R.string.offline_downloading)
+ downloadResultImg?.visibility = View.GONE
+ }
+ else -> {
+ downloadResultImg?.visibility = View.VISIBLE
+ when {
+ isSuccess -> {
+ okView?.visibility = View.VISIBLE
+ okView?.text = context.resources.getString(R.string.ok_tip)
+ offlineTitleView?.text = context.resources.getString(R.string.offline_download_success)
+ progressBar?.visibility = View.GONE
+ downloadPercentView?.visibility = View.GONE
+ downloadResultImg?.background = ContextCompat.getDrawable(context, R.drawable.download_success_icon)
+ }
+ else -> {
+ offlineTitleView?.text = context.resources.getString(R.string.offline_download_failure)
+ okView?.visibility = View.GONE
+ progressBar?.visibility = View.GONE
+ downloadPercentView?.visibility = View.GONE
+ leftView?.visibility = View.VISIBLE
+ rightView?.visibility = View.VISIBLE
+ vertLineView?.visibility = View.VISIBLE
+ rightView?.text = context.resources.getString(R.string.retry)
+ downloadResultImg?.background = ContextCompat.getDrawable(context, R.drawable.download_fail_icon)
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt
index 034930adbf..76059bf6c6 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt
@@ -73,9 +73,6 @@ import com.mogo.eagle.core.utilcode.mogo.toast.TipToast
import com.mogo.eagle.core.utilcode.util.*
import com.mogo.map.uicontroller.VisualAngleMode
import com.mogo.map.uicontroller.VisualAngleMode.*
-import com.mogo.support.obu.MogoObuManager
-import com.mogo.support.obu.constants.MogoObuLogLevel
-import com.mogo.support.obu.option.MogoObuLog
import kotlinx.android.synthetic.main.view_debug_setting.view.*
import kotlinx.coroutines.launch
import mogo.telematics.pad.MessagePad
@@ -1204,14 +1201,7 @@ internal class DebugSettingView @JvmOverloads constructor(
* 设置是否输出OBU日志 true-打印日志,false-不打印日志
*/
tbObuLog.setOnCheckedChangeListener { _, isChecked ->
- MogoObuManager.getInstance().setEnableLog(isChecked)
-
- val builder: com.mogo.support.obu.option.MogoObuLog.Builder =
- MogoObuLog.newBuilder().setEnableStdio(isChecked)
- if (isChecked) {
- builder.setStdioLevel(MogoObuLogLevel.DBG)
- }
- MogoObuManager.getInstance().logConfig(builder.build())
+ CallerObuApiManager.setObuLog(isChecked)
}
/**
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 6327b04bed..2b6dadfb77 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
@@ -95,18 +95,19 @@ internal class SOPSettingView @JvmOverloads constructor(
}
/**
- * obu V2V开关
+ * obu V2V开关,默认打开
*/
+ tbObuV2vView.isChecked = HmiBuildConfig.isShowObuV2vView
tbObuV2vView.setOnCheckedChangeListener { _, isChecked ->
// 默认关闭
HmiBuildConfig.isShowObuV2vView = isChecked
}
/**
- * obu V2i开关
+ * obu V2i开关,默认打开
*/
+ tbObuV2iView.isChecked = HmiBuildConfig.isShowObuV2iView
tbObuV2iView.setOnCheckedChangeListener { _, isChecked ->
- // 默认关闭
HmiBuildConfig.isShowObuV2iView = isChecked
}
@@ -174,7 +175,7 @@ internal class SOPSettingView @JvmOverloads constructor(
//OBU控制总开关
tbObu.isChecked = CallerObuApiManager.isConnected()
tbObu.setOnCheckedChangeListener { _, isChecked ->
- if (!isChecked) {
+ if (isChecked) {
CallerObuApiManager.resetObuIpAddress("192.168.1.199")
} else {
//断开链接
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt
index 608c5e94b2..f340aa4891 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt
@@ -184,6 +184,10 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor(
systemVersionView?.showAdUpgradeStatus(ipcUpgradeStateInfo)
}
+ fun updateHDDataCacheStatus(isCached: Boolean) {
+ systemVersionView?.updateHDDataCacheStatus(isCached)
+ }
+
override fun onAttachedToWindow() {
super.onAttachedToWindow()
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt
index 913da911a7..65f2050257 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SystemVersionView.kt
@@ -10,10 +10,15 @@ import com.mogo.eagle.core.data.bindingcar.AdUpgradeStateHelper
import com.mogo.eagle.core.data.bindingcar.IPCUpgradeStateInfo
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener
+import com.mogo.eagle.core.function.api.bindingcar.IMoGoBindingCarListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
+import com.mogo.eagle.core.function.call.bindingcar.CallerBindingCarListenerManager
+import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager
+import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.hmi.R
+import com.mogo.eagle.core.function.hmi.ui.map.OfflineMapDialog
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
import com.mogo.eagle.core.utilcode.util.AppUtils
@@ -50,6 +55,8 @@ class SystemVersionView @JvmOverloads constructor(
private var previousProgress: Int = -1 //前一秒的下载进度,用于计算下载剩余时间
private var currentProgress: Int = -1 //当前已下载包体大小
+ private var isHDCached = false
+
init {
LayoutInflater.from(context).inflate(R.layout.view_system_version, this, true)
initView()
@@ -135,6 +142,16 @@ class SystemVersionView @JvmOverloads constructor(
}
+ ivHDCache.setOnClickListener {
+ if (isHDCached) {// 已缓存
+ ToastUtils.showShort(resources.getString(R.string.offline_had_downloaded))
+ } else {// 未缓存
+ OfflineMapDialog(context).show()
+ }
+ }
+
+ updateHDDataCacheStatus(CallerMapUIServiceManager.isCityDataCached())
+
if(AdUpgradeStateHelper.isConfirmUpgrade()){
//将角标改为“下载中”
ivAdStatus?.setImageResource(R.drawable.icon_downloading)
@@ -239,6 +256,15 @@ class SystemVersionView @JvmOverloads constructor(
}
+ fun updateHDDataCacheStatus(isCached: Boolean) {
+ if (isCached) {
+ ivHDCacheStatus?.setImageResource(R.drawable.icon_latest_version)
+ } else {
+ ivHDCacheStatus?.setImageResource(R.drawable.icon_be_updated)
+ }
+ isHDCached = isCached
+ }
+
/**
* 展示当前鹰眼版本
*/
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/download_fail_icon.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/download_fail_icon.png
new file mode 100644
index 0000000000..809d7ee414
Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/download_fail_icon.png differ
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/download_success_icon.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/download_success_icon.png
new file mode 100644
index 0000000000..f6f1197a93
Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/download_success_icon.png differ
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_be_updated.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_be_updated.png
new file mode 100644
index 0000000000..b9268797cf
Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_be_updated.png differ
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_hd_map.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_hd_map.png
new file mode 100644
index 0000000000..ccbe7ffd56
Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_hd_map.png differ
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/progressbar_corner_bg.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/progressbar_corner_bg.xml
new file mode 100644
index 0000000000..753149f4ea
--- /dev/null
+++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/progressbar_corner_bg.xml
@@ -0,0 +1,43 @@
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_offline_map.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_offline_map.xml
new file mode 100644
index 0000000000..6ae72b0a13
--- /dev/null
+++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/dialog_offline_map.xml
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
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 e9830e19b0..8c7522b317 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
@@ -203,11 +203,13 @@
app:layout_constraintTop_toBottomOf="@id/tbCloudWeaknessTrafficSop"
/>
+
-
+
+
+
+
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml
index 574b9fc2f3..ff8c61e6bf 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml
+++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml
@@ -71,7 +71,5 @@
#FF282F62
#FFFFFF
-
-
-
+ #E63B4577
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml
index f12f7f9bc0..a792f63bf1 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml
+++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml
@@ -65,4 +65,12 @@
车辆将开启自动驾驶,并行驶至:
确认
取消
+ 离线地图缓存提醒
+ 是否缓存最新版本离线地图?
+ 离线地图下载中
+ 离线地图下载成功
+ 离线地图下载失败
+ 当前已为最新版本
+ 确定
+ 重试
diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HmiBuildConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HmiBuildConfig.kt
index 01d8b51754..ffffb227fa 100644
--- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HmiBuildConfig.kt
+++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HmiBuildConfig.kt
@@ -61,14 +61,14 @@ object HmiBuildConfig {
*/
@JvmField
@Volatile
- var isShowObuV2vView = false
+ var isShowObuV2vView = true
/**
* 是否展示obu的v2i
*/
@JvmField
@Volatile
- var isShowObuV2iView = false
+ var isShowObuV2iView = true
/**
* 是否展示obu通过工控机展示的v2i
diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/OperationMsg.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/OperationMsg.kt
index 230e98dca5..75e7be26bd 100644
--- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/OperationMsg.kt
+++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/OperationMsg.kt
@@ -1,8 +1,16 @@
package com.mogo.eagle.core.data.msgbox
+import android.util.Log
+import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import java.io.Serializable
/**
* 运营消息:-1表示初始值
*/
-data class OperationMsg(val timestamp : Long, val content: String, val type: Int = -1): Serializable
+data class OperationMsg(val timestamp : Long, val content: String, val type: Int = -1): Serializable {
+ init {
+ if (content.isEmpty()) {
+ CallerLogger.e("MsgBox", Log.getStackTraceString(Throwable()))
+ }
+ }
+}
diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/V2XMsg.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/V2XMsg.kt
index 374c545563..b4f98777f5 100644
--- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/V2XMsg.kt
+++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/msgbox/V2XMsg.kt
@@ -1,5 +1,7 @@
package com.mogo.eagle.core.data.msgbox
+import android.util.Log
+import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import java.io.Serializable
data class V2XMsg(var type: String = "", var content: String? = "", var tts: String? = ""): Serializable {
@@ -9,5 +11,8 @@ data class V2XMsg(var type: String = "", var content: String? = "", var tts: Str
init {
timeStamp = System.currentTimeMillis()
+ if (content.isNullOrEmpty()) {
+ CallerLogger.e("MsgBox", Log.getStackTraceString(Throwable()))
+ }
}
}
\ No newline at end of file
diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/obu/ObuStatusInfo.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/obu/ObuStatusInfo.kt
index 1331f1a366..42f3a8e029 100644
--- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/obu/ObuStatusInfo.kt
+++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/obu/ObuStatusInfo.kt
@@ -6,11 +6,6 @@ package com.mogo.eagle.core.data.obu
* @date 2021/9/30 5:38 下午
*/
class ObuStatusInfo {
- /**
- * 当前链接的IP地址, 默认地址 192.168.1.199
- */
- var connectIP: String = "192.168.1.199"
-
/**
* OBU SDK 版本
*/
diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt
new file mode 100644
index 0000000000..42b0cadcfc
--- /dev/null
+++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt
@@ -0,0 +1,20 @@
+package com.mogo.eagle.core.function.api.hmi.warning
+
+import android.view.View
+import android.view.ViewGroup
+import com.mogo.eagle.core.data.bindingcar.IPCUpgradeStateInfo
+import com.mogo.eagle.core.data.enums.WarningDirectionEnum
+import com.mogo.eagle.core.data.map.Infrastructure
+import com.mogo.eagle.core.data.notice.NoticeNormalData
+import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData
+import com.mogo.eagle.core.data.report.ReportEntity
+import com.mogo.eagle.core.function.api.hmi.IMoGoHmiViewProxy
+import com.mogo.eagle.core.function.api.hmi.view.IOchBusView
+
+/**
+ * @author xiaoyuzhou
+ * @date 2021/8/2 7:36 下午
+ */
+interface IMoGoWaringProvider : IMoGoHmiViewProxy {
+ fun updateHDDataCacheStatus(isCached: Boolean)
+}
\ No newline at end of file
diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuProvider.kt
index 7f07c4f11e..10251bc371 100644
--- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuProvider.kt
+++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuProvider.kt
@@ -14,4 +14,6 @@ interface IMoGoObuProvider : IMoGoFunctionServerProvider {
fun disConnect()
fun isConnected(): Boolean
+
+ fun setObuLog(isChecked: Boolean)
}
\ No newline at end of file
diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt
index 8339a0c006..b6aca6f544 100644
--- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt
+++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt
@@ -212,4 +212,7 @@ object CallerHmiManager {
hmiProviderApi?.updateStatusBarDownloadView(insert, tag, progress)
}
+ fun updateHDDataCacheStatus(isCached: Boolean) {
+ waringProviderApi?.updateHDDataCacheStatus(isCached)
+ }
}
\ No newline at end of file
diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapUIServiceManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapUIServiceManager.kt
index cb8288ae15..0562c116ee 100644
--- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapUIServiceManager.kt
+++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerMapUIServiceManager.kt
@@ -5,7 +5,9 @@ import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.function.api.map.IMogoMapService
import com.mogo.eagle.core.function.api.map.marker.IMogoMarkerService
import com.mogo.eagle.core.function.call.base.CallerBase
-import com.mogo.map.location.IMogoGDLocationClient
+import com.mogo.map.hdcache.IHdCacheListener
+import com.mogo.map.listener.IMogoHosListenerRegister
+import com.mogo.map.location.IMogoLocationClient
import com.mogo.map.marker.IMogoMarkerManager
import com.mogo.map.overlay.IMogoOverlayManager
import com.mogo.map.uicontroller.IMogoMapUIController
@@ -30,6 +32,14 @@ object CallerMapUIServiceManager {
return serviceProvider?.markerService
}
+ fun cacheHDDataByCity(listener: IHdCacheListener) {
+ serviceProvider?.mapUIController?.cacheHDDataByCity(listener)
+ }
+
+ fun isCityDataCached(): Boolean {
+ return serviceProvider?.mapUIController?.isCityDataCached ?: true
+ }
+
fun getOverlayManager(): IMogoOverlayManager?{
return serviceProvider?.overlayManager
}
diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuApiManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuApiManager.kt
index 0bc8fae569..66327389bc 100644
--- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuApiManager.kt
+++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuApiManager.kt
@@ -40,4 +40,11 @@ object CallerObuApiManager {
return providerApi.isConnected()
}
+ /**
+ * 设置obu sdk的 日志
+ */
+ fun setObuLog(isSet: Boolean) {
+ providerApi.setObuLog(isSet)
+ }
+
}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 37794b3bc5..34f7f2991e 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -85,7 +85,7 @@ MOGO_LOCATION_VERSION=1.4.4.2
MOGO_TELEMATIC_VERSION=1.4.4.2
######## MogoAiCloudSDK Version ########
# 自研地图
-MAP_SDK_VERSION=2.10.0.2_test_01
+MAP_SDK_VERSION=2.10.0.2
MAP_SDK_OPERATION_VERSION=1.1.4.1
# websocket
WEBSOCKET_VERSION=1.1.7
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/hdcache/IHdCacheListener.kt b/libraries/mogo-map-api/src/main/java/com/mogo/map/hdcache/IHdCacheListener.kt
new file mode 100644
index 0000000000..4761e40fff
--- /dev/null
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/hdcache/IHdCacheListener.kt
@@ -0,0 +1,5 @@
+package com.mogo.map.hdcache
+
+interface IHdCacheListener {
+ fun onMapHdCacheProgress(cityId: Int, progress: Double)
+}
\ No newline at end of file
diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java
index 362b48f839..8235fe8a36 100644
--- a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java
+++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java
@@ -9,6 +9,9 @@ import androidx.annotation.RawRes;
import com.mogo.eagle.core.data.map.CenterLine;
import com.mogo.eagle.core.data.map.MogoLatLng;
+import com.mogo.map.hdcache.IHdCacheListener;
+
+import org.json.JSONObject;
import com.mogo.eagle.core.data.map.MogoLocation;
import java.util.List;
@@ -348,4 +351,11 @@ public interface IMogoMapUIController {
* @param color // color:"#RRGGBB*
*/
void setPointCloudColor(String color);
+ void cacheHDDataByCity(IHdCacheListener listener);
+
+ /**
+ * 当前城市离线数据是否已缓存
+ * @return
+ */
+ boolean isCityDataCached();
}
diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java
index e264f883ad..e46408c5f2 100644
--- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java
+++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java
@@ -23,6 +23,7 @@ import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
+import androidx.annotation.MainThread;
import androidx.annotation.NonNull;
import com.mogo.commons.debug.DebugConfig;
@@ -40,13 +41,17 @@ import com.mogo.eagle.core.function.call.map.CallerMapStyleListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
+import com.mogo.map.hdcache.IHdCacheListener;
import com.mogo.map.listener.MogoMapListenerHandler;
+import com.mogo.map.location.GDLocationClient;
+import com.mogo.map.navi.MogoCarLocationChangedListenerRegister;
import com.mogo.map.uicontroller.CarCursorOption;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.map.uicontroller.MapCameraPosition;
import com.mogo.map.uicontroller.MapControlResult;
import com.mogo.map.uicontroller.VisualAngleMode;
+import com.mogo.map.utils.HDMapUtils;
import com.mogo.map.utils.MogoMapUtils;
import com.mogo.map.utils.ObjectUtils;
import com.mogo.map.utils.ResIdCache;
@@ -64,6 +69,7 @@ import com.zhidaoauto.map.sdk.open.business.PointCloudHelper;
import com.zhidaoauto.map.sdk.open.camera.CameraPosition;
import com.zhidaoauto.map.sdk.open.camera.CameraUpdateFactory;
import com.zhidaoauto.map.sdk.open.camera.LatLngBounds;
+import com.zhidaoauto.map.sdk.open.data.CityInfo;
import com.zhidaoauto.map.sdk.open.data.MapDataApi;
import com.zhidaoauto.map.sdk.open.location.LocationClient;
import com.zhidaoauto.map.sdk.open.location.MyLocationStyle;
@@ -115,6 +121,8 @@ public class AMapViewWrapper implements IMogoMapView,
private boolean mIsFirstLocated = true;
private boolean mIsDelayed = false;
+ private IHdCacheListener hdCacheListener;
+
public AMapViewWrapper(MapAutoView mMapView) {
CallerLogger.INSTANCE.i(M_MAP + TAG, "autoop--AMapViewWrapper: init");
this.mMapView = mMapView;
@@ -1035,4 +1043,47 @@ public class AMapViewWrapper implements IMogoMapView,
}
+
+ @Override
+ public void cacheHDDataByCity(IHdCacheListener listener) {
+ if (mMapView.getMapAutoViewHelper() != null) {
+ String gdCityCode = GDLocationClient.getInstance(getContext()).getLastCityCode();
+ Integer id = HDMapUtils.getHDCityCode(gdCityCode);
+ if (id != null) {
+ hdCacheListener = listener;
+ mMapView.getMapAutoViewHelper().cacheHDDataByCity(id, (cityId, progress) -> {
+ if (Thread.currentThread() == Looper.getMainLooper().getThread()) {
+ if (hdCacheListener != null) {
+ hdCacheListener.onMapHdCacheProgress(cityId, progress * 100);
+ }
+ } else {
+ UiThreadHandler.post(() -> {
+ if (hdCacheListener != null) {
+ hdCacheListener.onMapHdCacheProgress(cityId, progress * 100);
+ }
+ });
+ }
+ });
+ }
+ }
+ }
+
+ @Override
+ public boolean isCityDataCached() {
+ if (mMapView.getMapAutoViewHelper() != null) {
+ String gdCityCode = GDLocationClient.getInstance(getContext()).getLastCityCode();
+ Integer id = HDMapUtils.getHDCityCode(gdCityCode);
+ if (id != null) {
+ List cityInfoList = mMapView.getMapAutoViewHelper().getAllCityCode();
+ if (cityInfoList != null) {
+ for (CityInfo cityInfo : cityInfoList) {
+ if (id == cityInfo.getCityCode()) {
+ return cityInfo.isCache;
+ }
+ }
+ }
+ }
+ }
+ return true;
+ }
}
diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java
index f525de00c5..fbbb4ab578 100644
--- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java
+++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java
@@ -2,12 +2,14 @@ package com.mogo.map;
import android.graphics.Point;
import android.graphics.Rect;
+import android.location.Location;
import android.view.View;
import com.mogo.eagle.core.data.map.CenterLine;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
+import com.mogo.map.hdcache.IHdCacheListener;
import com.mogo.map.uicontroller.AMapUIController;
import com.mogo.map.uicontroller.CarCursorOption;
import com.mogo.map.uicontroller.IMogoMapUIController;
@@ -449,4 +451,19 @@ public class MogoMapUIController implements IMogoMapUIController {
mDelegate.setPointCloudColor(color);
}
}
+
+ @Override
+ public void cacheHDDataByCity(IHdCacheListener listener) {
+ if (mDelegate != null) {
+ mDelegate.cacheHDDataByCity(listener);
+ }
+ }
+
+ @Override
+ public boolean isCityDataCached() {
+ if (mDelegate != null) {
+ return mDelegate.isCityDataCached();
+ }
+ return true;
+ }
}
diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/uicontroller/AMapUIController.java b/libraries/mogo-map/src/main/java/com/mogo/map/uicontroller/AMapUIController.java
index 9da7c35e7a..f48f36cc66 100644
--- a/libraries/mogo-map/src/main/java/com/mogo/map/uicontroller/AMapUIController.java
+++ b/libraries/mogo-map/src/main/java/com/mogo/map/uicontroller/AMapUIController.java
@@ -6,6 +6,7 @@ import android.view.View;
import com.mogo.eagle.core.data.map.CenterLine;
import com.mogo.eagle.core.data.map.MogoLatLng;
+import com.mogo.map.hdcache.IHdCacheListener;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.zhidaoauto.map.sdk.open.MapAutoApi;
@@ -389,4 +390,19 @@ public class AMapUIController implements IMogoMapUIController {
mClient.setPointCloudColor(color);
}
}
+
+ @Override
+ public void cacheHDDataByCity(IHdCacheListener listener) {
+ if (mClient != null) {
+ mClient.cacheHDDataByCity(listener);
+ }
+ }
+
+ @Override
+ public boolean isCityDataCached() {
+ if (mClient != null) {
+ return mClient.isCityDataCached();
+ }
+ return true;
+ }
}
diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/utils/HDMapUtils.kt b/libraries/mogo-map/src/main/java/com/mogo/map/utils/HDMapUtils.kt
new file mode 100644
index 0000000000..72e8eadaa5
--- /dev/null
+++ b/libraries/mogo-map/src/main/java/com/mogo/map/utils/HDMapUtils.kt
@@ -0,0 +1,28 @@
+package com.mogo.map.utils
+
+object HDMapUtils {
+ private val cityCodeMap by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
+ val map = HashMap()
+ // TODO:("高精地图自己去做")
+ map["0831"] = 5115// 宜宾市
+ map["0512"] = 3205// 苏州市
+ map["0872"] = 5329// 大理市
+ map["0711"] = 4207// 鄂州市
+ map["028"] = 5101// 成都市
+ map["0931"] = 6201// 兰州市
+ map["0535"] = 3706// 烟台市
+ map["027"] = 4201// 武汉市
+ map["010"] = 1101// 北京市
+ map["0734"] = 4304// 衡阳市
+ map
+ }
+
+ /**
+ * gdCityCode: 高德CityCode
+ * return: 高精地图CityCode
+ */
+ @JvmStatic
+ fun getHDCityCode(gdCityCode: String?): Int? {
+ return cityCodeMap[gdCityCode]
+ }
+}
\ No newline at end of file