Merge remote-tracking branch 'origin/dev_minibus-d_230425_3.2.0' into dev_minibus-d_230425_3.2.0

This commit is contained in:
yangyakun
2023-05-30 15:18:51 +08:00
7 changed files with 182 additions and 47 deletions

View File

@@ -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)
)
}
}

View File

@@ -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)
)
}
}

View File

@@ -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
}
}

View File

@@ -131,6 +131,7 @@ class IdentifyOriginDataDrawer : Identify {
.removeMarker(uuid)
}
trafficDataUuidList.clear()
mMarkersCaches.clear()
WarningHelper.clear()
}

View File

@@ -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) {

View File

@@ -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 "";
}
}

View File

@@ -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;