diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/StartAutopilotAnimationView.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/StartAutopilotAnimationView.kt index 4eee9670ee..17e99eac1a 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/StartAutopilotAnimationView.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/StartAutopilotAnimationView.kt @@ -1,6 +1,8 @@ package com.mogo.och.common.module.wigets; +import android.annotation.SuppressLint import android.content.Context +import android.os.CountDownTimer import android.util.AttributeSet import android.view.LayoutInflater import android.view.View @@ -11,8 +13,10 @@ import android.widget.RelativeLayout import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import com.mogo.och.common.module.R +import com.mogo.och.common.module.utils.SoundPoolHelper import kotlinx.android.synthetic.main.start_autopilot_animation_view.view.startAutopilotTip import kotlinx.android.synthetic.main.start_autopilot_animation_view.view.startAutopilotTipImg +import java.lang.Exception import java.util.concurrent.atomic.AtomicReference @@ -27,6 +31,9 @@ class StartAutopilotAnimationView @JvmOverloads constructor( private const val TAG = "V2XWarningView" } + private var startTimer: CountDownTimer? = null + private val mContext: Context + private val closeWarningTask: Runnable = Runnable { showWarning(DirectionEnum.ALERT_WARNING_NON) } @@ -34,9 +41,18 @@ class StartAutopilotAnimationView @JvmOverloads constructor( private val oldDirection = AtomicReference() init { + mContext = context LayoutInflater.from(context).inflate(R.layout.start_autopilot_animation_view, this, true) } + fun playDI(){ + try { + SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(mContext , R.raw.startautopilot) + }catch (e: Exception){ + e.printStackTrace() + } + } + override fun onAttachedToWindow() { super.onAttachedToWindow() } @@ -47,6 +63,12 @@ class StartAutopilotAnimationView @JvmOverloads constructor( fun dismiss(direction: DirectionEnum) { dismissWarning(direction) + cancelCountdown() + } + + fun cancelCountdown(){ //防止内存泄漏 + startTimer?.cancel() + startTimer = null } /** @@ -56,7 +78,8 @@ class StartAutopilotAnimationView @JvmOverloads constructor( */ private fun showWarning(direction: DirectionEnum, time: Long = ALL_CLOSE_TIMER) { - startAutopilotTip.text = direction.desc + //开始倒计时 + countDownTimer() // 如果传入的不是关闭显示,则设置倒计时,定时关闭红框警示 if (oldDirection.get() == direction) { @@ -72,6 +95,7 @@ class StartAutopilotAnimationView @JvmOverloads constructor( post { if (direction == DirectionEnum.ALERT_WARNING_TOP){ startAutopilotTipImg.visibility = View.VISIBLE + startAutopilotTip.visibility = View.VISIBLE } if (direction == DirectionEnum.ALERT_WARNING_NON) { @@ -96,6 +120,7 @@ class StartAutopilotAnimationView @JvmOverloads constructor( when (direction) { DirectionEnum.ALERT_WARNING_TOP -> { startAutopilotTipImg.visibility = View.GONE + startAutopilotTip.visibility = View.GONE } else -> { CallerLogger.d("$M_HMI$TAG", "Not Support Direction") @@ -112,15 +137,31 @@ class StartAutopilotAnimationView @JvmOverloads constructor( enum class DirectionEnum( var direction: Int, - var desc: String, ) { ALERT_WARNING_NON( - 0, - "关闭红色边框预警" - ), + 0), ALERT_WARNING_TOP( - 1, - "正上方" - ), + 1) } + + private fun countDownTimer() { + + startTimer = object : CountDownTimer(ALL_CLOSE_TIMER, 1000L) {// 5倒计时后开启自驾 + + @SuppressLint("SetTextI18n") + override fun onTick(millisUntilFinished: Long) { + // 倒计时 + startAutopilotTip.text = "${(millisUntilFinished/1000).toInt()} 车辆即将自动开启自动驾驶" + playDI() + } + + override fun onFinish() { + //倒计时结束了... + startAutopilotTip.text = "车辆正在自动开启自动驾驶" + } + } + + startTimer?.start() + } + } \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/res/layout/start_autopilot_animation_view.xml b/OCH/mogo-och-common-module/src/main/res/layout/start_autopilot_animation_view.xml index ffc928340f..bf45939451 100644 --- a/OCH/mogo-och-common-module/src/main/res/layout/start_autopilot_animation_view.xml +++ b/OCH/mogo-och-common-module/src/main/res/layout/start_autopilot_animation_view.xml @@ -9,7 +9,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" - android:text="开始自驾" + android:visibility="gone" android:textSize="@dimen/dp_34" android:textColor="@android:color/white"/> > : MvpFragment> : MvpFragment) data class QueryCarOrderByNoReqBean(var sn: String, var orderNo: String) data class QueryCarOrderByNoRespBean( var sn: String, var orderNo: String, var orderStatus: Int, diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/callback/ITaxiControllerStatusCallback.java b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/callback/ITaxiControllerStatusCallback.java index 070559f406..63d40bb47e 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/callback/ITaxiControllerStatusCallback.java +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/callback/ITaxiControllerStatusCallback.java @@ -14,4 +14,7 @@ public interface ITaxiControllerStatusCallback { void onCarLocationChanged(MogoLocation location); //开始开启自动驾驶 void startOpenAutopilot(); + + //自动开启自动驾驶 + void startOpenAutopilotNonManual(); } diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/constant/TaxiUnmannedConst.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/constant/TaxiUnmannedConst.kt index 9b9b2e487a..4b262da6c9 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/constant/TaxiUnmannedConst.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/constant/TaxiUnmannedConst.kt @@ -73,7 +73,11 @@ class TaxiUnmannedConst { const val TIMER_START_AUTOPILOT_INTERVAL = 20 * 1000L - const val TIMER_PREPARE_TASK_INTERVAL = 30 * 1000L + const val TIMER_PREPARE_TASK_INTERVAL = 30 * 1000L //30s再次获取任务 + + const val COUNTDOWN_INTERVAL = 5 * 1000L //30s再次获取任务 + + const val START_AUTOPILOT_ANIMATION_INTERVAL = 7 * 1000L //30s再次获取任务 } } \ No newline at end of file diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt index 825443b084..677bf682bb 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt @@ -61,14 +61,13 @@ import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceM import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager.setStationPoint import com.mogo.och.common.module.map.AmapNaviToDestinationModel import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil.coordinateConverterWgsToGcjLocations +import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.taxi.bean.ContrailListRespBean import com.mogo.och.taxi.bean.OrderDetail -import com.mogo.och.taxi.bean.PrepareTaskRespBean import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean import com.mogo.och.taxi.bean.StartServiceRespBean import com.mogo.och.taxi.callback.IOCHTaxiAutopilotPlanningCallback import com.mogo.och.taxi.callback.ITaxiADASStatusCallback -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.TaskStatusEnum @@ -76,10 +75,9 @@ import com.mogo.och.taxi.constant.TaxiOrderStatusEnum import com.mogo.och.taxi.constant.TaxiOrderStatusEnum.Companion.valueOf import com.mogo.och.taxi.constant.TaxiUnmannedConst import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.BUSINESSTYPE -import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TIMER_PREPARE_TASK_INTERVAL +import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.COUNTDOWN_INTERVAL import com.mogo.och.taxi.network.CarServiceManager import com.mogo.och.taxi.network.CarServiceManager.arriveSite -import com.mogo.och.taxi.network.CarServiceManager.prepareTask import com.mogo.och.taxi.network.CarServiceManager.startTask import com.mogo.och.taxi.utils.TaxiAnalyticsManager import com.mogo.och.taxi.utils.TaxiTrajectoryManager @@ -121,8 +119,7 @@ object TaxiModel { private var mADASStatusCallback //Model->Presenter:自动驾驶状态相关 : ITaxiADASStatusCallback? = null - private var mCarOperationalCallback //Model->Presenter:登录状态和司机今日接单状态 - : ITaxiCarOperationalCallback? = null + private var mControllerStatusCallback //Model->Presenter:VR mode等 : ITaxiControllerStatusCallback? = null private var mOrderStatusCallback //Model->Presenter:订单变更 @@ -144,10 +141,6 @@ object TaxiModel { mADASStatusCallback = callback } - fun setCarStatusCallback(callback: ITaxiCarOperationalCallback?) { - mCarOperationalCallback = callback - } - fun setControllerStatusCallback(callback: ITaxiControllerStatusCallback?) { mControllerStatusCallback = callback } @@ -300,7 +293,7 @@ object TaxiModel { return } mCurrentTaskAndOrder = data - TaxiTrajectoryManager.getInstance().syncTrajectoryInfo() + SharedPrefsMgr.getInstance(mContext!!).putString( TaxiUnmannedConst.SP_KEY_OCH_TAXI_ORDER, GsonUtil.jsonFromObject(data) @@ -410,7 +403,7 @@ object TaxiModel { } //根据开关和后台是否发布轨迹启动自驾 - if (FunctionBuildConfig.isPassStartAutopilotCommand && TextUtils.isEmpty( + if (FunctionBuildConfig.isPassStartAutopilotCommand && mCurTaskContrail != null && TextUtils.isEmpty( mCurTaskContrail!!.csvFileUrl ) && TextUtils.isEmpty(mCurTaskContrail!!.csvFileUrlDPQP) @@ -707,12 +700,15 @@ object TaxiModel { CarServiceManager.contrailList(mContext!!, planningLines, object : OchCommonServiceCallback { override fun onSuccess(data: ContrailListRespBean?) { + d(SceneConstant.M_TAXI + TAG, "queryTaskContrail: ${GsonUtil.jsonFromObject(data?.data)}") if (data == null || data.code != 0) return mCurTaskContrail = data.data?.get(0) + + TaxiTrajectoryManager.getInstance().syncTrajectoryInfo() } override fun onFail(code: Int, msg: String?) { - d(SceneConstant.M_TAXI + TAG, "queryOrderContrails code=$code,msg=$msg") + d(SceneConstant.M_TAXI + TAG, "queryTaskContrail code=$code,msg=$msg") } }) @@ -1068,4 +1064,17 @@ object TaxiModel { fun updateOrderContrails(contrails: MutableList?) { mOrderContrails = contrails } + + fun autoStartDriving(){ + //启动动画+文字 + if (mControllerStatusCallback != null) { + mControllerStatusCallback!!.startOpenAutopilotNonManual() + } + + UiThreadHandler.postDelayed({ + toStartTask() //状态流转 + startAutoPilot() //自驾开启 + VoiceNotice.showNotice("车辆正在自动开启自动驾驶") + },COUNTDOWN_INTERVAL) // 5s后开启自驾, 状态流转 + } } \ No newline at end of file diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt index db880b22dc..7904ca67ee 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt @@ -86,7 +86,7 @@ class TaxiUnmannedViewModel : BaseViewModel(){ } is UnmannedIntent.CancelOrder -> {// 取消订单, 暂未加取消类型和原因 - handleCancelOrder() + handleCancelOrder(intent.type) } is UnmannedIntent.StartTask -> { @@ -95,9 +95,9 @@ class TaxiUnmannedViewModel : BaseViewModel(){ } } - private fun handleCancelOrder() { + private fun handleCancelOrder(cancelType: Int) { if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order != null){ - cancelOrder(mContext, mCurrentTaskAndOrder!!.order!!.orderNo, + cancelOrder(mContext, mCurrentTaskAndOrder!!.order!!.orderNo,cancelType, object : OchCommonServiceCallback{ override fun onSuccess(data: BaseData?) { d(SceneConstant.M_TAXI + TAG, "handleCancelOrder() = onSuccess") @@ -130,7 +130,8 @@ class TaxiUnmannedViewModel : BaseViewModel(){ updateUntruthTask(null) if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.endSite != null - && mCurrentTaskAndOrder!!.startSite != null){ + && mCurrentTaskAndOrder!!.startSite != null + && mCurrentTaskAndOrder!!.currentStatus < TaskStatusEnum.CompleteTask.code){ VoiceNotice.showNotice("暂停接单啦!要完成当前订单哦") }else{ VoiceNotice.showNotice("暂停接单啦") @@ -283,7 +284,8 @@ class TaxiUnmannedViewModel : BaseViewModel(){ d(TAG, "queryCurrentTaskOnce = mCurrentTaskAndOrder = " + GsonUtil.jsonFromObject(mCurrentTaskAndOrder)) - if (result!!.endSite == null && mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order!= null) { + if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order!= null && + result != null && result.order == null) { //本地根据订单 orderNo 去查询下(乘客取消订单) queryCurrentOrderStatusByNo(mCurrentTaskAndOrder!!.order!!.orderNo) return @@ -292,6 +294,8 @@ class TaxiUnmannedViewModel : BaseViewModel(){ //订单或者伪任务更新, 都去刷新下界面 if (mCurrentTaskAndOrder == null || !mCurrentTaskAndOrder!!.equals(result)){ + if (result == null) return + if (result.endSite == null && result.order == null){ mCurrentTaskAndOrder = null updateNoTaskAndOrderUi() @@ -303,17 +307,29 @@ class TaxiUnmannedViewModel : BaseViewModel(){ } mCurrentTaskAndOrder = result + TaxiModel.updateCurrentTaskAndOrder(result) + TaxiModel.updateStation() + updateTaskAndOrderUi() - //根据lineId集合去查轨迹集合 - if (result.order != null && result.taskType == TaskTypeEnum.ToOrderStartTask.code){ - queryOrderPickUpConertrail(result.order!!.planningLines) + if (result.order != null && result.order!!.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code){ + queryCurrentOrderStatusByNo(mCurrentTaskAndOrder!!.order!!.orderNo) //查询全程里程和用时,更新 } - TaxiModel.updateCurrentTaskAndOrder(result) + //根据lineId集合去查轨迹集合, 返回的只是接驾任务的line集合,没有送驾任务 + if (result.order != null && result.order!!.orderStatus <= TaxiOrderStatusEnum.OnTheWayToEnd.code){ + var lines = result.order!!.planningLines + lines[lines.size] = result.order!!.orderLine + queryOrderPickUpContrails(lines) + } - TaxiModel.updateStation() + if (result.currentStatus <= TaskStatusEnum.StartTask.code){//任务执行中, 去加载下轨迹 + TaxiModel.queryTaskContrail(Array(1) {result.lineId}) + } - updateTaskAndOrderUi() + if (result.taskType <= TaskTypeEnum.ToOrderStartTask.code + && result.currentStatus == TaskStatusEnum.GetTask.code){//自动去启动自驾 + TaxiModel.autoStartDriving() + } } } @@ -328,7 +344,7 @@ class TaxiUnmannedViewModel : BaseViewModel(){ * 查询送驾任务轨迹集合 * 注: 运营单刚来的时候, 有可能还在运行一个演练任务, 要先跑完演练任务才跑运营单 */ - private fun queryOrderPickUpConertrail(planningLines: Array?) { + private fun queryOrderPickUpContrails(planningLines: Array?) { if (planningLines == null) return contrailList(mContext,planningLines, object : OchCommonServiceCallback{ @@ -337,12 +353,11 @@ class TaxiUnmannedViewModel : BaseViewModel(){ val contrails = data.data if (mCurrentTaskAndOrder != null){ TaxiModel.updateOrderContrails(contrails) - TaxiModel.queryTaskContrail(Array(1) {mCurrentTaskAndOrder!!.lineId}) } } override fun onFail(code: Int, msg: String?) { - d(SceneConstant.M_TAXI + TAG, "queryOrderContrails code=$code,msg=$msg") + d(SceneConstant.M_TAXI + TAG, "queryOrderContrail code=$code,msg=$msg") } }) @@ -355,7 +370,6 @@ class TaxiUnmannedViewModel : BaseViewModel(){ if (data != null && data.code != 0) return if (data!!.orderStatus == TaxiOrderStatusEnum.Cancel.code){ VoiceNotice.showNotice("乘客已经取消") -// mCurrentTaskAndOrder?.order?.orderStatus = TaxiOrderStatusEnum.Cancel.code mCurrentTaskAndOrder = null updateTaskAndOrderUi() return @@ -400,14 +414,15 @@ class TaxiUnmannedViewModel : BaseViewModel(){ siteId, object : OchCommonServiceCallback { override fun onSuccess(data: PrepareTaskRespBean?) { - d(SceneConstant.M_TAXI + TAG, GsonUtil.jsonFromObject(data)) + d(SceneConstant.M_TAXI + TAG, "prepareTask = " + GsonUtil.jsonFromObject(data)) if (data == null || data.code != 0) return //去下载轨迹, 下发给工控机下载 - queryOrderPickUpConertrail(Array(1) { data.lineId }) + TaxiModel.queryTaskContrail(Array(1) {data.data.lineId}) } override fun onFail(code: Int, msg: String?) { d(SceneConstant.M_TAXI + TAG, "$code $msg") + startPrepareTask(siteId) //失败后30s再次调用获取下一任务 } }) diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/network/CarServiceManager.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/network/CarServiceManager.kt index 6abfc6f8d9..eb0a4e845e 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/network/CarServiceManager.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/network/CarServiceManager.kt @@ -150,11 +150,11 @@ object CarServiceManager { */ @JvmStatic fun cancelOrder( - context: Context, orderNo: String, + context: Context, orderNo: String, cancelType: Int, callback: OchCommonServiceCallback? ) { mOCHTaxiServiceApi.cancelOrder( - data = CancelOrderReqBean(MoGoAiCloudClientConfig.getInstance().sn, orderNo) + data = CancelOrderReqBean(MoGoAiCloudClientConfig.getInstance().sn, orderNo,cancelType) ).transformTry() .subscribe(OchCommonSubscribeImpl(context, callback, "cancelOrder")) } @@ -167,8 +167,7 @@ object CarServiceManager { context: Context, linIds: Array, callback: OchCommonServiceCallback? ) { - mOCHTaxiServiceApi.contrailList( - data = ContrailListReqBean(linIds) + mOCHTaxiServiceApi.contrailList(data = linIds ).transformTry() .subscribe(OchCommonSubscribeImpl(context, callback, "contrailList")) } diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/network/UnmannedTaskServiceApi.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/network/UnmannedTaskServiceApi.kt index 6cfa0a709e..0f890f274c 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/network/UnmannedTaskServiceApi.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/network/UnmannedTaskServiceApi.kt @@ -4,7 +4,6 @@ import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.BaseData import com.mogo.och.taxi.bean.ArriveSiteReqBean import com.mogo.och.taxi.bean.CancelOrderReqBean -import com.mogo.och.taxi.bean.ContrailListReqBean import com.mogo.och.taxi.bean.ContrailListRespBean import com.mogo.och.taxi.bean.JumpPassengerCheckReqBean import com.mogo.och.taxi.bean.OrderCompletedReqBean @@ -128,7 +127,7 @@ interface UnmannedTaskServiceApi { fun contrailList( @Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId, @Header("ticket") ticket: String = MoGoAiCloudClientConfig.getInstance().token, - @Body data: ContrailListReqBean? + @Body data: Array ): Observable /** diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/presenter/TaxiOperationalPresenter.java b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/presenter/TaxiOperationalPresenter.java index 01f985a9db..d60b2a876b 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/presenter/TaxiOperationalPresenter.java +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/presenter/TaxiOperationalPresenter.java @@ -15,21 +15,11 @@ public class TaxiOperationalPresenter extends Presenter implements ITaxiADASStatusCallback, - ITaxiOrderStatusCallback, ITaxiControllerStatusCallback, ILoginCallback, ITaxiCarOperationalCallback { + ITaxiOrderStatusCallback, ITaxiControllerStatusCallback, ILoginCallback { private static final String TAG = TaxiPresenter.class.getSimpleName(); @@ -65,7 +63,6 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS private void initListeners() { TaxiModel.INSTANCE.setADASStatusCallback(this); TaxiModel.INSTANCE.setControllerStatusCallback(this); - TaxiModel.INSTANCE.setCarStatusCallback(this); TaxiModel.INSTANCE.setOrderStatusCallback(this); } @@ -185,6 +182,14 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS }); } + @Override + public void startOpenAutopilotNonManual() { + runOnUIThread(() -> { + mView.startOrStopLoadingAnim(true); + mView.showStartAutopilotBlinkAnimation(); + }); + } + @Override public void loginSuccess(DriverStatusQueryRespBean data) { //设置 接单状态 @@ -211,9 +216,4 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS public void loginFail(boolean isLogin) { } - - @Override - public void onServiceDataUpdate(long dailyTimeDuration, long dailyOrderNum) { - - } } diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt index 53ce1ed42f..d8a462e25a 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt @@ -148,11 +148,12 @@ class TaxiBeingTaskFragment : BaseFragment(), @RequiresApi(Build.VERSION_CODES.N) private fun updateOrderTotalMilAndDur(mileage: Float, duration: Int) { val strHtml2 = - ("里程 " + " $mileage " + " 公里 " - + ",剩余 " + " $duration " + " 分钟") + ("总里程 " + " $mileage " + " 公里 " + + ",总用时 " + " $duration " + " 分钟") taskOtherInfo.text = Html.fromHtml(strHtml2,Html.FROM_HTML_MODE_LEGACY) } + @RequiresApi(Build.VERSION_CODES.N) private fun updateReserveOrderChanged(taskAndOrder: QueryCurrentTaskRespBean.Result?) { mTaxiFragment?.let { it.updateReserveOrderChanged(taskAndOrder) @@ -187,6 +188,7 @@ class TaxiBeingTaskFragment : BaseFragment(), private fun updateUntruthTaskView() { taskStatus.visibility = View.VISIBLE taskTypeTv.visibility = View.GONE + cancelOrder.visibility = View.GONE orderPhoneAndNum.visibility = View.GONE startStationName.visibility = View.VISIBLE endStationName.visibility = View.VISIBLE @@ -240,7 +242,7 @@ class TaxiBeingTaskFragment : BaseFragment(), } if (taskAndOrder.currentStatus == TaskStatusEnum.CompleteTask.code - && taskAndOrder.order == null && taskAndOrder.endSite == null){ + && taskAndOrder.order == null){ isHaveBeingOrder(false) return } @@ -262,7 +264,12 @@ class TaxiBeingTaskFragment : BaseFragment(), when (taskType) { TaskTypeEnum.VirtualTask.code -> {// 演练任务 + if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code){ + updateOrderUI(order) + return + } if (startSite == null || endSite == null) return + taskStatus.text = resources.getString(R.string.task_start_end_site) taskTypeTv.background = resources.getDrawable(R.drawable.task_unreal_type_btn_bg,null) taskTypeTv.text = resources.getString(R.string.task_exercise) @@ -271,15 +278,13 @@ class TaxiBeingTaskFragment : BaseFragment(), } TaskTypeEnum.ToOrderEndTask.code,TaskTypeEnum.ToOrderStartTask.code -> {// 送驾/接驾任务任务 if (order == null) return - taskTypeTv.text = resources.getString(R.string.task_order) - taskTypeTv.background = resources.getDrawable(R.drawable.task_order_type_btn_bg,null) - orderPhoneAndNum.text = Html.fromHtml("${order.bookingUserPhone} " + - " | " + - "${order.passengerSize}人",Html.FROM_HTML_MODE_LEGACY) - startStationName.text = order.orderStartSite?.siteName - endStationName.text = order.orderEndSite?.siteName updateOrderUI(order) } + TaskTypeEnum.None.code -> { + if (order != null){ + updateOrderUI(order) + } + } } updateRemainDistanceAndTime(false) @@ -288,6 +293,14 @@ class TaxiBeingTaskFragment : BaseFragment(), @RequiresApi(Build.VERSION_CODES.N) private fun updateOrderUI(order: OrderDetail) { + taskTypeTv.text = resources.getString(R.string.task_order) + taskTypeTv.background = resources.getDrawable(R.drawable.task_order_type_btn_bg,null) + orderPhoneAndNum.text = Html.fromHtml(" " + order.bookingUserPhone + "" + + " | " + + "" + order.passengerSize + "人" + "",Html.FROM_HTML_MODE_LEGACY) + startStationName.text = order.orderStartSite?.siteName + endStationName.text = order.orderEndSite?.siteName + when(order.orderStatus){ TaxiOrderStatusEnum.None.code -> { //无 @@ -462,33 +475,45 @@ class TaxiBeingTaskFragment : BaseFragment(), private fun updateUIShowStatus(taskType: Int, currentStatus: Int, order: OrderDetail?) { when (taskType) { + TaskTypeEnum.None.code ->{ + if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code){ + handleOrderView(order) + } + } TaskTypeEnum.VirtualTask.code -> { //演练任务 cancelOrder.visibility = View.GONE orderPhoneAndNum.visibility = View.GONE taskClickBtn.visibility = View.GONE // currentStatus 0:空闲 1:获取任务 2:开始任务 3:到达目的地 naviToStart.visibility = View.GONE + taskTypeTv.visibility = View.VISIBLE naviToEnd.visibility = if (currentStatus >= TaskStatusEnum.StartTask.code) View.VISIBLE else View.GONE taskOtherInfo.visibility = if (currentStatus == TaskStatusEnum.GetTask.code) View.GONE else View.VISIBLE } TaskTypeEnum.ToOrderEndTask.code,TaskTypeEnum.ToOrderStartTask.code -> {// 运营单(接驾任务、送驾任务) if (order == null) return - cancelOrder.visibility = View.VISIBLE - orderPhoneAndNum.visibility = View.VISIBLE - taskClickBtn.visibility = View.VISIBLE -// orderStatus: 0 订单创建(为派单), 10 已派上司机(司机去往上车点), 20 司机到达上车点, -// 30 乘客到达上车点, 40 服务中(去往目的地), 50 到达目的地, 60 已完成, 70 已取消 - naviToStart.visibility = if (order.orderStatus - == TaxiOrderStatusEnum.OnTheWayToStart.code) View.VISIBLE else View.GONE - - naviToEnd.visibility = if (order.orderStatus - == TaxiOrderStatusEnum.OnTheWayToEnd.code) View.VISIBLE else View.GONE - - taskOtherInfo.visibility = View.VISIBLE + handleOrderView(order) } } } + private fun handleOrderView(order: OrderDetail?) { + if (order == null) return + cancelOrder.visibility = View.VISIBLE + orderPhoneAndNum.visibility = View.VISIBLE + taskClickBtn.visibility = View.VISIBLE + taskTypeTv.visibility = View.VISIBLE +// orderStatus: 0 订单创建(为派单), 10 已派上司机(司机去往上车点), 20 司机到达上车点, +// 30 乘客到达上车点, 40 服务中(去往目的地), 50 到达目的地, 60 已完成, 70 已取消 + naviToStart.visibility = if (order.orderStatus + == TaxiOrderStatusEnum.OnTheWayToStart.code) View.VISIBLE else View.GONE + + naviToEnd.visibility = if (order.orderStatus + == TaxiOrderStatusEnum.OnTheWayToEnd.code) View.VISIBLE else View.GONE + + taskOtherInfo.visibility = View.VISIBLE + } + private fun hideNavi() { naviToStart.visibility = View.GONE @@ -655,8 +680,8 @@ class TaxiBeingTaskFragment : BaseFragment(), } else if (v.id == cancelOrder.id) { if (mCurrentTaskAndOrder!!.order != null){ TaxiOrderCancelDialog(mActivity,mCurrentTaskAndOrder!!.order!!.orderStatus - ) { type, reason -> - mViewModel.sendUiIntent(UnmannedIntent.CancelOrder(type,reason)) + ) { + mViewModel.sendUiIntent(UnmannedIntent.CancelOrder(it)) } .show() } diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.kt index 1f8982f9f5..060cdd644d 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.kt @@ -11,6 +11,7 @@ import android.widget.TextView import androidx.annotation.RequiresApi import androidx.fragment.app.FragmentTransaction import com.alibaba.android.arouter.launcher.ARouter +import com.elegant.network.utils.GsonUtil import com.mogo.commons.module.status.MogoStatusManager import com.mogo.eagle.core.data.temp.EventLogout import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d @@ -27,6 +28,12 @@ import com.mogo.och.taxi.presenter.TaxiPresenter import com.mogo.och.taxi.utils.TPRouteDataTestUtils import kotlinx.android.synthetic.main.taxi_base_fragment.module_mogo_och_operation_status import kotlinx.android.synthetic.main.taxi_base_fragment.taxi_driver_role_tv +import kotlinx.android.synthetic.main.taxi_panel.orderInfo +import kotlinx.android.synthetic.main.taxi_panel.orderToStartLines +import kotlinx.android.synthetic.main.taxi_panel.taskEndSite +import kotlinx.android.synthetic.main.taxi_panel.taskStartSite +import kotlinx.android.synthetic.main.taxi_panel.taskStatus2 +import kotlinx.android.synthetic.main.taxi_panel.taskType2 import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode @@ -111,6 +118,7 @@ class TaxiFragment : BaseTaxiTabFragment(), serverOrdersFragmentWR!!.get()!!.onChangeOperationStatus() } + @RequiresApi(Build.VERSION_CODES.N) fun updateReserveOrderChanged(taskAndOrder: QueryCurrentTaskRespBean.Result?){ if (null == serverOrdersFragmentWR || serverOrdersFragmentWR!!.get() == null) return serverOrdersFragmentWR!!.get()!!.updateOrderChanged(taskAndOrder) @@ -198,9 +206,7 @@ class TaxiFragment : BaseTaxiTabFragment(), findViewById(R.id.test_bar_to_virtual)?.setOnClickListener{ TaxiModel.setArriveAtUntruthStation() } - findViewById(R.id.test_bar_to_start)?.setOnClickListener { - TaxiModel.setArriveAtStartStation() - } + findViewById(R.id.test_bar_to_end)?.setOnClickListener { TaxiModel.setArriveAtEndStation() } @@ -276,35 +282,32 @@ class TaxiFragment : BaseTaxiTabFragment(), testBar!!.visibility = View.GONE } else { val result = TaxiModel.getCurTaskAndOrder() - val task = result?.endSite val order = result?.order - testCurOrderId!!.text = ":" + (order?.orderNo ?: "") - testCurLineId!!.text = "lineId:" + (result?.lineId.toString() ?: "") -// testCurTrajMd5!!.text = "TMd5:" + if (order == null) "" else order.csvFileMd5 -// testCurStopMd5!!.text = "SMd5:" + if (order == null) "" else order.txtFileMd5 -// testCurTrajMd5DPQP!!.text = -// "TMd5DPQP:" + if (order == null) "" else order.csvFileMd5DPQP -// testCurStopMd5DPQP!!.text = -// "SMd5DPQP:" + if (order == null) "" else order.txtFileMd5DPQP + testCurOrderId!!.text = "orderNo: " + order?.orderNo + testCurLineId!!.text = "当前任务lineId: " + result?.lineId + taskType2.text = "当前任务类型: " + result?.taskType + taskStatus2.text = "任务状态: "+ result?.currentStatus + taskStartSite.text = "任务开始站点: "+ result?.startSite?.siteName + + ", siteId: " + result?.startSite?.siteId + taskEndSite.text = "任务结束站点: "+ result?.endSite?.siteName + + ", siteId: " + result?.endSite?.siteId + + orderInfo.text = "订单信息: 开始: " + order?.orderStartSite?.siteName + ", 结束: "+ + order?.orderEndSite?.siteName + ", orderStatus: "+ order?.orderStatus + + orderToStartLines.text = "接驾任务的lineId集合: " + GsonUtil.jsonFromObject(order?.planningLines) + + val curContrail = TaxiModel.getCurTaskContrail() + testCurTrajMd5!!.text = "TMd5:" + curContrail?.csvFileMd5 + testCurStopMd5!!.text = "SMd5:" + curContrail?.txtFileMd5 + testCurTrajMd5DPQP!!.text = + "TMd5DPQP:" + curContrail?.csvFileMd5DPQP + testCurStopMd5DPQP!!.text = + "SMd5DPQP:" + curContrail?.txtFileMd5DPQP testBar!!.visibility = View.VISIBLE } } - @SuppressLint("SetTextI18n") - private fun updateTaxiTestBarInfo() { -// if (testBar != null && testBar!!.visibility == View.VISIBLE) { -// val order = TaxiModel.getCurrentOrder() -// testCurOrderId!!.text = "orderNo:" + (order?.orderNo?.toString() ?: "") -// testCurLineId!!.text = "lineId:" + (order?.lineId?.toString() ?: "") -// testCurTrajMd5!!.text = "TMd5:" + if (order == null) "" else order.csvFileMd5 -// testCurStopMd5!!.text = "SMd5:" + if (order == null) "" else order.txtFileMd5 -// testCurTrajMd5DPQP!!.text = -// "TMd5DPQP:" + if (order == null) "" else order.csvFileMd5DPQP -// testCurStopMd5DPQP!!.text = -// "SMd5DPQP:" + if (order == null) "" else order.txtFileMd5DPQP -// } - } - companion object { const val TAG = "TaxiFragment" fun newInstance(): TaxiFragment { diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiOrderCancelDialog.java b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiOrderCancelDialog.java index cb371f43a1..f4c9c07e9f 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiOrderCancelDialog.java +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiOrderCancelDialog.java @@ -130,7 +130,7 @@ public class TaxiOrderCancelDialog extends AlertDialog implements View.OnClickLi if (!TextUtils.isEmpty(mCurrentReason) && TaxiOrderCancelReasons.getType(mCurrentReason) != 0) { //todo 取消正在执行的任务 if (mCommitListener != null){ - mCommitListener.cancelCurOrder(TaxiOrderCancelReasons.getType(mCurrentReason),mCurrentReason); + mCommitListener.cancelCurOrder(TaxiOrderCancelReasons.getType(mCurrentReason)); } dismiss(); }else { @@ -150,7 +150,7 @@ public class TaxiOrderCancelDialog extends AlertDialog implements View.OnClickLi } interface CommitReasonListener{ - void cancelCurOrder(int type, String reason); + void cancelCurOrder(int type); } class ContentAdapter extends BaseAdapter{ diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiReserveOrderFragment.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiReserveOrderFragment.kt index e18ee72723..c24b62bbe8 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiReserveOrderFragment.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiReserveOrderFragment.kt @@ -5,8 +5,11 @@ import android.app.Activity import android.content.Context import android.graphics.Color import android.graphics.drawable.GradientDrawable +import android.os.Build import android.os.Bundle +import android.text.Html import android.view.View +import androidx.annotation.RequiresApi import com.mogo.commons.mvp.BaseFragment import com.mogo.och.taxi.R import com.mogo.och.taxi.bean.OrderDetail @@ -44,18 +47,26 @@ class TaxiReserveOrderFragment : BaseFragment() { } override fun initViews() { + showNoOrderView() } + @RequiresApi(Build.VERSION_CODES.N) fun updateOrderChanged(model: QueryCurrentTaskRespBean.Result?) { - if (model == null) return - if (model.order == null || model.taskType != TaskTypeEnum.ToOrderStartTask.code){ + if (model?.order == null) { showNoOrderView() return } - val order = model.order - updateOrderUI(order!!) + + if (model.taskType == TaskTypeEnum.VirtualTask.code){ + val order = model.order + updateOrderUI(order!!) + }else{ + showNoOrderView() + } + } + @RequiresApi(Build.VERSION_CODES.N) @SuppressLint("SetTextI18n") private fun updateOrderUI(order: OrderDetail) { showOrderView() @@ -63,7 +74,10 @@ class TaxiReserveOrderFragment : BaseFragment() { naviToStart.visibility = View.GONE naviToEnd.visibility = View.GONE - orderPhoneAndNum.text = "${order.bookingUserPhone} | ${order.passengerSize}人" + orderPhoneAndNum.text = Html.fromHtml(" " + order.bookingUserPhone + "" + + " | " + + "" + order.passengerSize + "人" + "",Html.FROM_HTML_MODE_LEGACY) + order.orderStartSite?.let { startStationName.text = it.siteName @@ -72,7 +86,6 @@ class TaxiReserveOrderFragment : BaseFragment() { endStationName.text = it.siteName } - taskStatus.text = resources.getString(R.string.waiting_server) taskTypeTv.text = resources.getString(R.string.task_order) taskTypeTv.background = resources.getDrawable(R.drawable.task_order_type_btn_bg,null) diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.kt index 8ecad1cfe0..7e79ccdb8c 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.kt @@ -169,6 +169,7 @@ class TaxiServerOrdersFragment : BaseFragment(){ beingTaskFragment!!.onChangeOperationStatus() } + @RequiresApi(Build.VERSION_CODES.N) fun updateOrderChanged(model: QueryCurrentTaskRespBean.Result?){ if (null == reserveOrdersFragment) return reserveOrdersFragment!!.updateOrderChanged(model) diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedIntent.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedIntent.kt index 43211d5bfb..56a0c08c24 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedIntent.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/unmanned/UnmannedIntent.kt @@ -14,7 +14,7 @@ sealed class UnmannedIntent: IUiIntent{ object StartTaskOrOrderLooper : UnmannedIntent() //取消订单 - class CancelOrder(type: Int, reason: String) : UnmannedIntent() + class CancelOrder(val type: Int) : UnmannedIntent() object StartTask: UnmannedIntent() diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java index d010e94bb0..8845d37e68 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java @@ -32,6 +32,11 @@ import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAX public class TaxiTrajectoryManager { private static final String TAG = TaxiTrajectoryManager.class.getSimpleName(); + //载类型: 0:正常下载 1:预下载 + private static final int COMMON_LOADING = 0; + private static final int PRE_LOADING = 1; + + private static final class SingletonHolder { private static final TaxiTrajectoryManager INSTANCE = new TaxiTrajectoryManager(); } @@ -40,7 +45,11 @@ public class TaxiTrajectoryManager { return SingletonHolder.INSTANCE; } + //正常加载的路线 private AutopilotControlParameters.AutoPilotLine mAutoPilotLine = null; + //预加载的路线 + private AutopilotControlParameters.AutoPilotLine mPreAutoPilotLine = null; + private Disposable mSendReqDisposable = null; private String mPrevTaskLineId = ""; @@ -48,6 +57,10 @@ public class TaxiTrajectoryManager { mAutoPilotLine = new AutopilotControlParameters.AutoPilotLine(-1, "", "", "", "", "", 0, "", "", "", "", "", 0); + + mPreAutoPilotLine = new AutopilotControlParameters.AutoPilotLine(-1, "", + "", "", "", "", 0, "", + "", "", "", "", 0); } /** @@ -124,17 +137,6 @@ public class TaxiTrajectoryManager { final OrderDetail orderDetail = taskAndOrder.getOrder(); ContrailListRespBean.Result preloadContrail = null; //预加载的轨迹 - if (orderDetail != null && orderContrails != null && orderContrails.size() != 0 ){ - if (orderContrails.contains(curLineId)){ //预加载轨迹是curLineId索引的下一个 - int index = orderContrails.indexOf(curLineId); - if (orderContrails.size()-1 >= index){ - preloadContrail = orderContrails.get(index); - } - }else {//预加载轨迹直接是集合第一个 - preloadContrail = orderContrails.get(0); - } - } - if (mAutoPilotLine == null) { mAutoPilotLine = new AutopilotControlParameters.AutoPilotLine(curTaskContrail.getLineId(), curTaskContrail.getLineName(), curTaskContrail.getCsvFileUrl(), curTaskContrail.getCsvFileMd5(), curTaskContrail.getTxtFileUrl(), @@ -156,24 +158,76 @@ public class TaxiTrajectoryManager { mAutoPilotLine.setStopMd5_dpqp(curTaskContrail.getTxtFileMd5DPQP()); mAutoPilotLine.setTimestamp_dpqp(curTaskContrail.getContrailSaveTimeDPQP()); } + + if (orderDetail != null && orderContrails != null && orderContrails.size() != 0 ){ + if (orderContrails.contains(curLineId)){ //预加载轨迹是curLineId索引的下一个 + int index = orderContrails.indexOf(curLineId); + if (orderContrails.size()-1 >= index){ + preloadContrail = orderContrails.get(index); + } + }else {//预加载轨迹直接是集合第一个 + preloadContrail = orderContrails.get(0); + } + } + + if (preloadContrail == null) return; + + if (mPreAutoPilotLine == null) { + mPreAutoPilotLine = new AutopilotControlParameters.AutoPilotLine(preloadContrail.getLineId(), preloadContrail.getLineName(), + preloadContrail.getCsvFileUrl(), preloadContrail.getCsvFileMd5(), preloadContrail.getTxtFileUrl(), + preloadContrail.getTxtFileMd5(), preloadContrail.getContrailSaveTime(), "",//todo curTaskContrail.getCarModel() + preloadContrail.getCsvFileUrlDPQP(), preloadContrail.getCsvFileMd5DPQP(), preloadContrail.getTxtFileUrlDPQP(), + preloadContrail.getTxtFileMd5DPQP(), preloadContrail.getContrailSaveTimeDPQP()); + } else { + mPreAutoPilotLine.setLineId(taskAndOrder.getLineId()); + mPreAutoPilotLine.setLineName(preloadContrail.getLineName()); + mPreAutoPilotLine.setTrajUrl(preloadContrail.getCsvFileUrl()); + mPreAutoPilotLine.setTrajMd5(preloadContrail.getCsvFileMd5()); + mPreAutoPilotLine.setStopUrl(preloadContrail.getTxtFileUrl()); + mPreAutoPilotLine.setStopMd5(preloadContrail.getTxtFileMd5()); + mPreAutoPilotLine.setTimestamp(preloadContrail.getContrailSaveTime()); + mPreAutoPilotLine.setVehicleModel("");// todo curTaskContrail.getCarModel() + mPreAutoPilotLine.setTrajUrl_dpqp(preloadContrail.getCsvFileUrlDPQP()); + mPreAutoPilotLine.setTrajMd5_dpqp(preloadContrail.getCsvFileMd5DPQP()); + mPreAutoPilotLine.setStopUrl_dpqp(preloadContrail.getTxtFileUrlDPQP()); + mPreAutoPilotLine.setStopMd5_dpqp(preloadContrail.getTxtFileMd5DPQP()); + mPreAutoPilotLine.setTimestamp_dpqp(preloadContrail.getContrailSaveTimeDPQP()); + } } } private void clearAutoPilotLine() { - if (mAutoPilotLine == null) return; - mAutoPilotLine.setLineId(-1); - mAutoPilotLine.setLineName(""); - mAutoPilotLine.setTrajUrl(""); - mAutoPilotLine.setTrajMd5(""); - mAutoPilotLine.setStopUrl(""); - mAutoPilotLine.setStopMd5(""); - mAutoPilotLine.setTimestamp(0); - mAutoPilotLine.setVehicleModel(""); - mAutoPilotLine.setTrajUrl_dpqp(""); - mAutoPilotLine.setTrajMd5_dpqp(""); - mAutoPilotLine.setStopUrl_dpqp(""); - mAutoPilotLine.setStopMd5_dpqp(""); - mAutoPilotLine.setTimestamp_dpqp(0); + if (mAutoPilotLine != null){ + mAutoPilotLine.setLineId(-1); + mAutoPilotLine.setLineName(""); + mAutoPilotLine.setTrajUrl(""); + mAutoPilotLine.setTrajMd5(""); + mAutoPilotLine.setStopUrl(""); + mAutoPilotLine.setStopMd5(""); + mAutoPilotLine.setTimestamp(0); + mAutoPilotLine.setVehicleModel(""); + mAutoPilotLine.setTrajUrl_dpqp(""); + mAutoPilotLine.setTrajMd5_dpqp(""); + mAutoPilotLine.setStopUrl_dpqp(""); + mAutoPilotLine.setStopMd5_dpqp(""); + mAutoPilotLine.setTimestamp_dpqp(0); + } + + if (mPreAutoPilotLine != null){ + mPreAutoPilotLine.setLineId(-1); + mPreAutoPilotLine.setLineName(""); + mPreAutoPilotLine.setTrajUrl(""); + mPreAutoPilotLine.setTrajMd5(""); + mPreAutoPilotLine.setStopUrl(""); + mPreAutoPilotLine.setStopMd5(""); + mPreAutoPilotLine.setTimestamp(0); + mPreAutoPilotLine.setVehicleModel(""); + mPreAutoPilotLine.setTrajUrl_dpqp(""); + mPreAutoPilotLine.setTrajMd5_dpqp(""); + mPreAutoPilotLine.setStopUrl_dpqp(""); + mPreAutoPilotLine.setStopMd5_dpqp(""); + mPreAutoPilotLine.setTimestamp_dpqp(0); + } } private void startTrajReqLoop() { @@ -208,13 +262,19 @@ public class TaxiTrajectoryManager { } private void sendTrajectoryReq() { - if (mAutoPilotLine == null) { + if (mAutoPilotLine != null) { + CallerAutoPilotControlManager.INSTANCE.sendTrajectoryDownloadReq(mAutoPilotLine,COMMON_LOADING); + }else { CallerLogger.INSTANCE.e(M_TAXI + TAG, "sendTrajectoryReq(): mAutoPilotLine is null!!!"); - return; } - CallerAutoPilotControlManager.INSTANCE.sendTrajectoryDownloadReq(mAutoPilotLine); - CallerLogger.INSTANCE.d(M_TAXI + TAG, "sendTrajectoryReq(): " - + GsonUtils.toJson(mAutoPilotLine)); + if (mPreAutoPilotLine != null){ + CallerAutoPilotControlManager.INSTANCE.sendTrajectoryDownloadReq(mPreAutoPilotLine,PRE_LOADING); + }else { + CallerLogger.INSTANCE.e(M_TAXI + TAG, "sendTrajectoryReq(): mPreAutoPilotLine is null!!!"); + + } + CallerLogger.INSTANCE.d(M_TAXI + TAG, "sendTrajectoryReq(): common_load = " + + GsonUtils.toJson(mAutoPilotLine) + "pre_load" + GsonUtils.toJson(mPreAutoPilotLine)); } } diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/res/layout/taxi_base_fragment.xml b/OCH/taxi/mogo-och-taxi-unmanned/src/main/res/layout/taxi_base_fragment.xml index 7eee534d3c..eee53a8c73 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/res/layout/taxi_base_fragment.xml +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/res/layout/taxi_base_fragment.xml @@ -91,8 +91,9 @@ - - + + + + + + + + + + + + + -