Merge remote-tracking branch 'origin/dev_minibus-d_230425_3.2.0' into dev_minibus-d_230425_3.2.0

This commit is contained in:
wangmingjun
2023-05-15 10:16:13 +08:00
15 changed files with 175 additions and 62 deletions

View File

@@ -1,20 +0,0 @@
package com.mogo.och.bus.passenger.callback;
/**
* Created on 2022/3/31
*
* Model->Presenter回调ADAS相关自动驾驶状态回调到达终点等等
*/
public interface IBusPassengerADASStatusCallback {
// 自动驾驶触发的已到达目的地:暂未用到
void onAutopilotArriveEnd();
// 自动驾驶可用状态
void onAutopilotEnable();
// 自动驾驶不可用状态
void onAutopilotDisable();
// 自动驾驶运行中
void onAutopilotRunning();
}

View File

@@ -0,0 +1,11 @@
package com.mogo.och.bus.passenger.callback
/**
* Created on 2022/3/31
*
* Model->Presenter回调ADAS相关自动驾驶状态回调到达终点等等
*/
interface ICharterPassengerAutoStatusChangeCallback {
// 自动驾驶状态发生改变
fun onAutoStatusChange(newState: Int)
}

View File

@@ -23,6 +23,7 @@ class CharterPassengerConst {
// 到达起始点围栏 // 到达起始点围栏
const val ARRIVE_AT_START_STATION_DISTANCE = 15 //围栏由20m改为50m 再次改为15m const val ARRIVE_AT_START_STATION_DISTANCE = 15 //围栏由20m改为50m 再次改为15m
const val ARRIVE_SOON_AT_START_STATION_DISTANCE = 100 //100米提示
const val MIN_DISTANCE_STATION = 30 //站点选择小于30m 不能选 const val MIN_DISTANCE_STATION = 30 //站点选择小于30m 不能选
} }

View File

@@ -6,6 +6,7 @@ import android.net.ConnectivityManager
import com.mogo.commons.AbsMogoApplication import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.module.intent.IMogoIntentListener import com.mogo.commons.module.intent.IMogoIntentListener
import com.mogo.commons.module.intent.IntentManager import com.mogo.commons.module.intent.IntentManager
import com.mogo.commons.voice.AIAssist
import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLine import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLine
@@ -46,12 +47,13 @@ import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil
import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.PinYinUtil import com.mogo.och.common.module.utils.PinYinUtil
import com.mogo.och.common.module.voice.VoiceManager import com.mogo.och.common.module.voice.VoiceManager
import com.mogo.och.common.module.voice.VoiceNotice
import com.mogo.tts.base.LangTtsEntity
import com.mogo.tts.base.LanguageType
import io.reactivex.Observable import io.reactivex.Observable
import io.reactivex.disposables.Disposable import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
import mogo.telematics.pad.MessagePad import mogo.telematics.pad.MessagePad
import mogo_msg.MogoReportMsg
import system_master.SystemStatusInfo
import java.util.* import java.util.*
import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
@@ -74,7 +76,7 @@ object CharterPassengerModel {
private var mContext: Context = AbsMogoApplication.getApp() private var mContext: Context = AbsMogoApplication.getApp()
//Model->Presenter自动驾驶状态相关 //Model->Presenter自动驾驶状态相关
var mADASStatusCallback: IBusPassengerADASStatusCallback? = null var mAutoStatusChnageListener = ConcurrentHashMap<String, ICharterPassengerAutoStatusChangeCallback>()
// 定位监听 // 定位监听
private val mControllerStatusCallbackMap = private val mControllerStatusCallbackMap =
@@ -109,6 +111,7 @@ object CharterPassengerModel {
private var broadcastList : MutableMap<String,Boolean> = HashMap() private var broadcastList : MutableMap<String,Boolean> = HashMap()
// 到站仅一次 // 到站仅一次
private val endKey = "arrivedLine" private val endKey = "arrivedLine"
private val ending100Key = "arrivingLine"
private val min5Speak = "min5Speak" private val min5Speak = "min5Speak"
private var carTypeChageListener: IOrderChangeCallback?=null private var carTypeChageListener: IOrderChangeCallback?=null
@@ -156,6 +159,14 @@ object CharterPassengerModel {
} }
mControllerStatusCallbackMap[tag] = callback mControllerStatusCallbackMap[tag] = callback
} }
fun setAutoStatusCallback(tag: String, callback: ICharterPassengerAutoStatusChangeCallback?) {
if (tag.isBlank()) return
if (callback == null) {
mAutoStatusChnageListener.remove(tag)
return
}
mAutoStatusChnageListener[tag] = callback
}
/** /**
* 启动轮询查询司机登录状态 * 启动轮询查询司机登录状态
@@ -210,8 +221,6 @@ object CharterPassengerModel {
// 自动驾驶状态监听 // 自动驾驶状态监听
private val mGoAutopilotStatusListener: IMoGoAutopilotStatusListener = private val mGoAutopilotStatusListener: IMoGoAutopilotStatusListener =
object : IMoGoAutopilotStatusListener { object : IMoGoAutopilotStatusListener {
override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {}
override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {}
override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) {
val state = autoPilotStatusInfo.state val state = autoPilotStatusInfo.state
when (state) { when (state) {
@@ -221,17 +230,17 @@ object CharterPassengerModel {
IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> {} IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> {}
else -> {} else -> {}
} }
mPreAutoStatus = state if(mPreAutoStatus!=state){
mPreAutoStatus = state
mAutoStatusChnageListener.forEach {
it.value.onAutoStatusChange(state)
}
}
} }
override fun onAutopilotSNRequest() {}
override fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) { override fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) {
mADASStatusCallback?.onAutopilotArriveEnd()
CallerLogger.d(SceneConstant.M_BUS_P + TAG,"底盘给到站信息") CallerLogger.d(SceneConstant.M_BUS_P + TAG,"底盘给到站信息")
arriveDest() arriveDest()
} }
override fun onAutopilotStatusRespByQuery(status: SystemStatusInfo.StatusInfo) {}
} }
/** /**
@@ -428,6 +437,10 @@ object CharterPassengerModel {
CallerLogger.d(SceneConstant.M_BUS_P + TAG,"小于15米到站1") CallerLogger.d(SceneConstant.M_BUS_P + TAG,"小于15米到站1")
arriveDest() arriveDest()
} }
if (calculateLineDistance < CharterPassengerConst.ARRIVE_SOON_AT_START_STATION_DISTANCE) {
CallerLogger.d(SceneConstant.M_BUS_P + TAG,"小于100米到站")
arriveDestSoon()
}
} }
} }
// 启动时间校准 // 启动时间校准
@@ -677,6 +690,10 @@ object CharterPassengerModel {
"---lastSumLength: " + lastSumLength + "----lastTime : " + lastTime "---lastSumLength: " + lastSumLength + "----lastTime : " + lastTime
+ " thread = " + Thread.currentThread().name + " thread = " + Thread.currentThread().name
) )
if (lastSumLength < CharterPassengerConst.ARRIVE_SOON_AT_START_STATION_DISTANCE) {
CallerLogger.d(M_BUS_P + TAG,"小于100米到站2")
arriveDestSoon()
}
if (lastSumLength < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE) { if (lastSumLength < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE) {
CallerLogger.d(M_BUS_P + TAG,"小于15米到站2") CallerLogger.d(M_BUS_P + TAG,"小于15米到站2")
arriveDest() arriveDest()
@@ -895,6 +912,20 @@ object CharterPassengerModel {
} }
@Synchronized
fun arriveDestSoon() {
orderInfo?.let { order ->
order.siteId?.let { siteId ->
if (order.arriveStatus == OrderInfoResponse.ARRIVING) {
if (broadcastList["${siteId}$ending100Key"] == null || broadcastList["${siteId}$ending100Key"] == false) {
val string = mContext.getString(com.mogo.och.common.module.R.string.arrived_station_zh)
VoiceNotice.showNotice(string,)
}
}
}
}
}
fun cleanbroadcastListInfo(){ fun cleanbroadcastListInfo(){
broadcastList.clear() broadcastList.clear()
} }

View File

@@ -12,6 +12,7 @@ import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStat
import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus
import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue
import com.mogo.och.common.module.manager.devicemanage.data.LightStatus import com.mogo.och.common.module.manager.devicemanage.data.LightStatus
import com.mogo.och.common.module.voice.VoiceNotice
import io.reactivex.disposables.Disposable import io.reactivex.disposables.Disposable
class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
@@ -145,7 +146,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
LightAirconditionDoorStatusManager.airconditionStatus.windSpeed!=windSpeedCmd&& LightAirconditionDoorStatusManager.airconditionStatus.windSpeed!=windSpeedCmd&&
LightAirconditionDoorStatusManager.airconditionStatus.temperature!=temperatureCmd&& LightAirconditionDoorStatusManager.airconditionStatus.temperature!=temperatureCmd&&
LightAirconditionDoorStatusManager.airconditionStatus.pattert!=modeCmd) { LightAirconditionDoorStatusManager.airconditionStatus.pattert!=modeCmd) {
ToastUtils.showShort("空调操作未生效,请稍后重试吧~") ToastUtils.showShort("控制系统繁忙,请稍后再试")
} }
} }
} }
@@ -155,7 +156,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
disposeSubscribe(airconditionDisposable) disposeSubscribe(airconditionDisposable)
airconditionDisposable = createSubscribe(10000){ airconditionDisposable = createSubscribe(10000){
if (LightAirconditionDoorStatusManager.airconditionStatus.isOpen) { if (LightAirconditionDoorStatusManager.airconditionStatus.isOpen) {
ToastUtils.showShort("空调操作未生效,请稍后重试吧~") ToastUtils.showShort("控制系统繁忙,请稍后再试")
} }
} }
} }
@@ -192,14 +193,14 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(1) CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(1)
subscribeLightTop1 = createSubscribe{ subscribeLightTop1 = createSubscribe{
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) { if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) {
ToastUtils.showShort("操作未生效,请稍后重试吧~") ToastUtils.showShort("控制系统繁忙,请稍后再试")
} }
} }
}else{ }else{
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(2) CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(2)
subscribeLightTop1 = createSubscribe{ subscribeLightTop1 = createSubscribe{
if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) { if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) {
ToastUtils.showShort("操作未生效,请稍后重试吧~") ToastUtils.showShort("控制系统繁忙,请稍后再试")
} }
} }
} }
@@ -211,14 +212,14 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(1) CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(1)
subscribeLightTop2 = createSubscribe{ subscribeLightTop2 = createSubscribe{
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) { if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) {
ToastUtils.showShort("操作未生效,请稍后重试吧~") ToastUtils.showShort("控制系统繁忙,请稍后再试")
} }
} }
}else{ }else{
CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(2) CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(2)
subscribeLightTop2 = createSubscribe{ subscribeLightTop2 = createSubscribe{
if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) { if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) {
ToastUtils.showShort("操作未生效,请稍后重试吧~") ToastUtils.showShort("控制系统繁忙,请稍后再试")
} }
} }
} }
@@ -230,14 +231,14 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) :
CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(1) CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(1)
subscribeLightAtmosphere = createSubscribe{ subscribeLightAtmosphere = createSubscribe{
if (!LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) { if (!LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) {
ToastUtils.showShort("操作未生效,请稍后重试吧~") ToastUtils.showShort("控制系统繁忙,请稍后再试")
} }
} }
} else { } else {
CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(2) CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(2)
subscribeLightAtmosphere = createSubscribe{ subscribeLightAtmosphere = createSubscribe{
if (LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) { if (LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) {
ToastUtils.showShort("操作未生效,请稍后重试吧~") ToastUtils.showShort("控制系统繁忙,请稍后再试")
} }
} }
} }

View File

@@ -10,6 +10,7 @@ import com.mogo.commons.voice.AIAssist
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
import com.mogo.eagle.core.function.view.SiteMarkerBean import com.mogo.eagle.core.function.view.SiteMarkerBean
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
@@ -51,7 +52,7 @@ class BusPassengerPresenter(view: MainFragment?) :
companion object { companion object {
private const val TAG = "BusPassengerPresenter" private const val TAG = "BusPassengerPresenter"
private const val KEY4SHOWNOVICEGUIDANCE = "showNoviceGuidanceOrderNor" const val KEY4SHOWNOVICEGUIDANCE = "showNoviceGuidanceOrderNor"
} }
override fun onCreate(owner: LifecycleOwner) { override fun onCreate(owner: LifecycleOwner) {
@@ -145,6 +146,7 @@ class BusPassengerPresenter(view: MainFragment?) :
clearShowNoviceGuidanceSharedPrefs() clearShowNoviceGuidanceSharedPrefs()
} }
OrderStatusEnum.OrderNoLine -> { OrderStatusEnum.OrderNoLine -> {
CallerOrderListenerManager.invokeOrderRemoval();
showNoviceGuidance() showNoviceGuidance()
} }
OrderStatusEnum.OrdersWithLine -> {} OrderStatusEnum.OrdersWithLine -> {}
@@ -183,17 +185,14 @@ class BusPassengerPresenter(view: MainFragment?) :
val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo() val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo()
currentOrderInfo?.orderNo?.let {order-> currentOrderInfo?.orderNo?.let {order->
val stringSet = SharedPrefs.getInstance(context).getStringSet(KEY4SHOWNOVICEGUIDANCE) val stringSet = SharedPrefs.getInstance(context).getStringSet(KEY4SHOWNOVICEGUIDANCE)
fun setData2SP(){
val orderNoSet = mutableSetOf(order)
SharedPrefs.getInstance(context).putStringSet(KEY4SHOWNOVICEGUIDANCE, orderNoSet)
}
if(stringSet==null){ if(stringSet==null){
setData2SP()
}else{ }else{
if (stringSet.contains(order)) { if (stringSet.contains(order)) {
return return
}else{ }else{
setData2SP()
} }
} }
UiThreadHandler.post({ UiThreadHandler.post({

View File

@@ -5,12 +5,16 @@ import com.mogo.och.bus.passenger.model.CharterPassengerModel
import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment
import com.mogo.och.bus.passenger.ui.dialogfragment.NoviceGuidanceFragment import com.mogo.och.bus.passenger.ui.dialogfragment.NoviceGuidanceFragment
import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.RxUtils
import io.reactivex.disposables.Disposable
class CharterPassengerNoviceGuidancePresenter(view: NoviceGuidanceFragment?) : class CharterPassengerNoviceGuidancePresenter(view: NoviceGuidanceFragment?) :
BusBasePassengerFunctionDevicePresenter<NoviceGuidanceFragment?>(view) { BusBasePassengerFunctionDevicePresenter<NoviceGuidanceFragment?>(view) {
companion object{ companion object{
private const val TAG = "BusPassengerFunctionPresenter" private const val TAG = "BusPassengerFunctionPresenter"
} }
var createSubscribe: Disposable?=null
override fun onCreate(owner: LifecycleOwner) { override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner) super.onCreate(owner)
} }
@@ -33,5 +37,16 @@ class CharterPassengerNoviceGuidancePresenter(view: NoviceGuidanceFragment?) :
override fun onDestroy(owner: LifecycleOwner) { override fun onDestroy(owner: LifecycleOwner) {
super.onDestroy(owner) super.onDestroy(owner)
createSubscribe?.let {
if (!it.isDisposed) {
it.dispose()
}
}
}
fun exitDialogFragment() {
createSubscribe = RxUtils.createSubscribe(15_000) {
mView?.dismissAllowingStateLoss()
}
} }
} }

View File

@@ -16,6 +16,8 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
import com.mogo.eagle.core.utilcode.util.* import com.mogo.eagle.core.utilcode.util.*
import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.R
import com.mogo.och.bus.passenger.model.CharterPassengerModel
import com.mogo.och.bus.passenger.presenter.BusPassengerPresenter
import com.mogo.och.bus.passenger.presenter.CharterPassengerNoviceGuidancePresenter import com.mogo.och.bus.passenger.presenter.CharterPassengerNoviceGuidancePresenter
import com.mogo.och.bus.passenger.ui.MainFragment import com.mogo.och.bus.passenger.ui.MainFragment
import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.common.module.voice.VoiceNotice
@@ -122,6 +124,11 @@ class NoviceGuidanceFragment :
} }
v_next_page_notice.setOnClickListener { v_next_page_notice.setOnClickListener {
setTargetVisable(complierGuidance = true) setTargetVisable(complierGuidance = true)
val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo()
currentOrderInfo?.orderNo?.let { order ->
val orderNoSet = mutableSetOf(order)
SharedPrefs.getInstance(requireContext()).putStringSet(BusPassengerPresenter.KEY4SHOWNOVICEGUIDANCE, orderNoSet)
}
if (m1_novice_guidance_complier_tts) { if (m1_novice_guidance_complier_tts) {
val m1NoviceGuidanceStopSiteTts = val m1NoviceGuidanceStopSiteTts =
AbsMogoApplication.getApp().getString(R.string.m1_novice_guidance_complier_tts) AbsMogoApplication.getApp().getString(R.string.m1_novice_guidance_complier_tts)
@@ -193,6 +200,7 @@ class NoviceGuidanceFragment :
group_complete_guidance.visibility = View.VISIBLE group_complete_guidance.visibility = View.VISIBLE
actv_click_go_explore.text = "点我进入主页" actv_click_go_explore.text = "点我进入主页"
pageStatus = PageStatus.EndPage pageStatus = PageStatus.EndPage
mPresenter?.exitDialogFragment()
} }
} else { } else {

View File

@@ -145,7 +145,7 @@ class M1OrderLineFragment :
aciv_driver_refuse_group.visibility = View.GONE aciv_driver_refuse_group.visibility = View.GONE
g_loading_group.visibility = View.GONE g_loading_group.visibility = View.GONE
g_lines_sites_data.visibility = View.GONE g_lines_sites_data.visibility = View.GONE
RxUtils.createSubscribe { RxUtils.createSubscribe(3_000) {
dismiss?.closeDialog() dismiss?.closeDialog()
} }
} }
@@ -154,7 +154,7 @@ class M1OrderLineFragment :
aciv_driver_refuse_group.visibility = View.VISIBLE aciv_driver_refuse_group.visibility = View.VISIBLE
g_loading_group.visibility = View.GONE g_loading_group.visibility = View.GONE
g_lines_sites_data.visibility = View.GONE g_lines_sites_data.visibility = View.GONE
RxUtils.createSubscribe { RxUtils.createSubscribe(3_000) {
showSelectData() showSelectData()
} }
} }

View File

@@ -15,10 +15,13 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_
import com.mogo.eagle.core.utilcode.util.ActivityUtils import com.mogo.eagle.core.utilcode.util.ActivityUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.R
import com.mogo.och.bus.passenger.callback.ICharterPassengerAutoStatusChangeCallback
import com.mogo.och.bus.passenger.model.CharterPassengerModel import com.mogo.och.bus.passenger.model.CharterPassengerModel
import com.mogo.och.bus.passenger.ui.view.bottom.BottomClickView import com.mogo.och.bus.passenger.ui.view.bottom.BottomClickView
import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager
import com.mogo.och.common.module.utils.RxUtils
import com.mogo.och.common.module.utils.SoundPoolHelper import com.mogo.och.common.module.utils.SoundPoolHelper
import io.reactivex.disposables.Disposable
import kotlinx.android.synthetic.main.m1_bottom_bar.view.* import kotlinx.android.synthetic.main.m1_bottom_bar.view.*
class GoView @JvmOverloads constructor( class GoView @JvmOverloads constructor(
@@ -29,6 +32,8 @@ class GoView @JvmOverloads constructor(
var applyClickListener: BottomClickView.ApplyClickLintener?=null var applyClickListener: BottomClickView.ApplyClickLintener?=null
var startAutoTimeOut: Disposable?=null
companion object{ companion object{
private const val TAG = "GoView" private const val TAG = "GoView"
} }
@@ -77,7 +82,7 @@ class GoView @JvmOverloads constructor(
ToastUtils.showShort("启动自动驾驶中") ToastUtils.showShort("启动自动驾驶中")
CallerAutoPilotControlManager.sendPlanningCmd(2) CallerAutoPilotControlManager.sendPlanningCmd(2)
CharterPassengerModel.startAutopilot() CharterPassengerModel.startAutopilot()
CharterPassengerModel.leaveStation() onceRegisterAutoStatus()
CharterPassengerModel.sendTripInfo() CharterPassengerModel.sendTripInfo()
} }
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> {
@@ -92,4 +97,35 @@ class GoView @JvmOverloads constructor(
} }
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getActivityByContext(context), R.raw.bus_di) SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getActivityByContext(context), R.raw.bus_di)
} }
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
startAutoTimeOut?.let {
if (!it.isDisposed) {
it.dispose()
}
}
}
private fun onceRegisterAutoStatus() {
CharterPassengerModel.setAutoStatusCallback(TAG,null)
CharterPassengerModel.setAutoStatusCallback(TAG,object :ICharterPassengerAutoStatusChangeCallback{
override fun onAutoStatusChange(newState: Int) {
if(newState==IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){
CharterPassengerModel.leaveStation()
}
CharterPassengerModel.setAutoStatusCallback(TAG,null)
}
})
startAutoTimeOut?.let {
if (!it.isDisposed) {
it.dispose()
}
}
startAutoTimeOut = RxUtils.createSubscribe(20_000) {
val string = AbsMogoApplication.getApp().getString(R.string.m1_start_auto_fail)
ToastUtils.showLong(string)
CharterPassengerModel.setAutoStatusCallback(TAG,null)
}
}
} }

View File

@@ -9,10 +9,13 @@ import android.view.ViewGroup
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import chassis.ChassisStatesOuterClass import chassis.ChassisStatesOuterClass
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.autopilot.IMoGoBatteryManagementSystemListener import com.mogo.eagle.core.function.api.autopilot.IMoGoBatteryManagementSystemListener
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener
import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerBatteryManagementSystemListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerBatteryManagementSystemListenerManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
@@ -22,6 +25,7 @@ import com.mogo.eagle.core.utilcode.util.ClickUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.R
import com.mogo.och.bus.passenger.bean.event.DebugView import com.mogo.och.bus.passenger.bean.event.DebugView
import com.mogo.och.bus.passenger.model.CharterPassengerModel
import kotlinx.android.synthetic.main.m1_statusview_datetime.view.* import kotlinx.android.synthetic.main.m1_statusview_datetime.view.*
import me.jessyan.autosize.utils.AutoSizeUtils import me.jessyan.autosize.utils.AutoSizeUtils
import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.EventBus
@@ -31,7 +35,7 @@ class StatusBarView @JvmOverloads constructor(
context: Context, context: Context,
attrs: AttributeSet? = null, attrs: AttributeSet? = null,
defStyleAttr: Int = 0 defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoSkinModeChangeListener, IViewControlListener, IMoGoBatteryManagementSystemListener { ) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoSkinModeChangeListener, IViewControlListener, IMoGoBatteryManagementSystemListener, IMoGoAutopilotStatusListener {
companion object { companion object {
const val TAG = "StatusBarView" const val TAG = "StatusBarView"
@@ -76,6 +80,8 @@ class StatusBarView @JvmOverloads constructor(
CallerBatteryManagementSystemListenerManager.addListener(TAG,this) CallerBatteryManagementSystemListenerManager.addListener(TAG,this)
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
updateStatusBarRightView(FunctionBuildConfig.isDemoMode, "demoMode", DemoModeView(this.context)) updateStatusBarRightView(FunctionBuildConfig.isDemoMode, "demoMode", DemoModeView(this.context))
bizz_view.setOnClickListener { continuousClick(bizz) } bizz_view.setOnClickListener { continuousClick(bizz) }
@@ -84,6 +90,27 @@ class StatusBarView @JvmOverloads constructor(
progress.progress = 50 progress.progress = 50
tv_power_cos.text = "50%" tv_power_cos.text = "50%"
val state = CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state
setAutoPilotSatusInfo(state)
}
private fun setAutoPilotSatusInfo(state: Int) {
when (state) {
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {
actv_auto_status.text = "安全接管中"
}
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {
actv_auto_status.text = "安全接管中"
}
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> {
actv_auto_status.text = "自动驾驶中"
}
IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> {
actv_auto_status.text = "远程代驾中"
}
else -> {}
}
} }
override fun onSkinModeChange(skinMode: Int) { override fun onSkinModeChange(skinMode: Int) {
@@ -93,6 +120,10 @@ class StatusBarView @JvmOverloads constructor(
} }
} }
override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) {
setAutoPilotSatusInfo(autoPilotStatusInfo.state)
}
override fun updateStatusBarLeftView(insert: Boolean, tag: String, viewGroup: ViewGroup) { override fun updateStatusBarLeftView(insert: Boolean, tag: String, viewGroup: ViewGroup) {
} }

View File

@@ -39,14 +39,6 @@
android:layout_width="@dimen/dp_148" android:layout_width="@dimen/dp_148"
android:layout_height="@dimen/dp_150"/> android:layout_height="@dimen/dp_150"/>
<com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugViewTrigger
android:layout_height="@dimen/dp_400"
android:layout_width="@dimen/dp_100"
android:longClickable="true"
app:layout_constraintStart_toStartOf="@+id/mapBizView"
app:layout_constraintTop_toTopOf="@+id/mapBizView"
app:layout_constraintBottom_toBottomOf="@+id/mapBizView" />
<!--浓雾预警动画--> <!--浓雾预警动画-->
<com.mogo.eagle.core.function.hmi.ui.widget.V2XFogEventView <com.mogo.eagle.core.function.hmi.ui.widget.V2XFogEventView
android:layout_width="match_parent" android:layout_width="match_parent"
@@ -276,6 +268,7 @@
<androidx.constraintlayout.widget.Group <androidx.constraintlayout.widget.Group
android:id="@+id/group_debug" android:id="@+id/group_debug"
app:constraint_referenced_ids="debug_arrive_dest,debug_show_noviceGuidance" app:constraint_referenced_ids="debug_arrive_dest,debug_show_noviceGuidance"
android:visibility="gone"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content"/> android:layout_height="wrap_content"/>

View File

@@ -7,10 +7,18 @@
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout" tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
tools:ignore="MissingDefaultResource"> tools:ignore="MissingDefaultResource">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_auto_status"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/viewTextClock"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_47"/>
<TextClock <TextClock
android:id="@+id/viewTextClock" android:id="@+id/viewTextClock"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="@dimen/dp_64" android:layout_height="@dimen/dp_47"
android:format12Hour="HH:mm MM月dd日 EEEE" android:format12Hour="HH:mm MM月dd日 EEEE"
android:format24Hour="HH:mm MM月dd日 EEEE" android:format24Hour="HH:mm MM月dd日 EEEE"
android:gravity="center" android:gravity="center"

View File

@@ -47,8 +47,7 @@
<string name="m1_novice_guidance_complier_tts">太棒了!您已完成乘车指南,更多功能欢迎探索~蘑菇小助手预祝您旅途愉快</string> <string name="m1_novice_guidance_complier_tts">太棒了!您已完成乘车指南,更多功能欢迎探索~蘑菇小助手预祝您旅途愉快</string>
<string name="m1_close_door_and_startauto">先关闭车门再启动吧~</string> <string name="m1_close_door_and_startauto">先关闭车门再启动吧~</string>
<!-- <string name="m1_novice_guidance_tts">车辆起步扶稳坐好哟前方到站XXX</string>--> <string name="m1_start_auto_fail">自驾系统繁忙,稍后再试试吧~</string>
<!-- <string name="m1_novice_guidance_tts">自驾系统繁忙,稍后再试试吧~</string>-->
<!-- <string name="m1_novice_guidance_tts">正在为您靠边停车,扶稳坐好哟</string>--> <!-- <string name="m1_novice_guidance_tts">正在为您靠边停车,扶稳坐好哟</string>-->
<!-- <string name="m1_novice_guidance_tts">靠边停车成功</string>--> <!-- <string name="m1_novice_guidance_tts">靠边停车成功</string>-->

View File

@@ -23,7 +23,7 @@
<string name="leave_station_en">The next station is %1$s</string> <string name="leave_station_en">The next station is %1$s</string>
<string name="leave_station_ko">전방에서 역에 도착하는 %1$s</string> <string name="leave_station_ko">전방에서 역에 도착하는 %1$s</string>
<string name="surplus5_order_zh">距离包车结束剩余5分钟请您合理安排游玩时间</string> <string name="surplus5_order_zh">5分钟后包车就要结束了稍后小助手会自动为您寻找停车点</string>
<string name="surplus5_order_en">There are 5 minutes left from the end of chartering. Please arrange your time reasonably</string> <string name="surplus5_order_en">There are 5 minutes left from the end of chartering. Please arrange your time reasonably</string>
<string name="surplus5_order_ko">전세버스 종료 후 5분 남았습니다. 여행 시간을 합리적으로 안배해 주십시오</string> <string name="surplus5_order_ko">전세버스 종료 후 5분 남았습니다. 여행 시간을 합리적으로 안배해 주십시오</string>