Merge branch 'test_robotaxi-d-app-module_2110_220915_2.11.0.1' into dev_robotaxi-d-app-module_2120_221017_2.12.0
# Conflicts: # OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java
This commit is contained in:
@@ -28,7 +28,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
@@ -454,8 +453,9 @@ public class BusOrderModel {
|
||||
@Override
|
||||
public void onSuccess(BaseData o) {
|
||||
CallerLogger.INSTANCE.d(M_BUS + TAG, "abortTask success: " + o);
|
||||
endOrAbortTaskSuccess();
|
||||
if (o.code == 0){ // 重置成功
|
||||
endOrAbortTaskSuccess();
|
||||
clearBusStationDatas();
|
||||
queryBusRoutes();
|
||||
startOrStopQueryPassengerWriteOff(false);
|
||||
}
|
||||
@@ -717,7 +717,6 @@ public class BusOrderModel {
|
||||
* 关闭美化模式
|
||||
*/
|
||||
public void closeBeautificationMode() {
|
||||
Logger.d("Route", "BusOrderModel -> closeBeautificationMode ==> isDemoMode:" + FunctionBuildConfig.isDemoMode);
|
||||
if (FunctionBuildConfig.isDemoMode) {//收车结束美化
|
||||
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false; //是否强制绘制引导线
|
||||
CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(false);// 同步给乘客屏
|
||||
@@ -788,7 +787,6 @@ public class BusOrderModel {
|
||||
+" isLeaving()="+currentStation.isLeaving());
|
||||
|
||||
// 美化是否开始
|
||||
Logger.d("Route", "BusOrderModel -> updateBusStatus ==> isDemoMode:" + FunctionBuildConfig.isDemoMode);
|
||||
if (FunctionBuildConfig.isDemoMode && (backgroundCurrentStationIndex >= 0
|
||||
&& backgroundCurrentStationIndex <= stationList.size()-1)){//行驶过程中设置美化
|
||||
if (stationList.get(backgroundCurrentStationIndex).isLeaving()){
|
||||
@@ -822,7 +820,6 @@ public class BusOrderModel {
|
||||
}
|
||||
|
||||
private void startBeautificationMode() {
|
||||
Logger.d("Route", "BusOrderModel -> startBeautificationMode ==> ignore = true");
|
||||
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true;
|
||||
CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(true);
|
||||
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(true);
|
||||
@@ -881,6 +878,7 @@ public class BusOrderModel {
|
||||
CallerLogger.INSTANCE.d(M_BUS + TAG, "endTask success: " + o);
|
||||
if (o.code == 0){
|
||||
endOrAbortTaskSuccess();
|
||||
clearBusStationDatas();
|
||||
queryBusRoutes();// 重新获取任务
|
||||
startOrStopQueryPassengerWriteOff(false);
|
||||
ttsTips(mContext.getString(R.string.bus_end_task_tip));
|
||||
|
||||
@@ -28,7 +28,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
||||
@@ -327,7 +326,7 @@ public class TaxiModel {
|
||||
//1.1.2. 当本地有currentOrder:
|
||||
//orderId不一致时:通过currentOrder.orderId查询订单状态,并通知ui更新
|
||||
//orderId一致且orderStatus不一致时:则更新currentOrder,并通知ui更新
|
||||
Logger.d(TAG,"AutopilotControl-mCurrentOCHOrder = "+mCurrentOCHOrder.orderStatus
|
||||
CallerLogger.INSTANCE.d(M_TAXI + TAG,"AutopilotControl-mCurrentOCHOrder = "+mCurrentOCHOrder.orderStatus
|
||||
+ ", orderStatus = " +data.data.servicing.get(0).orderStatus);
|
||||
if (!mCurrentOCHOrder.orderNo.equals(data.data.servicing.get(0).orderNo)) {
|
||||
queryCurOrderStatus();
|
||||
@@ -800,7 +799,6 @@ public class TaxiModel {
|
||||
GsonUtil.jsonFromObject(data));
|
||||
|
||||
if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.getCode()){
|
||||
Logger.d("Route", "TaxiModel -> updateNativeCurrentOrder ==> isDemoMode:" + FunctionBuildConfig.isDemoMode);
|
||||
if (FunctionBuildConfig.isDemoMode) {
|
||||
// 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true
|
||||
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true;
|
||||
@@ -847,7 +845,6 @@ public class TaxiModel {
|
||||
TaxiTrajectoryManager.getInstance().syncTrajectoryInfo();
|
||||
SharedPrefsMgr.getInstance(mContext).remove(TaxiConst.SP_KEY_OCH_TAXI_ORDER);
|
||||
isRestartAutopilot = false;
|
||||
Logger.d("Route", "TaxiModel -> clearCurrentOCHOrder ==> isDemoMode:" + FunctionBuildConfig.isDemoMode);
|
||||
if (FunctionBuildConfig.isDemoMode) {
|
||||
// 当美化模式(演示模式)开启时: 取消或订单已完成时,置false
|
||||
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false;
|
||||
@@ -1152,7 +1149,6 @@ public class TaxiModel {
|
||||
|
||||
TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent(isRestartAutopilot, true,
|
||||
mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo);
|
||||
Logger.d("Route", "TaxiModel -> onAutopilotStatusResponse ==> isDemoMode:" + FunctionBuildConfig.isDemoMode);
|
||||
if (FunctionBuildConfig.isDemoMode) {
|
||||
// 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true
|
||||
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true;
|
||||
|
||||
@@ -7,6 +7,7 @@ apply plugin: 'kotlin-android-extensions'
|
||||
apply plugin: 'android-aspectjx'
|
||||
apply plugin: 'bugly'
|
||||
|
||||
def isReleaseBuild = isReleaseBuild()
|
||||
//apply ByteX宿主
|
||||
if (!isAndroidTestBuild()) {
|
||||
apply plugin: 'bytex'
|
||||
@@ -38,14 +39,23 @@ if (!isAndroidTestBuild()) {
|
||||
if (!isAndroidTestBuild()) {
|
||||
apply plugin: 'bytex.threadOpt'
|
||||
thread_opt {
|
||||
enable !isReleaseBuild
|
||||
enableInDebug !isReleaseBuild
|
||||
logLevel "DEBUG"
|
||||
}
|
||||
}
|
||||
|
||||
if (!isAndroidTestBuild()) {
|
||||
apply plugin: 'LancetX'
|
||||
LancetX {
|
||||
enable true
|
||||
enableInDebug true
|
||||
logLevel "DEBUG"
|
||||
//白名单中的类不进行替换
|
||||
// white_list = [
|
||||
// 'leakcanary.*',
|
||||
// 'com.loc.*'
|
||||
// ]
|
||||
|
||||
weaveGroup {
|
||||
leak_canary_crash_fix {
|
||||
enable !isReleaseBuild
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -249,6 +259,7 @@ dependencies {
|
||||
debugImplementation rootProject.ext.dependencies.debugleakcanary
|
||||
releaseImplementation rootProject.ext.dependencies.releaseleakcanary
|
||||
implementation rootProject.ext.dependencies.android_start_up
|
||||
implementation rootProject.ext.dependencies.lancetx_runtime
|
||||
|
||||
// // 暂不使用Shizuku-API
|
||||
// implementation rootProject.ext.dependencies.shizuku_provider
|
||||
@@ -373,3 +384,12 @@ boolean isAndroidTestBuild() {
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
boolean isReleaseBuild() {
|
||||
for (String s : gradle.startParameter.taskNames) {
|
||||
if (s.contains("Release") | s.contains("release")) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.mogo.launcher.lancet
|
||||
|
||||
import android.database.sqlite.*
|
||||
import androidx.annotation.*
|
||||
import com.knightboost.lancet.api.*
|
||||
import com.knightboost.lancet.api.annotations.*
|
||||
import com.knightboost.lancet.api.annotations.Weaver
|
||||
|
||||
/**
|
||||
* 此类主要用来修正三方库引起的崩溃
|
||||
*/
|
||||
@Keep
|
||||
@Weaver
|
||||
@Group("leak_canary_crash_fix")
|
||||
class LeakCanaryCrashFix {
|
||||
|
||||
@Insert
|
||||
@TargetClass("leakcanary.internal.activity.db.ScopedLeaksDb\$DbOpener")
|
||||
@TargetMethod(methodName = "getReadableDatabase")
|
||||
fun proxyGetReadableSQLiteDb(): SQLiteDatabase? {
|
||||
try {
|
||||
return Origin.call() as SQLiteDatabase?
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
@Insert
|
||||
@TargetClass("leakcanary.internal.activity.db.ScopedLeaksDb\$DbOpener")
|
||||
@TargetMethod(methodName = "getWritableDatabase")
|
||||
fun proxyGetWritableSQLiteDb(): SQLiteDatabase? {
|
||||
try {
|
||||
return Origin.call() as SQLiteDatabase?
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
@Insert
|
||||
@TargetClass("leakcanary.internal.activity.db.ScopedLeaksDb\$DbOpener")
|
||||
@TargetMethod(methodName = "close")
|
||||
fun proxyClose() {
|
||||
try {
|
||||
Origin.callVoid()
|
||||
} catch (t: Throwable) {
|
||||
t.printStackTrace()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -38,6 +38,7 @@ buildscript {
|
||||
classpath 'com.mogo.cloud:systrace:1.0.1'
|
||||
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18'
|
||||
classpath 'com.mogo.sticky:service:1.0.8'
|
||||
classpath 'io.github.knight-zxw:lancet-plugin:0.0.1'
|
||||
|
||||
// classpath ("com.tencent.matrix:matrix-gradle-plugin:0.6.6") { changing = true }
|
||||
}
|
||||
|
||||
@@ -237,7 +237,11 @@ ext {
|
||||
koomxhook : "com.kuaishou.koom:xhook-static:2.2.0",
|
||||
|
||||
//========================= Koom ======================
|
||||
recyclerviewadapterhelper : "io.github.cymchad:BaseRecyclerViewAdapterHelper:3.0.4"
|
||||
recyclerviewadapterhelper : "io.github.cymchad:BaseRecyclerViewAdapterHelper:3.0.4",
|
||||
|
||||
|
||||
//========================= LancetX ===================
|
||||
lancetx_runtime : "io.github.knight-zxw:lancet-runtime:0.0.1"
|
||||
]
|
||||
android = [
|
||||
launcherApplicationId : "com.mogo.launcher",
|
||||
|
||||
@@ -197,6 +197,8 @@ class MoGoAutopilotProvider :
|
||||
.build()
|
||||
AdasManager.getInstance()
|
||||
.create(options, MoGoAdasMsgConnectStatusListenerImpl())
|
||||
// 监听ADAS-SDK获取到的工控机数据
|
||||
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
|
||||
// 接收司机屏发过来的感知、定位等数据
|
||||
listenDeviceData()
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.mogo.eagle.core.function.autopilot.telematic
|
||||
|
||||
import android.util.Log
|
||||
import androidx.lifecycle.ProcessLifecycleOwner
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.google.protobuf.TextFormat
|
||||
@@ -118,10 +117,6 @@ class TeleMsgHandler : IMsgHandler {
|
||||
"1" -> true
|
||||
else -> false
|
||||
}
|
||||
Logger.d(
|
||||
"Route",
|
||||
"TeleMsgHandler -> handleMsgFromServer ==> isDemoMode:" + FunctionBuildConfig.isDemoMode + ",isIgnore:" + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData
|
||||
)
|
||||
timestamp = currTime
|
||||
invokeNettyConnResult("乘客屏收到的美化模式isIgnore为:${FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData}")
|
||||
} else {
|
||||
|
||||
@@ -9,7 +9,6 @@ import android.os.Build.VERSION_CODES
|
||||
import android.os.Bundle
|
||||
import android.text.TextUtils
|
||||
import android.transition.*
|
||||
import android.util.Log
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
@@ -866,7 +865,7 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
|
||||
AIAssist.getInstance(ctx).speakTTSVoice(text, voiceCallback)
|
||||
} catch (t: Throwable) {
|
||||
it.resumeWith(Result.success(Unit))
|
||||
Logger.e(TAG, t.message)
|
||||
CallerLogger.d("$M_HMI$TAG", t.message)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1458,7 +1457,6 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
|
||||
* 工控机监控节点上报
|
||||
*/
|
||||
override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {
|
||||
Log.d("EmArrow-1013", "onAutopilotGuardian : $guardianInfo , takeOver : $takeOver")
|
||||
ThreadUtils.runOnUiThread {
|
||||
guardianInfo?.let {
|
||||
if (reportList.size > 49) {
|
||||
@@ -1484,10 +1482,6 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
|
||||
EXIT_AUTOPILOT_FOR_LOCATION,
|
||||
EXIT_AUTOPILOT_FOR_CHASSIS,
|
||||
EXIT_AUTOPILOT_FOR_DISTANCE -> {
|
||||
Log.d(
|
||||
"EmArrow-1013",
|
||||
"it code : ${it.code} , state : ${getAutoPilotStatusInfo().state}"
|
||||
)
|
||||
showWarningV2X(
|
||||
EventTypeEnum.TAKE_OVER_EVENT.poiType,
|
||||
EventTypeEnum.TAKE_OVER_EVENT.content,
|
||||
@@ -1495,13 +1489,11 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
|
||||
EventTypeEnum.TAKE_OVER_EVENT.poiType,
|
||||
object : IMoGoWarningStatusListener {
|
||||
override fun onShow() {
|
||||
Log.d("EmArrow-1013", "onShow")
|
||||
takeOver = true
|
||||
clTakeOverView.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
override fun onDismiss() {
|
||||
Log.d("EmArrow-1013", "onDismiss")
|
||||
takeOver = false
|
||||
clTakeOverView.visibility = View.GONE
|
||||
}
|
||||
|
||||
@@ -623,7 +623,6 @@ class DebugSettingView @JvmOverloads constructor(
|
||||
|
||||
// 强制绘制引导线
|
||||
tbIsDrawAutopilotTrajectoryData.setOnCheckedChangeListener { _, isChecked ->
|
||||
Logger.d("Route", "DebugSettingView -> initView2 ==> isDemoMode:" + FunctionBuildConfig.isDemoMode + ",isIgnore: $isChecked")
|
||||
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = isChecked
|
||||
}
|
||||
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
package com.mogo.eagle.core.function.hmi.ui.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.graphics.*
|
||||
import android.location.Location
|
||||
import android.util.AttributeSet
|
||||
import android.util.*
|
||||
import android.view.Gravity
|
||||
import android.widget.FrameLayout
|
||||
import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.mogo.eagle.core.data.constants.MogoServicePaths
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.map.MogoMapUIController
|
||||
import com.mogo.eagle.core.utilcode.util.*
|
||||
import com.mogo.map.*
|
||||
import com.mogo.map.navi.IMogoCarLocationChangedListener2
|
||||
import com.mogo.service.IMogoServiceApis
|
||||
import java.util.*
|
||||
@@ -38,6 +38,11 @@ class SpeedPanelView @JvmOverloads constructor(
|
||||
|
||||
var mSpeedLimmit = 60;
|
||||
|
||||
|
||||
private val timer by lazy {
|
||||
Timer()
|
||||
}
|
||||
|
||||
init {
|
||||
initEvent(context)
|
||||
|
||||
@@ -61,29 +66,30 @@ class SpeedPanelView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private val timerTask = object : TimerTask() {
|
||||
override fun run() {
|
||||
if (mLatLng != null) {
|
||||
mSpeedLimmit = MogoMapUIController.getInstance()
|
||||
.getLimitSpeed(mLatLng!!.longitude, mLatLng!!.latitude, mLatLng!!.bearing)
|
||||
UiThreadHandler.post {
|
||||
val speed = (mLatLng!!.speed * 3.6f).toInt()
|
||||
mSpeedChartView.setArcColor(Color.parseColor(if (speed > mSpeedLimmit) "#DB3137" else "#3E77F6"))
|
||||
mSpeedChartView.setValues(speed)
|
||||
setBackgroundResource(if (speed > mSpeedLimmit) R.drawable.yi_biao_pan_bg_speeding else R.drawable.yi_biao_pan_bg_nor)
|
||||
private var timerTask : TimerTask? = null
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow() // 注册位置回调
|
||||
mMogoServiceApis.registerCenterApi.registerCarLocationChangedListener(TAG, this)
|
||||
// 开启定时查询速度
|
||||
timerTask?.cancel()
|
||||
val task = object : TimerTask() {
|
||||
override fun run() {
|
||||
if (mLatLng != null) {
|
||||
|
||||
mSpeedLimmit = MogoMapUIController.getInstance()
|
||||
.getLimitSpeed(mLatLng!!.longitude, mLatLng!!.latitude, mLatLng!!.bearing)
|
||||
UiThreadHandler.post {
|
||||
val speed = (mLatLng!!.speed * 3.6f).toInt()
|
||||
mSpeedChartView.setArcColor(Color.parseColor(if (speed > mSpeedLimmit) "#DB3137" else "#3E77F6"))
|
||||
mSpeedChartView.setValues(speed)
|
||||
setBackgroundResource(if (speed > mSpeedLimmit) R.drawable.yi_biao_pan_bg_speeding else R.drawable.yi_biao_pan_bg_nor)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
// 注册位置回调
|
||||
mMogoServiceApis.registerCenterApi
|
||||
.registerCarLocationChangedListener(TAG, this)
|
||||
|
||||
// 开启定时查询速度
|
||||
Timer().schedule(timerTask, Date(), 100)
|
||||
this.timerTask = task
|
||||
timer.schedule(task, Date(), 100)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
@@ -92,7 +98,7 @@ class SpeedPanelView @JvmOverloads constructor(
|
||||
mMogoServiceApis.registerCenterApi
|
||||
.unregisterMogoLocationListener(TAG)
|
||||
try {
|
||||
timerTask.cancel()
|
||||
timerTask?.cancel()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@ import com.mogo.eagle.core.function.call.bindingcar.CallerBindingCarListenerMana
|
||||
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
|
||||
import com.mogo.eagle.core.utilcode.util.AppUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
|
||||
@@ -63,7 +63,6 @@ public class V2XScenarioManager implements IV2XScenarioManager {
|
||||
Intent intent = new Intent(V2XConst.BROADCAST_SCENE_ACTION);
|
||||
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity);
|
||||
LocalBroadcastManager.getInstance(Utils.getApp()).sendBroadcast(intent);
|
||||
AiRoadMarker.INSTANCE.clear();
|
||||
// 如果没有拿到之前的,根据类型分发
|
||||
switch (v2XMessageEntity.getType()) {
|
||||
case V2XMessageEntity.V2XTypeEnum.ALERT_ROAD_WARNING:
|
||||
|
||||
@@ -13,8 +13,10 @@ import androidx.lifecycle.Lifecycle.Event.ON_DESTROY
|
||||
import com.mogo.eagle.core.data.map.*
|
||||
import com.mogo.eagle.core.data.map.MapRoadInfo.StopLine
|
||||
import com.mogo.eagle.core.function.api.map.listener.*
|
||||
import com.mogo.eagle.core.function.api.v2x.*
|
||||
import com.mogo.eagle.core.function.call.map.*
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager.OnRoadListener
|
||||
import com.mogo.eagle.core.function.call.v2x.*
|
||||
import com.mogo.eagle.core.function.v2x.events.scenario.scene.road.*
|
||||
import com.mogo.eagle.core.utilcode.kotlin.*
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.*
|
||||
@@ -62,6 +64,27 @@ object AiRoadMarker {
|
||||
}
|
||||
}
|
||||
|
||||
private val onClearAllMarker = object : OnClearAllMarker {
|
||||
|
||||
override fun onClearAllMarkers() {
|
||||
Logger.d(TAG, "--- onClearAllMarkers ----")
|
||||
val marker = this@AiRoadMarker.marker.get()
|
||||
if (marker != null) {
|
||||
Logger.d(TAG, "--- onClearAllMarkers ----2")
|
||||
unMarker(marker)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onClearAllMarkers(tag: String) {
|
||||
Logger.d(TAG, "--- onClearAllMarkers ----: tag: $tag")
|
||||
val marker = this@AiRoadMarker.marker.get()
|
||||
if (marker != null) {
|
||||
Logger.d(TAG, "--- onClearAllMarkers ----: tag: -- 1: $tag")
|
||||
unMarker(marker)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private val markers = ConcurrentSet<Marker>()
|
||||
|
||||
private val options by lazy {
|
||||
@@ -160,12 +183,12 @@ object AiRoadMarker {
|
||||
try {
|
||||
val loc = arrayOf(location.longitude, location.latitude)
|
||||
carLocation.set(Triple(loc[0], loc[1], location.bearing.toDouble()))
|
||||
val marker = marker.get() ?: return
|
||||
val isOutOfRange = isOutOfRange(marker.poi_lon, marker.poi_lat, carLocation.get().first, carLocation.get().second, carLocation.get().third)
|
||||
if (isOutOfRange) {
|
||||
Logger.d(TAG, "--- onLocationChanged: isOutOfRange --- ")
|
||||
unMarker(marker)
|
||||
}
|
||||
// val marker = marker.get() ?: return
|
||||
// val isOutOfRange = isOutOfRange(marker.poi_lon, marker.poi_lat, carLocation.get().first, carLocation.get().second, carLocation.get().third)
|
||||
// if (isOutOfRange) {
|
||||
// Logger.d(TAG, "--- onLocationChanged: isOutOfRange --- ")
|
||||
// unMarker(marker)
|
||||
// }
|
||||
} catch (t: Throwable) {
|
||||
Logger.e(TAG, "error: ${t.message}")
|
||||
}
|
||||
@@ -174,11 +197,13 @@ object AiRoadMarker {
|
||||
|
||||
private fun onCreate() {
|
||||
CallerMapRoadListenerManager.registerRoadListener(TAG, onRoadListener)
|
||||
CallMarkersClearManager.addAllMarkersClearListener(TAG, onClearAllMarker)
|
||||
CallerMapLocationListenerManager.addListener(TAG, onLocationListener, true)
|
||||
}
|
||||
|
||||
private fun onDestroy() {
|
||||
CallerMapRoadListenerManager.unRegisterRoadListener(TAG)
|
||||
CallMarkersClearManager.removeAllMarkersClearListener(TAG)
|
||||
CallerMapLocationListenerManager.removeListener(TAG, true)
|
||||
pool.shutdownNow()
|
||||
removeLine()
|
||||
@@ -201,7 +226,15 @@ object AiRoadMarker {
|
||||
}
|
||||
|
||||
fun marker(marker: Marker, drawMarker: Boolean) {
|
||||
handler.removeCallbacks(checkExpiredTask)
|
||||
val location = carLocation.get() ?: return
|
||||
if (markers.contains(marker)) {
|
||||
Logger.d(TAG, "--- enqueue --- cache hit ---")
|
||||
return
|
||||
}
|
||||
synchronized(markers) {
|
||||
markers += marker
|
||||
}
|
||||
this.marker.set(marker)
|
||||
//施工中心点前方的自车行驶方向上300米距离
|
||||
val l1 = MogoMap.getInstance().mogoMap.getCenterLineRangeInfo(marker.poi_lon, marker.poi_lat, location.third.toFloat(), 300f)
|
||||
@@ -295,33 +328,7 @@ object AiRoadMarker {
|
||||
markers -= marker
|
||||
removeLine()
|
||||
V2XAiRoadEventMarker.removeMarkers(null)
|
||||
}
|
||||
|
||||
fun clear() {
|
||||
hideLine()
|
||||
V2XAiRoadEventMarker.removeMarkers(null)
|
||||
}
|
||||
|
||||
fun restore() {
|
||||
showLine()
|
||||
val marker = marker.get()
|
||||
if (marker != null) {
|
||||
marker(marker, false)
|
||||
}
|
||||
}
|
||||
|
||||
private fun hideLine() {
|
||||
val old = line.get()
|
||||
if (old != null && !old.isDestroyed) {
|
||||
old.isVisible = false
|
||||
}
|
||||
}
|
||||
|
||||
private fun showLine() {
|
||||
val old = line.get()
|
||||
if (old != null && !old.isDestroyed) {
|
||||
old.isVisible = true
|
||||
}
|
||||
handler.removeCallbacks(checkExpiredTask)
|
||||
}
|
||||
|
||||
private fun isOutOfRange(markerLon: Double, markerLat: Double, carLon: Double, carLat: Double, carAngle: Double): Boolean {
|
||||
@@ -335,13 +342,18 @@ object AiRoadMarker {
|
||||
|
||||
fun receive(marker: Marker) {
|
||||
val cur = this.marker.get()
|
||||
Logger.d(TAG, "receive --- 1 ---")
|
||||
if (cur == marker) {
|
||||
Logger.d(TAG, "receive --- 2 ---")
|
||||
val poi = this.marker.get()
|
||||
val car = this.carLocation.get()
|
||||
if (poi != null && car != null) {
|
||||
val distance = DrivingDirectionUtils.distance(car.first, car.second, marker.poi_lon, marker.poi_lat)
|
||||
if (distance < 300) {
|
||||
val distance = DrivingDirectionUtils.distance(car.first, car.second, marker.poi_lon, marker.poi_lat) * 10000
|
||||
Logger.d(TAG, "receive --- 3 ---:car:[${car.first}, ${car.second}] -> poi:[${marker.poi_lon}, ${marker.poi_lat}] --> distance:$distance")
|
||||
if (distance < 200) {
|
||||
checkExpired()
|
||||
} else {
|
||||
handler.removeCallbacks(checkExpiredTask)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -349,7 +361,7 @@ object AiRoadMarker {
|
||||
|
||||
private fun checkExpired() {
|
||||
handler.removeCallbacks(checkExpiredTask)
|
||||
handler.postDelayed(checkExpiredTask, 5000)
|
||||
handler.postDelayed(checkExpiredTask, 60_000)
|
||||
}
|
||||
|
||||
data class Marker(
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.mogo.eagle.core.function.api.v2x
|
||||
|
||||
interface OnClearAllMarker {
|
||||
|
||||
fun onClearAllMarkers()
|
||||
|
||||
fun onClearAllMarkers(tag: String)
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.mogo.eagle.core.function.call.v2x
|
||||
|
||||
import com.mogo.eagle.core.function.api.v2x.*
|
||||
import java.util.concurrent.*
|
||||
|
||||
object CallMarkersClearManager {
|
||||
|
||||
private val listeners by lazy { ConcurrentHashMap<String, ArrayList<OnClearAllMarker>>() }
|
||||
|
||||
fun addAllMarkersClearListener(tag: String, listener: OnClearAllMarker) {
|
||||
var ll = listeners[tag]
|
||||
if (ll == null) {
|
||||
ll = ArrayList()
|
||||
}
|
||||
ll.add(listener)
|
||||
listeners[tag] = ll
|
||||
}
|
||||
|
||||
fun removeAllMarkersClearListener(tag: String) {
|
||||
listeners.remove(tag)
|
||||
}
|
||||
|
||||
fun invokeClearAllMarkers() {
|
||||
listeners.values.flatten().forEach {
|
||||
it.onClearAllMarkers()
|
||||
}
|
||||
}
|
||||
|
||||
fun invokeClearAllMarkersOfTag(tag: String) {
|
||||
listeners.values.flatten().forEach {
|
||||
it.onClearAllMarkers(tag)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -175,4 +175,4 @@ ADAS_DATA_LIB_CHILD_VERSION=.0
|
||||
|
||||
|
||||
# 线程优化版本
|
||||
THREAD_OPT_VERSION=3.0.1
|
||||
THREAD_OPT_VERSION=3.0.2
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.mogo.map;
|
||||
import android.content.Context;
|
||||
|
||||
import com.mogo.eagle.core.data.map.MogoLatLng;
|
||||
import com.mogo.eagle.core.function.call.v2x.CallMarkersClearManager;
|
||||
import com.mogo.map.marker.IMogoMarker;
|
||||
import com.mogo.map.marker.IMogoMarkerManager;
|
||||
import com.mogo.map.marker.MogoMarkerOptions;
|
||||
@@ -100,11 +101,13 @@ public class MogoMarkerManager implements IMogoMarkerManager {
|
||||
|
||||
@Override
|
||||
public void removeMarkers( String tag ) {
|
||||
CallMarkersClearManager.INSTANCE.invokeClearAllMarkersOfTag(tag);
|
||||
MogoMarkersHandler.getInstance().remove( tag );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeMarkers() {
|
||||
CallMarkersClearManager.INSTANCE.invokeClearAllMarkers();
|
||||
MogoMarkersHandler.getInstance().removeAll();
|
||||
}
|
||||
|
||||
@@ -115,6 +118,7 @@ public class MogoMarkerManager implements IMogoMarkerManager {
|
||||
|
||||
@Override
|
||||
public void inVisibleAllMarkers() {
|
||||
CallMarkersClearManager.INSTANCE.invokeClearAllMarkers();
|
||||
MogoMarkersHandler.getInstance().inVisibleAll();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
package com.mogo.module.service.routeoverlay;
|
||||
|
||||
import android.os.SystemClock;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
||||
@@ -16,15 +12,11 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager;
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.locks.Lock;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
import mogo_msg.MogoReportMsg;
|
||||
@@ -62,7 +54,6 @@ public class MogoRouteOverlayManager implements
|
||||
|
||||
@Override
|
||||
public void onAutopilotTrajectory(@NonNull List<MessagePad.TrajectoryPoint> items) {
|
||||
Logger.d(TAG, "--- onAutopilotTrajectory ---:" + items.size());
|
||||
synchronized (queue) {
|
||||
queue.clear();
|
||||
queue.offer(items);
|
||||
@@ -75,11 +66,13 @@ public class MogoRouteOverlayManager implements
|
||||
return;
|
||||
}
|
||||
if (isArriveAtStation.get() && autopilotMode.get() != 1) {
|
||||
Logger.d(TAG, "--- onLocationChanged 1 -- [isDemo1: " + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData + ",isDemo2:" +FunctionBuildConfig.isDemoMode + ",isGps:" + isGps + ",mode:" + autopilotMode.get() + ",lon:" + location.getLongitude() + ",lat:" + location.getLatitude() + ",angle:" + location.getBearing() + "]");
|
||||
RouteOverlayDrawer.getInstance().clearMogoRouteOverlay();
|
||||
return;
|
||||
}
|
||||
boolean force = FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData;
|
||||
if (!force && autopilotMode.get() != 1) {
|
||||
Logger.d(TAG, "--- onLocationChanged 2 -- [isDemo1: " + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData + ",isDemo2:" +FunctionBuildConfig.isDemoMode + ",isGps:" + isGps + ",mode:" + autopilotMode.get() + ",lon:" + location.getLongitude() + ",lat:" + location.getLatitude() + ",angle:" + location.getBearing() + "]");
|
||||
RouteOverlayDrawer.getInstance().clearMogoRouteOverlay();
|
||||
return;
|
||||
}
|
||||
@@ -87,11 +80,11 @@ public class MogoRouteOverlayManager implements
|
||||
if (!queue.isEmpty()) {
|
||||
List<MessagePad.TrajectoryPoint> items = queue.pollLast();
|
||||
if (items != null && !items.isEmpty()) {
|
||||
Logger.d(TAG, "--- onLocationChanged -- [isDemo1: " + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData + ",isDemo2:" +FunctionBuildConfig.isDemoMode + ",isGps:" + isGps + ",mode:" + autopilotMode.get() + ",lon:" + location.getLongitude() + ",lat:" + location.getLatitude() + ",angle:" + location.getBearing() + "]");
|
||||
RouteOverlayDrawer.getInstance().drawTrajectoryList(items, location.getBearing());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -100,10 +93,6 @@ public class MogoRouteOverlayManager implements
|
||||
|
||||
@Override
|
||||
public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autoPilotStatusInfo) {
|
||||
if (FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData) {
|
||||
isArriveAtStation.set(false);
|
||||
return;
|
||||
}
|
||||
int mode = autoPilotStatusInfo.getPilotmode();
|
||||
if (mode == 1) {
|
||||
isArriveAtStation.set(false);
|
||||
@@ -116,7 +105,6 @@ public class MogoRouteOverlayManager implements
|
||||
if (arrivalNotification == null) {
|
||||
return;
|
||||
}
|
||||
Log.d(TAG, "onArriveAt data : " + arrivalNotification);
|
||||
if (!isArriveAtStation.get()) {
|
||||
isArriveAtStation.set(true);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user