diff --git a/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/manager/CharterTrajectoryManager.kt b/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/manager/CharterTrajectoryManager.kt index 125fa0cf16..42090c2136 100644 --- a/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/manager/CharterTrajectoryManager.kt +++ b/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/manager/CharterTrajectoryManager.kt @@ -87,7 +87,13 @@ object CharterTrajectoryManager { // 5. 轨迹管理_轨迹下载超时 d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() 轨迹下载超时") // ToastUtils.showShort("轨迹下载超时"); - } else if ("EMAP_ATTITUDE_INIT_FAILED" == guardianInfo.getCode()) { + } else if ("EMAP_ATTITUDE_INIT_FAILED" == guardianInfo.getCode()) { + // 收到ssm的自动驾驶变为ready,再次下发轨迹下载.解决:域控重启,或者102域控启动太早,107节点初始化未完成导致的轨迹未进行下载。 + d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() ssm ready,再次发起下载") + get().getBusOrderResult()?.lineId?.let { + syncTrajectoryInfo(it, + get().getBusOrderResult()?.lineName!!) + } CallerMsgBoxManager.saveMsgBox( MsgBoxBean( MsgBoxType.OPERATION, @@ -97,11 +103,6 @@ object CharterTrajectoryManager { ) ) SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getTopActivity(), R.raw.startautopilot) - } else if ("EMAP_ATTITUDE_INIT_FAILED" == guardianInfo.getCode()) { - // 收到ssm的自动驾驶变为ready,再次下发轨迹下载.解决:域控重启,或者102域控启动太早,107节点初始化未完成导致的轨迹未进行下载。 - d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() ssm ready,再次发起下载") - syncTrajectoryInfo(get().getBusOrderResult()?.lineId!!, - get().getBusOrderResult()?.lineName!!) } } diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt index 780c5b7d98..95644ed301 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt @@ -18,7 +18,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager import com.mogo.eagle.core.network.utils.GsonUtil -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant @@ -202,7 +201,7 @@ object CharterPassengerModel { override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) { super.onAutopilotGuardian(guardianInfo) guardianInfo?.let { - if (it.code=="IMAP_TRA_LOADED") { + if (it.code=="EMAP_ATTITUDE_INIT_FAILED") { ToastCharterUtils.showToastShort("请等待车辆完成掉头后再出发吧~") } } diff --git a/OCH/mogo-och-common-module/src/debug/java/com/mogo/och/common/module/debug/DebugDataDispatch.kt b/OCH/mogo-och-common-module/src/debug/java/com/mogo/och/common/module/debug/DebugDataDispatch.kt index db50f307f2..efef5d5a77 100644 --- a/OCH/mogo-och-common-module/src/debug/java/com/mogo/och/common/module/debug/DebugDataDispatch.kt +++ b/OCH/mogo-och-common-module/src/debug/java/com/mogo/och/common/module/debug/DebugDataDispatch.kt @@ -17,11 +17,13 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02Lis import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.util.ActivityUtils import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.och.common.module.debug.location.MogoLocationExit import com.mogo.och.common.module.manager.distancemamager.TrajectoryAndDistanceManager import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil +import com.mogo.och.common.module.view.DebugFloatWindow import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg import java.io.BufferedReader @@ -40,6 +42,7 @@ object DebugDataDispatch { const val carNeedTurnAround = "trunAroud" const val carLightSwitch = "lightSwitch" const val trajectoryStation = "trajectoryStation" + const val showDebugView = "showDebugView" // adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "location" --es path "sy73_log.json" // adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "globalPath" --es path "sy73.json" @@ -109,6 +112,10 @@ object DebugDataDispatch { val lineID = intent.getLongExtra("lineID", -1) setStation(startLon.toDouble(),startLat.toDouble(),endLon.toDouble(),endLat.toDouble(),lineID) } + showDebugView -> { + val debugFloatWindow = DebugFloatWindow(ActivityUtils.getTopActivity()) + debugFloatWindow.showFloatWindow() + } else -> {} } } diff --git a/OCH/mogo-och-common-module/src/debug/java/com/mogo/och/common/module/view/DebugFloatWindow.kt b/OCH/mogo-och-common-module/src/debug/java/com/mogo/och/common/module/view/DebugFloatWindow.kt new file mode 100644 index 0000000000..81b6f2ce5e --- /dev/null +++ b/OCH/mogo-och-common-module/src/debug/java/com/mogo/och/common/module/view/DebugFloatWindow.kt @@ -0,0 +1,107 @@ +package com.mogo.och.common.module.view + +import android.app.Activity +import android.graphics.PixelFormat +import android.util.DisplayMetrics +import android.view.* +import androidx.appcompat.widget.AppCompatButton +import androidx.appcompat.widget.AppCompatImageView +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.utilcode.kotlin.onClick +import com.mogo.eagle.core.utilcode.util.BarUtils +import com.mogo.och.common.module.R +import mogo_msg.MogoReportMsg + +/** + * @author XuXinChao + * @description 工控机上报列表面板 + * @since: 2022/4/13 + */ +class DebugFloatWindow constructor(activity: Activity) : View.OnTouchListener{ + + private var mActivity: Activity = activity + private var mWindowParams: WindowManager.LayoutParams? = null + private var mWindowManager: WindowManager? = null + + private lateinit var mFloatLayout: View + private var mInViewX = 0f + private var mInViewY = 0f + private var mDownInScreenX = 0f + private var mDownInScreenY = 0f + private var mInScreenX = 0f + private var mInScreenY = 0f + + init { + initFloatWindow(); + } + + private fun initFloatWindow() { + mFloatLayout = LayoutInflater.from(mActivity).inflate(R.layout.debug_view, null) as View + mFloatLayout.setOnTouchListener(this) + mWindowParams = WindowManager.LayoutParams() + mWindowManager = mActivity.windowManager + mWindowParams?.let { + it.format = PixelFormat.RGBA_8888 + it.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE + it.gravity = Gravity.START or Gravity.TOP + it.width = 800 + it.height = 1000 + it.alpha = 0.9f + } + mFloatLayout.findViewById(R.id.close_window).onClick { + hideFloatWindow() + } + + mFloatLayout.findViewById(R.id.acbtn_send_15_dir).onClick { + val newBuilder = MogoReportMsg.MogoReportMessage.newBuilder() + newBuilder.code = "EMAP_ATTITUDE_INIT_FAILED" + newBuilder.timestampBuilder.sec = 0 + newBuilder.timestampBuilder.nsec = 0 + newBuilder.src = "2" + newBuilder.level = "" + CallerAutoPilotStatusListenerManager.invokeAutopilotGuardian(newBuilder.build()) + } + } + + override fun onTouch(v: View?, motionEvent: MotionEvent?): Boolean { + when (motionEvent?.action) { + MotionEvent.ACTION_DOWN -> { + // 获取相对View的坐标,即以此View左上角为原点 + mInViewX = motionEvent.x + mInViewY = motionEvent.y + // 获取相对屏幕的坐标,即以屏幕左上角为原点 + mDownInScreenX = motionEvent.rawX + mDownInScreenY = motionEvent.rawY + mInScreenX = motionEvent.rawX + mInScreenY = motionEvent.rawY + + } + MotionEvent.ACTION_MOVE -> { + // 更新浮动窗口位置参数 + mInScreenX = motionEvent.rawX + mInScreenY = motionEvent.rawY + mWindowParams!!.x = (mInScreenX - mInViewX).toInt() + mWindowParams!!.y = (mInScreenY - mInViewY).toInt() + // 手指移动的时候更新小悬浮窗的位置 + mWindowManager!!.updateViewLayout(mFloatLayout, mWindowParams) + } + } + return true + } + + fun showFloatWindow() { + if (mFloatLayout.parent == null) { + val metrics = DisplayMetrics() + // 默认固定位置,靠屏幕右边缘的中间 + mWindowManager!!.defaultDisplay.getMetrics(metrics) + mWindowParams!!.x = metrics.widthPixels + mWindowParams!!.y = metrics.heightPixels / 2 - BarUtils.getStatusBarHeight() + mWindowManager!!.addView(mFloatLayout, mWindowParams) + } + } + + fun hideFloatWindow() { + if (mFloatLayout.parent != null) mWindowManager!!.removeView(mFloatLayout) + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/debug/res/drawable/baseline_close_24.xml b/OCH/mogo-och-common-module/src/debug/res/drawable/baseline_close_24.xml new file mode 100644 index 0000000000..4e93ea4883 --- /dev/null +++ b/OCH/mogo-och-common-module/src/debug/res/drawable/baseline_close_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/OCH/mogo-och-common-module/src/debug/res/drawable/common_close.xml b/OCH/mogo-och-common-module/src/debug/res/drawable/common_close.xml new file mode 100644 index 0000000000..842a6ef471 --- /dev/null +++ b/OCH/mogo-och-common-module/src/debug/res/drawable/common_close.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/debug/res/layout/debug_view.xml b/OCH/mogo-och-common-module/src/debug/res/layout/debug_view.xml new file mode 100644 index 0000000000..eb37de1660 --- /dev/null +++ b/OCH/mogo-och-common-module/src/debug/res/layout/debug_view.xml @@ -0,0 +1,29 @@ + + + + + + + + \ No newline at end of file