Merge branch 'dev_robotaxi-d_240705_6.5.0' of gitlab.zhidaoauto.com:SCA/L4HA/AndroidApp/MoGoEagleEye into dev_robotaxi-d_240705_6.5.0
This commit is contained in:
@@ -117,16 +117,6 @@
|
||||
app:layout_goneMarginEnd="40dp"
|
||||
app:layout_goneMarginTop="@dimen/dp_236" />
|
||||
|
||||
<!-- 前方路况探查 -->
|
||||
<com.mogo.eagle.core.function.view.RoadCrossRoamView
|
||||
android:layout_width="@dimen/dp_600"
|
||||
android:layout_height="@dimen/dp_740"
|
||||
android:layout_marginTop="@dimen/dp_350"
|
||||
android:layout_marginRight="@dimen/dp_50"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!-- 地图marker点击触发路侧直播 -->
|
||||
<com.mogo.eagle.core.function.hmi.ui.camera.RoadCrossLiveView
|
||||
android:layout_width="@dimen/dp_800"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.taxi.constant
|
||||
package com.mogo.och.common.module.biz.order
|
||||
|
||||
/**
|
||||
* Created on 2021/12/7
|
||||
@@ -79,7 +79,7 @@ import com.mogo.och.taxi.callback.ITaxiCarOperationalCallback;
|
||||
import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback;
|
||||
import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback;
|
||||
import com.mogo.och.taxi.constant.TaxiConst;
|
||||
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.taxi.constant.TaxiOrderTypeEnum;
|
||||
import com.mogo.och.taxi.network.TaxiServiceManager;
|
||||
import com.mogo.och.taxi.utils.OrderUtil;
|
||||
|
||||
@@ -30,7 +30,7 @@ import com.mogo.och.taxi.callback.ITaxiADASStatusCallback;
|
||||
import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback;
|
||||
import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback;
|
||||
import com.mogo.och.taxi.constant.TaxiConst;
|
||||
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.taxi.model.TaxiModel;
|
||||
import com.mogo.och.taxi.ui.TaxiFragment;
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@ import com.mogo.och.common.module.utils.ResourcesUtils;
|
||||
import com.mogo.och.common.module.wigets.map.orderstatus.OrderStatusView;
|
||||
import com.mogo.och.common.module.wigets.map.overmapview.OverMapDialog;
|
||||
import com.mogo.och.common.module.wigets.map.switchvisual.VisualViewDirver;
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager;
|
||||
import com.mogo.och.taxi.R;
|
||||
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils;
|
||||
@@ -141,6 +142,7 @@ public abstract class BaseTaxiTabFragment<V extends IView, P extends Presenter<V
|
||||
}
|
||||
return false;
|
||||
});
|
||||
CallerHmiViewControlListenerManager.INSTANCE.invokeMainPageViewVisible(View.VISIBLE);
|
||||
|
||||
onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0));
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ import com.mogo.och.common.module.voice.VoiceNotice;
|
||||
import com.mogo.och.common.module.wigets.OCHCommitDialog;
|
||||
import com.mogo.och.taxi.R;
|
||||
import com.mogo.och.taxi.constant.TaxiConst;
|
||||
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.taxi.bean.OrderQueryRespBean;
|
||||
import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean;
|
||||
import com.mogo.och.taxi.model.TaxiModel;
|
||||
|
||||
@@ -15,7 +15,6 @@ import androidx.annotation.Nullable;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
|
||||
import com.mogo.commons.AbsMogoApplication;
|
||||
import com.mogo.eagle.core.data.temp.EventLogout;
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
@@ -23,7 +22,7 @@ import com.mogo.map.overlay.IMoGoOverlayManager;
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusManager;
|
||||
import com.mogo.och.common.module.biz.login.OpenOrderStatusEnum;
|
||||
import com.mogo.och.taxi.R;
|
||||
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.taxi.bean.OrderQueryRespBean;
|
||||
import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean;
|
||||
import com.mogo.och.taxi.model.TaxiModel;
|
||||
|
||||
@@ -25,7 +25,7 @@ import androidx.annotation.RequiresApi;
|
||||
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
||||
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.taxi.R;
|
||||
import com.mogo.och.taxi.constant.TaxiOrderCancelReasons;
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ import com.google.android.material.tabs.TabLayout;
|
||||
import com.mogo.commons.mvp.MvpDialogFragment;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil;
|
||||
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.taxi.R;
|
||||
import com.mogo.och.taxi.bean.OrderQueryRespBean;
|
||||
import com.mogo.och.taxi.constant.TaxiOrderTypeEnum;
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.mogo.eagle.core.utilcode.util.GsonUtils;
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager;
|
||||
import com.mogo.och.taxi.bean.OrderQueryRespBean;
|
||||
import com.mogo.och.taxi.constant.TaxiConst;
|
||||
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.taxi.model.TaxiModel;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@@ -23,10 +23,9 @@ import com.mogo.och.common.module.utils.PinYinUtil
|
||||
import com.mogo.och.common.module.voice.VoiceNotice
|
||||
import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean
|
||||
import com.mogo.och.taxi.passenger.bean.TaxiPassengerStartReqBean
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.TaxiPassengerOrderStatusEnum
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceManager
|
||||
import com.mogo.och.taxi.passenger.utils.TaxiPassengerAnalyticsManager
|
||||
import java.lang.StringBuilder
|
||||
|
||||
object AutopilotManager : IOchAutopilotStatusListener {
|
||||
|
||||
@@ -53,7 +52,7 @@ object AutopilotManager : IOchAutopilotStatusListener {
|
||||
ToastUtils.showShort("当前订单不存在或异常!")
|
||||
return "当前订单不存在或异常!"
|
||||
}
|
||||
if (TaxiPassengerModel.currentOCHOrder!!.orderStatus == TaxiPassengerOrderStatusEnum.UserArriveAtStart.code) {
|
||||
if (TaxiPassengerModel.currentOCHOrder!!.orderStatus == TaxiOrderStatusEnum.UserArriveAtStart.code) {
|
||||
startServicePilotDone()
|
||||
}
|
||||
//1、判断轨迹Id是否可用
|
||||
@@ -205,7 +204,7 @@ object AutopilotManager : IOchAutopilotStatusListener {
|
||||
// 启动自驾成功
|
||||
when (state) {
|
||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> {
|
||||
if (TaxiPassengerModel.currentOCHOrder != null && TaxiPassengerModel.curOrderStatus === TaxiPassengerOrderStatusEnum.UserArriveAtStart) {
|
||||
if (TaxiPassengerModel.currentOCHOrder != null && TaxiPassengerModel.curOrderStatus === TaxiOrderStatusEnum.UserArriveAtStart) {
|
||||
TaxiPassengerAnalyticsManager.triggerStartAutopilotEvent(
|
||||
false,
|
||||
true,
|
||||
|
||||
@@ -33,8 +33,8 @@ import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean
|
||||
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback
|
||||
import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.TaxiPassengerOrderStatusEnum
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.TaxiPassengerOrderStatusEnum.Companion.valueOf
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum.Companion.valueOf
|
||||
import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceManager
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.OrderModel
|
||||
import com.mogo.och.taxi.passenger.utils.TaxiPassengerAnalyticsManager
|
||||
@@ -179,7 +179,7 @@ object TaxiPassengerModel {
|
||||
object : OchCommonServiceCallback<TaxiPassengerOrderQueryRespBean> {
|
||||
override fun onSuccess(data: TaxiPassengerOrderQueryRespBean) {
|
||||
if (data.data != null && currentOCHOrder != null && currentOCHOrder!!.orderNo == data.data.orderNo) {
|
||||
if (data.data.orderStatus == TaxiPassengerOrderStatusEnum.Cancel.code || data.data.orderStatus == TaxiPassengerOrderStatusEnum.JourneyCompleted.code || data.data.orderStatus == TaxiPassengerOrderStatusEnum.None.code) {
|
||||
if (data.data.orderStatus == TaxiOrderStatusEnum.Cancel.code || data.data.orderStatus == TaxiOrderStatusEnum.JourneyCompleted.code || data.data.orderStatus == TaxiOrderStatusEnum.None.code) {
|
||||
currentOCHOrder = data.data
|
||||
orderStatusChange()
|
||||
currentOCHOrder = null
|
||||
@@ -196,11 +196,11 @@ object TaxiPassengerModel {
|
||||
}
|
||||
|
||||
// 获取当前订单状态
|
||||
val curOrderStatus: TaxiPassengerOrderStatusEnum
|
||||
val curOrderStatus: TaxiOrderStatusEnum
|
||||
get() {
|
||||
val order: TaxiPassengerOrderQueryRespBean.Result =
|
||||
currentOCHOrder
|
||||
?: return TaxiPassengerOrderStatusEnum.None
|
||||
?: return TaxiOrderStatusEnum.None
|
||||
return valueOf(order.orderStatus)
|
||||
}
|
||||
|
||||
@@ -258,7 +258,7 @@ object TaxiPassengerModel {
|
||||
phoneTail, object : OchCommonServiceCallback<TaxiPassengerBaseRespBean> {
|
||||
override fun onSuccess(data: TaxiPassengerBaseRespBean) {
|
||||
if (data.code == 0 && currentOCHOrder != null) {
|
||||
currentOCHOrder!!.orderStatus = TaxiPassengerOrderStatusEnum.UserArriveAtStart.code
|
||||
currentOCHOrder!!.orderStatus = TaxiOrderStatusEnum.UserArriveAtStart.code
|
||||
//乘客验证成功,更新订单状态为 "乘客已上车", 立马弹出乘客开始行程页面,不再等待轮询
|
||||
orderStatusChange()
|
||||
VoiceNotice.showNotice("验证成功!关闭车门并佩戴安全带后开启行程吧!", AIAssist.LEVEL2)
|
||||
@@ -283,15 +283,15 @@ object TaxiPassengerModel {
|
||||
|
||||
private fun orderStatusChangeInner() {
|
||||
when (curOrderStatus) {
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToStart -> {
|
||||
TaxiOrderStatusEnum.OnTheWayToStart -> {
|
||||
}
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtStart -> {
|
||||
TaxiOrderStatusEnum.ArriveAtStart -> {
|
||||
}
|
||||
TaxiPassengerOrderStatusEnum.UserArriveAtStart -> {
|
||||
TaxiOrderStatusEnum.UserArriveAtStart -> {
|
||||
//开启轮询司机是否已准备好开启自动驾驶的环境
|
||||
setStation()
|
||||
}
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> {
|
||||
TaxiOrderStatusEnum.OnTheWayToEnd -> {
|
||||
CallerFuncBizManager.bizProvider.queryV2XEvents() //全览模式的V2X事件轮询开始
|
||||
//startOrStopQueryOrderRemaining(true)
|
||||
AutopilotManager.updateAutopilotControlParameters()
|
||||
@@ -299,24 +299,24 @@ object TaxiPassengerModel {
|
||||
setStation()
|
||||
CallerOrderListenerManager.invokeOrderStatus(true)
|
||||
}
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtEnd -> {
|
||||
TaxiOrderStatusEnum.ArriveAtEnd -> {
|
||||
AutopilotManager.clearAutopilotControlParameters()
|
||||
//startOrStopQueryOrderRemaining(false)
|
||||
CallerOrderListenerManager.invokeOrderStatus(false)
|
||||
cleanStation()
|
||||
}
|
||||
TaxiPassengerOrderStatusEnum.JourneyCompleted -> {
|
||||
TaxiOrderStatusEnum.JourneyCompleted -> {
|
||||
AutopilotManager.clearAutopilotControlParameters()
|
||||
//startOrStopQueryOrderRemaining(false)
|
||||
cleanStation()
|
||||
}
|
||||
TaxiPassengerOrderStatusEnum.Cancel -> {
|
||||
TaxiOrderStatusEnum.Cancel -> {
|
||||
AutopilotManager.clearAutopilotControlParameters()
|
||||
//startOrStopQueryOrderRemaining(false)
|
||||
startOrStopReadyToAutopilotLoop(false)
|
||||
cleanStation()
|
||||
}
|
||||
TaxiPassengerOrderStatusEnum.None -> TODO()
|
||||
TaxiOrderStatusEnum.None -> TODO()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.common.module.manager.autopilot.OCHAdasAbilityManager
|
||||
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.TaxiPassengerOrderStatusEnum
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
import com.mogo.och.taxi.passenger.model.AutopilotManager
|
||||
import com.mogo.och.taxi.passenger.model.TaxiPassengerModel
|
||||
import com.mogo.och.taxi.passenger.ui.TaxiPassengerBaseFragment
|
||||
@@ -65,7 +65,7 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
|
||||
order?.let {
|
||||
setItineraryVisibility()
|
||||
when (TaxiPassengerModel.curOrderStatus) {
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToStart -> {
|
||||
TaxiOrderStatusEnum.OnTheWayToStart -> {
|
||||
// 10 接驾中
|
||||
mView?.showOrHideCheckAndStartAutopilotView(3)
|
||||
|
||||
@@ -73,19 +73,19 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
|
||||
overMapViewClear()
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtStart -> {
|
||||
TaxiOrderStatusEnum.ArriveAtStart -> {
|
||||
// 20 司机到达上车点
|
||||
mView?.showOrHideCheckAndStartAutopilotView(0)
|
||||
overMapViewClear()
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.UserArriveAtStart -> {
|
||||
TaxiOrderStatusEnum.UserArriveAtStart -> {
|
||||
// 30 乘客到达上车点
|
||||
mView?.showOrHideCheckAndStartAutopilotView(1)
|
||||
overMapViewClear()
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> {
|
||||
TaxiOrderStatusEnum.OnTheWayToEnd -> {
|
||||
// 服务中(去往目的地)
|
||||
mView?.showOrHideArrivedEndLayout(isShow = false)
|
||||
mView?.showOrHideCheckAndStartAutopilotView(2)
|
||||
@@ -93,18 +93,18 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
|
||||
overMapViewShow()
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtEnd -> {
|
||||
TaxiOrderStatusEnum.ArriveAtEnd -> {
|
||||
// 50 到达终点 乘客可以评价
|
||||
mView?.showOrHideArrivedEndLayout(true)
|
||||
overMapViewClear()
|
||||
}
|
||||
TaxiPassengerOrderStatusEnum.JourneyCompleted -> {
|
||||
TaxiOrderStatusEnum.JourneyCompleted -> {
|
||||
// 60 行程完成
|
||||
mView?.showOrHideCheckAndStartAutopilotView(3)
|
||||
mView?.showOrHideArrivedEndLayout(false)
|
||||
overMapViewClear()
|
||||
}
|
||||
TaxiPassengerOrderStatusEnum.Cancel -> {
|
||||
TaxiOrderStatusEnum.Cancel -> {
|
||||
// 70 取消订单
|
||||
mView?.showOrHideCheckAndStartAutopilotView(3)
|
||||
mView?.showOrHideArrivedEndLayout(isShow = false)
|
||||
@@ -133,14 +133,14 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
|
||||
fun setItineraryVisibility() {
|
||||
UiThreadHandler.post {
|
||||
when (TaxiPassengerModel.curOrderStatus) {
|
||||
TaxiPassengerOrderStatusEnum.None,
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToStart,
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtStart,
|
||||
TaxiPassengerOrderStatusEnum.JourneyCompleted,
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtEnd,
|
||||
TaxiPassengerOrderStatusEnum.Cancel -> mView?.showOrHideServingOrderFragment(false)
|
||||
TaxiPassengerOrderStatusEnum.UserArriveAtStart,
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> mView?.showOrHideServingOrderFragment(true)
|
||||
TaxiOrderStatusEnum.None,
|
||||
TaxiOrderStatusEnum.OnTheWayToStart,
|
||||
TaxiOrderStatusEnum.ArriveAtStart,
|
||||
TaxiOrderStatusEnum.JourneyCompleted,
|
||||
TaxiOrderStatusEnum.ArriveAtEnd,
|
||||
TaxiOrderStatusEnum.Cancel -> mView?.showOrHideServingOrderFragment(false)
|
||||
TaxiOrderStatusEnum.UserArriveAtStart,
|
||||
TaxiOrderStatusEnum.OnTheWayToEnd -> mView?.showOrHideServingOrderFragment(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
|
||||
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_TAXI_P
|
||||
@@ -112,6 +113,7 @@ class TaxiPassengerBaseFragment() :
|
||||
override fun onApplyClick(selectItem: BottomBar.SelectView) {
|
||||
when (selectItem) {
|
||||
BottomBar.SelectView.PRECISIONMAP -> {
|
||||
CallerHmiViewControlListenerManager.invokeMainPageViewVisible(View.VISIBLE)
|
||||
overMapView.visibility = View.GONE
|
||||
mapBizView.visibility = View.VISIBLE
|
||||
presenter?.setItineraryVisibility()
|
||||
@@ -132,6 +134,7 @@ class TaxiPassengerBaseFragment() :
|
||||
CallerHmiManager.showTurnLightView()
|
||||
}
|
||||
BottomBar.SelectView.OVERMAPVIEW -> {
|
||||
CallerHmiViewControlListenerManager.invokeMainPageViewVisible(View.GONE)
|
||||
overMapView.visibility = View.VISIBLE
|
||||
mapBizView.visibility = View.GONE
|
||||
presenter?.setItineraryVisibility()
|
||||
@@ -147,6 +150,7 @@ class TaxiPassengerBaseFragment() :
|
||||
CallerHmiManager.showTurnLightView()
|
||||
}
|
||||
BottomBar.SelectView.VIDEO -> {
|
||||
CallerHmiViewControlListenerManager.invokeMainPageViewVisible(View.GONE)
|
||||
overMapView.visibility = View.GONE
|
||||
mapBizView.visibility = View.GONE
|
||||
presenter?.setItineraryVisibility()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.mogo.och.taxi.passenger.ui.checkstartautopilot
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.TaxiPassengerOrderStatusEnum
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.BaseOrderBean
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.OrderListener
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.OrderModel
|
||||
@@ -33,10 +33,10 @@ class ChekAndStartAutopilotViewModel : ViewModel(), OrderListener {
|
||||
|
||||
override fun onCurrentOrderStatusChanged(order: BaseOrderBean?) {
|
||||
when (order?.orderStatus) {
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtStart.code -> {
|
||||
TaxiOrderStatusEnum.ArriveAtStart.code -> {
|
||||
// 显示手机号验证
|
||||
}
|
||||
TaxiPassengerOrderStatusEnum.UserArriveAtStart.code -> {
|
||||
TaxiOrderStatusEnum.UserArriveAtStart.code -> {
|
||||
// 显示启动自驾
|
||||
}
|
||||
else -> {
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.NumberFormatUtil
|
||||
import com.mogo.och.taxi.passenger.R
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.TaxiPassengerOrderStatusEnum
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
import com.mogo.och.taxi.passenger.model.TaxiPassengerModel
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.BaseOrderBean
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.OrderListener
|
||||
@@ -78,7 +78,7 @@ class OrderInfoViewModel: ViewModel(), IOCHTaxiPassengerOrderStatusCallback, Ord
|
||||
}
|
||||
}
|
||||
when (TaxiPassengerModel.curOrderStatus) {
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> {
|
||||
TaxiOrderStatusEnum.OnTheWayToEnd -> {
|
||||
|
||||
}
|
||||
else ->{
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_165"
|
||||
android:layout_marginTop="@dimen/dp_150"
|
||||
android:visibility="gone"
|
||||
app:fusionLightUser="passenger"
|
||||
/>
|
||||
@@ -205,10 +205,11 @@
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.exploration.AutomaticExplorationView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_50"
|
||||
android:layout_marginBottom="-80dp"
|
||||
android:layout_marginEnd="@dimen/dp_20"
|
||||
app:layout_constraintBottom_toTopOf="@id/aciv_xiaozhi_normal"
|
||||
android:layout_marginBottom="-100dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:explorationUser="passenger"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.mogo.och.taxi.passenger.ui.model.music
|
||||
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.utilcode.util.TAG
|
||||
import com.mogo.och.common.module.manager.audition.AuditionManager
|
||||
import com.mogo.och.common.module.manager.autopilot.autopilot.IOchAutopilotStatusListener
|
||||
@@ -11,7 +10,7 @@ import com.mogo.och.common.module.utils.RxUtils
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.BaseOrderBean
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.OrderListener
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.OrderModel
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.TaxiPassengerOrderStatusEnum
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
import io.reactivex.disposables.Disposable
|
||||
|
||||
object MusicModel : OrderListener, IOchAutopilotStatusListener {
|
||||
@@ -29,26 +28,26 @@ object MusicModel : OrderListener, IOchAutopilotStatusListener {
|
||||
override fun onCurrentOrderStatusChanged(order: BaseOrderBean?) {
|
||||
this.orderInfo = order
|
||||
order?.orderStatus?.let {
|
||||
when (TaxiPassengerOrderStatusEnum.valueOf(it)) {
|
||||
TaxiPassengerOrderStatusEnum.None -> {
|
||||
when (TaxiOrderStatusEnum.valueOf(it)) {
|
||||
TaxiOrderStatusEnum.None -> {
|
||||
cancelStopMusicDisposable()
|
||||
}
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToStart -> {
|
||||
TaxiOrderStatusEnum.OnTheWayToStart -> {
|
||||
cancelStopMusicDisposable()
|
||||
}
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtStart -> {
|
||||
TaxiOrderStatusEnum.ArriveAtStart -> {
|
||||
cancelStopMusicDisposable()
|
||||
}
|
||||
TaxiPassengerOrderStatusEnum.UserArriveAtStart -> {}
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> {}
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtEnd -> {}
|
||||
TaxiPassengerOrderStatusEnum.JourneyCompleted -> {
|
||||
TaxiOrderStatusEnum.UserArriveAtStart -> {}
|
||||
TaxiOrderStatusEnum.OnTheWayToEnd -> {}
|
||||
TaxiOrderStatusEnum.ArriveAtEnd -> {}
|
||||
TaxiOrderStatusEnum.JourneyCompleted -> {
|
||||
cancelStopMusicDisposable()
|
||||
stopMusicDisposable = RxUtils.createSubscribe(60_000) {
|
||||
AuditionManager.stop()
|
||||
}
|
||||
}
|
||||
TaxiPassengerOrderStatusEnum.Cancel -> {
|
||||
TaxiOrderStatusEnum.Cancel -> {
|
||||
cancelStopMusicDisposable()
|
||||
stopMusicDisposable = RxUtils.createSubscribe(60_000) {
|
||||
AuditionManager.stop()
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
package com.mogo.och.taxi.passenger.ui.model.order
|
||||
|
||||
/**
|
||||
* Created on 2021/12/7
|
||||
*
|
||||
* * Old code:START
|
||||
* 未派单 0
|
||||
* 去往上车站点 1
|
||||
* 车辆已到达上车站点 2
|
||||
* 乘客已到达上车站点 3
|
||||
* 去往下车站点 4
|
||||
* 到达下车站点 5
|
||||
* 已完成 6
|
||||
* 已取消 7
|
||||
* Old code:END
|
||||
*
|
||||
* 0 订单创建(为派单),
|
||||
* 10 已派上司机(司机去往上车点),
|
||||
* 20 司机到达上车点,
|
||||
* 30 乘客到达上车点,
|
||||
* 40 服务中(去往目的地),
|
||||
* 50 到达目的地,
|
||||
* 60 已完成,
|
||||
* 70 已取消
|
||||
*/
|
||||
enum class TaxiPassengerOrderStatusEnum(val code: Int) {
|
||||
None( 0 ),
|
||||
OnTheWayToStart( 10),
|
||||
ArriveAtStart( 20),
|
||||
UserArriveAtStart( 30),
|
||||
OnTheWayToEnd( 40),
|
||||
ArriveAtEnd( 50),
|
||||
JourneyCompleted(60),//行程完成
|
||||
Cancel( 70);
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun valueOf(code: Int): TaxiPassengerOrderStatusEnum {
|
||||
for (value in values()) {
|
||||
if (value.code == code) {
|
||||
return value
|
||||
}
|
||||
}
|
||||
return None
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@ package com.mogo.och.unmanned.taxi.bean
|
||||
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.och.unmanned.taxi.constant.TaskStatusEnum
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiOrderStatusEnum
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
package com.mogo.och.unmanned.taxi.constant
|
||||
|
||||
/**
|
||||
* Created on 2021/12/7
|
||||
*
|
||||
* * Old code:START
|
||||
* 未派单 0
|
||||
* 去往上车站点 1
|
||||
* 车辆已到达上车站点 2
|
||||
* 乘客已到达上车站点 3
|
||||
* 去往下车站点 4
|
||||
* 到达下车站点 5
|
||||
* 已完成 6
|
||||
* 已取消 7
|
||||
* Old code:END
|
||||
*
|
||||
* 0 订单创建(为派单),
|
||||
* 10 已派上司机(司机去往上车点),
|
||||
* 20 司机到达上车点,
|
||||
* 30 乘客到达上车点,
|
||||
* 40 服务中(去往目的地),
|
||||
* 50 到达目的地,
|
||||
* 60 已完成,
|
||||
* 70 已取消
|
||||
*/
|
||||
enum class TaxiOrderStatusEnum(val code: Int) {
|
||||
None( 0 ),
|
||||
OnTheWayToStart( 10),
|
||||
ArriveAtStart( 20),
|
||||
UserArriveAtStart( 30),
|
||||
OnTheWayToEnd( 40),
|
||||
ArriveAtEnd( 50),
|
||||
JourneyCompleted(60),//行程完成
|
||||
Cancel( 70);
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun valueOf(code: Int): TaxiOrderStatusEnum? {
|
||||
for (value in values()) {
|
||||
if (value.code == code) {
|
||||
return value
|
||||
}
|
||||
}
|
||||
return None
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getState
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView
|
||||
import com.mogo.eagle.core.function.hmi.ui.widget.ParallelDriveView
|
||||
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener
|
||||
@@ -142,6 +143,8 @@ abstract class BaseTaxiTabFragment<V : IView, P : Presenter<V>> : MvpFragment<V,
|
||||
// }
|
||||
onAutopilotStatusChanged(getState(),CallerAutoPilotControlManager.isCanStartAutopilot(false))
|
||||
|
||||
CallerHmiViewControlListenerManager.invokeMainPageViewVisible(View.VISIBLE)
|
||||
|
||||
// 打开任务调试面板
|
||||
findViewById<View>(R.id.btnOpenDebugView)?.setOnClickListener {
|
||||
val intent = Intent()
|
||||
|
||||
@@ -6,8 +6,7 @@ import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.FragmentTransaction
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.commons.module.status.IMogoStatusChangedListener
|
||||
import com.mogo.commons.module.status.IMogoStatusChangedListener
|
||||
import com.mogo.commons.module.status.MogoStatusManager
|
||||
import com.mogo.commons.module.status.StatusDescriptor
|
||||
import com.mogo.eagle.core.data.temp.EventLogout
|
||||
@@ -21,7 +20,7 @@ import com.mogo.och.common.module.biz.login.OpenOrderStatusEnum
|
||||
import com.mogo.och.common.module.utils.FlowBus
|
||||
import com.mogo.och.unmanned.taxi.R
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiDriverEventConst
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiOrderStatusEnum
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
import com.mogo.och.unmanned.taxi.ui.operational.TaxiOperationalDialogFragment
|
||||
import com.mogo.och.unmanned.taxi.ui.routing.TaxiRoutingFragment
|
||||
import com.mogo.och.unmanned.taxi.ui.task.TaxiTaskModel
|
||||
|
||||
@@ -32,7 +32,7 @@ import com.mogo.och.unmanned.taxi.bean.TrajectoryListRespBean
|
||||
import com.mogo.och.unmanned.taxi.callback.ITaxiTaskWithOrderCallback
|
||||
import com.mogo.och.unmanned.taxi.constant.TaskStatusEnum
|
||||
import com.mogo.och.unmanned.taxi.constant.TaskTypeEnum
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiOrderStatusEnum
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
import com.mogo.och.unmanned.taxi.ui.task.TaxiTaskModel
|
||||
import kotlinx.android.synthetic.main.unmanned_taxi_debug_order.view.btnContainer
|
||||
import kotlinx.android.synthetic.main.unmanned_taxi_debug_order.view.currentBusinessModeTextView
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.mogo.och.unmanned.taxi.bean.QueryOrdersRespBean
|
||||
import com.mogo.och.unmanned.taxi.bean.QueryTaskRespBean
|
||||
import com.mogo.och.unmanned.taxi.constant.OperationalOrderStatusEnum
|
||||
import com.mogo.och.unmanned.taxi.constant.StationTypeEnum
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiOrderStatusEnum
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
|
||||
@@ -23,6 +23,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_
|
||||
import com.mogo.eagle.core.utilcode.util.ClickUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
|
||||
import com.mogo.och.common.module.map.AmapNaviToDestinationModel
|
||||
import com.mogo.och.common.module.map.ICommonNaviChangedCallback
|
||||
@@ -37,7 +38,6 @@ import com.mogo.och.unmanned.taxi.bean.StartServiceRespBean
|
||||
import com.mogo.och.unmanned.taxi.constant.TaskStatusEnum
|
||||
import com.mogo.och.unmanned.taxi.constant.TaskTypeEnum
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiDriverEventConst
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiOrderStatusEnum
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst.Companion.TAXI_END_MAP_MAKER
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst.Companion.TAXI_START_MAP_MAKER
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst.Companion.TYPE_MARKER_TAXI_ORDER
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
|
||||
import com.mogo.och.common.module.manager.autopilot.line.LineManager
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
@@ -31,7 +32,6 @@ import com.mogo.och.unmanned.taxi.callback.ITaxiCarServiceCallback
|
||||
import com.mogo.och.unmanned.taxi.callback.ITaxiTaskWithOrderCallback
|
||||
import com.mogo.och.unmanned.taxi.constant.TaskStatusEnum
|
||||
import com.mogo.och.unmanned.taxi.constant.TaskTypeEnum
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiOrderStatusEnum
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst
|
||||
import com.mogo.och.unmanned.taxi.network.TaxiTaskWithOrderServiceManager
|
||||
import com.mogo.och.unmanned.taxi.ui.debug.DebugView
|
||||
|
||||
@@ -24,7 +24,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
||||
import com.mogo.och.unmanned.taxi.R;
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiOrderCancelReasons;
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiOrderStatusEnum;
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
|
||||
@@ -30,7 +30,6 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
|
||||
import com.mogo.eagle.core.utilcode.util.DateTimeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
||||
import com.mogo.eagle.core.utilcode.util.StringUtils
|
||||
@@ -70,7 +69,7 @@ import com.mogo.och.unmanned.taxi.callback.ITaxiOrderStatusCallback
|
||||
import com.mogo.och.unmanned.taxi.callback.ITaxiTaskWithOrderCallback
|
||||
import com.mogo.och.unmanned.taxi.constant.TaskStatusEnum
|
||||
import com.mogo.och.unmanned.taxi.constant.TaskTypeEnum
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiOrderStatusEnum
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst
|
||||
import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst.Companion.BUSINESSTYPE
|
||||
import com.mogo.och.unmanned.taxi.network.TaxiTaskWithOrderServiceManager
|
||||
|
||||
@@ -209,6 +209,15 @@
|
||||
app:fusionLightUser="driver"
|
||||
/>
|
||||
|
||||
<!-- 前方路况探查 -->
|
||||
<com.mogo.eagle.core.function.view.RoadCrossRoamView
|
||||
android:layout_width="@dimen/dp_670"
|
||||
android:layout_height="@dimen/dp_790"
|
||||
android:layout_marginTop="@dimen/dp_482"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--自动探查-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.exploration.AutomaticExplorationView
|
||||
android:layout_width="wrap_content"
|
||||
@@ -221,6 +230,15 @@
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<!-- 地图marker点击触发路侧直播 -->
|
||||
<com.mogo.eagle.core.function.hmi.ui.camera.RoadCrossLiveView
|
||||
android:layout_width="@dimen/dp_650"
|
||||
android:layout_height="@dimen/dp_480"
|
||||
android:layout_marginTop="@dimen/dp_430"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--红绿灯提醒-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.traffic.TrafficLightPromptView
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -18,7 +18,7 @@ import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotManage
|
||||
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotStatusListenerManager
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.voice.VoiceNotice
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.TaxiPassengerOrderStatusEnum
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
import com.mogo.och.unmanned.passenger.bean.TaxiPassengerBaseRespBean
|
||||
import com.mogo.och.unmanned.passenger.constant.TaxiPassengerConst
|
||||
import com.mogo.och.unmanned.passenger.network.TaxiPassengerServiceManager
|
||||
@@ -52,7 +52,7 @@ object AutopilotManager : IOchAutopilotStatusListener {
|
||||
ToastUtils.showShort("当前订单不存在或异常!")
|
||||
return "当前订单不存在或异常!"
|
||||
}
|
||||
if (TaxiPassengerModel.currentOCHOrder!!.orderStatus == TaxiPassengerOrderStatusEnum.UserArriveAtStart.code) {
|
||||
if (TaxiPassengerModel.currentOCHOrder!!.orderStatus == TaxiOrderStatusEnum.UserArriveAtStart.code) {
|
||||
startAutoPilotServiceByPassenger()
|
||||
}
|
||||
TaxiPassengerModel.currentTrajectoryInfo?.let {
|
||||
@@ -198,7 +198,7 @@ object AutopilotManager : IOchAutopilotStatusListener {
|
||||
// 启动自驾成功
|
||||
when (state) {
|
||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> {
|
||||
if (TaxiPassengerModel.currentOCHOrder != null && TaxiPassengerModel.curOrderStatus === TaxiPassengerOrderStatusEnum.UserArriveAtStart) {
|
||||
if (TaxiPassengerModel.currentOCHOrder != null && TaxiPassengerModel.curOrderStatus === TaxiOrderStatusEnum.UserArriveAtStart) {
|
||||
TaxiPassengerAnalyticsManager.triggerStartAutopilotEvent(
|
||||
false,
|
||||
true,
|
||||
|
||||
@@ -29,8 +29,8 @@ import com.mogo.och.common.module.manager.loop.LoopInfo
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import com.mogo.och.common.module.voice.VoiceNotice
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.TaxiPassengerOrderStatusEnum
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.TaxiPassengerOrderStatusEnum.Companion.valueOf
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum.Companion.valueOf
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.OrderModel
|
||||
import com.mogo.och.unmanned.passenger.bean.TaxiPassengerBaseRespBean
|
||||
import com.mogo.och.unmanned.passenger.bean.TaxiPassengerGetTrajectoryByLineIdRespBean
|
||||
@@ -216,8 +216,8 @@ object TaxiPassengerModel {
|
||||
currentOCHOrder = currentOrder
|
||||
orderStatusChange()
|
||||
} else if (currentOCHOrder?.orderStatus != currentOrder.orderStatus) {
|
||||
if (currentOCHOrder?.orderStatus == TaxiPassengerOrderStatusEnum.UserArriveAtStart.code
|
||||
&& currentOrder.orderStatus < TaxiPassengerOrderStatusEnum.UserArriveAtStart.code
|
||||
if (currentOCHOrder?.orderStatus == TaxiOrderStatusEnum.UserArriveAtStart.code
|
||||
&& currentOrder.orderStatus < TaxiOrderStatusEnum.UserArriveAtStart.code
|
||||
) {
|
||||
// 0830 UserArriveAtStart 状态是乘客屏本地在用户验证后本地设置,而且因为后端查询数据有延迟
|
||||
// 这里过下过滤,如果当前是UserArriveAtStart 且后端返回是之前状态,不更新数据
|
||||
@@ -275,9 +275,9 @@ object TaxiPassengerModel {
|
||||
&& currentOCHOrder != null
|
||||
&& currentOCHOrder!!.orderNo == data.data.orderNo
|
||||
) {
|
||||
if (data.data.orderStatus == TaxiPassengerOrderStatusEnum.Cancel.code
|
||||
|| data.data.orderStatus == TaxiPassengerOrderStatusEnum.JourneyCompleted.code
|
||||
|| data.data.orderStatus == TaxiPassengerOrderStatusEnum.None.code
|
||||
if (data.data.orderStatus == TaxiOrderStatusEnum.Cancel.code
|
||||
|| data.data.orderStatus == TaxiOrderStatusEnum.JourneyCompleted.code
|
||||
|| data.data.orderStatus == TaxiOrderStatusEnum.None.code
|
||||
) {
|
||||
currentOCHOrder = data.data
|
||||
orderStatusChange()
|
||||
@@ -298,11 +298,11 @@ object TaxiPassengerModel {
|
||||
}
|
||||
|
||||
// 获取当前订单状态
|
||||
val curOrderStatus: TaxiPassengerOrderStatusEnum
|
||||
val curOrderStatus: TaxiOrderStatusEnum
|
||||
get() {
|
||||
val order: TaxiPassengerOrdersInServiceQueryRespBean.OrderBean =
|
||||
currentOCHOrder
|
||||
?: return TaxiPassengerOrderStatusEnum.None
|
||||
?: return TaxiOrderStatusEnum.None
|
||||
return valueOf(order.orderStatus)
|
||||
}
|
||||
|
||||
@@ -376,7 +376,7 @@ object TaxiPassengerModel {
|
||||
override fun onSuccess(data: TaxiPassengerBaseRespBean) {
|
||||
if (data.code == 0 && currentOCHOrder != null) {
|
||||
currentOCHOrder!!.orderStatus =
|
||||
TaxiPassengerOrderStatusEnum.UserArriveAtStart.code
|
||||
TaxiOrderStatusEnum.UserArriveAtStart.code
|
||||
//乘客验证成功,更新订单状态为 "乘客已上车", 立马弹出乘客开始行程页面,不再等待轮询
|
||||
orderStatusChange()
|
||||
VoiceNotice.showNotice(
|
||||
@@ -405,18 +405,18 @@ object TaxiPassengerModel {
|
||||
|
||||
private fun orderStatusChangeInner() {
|
||||
when (curOrderStatus) {
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToStart -> {
|
||||
TaxiOrderStatusEnum.OnTheWayToStart -> {
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtStart -> {
|
||||
TaxiOrderStatusEnum.ArriveAtStart -> {
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.UserArriveAtStart -> {
|
||||
TaxiOrderStatusEnum.UserArriveAtStart -> {
|
||||
//开启轮询司机是否已准备好开启自动驾驶的环境
|
||||
setStation()
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> {
|
||||
TaxiOrderStatusEnum.OnTheWayToEnd -> {
|
||||
CallerFuncBizManager.bizProvider.queryV2XEvents() //全览模式的V2X事件轮询开始
|
||||
//startOrStopQueryOrderRemaining(true)
|
||||
AutopilotManager.updateAutopilotControlParameters()
|
||||
@@ -424,26 +424,26 @@ object TaxiPassengerModel {
|
||||
CallerOrderListenerManager.invokeOrderStatus(true)
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtEnd -> {
|
||||
TaxiOrderStatusEnum.ArriveAtEnd -> {
|
||||
AutopilotManager.clearAutopilotControlParameters()
|
||||
//startOrStopQueryOrderRemaining(false)
|
||||
CallerOrderListenerManager.invokeOrderStatus(false)
|
||||
clearStation()
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.JourneyCompleted -> {
|
||||
TaxiOrderStatusEnum.JourneyCompleted -> {
|
||||
AutopilotManager.clearAutopilotControlParameters()
|
||||
//startOrStopQueryOrderRemaining(false)
|
||||
clearStation()
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.Cancel -> {
|
||||
TaxiOrderStatusEnum.Cancel -> {
|
||||
AutopilotManager.clearAutopilotControlParameters()
|
||||
//startOrStopQueryOrderRemaining(false)
|
||||
clearStation()
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.None -> {
|
||||
TaxiOrderStatusEnum.None -> {
|
||||
//AutopilotManager.clearAutopilotControlParameters()
|
||||
//startOrStopQueryOrderRemaining(false)
|
||||
clearStation()
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.common.module.manager.autopilot.OCHAdasAbilityManager
|
||||
import com.mogo.och.unmanned.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.TaxiPassengerOrderStatusEnum
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.BaseOrderBean
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.OrderListener
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.OrderModel
|
||||
@@ -56,7 +56,7 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
|
||||
private fun updateOrderView(order: TaxiPassengerOrdersInServiceQueryRespBean.OrderBean?) {
|
||||
setItineraryVisibility()
|
||||
when (TaxiPassengerModel.curOrderStatus) {
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToStart -> {
|
||||
TaxiOrderStatusEnum.OnTheWayToStart -> {
|
||||
// 10 接驾中
|
||||
mView?.showOrHideCheckAndStartAutopilotView(3)
|
||||
|
||||
@@ -64,19 +64,19 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
|
||||
overMapViewClear()
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtStart -> {
|
||||
TaxiOrderStatusEnum.ArriveAtStart -> {
|
||||
// 20 司机到达上车点
|
||||
mView?.showOrHideCheckAndStartAutopilotView(0)
|
||||
overMapViewClear()
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.UserArriveAtStart -> {
|
||||
TaxiOrderStatusEnum.UserArriveAtStart -> {
|
||||
// 30 乘客到达上车点
|
||||
mView?.showOrHideCheckAndStartAutopilotView(1)
|
||||
overMapViewClear()
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> {
|
||||
TaxiOrderStatusEnum.OnTheWayToEnd -> {
|
||||
// 服务中(去往目的地)
|
||||
mView?.showOrHideArrivedEndLayout(isShow = false)
|
||||
|
||||
@@ -85,13 +85,13 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
|
||||
overMapViewShow()
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtEnd -> {
|
||||
TaxiOrderStatusEnum.ArriveAtEnd -> {
|
||||
// 50 到达终点 乘客可以评价
|
||||
mView?.showOrHideArrivedEndLayout(true)
|
||||
overMapViewClear()
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.JourneyCompleted -> {
|
||||
TaxiOrderStatusEnum.JourneyCompleted -> {
|
||||
// 60 行程完成
|
||||
mView?.showOrHideCheckAndStartAutopilotView(3)
|
||||
|
||||
@@ -99,7 +99,7 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
|
||||
overMapViewClear()
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.Cancel -> {
|
||||
TaxiOrderStatusEnum.Cancel -> {
|
||||
// 70 取消订单
|
||||
mView?.showOrHideCheckAndStartAutopilotView(3)
|
||||
|
||||
@@ -107,7 +107,7 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
|
||||
overMapViewClear()
|
||||
}
|
||||
|
||||
TaxiPassengerOrderStatusEnum.None -> {
|
||||
TaxiOrderStatusEnum.None -> {
|
||||
// 00 默认状态,在不同任务之间切换时使用
|
||||
mView?.showOrHideCheckAndStartAutopilotView(3)
|
||||
|
||||
@@ -129,14 +129,14 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
|
||||
fun setItineraryVisibility() {
|
||||
UiThreadHandler.post {
|
||||
when (TaxiPassengerModel.curOrderStatus) {
|
||||
TaxiPassengerOrderStatusEnum.None,
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToStart,
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtStart,
|
||||
TaxiPassengerOrderStatusEnum.JourneyCompleted,
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtEnd,
|
||||
TaxiPassengerOrderStatusEnum.Cancel -> mView?.showOrHideServingOrderFragment(false)
|
||||
TaxiPassengerOrderStatusEnum.UserArriveAtStart,
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> mView?.showOrHideServingOrderFragment(true)
|
||||
TaxiOrderStatusEnum.None,
|
||||
TaxiOrderStatusEnum.OnTheWayToStart,
|
||||
TaxiOrderStatusEnum.ArriveAtStart,
|
||||
TaxiOrderStatusEnum.JourneyCompleted,
|
||||
TaxiOrderStatusEnum.ArriveAtEnd,
|
||||
TaxiOrderStatusEnum.Cancel -> mView?.showOrHideServingOrderFragment(false)
|
||||
TaxiOrderStatusEnum.UserArriveAtStart,
|
||||
TaxiOrderStatusEnum.OnTheWayToEnd -> mView?.showOrHideServingOrderFragment(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.mogo.commons.mvp.MvpFragment
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.eagle.core.data.map.MogoLatLng
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
|
||||
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_TAXI_P
|
||||
@@ -131,6 +132,7 @@ class TaxiPassengerBaseFragment() :
|
||||
override fun onApplyClick(selectItem: BottomBar.SelectView) {
|
||||
when (selectItem) {
|
||||
BottomBar.SelectView.PRECISIONMAP -> {
|
||||
CallerHmiViewControlListenerManager.invokeMainPageViewVisible(View.VISIBLE)
|
||||
overMapView.visibility = View.GONE
|
||||
mapBizView.visibility = View.VISIBLE
|
||||
presenter?.setItineraryVisibility()
|
||||
@@ -151,6 +153,7 @@ class TaxiPassengerBaseFragment() :
|
||||
CallerHmiManager.showTurnLightView()
|
||||
}
|
||||
BottomBar.SelectView.OVERMAPVIEW -> {
|
||||
CallerHmiViewControlListenerManager.invokeMainPageViewVisible(View.GONE)
|
||||
overMapView.visibility = View.VISIBLE
|
||||
mapBizView.visibility = View.GONE
|
||||
presenter?.setItineraryVisibility()
|
||||
@@ -166,6 +169,7 @@ class TaxiPassengerBaseFragment() :
|
||||
CallerHmiManager.showTurnLightView()
|
||||
}
|
||||
BottomBar.SelectView.VIDEO -> {
|
||||
CallerHmiViewControlListenerManager.invokeMainPageViewVisible(View.GONE)
|
||||
overMapView.visibility = View.GONE
|
||||
mapBizView.visibility = View.GONE
|
||||
presenter?.setItineraryVisibility()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.mogo.och.unmanned.passenger.ui.checkstartautopilot
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.TaxiPassengerOrderStatusEnum
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.BaseOrderBean
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.OrderListener
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.OrderModel
|
||||
@@ -32,10 +32,10 @@ class ChekAndStartAutopilotViewModel : ViewModel(), OrderListener {
|
||||
|
||||
override fun onCurrentOrderStatusChanged(order: BaseOrderBean?) {
|
||||
when (order?.orderStatus) {
|
||||
TaxiPassengerOrderStatusEnum.ArriveAtStart.code -> {
|
||||
TaxiOrderStatusEnum.ArriveAtStart.code -> {
|
||||
// 显示手机号验证
|
||||
}
|
||||
TaxiPassengerOrderStatusEnum.UserArriveAtStart.code -> {
|
||||
TaxiOrderStatusEnum.UserArriveAtStart.code -> {
|
||||
// 显示启动自驾
|
||||
}
|
||||
else -> {
|
||||
|
||||
@@ -6,7 +6,7 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.NumberFormatUtil
|
||||
import com.mogo.och.unmanned.taxi.passenger.R
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.TaxiPassengerOrderStatusEnum
|
||||
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.BaseOrderBean
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.OrderListener
|
||||
import com.mogo.och.taxi.passenger.ui.model.order.OrderModel
|
||||
@@ -82,7 +82,7 @@ class OrderInfoViewModel: ViewModel(), IOCHTaxiPassengerOrderStatusCallback, Ord
|
||||
}
|
||||
}
|
||||
when (TaxiPassengerModel.curOrderStatus) {
|
||||
TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> {
|
||||
TaxiOrderStatusEnum.OnTheWayToEnd -> {
|
||||
|
||||
}
|
||||
else ->{
|
||||
|
||||
@@ -91,23 +91,41 @@
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_165"
|
||||
android:layout_marginTop="@dimen/dp_150"
|
||||
android:visibility="gone"
|
||||
app:fusionLightUser="passenger"
|
||||
/>
|
||||
|
||||
<!-- 前方路况探查 -->
|
||||
<com.mogo.eagle.core.function.view.RoadCrossRoamView
|
||||
android:layout_width="@dimen/dp_670"
|
||||
android:layout_height="@dimen/dp_790"
|
||||
android:layout_marginTop="@dimen/dp_482"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--自动探查-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.exploration.AutomaticExplorationView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/dp_50"
|
||||
android:layout_marginBottom="-80dp"
|
||||
android:layout_marginEnd="@dimen/dp_20"
|
||||
app:layout_constraintBottom_toTopOf="@id/aciv_xiaozhi_normal"
|
||||
android:layout_marginBottom="-100dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:explorationUser="passenger"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<!-- 地图marker点击触发路侧直播 -->
|
||||
<com.mogo.eagle.core.function.hmi.ui.camera.RoadCrossLiveView
|
||||
android:layout_width="@dimen/dp_650"
|
||||
android:layout_height="@dimen/dp_480"
|
||||
android:layout_marginTop="@dimen/dp_430"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--红绿灯提醒-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.traffic.TrafficLightPromptView
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -216,6 +216,7 @@ dependencies {
|
||||
implementation project(':core:mogo-core-function-call')
|
||||
implementation project(':core:mogo-core-utils')
|
||||
implementation project(':core:mogo-core-res')
|
||||
implementation project(':tts:tts-iflytek')
|
||||
|
||||
androidTestImplementation project(':core:mogo-core-function-call')
|
||||
androidTestImplementation project(':core:mogo-core-res')
|
||||
@@ -231,6 +232,7 @@ dependencies {
|
||||
androidTestImplementation rootProject.ext.dependencies.localbroadcastmanager
|
||||
androidTestImplementation rootProject.ext.dependencies.downloader
|
||||
androidTestImplementation project(":libraries:mogo-map")
|
||||
androidTestImplementation rootProject.ext.dependencies.jts_core
|
||||
}
|
||||
|
||||
|
||||
@@ -316,28 +318,28 @@ def variantName() {
|
||||
if(gradle.startParameter.taskNames.size()>0) {
|
||||
for (String taskName : gradle.startParameter.taskNames) {
|
||||
println "对比结果----------${taskName}"
|
||||
if (taskName.contains("Yantai")) {
|
||||
project.dependencies.add('implementation', project.project(':tts:tts-iflytek'))
|
||||
}else if (taskName.contains("Mogo")) {
|
||||
if(taskName.contains("Passenger")&&taskName.contains("T1T2")) {
|
||||
println "Mogo环境T1T2车 引入小智----------${taskName}"
|
||||
project.dependencies.add('implementation', project.project(':tts:tts-zhi'))
|
||||
}else {
|
||||
project.dependencies.add('implementation', project.project(':tts:tts-pad'))
|
||||
}
|
||||
}else if (taskName.contains("Dali")) {
|
||||
project.dependencies.add('implementation', project.project(':tts:tts-pad'))
|
||||
}else if (taskName.contains("Saas")) {
|
||||
if(taskName.contains("Passenger")&&taskName.contains("T1T2")) {
|
||||
println "Saas环境T1T2车 引入小智----------${taskName}"
|
||||
project.dependencies.add('implementation', project.project(':tts:tts-zhi'))
|
||||
}else {
|
||||
project.dependencies.add('implementation', project.project(':tts:tts-pad'))
|
||||
}
|
||||
}else {
|
||||
// 不能再else 加任何逻辑 是android dlc的特效
|
||||
println("-----------$taskName")
|
||||
}
|
||||
// if (taskName.contains("Yantai")) {
|
||||
// project.dependencies.add('implementation', project.project(':tts:tts-iflytek'))
|
||||
// }else if (taskName.contains("Mogo")) {
|
||||
// if(taskName.contains("Passenger")&&taskName.contains("T1T2")) {
|
||||
// println "Mogo环境T1T2车 引入小智----------${taskName}"
|
||||
// project.dependencies.add('implementation', project.project(':tts:tts-zhi'))
|
||||
// }else {
|
||||
// project.dependencies.add('implementation', project.project(':tts:tts-pad'))
|
||||
// }
|
||||
// }else if (taskName.contains("Dali")) {
|
||||
// project.dependencies.add('implementation', project.project(':tts:tts-pad'))
|
||||
// }else if (taskName.contains("Saas")) {
|
||||
// if(taskName.contains("Passenger")&&taskName.contains("T1T2")) {
|
||||
// println "Saas环境T1T2车 引入小智----------${taskName}"
|
||||
// project.dependencies.add('implementation', project.project(':tts:tts-zhi'))
|
||||
// }else {
|
||||
// project.dependencies.add('implementation', project.project(':tts:tts-pad'))
|
||||
// }
|
||||
// }else {
|
||||
// // 不能再else 加任何逻辑 是android dlc的特效
|
||||
// println("-----------$taskName")
|
||||
// }
|
||||
|
||||
taskName = taskName.replace("Debug", "")
|
||||
taskName = taskName.replace("Release", "")
|
||||
|
||||
@@ -9,6 +9,7 @@ import androidx.test.platform.app.InstrumentationRegistry
|
||||
import com.google.protobuf.ByteString
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.data.multidisplay.TelematicConstant
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerV2nNioEventListenerManager
|
||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
|
||||
@@ -20,12 +21,16 @@ import com.mogo.map.MapDataWrapper
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo.telematics.pad.MessagePad.Location
|
||||
import mogo.telematics.pad.MessagePad.TrackedObject
|
||||
import mogo.telematics.pad.MessagePad.V2nCrossSpeed
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import java.util.HashMap
|
||||
import java.util.Collections
|
||||
import java.util.concurrent.TimeUnit
|
||||
import kotlin.math.cos
|
||||
import kotlin.math.sin
|
||||
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
@@ -43,6 +48,100 @@ class V2NTest {
|
||||
launch = ActivityScenario.launch(MainLauncherActivity::class.java)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testRoadShiGong(): Unit = runBlocking {
|
||||
val arguments = InstrumentationRegistry.getArguments()
|
||||
val millis = arguments.getString("delay", "0").toLong()
|
||||
if (millis > 0) {
|
||||
delay(millis)
|
||||
}
|
||||
FunctionBuildConfig.isNewV2NData = true
|
||||
FunctionBuildConfig.v2nMainSwitch = true
|
||||
runCatching {
|
||||
val map = HashMap<String, Boolean>().also {
|
||||
it["f1"] = FunctionBuildConfig.v2nMainSwitch
|
||||
it["f2"] = FunctionBuildConfig.isNewV2NData
|
||||
}
|
||||
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, GsonUtils.toJson(map).toByteArray())
|
||||
}
|
||||
delay(2000)
|
||||
val targetX = arguments.getString("lon", "0").toDouble()
|
||||
val targetY = arguments.getString("lat", "0").toDouble()
|
||||
val targetDistance = arguments.getString("distance", "0").toDouble()
|
||||
val eventDistance = arguments.getString("event_distance", "50").toDouble()
|
||||
val r = arguments.getString("r", "1").toDouble()
|
||||
var car = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
|
||||
var distance = CoordinateUtils.calculateLineDistance(car.longitude, car.latitude, targetX, targetY)
|
||||
Log.d(TAG, "target_distance: $targetDistance, current distance: $distance, event_distance: $eventDistance")
|
||||
while (distance > targetDistance) {
|
||||
delay(2000)
|
||||
car = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
|
||||
distance = CoordinateUtils.calculateLineDistance(car.longitude, car.latitude, targetX, targetY)
|
||||
Log.d(TAG, "target_distance: $targetDistance, current distance: $distance")
|
||||
}
|
||||
car = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
|
||||
val point = DrivingDirectionUtils.calculateNewPoint(car.longitude, car.latitude, car.heading , eventDistance)
|
||||
val polygon = generateTriangle(point.first, point.second, car.heading, r * 1e-5)
|
||||
val data = TrackedObject.getDefaultInstance().toBuilder().setType(501).setLongitude(point.first).setLatitude(point.second).setAltitude(0.0).setSystemTime(System.currentTimeMillis() * 1.0 / 1000).setSatelliteTime(1.0).setUuid(10).setCarID("1").setColor("#ffffff").setHeading(car.heading).setSpeed(0.0).setDrawLevel(1).setDriverTime(1.0).setCameraIp("172.18.7.40").setVideoUrl("").addAllImageUrl(Collections.singletonList("http://www.baidu.com")).addAllPolygon(polygon.map { Location.getDefaultInstance().toBuilder().setLongitude(it.first).setLatitude(it.second).setAltitude(0.0).setHeading(0.0).setStation(false).build() }).setDetectStartTime(System.currentTimeMillis()).setV2XUuid("xxxxx1").setStrUuid("xxxxx2").build()
|
||||
val trafficData = Collections.singletonList(data)
|
||||
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_AI_ROAD_SHI_GONG, data.toByteArray())
|
||||
CallerAutopilotIdentifyListenerManager.invokeAutopilotIdentifyDataUpdate(trafficData)
|
||||
delay(TimeUnit.MINUTES.toMillis(10))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testRoadShiGu(): Unit = runBlocking {
|
||||
val arguments = InstrumentationRegistry.getArguments()
|
||||
val millis = arguments.getString("delay", "0").toLong()
|
||||
if (millis > 0) {
|
||||
delay(millis)
|
||||
}
|
||||
FunctionBuildConfig.isNewV2NData = true
|
||||
FunctionBuildConfig.v2nMainSwitch = true
|
||||
runCatching {
|
||||
val map = HashMap<String, Boolean>().also {
|
||||
it["f1"] = FunctionBuildConfig.v2nMainSwitch
|
||||
it["f2"] = FunctionBuildConfig.isNewV2NData
|
||||
}
|
||||
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, GsonUtils.toJson(map).toByteArray())
|
||||
}
|
||||
delay(2000)
|
||||
val targetX = arguments.getString("lon", "0").toDouble()
|
||||
val targetY = arguments.getString("lat", "0").toDouble()
|
||||
val targetDistance = arguments.getString("distance", "0").toDouble()
|
||||
val eventDistance = arguments.getString("event_distance", "0").toDouble()
|
||||
val r = arguments.getString("r", "1").toDouble()
|
||||
var car = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
|
||||
var distance = CoordinateUtils.calculateLineDistance(car.longitude, car.latitude, targetX, targetY)
|
||||
Log.d(TAG, "target_distance: $targetDistance, current distance: $distance, event_distance: $eventDistance")
|
||||
while (distance > targetDistance) {
|
||||
delay(2000)
|
||||
car = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
|
||||
distance = CoordinateUtils.calculateLineDistance(car.longitude, car.latitude, targetX, targetY)
|
||||
Log.d(TAG, "target_distance: $targetDistance, current distance: $distance")
|
||||
}
|
||||
car = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
|
||||
val point = DrivingDirectionUtils.calculateNewPoint(car.longitude, car.latitude, car.heading , eventDistance)
|
||||
val polygon = generateTriangle(point.first, point.second, car.heading, r * 1e-5)
|
||||
val data = TrackedObject.getDefaultInstance().toBuilder().setType(13).setLongitude(point.first).setLatitude(point.second).setAltitude(0.0).setSystemTime(System.currentTimeMillis() * 1.0 / 1000).setSatelliteTime(1.0).setUuid(10).setCarID("1").setColor("#ffffff").setHeading(car.heading).setSpeed(0.0).setDrawLevel(1).setDriverTime(1.0).setCameraIp("172.18.7.40").setVideoUrl("").addAllImageUrl(Collections.singletonList("http://www.baidu.com")).addAllPolygon(polygon.map { Location.getDefaultInstance().toBuilder().setLongitude(it.first).setLatitude(it.second).setAltitude(0.0).setHeading(0.0).setStation(false).build() }).setDetectStartTime(System.currentTimeMillis()).setV2XUuid("xxxxx1").setStrUuid("xxxxx2").build()
|
||||
val trafficData = Collections.singletonList(data)
|
||||
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_AI_ROAD_SHI_GU, data.toByteArray())
|
||||
CallerAutopilotIdentifyListenerManager.invokeAutopilotIdentifyDataUpdate(trafficData)
|
||||
delay(TimeUnit.MINUTES.toMillis(10))
|
||||
}
|
||||
|
||||
private fun generateTriangle(x: Double, y: Double, angle: Double, r: Double): List<Pair<Double, Double>> {
|
||||
val angles = arrayOf(0, 120, 240)
|
||||
val coordinates = ArrayList<Pair<Double, Double>>()
|
||||
for(i in 0 until 3) {
|
||||
val radian = Math.toRadians(angles[i] + angle)
|
||||
val x1 = x + (r * cos(radian))
|
||||
val y1 = y + (r * sin(radian))
|
||||
coordinates += Pair(x1, y1)
|
||||
}
|
||||
coordinates.add(coordinates[0])
|
||||
return coordinates
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testGreenWave(): Unit = runBlocking {
|
||||
@@ -164,8 +263,6 @@ class V2NTest {
|
||||
Log.d(TAG, "location:[x:${targetX}, y:${targetY}, new_location:[x:${newPoint.first}, y:${newPoint.second}]")
|
||||
FunctionBuildConfig.isNewV2NData = true
|
||||
FunctionBuildConfig.v2nMainSwitch = true
|
||||
FunctionBuildConfig.isNewV2NData = true
|
||||
FunctionBuildConfig.v2nMainSwitch = true
|
||||
runCatching {
|
||||
val map = HashMap<String, Boolean>().also {
|
||||
it["f1"] = FunctionBuildConfig.v2nMainSwitch
|
||||
@@ -174,9 +271,9 @@ class V2NTest {
|
||||
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, GsonUtils.toJson(map).toByteArray())
|
||||
}
|
||||
delay(2000)
|
||||
val eventId = "xxxxxxxxxxxxx"
|
||||
val eventId = "yyyyyyyyyyyyy"
|
||||
for (i in 0 until 500) {
|
||||
val data = MessagePad.Event.getDefaultInstance().toBuilder().setLongitude(newPoint.first).setLatitude(newPoint.second).setEventId(eventId).setTimestamp(System.currentTimeMillis()).addAllTargetIds(emptyList()).addTargetIdsBytes(ByteString.EMPTY).addTargetIds("0").setExts("{ \"cameraIp\": \"172.18.7.40\",\"eventExtUnits\":[{\"heading\":266.5414733886719,\"uuid\":\"e440951e-5eb6-4091-8560-72a5d8aaf229\"}] }").build()
|
||||
val data = MessagePad.Event.getDefaultInstance().toBuilder().setLongitude(newPoint.first).setLatitude(newPoint.second).setEventId(eventId).setTimestamp(System.currentTimeMillis()).addAllTargetIds(emptyList()).addTargetIdsBytes(ByteString.EMPTY).setGnssType(2).addTargetIds("0").setExts("{ \"cameraIp\": \"172.18.7.40\",\"eventExtUnits\":[{\"heading\":266.5414733886719,\"uuid\":\"e440951e-5eb6-4091-8560-72a5d8aaf229\"}] }").build()
|
||||
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_AI_ROAD_OTHER_RETROGRADE_VEHICLE, data.toByteArray())
|
||||
CallerV2nNioEventListenerManager.invokeV2nNioOtherRetrogradeEvent(data)
|
||||
delay(50)
|
||||
|
||||
@@ -6,36 +6,26 @@ import android.os.Message
|
||||
import android.text.TextUtils
|
||||
import android.util.Log
|
||||
import androidx.core.util.Pair
|
||||
import com.google.gson.JsonArray
|
||||
import com.google.gson.JsonObject
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.data.enums.CommunicationType
|
||||
import com.mogo.eagle.core.data.enums.DataSourceType
|
||||
import com.mogo.eagle.core.data.enums.EventTypeEnumNew
|
||||
import com.mogo.eagle.core.data.enums.TrafficTypeEnum
|
||||
import com.mogo.eagle.core.data.enums.WarningDirectionEnum.ALERT_WARNING_TOP
|
||||
import com.mogo.eagle.core.data.map.entity.MarkerExploreWay
|
||||
import com.mogo.eagle.core.data.map.entity.MarkerLocation
|
||||
import com.mogo.eagle.core.data.map.entity.V2XRoadEventEntity
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxType.V2X
|
||||
import com.mogo.eagle.core.data.msgbox.V2XMsg
|
||||
import com.mogo.eagle.core.function.angle.scenes.Default
|
||||
import com.mogo.eagle.core.function.angle.scenes.RoadEvent
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoV2nNioEventListener
|
||||
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
|
||||
import com.mogo.eagle.core.function.api.hmi.xiaozhi.event.V2N
|
||||
import com.mogo.eagle.core.function.api.hmi.xiaozhi.state.State
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerV2XListenerManager.V2NCarTypeCheck
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerV2nNioEventListenerManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerRoadV2NEventWindowListenerManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager
|
||||
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager.saveMsgBox
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
@@ -46,8 +36,7 @@ import com.mogo.eagle.core.utilcode.util.CoordinateUtils
|
||||
import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils
|
||||
import com.mogo.eagle.core.utilcode.util.GsonUtils
|
||||
import com.mogo.eagle.function.biz.v2x.V2XBizTrace
|
||||
import com.mogo.eagle.function.biz.v2x.v2n.consts.V2XConst
|
||||
import com.mogo.eagle.function.biz.v2x.v2n.remove.MarkerWrapper
|
||||
import com.mogo.eagle.function.biz.v2x.v2n.pnc.beans.Extras
|
||||
import com.mogo.eagle.function.biz.v2x.v2n.scenario.scene.airoad.AiRoadMarker
|
||||
import com.mogo.eagle.function.biz.v2x.v2n.scenario.scene.airoad.AiRoadMarker.Marker
|
||||
import com.mogo.eagle.function.biz.v2x.v2n.utils.EventDismissBean
|
||||
@@ -57,17 +46,12 @@ import com.mogo.eagle.function.biz.v2x.v2n.utils.V2NUtils
|
||||
import com.mogo.eagle.function.biz.v2x.v2n.utils.V2XEventAnalyticsManager
|
||||
import com.mogo.map.MapDataWrapper
|
||||
import com.mogo.map.entities.Lane
|
||||
import com.mogo.map.overlay.core.Level.MAP_MARKER
|
||||
import com.mogo.map.overlay.point.Point
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo.telematics.pad.MessagePad.Header
|
||||
import mogo.telematics.pad.MessagePad.TrackedObject
|
||||
import mogo.telematics.pad.MessagePad.V2nCrossSpeed
|
||||
import mogo.v2x.MogoV2X
|
||||
import mogo.v2x.MogoV2X.RSI_PB
|
||||
import mogo.v2x.MogoV2X.RTEData_PB
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.concurrent.TimeUnit.SECONDS
|
||||
import kotlin.math.abs
|
||||
|
||||
/**
|
||||
@@ -150,7 +134,7 @@ internal object V2NIdentifyDrawer: IEventDismissListener {
|
||||
it.location = e.location
|
||||
it.polygon = polygon
|
||||
}
|
||||
}), true, isDrawRoadLine(poiType)
|
||||
}, isUseGps = true), true, isDrawRoadLine(poiType)
|
||||
)
|
||||
|
||||
val distance = CoordinateUtils.calculateLineDistance(
|
||||
@@ -174,6 +158,7 @@ internal object V2NIdentifyDrawer: IEventDismissListener {
|
||||
)
|
||||
)
|
||||
if (polygon.isNotEmpty()) {
|
||||
|
||||
val decision = V2NUtils.computeOccupyLanesInfo(Triple(car.longitude, car.latitude, car.heading.toFloat()), Triple(itx.longitude, itx.latitude, itx.heading.toFloat()), polygon.map { kotlin.Pair(it.first, it.second) })
|
||||
if (decision != null) {
|
||||
val isDriver = AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)
|
||||
@@ -323,31 +308,23 @@ internal object V2NIdentifyDrawer: IEventDismissListener {
|
||||
V2XBizTrace.onAck(TAG, mapOf("other_retrograde_vehicle" to "event == null"), true)
|
||||
return@Callback true
|
||||
}
|
||||
val body = runCatching { GsonUtils.fromJson(event.exts, Map::class.java) }.getOrNull()
|
||||
val cameraIp = body?.get("cameraIp") as? String ?: ""
|
||||
val array = (body?.get("eventExtUnits") as? JsonArray)
|
||||
val body = runCatching { GsonUtils.fromJson(event.exts, Extras::class.java) }.getOrNull()
|
||||
val cameraIp = body?.cameraIp
|
||||
val array = body?.eventExtUnits
|
||||
var heading = 0.0
|
||||
var uuid = ""
|
||||
if (array != null && array.size() > 0) {
|
||||
if (!array.isNullOrEmpty()) {
|
||||
for (e in array) {
|
||||
if (e is JsonObject) {
|
||||
if (e.has("heading")) {
|
||||
heading = runCatching { e.asDouble }.getOrNull() ?: 0.0
|
||||
}
|
||||
if (e.has("uuid")) {
|
||||
uuid = runCatching { e.asString }.getOrNull() ?: ""
|
||||
}
|
||||
}
|
||||
heading = e.heading ?: 0.0
|
||||
uuid = e.uuid ?: ""
|
||||
}
|
||||
}
|
||||
Logger.d(TAG, "cameraIp: $cameraIp, heading:$heading, uuid: $uuid")
|
||||
val newEventId = "other_retrograde_vehicle_${event.eventId}"
|
||||
val isUseGps = event.gnssType != 0
|
||||
val eventLocation = if (isUseGps) arrayOf(event.longitude, event.latitude) else CoordinateTransform.GCJ02ToWGS84(event.longitude, event.latitude)
|
||||
val carLocation = if (isUseGps) CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84() else CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()
|
||||
AiRoadMarker.aiMakers.getOrPut(newEventId) {
|
||||
val eventLocation = when (event.gnssType) {
|
||||
0 -> CoordinateTransform.GCJ02ToWGS84(event.longitude, event.latitude)
|
||||
else -> arrayOf(event.longitude, event.latitude)
|
||||
}
|
||||
val carLocation = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
|
||||
val distance = CoordinateUtils.calculateLineDistance(carLocation.longitude, carLocation.latitude, eventLocation[0], eventLocation[1])
|
||||
if (distance > 150) {
|
||||
Logger.i(TAG, "other_retrograde_vehicle --> distance > 150")
|
||||
@@ -364,11 +341,11 @@ internal object V2NIdentifyDrawer: IEventDismissListener {
|
||||
isDriver,
|
||||
String.format(EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_SOCKET_ROAD_OTHER_RETROGRADE_VEHICLE.poiType), distance.toInt()),
|
||||
cameraIp.toString(),
|
||||
event.longitude,
|
||||
event.latitude)
|
||||
eventLocation[0],
|
||||
eventLocation[1])
|
||||
AiRoadMarker()
|
||||
}.also {
|
||||
it.marker(Marker(newEventId, EventTypeEnumNew.TYPE_SOCKET_ROAD_OTHER_RETROGRADE_VEHICLE.poiType, event.longitude, event.latitude, 0.0), drawMarker = true, false, isHighFrequency = true)
|
||||
it.marker(Marker(newEventId, EventTypeEnumNew.TYPE_SOCKET_ROAD_OTHER_RETROGRADE_VEHICLE.poiType, eventLocation[0], eventLocation[1], heading, isUseGps = isUseGps), drawMarker = true, false, isHighFrequency = true)
|
||||
}.receive()
|
||||
} else if (msg.what == MSG_WHAT_DRAW_GREEN_WAVE) {
|
||||
val data = msg.obj as? V2nCrossSpeed ?: return@Callback true
|
||||
@@ -406,35 +383,31 @@ internal object V2NIdentifyDrawer: IEventDismissListener {
|
||||
} else if (msg.what == MSG_WHAT_DRAW_PEOPLE_CROSS) {
|
||||
Logger.i(TAG, "people cross -- 1 --")
|
||||
val data = msg.obj as? MessagePad.Event ?: return@Callback true
|
||||
val body = runCatching { GsonUtils.fromJson(data.exts, Map::class.java) }.getOrNull()
|
||||
val cameraIp = body?.get("cameraIp") as? String ?: ""
|
||||
val array = (body?.get("eventExtUnits") as? JsonArray)
|
||||
val body = runCatching { GsonUtils.fromJson(data.exts, Extras::class.java) }.getOrNull()
|
||||
val cameraIp = body?.cameraIp
|
||||
val array = body?.eventExtUnits
|
||||
var heading = 0.0
|
||||
var uuid = ""
|
||||
if (array != null && array.size() > 0) {
|
||||
if (!array.isNullOrEmpty()) {
|
||||
for (e in array) {
|
||||
if (e is JsonObject) {
|
||||
if (e.has("heading")) {
|
||||
heading = runCatching { e.asDouble }.getOrNull() ?: 0.0
|
||||
}
|
||||
if (e.has("uuid")) {
|
||||
uuid = runCatching { e.asString }.getOrNull() ?: ""
|
||||
}
|
||||
}
|
||||
heading = e.heading ?: 0.0
|
||||
uuid = e.uuid ?: ""
|
||||
}
|
||||
}
|
||||
Logger.d(TAG, "cameraIp: $cameraIp, heading:$heading, uuid: $uuid")
|
||||
val isUseGps = data.gnssType != 0
|
||||
val eventLocation = if (isUseGps) arrayOf(data.longitude, data.latitude) else CoordinateTransform.GCJ02ToWGS84(data.longitude, data.latitude)
|
||||
val carLocation = if (isUseGps) CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84() else CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()
|
||||
val distance = CoordinateUtils.calculateLineDistance(carLocation.longitude, carLocation.latitude, eventLocation[0], eventLocation[1])
|
||||
AiRoadMarker.aiMakers.getOrPut(data.eventId) {
|
||||
Logger.i(TAG, "people cross -- 2 --")
|
||||
val isDriver = AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)
|
||||
val carLocation = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
|
||||
val distance = CoordinateUtils.calculateLineDistance(carLocation.longitude, carLocation.latitude, data.longitude, data.latitude)
|
||||
if (distance > 150) {
|
||||
Logger.i(TAG, "people cross --> distance > 150")
|
||||
V2XBizTrace.onAck(TAG, mapOf("people cross" to "distance > 150"), true)
|
||||
return@Callback true
|
||||
}
|
||||
Logger.i(TAG, "people cross -- 3 --")
|
||||
val isDriver = AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)
|
||||
// 弹事件框
|
||||
CallerRoadV2NEventWindowListenerManager.showLiveVideo(
|
||||
data.eventId,
|
||||
@@ -444,12 +417,12 @@ internal object V2NIdentifyDrawer: IEventDismissListener {
|
||||
isDriver,
|
||||
String.format(EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_SOCKET_ROAD_PEOPLE_CROSS.poiType), distance.toInt()),
|
||||
cameraIp.toString(),
|
||||
data.longitude,
|
||||
data.latitude)
|
||||
eventLocation[0],
|
||||
eventLocation[1])
|
||||
AiRoadMarker()
|
||||
}.also {
|
||||
Logger.i(TAG, "people cross -- 4 --")
|
||||
it.marker(Marker(data.eventId, EventTypeEnumNew.TYPE_SOCKET_ROAD_PEOPLE_CROSS.poiType, data.longitude, data.latitude, heading), drawMarker = true, false, isHighFrequency = true)
|
||||
it.marker(Marker(data.eventId, EventTypeEnumNew.TYPE_SOCKET_ROAD_PEOPLE_CROSS.poiType, eventLocation[0], eventLocation[1], heading, isUseGps = isUseGps), drawMarker = true, false, isHighFrequency = true)
|
||||
}.receive()
|
||||
}
|
||||
true
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.mogo.eagle.function.biz.v2x.v2n.pnc.beans
|
||||
|
||||
import androidx.annotation.Keep
|
||||
|
||||
|
||||
@Keep
|
||||
data class Extras (
|
||||
val cameraIp: String? = null,
|
||||
val eventExtUnits: List<EventExtUnit>? = null
|
||||
)
|
||||
|
||||
|
||||
@Keep
|
||||
data class EventExtUnit(
|
||||
val heading: Double? = null,
|
||||
val uuid: String? = null
|
||||
)
|
||||
@@ -107,7 +107,7 @@ class AiRoadMarker {
|
||||
val builder = getOrPutPointOptionBuilder(markerId, V2XConst.V2X_MARKER_OWNER, MAP_MARKER)
|
||||
builder
|
||||
.set3DMode(true)
|
||||
.isUseGps(true)
|
||||
.isUseGps(marker.isUseGps)
|
||||
.icon3DRes(EventTypeEnumNew.getMarker3DRes(marker.poiType))
|
||||
.anchorColor("#D65D5AFF")
|
||||
.controlAngle(true)
|
||||
@@ -122,7 +122,7 @@ class AiRoadMarker {
|
||||
if (marker.poiType == EventTypeEnumNew.TYPE_SOCKET_ROAD_OTHER_RETROGRADE_VEHICLE.poiType) {
|
||||
distance = 100
|
||||
}
|
||||
val wrapper = MarkerWrapper(markerId, marker.poi_lon, marker.poi_lat, 1, elapsedDistance = distance)
|
||||
val wrapper = MarkerWrapper(markerId, marker.poi_lon, marker.poi_lat, if (marker.isUseGps) 1 else 0, elapsedDistance = distance)
|
||||
wrapper.onRemoved = {
|
||||
builders.remove(markerId)
|
||||
markerIds.remove(p.id)
|
||||
@@ -153,7 +153,7 @@ class AiRoadMarker {
|
||||
if (marker.poiType == EventTypeEnumNew.TYPE_SOCKET_ROAD_GREE_WAVE.poiType) {
|
||||
elapsedDuration = TimeUnit.SECONDS.toMillis(3)
|
||||
}
|
||||
val wrapper = MarkerWrapper(markerId, marker.poi_lon, marker.poi_lat, 1, elapsedDistance = elapsedDistance, elapsedDuration = elapsedDuration)
|
||||
val wrapper = MarkerWrapper(markerId, marker.poi_lon, marker.poi_lat, if (marker.isUseGps) 1 else 0, elapsedDistance = elapsedDistance, elapsedDuration = elapsedDuration)
|
||||
if (drawMarker) {
|
||||
marker.entity?.apply { roadMarker.drawMarkers(this, wrapper) }
|
||||
}
|
||||
@@ -371,6 +371,7 @@ class AiRoadMarker {
|
||||
val polygon: List<Pair<Double, Double>>? = null,
|
||||
var farthestPoint: Pair<Double, Double>? = null,
|
||||
var entity: V2XRoadEventEntity? = null,
|
||||
var isUseGps: Boolean = false
|
||||
) {
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
|
||||
@@ -47,7 +47,7 @@ public class V2XRoadEventMarker implements IV2XMarker<V2XRoadEventEntity> {
|
||||
List<Pair<Double, Double>> polygons = noveltyInfo.getPolygon();
|
||||
if (gpsLocation != null && polygons != null) {
|
||||
MarkerLocation location = noveltyInfo.getLocation();
|
||||
AiRoadMarker.Marker m = new AiRoadMarker.Marker(noveltyInfo.getInfoId(), noveltyInfo.getPoiType(), gpsLocation.second, gpsLocation.first, location.getAngle(), polygons, null, entity);
|
||||
AiRoadMarker.Marker m = new AiRoadMarker.Marker(noveltyInfo.getInfoId(), noveltyInfo.getPoiType(), gpsLocation.second, gpsLocation.first, location.getAngle(), polygons, null, entity, false);
|
||||
AiRoadMarker aiMarker = new AiRoadMarker();
|
||||
aiMarker.marker(m, true, isDrawRoadLine(m.getPoiType()), false);
|
||||
AiRoadMarker.aiMakers.put(noveltyInfo.getInfoId(), aiMarker);
|
||||
|
||||
@@ -8,6 +8,8 @@ import com.zhidaoauto.map.data.road.CenterLine
|
||||
import org.locationtech.jts.geom.Coordinate
|
||||
import org.locationtech.jts.geom.GeometryFactory
|
||||
import org.locationtech.jts.geom.LineString
|
||||
import org.locationtech.jts.geom.LineString.MINIMUM_VALID_SIZE
|
||||
import org.locationtech.jts.geom.Polygon
|
||||
import org.locationtech.jts.linearref.LengthIndexedLine
|
||||
import java.util.concurrent.CountDownLatch
|
||||
|
||||
@@ -27,8 +29,20 @@ object V2NUtils {
|
||||
}
|
||||
val occupy = ArrayList<Lane>()
|
||||
val factory = GeometryFactory()
|
||||
val polygonList = ArrayList<Coordinate>(polygon.map { Coordinate(it.first, it.second) })
|
||||
var p1: Polygon? = null
|
||||
while (p1 == null) {
|
||||
if (polygonList.size < MINIMUM_VALID_SIZE) {
|
||||
polygonList.add(polygonList[0])
|
||||
continue
|
||||
}
|
||||
try {
|
||||
p1 = factory.createPolygon(polygonList.toTypedArray())
|
||||
} catch (ignore: IllegalArgumentException) {
|
||||
polygonList.add(polygonList[0])
|
||||
}
|
||||
}
|
||||
for (lane in lanes) {
|
||||
val p1 = factory.createPolygon(polygon.map { Coordinate(it.first, it.second) }.toTypedArray())
|
||||
val p2 = factory.createLineString(lane.points.map { Coordinate(it.first, it.second) }.toTypedArray()).buffer((lane.width.toDouble() * 0.7 * (1e-5)) / 2.0)
|
||||
if (p1.intersects(p2)) {
|
||||
occupy += lane
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.mogo.eagle.core.data.v2x.V2XEvent.RoadEventX
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.setDemoMode
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.setIgnoreConditionDraw
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerV2nNioEventListenerManager
|
||||
import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||
@@ -37,7 +38,9 @@ import io.netty.channel.Channel
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import mogo.telematics.pad.MessagePad.TrackedObject
|
||||
import java.nio.charset.Charset
|
||||
import java.util.Collections
|
||||
|
||||
class TeleMsgHandler : IMsgHandler {
|
||||
|
||||
@@ -103,6 +106,22 @@ class TeleMsgHandler : IMsgHandler {
|
||||
}
|
||||
return
|
||||
}
|
||||
if (it.protocolType == TelematicConstant.V2N_AI_ROAD_SHI_GONG) {
|
||||
runCatching {
|
||||
Log.d(TAG, "乘客屏收到司机屏转发云端下发的道路施工 --- 1 ---")
|
||||
CallerAutopilotIdentifyListenerManager.invokeAutopilotIdentifyDataUpdate(Collections.singletonList(TrackedObject.parseFrom(msg.body)))
|
||||
Log.d(TAG, "乘客屏收到司机屏转发云端下发的道路施工 --- 2 ---")
|
||||
}
|
||||
return
|
||||
}
|
||||
if (it.protocolType == TelematicConstant.V2N_AI_ROAD_SHI_GU) {
|
||||
runCatching {
|
||||
Log.d(TAG, "乘客屏收到司机屏转发云端下发的道路事故 --- 1 ---")
|
||||
CallerAutopilotIdentifyListenerManager.invokeAutopilotIdentifyDataUpdate(Collections.singletonList(TrackedObject.parseFrom(msg.body)))
|
||||
Log.d(TAG, "乘客屏收到司机屏转发云端下发的道路事故 --- 2 ---")
|
||||
}
|
||||
return
|
||||
}
|
||||
if (it.protocolType == TelematicConstant.V2N_NEW_LINK_SWITCH) {
|
||||
try {
|
||||
Log.d(TAG, "乘客屏收到司机屏转发的新链路开关 --- 1 ---")
|
||||
|
||||
@@ -14,6 +14,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotSummaryInfo
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxType
|
||||
import com.mogo.eagle.core.data.msgbox.MsgCategory
|
||||
@@ -21,6 +22,7 @@ import com.mogo.eagle.core.data.notice.AutoExplorationEntity
|
||||
import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxListener
|
||||
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxListenerManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
|
||||
|
||||
@@ -125,8 +127,12 @@ class AutomaticExplorationView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
if(allComplete){
|
||||
//语音播放
|
||||
AIAssist.getInstance(context).speakTTSVoice("道路畅通一切正常蘑菇型车助手将持续守候您的出行")
|
||||
//停止左上角扫描动画
|
||||
rotationAnim?.cancel()
|
||||
//语音播放,只在司机端播放
|
||||
if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){
|
||||
AIAssist.getInstance(context).speakTTSVoice("道路畅通一切正常蘑菇型车助手将持续守候您的出行")
|
||||
}
|
||||
//5秒后关闭弹窗
|
||||
val hideViewTimer =object: CountDownTimer(EXPLORATION_HIDE_TIME,EXPLORATION_HIDE_TIME){
|
||||
override fun onTick(millisUntilFinished: Long) {
|
||||
|
||||
@@ -128,6 +128,7 @@
|
||||
android:textSize="@dimen/sp_94"
|
||||
android:textColor="@color/summary_service_num_p"
|
||||
app:layout_constraintHorizontal_chainStyle="packed"
|
||||
android:fontFamily="@font/font_din"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
@@ -154,6 +155,7 @@
|
||||
android:textSize="@dimen/sp_94"
|
||||
android:textColor="@color/summary_service_num_p"
|
||||
app:layout_constraintHorizontal_chainStyle="packed"
|
||||
android:fontFamily="@font/font_din"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
@@ -180,6 +182,7 @@
|
||||
android:textSize="@dimen/sp_94"
|
||||
android:textColor="@color/summary_service_num_p"
|
||||
app:layout_constraintHorizontal_chainStyle="packed"
|
||||
android:fontFamily="@font/font_din"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
@@ -206,6 +209,7 @@
|
||||
android:textSize="@dimen/sp_94"
|
||||
android:textColor="@color/summary_service_num_p"
|
||||
app:layout_constraintHorizontal_chainStyle="packed"
|
||||
android:fontFamily="@font/font_din"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
@@ -232,6 +236,7 @@
|
||||
android:textSize="@dimen/sp_94"
|
||||
android:textColor="@color/summary_service_num_p"
|
||||
app:layout_constraintHorizontal_chainStyle="packed"
|
||||
android:fontFamily="@font/font_din"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
@@ -284,6 +289,7 @@
|
||||
android:textColor="@color/summary_danger_num_p"
|
||||
android:textSize="@dimen/sp_195"
|
||||
android:layout_marginTop="@dimen/dp_120"
|
||||
android:fontFamily="@font/font_din"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
@@ -333,6 +339,7 @@
|
||||
android:textColor="@color/summary_danger_num_p"
|
||||
android:textSize="@dimen/sp_195"
|
||||
android:layout_marginTop="@dimen/dp_120"
|
||||
android:fontFamily="@font/font_din"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
android:id="@+id/tvExplorationContent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="@dimen/sp_20"
|
||||
android:textSize="@dimen/sp_22"
|
||||
android:textColor="@color/auto_exploration_content_p"
|
||||
android:layout_marginStart="@dimen/dp_13"
|
||||
android:layout_gravity="center_vertical"
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="@dimen/dp_580"
|
||||
android:layout_height="@dimen/dp_520"
|
||||
android:background="@drawable/bg_automatic_exploration"
|
||||
android:layout_width="@dimen/dp_674"
|
||||
android:layout_height="@dimen/dp_582"
|
||||
android:background="@drawable/hmi_v2n_event_bg_passenger"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<ImageView
|
||||
@@ -13,6 +13,8 @@
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
android:src="@drawable/icon_scan"
|
||||
android:contentDescription="@string/exploration_scan"
|
||||
android:layout_marginTop="@dimen/dp_68"
|
||||
android:layout_marginStart="@dimen/dp_84"
|
||||
/>
|
||||
|
||||
<ImageView
|
||||
@@ -47,6 +49,8 @@
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:src="@drawable/icon_exploration_close"
|
||||
android:contentDescription="@string/exploration_close"
|
||||
android:layout_marginTop="@dimen/dp_68"
|
||||
android:layout_marginEnd="@dimen/dp_68"
|
||||
/>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.os.Looper
|
||||
import android.os.Message
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant
|
||||
import com.mogo.eagle.core.data.road.CameraDeviceInfo
|
||||
import com.mogo.eagle.core.function.api.map.road.IMoGoMapRoadListener
|
||||
@@ -15,6 +16,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84Lis
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.function.view.CameraMarkerView
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
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.eagle.core.utilcode.util.ThreadUtils
|
||||
@@ -30,6 +32,7 @@ class RoadCrossCameraManager : IMoGoMapRoadListener {
|
||||
companion object {
|
||||
|
||||
private const val TAG = "RoadCrossCameraManager"
|
||||
private const val REQUEST_CAMERA_MSG = 0
|
||||
private const val REMOVE_MARKER_DELAY_TIME = 10_000L
|
||||
|
||||
val instance: RoadCrossCameraManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
|
||||
@@ -67,7 +70,9 @@ class RoadCrossCameraManager : IMoGoMapRoadListener {
|
||||
"$M_MAP$TAG",
|
||||
"触发接口调用 dis: $distance , roadCrossEnd: ${roadCrossEnd ?: "null"} "
|
||||
)
|
||||
AIAssist.getInstance(mContext).speakTTSVoice("蘑菇检测到前方${distance.toInt()}米您将通过路口,已为您切换展示路口全息影像")
|
||||
if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){
|
||||
AIAssist.getInstance(mContext).speakTTSVoice("蘑菇检测到前方${distance.toInt()}米您将通过路口,已为您切换展示路口全息影像")
|
||||
}
|
||||
if (roadCrossEnd != null) {
|
||||
ndeRoadCameraNetWorkModel.getRoadCrossInfo(roadCrossEnd,
|
||||
onSuccess = {
|
||||
@@ -155,7 +160,10 @@ class RoadCrossCameraManager : IMoGoMapRoadListener {
|
||||
ndeRoadCameraNetWorkModel.cancelRequest("roadCross")
|
||||
// 清除marker
|
||||
CallerLogger.d("$M_MAP$TAG", "remove marker")
|
||||
handler.sendEmptyMessageDelayed(0, REMOVE_MARKER_DELAY_TIME)
|
||||
if(handler.hasMessages(REQUEST_CAMERA_MSG)){
|
||||
handler.removeMessages(REQUEST_CAMERA_MSG)
|
||||
handler.sendEmptyMessageDelayed(REQUEST_CAMERA_MSG, REMOVE_MARKER_DELAY_TIME)
|
||||
}
|
||||
// 释放控制
|
||||
isCameraRequest = false
|
||||
CallerLogger.d("$M_MAP$TAG", "经过路口,释放控制")
|
||||
|
||||
@@ -4,6 +4,9 @@ import android.animation.ObjectAnimator
|
||||
import android.animation.ValueAnimator
|
||||
import android.content.Context
|
||||
import android.graphics.Rect
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.os.Message
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
@@ -12,11 +15,15 @@ import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener
|
||||
import com.mogo.eagle.core.function.api.map.road.IMoGoMapRoadListener
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapIdentifyManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager
|
||||
import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager
|
||||
import com.mogo.eagle.core.function.map.R
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
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.eagle.core.utilcode.util.ThreadUtils
|
||||
@@ -35,10 +42,12 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoMapRoadListener{
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoMapRoadListener, IViewControlListener {
|
||||
|
||||
companion object {
|
||||
const val TAG = "RoadCrossRoamView"
|
||||
private const val MSG_HIDE_VIEW = 0
|
||||
private const val MSG_HIDE_VIEW_TIME = 10_000L
|
||||
}
|
||||
|
||||
private var showState by Delegates.observable(false) { _, oldV, newV ->
|
||||
@@ -51,6 +60,15 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
private var rotationAnim: ObjectAnimator? = null
|
||||
private var lightMode = CallerSkinModeListenerManager.getMode() == 1
|
||||
|
||||
private val handler = object : Handler(Looper.getMainLooper()) {
|
||||
override fun handleMessage(msg: Message) {
|
||||
super.handleMessage(msg)
|
||||
if (msg.what == MSG_HIDE_VIEW) {
|
||||
detachView()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
init {
|
||||
val res = if (lightMode) {
|
||||
R.layout.view_road_cross_roam_light
|
||||
@@ -75,9 +93,17 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun mainPageViewVisible(v: Int) {
|
||||
super.mainPageViewVisible(v)
|
||||
if (v == View.GONE && this.visibility == View.VISIBLE) {
|
||||
detachView()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
CallerMapRoadListenerManager.addListener(TAG, this)
|
||||
CallerHmiViewControlListenerManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
private fun updateView(state: Boolean) {
|
||||
@@ -93,11 +119,11 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
|
||||
override fun onStopLineInfo(info: StopLine) {
|
||||
super.onStopLineInfo(info)
|
||||
if(info.distance == 0.0 || info.distance > 200){
|
||||
if (info.distance == 0.0 || info.distance > 200) {
|
||||
CallerLogger.d("$M_MAP$TAG", "showState return , distance is ${info.distance}")
|
||||
return
|
||||
}
|
||||
showState = info.distance <= 200 && info.distance > 100
|
||||
showState = info.distance in 110.0..200.0
|
||||
}
|
||||
|
||||
private fun attachView() {
|
||||
@@ -115,7 +141,10 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
mapRoamView.openRoam()
|
||||
//播放语音
|
||||
val dis = CallerMapRoadListenerManager.getStopLineDistance()?.toInt() ?: 0
|
||||
AIAssist.getInstance(context).speakTTSVoice("前方${dis}米将通过路口,蘑菇为您提供路口全息影像,助力出行")
|
||||
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
AIAssist.getInstance(context)
|
||||
.speakTTSVoice("前方${dis}米将通过路口,蘑菇为您提供路口全息影像,助力出行")
|
||||
}
|
||||
lvRoadCrossRoamTip.adapter = RoadCrossRoamListAdapter(context, lightMode)
|
||||
// 创建横向移动的动画
|
||||
if (animator == null) {
|
||||
@@ -145,12 +174,16 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
} else {
|
||||
tvRoadRoamTitle.setTextColor(context.getColor(R.color.white))
|
||||
}
|
||||
handler.sendEmptyMessageDelayed(MSG_HIDE_VIEW, MSG_HIDE_VIEW_TIME)
|
||||
}
|
||||
|
||||
private fun detachView() {
|
||||
if (this.visibility == View.GONE) {
|
||||
return
|
||||
}
|
||||
if(handler.hasMessages(MSG_HIDE_VIEW)){
|
||||
handler.removeMessages(MSG_HIDE_VIEW)
|
||||
}
|
||||
mapRoamView.closeRoam()
|
||||
mapRoamView.visibility = View.GONE
|
||||
CallerMapIdentifyManager.roam = Pair("", false)
|
||||
@@ -169,6 +202,7 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
ivZhiRoadRoamView.clearAnimation()
|
||||
}
|
||||
CallerMapRoadListenerManager.removeListener(TAG)
|
||||
CallerHmiViewControlListenerManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -804,6 +804,7 @@ enum class EventTypeEnumNew(
|
||||
TYPE_SOCKET_ROAD_CONGESTION.poiType -> TYPE_SOCKET_ROAD_CONGESTION.content
|
||||
TYPE_SOCKET_ROAD_OTHER_RETROGRADE_VEHICLE.poiType -> TYPE_SOCKET_ROAD_OTHER_RETROGRADE_VEHICLE.content
|
||||
TYPE_USECASE_ROAD_BUS_STATION.poiType -> TYPE_USECASE_ROAD_BUS_STATION.content
|
||||
TYPE_SOCKET_ROAD_PEOPLE_CROSS.poiType -> TYPE_SOCKET_ROAD_PEOPLE_CROSS.content
|
||||
else -> "道路事件"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,10 +19,16 @@ class TelematicConstant {
|
||||
|
||||
const val V2N_NEW_LINK_SWITCH = 202 // FunctionBuildConfig#v2nMainSwitch & FunctionBuildConfig#isNewV2NData
|
||||
|
||||
// -------------------- For Android Unit Test -----BEGIN------------
|
||||
const val V2N_AI_ROAD_PEOPLE_CROSS = 203
|
||||
|
||||
const val V2N_AI_ROAD_GREEN_WAVE = 204
|
||||
|
||||
const val V2N_AI_ROAD_OTHER_RETROGRADE_VEHICLE = 205
|
||||
|
||||
const val V2N_AI_ROAD_SHI_GONG = 206
|
||||
|
||||
const val V2N_AI_ROAD_SHI_GU = 207
|
||||
// -------------------- For Android Unit Test ------ END ------------
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,10 @@ interface IViewControlListener {
|
||||
|
||||
}
|
||||
|
||||
fun mainPageViewVisible(v:Int){
|
||||
|
||||
}
|
||||
|
||||
/** --------- StatusBar --------- **/
|
||||
/**
|
||||
* 设置状态栏暗夜或明亮模式
|
||||
|
||||
@@ -20,6 +20,13 @@ object CallerHmiViewControlListenerManager : CallerBase<IViewControlListener>()
|
||||
M_LISTENERS[tag]?.visible(v)
|
||||
}
|
||||
|
||||
fun invokeMainPageViewVisible(v: Int) {
|
||||
M_LISTENERS.forEach {
|
||||
val listener = it.value
|
||||
listener.mainPageViewVisible(v)
|
||||
}
|
||||
}
|
||||
|
||||
fun setStatusBarDarkOrLight(tag: String, light: Boolean) {
|
||||
M_LISTENERS[tag]?.setStatusBarDarkOrLight(light)
|
||||
}
|
||||
|
||||
@@ -26,14 +26,14 @@ object CallerMsgBoxManager {
|
||||
*/
|
||||
fun saveMsgBox(bean: MsgBoxBean) {
|
||||
CallerTrace.write(TAG,bean)
|
||||
providerApi?.saveMsg(bean)
|
||||
providerApi?.saveMsg(bean) //todo emArrow test
|
||||
}
|
||||
|
||||
/**
|
||||
* 存储含有pb的数据到消息盒子(区别与上述方法中的trace write)
|
||||
*/
|
||||
fun saveMsgBoxHasPB(bean: MsgBoxBean){
|
||||
providerApi?.saveMsg(bean)
|
||||
providerApi?.saveMsg(bean) //todo emArrow test
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -5,7 +5,6 @@ import android.view.View
|
||||
import com.mogo.eagle.core.data.map.*
|
||||
import com.mogo.eagle.core.function.call.autopilot.*
|
||||
import com.mogo.eagle.core.utilcode.util.*
|
||||
import com.mogo.map.MogoMap
|
||||
import com.mogo.map.overlay.point.Point.Options
|
||||
import com.mogo.map.MogoMap.Companion.mapInstance
|
||||
import com.mogo.map.overlay.core.*
|
||||
|
||||
Reference in New Issue
Block a user