diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt index a981320c86..7b4f7e6b00 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt @@ -21,6 +21,7 @@ import com.mogo.eagle.core.function.datacenter.obu.drawer.* import com.mogo.eagle.core.function.datacenter.obu.utils.TrafficDataConvertUtilsNew import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OBU +import com.mogo.eagle.core.utilcode.util.ConvertUtils import com.mogo.support.obu.ObuScene import com.zhidao.support.obu.constants.MogoObuShowConstants import kotlin.math.roundToInt @@ -135,8 +136,10 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener ) ttsContent = String.format( ttsContent, - Math.round(rsiWarningData.warningMsgList[0].distance).toString(), - Math.round(rsiWarningData.warningMsgList[0].eventRadius).toString() + ConvertUtils.intToChinese( + rsiWarningData.warningMsgList[0].distance.roundToInt()), + ConvertUtils.intToChinese( + rsiWarningData.warningMsgList[0].eventRadius.roundToInt()) ) } @@ -224,7 +227,8 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener ) ttsContent = String.format( ttsContent, - Math.round(rsiWarningData.warningMsgList[0].distance).toString() + ConvertUtils.intToChinese( + rsiWarningData.warningMsgList[0].distance.roundToInt()) ) } @@ -240,8 +244,10 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener ) ttsContent = String.format( ttsContent, - Math.round(rsiWarningData.warningMsgList[0].distance).toString(), - Math.round(rsiWarningData.warningMsgList[0].eventRadius).toString() + ConvertUtils.intToChinese( + rsiWarningData.warningMsgList[0].distance.roundToInt()), + ConvertUtils.intToChinese( + rsiWarningData.warningMsgList[0].eventRadius.roundToInt()) ) } @@ -255,7 +261,7 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener ) ttsContent = String.format( EventTypeEnumNew.getWarningTts(appId), - mLimitSpeed + ConvertUtils.intToChinese(mLimitSpeed) ) } } 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 58e79bdcf8..0f146c3a9f 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 @@ -23,6 +23,7 @@ import com.mogo.eagle.core.function.datacenter.obu.utils.TrafficDataConvertUtils import com.mogo.eagle.core.utilcode.download.Config import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OBU +import com.mogo.eagle.core.utilcode.util.ConvertUtils import com.mogo.eagle.core.utilcode.util.FileUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.support.obu.ObuBase @@ -410,8 +411,10 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { ) ttsContent = String.format( ttsContent, - Math.round(data.warningMsgList[0].distance).toString(), - Math.round(data.warningMsgList[0].eventRadius).toString() + ConvertUtils.intToChinese( + data.warningMsgList[0].distance.roundToInt()), + ConvertUtils.intToChinese( + data.warningMsgList[0].eventRadius.roundToInt()) ) } @@ -506,7 +509,8 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { ) ttsContent = String.format( ttsContent, - Math.round(data.warningMsgList[0].distance).toString() + ConvertUtils.intToChinese( + data.warningMsgList[0].distance.roundToInt()) ) } @@ -522,8 +526,10 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { ) ttsContent = String.format( ttsContent, - Math.round(data.warningMsgList[0].distance).toString(), - Math.round(data.warningMsgList[0].eventRadius).toString() + ConvertUtils.intToChinese( + data.warningMsgList[0].distance.roundToInt()), + ConvertUtils.intToChinese( + data.warningMsgList[0].eventRadius.roundToInt()) ) } @@ -539,7 +545,7 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { ) ttsContent = String.format( EventTypeEnumNew.getWarningTts(appId), - mLimitSpeed + ConvertUtils.intToChinese(mLimitSpeed) ) } } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyFactory.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyFactory.kt index 87a4667eab..f96a7b84ad 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyFactory.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyFactory.kt @@ -3,10 +3,15 @@ package com.mogo.eagle.core.function.business.identify import android.os.Handler import android.os.Message import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.data.deva.chain.ChainConstant import com.mogo.eagle.core.data.traffic.TrafficData import com.mogo.eagle.core.function.api.datacenter.obu.IMoGoObuStatusListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo import com.mogo.eagle.core.function.call.obu.CallerObuWarningListenerManager +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isTaxi import com.mogo.eagle.core.utilcode.mogo.thread.WorkThreadHandler +import com.mogo.eagle.core.utilcode.util.ParseVersionUtils +import com.zhjt.service.chain.ChainLog import mogo.telematics.pad.MessagePad import mogo.telematics.pad.MessagePad.TrackedObject import mogo.yycp.api.proto.SocketDownData @@ -31,15 +36,40 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener { private var aiCloudIdentify: Identify? = null init { - identify = if (FunctionBuildConfig.isBeautyMode) { - UserIdentify.beautifyDataDrawer - } else { - DriverIdentify.originDataDrawer + val dockerVersion = getAutoPilotStatusInfo().dockVersion + if (dockerVersion != null && dockerVersion.isNotEmpty()) { + try { + val version = ParseVersionUtils.parseVersion(true, dockerVersion) + identify = if (version >= 30100 && isTaxi(FunctionBuildConfig.appIdentityMode)) { + FunctionBuildConfig.isBeautyMode = false + drawType("关闭感知优化模式") + DriverIdentify.originDataDrawer + } else { + FunctionBuildConfig.isBeautyMode = true + drawType("开启感知优化模式") + UserIdentify.beautifyDataDrawer + } + } catch (e: Exception) { + drawType("解析docker异常:$dockerVersion") + identify = UserIdentify.beautifyDataDrawer + } } aiCloudIdentify = AiIdentify.aiCloudDataDrawer CallerObuWarningListenerManager.addListener(TAG, this) } + @ChainLog( + linkChainLog = ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS, + linkCode = ChainConstant.CHAIN_LINK_INIT, + endpoint = 4, + nodeAliasCode = ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_RECT_DATA, + paramIndexes = [0], + clientPkFileName = "sn" + ) + private fun drawType(type: String) { + + } + private const val MSG_DATA_TRACK = 0 private const val MSG_DATA_AI_TRACK = 1 private const val MSG_DATA_WARNING = 2 @@ -57,12 +87,14 @@ object IdentifyFactory : Identify, IMoGoObuStatusListener { // 非感知美化优化模式,清除旧数据,使用 DriverIdentify originDataDrawer 原始数据绘制 if (identify is IdentifyBeautifyDataDrawer) { identify!!.clearOldMarker() + drawType("isBeautyMode 模式改变,关闭感知优化模式") identify = DriverIdentify.originDataDrawer } } else { // 感知优化模式,清除旧数据,使用 UserIdentify beautifyDataDrawer 优化数据 if (identify is IdentifyOriginDataDrawer) { identify!!.clearOldMarker() + drawType("isBeautyMode 模式改变,开启感知优化模式") identify = UserIdentify.beautifyDataDrawer } } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyOriginDataDrawer.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyOriginDataDrawer.kt index 4a729e4665..32dd560b85 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyOriginDataDrawer.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/IdentifyOriginDataDrawer.kt @@ -131,6 +131,7 @@ class IdentifyOriginDataDrawer : Identify { .removeMarker(uuid) } trafficDataUuidList.clear() + mMarkersCaches.clear() WarningHelper.clear() } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/TrackObj.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/TrackObj.java index 6da3576d2c..c440910502 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/TrackObj.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/TrackObj.java @@ -1,21 +1,13 @@ package com.mogo.eagle.core.function.business.identify; -import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_ADAS_MESSAGE_RECT_DATA; -import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_ADAS; -import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED; import static com.mogo.eagle.core.function.business.identify.TrackManager.LIMIT_SPEED; import android.annotation.SuppressLint; -import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.enums.TrafficTypeEnum; -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.utilcode.geometry.S2CellId; import com.mogo.eagle.core.utilcode.geometry.S2LatLng; -import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; import com.mogo.eagle.core.utilcode.util.CoordinateUtils; -import com.mogo.eagle.core.utilcode.util.ParseVersionUtils; -import com.zhjt.service.chain.ChainLog; import java.util.Arrays; import java.util.Comparator; @@ -53,30 +45,9 @@ public class TrackObj { private void correct() { calAverageSpeedAndType(); - String dockerVersion = CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getDockVersion(); - if (dockerVersion != null && !dockerVersion.isEmpty()) { - try { - int version = ParseVersionUtils.parseVersion(true, dockerVersion); - if (version >= 310 && AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) { - return; - } - } catch (Exception e) { - logErrorOfVersion(dockerVersion); - } - } calLoc(); } - @ChainLog(linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_DATA_TRACKED, - linkCode = CHAIN_LINK_ADAS, - endpoint = 4, - nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_RECT_DATA, - paramIndexes = {0}, - clientPkFileName = "sn") - private void logErrorOfVersion(String version) { - - } - @SuppressLint("NewApi") private void calAverageSpeedAndType() { if (circleQueue.size() >= 3) { diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/ConvertUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/ConvertUtils.java index 4fb280cf96..5b2f3a420a 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/ConvertUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/ConvertUtils.java @@ -5,6 +5,7 @@ import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.os.Parcel; import android.os.Parcelable; +import android.text.SpannableStringBuilder; import android.view.View; @@ -759,4 +760,122 @@ public final class ConvertUtils { } return cn; } + + /** + * 将数字转换为汉字 + * + * @param number + * @return + */ + public static String intToChinese(int number) { + String value = String.valueOf(number); + SpannableStringBuilder spannable = new SpannableStringBuilder(); + int length = value.length(); + if (length > 1) { + /** + * 对于长度大于1的数,对首位进行赋值; + * 对于两位数: 如果首位为“1”,则拼接的字符串为“”; + */ + spannable.append(getChinese(number / (int) Math.pow(10, length - 1), length)) + .append(getUnitChinese(length)); + // 如果该数值取余数为0,则直接返回已有字符(例如:100,直接返回一百) + if (number % (int) Math.pow(10, length - 1) == 0) { + return spannable.toString(); + } + } + // 数字为一位数 + if (length == 1) { + spannable.append(getChinese(number, 1)); + } + // 数字为两位数 + if (length == 2) { + // 拼接个位的数值: 如果各位为“0”,则拼接的字符串为“”; + spannable.append(getChinese(number % 10, 0)); + } + // 数字为三位数 + if (length == 3) { + if (number % 100 < 10) { + spannable.append("零") + .append(getChinese(number % 100, 3)); + } else { + spannable.append(getChinese(number % 100 / 10, 3)) + .append("十") + .append(getChinese(number % 10, 0)); + } + } + // 数字为四位数 + if (length == 4) { + if (number % 1000 < 10) { + spannable.append("零").append(getChinese(number % 1000, 3)); + } else if (number % 1000 < 100) { + spannable.append("零") + .append(getChinese(number % 1000 / 10, 3)) + .append("十") + .append(getChinese(number % 10, 0)); + } else { + number = number % 1000; + spannable.append(intToChinese(number)); + } + } + return spannable.toString(); + } + + /** + * 根据不同的情况获取对应的中文 + * + * @param key + * @param length + * @return + */ + public static String getChinese(int key, int length) { + switch (key) { + case 1: + if (length == 2) { + return ""; + } + return "一"; + case 2: + return "二"; + case 3: + return "三"; + case 4: + return "四"; + case 5: + return "五"; + case 6: + return "六"; + case 7: + return "七"; + case 8: + return "八"; + case 9: + return "九"; + case 0: + if (length == 1) { + return "零"; + } + return ""; + + } + return ""; + } + + /** + * 根据数字的位数返回最大位数的单位 + * + * @param length + * @return + */ + public static String getUnitChinese(int length) { + switch (length) { + case 2: + return "十"; + case 3: + return "百"; + case 4: + return "千"; + } + return ""; + } + } diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java b/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java index edb13a8f71..ff37c1c16e 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java @@ -140,7 +140,7 @@ public class AMapWrapper implements IMogoMap { long time = markerOptionsArrayList.get(0).getTime(); batchMarkerOptions.list = markerOptionsArrayList; batchMarkerOptions.delayStrategy = false; - batchMarkerOptions.ruleAngle = FunctionBuildConfig.isBeautyMode ? 8.0f : 0f; + batchMarkerOptions.ruleAngle = 8.0f; batchMarkerOptions.controlIcon = 1; batchMarkerOptions.satelliteTime = time; batchMarkerOptions.deleteRule = 0; @@ -172,7 +172,7 @@ public class AMapWrapper implements IMogoMap { // 最后一个参数,是否管理锚点的删除 aiBatchMarkerOptions.list = markerOptionsArrayList; aiBatchMarkerOptions.delayStrategy = false; - aiBatchMarkerOptions.ruleAngle = FunctionBuildConfig.isBeautyMode ? 8.0f : 0f; + aiBatchMarkerOptions.ruleAngle = 8.0f; aiBatchMarkerOptions.controlIcon = 1; aiBatchMarkerOptions.satelliteTime = time; aiBatchMarkerOptions.deleteRule = 0;