【Taxi无人化】refactor: 优化任务调试面板;

This commit is contained in:
aibingbing
2023-08-28 20:18:50 +08:00
committed by zhongchao
parent 2ab70ff053
commit 1eeb8de748
9 changed files with 275 additions and 141 deletions

View File

@@ -19,6 +19,7 @@ public class DateTimeUtil {
public static final String yyyyMMdd = "yyyy-MM-dd"; public static final String yyyyMMdd = "yyyy-MM-dd";
public static final String yy_MM_dd = "yy.MM.dd"; public static final String yy_MM_dd = "yy.MM.dd";
public static final String yyyy_MM_dd_HH_mm = "yyyy-MM-dd HH:mm"; public static final String yyyy_MM_dd_HH_mm = "yyyy-MM-dd HH:mm";
public static final String yyyy_MM_dd_HH_mm_ss = "yyyy-MM-dd HH:mm:ss";
public static String formatCalendarToString(Calendar calendar, String format){ public static String formatCalendarToString(Calendar calendar, String format){
if (calendar == null) return ""; if (calendar == null) return "";

View File

@@ -2,6 +2,7 @@ package com.mogo.och.taxi.ui.base
import android.animation.ObjectAnimator import android.animation.ObjectAnimator
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
@@ -10,6 +11,7 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.animation.LinearInterpolator import android.view.animation.LinearInterpolator
import androidx.fragment.app.FragmentTransaction import androidx.fragment.app.FragmentTransaction
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.mogo.commons.mvp.IView import com.mogo.commons.mvp.IView
import com.mogo.commons.mvp.MvpFragment import com.mogo.commons.mvp.MvpFragment
import com.mogo.commons.mvp.Presenter import com.mogo.commons.mvp.Presenter
@@ -21,11 +23,9 @@ import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager.initBa
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showToolsView import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showToolsView
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.map.listener.IMogoMapListener import com.mogo.map.listener.IMogoMapListener
import com.mogo.map.uicontroller.VisualAngleMode import com.mogo.map.uicontroller.VisualAngleMode
@@ -34,6 +34,7 @@ import com.mogo.och.common.module.wigets.StartAutopilotAnimationView
import com.mogo.och.taxi.R import com.mogo.och.taxi.R
import com.mogo.och.taxi.constant.TaxiUnmannedConst import com.mogo.och.taxi.constant.TaxiUnmannedConst
import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.START_AUTOPILOT_ANIMATION_INTERVAL import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.START_AUTOPILOT_ANIMATION_INTERVAL
import com.mogo.och.taxi.ui.debug.DebugView
import com.mogo.och.taxi.ui.navi.amap.TaxiAmapNaviFragment import com.mogo.och.taxi.ui.navi.amap.TaxiAmapNaviFragment
import com.mogo.och.taxi.ui.navi.auto.TaxiRoutingNaviFragment import com.mogo.och.taxi.ui.navi.auto.TaxiRoutingNaviFragment
import kotlinx.android.synthetic.main.taxi_base_fragment.anim_flow_iv import kotlinx.android.synthetic.main.taxi_base_fragment.anim_flow_iv
@@ -224,31 +225,22 @@ abstract class BaseTaxiTabFragment<V : IView, P : Presenter<V>> : MvpFragment<V,
// } // }
onAutopilotStatusChanged(getState()) onAutopilotStatusChanged(getState())
// 模拟 不可自动驾驶目前场景是刚开机adas还未和工控机连接 // 打开任务调试面板
findViewById<View>(R.id.btnAutopilotDisable)?.setOnClickListener { findViewById<View>(R.id.btnOpenDebugView)?.setOnClickListener {
onAutopilotStatusChanged( val intent = Intent()
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE intent.action = DebugView.BROADCAST_ACTION
) intent.putExtra(DebugView.BROADCAST_DATA_SHOW, true)
LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent)
} }
// 模拟 可自动驾驶,工控机连接正常,且处于人工干预状态 // 关闭任务调试面板
findViewById<View>(R.id.btnAutopilotEnable)?.setOnClickListener { findViewById<View>(R.id.btnCloseDebugView)?.setOnClickListener {
onAutopilotStatusChanged( val intent = Intent()
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE intent.action = DebugView.BROADCAST_ACTION
) intent.putExtra(DebugView.BROADCAST_DATA_SHOW, false)
LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent)
} }
// 模拟 自动驾驶能力,自动驾驶中,可能是停车,可能是行进,但是是机器在处理车的前进后退,不是人
findViewById<View>(R.id.btnAutopilotRunning)?.setOnClickListener {
onAutopilotStatusChanged(
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING
)
}
findViewById<View>(R.id.btnAutopilotmanco)?.setOnClickListener {
onAutopilotStatusChanged(
IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING
)
}
module_mogo_och_operation_status.setOnClickListener { onChangeOperationStatus() } module_mogo_och_operation_status.setOnClickListener { onChangeOperationStatus() }
taxi_close_navi_icon.setOnClickListener { taxi_close_navi_icon.setOnClickListener {
showAmapNaviToStationFragment(false) showAmapNaviToStationFragment(false)

View File

@@ -254,7 +254,9 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
TaxiTaskModel.mockOnTheWayToEndStation() TaxiTaskModel.mockOnTheWayToEndStation()
} }
findViewById<View>(R.id.test_bar_route)?.setOnClickListener { testRouteInfoUpload() } findViewById<View>(R.id.test_bar_route)?.setOnClickListener {
testRouteInfoUpload()
}
} }
fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long) { fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long) {

View File

@@ -1,70 +1,160 @@
package com.mogo.och.taxi.ui.debug package com.mogo.och.taxi.ui.debug
import android.content.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.util.AttributeSet import android.util.AttributeSet
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.widget.LinearLayout import android.widget.LinearLayout
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.mogo.eagle.core.network.utils.GsonUtil import com.mogo.eagle.core.network.utils.GsonUtil
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.taxi.R import com.mogo.och.taxi.R
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean
import com.mogo.och.taxi.bean.TrajectoryListRespBean
import com.mogo.och.taxi.callback.ITaxiTaskWithOrderCallback
import com.mogo.och.taxi.constant.TaskStatusEnum
import com.mogo.och.taxi.constant.TaskTypeEnum
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
import com.mogo.och.taxi.ui.task.TaxiTaskModel import com.mogo.och.taxi.ui.task.TaxiTaskModel
import kotlinx.android.synthetic.main.taxi_debug_order.view.orderInfo import kotlinx.android.synthetic.main.taxi_debug_order.view.currentCarStatus
import kotlinx.android.synthetic.main.taxi_debug_order.view.orderToStartLines import kotlinx.android.synthetic.main.taxi_debug_order.view.currentDataTimestamps
import kotlinx.android.synthetic.main.taxi_debug_order.view.currentLineId
import kotlinx.android.synthetic.main.taxi_debug_order.view.currentOrder
import kotlinx.android.synthetic.main.taxi_debug_order.view.currentOrderStopInfo
import kotlinx.android.synthetic.main.taxi_debug_order.view.currentOrderTrajectoryInfo
import kotlinx.android.synthetic.main.taxi_debug_order.view.currentStatus
import kotlinx.android.synthetic.main.taxi_debug_order.view.currentTaskType
import kotlinx.android.synthetic.main.taxi_debug_order.view.orderEndSiteInfo
import kotlinx.android.synthetic.main.taxi_debug_order.view.orderNo
import kotlinx.android.synthetic.main.taxi_debug_order.view.orderPreLoadLines
import kotlinx.android.synthetic.main.taxi_debug_order.view.orderStartSiteInfo
import kotlinx.android.synthetic.main.taxi_debug_order.view.orderStatus
import kotlinx.android.synthetic.main.taxi_debug_order.view.taskEndSite import kotlinx.android.synthetic.main.taxi_debug_order.view.taskEndSite
import kotlinx.android.synthetic.main.taxi_debug_order.view.taskStartSite import kotlinx.android.synthetic.main.taxi_debug_order.view.taskStartSite
import kotlinx.android.synthetic.main.taxi_debug_order.view.taskStatus2
import kotlinx.android.synthetic.main.taxi_debug_order.view.taskType2
import kotlinx.android.synthetic.main.taxi_debug_order.view.test_bar_current_line_id
import kotlinx.android.synthetic.main.taxi_debug_order.view.test_bar_current_line_name
import kotlinx.android.synthetic.main.taxi_debug_order.view.test_bar_current_order_id
import kotlinx.android.synthetic.main.taxi_debug_order.view.test_bar_current_stop_md5
import kotlinx.android.synthetic.main.taxi_debug_order.view.test_bar_current_stop_md5_dpqp
import kotlinx.android.synthetic.main.taxi_debug_order.view.test_bar_current_traj_md5
import kotlinx.android.synthetic.main.taxi_debug_order.view.test_bar_current_traj_md5_dpqp
class DebugView @JvmOverloads constructor( public class DebugView @JvmOverloads constructor(
context: Context, context: Context,
attrs: AttributeSet? = null, attrs: AttributeSet? = null,
defStyleAttr: Int = 0, defStyleAttr: Int = 0,
defStyleRes: Int = 0 defStyleRes: Int = 0
) : LinearLayout(context, attrs, defStyleAttr, defStyleRes) { ) : LinearLayout(context, attrs, defStyleAttr, defStyleRes), ITaxiTaskWithOrderCallback {
companion object { companion object {
const val TAG = "DebugView" const val TAG = "DebugView"
const val BROADCAST_ACTION = "com.mogo.och.driver.debugview.show"
const val BROADCAST_DATA_SHOW = "isShow"
}
private val broadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (BROADCAST_ACTION == intent.action) {
val isShow = intent.getBooleanExtra(BROADCAST_DATA_SHOW, false)
visibility = if (isShow) VISIBLE else GONE
}
}
} }
init { init {
initBroadcastReceiver()
LayoutInflater.from(context) LayoutInflater.from(context)
.inflate(R.layout.taxi_debug_order, this, true) .inflate(R.layout.taxi_debug_order, this, true)
visibility = GONE visibility = GONE
} }
fun toggleOrderDebugView() { private fun initBroadcastReceiver() {
val data = TaxiTaskModel.getCurrentTaskWithOrder() val intentFilter = IntentFilter()
val curContrail = TaxiTaskModel.getCurrentTaskTrajectory() intentFilter.addAction(BROADCAST_ACTION)
LocalBroadcastManager.getInstance(context).registerReceiver(broadcastReceiver, intentFilter)
}
fun toggleOrderDebugView() {
visibility = visibility =
if (visibility == View.VISIBLE) if (visibility == View.VISIBLE)
View.GONE View.GONE
else else
View.VISIBLE View.VISIBLE
test_bar_current_order_id.text = "orderNo: ${data?.order?.orderNo}" val data = TaxiTaskModel.getCurrentTaskWithOrder()
test_bar_current_line_id!!.text = "当前任务lineId: ${data?.lineId}" initViewByData(data)
test_bar_current_line_name!!.text = "当前任务lineName: ${curContrail?.lineName}" }
taskType2.text = "当前任务类型: ${data?.taskType}"
taskStatus2.text = "任务状态: ${data?.currentStatus}"
taskStartSite.text =
"任务开始站点: ${data?.startSite?.siteName} , siteId: ${data?.startSite?.siteId}"
taskEndSite.text =
"任务结束站点: ${data?.endSite?.siteName}, siteId: ${data?.endSite?.siteId}"
orderInfo.text =
"订单信息: 开始: ${data?.order?.orderStartSite?.siteName}, 结束: ${data?.order?.orderEndSite?.siteName}, " +
"orderStatus: ${data?.order?.orderStatus}"
orderToStartLines.text =
"接驾任务的lineId集合: " + GsonUtil.jsonFromObject(data?.order?.planningLines)
test_bar_current_traj_md5.text = "TrajMd5: ${curContrail?.csvFileMd5}" private fun initTaskWithOrderDataListener() {
test_bar_current_stop_md5.text = "StopMd5: ${curContrail?.txtFileMd5}" TaxiTaskModel.addTaskWithOrderListener(TAG, this)
test_bar_current_traj_md5_dpqp.text = "TrajMd5DPQP: ${curContrail?.csvFileMd5DPQP}" }
test_bar_current_stop_md5_dpqp.text = "StopMd5DPQP: ${curContrail?.txtFileMd5DPQP}"
private fun removeTaskWithOrderDataListener() {
TaxiTaskModel.removeTaskWithOrderListener(TAG)
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
initTaskWithOrderDataListener()
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
removeTaskWithOrderDataListener()
}
private fun initViewByData(data: QueryCurrentTaskRespBean.Result?) {
val curContrail = TaxiTaskModel.getCurrentTaskTrajectory()
currentDataTimestamps.text = "【当前数据返回时间】${
DateTimeUtil.formatCalendarToString(
DateTimeUtil.formatLongToCalendar(System.currentTimeMillis()),
DateTimeUtil.yyyy_MM_dd_HH_mm_ss
)
}"
currentCarStatus.text =
"【当前车辆状态】${data?.servingStatus} / ${if (data?.servingStatus == 1) "开始接单" else "暂停接单"}"
currentTaskType.text = "【当前任务类型】${data?.taskType} / ${TaskTypeEnum.valueOf(data?.taskType ?: -1)?.name}"
currentStatus.text =
"【当前任务状态】${data?.currentStatus} / ${TaskStatusEnum.valueOf(data?.currentStatus ?: -1)?.name}"
currentLineId.text = "【当前任务lineId】 ${data?.lineId}"
taskStartSite.text =
"【当前任务起点】${data?.startSite?.siteName} siteId=${data?.startSite?.siteId}"
taskEndSite.text =
"【当前任务终点】${data?.endSite?.siteName} siteId=${data?.endSite?.siteId}"
currentOrder.text = "【订单信息】${if (data?.order == null) "null" else "不为空"}"
orderNo.text = "【订单编号】${data?.order?.orderNo}"
orderStatus.text =
"【订单状态】${data?.order?.orderStatus} / ${TaxiOrderStatusEnum.valueOf(data?.order?.orderStatus ?: -1)?.name}"
orderStartSiteInfo.text =
"【订单起点】${data?.order?.orderStartSite?.siteName}"
orderEndSiteInfo.text =
"【订单终点】${data?.order?.orderEndSite?.siteName}"
orderPreLoadLines.text =
"【接驾任务预加载lineIds】${GsonUtil.jsonFromObject(data?.order?.planningLines)}"
currentOrderTrajectoryInfo.text =
"【当前任务Traj信息】TrajMd5=${curContrail?.csvFileMd5} , TrajDPQPMd5=${curContrail?.csvFileMd5DPQP}"
currentOrderStopInfo.text =
"【当前任务Stop信息】StopMd5=${curContrail?.txtFileMd5}, StopDPQPMd5=${curContrail?.txtFileMd5DPQP}"
}
override fun onTaskWithOrderDataChanged(taskWithOrder: QueryCurrentTaskRespBean.Result?) {
d(TAG, "onTaskWithOrderDataChanged")
initViewByData(taskWithOrder)
}
override fun onTaskCompleted(isOrderArrivedAtStart: Boolean, siteId: Long) {
}
override fun onTaskTrajectoryDataChanged(data: TrajectoryListRespBean?) {
}
override fun onOrderCancel() {
}
override fun onOrderArriveAtEnd(orderNo: String) {
}
override fun onOrderTotalMileAndDurationChanged(mileage: Float, duration: Int) {
}
override fun onOrderJourneyCompleted() {
}
override fun onStartAutopilot() {
} }
} }

View File

@@ -167,6 +167,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
if (currentTaskWithOrder == null) { if (currentTaskWithOrder == null) {
initContainerView(false) initContainerView(false)
removeAllMapMarker() removeAllMapMarker()
updateNextTaskFragment(currentTaskWithOrder)
return@collect return@collect
} }
updateNextTaskFragment(currentTaskWithOrder) updateNextTaskFragment(currentTaskWithOrder)

View File

@@ -39,7 +39,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
private val TAG = SceneConstant.M_TAXI + "TaxiUnmannedViewModel" private val TAG = SceneConstant.M_TAXI + "TaxiUnmannedViewModel"
init { init {
TaxiTaskModel.setTaskWithOrderCallback(this) TaxiTaskModel.addTaskWithOrderListener(TAG, this)
TaxiTaskModel.setCarServiceCallback(this) TaxiTaskModel.setCarServiceCallback(this)
} }
@@ -200,7 +200,6 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
} }
} }
override fun onTaskWithOrderDataChanged(result: QueryCurrentTaskRespBean.Result?) { override fun onTaskWithOrderDataChanged(result: QueryCurrentTaskRespBean.Result?) {
d(TAG, "onTaskWithOrderChanged = result = " + GsonUtil.jsonFromObject(result)) d(TAG, "onTaskWithOrderChanged = result = " + GsonUtil.jsonFromObject(result))
updateTaskAndOrderUi(result) updateTaskAndOrderUi(result)

View File

@@ -84,6 +84,7 @@ import mogo.telematics.pad.MessagePad.GlobalPathResp
import mogo_msg.MogoReportMsg.MogoReportMessage import mogo_msg.MogoReportMsg.MogoReportMessage
import system_master.SsmInfo import system_master.SsmInfo
import system_master.SystemStatusInfo import system_master.SystemStatusInfo
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
/** /**
@@ -111,7 +112,8 @@ object TaxiTaskModel {
private var mAutopilotPlanningCallback: IOCHTaxiAutopilotPlanningCallback? = null private var mAutopilotPlanningCallback: IOCHTaxiAutopilotPlanningCallback? = null
private var mTaxiTaskWithOrderCallback: ITaxiTaskWithOrderCallback? = null private val mTaxiTaskWithOrderCallbackMap: ConcurrentHashMap<String, ITaxiTaskWithOrderCallback> =
ConcurrentHashMap()
private var mTaxiCarServiceCallback: ITaxiCarServiceCallback? = null private var mTaxiCarServiceCallback: ITaxiCarServiceCallback? = null
@@ -132,6 +134,20 @@ object TaxiTaskModel {
private val mCurrentTaskRoutePointsGcj: MutableList<MogoLocation> = ArrayList() private val mCurrentTaskRoutePointsGcj: MutableList<MogoLocation> = ArrayList()
fun addTaskWithOrderListener(tag: String, listener: ITaxiTaskWithOrderCallback) {
if (mTaxiTaskWithOrderCallbackMap.containsKey(tag)) {
return
}
mTaxiTaskWithOrderCallbackMap[tag] = listener
}
fun removeTaskWithOrderListener(tag: String) {
if (!mTaxiTaskWithOrderCallbackMap.containsKey(tag)) {
return
}
mTaxiTaskWithOrderCallbackMap.remove(tag)
}
fun setMoGoAutopilotPlanningListener(moGoAutopilotPlanningCallback: IOCHTaxiAutopilotPlanningCallback?) { fun setMoGoAutopilotPlanningListener(moGoAutopilotPlanningCallback: IOCHTaxiAutopilotPlanningCallback?) {
mAutopilotPlanningCallback = moGoAutopilotPlanningCallback mAutopilotPlanningCallback = moGoAutopilotPlanningCallback
} }
@@ -148,10 +164,6 @@ object TaxiTaskModel {
mOrderStatusCallback = callback mOrderStatusCallback = callback
} }
fun setTaskWithOrderCallback(callback: ITaxiTaskWithOrderCallback) {
mTaxiTaskWithOrderCallback = callback
}
fun setCarServiceCallback(callback: ITaxiCarServiceCallback) { fun setCarServiceCallback(callback: ITaxiCarServiceCallback) {
mTaxiCarServiceCallback = callback mTaxiCarServiceCallback = callback
} }
@@ -664,18 +676,25 @@ object TaxiTaskModel {
if (result.endSite == null && result.order == null) { if (result.endSite == null && result.order == null) {
d(TAG, "queryCurrentTaskOnce: 任务为空") d(TAG, "queryCurrentTaskOnce: 任务为空")
mCurrentTaskWithOrder = null mCurrentTaskWithOrder = null
mTaxiTaskWithOrderCallback?.onTaskWithOrderDataChanged(null)
mTaxiTaskWithOrderCallbackMap.forEach {
val listener = it.value
listener.onTaskWithOrderDataChanged(null)
}
return return
} }
//当前任务完成且订单状态到达乘客上车点, 则立马去拉取任务 不再等30s,否则送驾任务要等30s后才能去执行 //当前任务完成且订单状态到达乘客上车点, 则立马去拉取任务 不再等30s,否则送驾任务要等30s后才能去执行
if (result?.currentStatus == TaskStatusEnum.CompleteTask.code) { if (result?.currentStatus == TaskStatusEnum.CompleteTask.code) {
mTaxiTaskWithOrderCallback?.onTaskCompleted( mTaxiTaskWithOrderCallbackMap.forEach {
QueryCurrentTaskRespBean.isOrderArriveAtStart( val listener = it.value
result listener.onTaskCompleted(
), QueryCurrentTaskRespBean.isOrderArriveAtStart(
result.endSite!!.siteId result
) ),
result.endSite!!.siteId
)
}
} }
updateLocalCalculateStation() updateLocalCalculateStation()
@@ -683,7 +702,10 @@ object TaxiTaskModel {
//达到终点后查询全程里程和用时 //达到终点后查询全程里程和用时
if (QueryCurrentTaskRespBean.isOrderArriveAtEnd(result)) { if (QueryCurrentTaskRespBean.isOrderArriveAtEnd(result)) {
d(TAG, "queryCurrentTaskOnce ArriveAtEnd") d(TAG, "queryCurrentTaskOnce ArriveAtEnd")
mTaxiTaskWithOrderCallback?.onOrderArriveAtEnd(result.order!!.orderNo) mTaxiTaskWithOrderCallbackMap.forEach {
val listener = it.value
listener.onOrderArriveAtEnd(result.order!!.orderNo)
}
} }
//根据lineId集合去查轨迹集合, 返回的只是接驾任务的line集合, 没有送驾任务 //根据lineId集合去查轨迹集合, 返回的只是接驾任务的line集合, 没有送驾任务
@@ -703,12 +725,18 @@ object TaxiTaskModel {
d(TAG, "queryCurrentTaskOnce autoStartDriving") d(TAG, "queryCurrentTaskOnce autoStartDriving")
//启动动画+文字 //启动动画+文字
mControllerStatusCallback?.startOpenAutopilotNonManual() mControllerStatusCallback?.startOpenAutopilotNonManual()
mTaxiTaskWithOrderCallback?.onStartAutopilot() mTaxiTaskWithOrderCallbackMap.forEach {
val listener = it.value
listener.onStartAutopilot()
}
} }
} }
if (mDriveToNearestStationTask == null) { if (mDriveToNearestStationTask == null) {
mTaxiTaskWithOrderCallback?.onTaskWithOrderDataChanged(mCurrentTaskWithOrder) mTaxiTaskWithOrderCallbackMap.forEach {
val listener = it.value
listener.onTaskWithOrderDataChanged(mCurrentTaskWithOrder)
}
} }
} }
} }
@@ -749,20 +777,29 @@ object TaxiTaskModel {
TaxiOrderStatusEnum.Cancel.code -> { TaxiOrderStatusEnum.Cancel.code -> {
//更新本地标志位 //更新本地标志位
mCurrentTaskWithOrder?.order = null mCurrentTaskWithOrder?.order = null
mTaxiTaskWithOrderCallback?.onOrderCancel() mTaxiTaskWithOrderCallbackMap.forEach {
val listener = it.value
listener.onOrderCancel()
}
} }
TaxiOrderStatusEnum.ArriveAtEnd.code -> { TaxiOrderStatusEnum.ArriveAtEnd.code -> {
mTaxiTaskWithOrderCallback?.onOrderTotalMileAndDurationChanged( mTaxiTaskWithOrderCallbackMap.forEach {
data.data.mileage, val listener = it.value
data.data.duration.toInt() listener.onOrderTotalMileAndDurationChanged(
) data.data.mileage,
data.data.duration.toInt()
)
}
} }
TaxiOrderStatusEnum.JourneyCompleted.code -> { TaxiOrderStatusEnum.JourneyCompleted.code -> {
//更新本地标志位 //更新本地标志位
mCurrentTaskWithOrder?.order = null mCurrentTaskWithOrder?.order = null
mTaxiTaskWithOrderCallback?.onOrderJourneyCompleted() mTaxiTaskWithOrderCallbackMap.forEach {
val listener = it.value
listener.onOrderJourneyCompleted()
}
} }
} }
} }
@@ -842,7 +879,10 @@ object TaxiTaskModel {
mTaskTrajectoryList.addAll(it) mTaskTrajectoryList.addAll(it)
mCurrentTaskTrajectory = it.first { currentTaskLineId == it.lineId } mCurrentTaskTrajectory = it.first { currentTaskLineId == it.lineId }
} }
mTaxiTaskWithOrderCallback?.onTaskTrajectoryDataChanged(data) mTaxiTaskWithOrderCallbackMap.forEach {
val listener = it.value
listener.onTaskTrajectoryDataChanged(data)
}
} }
override fun onFail(code: Int, msg: String?) { override fun onFail(code: Int, msg: String?) {

View File

@@ -336,52 +336,34 @@
<!-- </LinearLayout>--> <!-- </LinearLayout>-->
<Button <Button
android:id="@+id/btnAutopilotDisable" android:id="@+id/btnOpenDebugView"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="模拟 自动驾驶Disable" android:text="打开任务调试面板"
android:background="#0f0"
android:textSize="@dimen/dp_40" android:textSize="@dimen/dp_40"
android:visibility="gone" android:visibility="gone"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<Button <Button
android:id="@+id/btnAutopilotEnable" android:id="@+id/btnCloseDebugView"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="模拟 自动驾驶Enable" android:background="#f00"
android:text="关闭任务调试面板"
android:textSize="@dimen/dp_40" android:textSize="@dimen/dp_40"
android:visibility="gone" android:visibility="gone"
app:layout_constraintRight_toRightOf="@id/btnAutopilotDisable" app:layout_constraintRight_toRightOf="@id/btnOpenDebugView"
app:layout_constraintTop_toBottomOf="@id/btnAutopilotDisable" /> app:layout_constraintTop_toBottomOf="@id/btnOpenDebugView" />
<Button
android:id="@+id/btnAutopilotRunning"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="模拟 自动驾驶Running"
android:textSize="@dimen/dp_40"
android:visibility="gone"
app:layout_constraintRight_toRightOf="@id/btnAutopilotDisable"
app:layout_constraintTop_toBottomOf="@id/btnAutopilotEnable" />
<Button
android:id="@+id/btnAutopilotmanco"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="模拟 人机共驾"
android:textSize="@dimen/dp_40"
android:visibility="gone"
app:layout_constraintRight_toRightOf="@id/btnAutopilotDisable"
app:layout_constraintTop_toBottomOf="@id/btnAutopilotRunning" />
<androidx.constraintlayout.widget.Group <androidx.constraintlayout.widget.Group
android:id="@+id/groupTestPanel" android:id="@+id/groupTestPanel"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:visibility="gone" android:visibility="gone"
app:constraint_referenced_ids="btnAutopilotDisable,btnAutopilotEnable,btnAutopilotRunning,btnAutopilotmanco" app:constraint_referenced_ids="btnOpenDebugView,btnCloseDebugView"
tools:visibility="gone" /> tools:visibility="visible" />
<FrameLayout <FrameLayout
android:id="@+id/module_mogo_och_navi_panel_container" android:id="@+id/module_mogo_och_navi_panel_container"

View File

@@ -6,35 +6,35 @@
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:id="@+id/test_bar_current_order_id" android:id="@+id/currentDataTimestamps"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="@dimen/dp_24" /> android:textSize="@dimen/dp_24" />
<TextView <TextView
android:id="@+id/test_bar_current_line_id" android:id="@+id/currentCarStatus"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="@dimen/dp_24" /> android:textSize="@dimen/dp_24" />
<TextView <TextView
android:id="@+id/test_bar_current_line_name" android:id="@+id/currentTaskType"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="@dimen/dp_24" /> android:textSize="@dimen/dp_24" />
<TextView <TextView
android:id="@+id/taskType2" android:id="@+id/currentStatus"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="@dimen/dp_24" /> android:textSize="@dimen/dp_24" />
<TextView <TextView
android:id="@+id/taskStatus2" android:id="@+id/currentLineId"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@android:color/white" android:textColor="@android:color/white"
@@ -55,80 +55,107 @@
android:textSize="@dimen/dp_24" /> android:textSize="@dimen/dp_24" />
<TextView <TextView
android:id="@+id/orderInfo" android:id="@+id/currentOrder"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="@dimen/dp_24" /> android:textSize="@dimen/dp_24" />
<TextView <TextView
android:id="@+id/orderToStartLines" android:id="@+id/orderNo"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="@dimen/dp_24" /> android:textSize="@dimen/dp_24" />
<TextView <TextView
android:id="@+id/test_bar_current_traj_md5" android:id="@+id/orderStatus"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="@dimen/dp_24" /> android:textSize="@dimen/dp_24" />
<TextView <TextView
android:id="@+id/test_bar_current_stop_md5" android:id="@+id/orderStartSiteInfo"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="@dimen/dp_24" /> android:textSize="@dimen/dp_24" />
<TextView <TextView
android:id="@+id/test_bar_current_traj_md5_dpqp" android:id="@+id/orderEndSiteInfo"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="@dimen/dp_24" /> android:textSize="@dimen/dp_24" />
<TextView <TextView
android:id="@+id/test_bar_current_stop_md5_dpqp" android:id="@+id/orderPreLoadLines"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textSize="@dimen/dp_24" /> android:textSize="@dimen/dp_24" />
<Button <TextView
android:id="@+id/test_bar_to_virtual" android:id="@+id/currentOrderTrajectoryInfo"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="到达标定站点" android:textColor="@android:color/white"
android:textSize="@dimen/dp_24" /> android:textSize="@dimen/dp_24" />
<Button <TextView
android:id="@+id/test_bar_start_service_confirm" android:id="@+id/currentOrderStopInfo"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="开启服务" android:textColor="@android:color/white"
android:textSize="@dimen/dp_24" /> android:textSize="@dimen/dp_24" />
<Button <LinearLayout
android:id="@+id/test_bar_on_the_way_to_end"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="开启自动驾驶" android:layout_marginTop="@dimen/dp_10"
android:textSize="@dimen/dp_24" /> android:orientation="horizontal">
<Button <Button
android:id="@+id/test_bar_to_end" android:id="@+id/test_bar_to_virtual"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mock到达标定站点"
android:textSize="@dimen/dp_24" />
<Button
android:id="@+id/test_bar_start_service_confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mock开启服务"
android:textSize="@dimen/dp_24" />
<Button
android:id="@+id/test_bar_on_the_way_to_end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mock开启自动驾驶"
android:textSize="@dimen/dp_24" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="到达站点" android:layout_marginTop="@dimen/dp_10"
android:textSize="@dimen/dp_24" /> android:orientation="horizontal">
<Button <Button
android:id="@+id/test_bar_route" android:id="@+id/test_bar_to_end"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="模拟轨迹" android:text="Mock到达站点"
android:textSize="12sp" /> android:textSize="@dimen/dp_24" />
<Button
android:id="@+id/test_bar_route"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mock模拟轨迹"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout> </LinearLayout>