diff --git a/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml b/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml index 931badb5ae..ee2adf9079 100644 --- a/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml +++ b/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml @@ -299,7 +299,7 @@ android:src="@drawable/icon_bad_case" /> - = ArrayList() + @Volatile + private var mRoutePoints: MutableList? = ArrayList() private var orderStatus: OrderStatusEnum = OrderStatusEnum.NoOrderUnuse @@ -108,6 +112,7 @@ object CharterPassengerModel { private var broadcastList : MutableMap = HashMap() // 到站仅一次 private val endKey = "arrivedLine" + private val endKeyRequestIng = "arrivedLineRequestIng" private val ending100Key = "arrivingLine" private val min5Speak = "min5Speak" @@ -116,6 +121,9 @@ object CharterPassengerModel { private var subscribeCountDown: Disposable?=null var switchLine5minWait: Disposable?=null + @Volatile + var newCheckedSite: SiteInfoResponse.SiteInfo? = null + fun init() { initListeners() queryLoginStatus() @@ -178,6 +186,7 @@ object CharterPassengerModel { // 3、车控页面、 // 4、打开选择线路页面 BusPassengerModelLoopManager.removeLoopFunction(TAGLOGIN) + CallerLogger.d(M_BUS_P + TAG, "结束登录状态轮询") // 启动订单轮 startOrderLoop() } else { @@ -185,6 +194,7 @@ object CharterPassengerModel { TAGLOGIN, LoopInfo(3, ::queryLoginStatus) ) + CallerLogger.d(M_BUS_P + TAG, "启动登录状态轮询") } } }) @@ -227,7 +237,11 @@ object CharterPassengerModel { } when (state) { IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { - CallerAutoPilotControlManager.getGlobalPath() + RxUtils.createSubscribe(5_000) { + cleanRoutePoints() + CallerLogger.d(M_BUS_P + TAG,"请求底盘轨迹") + CallerAutoPilotControlManager.getGlobalPath() + } } IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {} IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {} @@ -237,7 +251,7 @@ object CharterPassengerModel { } } override fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) { - CallerLogger.d(SceneConstant.M_BUS_P + TAG,"底盘给到站信息") + CallerLogger.d(M_BUS_P + TAG,"底盘给到站信息") arriveDest() } } @@ -254,6 +268,10 @@ object CharterPassengerModel { ) globalPathResp?.wayPointsList?.let { if (it.size > 0) { + CallerLogger.d( + M_BUS_P + TAG, + "收到轨迹:${it.size}--第一个点${it[0]}--最后一个点:${it.last()}" + ) updateRoutePoints(it) startCalculateDistanceLoop() } @@ -262,10 +280,13 @@ object CharterPassengerModel { } fun updateRoutePoints(routePoints: List?) { - mRoutePoints.clear() + mRoutePoints = null val latLngModels = CoordinateCalculateRouteUtil .coordinateConverterWgsToGcjLocations(mContext, routePoints) - mRoutePoints.addAll(latLngModels) + mRoutePoints = latLngModels + } + fun cleanRoutePoints(){ + mRoutePoints = null } fun setStatusChangeListener(tag:String,orderStatusChangeListener: IOrderStatusChangeListener?) { @@ -343,6 +364,7 @@ object CharterPassengerModel { TAGORDER, LoopInfo(3, ::queryOrder) ) + CallerLogger.d(M_BUS_P + TAG, "启动订单轮询") } /** @@ -350,6 +372,7 @@ object CharterPassengerModel { */ private fun endOrderLoop() { BusPassengerModelLoopManager.removeLoopFunction(TAGORDER) + CallerLogger.d(M_BUS_P + TAG, "结束订单轮询") } /** @@ -359,6 +382,7 @@ object CharterPassengerModel { BusPassengerServiceManager.queryOrderInfo( mContext, object : OchCommonServiceCallback { override fun onSuccess(data: OrderInfoResponse?) { + CallerLogger.d(M_BUS_P+TAG,"订单信息:$data") if (data?.data == null){ if(orderInfo!=null){ // 启动车辆服务状态 @@ -366,12 +390,12 @@ object CharterPassengerModel { } }else { // 判断是否有订单 - ordrLagic(data?.data) + ordrLagic(data.data) } } override fun onFail(code: Int, msg: String) { - ToastUtils.showShort("$code:$msg") + ToastCharterUtils.showShort("$code:$msg") } }) } @@ -449,7 +473,7 @@ object CharterPassengerModel { fun hasSetLineAndSite(): Pair? { orderInfo?.let { - if (it.lineId != null && it.lineId > 0 && it.siteId != null && it.siteId > 0) { + if (it.lineId != null && it.lineId > 0 && it.siteId != null && it.siteId!! > 0) { if(it.arriveStatus==OrderInfoResponse.ARRIVED){ return null } @@ -482,6 +506,7 @@ object CharterPassengerModel { */ private fun startCarStatusLoop() { BusPassengerModelLoopManager.setLoopFunction(TAGCARSTATUS, LoopInfo(3, ::queryCarStatus)) + CallerLogger.d(M_BUS_P + TAG, "启动车态轮询") } /** @@ -489,6 +514,7 @@ object CharterPassengerModel { */ private fun endCarStatusLoop() { BusPassengerModelLoopManager.removeLoopFunction(TAGCARSTATUS) + CallerLogger.d(M_BUS_P + TAG, "结束车态轮询") } /** @@ -503,7 +529,7 @@ object CharterPassengerModel { } override fun onFail(code: Int, msg: String) { - ToastUtils.showShort("$code:$msg") + ToastCharterUtils.showShort("$code:$msg") } }) } @@ -520,6 +546,7 @@ object CharterPassengerModel { orderInfo = null locusInfo = null if (data.businessStatus == 2) {// 订单结束 没有还车 + RxUtils.disposeSubscribe(switchLine5minWait) setOrderStatus(OrderStatusEnum.NoOrderUse) } else { // 车辆空闲 订单结束已经还车 @@ -540,6 +567,7 @@ object CharterPassengerModel { TAGCALIBRATION, LoopInfo(120, ::queryBusinessTime,immediately = true) ) + CallerLogger.d(M_BUS_P + TAG, "启动时间校准轮询") } /** @@ -547,6 +575,7 @@ object CharterPassengerModel { */ private fun endCalibrationLoop() { BusPassengerModelLoopManager.removeLoopFunction(TAGCALIBRATION) + CallerLogger.d(M_BUS_P + TAG, "结束时间校准轮询") } /** @@ -606,7 +635,7 @@ object CharterPassengerModel { } override fun onFail(code: Int, msg: String) { - ToastUtils.showShort("$code:$msg") + ToastCharterUtils.showShort("$code:$msg") } }) } @@ -627,7 +656,7 @@ object CharterPassengerModel { } override fun onFail(code: Int, msg: String) { - ToastUtils.showShort("$code:$msg") + ToastCharterUtils.showShort("$code:$msg") } }) } @@ -639,13 +668,18 @@ object CharterPassengerModel { */ private fun startCalculateDistanceLoop() { BusPassengerModelLoopManager.setLoopFunction(TAGDISTANCE, LoopInfo(1, ::calculateDistance)) + CallerLogger.d(M_BUS_P + TAG, "开始路距计算") } /** * 结束启动路距计算 + * ① 订单结束 + * ② 选择站点司机端同意后 + * ③ 到站成功后 */ private fun endCalculateDistanceLoop() { BusPassengerModelLoopManager.removeLoopFunction(TAGDISTANCE) + CallerLogger.d(M_BUS_P + TAG, "结束路距计算") } /** @@ -655,6 +689,20 @@ object CharterPassengerModel { //mLocation gcj坐标 mLocationGCJ02?.let { orderInfo?.let { order -> + CallerLogger.d(M_BUS_P + "calculateDistance", "订单信息:$order") + if(order.siteId==null||order.siteId==0L|| + order.wgs84Lat==null||order.wgs84Lat==0.0|| + order.wgs84Lon==null||order.wgs84Lon==0.0 + ){ + CallerLogger.d(M_BUS_P + "calculateDistance", "站点信息未获得") + return + } + newCheckedSite?.let { + if(it.siteId!=order.siteId){ + CallerLogger.d(M_BUS_P + "calculateDistance", "站点和已选不吻合") + return + } + } // 启动轨迹计算 var lastSumLength = 0f val orderLonLat = @@ -673,25 +721,33 @@ object CharterPassengerModel { mogoLocation.longitude, mogoLocation.latitude ) + CallerLogger.d(M_BUS_P + "calculateDistance", "两点距离和站点的直线距离:${lastSumLength}") if(lastSumLength>100) { - if (mRoutePoints.size == 0){ - ToastUtils.showLong("缺少轨迹数据") + if (mRoutePoints==null||mRoutePoints?.size == 0){ + ToastCharterUtils.showLong("缺少轨迹数据暂停计算") + CallerLogger.d(M_BUS_P + "calculateDistance两点距离", + "缺少轨迹数据" + ) return } // 计算距离 - lastSumLength = + val templastSumLength = CoordinateCalculateRouteUtil.calculateRouteSumLength( mRoutePoints, it, mogoLocation ) + CallerLogger.d(M_BUS_P + TAG, "使用轨迹轨迹:${mRoutePoints?.size}--第一个点${mRoutePoints!![0]}--最后一个点:${mRoutePoints!!.last()}") + CallerLogger.d(M_BUS_P + "calculateDistance", "轨迹计算的距离$templastSumLength") + if(templastSumLength>100){ + lastSumLength = templastSumLength + } } val lastTime: Double = lastSumLength / CharterPassengerConst.Charter_AVERAGE_SPEED * 3.6 //秒 CallerLogger.d(M_BUS_P + "calculateDistance", - "---lastSumLength: " + lastSumLength + "----lastTime : " + lastTime - + " thread = " + Thread.currentThread().name + "最终信息:lastSumLength: ${lastSumLength}lastTime : $lastTime thread = ${Thread.currentThread().name}" ) if (lastSumLength < CharterPassengerConst.ARRIVE_SOON_AT_START_STATION_DISTANCE&&lastSumLength>0) { CallerLogger.d(M_BUS_P + TAG,"小于100米到站2") @@ -715,6 +771,7 @@ object CharterPassengerModel { private fun setOrderStatus(orderStatus: OrderStatusEnum) { if (this.orderStatus != orderStatus) { + CallerLogger.d(M_BUS_P + TAG,"${this.orderInfo?.orderNo}新的状态:$orderStatus") this.orderStatus = orderStatus for (callback in orderStatusChangeListeners.values) { callback.onStatusChange(this.orderStatus) @@ -850,24 +907,37 @@ object CharterPassengerModel { fun arriveDest() { val (order, lineId, siteId) = getOrderInfo() if(order!=null&&lineId!=null&&siteId!=null){ + val requestSuccessSign = "${siteId}$endKey" + val requestIngSign = "${siteId}$endKeyRequestIng"//正在请求中 + CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, + "requestSuccessSign${isSuccess(requestSuccessSign)}---requestIngSign${isSuccess(requestIngSign)}") if (order.arriveStatus == OrderInfoResponse.ARRIVING) { - if (broadcastList["${siteId}$endKey"] == null || broadcastList["${siteId}$endKey"] == false) { + if (isSuccess(requestSuccessSign)&&//true 请求还没有成功 false 请求成功 + isSuccess(requestIngSign)) {// true 还没有正在请求 false 正在请求中 val currentTimeStamp = DateTimeUtil.getCurrentTimeStamp() + broadcastList[requestIngSign] = true //正在请求中 BusPassengerServiceManager.arriveDest( mContext, lindId = lineId, writtenVersion = currentTimeStamp, object : OchCommonServiceCallback { - override fun onSuccess(data: BaseData?) { - if (null != data && 0 == data.code) { - arrivedDeskSuccess(currentTimeStamp,true) + override fun onSuccess(data: BaseData?) { + if (null != data && 0 == data.code) { + arrivedDeskSuccess(currentTimeStamp,true) + broadcastList[requestIngSign] = false + } } - } - override fun onFail(code: Int, msg: String) { - ToastUtils.showShort("$code:$msg") - } - }) + override fun onFail(code: Int, msg: String) { + ToastCharterUtils.showShort("$code:$msg") + broadcastList[requestIngSign] = false + } + + override fun onError() { + super.onError() + broadcastList[requestIngSign] = false + } + }) } } } @@ -878,13 +948,20 @@ object CharterPassengerModel { needSendDriver:Boolean ) { val (order, lineId, siteId) = getOrderInfo() + val requestSuccessSign = "${siteId}$endKey" + + if (!isSuccess(requestSuccessSign)){ + return + } + if(order!=null&&lineId!=null&&siteId!=null){ VoiceManager.arrivedStation( order.siteName!!, order.siteNameKr ?: "", VoiceFocusManager.getVoiceCmdCallBack() ) - broadcastList["${siteId}$endKey"] = true + // 请求成功了 + broadcastList[requestSuccessSign] = true // 给司机端 if (needSendDriver) { val msg = ChangeDestMsg( @@ -894,7 +971,7 @@ object CharterPassengerModel { order.startSiteId ?: 0, order.startSiteName ?: "", siteId.toInt(), - order.siteName, + order.siteName?:"", true, OrderInfoResponse.ARRIVED, currentTimeStamp @@ -906,12 +983,9 @@ object CharterPassengerModel { CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "到站发送数据${msg}") } - switchLine5minWait?.let { - if (!it.isDisposed) { - it.dispose() - } - } - + RxUtils.disposeSubscribe(switchLine5minWait) + // 清理轨迹 + cleanRoutePoints() // 到站结束自驾 CallerAutoPilotControlManager.cancelAutoPilot() // 结束路距计算 @@ -937,7 +1011,7 @@ object CharterPassengerModel { orderInfo?.let { order -> order.siteId?.let { siteId -> if (order.arriveStatus == OrderInfoResponse.ARRIVING) { - if (broadcastList["${siteId}$ending100Key"] == null || broadcastList["${siteId}$ending100Key"] == false) { + if (isSuccess("${siteId}$ending100Key")) { val string = mContext.getString(R.string.arrived_station_left_100,order.siteName) VoiceNotice.showNotice(string) broadcastList["${siteId}$ending100Key"] = true @@ -947,8 +1021,29 @@ object CharterPassengerModel { } } - fun cleanbroadcastListInfo(){ + private fun isSuccess(requestSuccessSign: String) = + broadcastList[requestSuccessSign] == null || broadcastList[requestSuccessSign] == false + + fun cleanbroadcastListInfo(checkSite: SiteInfoResponse.SiteInfo?) { + switchLine5minWait = RxUtils.createSubscribe(5 * 60 * 1000) { + CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "5分钟倒计时可以选择线路了") + } + newCheckedSite = checkSite + cleanRoutePoints() broadcastList.clear() + orderInfo?.let { + it.siteId = checkSite?.siteId + it.wgs84Lon = checkSite?.Wgs84Lon + it.wgs84Lat = checkSite?.Wgs84Lat + it.siteName = checkSite?.siteName + it.arriveStatus = OrderInfoResponse.ARRIVING + } + // 到站结束自驾 + CallerAutoPilotControlManager.cancelAutoPilot() + // 停止路距计算 + endCalculateDistanceLoop() + // 到站置距离位0 + invokeStationDistanceListener(-1, -1) } fun leaveStation() { @@ -970,7 +1065,7 @@ object CharterPassengerModel { */ fun startAutopilot() { if (!OCHAdasAbilityManager.getInstance().autopilotAbilityStatus) { - ToastUtils.showLong( + ToastCharterUtils.showLong( OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + ", 请稍候重试" ) @@ -978,16 +1073,17 @@ object CharterPassengerModel { } orderInfo?.let { if(it.arriveStatus==OrderInfoResponse.ARRIVED){ - ToastUtils.showLong("已到达目的地请重新选择线路") + ToastCharterUtils.showLong("已到达目的地请重新选择线路") return } val parameters = initAutopilotControlParameters() if (null == parameters) { - ToastUtils.showShort("请选择站点") + ToastCharterUtils.showShort("请选择站点") CallerLogger.e(SceneConstant.M_BUS + TAG, "行程日志-AutopilotControlParameters is empty.") return } - ToastUtils.showShort("启动自动驾驶中") + ToastCharterUtils.showShort("启动自动驾驶中") + cleanRoutePoints() startAutoPilot(parameters) CallerLogger.d( SceneConstant.M_BUS + TAG, diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerModelLoopManager.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerModelLoopManager.kt index 73cf0172f0..a0b3b6a44f 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerModelLoopManager.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerModelLoopManager.kt @@ -69,7 +69,7 @@ object BusPassengerModelLoopManager { if (it % loopInfo.interval == 0L) { try { loopInfo.function.invoke() - CallerLogger.d(TAG, "${aLong}正在执行方法${tag}") + CallerLogger.d(TAG, "${aLong}对象${loopInfo}正在执行方法${tag}") }catch (e:Throwable){ e.printStackTrace() CallerLogger.e(TAG,"$tag:--$e") diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerServiceManager.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerServiceManager.kt index b0480f4ab7..ace0ad5d86 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerServiceManager.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/net/BusPassengerServiceManager.kt @@ -4,10 +4,10 @@ import android.content.Context import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager import com.mogo.eagle.core.network.MoGoRetrofitFactory -import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.bus.passenger.bean.request.ArriveDestRequest import com.mogo.och.bus.passenger.bean.request.EndOrderRequest import com.mogo.och.bus.passenger.bean.response.* +import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.biz.network.OchCommonSubscribeImpl @@ -40,7 +40,7 @@ object BusPassengerServiceManager { private fun beforeNet():Boolean{ if (draiverSn.isBlank()) { - ToastUtils.showShort("已断开司机屏连接、请联系安全员") + ToastCharterUtils.showShort("已断开司机屏连接、请联系安全员") return true } return false diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt index e9ca8eaf54..6222e01367 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt @@ -12,7 +12,7 @@ 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.mogo.logger.scene.SceneConstant.Companion.M_BUS_P import com.mogo.eagle.core.utilcode.util.GsonUtils -import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.och.bus.passenger.bean.LoopInfo import com.mogo.och.bus.passenger.bean.event.EventLineSites import com.mogo.och.bus.passenger.bean.response.LineInfoListResponse @@ -30,7 +30,7 @@ import com.mogo.och.common.module.bean.dpmsg.DPMsgType import com.mogo.och.common.module.bean.dpmsg.LineSite import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.network.OchCommonServiceCallback -import com.mogo.och.common.module.manager.OCHPlanningStopSideStatusManager +import com.mogo.och.common.module.manager.StopSideStatusManager import com.mogo.och.common.module.utils.RxUtils import io.reactivex.disposables.Disposable import org.greenrobot.eventbus.EventBus @@ -66,9 +66,14 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) : super.onCreate(owner) CharterPassengerModel.setStatusChangeListener(TAG,this) CallerTelematicListenerManager.addListener(TAG, msgReceived) - val currentOrderStatus = CharterPassengerModel.getCurrentOrderStatus() - if(currentOrderStatus==OrderStatusEnum.OrderNoLine||currentOrderStatus==OrderStatusEnum.OrdersWithLine) { + onStatusChange(currentOrderStatus) + extracted() + } + + private fun extracted() { + val currentOrderStatus = CharterPassengerModel.getCurrentOrderStatus() + if (currentOrderStatus == OrderStatusEnum.OrderNoLine || currentOrderStatus == OrderStatusEnum.OrdersWithLine) { val hasSetLineAndSite = CharterPassengerModel.hasSetLineAndSite() if (hasSetLineAndSite != null) {// 已经设置了线路和站点 checkLine = hasSetLineAndSite.first @@ -140,28 +145,42 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) : } override fun onFail(code: Int, msg: String?) { - ToastUtils.showShort("查询站点失败") + ToastCharterUtils.showShort("查询站点失败") + mView?.setVisableByTrun(showNetError = true) + } + + override fun onError() { + super.onError() + ToastCharterUtils.showShort("查询站点失败") + mView?.setVisableByTrun(showNetError = true) } }) } private fun queryLineList() { + mView?.setVisableByTrun(showLoading = true) BusPassengerServiceManager.queryLineList(context, object : OchCommonServiceCallback { override fun onSuccess(data: LineInfoListResponse?) { if (data?.data == null) return + mView?.setVisableByTrun(showBiz = true) mView?.lineAdapterSetData(data.data,checkLine) } override fun onFail(code: Int, msg: String) { - ToastUtils.showShort("查询线路失败") + ToastCharterUtils.showShort("查询线路失败") + mView?.setVisableByTrun(showNetError = true) + } + + override fun onError() { + super.onError() + mView?.setVisableByTrun(showNetError = true) } }) } override fun onResume(owner: LifecycleOwner) { super.onResume(owner) - mView?.setViewByOrderStatus(CharterPassengerModel.getCurrentOrderStatus()) } override fun onDestroy(owner: LifecycleOwner) { @@ -192,7 +211,7 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) : ) as ChangeDestMsg CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "接受数据:切换站点${msg}") if (msg.isConfirmed) { - ToastUtils.showShort("站点确定") + ToastCharterUtils.showShort("站点确定") mView?.setEnableSiteStatus(true) checkLine = tempCheckLine checkSite = tempCheckSite @@ -202,13 +221,10 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) : mView?.lineAdapterSubmit(it) } mView?.hideDataDriverAgree() - CharterPassengerModel.switchLine5minWait = RxUtils.createSubscribe(5 * 60 * 1000) { - CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "5分钟倒计时可以选择线路了") - } + CharterPassengerModel.cleanbroadcastListInfo(checkSite) CharterPassengerModel.queryOrder() - CharterPassengerModel.cleanbroadcastListInfo() } else { - ToastUtils.showShort("司机端拒绝请重新选择") + ToastCharterUtils.showShort("司机端拒绝请重新选择") mView?.hideDataDriverRefuse() } RxUtils.disposeSubscribe(subscribeSelectSite) @@ -221,7 +237,7 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) : fun changeSites(siteList: MutableList){ if (!CallerTelematicManager.getClientConnStatus()) { - ToastUtils.showLong("乘客屏无法连接司机屏请联系安全员") + ToastCharterUtils.showLong("乘客屏无法连接司机屏请联系安全员") return } val sentDataSite: MutableList = mutableListOf() @@ -259,13 +275,13 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) : RxUtils.disposeSubscribe(subscribeSelectSite) subscribeSelectSite = RxUtils.createSubscribe(120_000){ - ToastUtils.showShort("请联系安全员确认") + ToastCharterUtils.showShort("请联系安全员确认") mView?.hideDataDriverRefuse() } } private fun checkServerStatus() { if (!CallerTelematicManager.getClientConnStatus()) { - ToastUtils.showShort("断开和司机端连接、请联系安全员") + ToastCharterUtils.showShort("断开和司机端连接、请联系安全员") BusPassengerModelLoopManager.removeLoopFunction(TAGLINELOOP) mView?.hideDataDriverRefuse() CallerLogger.d(SceneConstant.M_BUS_P + TAG, "endAni666") @@ -273,15 +289,26 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) : } override fun onStatusChange(currentStatus: OrderStatusEnum) { - mView?.setViewByOrderStatus(currentStatus) + UiThreadHandler.post { + when (currentStatus) { + OrderStatusEnum.OrderNoLine -> { + mView?.setVisableByTrun(showBiz = true) + extracted() + } + OrderStatusEnum.OrdersWithLine ->{ + mView?.setVisableByTrun(showBiz = true) + } + else ->{ + mView?.setVisableByTrun(showNorOrder = true) + } + } + } } fun canSwitchLine():Boolean { val gnssSpeed = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().gnssSpeed if (gnssSpeed < 0.5) { - // TODO: 自驾中 需要 靠边停车中、到站 - // TODO: 没有自驾中 需要 靠边停车中、到站 when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 return true @@ -291,24 +318,24 @@ class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) : } IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { // 自动驾驶中 - when (OCHPlanningStopSideStatusManager.stopSiteStatus) { - OCHPlanningStopSideStatusManager.Status.EndingSuccess -> { + when (StopSideStatusManager.stopSiteStatus) { + StopSideStatusManager.Status.EndingSuccess -> { return true } else ->{ - ToastUtils.showShort("自动驾驶中无法切换线路") + ToastCharterUtils.showShort("自动驾驶中无法切换线路") return false } } } IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> { - ToastUtils.showShort("因车辆正在平行驾驶中无法切换线路") + ToastCharterUtils.showShort("因车辆正在平行驾驶中无法切换线路") return false } else -> {} } } else { - ToastUtils.showShort("请停车后再修改目的地~") + ToastCharterUtils.showShort("请停车后再修改目的地~") return false } return true diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt index 0cc96db153..34f47d9982 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt @@ -4,15 +4,14 @@ import androidx.lifecycle.LifecycleOwner import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager 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.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.M1SoftFragment +import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorCallback import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager 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.LightStatus -import com.mogo.och.common.module.voice.VoiceNotice import io.reactivex.disposables.Disposable class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : @@ -146,7 +145,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : LightAirconditionDoorStatusManager.airconditionStatus.windSpeed!=windSpeedCmd&& LightAirconditionDoorStatusManager.airconditionStatus.temperature!=temperatureCmd&& LightAirconditionDoorStatusManager.airconditionStatus.pattert!=modeCmd) { - ToastUtils.showShort("控制系统繁忙,请稍后再试") + ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") } } } @@ -156,7 +155,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : disposeSubscribe(airconditionDisposable) airconditionDisposable = createSubscribe(10000){ if (LightAirconditionDoorStatusManager.airconditionStatus.isOpen) { - ToastUtils.showShort("控制系统繁忙,请稍后再试") + ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") } } } @@ -170,7 +169,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : heaterDisposable = createSubscribe(10000){ if (!LightAirconditionDoorStatusManager.heaterStatue.isOpen&& LightAirconditionDoorStatusManager.heaterStatue.windSpeed!=windSpeedCmd) { - ToastUtils.showShort("暖风机操作未生效,请稍后重试吧~") + ToastCharterUtils.showShort("暖风机操作未生效,请稍后重试吧~") } } } @@ -181,7 +180,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : disposeSubscribe(heaterDisposable) heaterDisposable = createSubscribe(10000){ if (LightAirconditionDoorStatusManager.heaterStatue.isOpen) { - ToastUtils.showShort("暖风机操作未生效,请稍后重试吧~")//还是开着的 + ToastCharterUtils.showShort("暖风机操作未生效,请稍后重试吧~")//还是开着的 } } } @@ -193,14 +192,14 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(1) subscribeLightTop1 = createSubscribe{ if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) { - ToastUtils.showShort("控制系统繁忙,请稍后再试") + ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") } } }else{ CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(2) subscribeLightTop1 = createSubscribe{ if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) { - ToastUtils.showShort("控制系统繁忙,请稍后再试") + ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") } } } @@ -212,14 +211,14 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(1) subscribeLightTop2 = createSubscribe{ if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) { - ToastUtils.showShort("控制系统繁忙,请稍后再试") + ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") } } }else{ CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(2) subscribeLightTop2 = createSubscribe{ if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) { - ToastUtils.showShort("控制系统繁忙,请稍后再试") + ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") } } } @@ -231,14 +230,14 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(1) subscribeLightAtmosphere = createSubscribe{ if (!LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) { - ToastUtils.showShort("控制系统繁忙,请稍后再试") + ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") } } } else { CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(2) subscribeLightAtmosphere = createSubscribe{ if (LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) { - ToastUtils.showShort("控制系统繁忙,请稍后再试") + ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") } } } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt index f72bd59518..be25f6b913 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt @@ -17,7 +17,6 @@ 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.scene.SceneConstant.Companion.M_BUS_P import com.mogo.eagle.core.utilcode.util.SharedPrefs -import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.bean.response.LineInfoResponse @@ -32,10 +31,11 @@ import com.mogo.och.bus.passenger.model.IOrderStatusChangeListener import com.mogo.och.bus.passenger.model.OrderStatusEnum import com.mogo.och.bus.passenger.receive.DriverMessage import com.mogo.och.bus.passenger.ui.MainFragment +import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.och.bus.passenger.view.MakerWithSiteName import com.mogo.och.bus.passenger.view.MakerWithSiteNamewithCheck import com.mogo.och.common.module.biz.network.OchCommonServiceCallback -import com.mogo.och.common.module.manager.OCHPlanningStopSideStatusManager +import com.mogo.och.common.module.manager.StopSideStatusManager import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorCallback import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil import com.mogo.och.common.module.utils.DateTimeUtil @@ -48,7 +48,7 @@ import kotlin.math.ceil class BusPassengerPresenter(view: MainFragment?) : BusBasePassengerFunctionDevicePresenter(view), IDistanceCallback, IOrderChangeCallback, IOrderStatusChangeListener, - OCHPlanningStopSideStatusManager.OCHPlanningActionsCallback, LightAirconditionDoorCallback, IBusPassengerControllerStatusCallback { + StopSideStatusManager.OCHPlanningActionsCallback, LightAirconditionDoorCallback, IBusPassengerControllerStatusCallback { private val lindIdAndView = ConcurrentHashMap() @@ -66,7 +66,7 @@ class BusPassengerPresenter(view: MainFragment?) : CharterPassengerModel.setCarTypeChangeListener(this) CharterPassengerModel.setStatusChangeListener(TAG, this) CallerTelematicListenerManager.addListener(TAG, DriverMessage) - OCHPlanningStopSideStatusManager.addListener(TAG, this) + StopSideStatusManager.addListener(TAG, this) setCarChangeListener(R.raw.m1) } @@ -76,7 +76,7 @@ class BusPassengerPresenter(view: MainFragment?) : CharterPassengerModel.setStationDistanceListener(TAG, null) CharterPassengerModel.setCarTypeChangeListener(null) CallerTelematicListenerManager.removeListener(TAG) - OCHPlanningStopSideStatusManager.removeListener(TAG) + StopSideStatusManager.removeListener(TAG) } override fun onCarLocationChanged(location: MogoLocation?) { @@ -123,7 +123,7 @@ class BusPassengerPresenter(view: MainFragment?) : } } val time = ceil(timeInSecond / 60f).toInt() - val arriveTime = DateTimeUtil.getAfterSecondTime(time) + val arriveTime = DateTimeUtil.getAfterSecondTime(timeInSecond.toInt()) setDistanceAndTime(dis.toString(), disUnit, time.toString(), arriveTime) } @@ -152,8 +152,10 @@ class BusPassengerPresenter(view: MainFragment?) : when (currentStatus) { OrderStatusEnum.Nothing -> {} OrderStatusEnum.NoOrderUnuse -> { - mView?.closeOpenAndCloseDoor() - clearShowNoviceGuidanceSharedPrefs() + UiThreadHandler.post { + mView?.closeOpenAndCloseDoor() + clearShowNoviceGuidanceSharedPrefs() + } } OrderStatusEnum.OrderNoLine -> { CallerOrderListenerManager.invokeOrderRemoval(); @@ -163,24 +165,25 @@ class BusPassengerPresenter(view: MainFragment?) : OrderStatusEnum.NoOrderUse -> { when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 - ToastUtils.showShort("设备未就绪请稍等,请安全员主动停止车辆") + ToastCharterUtils.showShort("设备未就绪请稍等,请安全员主动停止车辆") } IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {// - ToastUtils.showShort("因车辆正在人工驾驶中无法靠边停车,请安全员主动停止车辆") + ToastCharterUtils.showShort("因车辆正在人工驾驶中无法靠边停车,请安全员主动停止车辆") } IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { // 靠边停车 订单结束 靠边停车 CallerAutoPilotControlManager.sendPlanningCmd(1) } IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> { - ToastUtils.showShort("因车辆正在平行驾驶中无法靠边停车,请安全员主动停止车辆") + ToastCharterUtils.showShort("因车辆正在平行驾驶中无法靠边停车,请安全员主动停止车辆") } else -> {} } UiThreadHandler.post { - mView?.showOpenAndCloseDoor() - mView?.cleanEndStation() - setDistancecAndTime(-1, -1) + UiThreadHandler.post { + mView?.showOpenAndCloseDoor() + setDistancecAndTime(-1, -1) + } } } } @@ -224,33 +227,33 @@ class BusPassengerPresenter(view: MainFragment?) : } override fun onStartAutopilotFailure( - actionStatus: OCHPlanningStopSideStatusManager.Status, + actionStatus: StopSideStatusManager.Status, stopSideStatus: Boolean?, errorInfo: String? ) { UiThreadHandler.post { when (actionStatus) { - OCHPlanningStopSideStatusManager.Status.NOSTART -> { - ToastUtils.showShort(errorInfo) + StopSideStatusManager.Status.NOSTART -> { + ToastCharterUtils.showShort(errorInfo) } - OCHPlanningStopSideStatusManager.Status.START -> { + StopSideStatusManager.Status.START -> { VoiceNotice.showNotice( context.getString(R.string.m1_stop_site_zh), AIAssist.LEVEL0 ) } - OCHPlanningStopSideStatusManager.Status.DOING -> { + StopSideStatusManager.Status.DOING -> { // 正在靠边停车 } - OCHPlanningStopSideStatusManager.Status.EndingSuccess -> { - ToastUtils.showShort("靠边停车成功") + StopSideStatusManager.Status.EndingSuccess -> { + ToastCharterUtils.showShort("靠边停车成功") VoiceNotice.showNotice( context.getString(R.string.m1_stop_site_success), AIAssist.LEVEL0 ) } - OCHPlanningStopSideStatusManager.Status.EndingFaile -> { - ToastUtils.showShort("车辆系统繁忙,请稍后再试") + StopSideStatusManager.Status.EndingFaile -> { + ToastCharterUtils.showShort("车辆系统繁忙,请稍后再试") } } } @@ -259,9 +262,9 @@ class BusPassengerPresenter(view: MainFragment?) : override fun onDoorStatusCallback(isOpen: Boolean, isFirst: Boolean) { if (!isFirst) { if (isOpen) { - ToastUtils.showShort("已开启车门") + ToastCharterUtils.showShort("已开启车门") } else { - ToastUtils.showShort("已关门车门") + ToastCharterUtils.showShort("已关门车门") } } } @@ -286,7 +289,7 @@ class BusPassengerPresenter(view: MainFragment?) : } override fun onFail(code: Int, msg: String) { - ToastUtils.showShort("$code:$msg") + ToastCharterUtils.showShort("$code:$msg") } }) @@ -297,7 +300,7 @@ class BusPassengerPresenter(view: MainFragment?) : val stationsNameList: MutableList = mutableListOf() val stationIcon = BitmapFactory.decodeResource(context.resources, R.drawable.map_staton_icon) sites.forEach { - stationsList.add(SiteMarkerBean(LatLng(it.GcjLat!!,it.GcjLon!!),stationIcon,0.5f,0.5f)) + stationsList.add(SiteMarkerBean(LatLng(it.GcjLat!!,it.GcjLon!!),stationIcon,0.5f,1f)) val bitmap = getBitmap(it.siteId!!,it.siteName ?: "", it.isCheck) stationsNameList.add(SiteMarkerBean(LatLng(it.GcjLat,it.GcjLon),bitmap,0.0f,0.2f)) } @@ -347,10 +350,9 @@ class BusPassengerPresenter(view: MainFragment?) : it.wgs84Lon!!, it.wgs84Lat!! ) - setEndStationCallBack( - it.siteId, it.siteName, - coordinateConverterWgsToGcj.longitude, coordinateConverterWgsToGcj.latitude - ) + + val latLng = LatLng(coordinateConverterWgsToGcj.latitude, coordinateConverterWgsToGcj.longitude) + mView?.drawEndStation(latLng) } } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/OrderInfoPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/OrderInfoPresenter.kt index 7601664b77..3b47ae8b55 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/OrderInfoPresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/OrderInfoPresenter.kt @@ -6,7 +6,7 @@ import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager 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.util.GsonUtils -import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.och.bus.passenger.callback.ITimeCallback import com.mogo.och.bus.passenger.model.CharterPassengerModel import com.mogo.och.bus.passenger.ui.dialogfragment.fragment.OrderInfoFragment @@ -55,7 +55,7 @@ class OrderInfoPresenter(view: OrderInfoFragment?) : CharterPassengerModel.endOrder(object : OchCommonServiceCallback { override fun onSuccess(data: BaseData?) { if (null != data && 0 == data.code) { - ToastUtils.showShort("结束成功") + ToastCharterUtils.showShort("结束成功") CharterPassengerModel.setEndOrderStatus() mView?.closeDialogContaion() val msg = EndOrderMsg( @@ -70,7 +70,7 @@ class OrderInfoPresenter(view: OrderInfoFragment?) : } override fun onFail(code: Int, msg: String) { - ToastUtils.showShort("$code:$msg") + ToastCharterUtils.showShort("$code:$msg") } }) } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/receive/DriverMessage.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/receive/DriverMessage.kt index 1f4eb3cbe2..3ef66cc329 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/receive/DriverMessage.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/receive/DriverMessage.kt @@ -7,23 +7,18 @@ 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.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse import com.mogo.och.bus.passenger.model.CharterPassengerModel -import com.mogo.och.bus.passenger.net.BusPassengerModelLoopManager -import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionOrderPresenter import com.mogo.och.common.module.bean.dpmsg.* import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorManager import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager import com.mogo.och.common.module.utils.DateTimeUtil -import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.common.module.utils.SoundPoolHelper import com.mogo.och.common.module.voice.VoiceNotice -import com.mogo.tts.base.IMogoTTSCallback object DriverMessage: IReceivedMsgListener { override fun onReceivedMsg(type: Int, byteArray: ByteArray) { @@ -67,7 +62,7 @@ object DriverMessage: IReceivedMsgListener { ) as ChangeDestMsg if (msg.isConfirmed&&msg.arriveStatus== OrderInfoResponse.ARRIVED) { CallerLogger.d(SceneConstant.M_BUS_P + BaseDPMsg.TAG, "接受数据:到站${msg}") - CharterPassengerModel.arrivedDeskSuccess(msg.writtenVersion?:0,false) + CharterPassengerModel.arrivedDeskSuccess(msg.writeVersion?:0,false) } } else -> {} diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt index 1b28c5f222..5d04b2cce5 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt @@ -16,12 +16,13 @@ import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView 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.scene.SceneConstant.Companion.M_BUS_P -import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.map.uicontroller.VisualAngleMode import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.bean.event.DebugView import com.mogo.och.bus.passenger.bean.event.EventLineSites +import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse import com.mogo.och.bus.passenger.model.CharterPassengerModel import com.mogo.och.bus.passenger.presenter.BusPassengerPresenter import com.mogo.och.bus.passenger.ui.dialogfragment.DebugViewWatchDogFragment @@ -97,10 +98,10 @@ class MainFragment : if(mPresenter?.haveOrder()==true){ openSettingPage(M1ContainFragment.ORDERINFO) }else{ - ToastUtils.showShort("请确认订单") + ToastCharterUtils.showShort("请确认订单") } }else{ - ToastUtils.showShort(AbsMogoApplication.getApp().getString(R.string.m1_please_login_driver)) + ToastCharterUtils.showShort(AbsMogoApplication.getApp().getString(R.string.m1_please_login_driver)) } } bb_boorombar.setLineClickListener{ @@ -126,6 +127,28 @@ class MainFragment : debug_show_noviceGuidance.setOnClickListener { showNoviceGuidanceFragment() } + debug_change_modle.setOnClickListener { + ToastCharterUtils.showShort("因车辆正在人工驾驶中无法靠边停车,请安全员主动停止车辆") + when (HdMapBuildConfig.currentCarVrIconRes) { + R.raw.aiqinghao -> { + mPresenter?.setCarChangeListener(OrderInfoResponse.M1_FAMILY) + } + R.raw.jiatinghao -> { + mPresenter?.setCarChangeListener(OrderInfoResponse.M1_FRIENDLY) + } + R.raw.pengyouhao -> { + mPresenter?.setCarChangeListener(0) + } + else -> { + mPresenter?.setCarChangeListener(OrderInfoResponse.M1_LOVE) + } + } + + } + + debug_show_endview.setOnClickListener { + showOpenAndCloseDoor() + } } private fun openSettingPage(tab: String) { @@ -178,7 +201,7 @@ class MainFragment : fun drawEndStation(latLng: LatLng) { val listOf = listOf(latLng) - omvOverMap.drawSiteMarkers(listOf,endStation,0.5f,0.5f) + omvOverMap.drawSiteMarkers(listOf,endStation,0.5f,1f) } fun cleanEndStation(){ omvOverMap.clearSiteMarkers() @@ -238,6 +261,9 @@ class MainFragment : bpFunctionGroup?.let { bpFunctionGroup.dismissAllowingStateLoss() } + UiThreadHandler.postDelayed({ + cleanEndStation() + },2_000) } @Subscribe(threadMode = ThreadMode.MAIN) diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/OrderSiteItemAdapter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/OrderSiteItemAdapter.kt index 5090eb95e0..76413221d5 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/OrderSiteItemAdapter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/OrderSiteItemAdapter.kt @@ -8,7 +8,7 @@ import android.widget.ImageView import android.widget.TextView import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView -import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.bean.event.EventLineSites import com.mogo.och.bus.passenger.bean.response.LineInfoResponse @@ -96,9 +96,9 @@ class OrderSiteItemAdapter( checkChangeListener?.onCheckListener(tempInfo) } else { if (siteInfo.isNear) { - ToastUtils.showShort("您已在此站点附近") + ToastCharterUtils.showShort("您已在此站点附近") } else { - ToastUtils.showShort("站点已过,请选择返程路线") + ToastCharterUtils.showShort("站点已过,请选择返程路线") } } } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/RecyclerVideoAdapter.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/RecyclerVideoAdapter.java index 18ed099f60..8fac0b6982 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/RecyclerVideoAdapter.java +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/adapter/RecyclerVideoAdapter.java @@ -10,7 +10,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; -import com.mogo.eagle.core.utilcode.util.ToastUtils; +import com.mogo.och.bus.passenger.utils.ToastCharterUtils; import com.mogo.och.bus.passenger.R; import com.mogo.och.bus.passenger.bean.TaxiPassengerVideoPlay; import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack; @@ -102,12 +102,12 @@ public class RecyclerVideoAdapter extends RecyclerView.Adapter - val orderNoSet = mutableSetOf(order) - SharedPrefs.getInstance(requireContext()).putStringSet(BusPassengerPresenter.KEY4SHOWNOVICEGUIDANCE, orderNoSet) - } + saveOrderInfo() if (m1_novice_guidance_complier_tts) { val m1NoviceGuidanceStopSiteTts = AbsMogoApplication.getApp().getString(R.string.m1_novice_guidance_complier_tts) @@ -145,8 +141,18 @@ class NoviceGuidanceFragment : } + private fun saveOrderInfo() { + val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo() + currentOrderInfo?.orderNo?.let { order -> + val orderNoSet = mutableSetOf(order) + SharedPrefs.getInstance(requireContext()) + .putStringSet(BusPassengerPresenter.KEY4SHOWNOVICEGUIDANCE, orderNoSet) + } + } + override fun onClick(v: View?) { dismissAllowingStateLoss() + saveOrderInfo() } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1OrderLineFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1OrderLineFragment.kt index 140eb2ef76..54a1b26ed8 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1OrderLineFragment.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1OrderLineFragment.kt @@ -1,15 +1,17 @@ package com.mogo.och.bus.passenger.ui.dialogfragment.fragment +import android.animation.ObjectAnimator import android.graphics.drawable.AnimationDrawable import android.os.Bundle import android.view.View +import android.view.animation.LinearInterpolator import androidx.recyclerview.widget.LinearLayoutManager import com.elegant.utils.UiThreadHandler import com.mogo.commons.mvp.MvpFragment import com.mogo.eagle.core.utilcode.kotlin.onClick 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.ToastUtils +import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.bean.response.LineInfoResponse import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse @@ -23,6 +25,7 @@ import com.mogo.och.bus.passenger.view.BottomDecoration import com.mogo.och.common.module.utils.RxUtils import io.reactivex.disposables.Disposable import kotlinx.android.synthetic.main.m1_order_fragment.* +import kotlinx.android.synthetic.main.m1_order_loading.iv_loading_wait_ent import me.jessyan.autosize.utils.AutoSizeUtils /** @@ -44,6 +47,14 @@ class M1OrderLineFragment : private var subscribeDirverAgree: Disposable? = null private var subscribeDirverRefuse: Disposable? = null + private val loadingAni = + ObjectAnimator.ofFloat(iv_loading_wait_ent, "rotation", 0f, 90f, 180f, 270f, 360f) + .apply { + repeatCount = -1 + interpolator = LinearInterpolator() + duration = 1000 + } + override fun getLayoutId(): Int { return R.layout.m1_order_fragment @@ -57,6 +68,7 @@ class M1OrderLineFragment : CallerLogger.d(SceneConstant.M_BUS_P + TAG, "initViews") lineAdapter = OrderLineItemAdapter(requireContext(), lineList) siteAdapter = OrderSiteItemAdapter(requireContext(), siteList) + loadingAni.target = iv_loading_wait_ent rlv_line_list.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) rlv_line_list.addItemDecoration( @@ -107,7 +119,7 @@ class M1OrderLineFragment : tv_site_submit.onClick { CharterPassengerModel.switchLine5minWait?.let { if (!it.isDisposed) { - ToastUtils.showShort("选择线路后5分钟内不可用选") + ToastCharterUtils.showShort("选择线路后5分钟内不可用选") return@onClick } } @@ -122,17 +134,19 @@ class M1OrderLineFragment : */ fun setEnableSiteStatus(cancleAndSubmit: Boolean) { if (cancleAndSubmit) { - g_side_cancle_submit_group.visibility = View.VISIBLE + g_side_cancle_submit_group?.visibility = View.VISIBLE } else { - g_side_cancle_submit_group.visibility = View.GONE + g_side_cancle_submit_group?.visibility = View.GONE } } fun hideDataWaitDriverMsg() { - g_lines_sites_data.visibility = View.GONE - g_loading_group.visibility = View.VISIBLE - val animationDrawable = iv_loading_wait_driver.drawable as AnimationDrawable - animationDrawable.start() + g_lines_sites_data?.visibility = View.GONE + g_loading_group?.visibility = View.VISIBLE + iv_loading_wait_driver?.let { + val animationDrawable = it.drawable as AnimationDrawable + animationDrawable.start() + } } fun showSelectData() { @@ -145,41 +159,63 @@ class M1OrderLineFragment : } fun hideDataDriverAgree(){ - group_driver_agrenn_line.visibility = View.VISIBLE - aciv_driver_refuse_group.visibility = View.GONE - g_loading_group.visibility = View.GONE - g_lines_sites_data.visibility = View.GONE - subscribeDirverAgree = RxUtils.createSubscribe(3_000) { - dismiss?.closeDialog() + group_driver_agrenn_line?.visibility = View.VISIBLE + aciv_driver_refuse_group?.visibility = View.GONE + g_loading_group?.visibility = View.GONE + g_lines_sites_data?.let { + it.visibility = View.GONE + subscribeDirverAgree = RxUtils.createSubscribe(3_000) { + dismiss?.closeDialog() + } } } fun hideDataDriverRefuse(){ - group_driver_agrenn_line.visibility = View.GONE - aciv_driver_refuse_group.visibility = View.VISIBLE - g_loading_group.visibility = View.GONE - g_lines_sites_data.visibility = View.GONE - subscribeDirverRefuse = RxUtils.createSubscribe(3_000) { - showSelectData() + group_driver_agrenn_line?.visibility = View.GONE + aciv_driver_refuse_group?.visibility = View.VISIBLE + g_loading_group?.visibility = View.GONE + g_lines_sites_data?.let { + it.visibility = View.GONE + subscribeDirverRefuse = RxUtils.createSubscribe(3_000) { + showSelectData() + } } } - - fun setViewByOrderStatus(currentStatus: OrderStatusEnum) { - when (currentStatus) { - OrderStatusEnum.NoOrderUnuse -> { - // 无订单页面 - m1_order_noorder.visibility = View.VISIBLE - lsv_line_site.visibility = View.GONE - } - OrderStatusEnum.OrderNoLine -> { - // 选择线路页面 - m1_order_noorder.visibility = View.GONE - lsv_line_site.visibility = View.VISIBLE - } - OrderStatusEnum.OrdersWithLine -> { - // 选择线路页面 - m1_order_noorder.visibility = View.GONE - lsv_line_site.visibility = View.VISIBLE + fun setVisableByTrun( + showBiz: Boolean = false, + showNetError: Boolean = false, + showNorOrder: Boolean = false, + showLoading: Boolean = false + ) { + if(showBiz){ + // 选择线路页面 + m1_order_noorder?.visibility = View.GONE + m1_order_neterror?.visibility = View.GONE + lsv_line_site?.visibility = View.VISIBLE + m1_order_loading?.visibility = View.GONE + return + } + if(showNetError){ + m1_order_noorder?.visibility = View.GONE + m1_order_neterror?.visibility = View.VISIBLE + lsv_line_site?.visibility = View.GONE + m1_order_loading?.visibility = View.GONE + return + } + if(showNorOrder){ + m1_order_noorder?.visibility = View.VISIBLE + m1_order_neterror?.visibility = View.GONE + lsv_line_site?.visibility = View.GONE + m1_order_loading?.visibility = View.GONE + return + } + if(showLoading){ + m1_order_noorder?.visibility = View.GONE + m1_order_neterror?.visibility = View.GONE + lsv_line_site?.visibility = View.GONE + m1_order_loading?.visibility = View.VISIBLE + if (!loadingAni.isRunning) { + loadingAni.start() } } } @@ -196,7 +232,7 @@ class M1OrderLineFragment : override fun onDestroyView() { super.onDestroyView() - //loadingAni.cancel() + loadingAni.cancel() CallerLogger.d(SceneConstant.M_BUS_P + TAG, "onDestroyView") RxUtils.disposeSubscribe(subscribeDirverAgree) RxUtils.disposeSubscribe(subscribeDirverRefuse) diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1SoftFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1SoftFragment.kt index 3abf9be383..721d9da4f1 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1SoftFragment.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1SoftFragment.kt @@ -21,7 +21,7 @@ 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.mogo.storage.SharedPrefsMgr import com.mogo.eagle.core.utilcode.util.ClickUtils -import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.bean.Temperature @@ -550,22 +550,22 @@ class M1SoftFragment : if (leftLight) { tv_light_top_01.text = requireContext().getString(R.string.bus_p_m1_close_light1) tv_light_top_01.isChecked = true - if(!isFirst) ToastUtils.showShort("打开顶灯1") + if(!isFirst) ToastCharterUtils.showShort("打开顶灯1") } else { tv_light_top_01.text = requireContext().getString(R.string.bus_p_m1_open_light1) tv_light_top_01.isChecked = false - if(!isFirst) ToastUtils.showShort("关闭顶灯1") + if(!isFirst) ToastCharterUtils.showShort("关闭顶灯1") } } fun setLightTop2View(rightLight: Boolean, isFirst: Boolean){ if (rightLight) { tv_light_top_02.text = requireContext().getString(R.string.bus_p_m1_close_light2) tv_light_top_02.isChecked = true - if(!isFirst) ToastUtils.showShort("打开顶灯2") + if(!isFirst) ToastCharterUtils.showShort("打开顶灯2") } else { tv_light_top_02.text = requireContext().getString(R.string.bus_p_m1_open_light2) tv_light_top_02.isChecked = false - if(!isFirst) ToastUtils.showShort("关闭顶灯2") + if(!isFirst) ToastCharterUtils.showShort("关闭顶灯2") } } fun setLightAtmosphereView(atmosphereLight: Boolean, isFirst: Boolean){ @@ -573,12 +573,12 @@ class M1SoftFragment : tv_light_atmosphere.text = requireContext().getString(R.string.bus_p_m1_close_atmosphere) tv_light_atmosphere.isChecked = true iv_bottom_light_setting.setImageResource(R.drawable.bus_p_function_atmosphere_select) - if(!isFirst) ToastUtils.showShort("打开氛围灯") + if(!isFirst) ToastCharterUtils.showShort("打开氛围灯") } else { tv_light_atmosphere.text = requireContext().getString(R.string.bus_p_m1_open_atmosphere) tv_light_atmosphere.isChecked = false iv_bottom_light_setting.setImageResource(R.drawable.bus_p_function_atmosphere_nor) - if(!isFirst) ToastUtils.showShort("关闭氛围灯") + if(!isFirst) ToastCharterUtils.showShort("关闭氛围灯") } } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomClickView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomClickView.kt index 23d4abd1a8..46d541ca12 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomClickView.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomClickView.kt @@ -7,15 +7,9 @@ import android.view.LayoutInflater import android.view.MotionEvent import android.view.View import androidx.constraintlayout.widget.ConstraintLayout -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.CallerAutoPilotStatusListenerManager 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.ToastUtils import com.mogo.och.bus.passenger.R -import com.mogo.och.common.module.utils.SoundPoolHelper import kotlinx.android.synthetic.main.m1_bottom_stop_site.view.* open class BottomClickView @JvmOverloads constructor( diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomOrderInfoView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomOrderInfoView.kt index ca672690f7..d444f3c354 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomOrderInfoView.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/BottomOrderInfoView.kt @@ -7,6 +7,7 @@ import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.commons.AbsMogoApplication 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.UiThreadHandler import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.callback.ITimeCallback import com.mogo.och.bus.passenger.model.CharterPassengerModel @@ -14,6 +15,8 @@ import com.mogo.och.bus.passenger.model.IOrderStatusChangeListener import com.mogo.och.bus.passenger.model.OrderStatusEnum import com.mogo.och.common.module.utils.DateTimeUtil import kotlinx.android.synthetic.main.m1_bottom_orderinfo.view.* +import java.util.UUID +import kotlin.random.Random open class BottomOrderInfoView @JvmOverloads constructor( context: Context, @@ -32,6 +35,7 @@ open class BottomOrderInfoView @JvmOverloads constructor( } catch (e: Exception) { e.printStackTrace() } + tag = UUID.randomUUID().toString() } fun setCheck(isCheck:Boolean){ @@ -50,16 +54,16 @@ open class BottomOrderInfoView @JvmOverloads constructor( override fun onAttachedToWindow() { super.onAttachedToWindow() - CallerLogger.d(SceneConstant.M_BUS_P + TAG,"onAttachedToWindow$this") - CharterPassengerModel.setOrderLeftTimeListeners(this.toString(),this) - CharterPassengerModel.setStatusChangeListener(this.toString(),this) + CallerLogger.d(SceneConstant.M_BUS_P + TAG,"onAttachedToWindow$tag") + CharterPassengerModel.setOrderLeftTimeListeners(tag.toString(),this) + CharterPassengerModel.setStatusChangeListener(tag.toString(),this) } override fun onDetachedFromWindow() { super.onDetachedFromWindow() - CallerLogger.d(SceneConstant.M_BUS_P + TAG,"onDetachedFromWindow$this") - CharterPassengerModel.setOrderLeftTimeListeners(this.toString(),null) - CharterPassengerModel.setStatusChangeListener(this.toString(),null) + CallerLogger.d(SceneConstant.M_BUS_P + TAG,"onDetachedFromWindow$tag") + CharterPassengerModel.setOrderLeftTimeListeners(tag.toString(),null) + CharterPassengerModel.setStatusChangeListener(tag.toString(),null) } private fun setViewByOrderStatus(currentOrderStatus: OrderStatusEnum) { @@ -84,10 +88,15 @@ open class BottomOrderInfoView @JvmOverloads constructor( val arriveTime = DateTimeUtil.second2Time(timeInSecond) actv_order_end_time.text = arriveTime } - setViewByOrderStatus(CharterPassengerModel.getCurrentOrderStatus()) + UiThreadHandler.post { + setViewByOrderStatus(CharterPassengerModel.getCurrentOrderStatus()) + } } override fun onStatusChange(currentStatus: OrderStatusEnum) { - setViewByOrderStatus(currentStatus) + UiThreadHandler.post { + setViewByOrderStatus(currentStatus) + } + } } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/CloseDoorView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/CloseDoorView.kt index c52feaf46c..437beb5442 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/CloseDoorView.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/CloseDoorView.kt @@ -2,18 +2,11 @@ package com.mogo.och.bus.passenger.ui.view.bottom.impl import android.content.Context import android.util.AttributeSet -import androidx.appcompat.widget.AppCompatTextView -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager -import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager import com.mogo.eagle.core.utilcode.util.ActivityUtils -import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.ui.view.bottom.BottomClickView import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorManager -import com.mogo.och.common.module.utils.RxUtils -import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager import com.mogo.och.common.module.utils.SoundPoolHelper -import io.reactivex.disposables.Disposable class CloseDoorView @JvmOverloads constructor( context: Context, diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/GoViewWithArrive.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/GoViewWithArrive.kt index fde8730cdb..a7ad0f56cd 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/GoViewWithArrive.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/GoViewWithArrive.kt @@ -15,7 +15,8 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener 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.util.ActivityUtils -import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.eagle.core.utilcode.util.ClickUtils +import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.callback.ICharterPassengerAutoStatusChangeCallback import com.mogo.och.bus.passenger.model.CharterPassengerModel @@ -65,6 +66,10 @@ class GoViewWithArrive @JvmOverloads constructor( } }) setOnClickListener { + if (ClickUtils.isClickTooFrequent(this,3000)) { + ToastCharterUtils.showShort("请稍后点击") + return@setOnClickListener + } startGo() applyClickListener?.onApplyClick() } @@ -74,12 +79,12 @@ class GoViewWithArrive @JvmOverloads constructor( if (LightAirconditionDoorStatusManager.doorStatus.isOpen) { val string = AbsMogoApplication.getApp().getString(R.string.m1_close_door_and_startauto) - ToastUtils.showShort(string) + ToastCharterUtils.showShort(string) return } when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 - ToastUtils.showShort("设备未就绪请稍等") + ToastCharterUtils.showShort("设备未就绪请稍等") } IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {// onceRegisterAutoStatus() @@ -90,7 +95,7 @@ class GoViewWithArrive @JvmOverloads constructor( CharterPassengerModel.leaveStation() } IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> { - ToastUtils.showShort("因车辆正在平行驾驶中无法靠边停车,请稍后再试") + ToastCharterUtils.showShort("因车辆正在平行驾驶中无法靠边停车,请稍后再试") } else -> {} } @@ -119,7 +124,7 @@ class GoViewWithArrive @JvmOverloads constructor( startAutoTimeOut = RxUtils.createSubscribe(20_000) { if (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { val string = AbsMogoApplication.getApp().getString(R.string.m1_start_auto_fail) - ToastUtils.showLong(string) + ToastCharterUtils.showLong(string) } CharterPassengerModel.setAutoStatusCallback(TAG, null) } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/StopSiteView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/StopSiteView.kt index 9469c4035e..444c35b3da 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/StopSiteView.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/StopSiteView.kt @@ -1,19 +1,12 @@ package com.mogo.och.bus.passenger.ui.view.bottom.impl -import android.annotation.SuppressLint import android.content.Context import android.util.AttributeSet -import android.view.LayoutInflater -import android.view.MotionEvent -import android.view.View -import androidx.constraintlayout.widget.ConstraintLayout 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.CallerAutoPilotStatusListenerManager -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.ToastUtils +import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.ui.view.bottom.BottomClickView import com.mogo.och.common.module.utils.SoundPoolHelper @@ -38,17 +31,17 @@ class StopSiteView @JvmOverloads constructor( private fun stopSite(){ when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 - ToastUtils.showShort("设备未就绪请稍等,请稍后再试") + ToastCharterUtils.showShort("设备未就绪请稍等,请稍后再试") } IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {// - ToastUtils.showShort("因车辆正在人工驾驶中无法靠边停车,请稍后再试") + ToastCharterUtils.showShort("因车辆正在人工驾驶中无法靠边停车,请稍后再试") } IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { // 靠边停车 CallerAutoPilotControlManager.sendPlanningCmd(1) } IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> { - ToastUtils.showShort("因车辆正在平行驾驶中无法靠边停车,请稍后再试") + ToastCharterUtils.showShort("因车辆正在平行驾驶中无法靠边停车,请稍后再试") } else -> {} } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/utils/ToastCharterUtils.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/utils/ToastCharterUtils.kt new file mode 100644 index 0000000000..93f17a75f9 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/utils/ToastCharterUtils.kt @@ -0,0 +1,46 @@ +package com.mogo.och.bus.passenger.utils + +import android.view.View +import com.mogo.eagle.core.utilcode.util.ActivityUtils +import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.bus.passenger.view.ToastCharterView +import me.jessyan.autosize.utils.AutoSizeUtils + +object ToastCharterUtils { + fun showTaost(toastText:String){ + val context = ActivityUtils.getTopActivity() + val marker = ToastCharterView(context) + marker.setText(toastText) + marker.measure( + View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 145f), View.MeasureSpec.UNSPECIFIED), + View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 34f), View.MeasureSpec.EXACTLY) + ) + marker.layout(0, 0, marker.measuredWidth, marker.measuredHeight) + ToastUtils.showShort(marker) + } + fun showLong(toastText:String){ + val context = ActivityUtils.getTopActivity() + val marker = ToastCharterView(context) + marker.setText(toastText) + marker.measure( + View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 145f), View.MeasureSpec.UNSPECIFIED), + View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 34f), View.MeasureSpec.EXACTLY) + ) + marker.layout(0, 0, marker.measuredWidth, marker.measuredHeight) + ToastUtils.showLong(marker) + } + + fun showShort(toastText:String?){ + toastText?.let { + val context = ActivityUtils.getTopActivity() + val marker = ToastCharterView(context) + marker.setText(toastText) + marker.measure( + View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 145f), View.MeasureSpec.UNSPECIFIED), + View.MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(context, 34f), View.MeasureSpec.EXACTLY) + ) + marker.layout(0, 0, marker.measuredWidth, marker.measuredHeight) + ToastUtils.showShort(marker) + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/ConsultVideoPlayer.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/ConsultVideoPlayer.kt index 3bbef62e5d..73c5ba7cb7 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/ConsultVideoPlayer.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/ConsultVideoPlayer.kt @@ -18,7 +18,7 @@ import androidx.appcompat.widget.AppCompatImageView import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.app.ActivityCompat import com.mogo.eagle.core.utilcode.util.TimeTransformUtils -import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.eagle.core.widget.media.video.TextureVideoViewOutlineProvider import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.utils.FullVideoUtils @@ -141,7 +141,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer { override fun setStateAndUi(state: Int) { super.setStateAndUi(state) if(state==CURRENT_STATE_PLAYING_BUFFERING_START){ - ToastUtils.showShort("加载中请稍等") + ToastCharterUtils.showShort("加载中请稍等") } } @@ -265,7 +265,7 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer { override fun onError(what: Int, extra: Int) { super.onError(what, extra) mThumbImageViewLayout?.visibility = View.VISIBLE - ToastUtils.showLong("哎呀,出错了,看看其他视频吧") + ToastCharterUtils.showLong("哎呀,出错了,看看其他视频吧") currentTime = -1 if(isIfCurrentIsFullscreen){ smalllPlayer?.clearFullscreenLayout(this) diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/ToastCharterView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/ToastCharterView.kt new file mode 100644 index 0000000000..314280bcf7 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/ToastCharterView.kt @@ -0,0 +1,27 @@ +package com.mogo.och.bus.passenger.view + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.och.bus.passenger.R +import kotlinx.android.synthetic.main.charter_p_view_toast.view.* + +class ToastCharterView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout ( + context, + attrs, + defStyleAttr +) { + + init { + LayoutInflater.from(context).inflate(R.layout.charter_p_view_toast, this, true) + } + + fun setText(siteName: String) { + tv_taost_texit.text = siteName + } +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_net_fail.png b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_net_fail.png new file mode 100644 index 0000000000..05b348e149 Binary files /dev/null and b/OCH/mogo-och-charter-passenger/src/main/res/drawable-nodpi/m1_order_net_fail.png differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_toast_shape.xml b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_toast_shape.xml new file mode 100644 index 0000000000..bfa4b479b1 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/drawable/charter_p_toast_shape.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/charter_p_view_toast.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/charter_p_view_toast.xml new file mode 100644 index 0000000000..4dc65ef199 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/charter_p_view_toast.xml @@ -0,0 +1,25 @@ + + + + + + diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_main_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_main_fragment.xml index eebd97bc98..3551248589 100644 --- a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_main_fragment.xml +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_main_fragment.xml @@ -268,10 +268,29 @@ android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content"/> + + + diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_fragment.xml index 32e9cf3a81..f5cd6e00d2 100644 --- a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_fragment.xml +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_novice_guidance_welcome_fragment.xml @@ -68,7 +68,7 @@ android:id="@+id/actv_userinfo_title" app:layout_constraintTop_toTopOf="@+id/actv_contain_order_info" app:layout_constraintStart_toStartOf="@+id/actv_contain_order_info" - android:layout_marginTop="@dimen/dp_59" + android:layout_marginTop="@dimen/dp_74" android:layout_marginStart="@dimen/dp_100" android:text="用户信息:" android:textColor="@color/bus_p_m1_20418D" @@ -81,6 +81,8 @@ app:layout_constraintTop_toBottomOf="@+id/actv_userinfo_title" app:layout_constraintStart_toStartOf="@+id/actv_userinfo_title" android:text="*** *** ***" + android:fontFamily="@font/din" + android:layout_marginTop="@dimen/dp_15" android:textColor="@color/bus_p_m1_222222" android:textSize="@dimen/dp_45" android:layout_width="wrap_content" @@ -90,7 +92,7 @@ android:id="@+id/actv_order_time_title" app:layout_constraintTop_toBottomOf="@+id/actv_userinfo" app:layout_constraintStart_toStartOf="@+id/actv_userinfo" - android:layout_marginTop="@dimen/dp_29" + android:layout_marginTop="@dimen/dp_60" android:text="用车时间:" android:textColor="@color/bus_p_m1_20418D" android:textSize="@dimen/dp_30" @@ -102,6 +104,8 @@ app:layout_constraintTop_toBottomOf="@+id/actv_order_time_title" app:layout_constraintStart_toStartOf="@+id/actv_order_time_title" android:text="9:00-18:00" + android:fontFamily="@font/din" + android:layout_marginTop="@dimen/dp_15" android:textColor="@color/bus_p_m1_222222" android:textSize="@dimen/dp_45" android:layout_width="wrap_content" @@ -113,7 +117,7 @@ app:layout_constraintStart_toStartOf="@+id/actv_contain_order_info" app:layout_constraintEnd_toEndOf="@+id/actv_contain_order_info" app:layout_constraintBottom_toBottomOf="@+id/actv_contain_order_info" - android:layout_marginBottom="@dimen/dp_81" + android:layout_marginBottom="@dimen/dp_85" android:layout_width="@dimen/dp_360" android:layout_height="@dimen/dp_80"/> @@ -126,6 +130,7 @@ app:layout_constraintBottom_toBottomOf="@+id/v_clikc_go_explore_bg" android:layout_marginEnd="@dimen/dp_10" android:text="点击开始探索" + android:textStyle="bold" android:textColor="@android:color/white" android:textSize="@dimen/dp_30" android:layout_width="wrap_content" diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_end.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_end.xml index f62bec70d3..4cd2d81173 100644 --- a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_end.xml +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_end.xml @@ -4,64 +4,72 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@drawable/m1_function_bg" + tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"> - - - - - + + android:layout_marginBottom="@dimen/dp_181" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintWidth_percent="0.53698"> + - + - + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_fragment.xml index 1e4824f86c..932725b461 100644 --- a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_fragment.xml +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_fragment.xml @@ -56,14 +56,13 @@ android:id="@+id/rv_site_list" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_marginTop="@dimen/dp_26" - /> - + android:layout_marginTop="@dimen/dp_26" /> + + android:layout_height="@dimen/dp_90" + android:background="@drawable/charter_p_selct_site_bottom_corner" + app:layout_constraintBottom_toBottomOf="parent" /> @@ -167,34 +166,34 @@ + android:textStyle="bold" + app:layout_constraintEnd_toEndOf="@+id/aciv_driver_agree_image" + app:layout_constraintStart_toStartOf="@+id/aciv_driver_agree_image" + app:layout_constraintTop_toBottomOf="@+id/aciv_driver_agree_image" /> + app:layout_constraintEnd_toEndOf="@+id/aciv_driver_agree_image" + app:layout_constraintStart_toStartOf="@+id/aciv_driver_agree_image" + app:layout_constraintTop_toBottomOf="@+id/aciv_driver_agree_title_top" /> + android:layout_height="wrap_content" + android:visibility="gone" + app:constraint_referenced_ids="aciv_driver_agree_image,aciv_driver_agree_title_top,aciv_driver_agree_title_bottom" /> @@ -211,24 +210,24 @@ + app:layout_constraintEnd_toEndOf="@+id/aciv_driver_refuse_image" + app:layout_constraintStart_toStartOf="@+id/aciv_driver_refuse_image" + app:layout_constraintTop_toBottomOf="@+id/aciv_driver_refuse_image" /> + android:layout_height="wrap_content" + android:visibility="gone" + app:constraint_referenced_ids="aciv_driver_refuse_image,aciv_driver_refuse_title" /> @@ -239,6 +238,16 @@ layout="@layout/m1_order_noorder" android:visibility="gone" /> + + + + diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_loading.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_loading.xml new file mode 100644 index 0000000000..a2c08d102a --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_loading.xml @@ -0,0 +1,38 @@ + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_net_fail.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_net_fail.xml new file mode 100644 index 0000000000..4724f5aa1d --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_order_net_fail.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/res/raw/aiqinghao.nt3d b/OCH/mogo-och-charter-passenger/src/main/res/raw/aiqinghao.nt3d index 1c77386d32..95db07b1e9 100755 Binary files a/OCH/mogo-och-charter-passenger/src/main/res/raw/aiqinghao.nt3d and b/OCH/mogo-och-charter-passenger/src/main/res/raw/aiqinghao.nt3d differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/raw/jiatinghao.nt3d b/OCH/mogo-och-charter-passenger/src/main/res/raw/jiatinghao.nt3d index 14e07ff1cc..0a8ae1ef31 100755 Binary files a/OCH/mogo-och-charter-passenger/src/main/res/raw/jiatinghao.nt3d and b/OCH/mogo-och-charter-passenger/src/main/res/raw/jiatinghao.nt3d differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/raw/m1.nt3d b/OCH/mogo-och-charter-passenger/src/main/res/raw/m1.nt3d index d0f375886a..2d51e00594 100644 Binary files a/OCH/mogo-och-charter-passenger/src/main/res/raw/m1.nt3d and b/OCH/mogo-och-charter-passenger/src/main/res/raw/m1.nt3d differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/raw/pengyouhao.nt3d b/OCH/mogo-och-charter-passenger/src/main/res/raw/pengyouhao.nt3d index c56e908166..c76eccfd5c 100755 Binary files a/OCH/mogo-och-charter-passenger/src/main/res/raw/pengyouhao.nt3d and b/OCH/mogo-och-charter-passenger/src/main/res/raw/pengyouhao.nt3d differ diff --git a/OCH/mogo-och-charter-passenger/src/main/res/values/color.xml b/OCH/mogo-och-charter-passenger/src/main/res/values/color.xml index 397230136c..ca22013238 100644 --- a/OCH/mogo-och-charter-passenger/src/main/res/values/color.xml +++ b/OCH/mogo-och-charter-passenger/src/main/res/values/color.xml @@ -46,6 +46,7 @@ #3060ABFE #0060ABFE #00EFF6FF + #B3EFF6FF #91EFF6FF #CCFFFFFF #80FFFFFF diff --git a/OCH/mogo-och-charter-passenger/src/main/res/values/strings.xml b/OCH/mogo-och-charter-passenger/src/main/res/values/strings.xml index cfe640568d..e2c3f5116a 100644 --- a/OCH/mogo-och-charter-passenger/src/main/res/values/strings.xml +++ b/OCH/mogo-och-charter-passenger/src/main/res/values/strings.xml @@ -38,7 +38,7 @@ --:-- 靠边停车 - 欢迎乘坐蘑菇车联自动驾驶小巴车,按照桌面屏幕的指引,开始探索吧! + 欢迎乘坐\'蘑菇车联\'自动驾驶小巴车,按照桌面屏幕的指引,开始探索吧! 接下来由蘑菇小助手为您\'指引方向\'! 关闭车门后,点击‘出发’按钮启动 @@ -48,7 +48,8 @@ 先关闭车门再启动吧~ 自驾系统繁忙,稍后再试试吧~ - %1$s站就要到啦! + %1$s就要到啦! + 稍后再来看看吧 diff --git a/OCH/mogo-och-charter-passenger/src/test/java/com/mogo/och/bus/passenger/ExampleUnitTest.kt b/OCH/mogo-och-charter-passenger/src/test/java/com/mogo/och/bus/passenger/ExampleUnitTest.kt index 81ae52637e..bdf18afced 100644 --- a/OCH/mogo-och-charter-passenger/src/test/java/com/mogo/och/bus/passenger/ExampleUnitTest.kt +++ b/OCH/mogo-och-charter-passenger/src/test/java/com/mogo/och/bus/passenger/ExampleUnitTest.kt @@ -5,6 +5,7 @@ import com.mogo.eagle.core.network.utils.GsonUtil import com.mogo.eagle.core.utilcode.util.CoordinateTransform import com.mogo.eagle.core.utilcode.util.CoordinateUtils import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil +import com.mogo.och.common.module.utils.DateTimeUtil import org.json.JSONException import org.json.JSONObject import org.junit.Test diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/RequestChangeDest.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/RequestChangeDest.kt index 68361127d7..8366ad32e1 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/RequestChangeDest.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/bean/RequestChangeDest.kt @@ -4,4 +4,5 @@ package com.magic.mogo.och.charter.bean * @author: wangmingjun * @date: 2023/2/24 */ -data class RequestChangeDest(var sn: String,var lineId: Int,var startSiteId: Int,var siteId: Int) +data class RequestChangeDest(var sn: String,var lineId: Int,var startSiteId: Int,var siteId: Int, + val writeVersion: Long) diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt index e4fc8d3c91..06100669c2 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt @@ -16,8 +16,10 @@ import com.magic.mogo.och.charter.manager.CharterAnalyticsManager import com.magic.mogo.och.charter.manager.CharterTrajectoryManager import com.magic.mogo.och.charter.net.DriverM1ServiceManager import com.mogo.aicloud.services.socket.IMogoOnMessageListener +import com.mogo.commons.AbsMogoApplication import com.mogo.commons.module.intent.IMogoIntentListener 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.autopilot.AutopilotControlParameters import com.mogo.eagle.core.data.map.MogoLocation @@ -29,6 +31,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.sendMsgToAllClients +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.i import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant @@ -51,6 +54,7 @@ import com.mogo.och.common.module.manager.CharterSendTripInfoManager.END_TRIP import com.mogo.och.common.module.manager.CharterSendTripInfoManager.START_TRIP import com.mogo.och.common.module.manager.OCHAdasAbilityManager import com.mogo.och.common.module.utils.* +import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.data.bean.* import io.reactivex.exceptions.UndeliverableException import io.reactivex.functions.Consumer @@ -236,6 +240,22 @@ class DriverM1Model { } }else if (msg.type == DPMsgType.TYPE_TASK_DETAILS.type){ updateToClientData() + } else if (msg.type == DPMsgType.TYPE_COMMON.type) { + val msg = GsonUtils.fromJson( + String(byteArray), + AppConnectMsg::class.java + ) as AppConnectMsg + CallerLogger.d(SceneConstant.M_BUS_P + BaseDPMsg.TAG, "收到数据:常规数据:$msg") + if (msg.isViewShow) { //消息盒子显示内容 + pushOperationalToMsgBox( + DateTimeUtil.getCurrentTimeStamp(), + msg.msg, + msg.boxType + ) + } + if(msg.isPlay){ + VoiceNotice.showNotice(msg.msg, AIAssist.LEVEL1) + } } d(SceneConstant.M_CHARTER_D,"onReceivedMsg = "+ GsonUtils.toJson(msg)) }catch (e: Exception){ @@ -275,7 +295,7 @@ class DriverM1Model { pushOperationalToMsgBox(DateTimeUtil.getCurrentTimeStamp(), obj.context) } if (list != null && list.contains(2)){ //发送乘客屏 - sendMsgToClient(DPCommonOperationMsg(obj.context)) + sendMsgToClient(AppConnectMsg(msg = obj.context)) } } @@ -462,9 +482,20 @@ class DriverM1Model { ,mCurrentOrder!!.siteName ,true ,mCurrentOrder!!.arriveStatus - ,mCurrentOrder!!.writeVersion) + ,if(mCurrentOrder!!.writeVersion == 0L){ + DateTimeUtils.getCurTimeInMillis() + }else{ + mCurrentOrder!!.writeVersion + }) } } + + currentChangeDestMsg?.writeVersion = if(mCurrentOrder!!.writeVersion == 0L){ + DateTimeUtils.getCurTimeInMillis() + }else{ + mCurrentOrder!!.writeVersion + } + sendMsgToClient(currentChangeDestMsg) } @@ -609,10 +640,11 @@ class DriverM1Model { /** * 司机端发送消息给乘客屏 */ - fun sendCommitMsgToClient(isConfirmed: Boolean) { - if (currentChangeDestMsg !== null) { + fun sendCommitMsgToClient(isConfirmed: Boolean,writeVersion: Long) { + if (currentChangeDestMsg != null) { d(SceneConstant.M_CHARTER_D + TAG, "confirmed station $isConfirmed" ) currentChangeDestMsg?.isConfirmed = isConfirmed + currentChangeDestMsg?.writeVersion = writeVersion sendMsgToClient(currentChangeDestMsg) } } @@ -773,16 +805,18 @@ class DriverM1Model { // sendCommitMsgToClient(true) // return // } + val writeVersion = DateTimeUtil.getCurrentTimeStamp() DriverM1ServiceManager.changeDest(mContext,currentChangeDestMsg!!.lineId, currentChangeDestMsg!!.startSiteId, currentChangeDestMsg!!.destSiteId, + writeVersion, object : OchCommonServiceCallback{ override fun onSuccess(data: BaseData?) { if (data != null && data.code == 0){ d(SceneConstant.M_CHARTER_D + TAG, "confirmed station .") CallerAutoPilotControlManager.cancelAutoPilot() queryCurrentServiceStatus() - sendCommitMsgToClient(true) + sendCommitMsgToClient(true,writeVersion) } } diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/DriverM1ServiceManager.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/DriverM1ServiceManager.kt index b84db79c17..dc2c462b1d 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/DriverM1ServiceManager.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/net/DriverM1ServiceManager.kt @@ -9,6 +9,7 @@ import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.biz.network.OchCommonSubscribeImpl import com.mogo.och.common.module.biz.network.interceptor.transformTry +import com.mogo.och.common.module.utils.DateTimeUtil /** * Created by pangfan on 2021/8/19 @@ -66,20 +67,21 @@ object DriverM1ServiceManager { ?.subscribe(OchCommonSubscribeImpl(context!!, callback, "checkOrderCountDown")) } - fun changeDest(context: Context?,lineId: Int,startSiteId: Int,siteId: Int, + fun changeDest(context: Context?,lineId: Int,startSiteId: Int,siteId: Int,writeVersion: Long, callback: OchCommonServiceCallback?){ mDriverM1ServiceApi.changeDest(MoGoAiCloudClientConfig.getInstance().serviceAppId, MoGoAiCloudClientConfig.getInstance().token, - RequestChangeDest(MoGoAiCloudClientConfig.getInstance().sn,lineId,startSiteId,siteId) + RequestChangeDest(MoGoAiCloudClientConfig.getInstance().sn,lineId,startSiteId,siteId, + writeVersion) )?.transformTry() ?.subscribe(OchCommonSubscribeImpl(context!!, callback, "changeDest")) } - fun arriveDest(context: Context,lindId: Long ,writtenVersion:Long + fun arriveDest(context: Context,lindId: Long ,writeVersion:Long ,callback: OchCommonServiceCallback?){ mDriverM1ServiceApi.arriveDest(MoGoAiCloudClientConfig.getInstance().serviceAppId, MoGoAiCloudClientConfig.getInstance().token, - ArriveDestRequest(MoGoAiCloudClientConfig.getInstance().sn,lindId,writtenVersion) + ArriveDestRequest(MoGoAiCloudClientConfig.getInstance().sn,lindId,writeVersion) ).transformTry() .subscribe(OchCommonSubscribeImpl(context!!, callback, "arriveDest")) } diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt index 7ee9c5fdf5..2b13464cfd 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt @@ -16,13 +16,13 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager 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.util.DateTimeUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean import com.mogo.och.common.module.biz.callback.ILoginCallback import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.OPERATION_ROAD_SIDE_TYPE -import com.mogo.och.common.module.biz.constant.LoginStatusManager import com.mogo.och.common.module.biz.constant.LoginStatusManager.isLogin -import com.mogo.och.common.module.manager.OCHPlanningStopSideStatusManager +import com.mogo.och.common.module.manager.StopSideStatusManager import com.mogo.och.common.module.utils.DateTimeUtil import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg @@ -33,7 +33,7 @@ import mogo_msg.MogoReportMsg */ class DriverM1Presenter(view: DriverM1Fragment?) : Presenter(view),ILoginCallback, DriverM1OrderCallback, ChangeDestCallback, - IMoGoAutopilotStatusListener, OCHPlanningStopSideStatusManager.OCHPlanningActionsCallback, + IMoGoAutopilotStatusListener, StopSideStatusManager.OCHPlanningActionsCallback, IDriverM1ControllerStatusCallback { private val TAG = DriverM1Presenter::class.java.name @@ -47,14 +47,14 @@ class DriverM1Presenter(view: DriverM1Fragment?) : private fun registerListener() { //2021.11.1 鹰眼架构整合,由IMoGoAutopilotStatusListener逐步替代IMogoAdasOCHCallback接口 CallerAutoPilotStatusListenerManager.addListener(TAG, this) - OCHPlanningStopSideStatusManager.addListener(TAG,this) + StopSideStatusManager.addListener(TAG,this) DriverM1Model.get().setDriverM1OrderCallback(this) DriverM1Model.get().setChangeDestCallback(this) DriverM1Model.get().setControllerStatusCallback(this) } private fun releaseListener() { - OCHPlanningStopSideStatusManager.removeListener(TAG) + StopSideStatusManager.removeListener(TAG) CallerAutoPilotStatusListenerManager.removeListener(TAG) DriverM1Model.get().setDriverM1OrderCallback(null) DriverM1Model.get().setChangeDestCallback(null) @@ -119,7 +119,7 @@ class DriverM1Presenter(view: DriverM1Fragment?) : } fun sendCommitMsgToClient(isAffirm: Boolean){ - DriverM1Model.get().sendCommitMsgToClient(isAffirm) + DriverM1Model.get().sendCommitMsgToClient(isAffirm,DateTimeUtils.getCurTimeInMillis()) } fun changeDest(){ @@ -163,15 +163,23 @@ class DriverM1Presenter(view: DriverM1Fragment?) : } override fun onStartAutopilotFailure( - actionStatus: OCHPlanningStopSideStatusManager.Status, + actionStatus: StopSideStatusManager.Status, stopSideStatus: Boolean?, errorInfo: String? ) { when (actionStatus) { - OCHPlanningStopSideStatusManager.Status.START -> { // 靠边停车 to 消息盒子 + StopSideStatusManager.Status.START -> { // 靠边停车 to 消息盒子 DriverM1Model.get().pushOperationalToMsgBox( DateTimeUtil.getCurrentTimeStamp(), - "", + "靠边停车", + OPERATION_ROAD_SIDE_TYPE + ) + } + StopSideStatusManager.Status.EndingFaile, + StopSideStatusManager.Status.NOSTART-> { + DriverM1Model.get().pushOperationalToMsgBox( + DateTimeUtil.getCurrentTimeStamp(), + "靠边停车失败", OPERATION_ROAD_SIDE_TYPE ) } diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DataBean.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DataBean.kt index 23768b223b..a8a65b3dfb 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DataBean.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/bean/dpmsg/DataBean.kt @@ -31,7 +31,7 @@ data class ChangeDestMsg( var destSiteName: String = "", var isConfirmed: Boolean = false, //司机端是否同意 var arriveStatus:Int?, //1:未到达 2:到达 - var writtenVersion:Long?, //版本标记 + var writeVersion:Long?, //版本标记 var lineSiteList: MutableList? = null ): BaseDPMsg(DPMsgType.TYPE_CHANGE_DEST.type) @@ -76,8 +76,9 @@ data class DPOrderClosedMsg( var closed: Boolean = true // true: 结束 ): BaseDPMsg(DPMsgType.TYPE_ORDER_CLOSED.type) -data class AppConnectMsg(var isViewShow: Boolean, var isPlay: Boolean, var msg: String, -): BaseDPMsg(DPMsgType.TYPE_COMMON.type) +data class AppConnectMsg( + var isViewShow: Boolean = true, var isPlay: Boolean = false, var msg: String,var boxType:Int=-1 +) : BaseDPMsg(DPMsgType.TYPE_COMMON.type) data class TaskDetailsMsg( var msg: String?, diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/LanSocketManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/LanSocketManager.kt new file mode 100644 index 0000000000..4e07bf5b0f --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/LanSocketManager.kt @@ -0,0 +1,29 @@ +package com.mogo.och.common.module.manager + +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager +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.GsonUtils +import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg +import com.mogo.och.common.module.biz.constant.OchCommonConst + +object LanSocketManager { + private const val TAG = "LanSocket" + fun sendMsgToClient(msg: BaseDPMsg?) { + CallerLogger.d(SceneConstant.M_CHARTER_D + TAG, "sendMsgToClient" + GsonUtils.toJson(msg)) + CallerTelematicManager.sendMsgToAllClients( + OchCommonConst.BUSINESS_STRING, + GsonUtils.toJson(msg).toByteArray() + ) + } + + fun sendMsgToServer(msg: BaseDPMsg?) { + CallerLogger.d(SceneConstant.M_CHARTER_D + TAG, "sendMsgToServer" + GsonUtils.toJson(msg)) + CallerTelematicManager.sendMsgToServer( + OchCommonConst.BUSINESS_STRING, + GsonUtils.toJson(msg).toByteArray() + ) + } + + +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHPlanningStopSideStatusManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/StopSideStatusManager.kt similarity index 99% rename from OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHPlanningStopSideStatusManager.kt rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/StopSideStatusManager.kt index 16c1c0a2a9..e0f6e39b0a 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHPlanningStopSideStatusManager.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/StopSideStatusManager.kt @@ -7,7 +7,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import mogo.telematics.pad.MessagePad import java.util.concurrent.ConcurrentHashMap -object OCHPlanningStopSideStatusManager : IMoGoAutopilotPlanningActionsListener { +object StopSideStatusManager : IMoGoAutopilotPlanningActionsListener { private const val TAG = "OCHPlanningActionsManager" init { diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorManager.kt index e1f155cc2f..01262dba66 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorManager.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/devicemanage/LightAirconditionDoorManager.kt @@ -4,6 +4,8 @@ import com.mogo.commons.voice.AIAssist import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.common.module.bean.dpmsg.AppConnectMsg +import com.mogo.och.common.module.manager.LanSocketManager import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.common.module.voice.VoiceNotice import io.reactivex.disposables.Disposable @@ -14,7 +16,7 @@ object LightAirconditionDoorManager { private var dooorSubscribe: Disposable? = null private var doorStatusSubscribe: Disposable? = null - fun go2OpenDoor(isOpen:Boolean){ + fun go2OpenDoor(go2Open:Boolean){ val canOpenOrCloseDoor = canOpenOrCloseDoor() if(!canOpenOrCloseDoor.isNullOrBlank()){ ToastUtils.showLong(canOpenOrCloseDoor) @@ -24,7 +26,7 @@ object LightAirconditionDoorManager { dooorSubscribe = RxUtils.createSubscribe(1000) { CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(0) } - if(isOpen) { + if(go2Open) { CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(1) }else{ CallerAutoPilotControlManager.sendRoboBusJinlvM1FrontDoorCmd(2) @@ -32,21 +34,37 @@ object LightAirconditionDoorManager { RxUtils.disposeSubscribe(doorStatusSubscribe) doorStatusSubscribe = RxUtils.createSubscribe(6000) { if (LightAirconditionDoorStatusManager.doorStatus.isOpen) { - ToastUtils.showShort("车辆系统繁忙,稍后再试试吧~") - VoiceNotice.showNotice( - "车辆系统繁忙,稍后再试试吧~", - AIAssist.LEVEL0 - ) + if(!go2Open) {// 关门失败 + ToastUtils.showShort("车辆系统繁忙,稍后再试试吧~") + VoiceNotice.showNotice( + "车辆系统繁忙,稍后再试试吧~", + AIAssist.LEVEL0 + ) + sendMsg2Server("车门关闭失败") + } }else{ - ToastUtils.showShort("车辆系统繁忙,稍后再试试吧~") - VoiceNotice.showNotice( - "车辆系统繁忙,稍后再试试吧~", - AIAssist.LEVEL0 - ) + if(go2Open) {//开门失败 + ToastUtils.showShort("车辆系统繁忙,稍后再试试吧~") + VoiceNotice.showNotice( + "车辆系统繁忙,稍后再试试吧~", + AIAssist.LEVEL0 + ) + sendMsg2Server("车门开启失败") + } } } } + private fun sendMsg2Server(msg:String){ + val appConnectMsg = AppConnectMsg( + isViewShow = true, + isPlay = false, + msg = msg, + boxType = 3 + ) + LanSocketManager.sendMsgToServer(appConnectMsg) + } + private fun canOpenOrCloseDoor(): String? { val location = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02() return if(location.gnssSpeed<0.01){ diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.java index 94761923fe..c4c38034c1 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CoordinateCalculateRouteUtil.java @@ -79,7 +79,7 @@ public class CoordinateCalculateRouteUtil { int currentRouteIndex = getArrivedPointIndexNew( 0, mRoutePoints, location.getLongitude(), location.getLatitude() ); - // 距离当前位置轨迹中最近的轨迹点 + // 距离当前位置轨迹中最近的轨迹点坐标 MogoLocation currentPoint = mRoutePoints.get(currentRouteIndex); // 当前位置距离最近的点的距离 float calculateCurrentdex = CoordinateUtils.calculateLineDistance( @@ -135,7 +135,7 @@ public class CoordinateCalculateRouteUtil { // region 当前位置和 对应轨迹点的坐标距离 // 需要加距离 和下一个轨迹点成钝角 if (currentRouteIndex + 1 < stationPointInRouteIndex) { - MogoLocation currentPointsNext = mRoutePoints.get(stationPointInRouteIndex + 1); + MogoLocation currentPointsNext = mRoutePoints.get(currentRouteIndex + 1); double degree = getDegree( location.getLongitude(),location.getLatitude(), currentPoint.getLongitude(), currentPoint.getLatitude(), @@ -147,7 +147,7 @@ public class CoordinateCalculateRouteUtil { // 需要减距离 和上一个轨迹点成钝角 if (currentRouteIndex - 1 >= 0) { - MogoLocation lastPointsPre = mRoutePoints.get(stationPointInRouteIndex - 1); + MogoLocation lastPointsPre = mRoutePoints.get(currentRouteIndex - 1); double degree = getDegree( location.getLongitude(),location.getLatitude(), currentPoint.getLongitude(), currentPoint.getLatitude(), @@ -426,6 +426,16 @@ public class CoordinateCalculateRouteUtil { return currentIndex; } + /** + * https://blog.csdn.net/Jeanne_0523/article/details/106056255 + * @param vertexPointX + * @param vertexPointY + * @param point0X 角 + * @param point0Y 角 + * @param point1X + * @param point1Y + * @return + */ public static int getDegree(double vertexPointX, double vertexPointY, double point0X, double point0Y, double point1X, double point1Y) { //向量的点乘 double vector = (point0X - vertexPointX) * (point1X - vertexPointX) + (point0Y - vertexPointY) * (point1Y - vertexPointY); diff --git a/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusStationBean.java b/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusStationBean.java index 20baf93478..12fac3ad93 100644 --- a/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusStationBean.java +++ b/OCH/mogo-och-data/src/main/java/com/mogo/och/data/bean/BusStationBean.java @@ -109,7 +109,7 @@ public class BusStationBean { && drivingStatus == that.drivingStatus && leaving == that.leaving && name.equals(that.name) - && nameKr.equals(that.nameKr); + && (nameKr == null || nameKr.equals(that.nameKr)); } @Override diff --git a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2DrivingModel.kt b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2DrivingModel.kt index af838acb50..6b7572c338 100644 --- a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2DrivingModel.kt +++ b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/model/PM2DrivingModel.kt @@ -267,7 +267,11 @@ class PM2DrivingModel private constructor() { .coordinateConverterWgsToGcjLocations(mContext, routePoints) d(SceneConstant.M_BUS_P + TAG, "och-rotting==latLngModels = " + latLngModels.size) mRoutePoints.addAll(latLngModels) - calculateTwoStationsRoute() + + if (isGoingToNextStation){ + mTwoStationsRouts.clear() + startRemainRouteInfo() + } } private fun updateSpeed(mogoLocation: MogoLocation) { @@ -497,6 +501,10 @@ class PM2DrivingModel private constructor() { } fun dynamicCalculateRouteInfo(){ + //如果轨迹点为空发送一次获取轨迹指令 + if (mRoutePoints.size == 0){ + CallerAutoPilotControlManager.getGlobalPath() + } //计算当前位置和下一站的剩余点集合 //计算剩余点总里程和时间 d(SceneConstant.M_BUS_P + TAG, "och-rotting==mTwoStationsRouts.size() = " + mTwoStationsRouts.size) diff --git a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/presenter/PM2ADASPresenter.kt b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/presenter/PM2ADASPresenter.kt index de47518d3b..b3d6ab2894 100644 --- a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/presenter/PM2ADASPresenter.kt +++ b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/presenter/PM2ADASPresenter.kt @@ -30,7 +30,7 @@ class PM2ADASPresenter(view: PM2HPMapFragment?) : override fun updateHDMapStations(stations: MutableList>) { for (i in stations.indices){ - mView?.setMapMaker(M2_MAP_STATION_MAKER,stations[i]) + mView?.setMapMaker(M2_MAP_STATION_MAKER+i,stations[i]) } } diff --git a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2HPMapFragment.kt b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2HPMapFragment.kt index 59c671270c..11934b3cd2 100644 --- a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2HPMapFragment.kt +++ b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2HPMapFragment.kt @@ -120,7 +120,7 @@ class PM2HPMapFragment : val removeMapMarkerRunnable = Runnable { d("RemoveMapMaker=" + Thread.currentThread().name, uuid) val overlayManager = getOverlayManager() - overlayManager?.removePoint(uuid) + overlayManager?.removeAllPointsInOwner(TYPE_MARKER_M2_LINE) } OCHThreadPoolManager.getsInstance().execute(removeMapMarkerRunnable) } diff --git a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/model/OrderModel.java b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/model/OrderModel.java index caf8be93dc..7fe377e205 100644 --- a/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/model/OrderModel.java +++ b/OCH/mogo-och-shuttle/src/main/java/com/mogo/och/bus/model/OrderModel.java @@ -235,6 +235,7 @@ public class OrderModel { @Override public void onReceivedMsg(int type, @NonNull byte[] byteArray) { if (OchCommonConst.BUSINESS_STRING == type){ + CallerLogger.INSTANCE.d(M_BUS + BaseDPMsg.TAG,new String(byteArray)); BaseDPMsg msg = GsonUtils.fromJson(new String(byteArray),BaseDPMsg.class); if (msg!=null && msg.getType() == DPMsgType.TYPE_TASK_DETAILS.getType()){ sendTaskDetailsToClients(); @@ -266,7 +267,7 @@ public class OrderModel { } if (list != null && list.contains(2)){ //乘客屏 - AppConnectMsg msg = new AppConnectMsg(true,false,obj.getContext()); + AppConnectMsg msg = new AppConnectMsg(true,false,obj.getContext(),-1); CallerTelematicManager.INSTANCE.sendMsgToAllClients(OchCommonConst.BUSINESS_STRING, GsonUtils.toJson(msg).getBytes()); } @@ -843,7 +844,7 @@ public class OrderModel { private void sendArrivedStationToClient(String arriveStation) { AppConnectMsg arrivedMsg = new AppConnectMsg(false,true,String.format(mContext .getString(R.string.bus_arrived_station_tip), - arriveStation)); + arriveStation),-1); CallerTelematicManager.INSTANCE.sendMsgToAllClients(OchCommonConst.BUSINESS_STRING, GsonUtils.toJson(arrivedMsg).getBytes()); } @@ -851,7 +852,7 @@ public class OrderModel { private void sendStartStationToClient(String nextStation) { AppConnectMsg startMsg = new AppConnectMsg(false,true,String.format(mContext .getString(R.string.bus_leave_station_tip), - nextStation)); + nextStation),-1); UiThreadHandler.postDelayed(()-> CallerTelematicManager.INSTANCE.sendMsgToAllClients(OchCommonConst.BUSINESS_STRING, @@ -860,14 +861,14 @@ public class OrderModel { private void sendEndTaskToClient() { AppConnectMsg endMsg = new AppConnectMsg(false,true,mContext - .getString(R.string.bus_end_task_tip)); + .getString(R.string.bus_end_task_tip),-1); CallerTelematicManager.INSTANCE.sendMsgToAllClients(OchCommonConst.BUSINESS_STRING, GsonUtils.toJson(endMsg).getBytes()); } public void sendWriteOffNumToClient(String msg){ - AppConnectMsg passengerMsg = new AppConnectMsg(false,true,msg); + AppConnectMsg passengerMsg = new AppConnectMsg(false,true,msg,-1); CallerTelematicManager.INSTANCE.sendMsgToAllClients(OchCommonConst.BUSINESS_STRING, GsonUtils.toJson(passengerMsg).getBytes()); diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModelLoopManager.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModelLoopManager.java index 9b5ed8a440..f182ba65c3 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModelLoopManager.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModelLoopManager.java @@ -62,9 +62,8 @@ public class TaxiPassengerModelLoopManager { public void startRouteAndWipe() { CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "startRouteAndWipe()"); if (mRouteWipeDisposable != null) return; - if (mRouteWipeDisposable == null){ - mRouteWipeDisposable = new CompositeDisposable(); - } + + mRouteWipeDisposable = new CompositeDisposable(); Disposable disposable = startLoopRouteAndWipe() .doOnSubscribe(new Consumer() { @Override diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.java index 63b1b13307..7b18908634 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.java @@ -224,11 +224,15 @@ public class TaxiPassengerMapDirectionView // 设置开始结束Marker位置 LatLng startLatLng = mCoordinatesLatLng.get(0); LatLng endLatLng = mCoordinatesLatLng.get(mCoordinatesLatLng.size() - 1); + if (mStartMarker != null) { + mStartMarker.setPosition(startLatLng); + mStartMarker.setVisible(true); + } - mStartMarker.setPosition(startLatLng); - mEndMarker.setPosition(endLatLng); - mStartMarker.setVisible(true); - mEndMarker.setVisible(true); + if (mEndMarker != null) { + mEndMarker.setPosition(endLatLng); + mEndMarker.setVisible(true); + } } } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModelLoopManager.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModelLoopManager.java index 3a771ca3ae..6574a6ca89 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModelLoopManager.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModelLoopManager.java @@ -128,9 +128,9 @@ public class TaxiModelLoopManager { CallerLogger.INSTANCE.i(M_TAXI + TAG, "startCalculateRouteInfoLoop()"); if (mCalculateRouteDisposable != null) return; - if (mCalculateRouteDisposable == null){ - mCalculateRouteDisposable = new CompositeDisposable(); - } + + mCalculateRouteDisposable = new CompositeDisposable(); + Disposable disposable = loopDynamicCalculateRouteInfo() .doOnSubscribe(new Consumer() { @Override diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.java index 8061bb2c82..055610d004 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiMapDirectionView.java @@ -228,11 +228,14 @@ public class TaxiMapDirectionView // 设置开始结束Marker位置 LatLng startLatLng = mCoordinatesLatLng.get(0); LatLng endLatLng = mCoordinatesLatLng.get(mCoordinatesLatLng.size() - 1); - - mStartMarker.setPosition(startLatLng); - mEndMarker.setPosition(endLatLng); - mStartMarker.setVisible(true); - mEndMarker.setVisible(true); + if (mStartMarker != null) { + mStartMarker.setPosition(startLatLng); + mStartMarker.setVisible(true); + } + if (mEndMarker != null) { + mEndMarker.setPosition(endLatLng); + mEndMarker.setVisible(true); + } } } diff --git a/OCH/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml b/OCH/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml index 63f5aa6883..f645c9a25e 100644 --- a/OCH/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml +++ b/OCH/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml @@ -320,15 +320,14 @@ android:background="@drawable/bad_case_selector_och"/> - diff --git a/app/build.gradle b/app/build.gradle index 70bad84dd7..35780b5391 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,7 +15,7 @@ bugly { appKey = '3c736249-d6be-4066-b577-b7a6dc975cf7' // 注册时分配的App Key } -Properties properties = new Properties(); +Properties properties = new Properties() properties.load(project.rootProject.file("gradle.properties").newDataInputStream()) android { @@ -139,10 +139,10 @@ android { buildConfigField 'String', 'URLs', "\"${readFileToJson("dali").replace("\"", "\\\"")}\"" buildConfigField 'String', 'tempConfig', "\"${readFileToJsonTemp("dali").replace("\"", "\\\"")}\"" } - fuzhou { + saas { dimension "project" - buildConfigField 'String', 'URLs', "\"${readFileToJson("fuzhou").replace("\"", "\\\"")}\"" - buildConfigField 'String', 'tempConfig', "\"${readFileToJsonTemp("fuzhou").replace("\"", "\\\"")}\"" + buildConfigField 'String', 'URLs', "\"${readFileToJson("saas").replace("\"", "\\\"")}\"" + buildConfigField 'String', 'tempConfig', "\"${readFileToJsonTemp("saas").replace("\"", "\\\"")}\"" } // 配置网络环境,QA、线上、演示 qa { @@ -319,7 +319,7 @@ def variantName() { if (taskName.contains("Yantai")) { project.dependencies.add('implementation', project.project(':tts:tts-iflytek')) - }else if (taskName.contains("Mogo") || taskName.contains("Fuzhou")) { + }else if (taskName.contains("Mogo") || taskName.contains("Saas")) { project.dependencies.add('implementation', project.project(':tts:tts-pad')) }else if (taskName.contains("Dali")) { project.dependencies.add('implementation', project.project(':tts:tts-pad')) diff --git a/app/config/tempConfig.json b/app/config/tempConfig.json index 44007f1d89..87f52a3f09 100644 --- a/app/config/tempConfig.json +++ b/app/config/tempConfig.json @@ -197,7 +197,7 @@ ] } }, - "fuzhou": { + "saas": { "shuttlepassenger": { "ads": [ { diff --git a/app/config/urlConfig.json b/app/config/urlConfig.json index 11695bac0a..3602ac7888 100644 --- a/app/config/urlConfig.json +++ b/app/config/urlConfig.json @@ -104,7 +104,7 @@ "chart_socket_url":"" } }, - "fuzhou": { + "saas": { "qa": { "och_url": "https://och-a.zhidaozhixing.com", "shuttle_url": "https://och-a.zhidaozhixing.com", diff --git a/app/script/flavorfilter/flavors.json b/app/script/flavorfilter/flavors.json index ed5937262a..ba969cc36c 100644 --- a/app/script/flavorfilter/flavors.json +++ b/app/script/flavorfilter/flavors.json @@ -48,10 +48,15 @@ "passenger": ["ochM1"] } }, - "fuzhou": { + "saas": { "shuttle" :{ "driver": ["ochJL","ochM2"], "passenger": ["ochJL","ochM2"] + }, + "bus" :{ + "driver": ["ochJL"], + "driverpassenger": ["ochJL"], + "passenger": ["ochJL"] } } } diff --git a/build.gradle b/build.gradle index 88270f0362..3349642047 100644 --- a/build.gradle +++ b/build.gradle @@ -26,7 +26,7 @@ buildscript { dependencies { classpath "com.android.tools.build:gradle:${gradle_version}" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}" - classpath "com.alibaba:arouter-register:${plugin_version}" + classpath "com.alibaba:arouter-register:10.0.5_mogo" classpath 'com.tencent.bugly:symtabfileuploader:2.2.1' classpath "com.bytedance.android.byteX:base-plugin:${plugin_version}" classpath "com.mogo.cloud:hook:${service_chain_version}" diff --git a/core/function-impl/mogo-core-function-chat/src/main/java/com/mogo/eagle/core/function/chat/facade/MoGoChatFacade.kt b/core/function-impl/mogo-core-function-chat/src/main/java/com/mogo/eagle/core/function/chat/facade/MoGoChatFacade.kt index 86fd3cb4c1..9f56087171 100644 --- a/core/function-impl/mogo-core-function-chat/src/main/java/com/mogo/eagle/core/function/chat/facade/MoGoChatFacade.kt +++ b/core/function-impl/mogo-core-function-chat/src/main/java/com/mogo/eagle/core/function/chat/facade/MoGoChatFacade.kt @@ -38,6 +38,7 @@ import com.mogo.eagle.core.function.chat.facade.socket.SocketConnectManager import com.mogo.eagle.core.function.chat.facade.voice.VoiceControlFacade import com.mogo.eagle.core.utilcode.kotlin.safeCancel import com.mogo.eagle.core.utilcode.mogo.logger.Logger +import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.Utils import kotlinx.coroutines.* import kotlinx.coroutines.android.asCoroutineDispatcher @@ -191,7 +192,9 @@ object MoGoChatFacade: IMoGoChatFacade { val openId = (temp["localUserId"] as? Double ?: return@launch).toInt().toString() Logger.d(ChatConsts.TAG, "handleMessage --- openId:$openId") //初始化房间 - GMEApi.init(context(), openId = openId, cb = gmeCallback) + withContext(ThreadUtils.getIoPool().asCoroutineDispatcher()) { + GMEApi.init(context(), openId = openId, cb = gmeCallback) + } } else -> Logger.d(ChatConsts.TAG, "handleMessage --- $t") diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt index ae29253ec3..e51956b32f 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt @@ -96,12 +96,12 @@ class TeleMsgHandler : IMsgHandler { AppConfigInfo.iPCMacAddress = carConfig.macAddress AppConfigInfo.dockerVersion = carConfig.dockVersion listener?.connectDevice(!carConfig.dockVersion.contains("2.3.0")) + CallerDevaToolsManager.getBindingCarInfo(carConfig.macAddress, MoGoAiCloudClientConfig.getInstance().sn) invokeNettyConnResult( "司机屏发送给乘客屏配置信息为:${ TextFormat.printer().escapingNonAscii(false).printToString(carConfig) }" ) - CallerDevaToolsManager.getBindingCarInfo(carConfig.macAddress, MoGoAiCloudClientConfig.getInstance().sn) } // SN 10 -> { diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt index a981320c86..7b4f7e6b00 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt @@ -21,6 +21,7 @@ import com.mogo.eagle.core.function.datacenter.obu.drawer.* import com.mogo.eagle.core.function.datacenter.obu.utils.TrafficDataConvertUtilsNew import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OBU +import com.mogo.eagle.core.utilcode.util.ConvertUtils import com.mogo.support.obu.ObuScene import com.zhidao.support.obu.constants.MogoObuShowConstants import kotlin.math.roundToInt @@ -135,8 +136,10 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener ) ttsContent = String.format( ttsContent, - Math.round(rsiWarningData.warningMsgList[0].distance).toString(), - Math.round(rsiWarningData.warningMsgList[0].eventRadius).toString() + ConvertUtils.intToChinese( + rsiWarningData.warningMsgList[0].distance.roundToInt()), + ConvertUtils.intToChinese( + rsiWarningData.warningMsgList[0].eventRadius.roundToInt()) ) } @@ -224,7 +227,8 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener ) ttsContent = String.format( ttsContent, - Math.round(rsiWarningData.warningMsgList[0].distance).toString() + ConvertUtils.intToChinese( + rsiWarningData.warningMsgList[0].distance.roundToInt()) ) } @@ -240,8 +244,10 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener ) ttsContent = String.format( ttsContent, - Math.round(rsiWarningData.warningMsgList[0].distance).toString(), - Math.round(rsiWarningData.warningMsgList[0].eventRadius).toString() + ConvertUtils.intToChinese( + rsiWarningData.warningMsgList[0].distance.roundToInt()), + ConvertUtils.intToChinese( + rsiWarningData.warningMsgList[0].eventRadius.roundToInt()) ) } @@ -255,7 +261,7 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener ) ttsContent = String.format( EventTypeEnumNew.getWarningTts(appId), - mLimitSpeed + ConvertUtils.intToChinese(mLimitSpeed) ) } } diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt index 58e79bdcf8..0f146c3a9f 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt @@ -23,6 +23,7 @@ import com.mogo.eagle.core.function.datacenter.obu.utils.TrafficDataConvertUtils import com.mogo.eagle.core.utilcode.download.Config import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OBU +import com.mogo.eagle.core.utilcode.util.ConvertUtils import com.mogo.eagle.core.utilcode.util.FileUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.support.obu.ObuBase @@ -410,8 +411,10 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { ) ttsContent = String.format( ttsContent, - Math.round(data.warningMsgList[0].distance).toString(), - Math.round(data.warningMsgList[0].eventRadius).toString() + ConvertUtils.intToChinese( + data.warningMsgList[0].distance.roundToInt()), + ConvertUtils.intToChinese( + data.warningMsgList[0].eventRadius.roundToInt()) ) } @@ -506,7 +509,8 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { ) ttsContent = String.format( ttsContent, - Math.round(data.warningMsgList[0].distance).toString() + ConvertUtils.intToChinese( + data.warningMsgList[0].distance.roundToInt()) ) } @@ -522,8 +526,10 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { ) ttsContent = String.format( ttsContent, - Math.round(data.warningMsgList[0].distance).toString(), - Math.round(data.warningMsgList[0].eventRadius).toString() + ConvertUtils.intToChinese( + data.warningMsgList[0].distance.roundToInt()), + ConvertUtils.intToChinese( + data.warningMsgList[0].eventRadius.roundToInt()) ) } @@ -539,7 +545,7 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { ) ttsContent = String.format( EventTypeEnumNew.getWarningTts(appId), - mLimitSpeed + ConvertUtils.intToChinese(mLimitSpeed) ) } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index e5f0fb2769..ddc15098d5 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -34,7 +34,7 @@ import com.zhjt.mogo_core_function_devatools.apm.* import com.mogo.eagle.core.function.api.upgrade.* import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig -import com.zhjt.mogo_core_function_devatools.binding.BindingCarManager.Companion.bindingCarManager +import com.zhjt.mogo_core_function_devatools.binding.* import com.zhjt.mogo_core_function_devatools.env.EnvChangeManager import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigCenter.Companion.bizConfigCenter import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigImpl @@ -90,7 +90,7 @@ class DevaToolsProvider : IDevaToolsProvider { //升级(鹰眼/工控)与监控服务 iPCReportManager.initServer() moFangManager.init(mContext!!) - bindingCarManager.init(mContext!!) + BindingCarManager.init(mContext!!) apmEnvProvider.init(if(DebugConfig.isDebug()) "0" else "1", "${ DebugConfig.getNetMode() }", mDockerVersion ?: "") BadCaseManager.init() } @@ -313,29 +313,29 @@ class DevaToolsProvider : IDevaToolsProvider { } override fun modifyCarInfo(callBack: (ModifyBindingcarInfo) -> Unit) { - bindingCarManager.modifyCarInfo(callBack) + BindingCarManager.modifyCarInfo(callBack) } override fun getBindingCarInfo(macAddress: String, widevineIDWithMd5: String) { - bindingCarManager.getBindingCarInfo(macAddress, widevineIDWithMd5) + BindingCarManager.getBindingCarInfo(macAddress, widevineIDWithMd5) } override fun upgradeConfirm(images: List, padSn: String, releaseId: String) { - bindingCarManager.upgradeConfirm(images, padSn, releaseId) + BindingCarManager.upgradeConfirm(images, padSn, releaseId) } override fun queryContainers(padSn: String, dockerVersion: String) { - bindingCarManager.queryContainers(padSn, dockerVersion) + BindingCarManager.queryContainers(padSn, dockerVersion) } override fun queryAppUpgrade() { - bindingCarManager.queryAppUpgrade() + BindingCarManager.queryAppUpgrade() } override fun apmEnvProvider(): IApmEnvProvider = apmEnvProvider override fun queryObuUpgrade(obuVersionName: String) { - bindingCarManager.queryObuUpgrade(obuVersionName) + BindingCarManager.queryObuUpgrade(obuVersionName) } override fun upgradeProvider(): IMoGoUpgradeProvider? { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt index 7a2c17b937..ba4bb5357a 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt @@ -1,7 +1,9 @@ package com.zhjt.mogo_core_function_devatools.binding +import android.annotation.* import android.content.Context import android.text.TextUtils +import android.util.* import com.elegant.utils.UiThreadHandler import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.constants.SharedPrefsConstants @@ -16,6 +18,7 @@ import com.mogo.eagle.core.function.call.obu.CallerObuApiManager import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isDriver import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isPassenger import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr import com.zhjt.mogo_core_function_devatools.upgrade.IPCUpgradeManager.Companion.ipcUpgradeManager @@ -26,21 +29,19 @@ import mogo.telematics.pad.MessagePad /** * 车辆绑定 */ -class BindingCarManager : IMoGoAutopilotCarConfigListener { +@SuppressLint("StaticFieldLeak") +object BindingCarManager : IMoGoAutopilotCarConfigListener { - companion object { - private const val TAG = "BindingCarManager" - - val bindingCarManager by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { - BindingCarManager() - } - } + private const val TAG = "BindingCarManager" private var mContext: Context? = null @Volatile private var mAddress: String? = null + @Volatile + private var mObuVersion: String? = null + @Volatile private var mWidevineIDWithMd5 //google 数字版权 : String? = null @@ -60,11 +61,10 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener { } override fun onAutopilotCarConfig(carConfigResp: MessagePad.CarConfigResp) { - CallerLogger.d("${SceneConstant.M_BINDING}${TAG}", "onAutopilotCarConfig ----------> ") - if (carConfigResp != null && !TextUtils.isEmpty(carConfigResp.macAddress)) { - CallerLogger.d("${SceneConstant.M_BINDING}${TAG}", - "onAutopilotCarConfig carConfigResp.macAddress = ${carConfigResp.macAddress} " - ) + Logger.d("${SceneConstant.M_BINDING}${TAG}", "onAutopilotCarConfig ----------> ") + if (!TextUtils.isEmpty(carConfigResp.macAddress)) { + Logger.d("${SceneConstant.M_BINDING}${TAG}", + "onAutopilotCarConfig carConfigResp.macAddress = ${carConfigResp.macAddress} ") getBindingCarInfo(carConfigResp.macAddress, MoGoAiCloudClientConfig.getInstance().sn) } } @@ -75,12 +75,27 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener { * @param macAddress */ fun getBindingCarInfo(macAddress: String, widevineIDWithMd5: String) { + Log.d("UPGRADE", "-- getBindingCarInfo -- 1 -- : [mac: $macAddress, md5: $widevineIDWithMd5]") + var flag = false + if (!TextUtils.isEmpty(macAddress) && TextUtils.isEmpty(mAddress)) { + Log.d("UPGRADE", "-- getBindingCarInfo -- 2 -- : [mac: $macAddress, md5: $widevineIDWithMd5]") + flag = true + } + if (!TextUtils.isEmpty(macAddress) && !TextUtils.equals(macAddress, mAddress)) { + mAddress = macAddress + } + if (flag) { + Log.d("UPGRADE", "-- getBindingCarInfo -- 3 -- : [mac: $macAddress, md5: $widevineIDWithMd5]") + queryAppUpgrade() + val obuVersion = mObuVersion + if (obuVersion != null && !TextUtils.isEmpty(obuVersion)) { + queryObuUpgrade(obuVersion) + } + } CallerLogger.d("${SceneConstant.M_BINDING}${TAG}", "getBindingcarInfo macAddress = $macAddress--widevineIDWithMd5 = $widevineIDWithMd5 ---screenType = $screenType" ) SharedPrefsMgr.getInstance(mContext!!).putString(SharedPrefsConstants.APP_MAC, macAddress) - - mAddress = macAddress mWidevineIDWithMd5 = widevineIDWithMd5 if (screenType == 1) { //司机屏 driverScreen(macAddress, widevineIDWithMd5) @@ -167,13 +182,20 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener { * 查询app是否需要升级 */ fun queryAppUpgrade() { - CallerLogger.d("${SceneConstant.M_BINDING}${TAG}" + "queryAppUpgrade---role.toString() = ${role.toString()} ---mAddress = $mAddress ---spMac = ${SharedPrefsMgr.getInstance(mContext!!) - .getString(SharedPrefsConstants.APP_MAC)}") - (if (!mAddress.isNullOrEmpty()) mAddress else SharedPrefsMgr.getInstance(mContext!!) - .getString(SharedPrefsConstants.APP_MAC))?.let { - CallerLogger.d("${SceneConstant.M_BINDING}${TAG}", "queryAppUpgrade---mAddress = $mAddress") + Log.d("UPGRADE", "---- 1 ----") + var macAddress = mAddress + if (TextUtils.isEmpty(macAddress)) { + Log.d("UPGRADE", "---- 2 ----") + macAddress = SharedPrefsMgr.getInstance(mContext!!) + .getString(SharedPrefsConstants.APP_MAC) + } + if (macAddress != null && !TextUtils.isEmpty(macAddress)) { + if (!TextUtils.equals(macAddress, mAddress)) { + mAddress = macAddress + } + Log.d("UPGRADE", "---- 3 ----[mac: $macAddress]") UpgradeAppNetWorkManager.instance - ?.getAppUpgradeInfo(mContext, it, role.toString() + "") + ?.getAppUpgradeInfo(mContext, macAddress, role.toString() + "") } } @@ -182,12 +204,12 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener { * obu的升级,只需要司机屏连接 */ fun queryObuUpgrade(obuVersionName: String) { + mObuVersion = obuVersionName CallerLogger.d("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}", "screenType = $screenType ----role = $role") if (screenType == 1) { CallerLogger.d("${SceneConstant.M_OBU}${MogoObuConst.TAG_UPGRADE_OBU}","queryObuUpgrade isConnected = ${CallerObuApiManager.isConnected()} --- mAddress = $mAddress") ObuUpgradeAppNetWorkManager.instance?.getObuUpgradeInfo(mContext, if(!mAddress.isNullOrEmpty()) mAddress else SharedPrefsMgr.getInstance(mContext!!).getString(SharedPrefsConstants.APP_MAC), obuVersionName) } } - } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/tts/TtsManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/tts/TtsManager.kt index 75c46d37ec..da11f48e08 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/tts/TtsManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/tts/TtsManager.kt @@ -1,13 +1,12 @@ package com.zhjt.mogo_core_function_devatools.tts import android.content.Context -import com.elegant.utils.storage.SharedPrefsMgr +import android.util.Log import com.mogo.commons.AbsMogoApplication import com.mogo.commons.voice.AIAssist import com.mogo.eagle.core.function.api.cloud.IMoGoCloudListener import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager import com.mogo.eagle.core.utilcode.util.ThreadUtils -import com.zhjt.mogo_core_function_devatools.trace.TraceManager class TtsManager : IMoGoCloudListener { @@ -21,16 +20,14 @@ class TtsManager : IMoGoCloudListener { } fun initTts(context: Context) { - val sn = SharedPrefsMgr.getInstance(context).getString("sn") - if (sn.isNullOrEmpty()) { - CallerCloudListenerManager.addListener(TraceManager.TAG, this) - } + CallerCloudListenerManager.addListener(TAG, this) AIAssist.getInstance(context) } override fun tokenGot(token: String, sn: String) { - ThreadUtils.runOnUiThread { + Log.d(TAG, "网络获取到sn为:${sn},准备重新初始化Tts") + ThreadUtils.runOnUiThread({ AIAssist.getInstance(AbsMogoApplication.getApp()).initTtsAgain(sn) - } + }, ThreadUtils.MODE.QUEUE) } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeAppNetWorkManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeAppNetWorkManager.kt index e2b79cd036..46a1b8d37e 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeAppNetWorkManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeAppNetWorkManager.kt @@ -2,11 +2,15 @@ package com.zhjt.mogo_core_function_devatools.upgrade import android.content.* import android.util.* +import android.widget.Toast import com.mogo.cloud.passport.* import com.mogo.commons.constants.* import com.mogo.commons.utils.* import com.mogo.eagle.core.data.config.* import com.mogo.eagle.core.data.deva.bindingcar.* +import com.mogo.eagle.core.function.api.devatools.download.DownloadType.APK +import com.mogo.eagle.core.function.api.devatools.download.DownloadType.PATCH +import com.mogo.eagle.core.function.call.devatools.* import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager.upgradeProvider import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showUpgradeDialog import com.mogo.eagle.core.function.call.patch.CallerPatchManager.addPatchInfo @@ -14,7 +18,7 @@ import com.mogo.eagle.core.function.call.patch.CallerPatchManager.isPatchAccept import com.mogo.eagle.core.network.* import com.mogo.eagle.core.network.utils.* import com.mogo.eagle.core.utilcode.download.Config -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.kotlin.* import com.mogo.eagle.core.utilcode.mogo.logger.scene.* import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr import com.mogo.eagle.core.utilcode.util.* @@ -22,6 +26,7 @@ import com.mogo.eagle.core.utilcode.util.FileUtils import kotlinx.coroutines.* import okhttp3.* import java.util.TreeMap +import java.util.concurrent.TimeUnit /** * @author lixiaopeng @@ -36,16 +41,23 @@ class UpgradeAppNetWorkManager private constructor() { private val provider by lazy { upgradeProvider() } + @Volatile + private var upgradeJob: Job? = null + + // 标识静默升级是否已触发下载,如果为true, 直接返回,防止重复下载 + @Volatile + private var mDownloadRequested = false + /** * 获取app升级信息 */ - fun getAppUpgradeInfo(context: Context?, mac: String, screenType: String) { // String sn = "X20202203105S688HZ"; + fun getAppUpgradeInfo(context: Context?, mac: String, screenType: String) { + upgradeJob?.safeCancel() scope.launch { val sn = MoGoAiCloudClientConfig.getInstance().sn //null val macAddress = mac //"48:b0:2d:4d:31:7f" val type = screenType //"10" SharedPrefsMgr.getInstance(context!!).putString(SharedPrefsConstants.HOST_ADDRESS, HostConst.getHost()) - try { val records = provider?.getUpgradeRecords()?.also { MogoAnalyticUtils.track("AppUpgradeRecord", TreeMap().also { itx -> @@ -59,7 +71,7 @@ class UpgradeAppNetWorkManager private constructor() { Log.d(TAG, "getAppUpgradeInfo: -> records:" + records?.entries?.joinToString(",") { itx -> "key:${itx.key} -> value:[${itx.value.joinToString(",") { "${it.first},${it.second}" } }]"}) val versionCode = AppUtils.getAppVersionCode() val versionName = AppUtils.getAppVersionName() - d(SceneConstant.M_BINDING + TAG, "getAppUpgradeInfo mac = $macAddress---type = $type---sn = $sn---versionCode =$versionCode---versionName =$versionName") + Log.d(SceneConstant.M_BINDING + TAG, "getAppUpgradeInfo mac = $macAddress---type = $type---sn = $sn---versionCode =$versionCode---versionName =$versionName") val request = UpgradeAppRequest(sn, macAddress, type, versionName, "1") val requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request)) provider?.recordUpgradeRecord(sn ?: "", macAddress, type, FunctionBuildConfig.isSupportPatchUpgrade) @@ -80,13 +92,20 @@ class UpgradeAppNetWorkManager private constructor() { provider?.recordUpgradeRequestFailed(t.message ?: "更新接口请求失败") deleteApkFile() } + delay(TimeUnit.HOURS.toMillis(1)) + if (mDownloadRequested) { + mDownloadRequested = false + } + getAppUpgradeInfo(context, mac, screenType) + }.also { + upgradeJob = it } } private suspend fun doUpgrade(info: UpgradeAppInfo) { if (info.result != null) { val versionCode = AppUtils.getAppVersionCode() - d(SceneConstant.M_BINDING + TAG, "UpgradeAppInfo url = " + info.result.appUrl + "----code = " + info.result.versionCode + "--versionCode =" + versionCode + "--info.result = " + info.result) + Log.d(SceneConstant.M_BINDING + TAG, "UpgradeAppInfo url = " + info.result.appUrl + "----code = " + info.result.versionCode + "--versionCode =" + versionCode + "--info.result = " + info.result) if (info.result.versionCode > versionCode) { val patchInfo = info.result.patchInfo var downloadUrl: String = info.result.appUrl @@ -122,14 +141,38 @@ class UpgradeAppNetWorkManager private constructor() { Log.d("ApkInstaller", "走全量升级 --- 1 ----") provider?.recordUpgradeRecord(info.result.versionName, null, 0) } - withContext(Dispatchers.Main) { - showUpgradeDialog(downloadUrl.substring(downloadUrl.lastIndexOf("/") + 1), downloadUrl, info.result.installTitle, info.result.installContent, info.result.installType) + if (ApkInstaller.isInstallAppStore(Utils.getApp())) { + if (mDownloadRequested) { + return + } + mDownloadRequested = true + try { + withContext(Dispatchers.Main) { + Toast.makeText(Utils.getApp(), "检测到新版本[${info.result.versionName}]并且当前设备支持静默升级,开始下载新版本...", Toast.LENGTH_SHORT).show() + } + } catch (t: Throwable) { + t.printStackTrace() + } + Log.d("ApkInstaller", "EB5设备,直接走静默,不弹窗...") + CallerDevaToolsManager.downLoadPackage(if (isGoFullUpgrade) APK else PATCH, downloadUrl.substring(downloadUrl.lastIndexOf("/") + 1), downloadUrl) + } else { + var activity = AppStateManager.currentActivity() + while (activity == null) { + delay(2000) + activity = AppStateManager.currentActivity() + if (activity != null) { + break + } + } + activity?.lifeCycleScope?.launchWhenResumed { + showUpgradeDialog(downloadUrl.substring(downloadUrl.lastIndexOf("/") + 1), downloadUrl, info.result.installTitle, info.result.installContent, info.result.installType) + } } } else { deleteApkFile() } } else { - d(SceneConstant.M_BINDING + TAG, "UpgradeAppInfo onNext info == null") + Log.d(SceneConstant.M_BINDING + TAG, "UpgradeAppInfo onNext info == null") deleteApkFile() } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt index f766bea355..675e865d9d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt @@ -36,6 +36,7 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A private val operation: Int = 1 private val operationReturn: Int = 10 private val operationStop: Int = 11 + private val operationDoorSwitchFail: Int = 13 //车门开启、关闭失败 private val notice: Int = 2 private val v2x: Int = 3 private val report: Int = 4 @@ -67,6 +68,11 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A .inflate(R.layout.item_msg_bubble_operation_stop, parent, false) return BubbleOperationStopHolder(view) } + operationDoorSwitchFail ->{ + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.item_msg_bubble_operation_door, parent, false) + return BubbleOperationDoorFailHolder(view) + } report -> { val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_report,parent,false) return BubbleReportHolder(view) @@ -114,6 +120,16 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A val operationStopMsg = it[position].msgBoxBean.bean as OperationMsg holder.tvOperationStopTime.text = TimeUtils.millis2String(operationStopMsg.timestamp, getHourMinFormat()) + holder.tvOperationStopContent.text = operationStopMsg.content + } + } + //车门开启关闭失败 + is BubbleOperationDoorFailHolder -> { + data?.let{ + val operationDoorMsg = it[position].msgBoxBean.bean as OperationMsg + holder.tvOperationDoorTime.text = + TimeUtils.millis2String(operationDoorMsg.timestamp, getHourMinFormat()) + holder.tvOperationDoorContent.text = operationDoorMsg.content } } is BubbleReportHolder -> { @@ -221,7 +237,10 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A }else if((data!![position].msgBoxBean.bean as OperationMsg).type == 1){ //运营平台靠边停车 operationStop - }else{ + }else if((data!![position].msgBoxBean.bean as OperationMsg).type == 3){ + //车门开启关闭失败 + operationDoorSwitchFail + } else{ //普通运营平台 operation } @@ -260,8 +279,13 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A //运营平台靠边停车通知 class BubbleOperationStopHolder(itemView: View): RecyclerView.ViewHolder(itemView){ var tvOperationStopTime: TextView = itemView.findViewById(R.id.tvOperationStopTime) + var tvOperationStopContent: TextView = itemView.findViewById(R.id.tvOperationStopContent) + } + //车门开启关闭失败 + class BubbleOperationDoorFailHolder(itemView: View): RecyclerView.ViewHolder(itemView){ + var tvOperationDoorTime: TextView = itemView.findViewById(R.id.tvOperationDoorTime) + var tvOperationDoorContent: TextView = itemView.findViewById(R.id.tvOperationDoorContent) } - //Notice class BubbleNoticeHolder(itemView: View): RecyclerView.ViewHolder(itemView){ var ivNoticeImage: ImageView = itemView.findViewById(R.id.ivNoticeImage) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt index a31166ff14..c749c87656 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt @@ -37,6 +37,7 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : private val operation: Int = 1 private val operationReturn: Int = 10 private val operationStop: Int = 11 + private val operationDoorSwitchFail: Int = 13 private val notice: Int = 2 private val v2x: Int = 3 private val report: Int = 5 @@ -84,6 +85,11 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : .inflate(R.layout.item_msg_box_operation_stop, parent, false) return MsgBoxOperationStop(view) } + operationDoorSwitchFail -> { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.item_msg_box_operation_door, parent, false) + return MsgBoxOperationDoor(view) + } notice -> { val view = LayoutInflater.from(parent.context) .inflate(R.layout.item_msg_box_notice, parent, false) @@ -315,6 +321,16 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : val operationStopMsg = it[position].bean as OperationMsg holder.tvOperationStopTime.text = TimeUtils.millis2String(operationStopMsg.timestamp, getHourMinFormat()) + holder.tvOperationStopContent.text = operationStopMsg.content + } + } + //运营平台开关门失败 + is MsgBoxOperationDoor -> { + data?.let{ + val operationDoorMsg = it[position].bean as OperationMsg + holder.tvOperationDoorTime.text = + TimeUtils.millis2String(operationDoorMsg.timestamp, getHourMinFormat()) + holder.tvOperationDoorContent.text = operationDoorMsg.content } } is MsgBoxNotice -> { @@ -394,7 +410,10 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : }else if((data!![position].bean as OperationMsg).type == 1){ //运营平台靠边停车 operationStop - }else{ + }else if((data!![position].bean as OperationMsg).type == 3){ + //开关门失败 + operationDoorSwitchFail + } else{ //普通运营平台 operation } @@ -457,8 +476,13 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : //运营平台靠边停车通知 class MsgBoxOperationStop(itemView: View) : RecyclerView.ViewHolder(itemView){ var tvOperationStopTime: TextView = itemView.findViewById(R.id.tvOperationStopTime) + var tvOperationStopContent: TextView = itemView.findViewById(R.id.tvOperationStopContent) + } + //运营平台开关门失败 + class MsgBoxOperationDoor(itemView: View) : RecyclerView.ViewHolder(itemView){ + var tvOperationDoorTime: TextView = itemView.findViewById(R.id.tvOperationDoorTime) + var tvOperationDoorContent: TextView = itemView.findViewById(R.id.tvOperationDoorContent) } - //Notice class MsgBoxNotice(itemView: View) : RecyclerView.ViewHolder(itemView) { var ivNoticeImage: ImageView = itemView.findViewById(R.id.ivNoticeImage) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index a2fe6907a8..6bf2920d26 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -65,7 +65,9 @@ import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.ui.logcatch.ILogViewListener import com.mogo.eagle.core.function.hmi.ui.logcatch.LogInfoView +import com.mogo.eagle.core.function.hmi.ui.map.OfflineMapDialog import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView +import com.mogo.eagle.core.function.hmi.ui.widget.SystemVersionView import com.mogo.eagle.core.utilcode.kotlin.* import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -76,6 +78,7 @@ import com.mogo.eagle.core.utilcode.mogo.permissions.BackgrounderPermission import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr import com.mogo.eagle.core.utilcode.mogo.toast.TipToast import com.mogo.eagle.core.utilcode.util.* +import com.mogo.map.hdcache.IHdCacheListener import com.mogo.map.uicontroller.VisualAngleMode import com.mogo.map.uicontroller.VisualAngleMode.* import kotlinx.android.synthetic.main.view_debug_setting.view.* @@ -180,6 +183,9 @@ internal class DebugSettingView @JvmOverloads constructor( private var isStarted = false + // 高精地图是否已缓存 + private var isHDCached = false + init { LayoutInflater.from(context).inflate(R.layout.view_debug_setting, this, true) initView() @@ -571,6 +577,32 @@ internal class DebugSettingView @JvmOverloads constructor( } } + btn_cache_hd_map?.onClick { + if (isHDCached) { + ToastUtils.showShort(resources.getString(R.string.offline_had_downloaded)) + } else { + if (CallerMapUIServiceManager.getCityCode().isNullOrEmpty()) {// 未拿到高德的cityCode + if (mGnssInfo == null || (mGnssInfo!!.longitude <= 0.0 && mGnssInfo!!.latitude <= 0.0)) {// 未拿到高精的经纬度 + ToastUtils.showShort(resources.getString(R.string.location_try_again)) + } else {// 拿到了高精的经纬度 + cacheHDOfflineData(false) + } + } else {// 拿到高德的cityCode + cacheHDOfflineData(true) + } + } + } + + if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { + ThreadUtils.getIoPool().execute { + val isCached = CallerMapUIServiceManager.isCityDataCached() + isHDCached = isCached + UiThreadHandler.post { + btn_cache_hd_map.text = "缓存高精离线地图(${if (isCached) "已是最新版" else "待更新"}!)" + } + } + btn_cache_hd_map.visibility = View.VISIBLE + } /** * 修改自车按钮(出租车、小巴车) @@ -2123,6 +2155,52 @@ internal class DebugSettingView @JvmOverloads constructor( Process.killProcess(Process.myPid()) } + private fun cacheHDOfflineData(isGaoDe: Boolean) { + var progss = 0 + if (isGaoDe) {// 拿到了高德地图的cityCode + CallerMapUIServiceManager.cacheHDDataByCity(object : IHdCacheListener { + override fun onMapHdCacheProgress(cityId: Int, progress: Double) { + // 更新进度 + progss = progress.toInt() + if (progss == 100) { + isHDCached = true + btn_cache_hd_map.text = "缓存高精离线地图(已是最新版!)" + } else { + btn_cache_hd_map.text = "缓存高精离线地图(进度:${progss}%)" + } + } + + override fun onMapHdCacheResult(cityId: Int, state: Int) { + if (state == 0) {// 失败 + btn_cache_hd_map.text = "缓存高精离线地图(下载失败!)" + ToastUtils.showShort("下载失败,请重试!") + } + } + }) + } else {// 只拿到了高精的经纬度 + mGnssInfo?.let { loc -> + CallerMapUIServiceManager.cacheHDDataByCityByLonLat(object : IHdCacheListener { + override fun onMapHdCacheProgress(cityId: Int, progress: Double) { + progss = progress.toInt() + if (progss == 100) { + isHDCached = true + btn_cache_hd_map.text = "缓存高精离线地图(已是最新版!)" + } else { + btn_cache_hd_map.text = "缓存高精离线地图(进度:${progss}%)" + } + } + + override fun onMapHdCacheResult(cityId: Int, state: Int) { + if (state == 0) {// 失败 + btn_cache_hd_map.text = "缓存高精离线地图(下载失败!)" + ToastUtils.showShort("下载失败,请重试!") + } + } + }, loc) + } + } + } + override fun fwThreadClose() { refreshTraceInfo() } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TakeOverView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TakeOverView.kt index 16f368de6a..c3ead2d664 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TakeOverView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TakeOverView.kt @@ -55,7 +55,6 @@ class TakeOverView @JvmOverloads constructor( */ override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { autopilotStatus = autoPilotStatusInfo.state - Log.i(TAG,"onAutopilotStatusResponse autoPilotStatusInfo state="+autoPilotStatusInfo.state) if(autoPilotStatusInfo.state == 7){ isParallel = true }else if(autoPilotStatusInfo.state == 0 || autoPilotStatusInfo.state == 1){ @@ -70,7 +69,6 @@ class TakeOverView @JvmOverloads constructor( super.onAutopilotGuardian(guardianInfo) ThreadUtils.runOnUiThread { guardianInfo?.let { - Log.i(TAG,"onAutopilotGuardian guardianInfo ="+it.code) if (FunctionBuildConfig.isDemoMode) { return@let } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/DriverMonitorView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/DriverMonitorView.kt index 3e8ba6d17c..df6bbbf3c6 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/DriverMonitorView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/DriverMonitorView.kt @@ -203,7 +203,7 @@ class DriverMonitorView : override fun onPlaRequesting() { Logger.e("${SceneConstant.M_HMI}$TAG", "onPlaRequesting……") - isLived = false + isLived = true refreshView(isLived) } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaBusView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaBusView.kt new file mode 100644 index 0000000000..baeda951f8 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaBusView.kt @@ -0,0 +1,104 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.appcompat.content.res.AppCompatResources +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.commons.module.status.MogoStatusManager +import com.mogo.eagle.core.function.api.map.roma.IMoGoRomaListener +import com.mogo.eagle.core.function.call.map.CallerMapIdentifyManager.romaTrigger +import com.mogo.eagle.core.function.call.map.CallerMapRomaListener +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.util.ToastUtils +import kotlinx.android.synthetic.main.view_roma_bus_bg.view.ivRomaView +import kotlinx.android.synthetic.main.view_roma_bus_bg.view.ll_roma_bg + +class RomaBusView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoRomaListener { + + companion object{ + private const val TAG = "RomaView" + } + + @Volatile + private var romaMode = false + + @Volatile + private var click = true + + private val normalRes: Int + private val openRes: Int + + init{ + LayoutInflater.from(context).inflate(R.layout.view_roma_bus_bg, this, true) + val a = context.obtainStyledAttributes( + attrs, + R.styleable.RomaView, + defStyleAttr, + 0 + ) + normalRes = a.getResourceId( + R.styleable.RomaView_roma_close_bg, + R.drawable.romabg_normal_select + ) + openRes = a.getResourceId( + R.styleable.RomaView_roma_open_bg, + R.drawable.romabg_press_select_bg + ) + a.recycle() + if(normalRes!=0){ + ll_roma_bg.background = AppCompatResources.getDrawable(context, normalRes) + } + + setOnClickListener { + if(!click){ + return@setOnClickListener + } + if(!MogoStatusManager.getInstance().isSocketOnLine){ + ToastUtils.showShort("长链状态异常,请检查链接后开启漫游") + return@setOnClickListener + } + click = false + romaMode = !romaMode + //司机屏不控制乘客屏漫游,独自漫游 + romaTrigger(romaMode) + + } + } + + override fun romaStatus(status: Boolean) { + click = true + if (status) { + romaMode = true + if(openRes!=0){ + ll_roma_bg.setBackgroundResource(openRes) + }else{ + ll_roma_bg.setBackgroundResource(R.drawable.romabg_press_select_bg) + } + ivRomaView.setBackgroundResource(R.drawable.roma_press_select_bg) + } else { + romaMode = false + if(normalRes!=0){ + ll_roma_bg.setBackgroundResource(normalRes) + }else{ + ll_roma_bg.setBackgroundResource(R.drawable.roma_bg_selector) + } + ivRomaView.setBackgroundResource(R.drawable.romafront_select_bg) + } + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + CallerMapRomaListener.addListener(TAG, this) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerMapRomaListener.removeListener(TAG) + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaPassengerView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaPassengerView.kt index f1f5f2f485..be0bea11f7 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaPassengerView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaPassengerView.kt @@ -4,10 +4,12 @@ import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.commons.module.status.MogoStatusManager import com.mogo.eagle.core.function.api.map.roma.IMoGoRomaListener import com.mogo.eagle.core.function.call.map.CallerMapIdentifyManager.romaTrigger import com.mogo.eagle.core.function.call.map.CallerMapRomaListener import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.util.ToastUtils class RomaPassengerView @JvmOverloads constructor( context: Context, @@ -39,6 +41,10 @@ class RomaPassengerView @JvmOverloads constructor( if(!click){ return@setOnClickListener } + if(!MogoStatusManager.getInstance().isSocketOnLine){ + ToastUtils.showShort("长链状态异常,请检查链接后开启漫游") + return@setOnClickListener + } click = false romaMode = !romaMode romaTrigger(romaMode) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaTaxiView.kt similarity index 84% rename from core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaView.kt rename to core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaTaxiView.kt index 810deabf03..06a718a775 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaTaxiView.kt @@ -5,13 +5,16 @@ import android.util.AttributeSet import android.view.LayoutInflater import androidx.appcompat.content.res.AppCompatResources import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.commons.module.status.MogoStatusManager import com.mogo.eagle.core.function.api.map.roma.IMoGoRomaListener import com.mogo.eagle.core.function.call.map.CallerMapIdentifyManager.romaTrigger import com.mogo.eagle.core.function.call.map.CallerMapRomaListener import com.mogo.eagle.core.function.hmi.R -import kotlinx.android.synthetic.main.view_roma_bg.view.* +import com.mogo.eagle.core.utilcode.util.ToastUtils +import kotlinx.android.synthetic.main.view_roma_taxi_bg.view.ivRomaView +import kotlinx.android.synthetic.main.view_roma_taxi_bg.view.ll_roma_bg -class RomaView @JvmOverloads constructor( +class RomaTaxiView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 @@ -31,7 +34,7 @@ class RomaView @JvmOverloads constructor( private val openRes: Int init { - LayoutInflater.from(context).inflate(R.layout.view_roma_bg, this, true) + LayoutInflater.from(context).inflate(R.layout.view_roma_taxi_bg, this, true) val a = context.obtainStyledAttributes( attrs, R.styleable.RomaView, @@ -55,6 +58,10 @@ class RomaView @JvmOverloads constructor( if(!click){ return@setOnClickListener } + if(!MogoStatusManager.getInstance().isSocketOnLine){ + ToastUtils.showShort("长链状态异常,请检查链接后开启漫游") + return@setOnClickListener + } click = false romaMode = !romaMode //司机屏不控制乘客屏漫游,独自漫游 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_operation_door.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_operation_door.xml new file mode 100644 index 0000000000..e891f34b2e --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_operation_door.xml @@ -0,0 +1,53 @@ + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_operation_door.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_operation_door.xml new file mode 100644 index 0000000000..1491a8c3b2 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_operation_door.xml @@ -0,0 +1,51 @@ + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_operation_stop.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_operation_stop.xml index e6b647840f..f1d77aab16 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_operation_stop.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_operation_stop.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index 81b044daa6..2d9b5fd0d0 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -1560,6 +1560,21 @@ app:layout_constraintRight_toRightOf="@id/changesight_cross_btn" app:layout_constraintTop_toBottomOf="@id/changesight_cross_btn" /> +