Merge branch 'dev_robotaxi-d-app-module_2132_221223_2.13.2' of gitlab.zhidaoauto.com:zhjt/AndroidApp/MoGoEagleEye into dev_robotaxi-d-app-module_2132_221223_2.13.2

This commit is contained in:
lixiaopeng
2023-01-11 14:47:30 +08:00
28 changed files with 212 additions and 54 deletions

View File

@@ -632,6 +632,15 @@ class DebugSettingView @JvmOverloads constructor(
}
}
tbDrawAiCloudFusion.isChecked = FunctionBuildConfig.isDrawAiCloudFusion
//云端感知绘制
tbDrawAiCloudFusion.setOnCheckedChangeListener { _, isChecked ->
FunctionBuildConfig.isDrawAiCloudFusion = isChecked
if (!FunctionBuildConfig.isDrawAiCloudFusion) {
tbDrawAiCloudFusion.isChecked = false
}
}
//重启工控机所有节点
btnIpcReboot.onClick {
CallerAutoPilotManager.sendIpcReboot()

View File

@@ -5,6 +5,7 @@ import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.widget.FrameLayout
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.map.MogoMapUIController
import com.mogo.map.uicontroller.VisualAngleMode
@@ -34,12 +35,14 @@ class PerspectiveSwitchView @JvmOverloads constructor(
// .visibleAllMarkers()
MogoMapUIController.getInstance()
.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null)
CallerMapUIServiceManager.getMapUIController()?.setLockMode(true)
textSwitch.setText(R.string.module_map_model_normal)
} else if (MogoMapUIController.getInstance().currentMapVisualAngle.isMediumSight) {
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
// .inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS)
MogoMapUIController.getInstance()
.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null)
CallerMapUIServiceManager.getMapUIController()?.setLockMode(false)
textSwitch.setText(R.string.module_map_model_faster)
} else {
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp())

View File

@@ -17,7 +17,6 @@ import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.module.MogoModule;
import com.mogo.commons.module.MogoModulePaths;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.data.constants.MoGoConfig;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
@@ -65,21 +64,23 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
}
start = System.currentTimeMillis();
connectAmiIp();
initOverviewDb();
// Crash 日志收集
initCrashConfig();
initLogConfig();
initTipToast();
initModules();
if (DebugConfig.isDebug()) {
initKoom();
}
//查询是否有版本的更新
queryAppUpgrade();
clearMessageBoxTable();
checkMonitorDb();
if (ProcessUtils.isMainProcess(this)) {
initOverviewDb();
if (DebugConfig.isDebug()) {
initKoom();
}
clearMessageBoxTable();
checkMonitorDb();
CallerMsgBoxManager.INSTANCE.queryAllMessages(this);
}
upgradeProgressListener();
CallerMsgBoxManager.INSTANCE.queryAllMessages(this);
}
@Override

View File

@@ -254,6 +254,18 @@
android:textOn="关闭车端V2N预警"
android:textSize="@dimen/dp_24" />
<ToggleButton
android:id="@+id/tbDrawAiCloudFusion"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_10"
android:padding="@dimen/dp_20"
android:background="@drawable/radio_button_normal_background_right"
android:textColor="#000"
android:textOff="开启云端感知绘制"
android:textOn="关闭云端感知绘制"
android:textSize="@dimen/dp_24" />
<ToggleButton
android:id="@+id/tbMojie"
android:layout_width="match_parent"

View File

@@ -1,17 +1,19 @@
package com.mogo.eagle.core.function.business.ai
import android.content.Context
import com.mogo.cloud.socket.IMogoCloudSocketOnMessageListener
import com.mogo.cloud.socket.SocketManager
import com.mogo.cloud.socket.entity.SocketDownData.SocketDownDataProto
import com.mogo.aicloud.services.socket.IMogoOnMessageListener
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.function.business.ai.net.AiCloudIdentifyNetWorkModel
import com.mogo.eagle.core.function.business.identify.MapIdentifySubscriber
import com.mogo.eagle.core.function.call.map.CallerMapIdentifyManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP
import com.mogo.map.listener.IMogoMapListener
import com.mogo.map.uicontroller.VisualAngleMode
import com.mogo.module.common.MogoApisHandler
import com.mogo.realtime.constant.RealTimeConstant
import mogo.yycp.api.proto.SocketDownData
class AiCloudIdentifyDataManager : IMogoMapListener {
@@ -32,16 +34,20 @@ class AiCloudIdentifyDataManager : IMogoMapListener {
fun init(mContext: Context) {
MogoApisHandler.getInstance().apis.registerCenterApi.registerMogoMapListener(TAG, this)
SocketManager.getInstance()
MogoAiCloudSocketManager.getInstance(mContext)
.registerOnMessageListener(
RealTimeConstant.LOW_FREQUENCY_CHANNEL_ID,
object : IMogoCloudSocketOnMessageListener<SocketDownDataProto> {
override fun target(msgType: Int): Class<SocketDownDataProto> {
return SocketDownDataProto::class.java
0x040003, //低频数据
object : IMogoOnMessageListener<SocketDownData.SocketDownDataProto> {
override fun target(): Class<SocketDownData.SocketDownDataProto> {
return SocketDownData.SocketDownDataProto::class.java
}
override fun onMsgReceived(msgType: Int, obj: SocketDownDataProto?) {
override fun onMsgReceived(obj: SocketDownData.SocketDownDataProto?) {
CallerLogger.d("$M_MAP$TAG", "SocketDownDataProto obj : $obj")
if(!FunctionBuildConfig.isDrawAiCloudFusion){
MapIdentifySubscriber.instance.clearAiCloudRoma()
return
}
obj?.let {
obj.data?.let {
if (showAiCloud) {
@@ -74,9 +80,14 @@ class AiCloudIdentifyDataManager : IMogoMapListener {
override fun onMapVisualAngleChanged(visualAngleMode: VisualAngleMode) {
super.onMapVisualAngleChanged(visualAngleMode)
showAiCloud = when {
visualAngleMode.isLongSight -> true
else -> false
when {
visualAngleMode.isLongSight -> {
showAiCloud = true
}
else -> {
showAiCloud = false
CallerMapIdentifyManager.clearAiCloudRoma()
}
}
}

View File

@@ -1,9 +1,9 @@
package com.mogo.eagle.core.function.business.identify
import com.mogo.cloud.socket.entity.SocketDownData
import com.mogo.eagle.core.data.traffic.TrafficData
import mogo.telematics.pad.MessagePad
import mogo.telematics.pad.MessagePad.TrackedObject
import mogo.yycp.api.proto.SocketDownData
interface Identify {

View File

@@ -2,7 +2,6 @@ package com.mogo.eagle.core.function.business.identify
import android.annotation.SuppressLint
import androidx.collection.ArraySet
import com.mogo.cloud.socket.entity.SocketDownData
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.eagle.core.data.traffic.TrafficData
@@ -10,6 +9,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.w
import com.mogo.map.MogoMarkerManager
import mogo.telematics.pad.MessagePad.PlanningObject
import mogo.telematics.pad.MessagePad.TrackedObject
import mogo.yycp.api.proto.SocketDownData
import java.util.concurrent.ConcurrentHashMap
class IdentifyAiCloudDataDrawer : Identify {
@@ -62,7 +62,7 @@ class IdentifyAiCloudDataDrawer : Identify {
it.remove()
mMarkersCaches.remove(key)
MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
.removeMarker(key)
.removeMarker(key.hashCode().toString())
}
val filterList = filterTrafficData(resultList)
@@ -86,15 +86,19 @@ class IdentifyAiCloudDataDrawer : Identify {
val uuid = "" + data.uuid
mMarkersCaches[uuid] = data
trafficDataUuidList.add(uuid)
mFilterTrafficData[uuid] = data
}
return mFilterTrafficData
}
@SuppressLint("NewApi")
override fun clearAiMarker() {
if(trafficDataUuidList.size == 0){
return
}
for (uuid in trafficDataUuidList) {
MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
.removeMarker(uuid)
.removeMarker(uuid.hashCode().toString())
}
trafficDataUuidList.clear()
}

View File

@@ -2,7 +2,6 @@ package com.mogo.eagle.core.function.business.identify
import android.os.Handler
import android.os.Message
import com.mogo.cloud.socket.entity.SocketDownData
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.traffic.TrafficData
import com.mogo.eagle.core.function.api.obu.IMoGoObuStatusListener
@@ -10,6 +9,7 @@ import com.mogo.eagle.core.function.call.obu.CallerObuListenerManager
import com.mogo.eagle.core.utilcode.mogo.thread.WorkThreadHandler
import mogo.telematics.pad.MessagePad
import mogo.telematics.pad.MessagePad.TrackedObject
import mogo.yycp.api.proto.SocketDownData
object IdentifyFactory : Identify, IMoGoObuStatusListener {

View File

@@ -2,7 +2,6 @@ package com.mogo.eagle.core.function.business.identify
import android.content.Context
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.cloud.socket.entity.SocketDownData
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.constants.MogoServicePaths.PATH_IDENTIFY
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener
@@ -13,6 +12,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListen
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import mogo.telematics.pad.MessagePad
import mogo.telematics.pad.MessagePad.TrackedObject
import mogo.yycp.api.proto.SocketDownData
/**
* 订阅感知数据的订阅者

View File

@@ -38,8 +38,8 @@ data class V2XEvent(
@SerializedName("radius")
var radius: Double,
@SerializedName("type")
var type: Int
@SerializedName("poiType")
var poiType: String?
)
@Keep

View File

@@ -271,7 +271,7 @@ public class AMapCustomView
LatLng latLng = MarkerDrawerManager.INSTANCE.coordinateConverterWgsToGcj(mContext, center.getLat(), center.getLon());
markerOption.position(latLng);
markerOption.anchor(0.13f, 1f);
markerOption.icon(BitmapDescriptorFactory.fromBitmap(getV2XBitmap()));
markerOption.icon(BitmapDescriptorFactory.fromBitmap(getV2XBitmap(event.getPoiType())));
markerOptionsList.add(markerOption);
}
}
@@ -284,8 +284,8 @@ public class AMapCustomView
currMarkerList = mAMap.addMarkers(markerOptionsList, false);
}
private Bitmap getV2XBitmap() {
V2XMarkerView marker = new V2XMarkerView(getContext());
private Bitmap getV2XBitmap(String poiType) {
V2XMarkerView marker = new V2XMarkerView(getContext(), null, 0, poiType);
marker.measure(View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(mContext, 229), View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(mContext, 96), View.MeasureSpec.EXACTLY));
marker.layout(0, 0, marker.getMeasuredWidth(), marker.getMeasuredHeight());

View File

@@ -3,14 +3,16 @@ package com.mogo.eagle.core.function.smp
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.ImageView
import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.eagle.core.function.map.R
import kotlinx.android.synthetic.main.view_maker_with_count.view.*
class V2XMarkerView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
defStyleAttr: Int = 0,
private val poiType: String? = ""
) : ConstraintLayout (
context,
attrs,
@@ -19,5 +21,33 @@ class V2XMarkerView @JvmOverloads constructor(
init {
LayoutInflater.from(context).inflate(R.layout.layout_v2x_maker, this, true)
initView()
}
private fun initView() {
val iconView = findViewById<ImageView>(R.id.ivIcon)
val contentView = findViewById<TextView>(R.id.tvContent)
when (poiType) {
"10006" -> {
iconView.setBackgroundResource(R.drawable.icon_small_v2x_road_construction)
contentView.text = "道路施工"
}
"10007" -> {
iconView.setBackgroundResource(R.drawable.icon_v2x_road_congestion)
contentView.text = "道路拥堵"
}
"10032" -> {
iconView.setBackgroundResource(R.drawable.icon_v2x_road_accidents)
contentView.text = "道路事故"
}
"10025" -> {
iconView.setBackgroundResource(R.drawable.icon_v2x_obstacle)
contentView.text = "障碍车辆"
}
// "10031" -> {
// iconView.setBackgroundResource(R.drawable.icon_small_v2x_road_construction)
// contentView.text = "弱势预警"
// }
}
}
}

View File

@@ -19,7 +19,7 @@
/>
<TextView
android:id="@+id/tv"
android:id="@+id/tvContent"
android:layout_width="119dp"
android:layout_height="35dp"
android:text="道路施工"

View File

@@ -3,7 +3,6 @@ package com.mogo.eagle.core.function.msgbox
import android.content.Context
import android.os.Looper
import com.mogo.eagle.core.data.msgbox.*
import com.mogo.eagle.core.data.notice.NoticeNormalData
import com.mogo.eagle.core.data.report.ReportEntity
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxListenerManager
import com.mogo.eagle.core.function.msgbox.db.MsgBoxDb
@@ -12,6 +11,7 @@ import com.mogo.eagle.core.utilcode.kotlin.lifeCycleScope
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.Utils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
@@ -156,6 +156,7 @@ object DataManager {
}
private suspend fun getCacheMessages(context: Context): List<MsgBoxBean> = withContext(Dispatchers.IO) {
delay(2000)
return@withContext MsgBoxDb.getDb(context)
.monitorDao()
.getAllCachedMessages()

View File

@@ -451,15 +451,6 @@ object V2XEventManager : IMoGoMapLocationListener, IMoGoTokenCallback, IV2XCallb
}
}
@SuppressLint("NewApi")
@ChainLog(
linkChainLog = CHAIN_LINK_LOG_CLOUD_V2N,
linkCode = CHAIN_LINK_CLOUD,
endpoint = TracingConstants.Endpoint.PAD,
nodeAliasCode = CHAIN_ALIAS_CODE_CLOUD_V2N,
paramIndexes = [0],
clientPkFileName = "sn"
)
override fun onAutopilotIdentifyPlanningObj(planningObjects: List<MessagePad.PlanningObject>?) {
super.onAutopilotIdentifyPlanningObj(planningObjects)
if(!FunctionBuildConfig.isV2NFromCar){