From 659daf74b96821e9425816c721c19f130bd9c44a Mon Sep 17 00:00:00 2001 From: aibingbing Date: Tue, 5 Mar 2024 19:44:35 +0800 Subject: [PATCH] =?UTF-8?q?[V630]=20refactor:=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=9D=90=E6=A0=87=E5=9B=9E=E8=B0=83=E5=A4=84=E7=90=86=E7=9A=84?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E6=B1=A0=EF=BC=9B=20refactor:=20=E5=9D=90?= =?UTF-8?q?=E6=A0=87=E8=AE=A2=E9=98=85=E9=99=8D=E9=A2=91=EF=BC=88=E9=80=9F?= =?UTF-8?q?=E5=BA=A6=E6=88=96view=E6=9B=B4=E6=96=B0=E7=AD=89=E5=8F=98?= =?UTF-8?q?=E4=B8=BA3Hz=EF=BC=8C=E5=9D=90=E6=A0=87=E5=9B=B4=E6=A0=8F?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6=E5=88=B0=E7=AB=99=E5=8F=98?= =?UTF-8?q?=E4=B8=BA5Hz=EF=BC=89=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/bus/model/OrderModel.java | 12 ++- .../bus/passenger/model/BusPassengerModel.kt | 9 ++- .../passenger/model/PM2DrivingModel.kt | 7 +- .../mogo/och/charter/model/DriverM1Model.kt | 6 +- .../view/carstatus/CarStatusViewModel.kt | 2 +- .../ui/itinerary/ItineraryViewModel.kt | 2 +- .../module/utils/OCHThreadPoolManager.java | 43 +++++++++++ .../com/mogo/och/bus/model/OrderModel.java | 10 ++- .../passenger/model/BusPassengerModel.java | 2 +- .../passenger/model/PM2DrivingModel.kt | 2 +- .../com/mogo/och/taxi/model/TaxiModel.java | 30 +++++--- .../mogo/och/taxi/ui/TaxiMapDirectionView.kt | 2 +- .../mogo/och/taxi/ui/speed/SpeedViewModel.kt | 2 +- .../och/taxi/passenger/ui/speed/SpeedView.kt | 2 +- .../taxi/ui/navi/auto/TaxiMapDirectionView.kt | 2 +- .../och/taxi/ui/routing/TaxiRoutingModel.kt | 75 ++++++++++--------- .../mogo/och/taxi/ui/task/TaxiTaskModel.kt | 23 +++--- .../och/taxi/passenger/ui/speed/SpeedView.kt | 2 +- 18 files changed, 155 insertions(+), 78 deletions(-) diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java index 1ac67ca55a..1ae92675a1 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java @@ -32,6 +32,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager; 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.CoordinateUtils; import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils; import com.mogo.eagle.core.utilcode.util.NetworkUtils; @@ -69,6 +70,7 @@ import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.DateTimeUtil; import com.mogo.och.common.module.utils.MultiRequestLimitChecker; import com.mogo.och.common.module.utils.NumberFormatUtil; +import com.mogo.och.common.module.utils.OCHThreadPoolManager; import com.mogo.och.common.module.utils.PinYinUtil; import com.mogo.och.common.module.utils.ToastUtilsOch; import com.mogo.och.common.module.voice.VoiceManager; @@ -151,7 +153,7 @@ public class OrderModel { mContext = AbsMogoApplication.getApp(); loginService = (LoginService) ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation(); // 定位监听 - CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,10, mMapLocationListener); + CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,5, mMapLocationListener); MogoStatusManager.getInstance().registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener); @@ -384,13 +386,19 @@ public class OrderModel { @Override public void onChassisLocationGCJ02(@Nullable MogoLocation gnssInfo) { if (null == gnssInfo) return; + Logger.d(TAG, "onChassisLocationGCJ02"); if (mControllerStatusCallback != null) { mControllerStatusCallback.onCarLocationChanged(gnssInfo); } //是否到站的围栏判断 离站状态并且自动驾驶还未触发到站 if (isGoingToNextStation && !isArrivedStation) { - judgeArrivedStation(gnssInfo); + OCHThreadPoolManager.getsInstance().locationExecute(new Runnable() { + @Override + public void run() { + judgeArrivedStation(gnssInfo); + } + }); } } }; diff --git a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/model/BusPassengerModel.kt b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/model/BusPassengerModel.kt index 1fd3869bda..ecd0dd6eaf 100644 --- a/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/model/BusPassengerModel.kt +++ b/OCH/bus/passenger/src/main/java/jinlv/com/mogo/och/bus/passenger/model/BusPassengerModel.kt @@ -61,6 +61,7 @@ import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceM import com.mogo.och.common.module.manager.loopmanager.BizLoopManager import com.mogo.och.common.module.manager.loopmanager.LoopInfo import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.common.module.utils.OCHThreadPoolManager import com.mogo.och.common.module.utils.PinYinUtil import com.mogo.och.data.bean.BusRoutesResult import com.mogo.och.data.bean.BusStationBean @@ -342,7 +343,7 @@ object BusPassengerModel { mMogoStatusChangedListener ) // 定位监听 - addListener(TAG, 10, mMapLocationListener) + addListener(TAG, 3, mMapLocationListener) //监听司机端消息 CallerTelematicListenerManager.addListener(TAG, mReceivedMsgListener) @@ -466,8 +467,10 @@ object BusPassengerModel { override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { if (null == mogoLocation) return mLocation = mogoLocation - for (callback in mControllerStatusCallbackMap.values) { - callback.onCarLocationChanged(mogoLocation) + OCHThreadPoolManager.getsInstance().locationExecute { + for (callback in mControllerStatusCallbackMap.values) { + callback.onCarLocationChanged(mogoLocation) + } } } } diff --git a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/model/PM2DrivingModel.kt b/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/model/PM2DrivingModel.kt index f055443186..bedc3c1ed2 100644 --- a/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/model/PM2DrivingModel.kt +++ b/OCH/bus/passenger/src/main/java/m2/com/mogo/och/bus/passenger/passenger/model/PM2DrivingModel.kt @@ -46,6 +46,7 @@ import com.mogo.och.common.module.manager.distancemamager.IDistanceListener import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager import com.mogo.och.common.module.manager.loopmanager.BizLoopManager import com.mogo.och.common.module.manager.loopmanager.LoopInfo +import com.mogo.och.common.module.utils.OCHThreadPoolManager import kotlin.math.abs /** @@ -108,7 +109,7 @@ class PM2DrivingModel private constructor() { CallerAutoPilotStatusListenerManager.addListener(TAG, mAutoPilotStatusListener) // 定位监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10, mMapLocationListener) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 3, mMapLocationListener) //司乘屏通信监听 CallerTelematicListenerManager.addListener(TAG, mReceivedMsgListener) @@ -257,7 +258,9 @@ class PM2DrivingModel private constructor() { override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { if (null == mogoLocation) return mLocation = mogoLocation - updateSpeed(mogoLocation) + OCHThreadPoolManager.getsInstance().locationExecute { + updateSpeed(mogoLocation) + } } } diff --git a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt index afa4cbcab6..a79fd261cc 100644 --- a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt +++ b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/model/DriverM1Model.kt @@ -112,7 +112,7 @@ class DriverM1Model { fun init(context: Context) { mContext = context // 定位监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10, mMapLocationListener) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 5, mMapLocationListener) //开启自驾后 异常信息返回 OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(mAdasStartFailureListener) @@ -365,7 +365,9 @@ class DriverM1Model { //是否到站的围栏判断 自动驾驶还未触发到站 if (!isArrivedStation) { - judgeArrivedStation(gnssInfo) + OCHThreadPoolManager.getsInstance().locationExecute { + judgeArrivedStation(gnssInfo) + } } } } diff --git a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/view/carstatus/CarStatusViewModel.kt b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/view/carstatus/CarStatusViewModel.kt index c64e42e8b9..b1599270e4 100644 --- a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/view/carstatus/CarStatusViewModel.kt +++ b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/view/carstatus/CarStatusViewModel.kt @@ -29,7 +29,7 @@ class CarStatusViewModel: ViewModel(), IMoGoAutopilotStatusListener, fun setAutopilotStatusCallback(viewCallback:ICarStatusCallback){ this.viewCallback = viewCallback - CallerChassisLocationGCJ02ListenerManager.addListener(DriverM1Model.TAG, 10, this) + CallerChassisLocationGCJ02ListenerManager.addListener(DriverM1Model.TAG, 3, this) } interface ICarStatusCallback{ diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/itinerary/ItineraryViewModel.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/itinerary/ItineraryViewModel.kt index edb92d3f4c..3f74a4c6cb 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/itinerary/ItineraryViewModel.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/itinerary/ItineraryViewModel.kt @@ -24,7 +24,7 @@ class ItineraryViewModel : ViewModel(), IMoGoChassisLocationGCJ02Listener, IDist private var viewCallback: ItineraryViewCallback? = null init { - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 4, this) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 3, this) CharterPassengerModel.setStationDistanceListener(TAG, this) CharterPassengerModel.setStatusChangeListener(TAG, this) } diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/OCHThreadPoolManager.java b/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/OCHThreadPoolManager.java index 8eb92a1132..0ced0d82a4 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/OCHThreadPoolManager.java +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/OCHThreadPoolManager.java @@ -134,6 +134,49 @@ public class OCHThreadPoolManager { } } + //====================================================================================== + //=============== 位置坐标回调处理线程池 ========== + //====================================================================================== + /** + * 线程池的对象(高频坐标处理, keepAliveTime=30s, 等待队列容量=200, 异常处理机制=丢弃队列最前面的任务) + */ + private ThreadPoolExecutor locationExecutor; + + /** + * 开启一个无返回结果的线程 + */ + public void locationExecute(Runnable r) { + if (locationExecutor == null) { + /* + * corePoolSize:核心线程数 + * maximumPoolSize:线程池所容纳最大线程数(workQueue队列满了之后才开启) + * keepAliveTime:非核心线程闲置时间超时时长 + * unit:keepAliveTime的单位 + * workQueue:等待队列,存储还未执行的任务 + * threadFactory:线程创建的工厂 + * handler:异常处理机制 + * + */ + locationExecutor = new ThreadPoolExecutor(CPU_COUNT + 1, CPU_COUNT * 2 + 1, + 30, TimeUnit.SECONDS, new ArrayBlockingQueue<>(200), + Executors.defaultThreadFactory(), new ThreadPoolExecutor.DiscardOldestPolicy()); + } + // 把一个任务丢到了线程池中 + try { + locationExecutor.execute(r); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 把任务移除等待队列 + */ + public void locationCancel(Runnable r) { + if (r != null) { + locationExecutor.getQueue().remove(r); + } + } } diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java index 67ef68f454..ac87137f3f 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/bus/model/OrderModel.java @@ -29,6 +29,7 @@ import com.mogo.och.common.module.bean.dpmsg.LoginCacheStatus; import com.mogo.och.common.module.bean.dpmsg.TaskDetailsMsg; import com.mogo.och.common.module.biz.constant.LoginStatusManager; import com.mogo.och.common.module.utils.MultiRequestLimitChecker; +import com.mogo.och.common.module.utils.OCHThreadPoolManager; import com.mogo.och.data.bean.BusStationBean; import com.mogo.och.common.module.biz.common.socketmessage.data.SystemMsg; import com.mogo.och.common.module.biz.constant.OchCommonConst; @@ -131,7 +132,7 @@ public class OrderModel { mContext = AbsMogoApplication.getApp(); loginService = (LoginService) ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation(); // 定位监听 - CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,10,mMapLocationListener); + CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,5,mMapLocationListener); //开启自驾后 异常信息返回 OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(mAdasStartFailureListener); @@ -310,7 +311,12 @@ public class OrderModel { //是否到站的围栏判断 离站状态并且自动驾驶还未触发到站 if (isGoingToNextStation && !isArrivedStation) { - judgeArrivedStation(mogoLocation); + OCHThreadPoolManager.getsInstance().locationExecute(new Runnable() { + @Override + public void run() { + judgeArrivedStation(mogoLocation); + } + }); } } }; diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/model/BusPassengerModel.java b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/model/BusPassengerModel.java index 207789f6bf..c5f2faa075 100644 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/model/BusPassengerModel.java +++ b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/model/BusPassengerModel.java @@ -342,7 +342,7 @@ public class BusPassengerModel { IntentManager.getInstance().registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener ); MogoStatusManager.getInstance().registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener ); // 定位监听 - CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, 10,mMapLocationListener); + CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, 3,mMapLocationListener); //2021.11.1 自动驾驶路线规划接口 CallerPlanningRottingListenerManager.INSTANCE.addListener(TAG,moGoAutopilotPlanningListener); diff --git a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2DrivingModel.kt b/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2DrivingModel.kt index 1adc4bd9a0..b0c1ef3abf 100644 --- a/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2DrivingModel.kt +++ b/OCH/shuttle/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2DrivingModel.kt @@ -107,7 +107,7 @@ class PM2DrivingModel private constructor() { CallerAutoPilotStatusListenerManager.addListener(TAG, mAutoPilotStatusListener) // 定位监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10, mMapLocationListener) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 3, mMapLocationListener) //司乘屏通信监听 CallerTelematicListenerManager.addListener(TAG, mReceivedMsgListener) diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index b801851a6d..ae3054551e 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -54,6 +54,7 @@ import com.mogo.och.common.module.manager.distancemamager.ITrajectoryListener; import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager; import com.mogo.och.common.module.map.AmapNaviToDestinationModel; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; +import com.mogo.och.common.module.utils.OCHThreadPoolManager; import com.mogo.och.common.module.utils.PinYinUtil; import com.mogo.och.common.module.utils.ToastUtilsOch; import com.mogo.och.common.module.voice.VoiceNotice; @@ -222,7 +223,7 @@ public class TaxiModel { IntentManager.getInstance().registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener); //定位监听, 传false是高德坐标系 - CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,10, mMapLocationListener); + CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,5, mMapLocationListener); //2021.11.1 自动驾驶路线规划接口 CallerPlanningRottingListenerManager.INSTANCE.addListener(TAG, moGoAutopilotPlanningListener); @@ -1093,18 +1094,23 @@ public class TaxiModel { public void onChassisLocationGCJ02(@Nullable MogoLocation gnssInfo) { //位置变化时,通过围栏判断是否到达x点 if (null == gnssInfo) return; - if (checkCurrentOCHOrder()) { - if (getCurOrderStatus() == TaxiOrderStatusEnum.OnTheWayToStart) { - judgeStartStation(gnssInfo); - } - if (getCurOrderStatus() == TaxiOrderStatusEnum.OnTheWayToEnd) { - judgeEndStation(gnssInfo); - } - } + OCHThreadPoolManager.getsInstance().locationExecute(new Runnable() { + @Override + public void run() { + if (checkCurrentOCHOrder()) { + if (getCurOrderStatus() == TaxiOrderStatusEnum.OnTheWayToStart) { + judgeStartStation(gnssInfo); + } + if (getCurOrderStatus() == TaxiOrderStatusEnum.OnTheWayToEnd) { + judgeEndStation(gnssInfo); + } + } - mLongitude = gnssInfo.getLongitude(); - mLatitude = gnssInfo.getLatitude(); - mLocation = gnssInfo; + mLongitude = gnssInfo.getLongitude(); + mLatitude = gnssInfo.getLatitude(); + mLocation = gnssInfo; + } + }); } }; diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.kt b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.kt index 5718ed6a16..421c233e39 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.kt +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.kt @@ -68,7 +68,7 @@ class TaxiMapDirectionView @JvmOverloads constructor( initAMapView() // 注册定位监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10, this) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 3, this) } override fun onDetachedFromWindow() { diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/speed/SpeedViewModel.kt b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/speed/SpeedViewModel.kt index 6ef0849565..f3d6fe5812 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/speed/SpeedViewModel.kt +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/speed/SpeedViewModel.kt @@ -23,7 +23,7 @@ class SpeedViewModel: ViewModel(), IMoGoChassisLocationGCJ02Listener { fun setAutopilotStatusCallback(viewCallback: ISpeedCallback){ this.viewCallback = viewCallback //定位监听, 传false是高德坐标系 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10, this) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 3, this) } diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/speed/SpeedView.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/speed/SpeedView.kt index d7203b5faa..76d85e8510 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/speed/SpeedView.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/speed/SpeedView.kt @@ -32,7 +32,7 @@ class SpeedView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener { override fun onVisibilityAggregated(isVisible: Boolean) { super.onVisibilityAggregated(isVisible) if(isVisible){ - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 4, this) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 3, this) }else{ CallerChassisLocationGCJ02ListenerManager.removeListener(TAG) } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/TaxiMapDirectionView.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/TaxiMapDirectionView.kt index 9fd62f28d6..692760592f 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/TaxiMapDirectionView.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/TaxiMapDirectionView.kt @@ -68,7 +68,7 @@ class TaxiMapDirectionView @JvmOverloads constructor( initAMapView() // 注册定位监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10, this) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 3, this) } override fun onDetachedFromWindow() { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/routing/TaxiRoutingModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/routing/TaxiRoutingModel.kt index e6c738e781..c857f4495e 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/routing/TaxiRoutingModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/routing/TaxiRoutingModel.kt @@ -23,6 +23,7 @@ import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager +import com.mogo.och.common.module.utils.OCHThreadPoolManager import com.mogo.och.taxi.bean.ContrailBean import com.mogo.och.taxi.bean.EndGrayContrailTaskReq import com.mogo.och.taxi.bean.EndGrayTaskFeedbackType @@ -144,52 +145,54 @@ object TaxiRoutingModel { if (null == currentLocation) return val endSite = currentGrayLineBean?.endSite ?: return - val endLon = endSite.gcjLon - val endLat = endSite.gcjLat + OCHThreadPoolManager.getsInstance().locationExecute { + val endLon = endSite.gcjLon + val endLat = endSite.gcjLat - val distance = CoordinateUtils.calculateLineDistance( - endLon, - endLat, - currentLocation.longitude, - currentLocation.latitude - ).toDouble() - CallerLogger.i(TAG, "judgeEndStation() distance = $distance") - //1、当前位置和站点围栏15m内 - if (distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE) { - //2、开始计算当前位置和站点的向量角度 < 90度 未经过 >90度 经过 - val stationAngle = DrivingDirectionUtils.getDegreeOfCar2Poi( - currentLocation.longitude, - currentLocation.latitude, + val distance = CoordinateUtils.calculateLineDistance( endLon, endLat, - currentLocation.heading.toInt() + currentLocation.longitude, + currentLocation.latitude ).toDouble() - CallerLogger.i(TAG, "judgeEndStation() stationAngle = $stationAngle") + CallerLogger.i(TAG, "judgeEndStation() distance = $distance") + //1、当前位置和站点围栏15m内 + if (distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE) { + //2、开始计算当前位置和站点的向量角度 < 90度 未经过 >90度 经过 + val stationAngle = DrivingDirectionUtils.getDegreeOfCar2Poi( + currentLocation.longitude, + currentLocation.latitude, + endLon, + endLat, + currentLocation.heading.toInt() + ).toDouble() + CallerLogger.i(TAG, "judgeEndStation() stationAngle = $stationAngle") - //3、刚过站且过站距离在15m内, 提交到站 - if (stationAngle > 90) { - CallerLogger.i(TAG, "judgeEndStation() = 刚过站且在15m内") - DebugView.printInfoMsg( - "[自车定位围栏] 触发围栏, endSiteId=${currentGrayLineBean?.endSite?.siteId}, endSiteName=${currentGrayLineBean?.endSite?.siteName}, lineId=${currentGrayLineBean?.lineId},围栏范围:${TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE}米 刚过站且在15m内" - ) - mTaxiRoutingCallbackMap.forEach { - val listener = it.value - listener.onGDMapArriveAtEndStation(currentGrayId) - } - } else { - // 4、 没有过站距离小于15m 速度小于0.3(根据M1来的模数 可能要调) - if (currentLocation.gnssSpeed < 0.3) { - CallerLogger.i( - TAG, - "judgeEndStation() = 没有过站、速度基本为零且在15m内" - ) + //3、刚过站且过站距离在15m内, 提交到站 + if (stationAngle > 90) { + CallerLogger.i(TAG, "judgeEndStation() = 刚过站且在15m内") DebugView.printInfoMsg( - "[自车定位围栏] 触发围栏, endSiteId=${currentGrayLineBean?.endSite?.siteId}, endSiteName=${currentGrayLineBean?.endSite?.siteName}, lineId=${currentGrayLineBean?.lineId},围栏范围:${TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE}米 没有过站、速度基本为零且在15m内" + "[自车定位围栏] 触发围栏, endSiteId=${currentGrayLineBean?.endSite?.siteId}, endSiteName=${currentGrayLineBean?.endSite?.siteName}, lineId=${currentGrayLineBean?.lineId},围栏范围:${TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE}米 刚过站且在15m内" ) mTaxiRoutingCallbackMap.forEach { val listener = it.value listener.onGDMapArriveAtEndStation(currentGrayId) } + } else { + // 4、 没有过站距离小于15m 速度小于0.3(根据M1来的模数 可能要调) + if (currentLocation.gnssSpeed < 0.3) { + CallerLogger.i( + TAG, + "judgeEndStation() = 没有过站、速度基本为零且在15m内" + ) + DebugView.printInfoMsg( + "[自车定位围栏] 触发围栏, endSiteId=${currentGrayLineBean?.endSite?.siteId}, endSiteName=${currentGrayLineBean?.endSite?.siteName}, lineId=${currentGrayLineBean?.lineId},围栏范围:${TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE}米 没有过站、速度基本为零且在15m内" + ) + mTaxiRoutingCallbackMap.forEach { + val listener = it.value + listener.onGDMapArriveAtEndStation(currentGrayId) + } + } } } } @@ -198,7 +201,7 @@ object TaxiRoutingModel { fun addGDMapCurrentLocationListener() { //定位监听, 传false是高德坐标系 10 -> 100ms一次 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10, mMapLocationListener) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 5, mMapLocationListener) } fun removeGDMapCurrentLocationListener() { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt index ea384630c7..f04a93a918 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt @@ -53,6 +53,7 @@ import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceM import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager.setStationPoint import com.mogo.och.common.module.map.AmapNaviToDestinationModel import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil.coordinateConverterWgsToGcjLocations +import com.mogo.och.common.module.utils.OCHThreadPoolManager import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.taxi.bean.PrepareTaskRespBean import com.mogo.och.taxi.bean.QueryCarOrderByNoRespBean @@ -215,7 +216,7 @@ object TaxiTaskModel { // 2021.11.1重构自动驾驶 实现接口 IMoGoAutopilotStatusListener 注册监听 替换IMogoAdasOCHCallback接口 CallerAutoPilotStatusListenerManager.addListener(TAG, mMogoAutopilotStatusListener) //定位监听, 传false是高德坐标系 10 -> 100ms一次 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10, mMapLocationListener) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 5, mMapLocationListener) //2021.11.1 自动驾驶路线规划接口 CallerPlanningRottingListenerManager.addListener(TAG, mMogoAutopilotPlanningListener) //开启自驾后 异常信息返回 @@ -416,17 +417,19 @@ object TaxiTaskModel { //位置变化时,通过围栏判断是否到达x点 if (null == mogoLocation) return - if (mDriveToNearestStationTask != null) { - judgeDriveToNearestStationTaskStation(mDriveToNearestStationTask, mogoLocation) - } + OCHThreadPoolManager.getsInstance().locationExecute { + if (mDriveToNearestStationTask != null) { + judgeDriveToNearestStationTaskStation(mDriveToNearestStationTask, mogoLocation) + } - if (checkCurrentTaskCondition() - && QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder) - ) { - judgeTaskEndSiteStation(mogoLocation) - } + if (checkCurrentTaskCondition() + && QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder) + ) { + judgeTaskEndSiteStation(mogoLocation) + } - mControllerStatusCallback?.onCarLocationChanged(mogoLocation) + mControllerStatusCallback?.onCarLocationChanged(mogoLocation) + } } } diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/speed/SpeedView.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/speed/SpeedView.kt index 98704a5dde..0a97755047 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/speed/SpeedView.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/speed/SpeedView.kt @@ -32,7 +32,7 @@ class SpeedView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener { override fun onVisibilityAggregated(isVisible: Boolean) { super.onVisibilityAggregated(isVisible) if(isVisible){ - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 4, this) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 3, this) }else{ CallerChassisLocationGCJ02ListenerManager.removeListener(TAG) }