From 820a3517e30fd88b11ca66df2559230f885c3047 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Mon, 10 Oct 2022 17:27:00 +0800 Subject: [PATCH 001/203] =?UTF-8?q?[Fix]=E9=A1=BB=E5=85=88=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E5=B7=A5=E6=8E=A7=E6=9C=BA=E5=86=8D=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=9B=91=E5=90=AC=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/MoGoAutopilotProvider.kt | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt index 86b6f769f0..a7268ec13e 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt @@ -37,6 +37,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.telematic.MogoProtocolMsg import com.mogo.telematic.MogoProtocolMsg.NORMAL_DATA import com.mogo.telematic.MogoProtocolMsg.SYNC_MODE_STATUS @@ -53,7 +54,6 @@ import com.zhidao.support.adas.high.common.CupidLogUtils import com.zhidao.support.adas.high.common.MogoReport import com.zhjt.service.chain.ChainLog import com.zhjt.service.chain.TracingConstants -import com.zhjt.service_biz.BizConfig import io.netty.channel.Channel import mogo.telematics.pad.MessagePad import java.util.* @@ -73,6 +73,7 @@ class MoGoAutopilotProvider : private var mContext: Context? = null private lateinit var msgHandler: IMsgHandler private var timer: Timer? = null + @Volatile private var isInit = false @@ -107,6 +108,9 @@ class MoGoAutopilotProvider : .build() AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl()) + //////////////////////////////////注意先后顺序,AdasManager.getInstance().create后才可以设置监听///////////////////////////////////////////// + // 监听ADAS-SDK获取到的工控机数据 + AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) NSDNettyManager.getInstance().startNSDNettyServerWithSN(context, object : NettyServerListener { override fun onMessageResponseServer(msg: MogoProtocolMsg?, channel: Channel?) { @@ -153,16 +157,19 @@ class MoGoAutopilotProvider : override fun connectDevice(isSupportMulti: Boolean) { if (!isInit) { isInit = true - if (isSupportMulti) { - // 直连工控机 - directConnect() - } else { - val options = AdasOptions - .Builder() - .setClient(true) - .build() - AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl()) - listenDeviceData() + UiThreadHandler.post { + if (isSupportMulti) { + // 直连工控机 + directConnect() + } else { + val options = AdasOptions + .Builder() + .setClient(true) + .build() + AdasManager.getInstance() + .create(options, MoGoAdasMsgConnectStatusListenerImpl()) + listenDeviceData() + } } } } @@ -189,10 +196,6 @@ class MoGoAutopilotProvider : } }) } - //////////////////////////////////注意先后顺序,AdasManager.getInstance().create后才可以设置监听///////////////////////////////////////////// - - // 监听ADAS-SDK获取到的工控机数据(乘客也需注册) - AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) CallerAutopilotCarConfigListenerManager.addListener(TAG, this) CallerLogger.i("$M_ADAS_IMPL$TAG", "initServer……") // 同步数据给工控机的服务 @@ -209,6 +212,9 @@ class MoGoAutopilotProvider : .setClient(false)// 乘客端直连工控机改为false .build() AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl()) + //////////////////////////////////注意先后顺序,AdasManager.getInstance().create后才可以设置监听///////////////////////////////////////////// + // 监听ADAS-SDK获取到的工控机数据 + AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl()) } /** From 7212e2de5644123ce9a5e9d1bebd9057ac041f47 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Mon, 10 Oct 2022 11:11:30 +0800 Subject: [PATCH 002/203] add log to test --- .../com/mogo/eagle/core/function/map/identify/TrackManager.java | 2 ++ libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackManager.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackManager.java index c5b5a301f3..1faa4b9c61 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackManager.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackManager.java @@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.map.identify; import android.annotation.SuppressLint; import android.os.Build; import android.text.TextUtils; +import android.util.Log; import androidx.annotation.RequiresApi; @@ -109,6 +110,7 @@ public class TrackManager { if (data.getColor() != null && !data.getColor().isEmpty()) { cache = cache.toBuilder().setColor(data.getColor()).build(); } + Log.i("EmArrow1009","感知物重新赋值, cache type : " +cache.getType() + " , data type :" + data.getType()); data = cache; } } diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java b/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java index b727c2b217..f4c4d97c8e 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java @@ -3,6 +3,7 @@ package com.mogo.map; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Point; +import android.util.Log; import android.util.Pair; import com.mogo.eagle.core.data.config.FunctionBuildConfig; @@ -116,6 +117,7 @@ public class AMapWrapper implements IMogoMap { optionsArrayList.forEach((s, trackedObject) -> { MarkerSimpleData markerOptions = ObjectUtils.fromTrafficData(trackedObject); if (markerOptions != null) { + Log.i("EmArrow1009","markerOpt : " + markerOptions.toString()); markerOptionsArrayList.add(markerOptions); } }); From 36e1ce01dbb83c4db842da990279a412deaef549 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Mon, 10 Oct 2022 18:02:08 +0800 Subject: [PATCH 003/203] remove unuse log --- .../mogo/eagle/core/function/map/identify/TrackManager.java | 5 ----- .../mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java | 5 ----- .../mogo-map/src/main/java/com/mogo/map/AMapWrapper.java | 2 -- 3 files changed, 12 deletions(-) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackManager.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackManager.java index 1faa4b9c61..9f78e3575f 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackManager.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackManager.java @@ -2,8 +2,6 @@ package com.mogo.eagle.core.function.map.identify; import android.annotation.SuppressLint; import android.os.Build; -import android.text.TextUtils; -import android.util.Log; import androidx.annotation.RequiresApi; @@ -11,8 +9,6 @@ import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; import com.mogo.commons.AbsMogoApplication; import com.mogo.eagle.core.data.traffic.TrafficData; -import com.mogo.eagle.core.data.traffic.TrafficDataKt; -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.utilcode.geometry.S2CellId; import com.mogo.eagle.core.utilcode.geometry.S2LatLng; import com.mogo.map.MogoMarkerManager; @@ -110,7 +106,6 @@ public class TrackManager { if (data.getColor() != null && !data.getColor().isEmpty()) { cache = cache.toBuilder().setColor(data.getColor()).build(); } - Log.i("EmArrow1009","感知物重新赋值, cache type : " +cache.getType() + " , data type :" + data.getType()); data = cache; } } diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java index 7da3018902..e94abde8ee 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java @@ -366,22 +366,17 @@ public class AMapViewWrapper implements IMogoMapView, @Override public void changeMapVisualAngle(VisualAngleMode angelMode, MogoLatLng mogoLatLng) { - Log.d("XXXX", "--- 2 -----"); MapAutoViewHelper mapAutoViewHelper = mMapView.getMapAutoViewHelper(); if (mapAutoViewHelper != null) { - Log.d("XXXX", "--- 3 -----"); mVisualAngleMode = angelMode; if (angelMode == MODE_CLOSE_SIGHT) { - Log.d("XXXX", "--- 4 -----"); if (mogoLatLng == null) { - Log.d("XXXX", "--- 5 -----"); CallerLogger.INSTANCE.e(M_MAP + TAG, "切换地图近景需要传入要移动的经纬度数据"); return; } // 近景传入经纬度为点击地图上静态marker经纬度数据,为GPS坐标点。 mapAutoViewHelper.setNearViewAnglePosition(new LonLatPoint(mogoLatLng.lon, mogoLatLng.lat), true); } else { - Log.d("XXXX", "--- 6 -----"); mapAutoViewHelper.setMapViewVisualAngle(angelMode.getCode()); } } diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java b/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java index f4c4d97c8e..b727c2b217 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapWrapper.java @@ -3,7 +3,6 @@ package com.mogo.map; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Point; -import android.util.Log; import android.util.Pair; import com.mogo.eagle.core.data.config.FunctionBuildConfig; @@ -117,7 +116,6 @@ public class AMapWrapper implements IMogoMap { optionsArrayList.forEach((s, trackedObject) -> { MarkerSimpleData markerOptions = ObjectUtils.fromTrafficData(trackedObject); if (markerOptions != null) { - Log.i("EmArrow1009","markerOpt : " + markerOptions.toString()); markerOptionsArrayList.add(markerOptions); } }); From bc2a3cd756e53c25f3c5b8db1bca35b3b81880bc Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Mon, 10 Oct 2022 18:18:54 +0800 Subject: [PATCH 004/203] =?UTF-8?q?[2.11.0]=20taxi/bus=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=20=E5=B0=86=E4=B8=9A=E5=8A=A1=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E4=BF=9D=E5=AD=98=EF=BC=8C=E9=B9=B0=E7=9C=BC?= =?UTF-8?q?=E5=8F=AF=E5=8F=96=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/bus/model/BusOrderModel.java | 83 +++++++++--- .../com/mogo/och/taxi/model/TaxiModel.java | 128 ++++++++++-------- 2 files changed, 132 insertions(+), 79 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index df6a0d1ea0..ed7e86d8f7 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -372,6 +372,7 @@ public class BusOrderModel { if (refreshBusStationsCallback != null){ refreshBusStationsCallback.updateEmptyUi(); } + clearAutopilotControlParameters(); return; } CallerLogger.INSTANCE.d(M_BUS + TAG, "获取到小巴路线数据: " + data ); @@ -429,11 +430,13 @@ public class BusOrderModel { refreshBusStationsCallback.updateBusTaskStatus(busRoutesResult.getName(),lineTime, stationList,arrivingOrArrivedStationIndex,true); } + clearAutopilotControlParameters(); }else { if (refreshBusStationsCallback != null){ refreshBusStationsCallback.updateBusTaskStatus(busRoutesResult.getName(),lineTime, stationList,arrivingOrArrivedStationIndex,false); } + updateAutopilotControlParameters(); } } @@ -490,6 +493,7 @@ public class BusOrderModel { private void startAutopilot(boolean isRestart) { if (backgroundCurrentStationIndex +1 > stationList.size() - 1 || !isGoingToNextStation){ + CallerLogger.INSTANCE.e(M_BUS + TAG, "mismatch condition."); return; } @@ -498,30 +502,16 @@ public class BusOrderModel { BusStationBean currentStation = stationList.get( backgroundCurrentStationIndex); BusStationBean nextStation = stationList.get( backgroundCurrentStationIndex + 1); - AutopilotControlParameters parameters = new AutopilotControlParameters(); - parameters.isSpeakVoice = !isRestart; - parameters.routeID = busRoutesResult.getLineId(); - parameters.routeName = busRoutesResult.getName(); - parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.getName()); - parameters.endName = PinYinUtil.getPinYinHeadChar(nextStation.getName()); - parameters.startLatLon = new AutopilotControlParameters - .AutoPilotLonLat( currentStation.getLat(), currentStation.getLon() ); - parameters.endLatLon = new AutopilotControlParameters - .AutoPilotLonLat( nextStation.getLat(), nextStation.getLon() ); - parameters.vehicleType = VEHICLE_TYPE; - if (parameters.autoPilotLine == null) { - parameters.autoPilotLine = new AutopilotControlParameters.AutoPilotLine( - busRoutesResult.getLineId(), - busRoutesResult.csvFileUrl, busRoutesResult.csvFileMd5, - busRoutesResult.txtFileUrl, busRoutesResult.txtFileMd5, - busRoutesResult.contrailSaveTime, busRoutesResult.carModel, - busRoutesResult.csvFileUrlDPQP, busRoutesResult.csvFileMd5DPQP, - busRoutesResult.txtFileUrlDPQP, busRoutesResult.txtFileMd5DPQP, - busRoutesResult.contrailSaveTimeDPQP); + AutopilotControlParameters parameters = initAutopilotControlParameters(); + if (null == parameters) { + CallerLogger.INSTANCE.e(M_BUS + TAG, "AutopilotControlParameters is empty."); + return; } + + CallerAutoPilotManager.INSTANCE.startAutoPilot(parameters); + CallerLogger.INSTANCE.d( M_BUS + TAG, "开启自动驾驶====" + GsonUtil.jsonFromObject(parameters) +" startLatLon="+currentStation.getName()+",endLatLon="+nextStation.getName()); - CallerAutoPilotManager.INSTANCE.startAutoPilot(parameters); if (mControllerStatusCallback != null) { mControllerStatusCallback.startOpenAutopilot(); @@ -905,4 +895,55 @@ public class BusOrderModel { public int getCurrentStationIndex() { return backgroundCurrentStationIndex; } + + /** + * 将业务订单信息保存,鹰眼可取用 + */ + private void updateAutopilotControlParameters() { + + AutopilotControlParameters parameters = initAutopilotControlParameters(); + if (null == parameters){ + CallerLogger.INSTANCE.e(M_BUS + TAG, "AutopilotControlParameters is empty."); + return; + } + CallerLogger.INSTANCE.d(M_BUS + TAG, "AutopilotControlParameters is update."); + CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(parameters); + } + + private void clearAutopilotControlParameters(){ + CallerLogger.INSTANCE.d(M_BUS + TAG, "AutopilotControlParameters is clear."); + CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(null); + } + + private AutopilotControlParameters initAutopilotControlParameters() { + if (backgroundCurrentStationIndex +1 > stationList.size() - 1 || !isGoingToNextStation){ + CallerLogger.INSTANCE.e(M_BUS + TAG, "mismatch condition."); + return null; + } + + BusStationBean currentStation = stationList.get( backgroundCurrentStationIndex); + BusStationBean nextStation = stationList.get( backgroundCurrentStationIndex + 1); + + AutopilotControlParameters parameters = new AutopilotControlParameters(); + parameters.routeID = busRoutesResult.getLineId(); + parameters.routeName = busRoutesResult.getName(); + parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.getName()); + parameters.endName = PinYinUtil.getPinYinHeadChar(nextStation.getName()); + parameters.startLatLon = new AutopilotControlParameters + .AutoPilotLonLat( currentStation.getLat(), currentStation.getLon() ); + parameters.endLatLon = new AutopilotControlParameters + .AutoPilotLonLat( nextStation.getLat(), nextStation.getLon() ); + parameters.vehicleType = VEHICLE_TYPE; + if (parameters.autoPilotLine == null) { + parameters.autoPilotLine = new AutopilotControlParameters.AutoPilotLine( + busRoutesResult.getLineId(), + busRoutesResult.csvFileUrl, busRoutesResult.csvFileMd5, + busRoutesResult.txtFileUrl, busRoutesResult.txtFileMd5, + busRoutesResult.contrailSaveTime, busRoutesResult.carModel, + busRoutesResult.csvFileUrlDPQP, busRoutesResult.csvFileMd5DPQP, + busRoutesResult.txtFileUrlDPQP, busRoutesResult.txtFileMd5DPQP, + busRoutesResult.contrailSaveTimeDPQP); + } + return parameters; + } } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index b651855d3f..755dc34a0d 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -18,7 +18,6 @@ import com.amap.api.maps.model.LatLng; import com.elegant.network.utils.GsonUtil; import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager; import com.mogo.cloud.commons.utils.CoordinateUtils; -import com.mogo.commons.debug.DebugConfig; import com.mogo.eagle.core.data.BaseData; import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters; import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo; @@ -29,6 +28,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager; 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.storage.SharedPrefsMgr; import com.mogo.eagle.core.utilcode.util.NetworkUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; @@ -318,6 +318,8 @@ public class TaxiModel { //1.1.2. 当本地有currentOrder: //orderId不一致时:通过currentOrder.orderId查询订单状态,并通知ui更新 //orderId一致且orderStatus不一致时:则更新currentOrder,并通知ui更新 + Logger.d(TAG,"AutopilotControl-mCurrentOCHOrder = "+mCurrentOCHOrder.orderStatus + + ", orderStatus = " +data.data.servicing.get(0).orderStatus); if (!mCurrentOCHOrder.orderNo.equals(data.data.servicing.get(0).orderNo)) { queryCurOrderStatus(); } else if (mCurrentOCHOrder.orderStatus != data.data.servicing.get(0).orderStatus) { @@ -787,24 +789,52 @@ public class TaxiModel { TaxiTrajectoryManager.getInstance().syncTrajectoryInfo(); SharedPrefsMgr.getInstance(mContext).putString(TaxiConst.SP_KEY_OCH_TAXI_ORDER, GsonUtil.jsonFromObject(data)); - if (FunctionBuildConfig.isDemoMode) { - if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.getCode()){ + + if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.getCode()){ + + if (FunctionBuildConfig.isDemoMode) { // 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true; CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(true); CallerAutoPilotManager.INSTANCE.setIPCDemoMode(true); CallerLogger.INSTANCE.d(M_TAXI + TAG, "美化模式-ignore:置为true(更新本地order信息)"); } - if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.getCode()){ + + updateAutopilotControlParameters(); + } + if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.getCode()){ + if (FunctionBuildConfig.isDemoMode) { CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false); } + + clearAutopilotControlParameters(); } } + /** + * 将业务订单信息保存,鹰眼可取用 + */ + private void updateAutopilotControlParameters() { + + AutopilotControlParameters parameters = initAutopilotControlParameters(); + if (null == parameters){ + CallerLogger.INSTANCE.e(M_TAXI + TAG, "AutopilotControlParameters is empty."); + return; + } + CallerLogger.INSTANCE.d(M_TAXI + TAG, "AutopilotControlParameters is update."); + CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(parameters); + } + + private void clearAutopilotControlParameters(){ + CallerLogger.INSTANCE.d(M_TAXI + TAG, "AutopilotControlParameters is clear."); + CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(null); + } + //清除订单信息 public void clearCurrentOCHOrder() { startOrStopCalculateRouteInfo(false); mCurrentOCHOrder = null; + clearAutopilotControlParameters(); TaxiTrajectoryManager.getInstance().syncTrajectoryInfo(); SharedPrefsMgr.getInstance(mContext).remove(TaxiConst.SP_KEY_OCH_TAXI_ORDER); isRestartAutopilot = false; @@ -859,12 +889,38 @@ public class TaxiModel { isRestartAutopilot = true; } + AutopilotControlParameters parameters = initAutopilotControlParameters(); + + if (null == parameters) { + CallerLogger.INSTANCE.e(M_TAXI + TAG, "AutopilotControlParameters is empty."); + return; + } + + CallerAutoPilotManager.INSTANCE.startAutoPilot(parameters); + CallerLogger.INSTANCE.d(M_TAXI + TAG, "start autopilot with parameter: %s", GsonUtil.jsonFromObject(parameters) + + " ,startSiteName=" + mCurrentOCHOrder.startSiteAddr + " ,endSiteName=" + mCurrentOCHOrder.endSiteAddr); + + TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent(isRestartAutopilot, false, + mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo); + + // TODO: 2021/8/20 无工控机环境, 手动调起自动驾驶开启返回结果,有工控机环境要删除 +// OCHTaxiUiController.getInstance().onAutoPilotStatusChanged( IMogoAdasOCHCallback.STATUS_AUTOPILOT_RUNNING, "开启自动驾驶" ); + } + + private AutopilotControlParameters initAutopilotControlParameters() { + + if (!checkCurrentOCHOrder()) { + CallerLogger.INSTANCE.e(M_TAXI + TAG, "no order or order is empty."); + return null; + } + + AutopilotControlParameters parameters = new AutopilotControlParameters(); + double startWgsLon = mCurrentOCHOrder.startSitePoint.get(0); double startWgsLat = mCurrentOCHOrder.startSitePoint.get(1); double endWgsLon = mCurrentOCHOrder.endSitePoint.get(0); double endWgsLat = mCurrentOCHOrder.endSitePoint.get(1); - AutopilotControlParameters parameters = new AutopilotControlParameters(); parameters.vehicleType = mCurrentOCHOrder.businessType; parameters.startName = PinYinUtil.getPinYinHeadChar(mCurrentOCHOrder.startSiteAddr); // 起点名称拼音首字母大写:科学城B区2号门(KXCBQ2HM) parameters.endName = PinYinUtil.getPinYinHeadChar(mCurrentOCHOrder.endSiteAddr); // 终点名称拼音首字母大写:科学城C区三号门(KXCCQSHM) @@ -880,15 +936,7 @@ public class TaxiModel { mCurrentOCHOrder.txtFileUrlDPQP, mCurrentOCHOrder.txtFileMd5DPQP, mCurrentOCHOrder.contrailSaveTimeDPQP); } - CallerAutoPilotManager.INSTANCE.startAutoPilot(parameters); - CallerLogger.INSTANCE.d(M_TAXI + TAG, "start autopilot with parameter: %s", GsonUtil.jsonFromObject(parameters) - + " ,startSiteName=" + mCurrentOCHOrder.startSiteAddr + " ,endSiteName=" + mCurrentOCHOrder.endSiteAddr); - - TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent(isRestartAutopilot, false, - mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo); - - // TODO: 2021/8/20 无工控机环境, 手动调起自动驾驶开启返回结果,有工控机环境要删除 -// OCHTaxiUiController.getInstance().onAutoPilotStatusChanged( IMogoAdasOCHCallback.STATUS_AUTOPILOT_RUNNING, "开启自动驾驶" ); + return parameters; } //结束自动驾驶 @@ -913,18 +961,8 @@ public class TaxiModel { startLon, startLat, location.getLongitude(), location.getLatitude()); -// if (DebugConfig.isDebug() && mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToStart.getCode()) { -// // ToastUtils.showShort("距离上车点:" + Double.valueOf(distance).intValue()); -// } - CallerLogger.INSTANCE.i(M_TAXI + TAG, "judgeStartStation() distance = " + distance); -// if (distance > TaxiConst.ARRIVE_AT_START_STATION_DISTANCE) { -// distance = CoordinateUtils.calculateLineDistance(startLon, startLat, -// CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lon(), -// CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lat()); -// } - if (distance <= TaxiConst.ARRIVE_AT_START_STATION_DISTANCE) { arrivedStartPoint(); return; @@ -1011,12 +1049,6 @@ public class TaxiModel { CallerLogger.INSTANCE.i(M_TAXI + TAG, "judgeEndStation() distance = " + distance); -// if (distance > TaxiConst.ARRIVE_AT_START_STATION_DISTANCE) { -// distance = CoordinateUtils.calculateLineDistance(startLon, startLat, -// CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lon(), -// CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lat()); -// } - if (distance <= TaxiConst.ARRIVE_AT_START_STATION_DISTANCE) { if (!checkCurrentOCHOrder() || (getCurOrderStatus() == TaxiOrderStatusEnum.ArriveAtEnd)) { @@ -1277,9 +1309,7 @@ public class TaxiModel { private void reportTotalDisAndTime() { float lastSumLength = CoordinateCalculateRouteUtil.calculateRouteSumLength(mRoutePoints); double lastTime = lastSumLength / TaxiConst.TAXI_AVERAGE_SPEED * 3.6; //秒 -// if (mOrderStatusCallback != null) { -// mOrderStatusCallback.onCurrentOrderDistToEndChanged((long) lastSumLength, (long) lastTime); -// } + reportOrderRemain((long) lastSumLength, (long) lastTime); } @@ -1401,9 +1431,7 @@ public class TaxiModel { , new TaxiServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { - if (null != data && 0 == data.code){ - updateOrderStatus(TaxiOrderStatusEnum.UserArriveAtStart); - } + } @Override @@ -1425,9 +1453,7 @@ public class TaxiModel { , new TaxiServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { - if (null != data && 0 == data.code){ - updateOrderStatus(TaxiOrderStatusEnum.OnTheWayToEnd); - } + } @Override @@ -1447,9 +1473,7 @@ public class TaxiModel { , new TaxiServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { - if (null != data && 0 == data.code){ - updateOrderStatus(TaxiOrderStatusEnum.ArriveAtStart); - } + } @Override @@ -1470,9 +1494,7 @@ public class TaxiModel { , new TaxiServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { - if (null != data && 0 == data.code){ - updateOrderStatus(TaxiOrderStatusEnum.ArriveAtEnd); - } + } @Override @@ -1493,9 +1515,9 @@ public class TaxiModel { , new TaxiServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { - if (null != data && 0 == data.code){ - updateOrderStatus(TaxiOrderStatusEnum.JourneyCompleted); - } +// if (null != data && 0 == data.code){ +// updateOrderStatus(TaxiOrderStatusEnum.JourneyCompleted); +// } } @Override @@ -1504,16 +1526,6 @@ public class TaxiModel { } }); } - //更新当前订单状态 - public void updateOrderStatus(final TaxiOrderStatusEnum orderStatus) { - if (mCurrentOCHOrder == null) { - return; - } - mCurrentOCHOrder.orderStatus = orderStatus.getCode(); - if (mOrderStatusCallback != null) { - mOrderStatusCallback.onCurrentOrderStatusChanged(mCurrentOCHOrder); - } - } // 登出 public void logout() { From 1e2f09fab7c03a83486e5de83eb0510b500be407 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Tue, 11 Oct 2022 18:50:57 +0800 Subject: [PATCH 005/203] =?UTF-8?q?[2.11.0]=201=E3=80=81=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=BC=80=E5=90=AF=E8=87=AA=E5=8A=A8=E9=A9=BE=E9=A9=B6=E5=B7=A5?= =?UTF-8?q?=E6=8E=A7=E5=BC=82=E5=B8=B8=E6=8B=A6=E6=88=AA=EF=BC=8C=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E5=9F=8B=E7=82=B9=E9=80=BB=E8=BE=91=202=E3=80=81?= =?UTF-8?q?=E4=BC=98=E5=8C=96bus=E7=BE=8E=E5=8C=96=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/och/bus/fragment/BusFragment.java | 2 +- .../com/mogo/och/bus/model/BusOrderModel.java | 87 ++++--- .../mogo/och/bus/presenter/BusPresenter.java | 16 +- OCH/mogo-och-common-module/build.gradle | 2 + .../module/manager/OCHAdasAbilityManager.java | 215 ++++++++++++++++++ .../ITaxiControllerStatusCallback.java | 2 + .../com/mogo/och/taxi/model/TaxiModel.java | 18 +- .../och/taxi/presenter/TaxiPresenter.java | 10 + .../mogo/och/taxi/ui/BaseTaxiTabFragment.java | 4 +- .../com/mogo/och/taxi/ui/TaxiFragment.java | 13 +- 10 files changed, 318 insertions(+), 51 deletions(-) create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java index aec54b198b..e39b6ade10 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java @@ -396,7 +396,7 @@ public class BusFragment extends BaseBusTabFragment if (isAnimateRunning){ stopAutopilotAnimation(); } - mPresenter.autoDriveToNextStation(false); + mPresenter.autoDriveToNextStation(); } /** diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index ed7e86d8f7..5bac0ffcae 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -52,6 +52,7 @@ import com.mogo.och.bus.util.BusAnalyticsManager; import com.mogo.och.bus.util.BusTrajectoryManager; import com.mogo.och.common.module.biz.constant.OchCommonConst; import com.mogo.och.common.module.biz.provider.LoginService; +import com.mogo.och.common.module.manager.OCHAdasAbilityManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.DateTimeUtil; import com.mogo.och.common.module.utils.PinYinUtil; @@ -85,8 +86,6 @@ public class BusOrderModel { public double mLongitude = 0; public double mLatitude = 0; private Context mContext; - private Disposable mBusOrdersDisposable; //定时轮询小巴车订单 - private List prevBusOrderNos = new ArrayList<>(); private final List stationList = new ArrayList<>(); private BusRoutesResult busRoutesResult = null; /** @@ -107,6 +106,9 @@ public class BusOrderModel { private volatile boolean isArrivedStation = false; + //0: 代表没有启动过 1代表是启动第一次,当>=1 代表是重试 每次到站/路线结束清空置为0 + private volatile int firstStartAutopilot = 0; + private LoginService loginService; private long prePassengerWriteOffTime = 0; //记录最后查询到乘客核销的时间 @@ -274,9 +276,7 @@ public class BusOrderModel { } public void release(){ - if (mBusOrdersDisposable != null) { - mBusOrdersDisposable.dispose(); - } + startOrStopOrderLoop(false); startOrStopQueryPassengerWriteOff(false); MogoApisHandler.getInstance() @@ -373,6 +373,8 @@ public class BusOrderModel { refreshBusStationsCallback.updateEmptyUi(); } clearAutopilotControlParameters(); + closeBeautificationMode(); + clearStartAutopilotTag(); return; } CallerLogger.INSTANCE.d(M_BUS + TAG, "获取到小巴路线数据: " + data ); @@ -470,11 +472,13 @@ public class BusOrderModel { * 服务端返回的OchBusRoutesResult逻辑, 离开站为当前站, 到达下一站后才会将下一站置为当前站, * 车机端展示是离开当前站,下一站设置为当前站, 所以服务端数据回来要做处理,不能直接渲染 */ - private void leaveStationSuccess(boolean isRestart) { + private void leaveStationSuccess() { //开启自动驾驶 2.10.0: 如果自动驾驶状态下开启, 非自动驾驶状态下不开启,需手动点击自动驾驶按钮开启 - if (isRestart || CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() + if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ - startAutopilot(isRestart); + startAutopilot(false); + }else { + firstStartAutopilot = 0; } if (isGoingToNextStation) { @@ -497,6 +501,14 @@ public class BusOrderModel { return; } + if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()){ + ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() + + ", 请稍候重试"); + return; + } + + firstStartAutopilot ++; + triggerStartServiceEvent(isRestart, false); BusStationBean currentStation = stationList.get( backgroundCurrentStationIndex); @@ -511,7 +523,8 @@ public class BusOrderModel { CallerAutoPilotManager.INSTANCE.startAutoPilot(parameters); CallerLogger.INSTANCE.d( M_BUS + TAG, "开启自动驾驶====" + GsonUtil.jsonFromObject(parameters) - +" startLatLon="+currentStation.getName()+",endLatLon="+nextStation.getName()); + +" startLatLon="+currentStation.getName()+",endLatLon="+nextStation.getName() + + "isRestart = " + isRestart); if (mControllerStatusCallback != null) { mControllerStatusCallback.startOpenAutopilot(); @@ -522,7 +535,6 @@ public class BusOrderModel { * 到站查询核销乘客 */ public void queryPassengerWriteOff(){ - //todo 查询接口拿到核销乘客波播报 if ( backgroundCurrentStationIndex > stationList.size() - 1 ) { //到站短时间内调用多次 CallerLogger.INSTANCE.e( M_BUS + TAG, "数组越界" ); return; @@ -615,7 +627,7 @@ public class BusOrderModel { /** * 离站上报 */ - public void leaveStation(boolean isRestart){ + public void leaveStation(){ CallerLogger.INSTANCE.d(M_BUS + TAG,"leaveStation-backgroundCurrentStationIndex = "+backgroundCurrentStationIndex); String nextStationName = ""; if (backgroundCurrentStationIndex < stationList.size() - 1){ @@ -633,7 +645,7 @@ public class BusOrderModel { CallerLogger.INSTANCE.d( M_BUS + TAG, "自动驾驶开启开往下一站====" ); //需要更改当前站和下一站的状态 然后渲染 startOrStopQueryPassengerWriteOff(false); - leaveStationSuccess(isRestart); + leaveStationSuccess(); leaveTTSTips(finalNextStationName); queryBusRoutes(); } @@ -674,20 +686,20 @@ public class BusOrderModel { FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false; CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(false); CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false); - CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore:置为false(收车)"); + CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore:置为false"); } } /** * 开启自动驾驶到下一站 */ - public void autoDriveToNextStation(boolean isRestart) { + public void autoDriveToNextStation() { if ( backgroundCurrentStationIndex >= stationList.size() - 1 ) { // 当前站是最后一站,结束当前行程 travelOver(); return; } - leaveStation(isRestart); + leaveStation(); } /** @@ -736,14 +748,18 @@ public class BusOrderModel { // 美化是否开始 if (FunctionBuildConfig.isDemoMode && (backgroundCurrentStationIndex >= 0 - && backgroundCurrentStationIndex <= stationList.size()-1) - && stationList.get(backgroundCurrentStationIndex).isLeaving()){//行驶过程中设置美化 - FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true; - CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(true); - CallerAutoPilotManager.INSTANCE.setIPCDemoMode(true); - CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore:置为true(每次滑动出发)"); + && backgroundCurrentStationIndex <= stationList.size()-1)){//行驶过程中设置美化 + if (stationList.get(backgroundCurrentStationIndex).isLeaving()){ + startBeautificationMode(); + CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore:置为true(每次滑动出发)"); + }else { + closeBeautificationMode(); + CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore:false(到站)"); + clearStartAutopilotTag(); + } } + if ( currentStation.isLeaving() && slidePanelHideCallback != null) { slidePanelHideCallback.hideSlidePanel(); } @@ -755,6 +771,16 @@ public class BusOrderModel { BusTrajectoryManager.getInstance().syncTrajectoryInfo(); } + private void clearStartAutopilotTag() { + firstStartAutopilot = 0; + } + + private void startBeautificationMode() { + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true; + CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(true); + CallerAutoPilotManager.INSTANCE.setIPCDemoMode(true); + } + public void clearBusStationDatas(){ if (refreshBusStationsCallback != null){ refreshBusStationsCallback.clearBusStationsMarkers(); @@ -774,8 +800,11 @@ public class BusOrderModel { public void restartAutopilot() { CallerLogger.INSTANCE.d( M_BUS + TAG, "重启自动驾驶===" + isGoingToNextStation ); //只去启动自动驾驶,不再去上报离站 - startAutopilot(true); -// autoDriveToNextStation(true); + startAutopilot(firstStartAutopilot >= 1); + } + + public boolean isRestartAutopilot(){ + return firstStartAutopilot > 1; } /** @@ -832,12 +861,12 @@ public class BusOrderModel { if (isArrivedStation) return; isArrivedStation = true; - if (FunctionBuildConfig.isDemoMode && backgroundCurrentStationIndex <= stationList.size() - 1) {//到达一站结束美化 - FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false; - CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(false); - CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false); - CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore:置为false(到最后一站)"); - } +// if (FunctionBuildConfig.isDemoMode && backgroundCurrentStationIndex <= stationList.size() - 1) {//到达一站结束美化 +// closeBeautificationMode(); +// CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore:置为false(到最后一站)"); +// } + + CallerLogger.INSTANCE.d( M_BUS + TAG, "到站====currentStationIndex=" + backgroundCurrentStationIndex); isGoingToNextStation = false; diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index ec0839ab5a..03e14b23d9 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -9,6 +9,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.LifecycleOwner; +import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.mvp.Presenter; import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo; import com.mogo.eagle.core.data.config.FunctionBuildConfig; @@ -28,6 +29,7 @@ import com.mogo.och.bus.model.BusOrderModel; import com.mogo.och.bus.util.BusTrajectoryManager; import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean; import com.mogo.och.common.module.biz.callback.ILoginCallback; +import com.mogo.och.common.module.manager.OCHAdasAbilityManager; import com.mogo.och.common.module.utils.SoundPoolHelper; import com.zhidao.socket.utils.LoginStatusUtil; @@ -54,13 +56,14 @@ public class BusPresenter extends Presenter private int currentAutopilotStatus = -1; private List mStationList = new ArrayList<>(); private int mCurrentStation = 0; - private boolean isRestartAutopilot = false; +// private boolean isRestartAutopilot = false; public BusPresenter(BusFragment view) { super(view); //2021.11.1 鹰眼架构整合,由IMoGoAutopilotStatusListener逐步替代IMogoAdasOCHCallback接口 CallerAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, this); BusOrderModel.getInstance().init(); + OCHAdasAbilityManager.getInstance().init(AbsMogoApplication.getApp()); } @Override @@ -89,23 +92,24 @@ public class BusPresenter extends Presenter BusOrderModel.getInstance().setSlidePanelHideCallback(null); BusOrderModel.getInstance().setControllerStatusCallback(null); BusOrderModel.getInstance().setPassengerCallback(null); + OCHAdasAbilityManager.getInstance().release(); } public void abortTask() { BusOrderModel.getInstance().abortTask(); } - public void autoDriveToNextStation(boolean isRestart) { + public void autoDriveToNextStation() { currentAutopilotStatus = -1; - BusOrderModel.getInstance().autoDriveToNextStation(isRestart); - isRestartAutopilot = false; + BusOrderModel.getInstance().autoDriveToNextStation(); +// isRestartAutopilot = false; } public void restartAutopilot() { if (BusOrderModel.getInstance().isGoingToNextStation()){ currentAutopilotStatus = -1; BusOrderModel.getInstance().restartAutopilot(); - isRestartAutopilot = true; +// isRestartAutopilot = true; } } @@ -211,7 +215,7 @@ public class BusPresenter extends Presenter // 改变UI自动驾驶状态 runOnUIThread(() -> mView.onAutopilotStatusChanged(currentAutopilotStatus)); BusOrderModel.getInstance().triggerStartServiceEvent( - isRestartAutopilot, true); + BusOrderModel.getInstance().isRestartAutopilot(), true); } break; case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE: diff --git a/OCH/mogo-och-common-module/build.gradle b/OCH/mogo-och-common-module/build.gradle index fe23c542d0..25fe5914f5 100644 --- a/OCH/mogo-och-common-module/build.gradle +++ b/OCH/mogo-och-common-module/build.gradle @@ -73,4 +73,6 @@ dependencies { implementation project(':core:function-impl:mogo-core-function-v2x') } + implementation project(':libraries:mogo-adas') + } \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java new file mode 100644 index 0000000000..60901c1673 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java @@ -0,0 +1,215 @@ +package com.mogo.och.common.module.manager; + +import android.content.Context; + +import com.mogo.eagle.core.utilcode.mogo.logger.Logger; +import com.zhidao.support.adas.high.AdasManager; +import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.bean.AutopilotAbility; +import com.zhidao.support.adas.high.common.ProtocolStatus; + +import chassis.Chassis; +import chassis.VehicleStateOuterClass; +import mogo.telematics.pad.MessagePad; +import mogo_msg.MogoReportMsg; +import perception.TrafficLightOuterClass; +import prediction.Prediction; +import record_cache.RecordPanelOuterClass; +import system_master.SystemStatusInfo; + +/** + * Created on 2022/10/9 + * 工控机状态信息回调(判断是否能否启动自动驾驶的回调) + * 目前定的是3秒回调一次 + */ +public class OCHAdasAbilityManager { + + private static final String TAG = OCHAdasAbilityManager.class.getSimpleName(); + + + private boolean isAutopilotAbility = true; + private String autopilotAbilityReason = ""; + + private static final class SingletonHolder { + private static final OCHAdasAbilityManager INSTANCE = new OCHAdasAbilityManager(); + } + + public static OCHAdasAbilityManager getInstance() { + return SingletonHolder.INSTANCE; + } + + public void init(Context context) { + initListeners(); + } + + public boolean getAutopilotAbilityStatus(){ + return isAutopilotAbility; + } + + public String getAutopilotUnAbilityReason(){ + return autopilotAbilityReason; + } + + private void initListeners() { + //2022.10.9 工控机状态信息回调(判断是否能否启动自动驾驶的回调), 目前定的是3秒回调一次 + AdasManager.getInstance().setOnAdasListener(adasListener); + } + + private void releaseListeners() { + AdasManager.getInstance().setOnAdasListener(null); + } + + public void release() { + releaseListeners(); + } + + private final OnAdasListener adasListener = new OnAdasListener() { + @Override + public void onTrajectory(MessagePad.Header header, MessagePad.Trajectory trajectory) { + + } + + @Override + public void onTrackedObjects(MessagePad.Header header, MessagePad.TrackedObjects trackedObjects) { + + } + + @Override + public void onGnssInfo(MessagePad.Header header, MessagePad.GnssInfo gnssInfo) { + + } + + @Override + public void onVehicleState(MessagePad.Header header, VehicleStateOuterClass.VehicleState vehicleState) { + + } + + @Override + public void onAutopilotState(MessagePad.Header header, MessagePad.AutopilotState autopilotState) { + + } + + @Override + public void onReportMessage(MessagePad.Header header, MogoReportMsg.MogoReportMessage mogoReportMessage) { + + } + + @Override + public void onPerceptionTrafficLight(MessagePad.Header header, TrafficLightOuterClass.TrafficLights trafficLights) { + + } + + @Override + public void onPredictionObstacleTrajectory(MessagePad.Header header, Prediction.mPredictionObjects predictionObjects) { + + } + + @Override + public void onPointCloud(byte[] pointCloud) { + + } + + @Override + public void onPlanningObjects(MessagePad.Header header, MessagePad.PlanningObjects planningObjects) { + + } + + @Override + public void onBasicInfoReq(MessagePad.Header header, MessagePad.BasicInfoReq basicInfoReq) { + + } + + @Override + public void onCarConfigResp(MessagePad.Header header, MessagePad.CarConfigResp carConfigResp) { + + } + + @Override + public void onRecordResult(MessagePad.Header header, RecordPanelOuterClass.RecordPanel recordPanel) { + + } + + @Override + public void onGlobalPathResp(MessagePad.Header header, MessagePad.GlobalPathResp globalPathResp) { + + } + + @Override + public void onWarn(MessagePad.Header header, MessagePad.Warn warn) { + + } + + @Override + public void onArrivalNotification(MessagePad.Header header, MessagePad.ArrivalNotification arrivalNotification) { + + } + + @Override + public void onStatusQueryResp(MessagePad.Header header, SystemStatusInfo.StatusInfo statusInfo) { + + } + + @Override + public void onRecordDataConfigResp(MessagePad.Header header, MessagePad.RecordDataConfig config) { + + } + + @Override + public void onPlanningActionMsg(MessagePad.Header header, MessagePad.PlanningActionMsg planningActionMsg) { + + } + + @Override + public void onError(ProtocolStatus status, byte[] bytes) { + + } + + @Override + public void onAutopilotAbility(AutopilotAbility ability) { + isAutopilotAbility = true; + autopilotAbilityReason = null; + if (ability.gear == null || ability.gear == Chassis.GearPosition.GEAR_P || ability.gear == Chassis.GearPosition.GEAR_R) { + isAutopilotAbility = false; + autopilotAbilityReason = "挡位不正常"; + } + if (isAutopilotAbility) + if (ability.brake > 0) { + isAutopilotAbility = false; + autopilotAbilityReason = "制动踏板被踩下"; + } + + if (isAutopilotAbility) + if (ability.statusInfo.getSysState() == SystemStatusInfo.SystemState.SYS_STARTING) { + isAutopilotAbility = false; + autopilotAbilityReason = "系统正在启动"; + } + if (isAutopilotAbility) + if (ability.statusInfo.getSysState() == SystemStatusInfo.SystemState.SYS_EXITING) { + isAutopilotAbility = false; + autopilotAbilityReason = "系统正在关闭"; + } + // 暂时先拦截及提示以上4种异常情况 +// if (isAutopilotAbility) +// if (ability.statusInfo == null) { +// isAutopilotAbility = false; +// autopilotAbilityReason = "系统Topic不正常"; +// } +// if (isAutopilotAbility) +// if (ability.statusInfo.getSysState() == SystemStatusInfo.SystemState.SYS_FAULT) { +// isAutopilotAbility = false; +// autopilotAbilityReason = "系统异常"; +// } +// +// if (isAutopilotAbility) +// for (SystemStatusInfo.HealthInfo healthInfo : ability.statusInfo.getHealthInfoList()) { +// if (healthInfo.getState() == SystemStatusInfo.HealthState.FAULT) { +// isAutopilotAbility = false; +// autopilotAbilityReason = healthInfo.getName() + " Topic异常"; +// break; +// } +// } + + Logger.d(TAG, "是否可以启动自动驾驶=" + isAutopilotAbility + " 原因=" + autopilotAbilityReason); + } + }; +} diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiControllerStatusCallback.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiControllerStatusCallback.java index ad3229062c..439f6ea974 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiControllerStatusCallback.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiControllerStatusCallback.java @@ -12,4 +12,6 @@ public interface ITaxiControllerStatusCallback { void onVRModeChanged(boolean isVRMode); // 自车定位 void onCarLocationChanged(Location location); + //开始开启自动驾驶 + void startOpenAutopilot(); } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 755dc34a0d..5dce74196c 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -37,6 +37,7 @@ import com.mogo.module.common.MogoApisHandler; import com.mogo.och.common.module.biz.constant.LoginStatusManager; import com.mogo.och.common.module.biz.constant.OchCommonConst; import com.mogo.och.common.module.biz.provider.LoginService; +import com.mogo.och.common.module.manager.OCHAdasAbilityManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.PinYinUtil; import com.mogo.och.common.module.utils.ToastUtilsOch; @@ -875,6 +876,12 @@ public class TaxiModel { return; } + if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()){ + ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() + + ", 请稍候重试"); + return; + } + if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE == CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState()) { // TODO: 2021/11/28 工控机存在刚开始状态为0,但是可以开启变为2,工控机解决前不显示此toast @@ -897,12 +904,19 @@ public class TaxiModel { } CallerAutoPilotManager.INSTANCE.startAutoPilot(parameters); - CallerLogger.INSTANCE.d(M_TAXI + TAG, "start autopilot with parameter: %s", GsonUtil.jsonFromObject(parameters) - + " ,startSiteName=" + mCurrentOCHOrder.startSiteAddr + " ,endSiteName=" + mCurrentOCHOrder.endSiteAddr); + CallerLogger.INSTANCE.d(M_TAXI + TAG, "start autopilot with parameter: %s", + GsonUtil.jsonFromObject(parameters) + + " ,startSiteName=" + mCurrentOCHOrder.startSiteAddr + + " ,endSiteName=" + mCurrentOCHOrder.endSiteAddr + + "isRestartAutopilot = "+isRestartAutopilot); TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent(isRestartAutopilot, false, mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo); + if (mControllerStatusCallback != null) { + mControllerStatusCallback.startOpenAutopilot(); + } + // TODO: 2021/8/20 无工控机环境, 手动调起自动驾驶开启返回结果,有工控机环境要删除 // OCHTaxiUiController.getInstance().onAutoPilotStatusChanged( IMogoAdasOCHCallback.STATUS_AUTOPILOT_RUNNING, "开启自动驾驶" ); } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java index 3478be286d..b6cdb73c6b 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java @@ -18,6 +18,7 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler; 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.constant.LoginStatusManager; +import com.mogo.och.common.module.manager.OCHAdasAbilityManager; import com.mogo.och.taxi.constant.TaxiConst; import com.mogo.och.taxi.constant.TaxiDriverRoleEnum; import com.mogo.och.taxi.constant.TaxiOrderStatusEnum; @@ -51,6 +52,7 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS public TaxiPresenter(TaxiFragment view) { super(view); TaxiModel.getInstance().init(AbsMogoApplication.getApp()); + OCHAdasAbilityManager.getInstance().init(AbsMogoApplication.getApp()); initListeners(); } @@ -73,6 +75,7 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS TaxiModel.getInstance().setCarStatusCallback(this); TaxiModel.getInstance().setControllerStatusCallback(this); TaxiModel.getInstance().setOrderStatusCallback(this); + OCHAdasAbilityManager.getInstance().release(); } private void releaseListeners() { @@ -318,6 +321,13 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS } } + @Override + public void startOpenAutopilot() { + runOnUIThread(() -> { + mView.startOrStopLoadingAnim(true); + }); + } + @Override public void loginSuccess(DriverStatusQueryRespBean data) { //设置 接单状态 diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java index 42b2f906cc..c7e70d1105 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java @@ -247,7 +247,7 @@ public abstract class BaseTaxiTabFragment { if (!isStarting){ mPresenter.startAutoPilot(); - startOrStopLoadingAnim(true); } TaxiModel.getInstance().setOnTheWayToEndStation(); }); From d470cf38deadd58c3975ed0d94da5804f391f87c Mon Sep 17 00:00:00 2001 From: renwj Date: Tue, 11 Oct 2022 15:18:48 +0800 Subject: [PATCH 006/203] =?UTF-8?q?[Route][Log]=E6=B7=BB=E5=8A=A0=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E8=BF=BD=E8=B8=AA=E5=BC=95=E5=AF=BC=E7=BA=BF=E7=BB=98?= =?UTF-8?q?=E5=88=B6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/och/bus/model/BusOrderModel.java | 4 ++++ .../src/main/java/com/mogo/och/taxi/model/TaxiModel.java | 5 +++-- .../core/function/autopilot/telematic/TeleMsgHandler.kt | 3 ++- .../eagle/core/function/hmi/ui/setting/DebugSettingView.kt | 2 ++ .../module/service/routeoverlay/MogoRouteOverlayManager.java | 5 +++++ 5 files changed, 16 insertions(+), 3 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index 5bac0ffcae..250ecc2105 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -28,6 +28,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.eagle.core.utilcode.mogo.logger.Logger; import com.mogo.eagle.core.utilcode.util.NetworkUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; @@ -682,6 +683,7 @@ public class BusOrderModel { * 关闭美化模式 */ public void closeBeautificationMode() { + Logger.d("Route", "BusOrderModel -> closeBeautificationMode ==> isDemoMode:" + FunctionBuildConfig.isDemoMode); if (FunctionBuildConfig.isDemoMode) {//收车结束美化 FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false; CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(false); @@ -747,6 +749,7 @@ public class BusOrderModel { +" isLeaving()="+currentStation.isLeaving()); // 美化是否开始 + Logger.d("Route", "BusOrderModel -> updateBusStatus ==> isDemoMode:" + FunctionBuildConfig.isDemoMode); if (FunctionBuildConfig.isDemoMode && (backgroundCurrentStationIndex >= 0 && backgroundCurrentStationIndex <= stationList.size()-1)){//行驶过程中设置美化 if (stationList.get(backgroundCurrentStationIndex).isLeaving()){ @@ -776,6 +779,7 @@ public class BusOrderModel { } private void startBeautificationMode() { + Logger.d("Route", "BusOrderModel -> startBeautificationMode ==> ignore = true"); FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true; CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(true); CallerAutoPilotManager.INSTANCE.setIPCDemoMode(true); diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 5dce74196c..45a0278c55 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -792,7 +792,7 @@ public class TaxiModel { GsonUtil.jsonFromObject(data)); if (mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.getCode()){ - + Logger.d("Route", "TaxiModel -> updateNativeCurrentOrder ==> isDemoMode:" + FunctionBuildConfig.isDemoMode); if (FunctionBuildConfig.isDemoMode) { // 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true; @@ -839,6 +839,7 @@ public class TaxiModel { TaxiTrajectoryManager.getInstance().syncTrajectoryInfo(); SharedPrefsMgr.getInstance(mContext).remove(TaxiConst.SP_KEY_OCH_TAXI_ORDER); isRestartAutopilot = false; + Logger.d("Route", "TaxiModel -> clearCurrentOCHOrder ==> isDemoMode:" + FunctionBuildConfig.isDemoMode); if (FunctionBuildConfig.isDemoMode) { // 当美化模式(演示模式)开启时: 取消或订单已完成时,置false FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false; @@ -1143,7 +1144,7 @@ public class TaxiModel { TaxiAnalyticsManager.getInstance().triggerStartAutopilotEvent(isRestartAutopilot, true, mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo); - + Logger.d("Route", "TaxiModel -> onAutopilotStatusResponse ==> isDemoMode:" + FunctionBuildConfig.isDemoMode); if (FunctionBuildConfig.isDemoMode) { // 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后,置true FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true; diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/telematic/TeleMsgHandler.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/telematic/TeleMsgHandler.kt index 78a8bad488..1e21903503 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/telematic/TeleMsgHandler.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/telematic/TeleMsgHandler.kt @@ -13,7 +13,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager.setDemoMode import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager.setIgnoreConditionDraw import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.* import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.telematic.MogoProtocolMsg @@ -118,6 +118,7 @@ class TeleMsgHandler : IMsgHandler { "1" -> true else -> false } + Logger.d("Route", "TeleMsgHandler -> handleMsgFromServer ==> isDemoMode:" + FunctionBuildConfig.isDemoMode + ",isIgnore:" + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData) timestamp = currTime invokeNettyConnResult("乘客屏收到的美化模式isIgnore为:${FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData}") } else { 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 c8315389c1..f7d33700c7 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 @@ -578,6 +578,7 @@ class DebugSettingView @JvmOverloads constructor( } FunctionBuildConfig.isDemoMode = isChecked tbIsDrawAutopilotTrajectoryData.isEnabled = !isChecked + Logger.d("Route", "DebugSettingView -> initView ==> isDemoMode:" + FunctionBuildConfig.isDemoMode + ",isIgnore: $isChecked" ) FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = isChecked if (!FunctionBuildConfig.isDemoMode) { tbIsDrawAutopilotTrajectoryData.isChecked = false @@ -622,6 +623,7 @@ class DebugSettingView @JvmOverloads constructor( // 强制绘制引导线 tbIsDrawAutopilotTrajectoryData.setOnCheckedChangeListener { _, isChecked -> + Logger.d("Route", "DebugSettingView -> initView2 ==> isDemoMode:" + FunctionBuildConfig.isDemoMode + ",isIgnore: $isChecked") FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = isChecked } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java index 0f750c2892..14caea1f5a 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java @@ -15,6 +15,7 @@ import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager; import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager; +import com.mogo.eagle.core.utilcode.mogo.logger.Logger; import org.jetbrains.annotations.NotNull; @@ -61,6 +62,7 @@ public class MogoRouteOverlayManager implements @Override public void onAutopilotTrajectory(@NonNull List items) { + Logger.d(TAG, "--- onAutopilotTrajectory ---:" + items.size()); synchronized (queue) { queue.clear(); queue.offer(items); @@ -73,17 +75,20 @@ public class MogoRouteOverlayManager implements return; } if (isArriveAtStation.get()) { + Logger.d(TAG, "--- onLocationChanged 1 -- [isDemo1: " + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData + ",isDemo2:" +FunctionBuildConfig.isDemoMode + ",isGps:" + isGps + ",mode:" + autopilotMode.get() + ",lon:" + location.getLongitude() + ",lat:" + location.getLatitude() + ",angle:" + location.getBearing() + "]"); RouteOverlayDrawer.getInstance().clearMogoRouteOverlay(); return; } boolean force = FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData; if (!force && autopilotMode.get() != 1) { + Logger.d(TAG, "--- onLocationChanged 2 -- [isDemo1: " + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData + ",isDemo2:" +FunctionBuildConfig.isDemoMode + ",isGps:" + isGps + ",mode:" + autopilotMode.get() + ",lon:" + location.getLongitude() + ",lat:" + location.getLatitude() + ",angle:" + location.getBearing() + "]"); RouteOverlayDrawer.getInstance().clearMogoRouteOverlay(); return; } synchronized (queue) { List items = queue.peekLast(); if (items != null && !items.isEmpty()) { + Logger.d(TAG, "--- onLocationChanged -- [isDemo1: " + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData + ",isDemo2:" +FunctionBuildConfig.isDemoMode + ",isGps:" + isGps + ",mode:" + autopilotMode.get() + ",lon:" + location.getLongitude() + ",lat:" + location.getLatitude() + ",angle:" + location.getBearing() + "]"); RouteOverlayDrawer.getInstance().drawTrajectoryList(items, location.getBearing()); } } From e62a9d7dbb710cd7ab771ee970f4aaaec5446004 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 12 Oct 2022 11:18:02 +0800 Subject: [PATCH 007/203] =?UTF-8?q?[feature]=20=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=BD=91=E7=BB=9C=E8=BF=9E=E6=8E=A5=20token=E5=A4=B1=E6=95=88?= =?UTF-8?q?=E5=90=8E=E8=8E=B7=E5=8F=963s=201s=202s=20=E4=B8=89=E6=AC=A1?= =?UTF-8?q?=E9=87=8D=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../passenger/model/BusPassengerModel.java | 10 +- .../network/BusPassengerServiceCallback.java | 15 - .../network/BusPassengerServiceManager.java | 118 ----- .../network/BusPassengerServiceManager.kt | 62 +++ .../com/mogo/och/bus/model/BusLineModel.java | 14 +- .../com/mogo/och/bus/model/BusOrderModel.java | 48 +- .../mogo/och/bus/net/BusServiceManager.java | 270 ---------- .../com/mogo/och/bus/net/BusServiceManager.kt | 268 ++++++++++ .../mogo/och/bus/net/IBusServiceCallback.java | 15 - .../common/module/utils/SimpleInterceptor.kt | 51 +- .../module/biz/model/OchCommonLoginModel.kt | 100 ++-- .../biz/model/OchCommonLoginStatusModel.java | 4 +- .../biz/network/OchCommonServiceManager.java | 187 ------- .../biz/network/OchCommonServiceManager.kt | 154 ++++++ .../biz/network/OchCommonSubscribeImpl.kt | 36 ++ .../biz/network/interceptor/FRetryWithTime.kt | 20 + .../interceptor/OchCommonNetInterceptor.kt | 13 + .../interceptor/OchCommonRetryException.java | 5 + .../biz/network/interceptor/RetryWithTime.kt | 30 ++ .../common/module/utils/CallerLoggerUtils.kt | 31 ++ .../passenger/model/TaxiPassengerModel.java | 30 +- .../network/TaxiPassengerServiceCallback.java | 18 - .../network/TaxiPassengerServiceManager.java | 208 -------- .../network/TaxiPassengerServiceManager.kt | 199 +++++++ .../ui/comment/TaxiPassengerArrivedView.kt | 10 +- .../com/mogo/och/taxi/model/TaxiModel.java | 94 ++-- .../och/taxi/network/TaxiServiceCallback.java | 18 - .../och/taxi/network/TaxiServiceManager.java | 463 ---------------- .../och/taxi/network/TaxiServiceManager.kt | 497 ++++++++++++++++++ .../function/hmi/ui/tools/BusOperationView.kt | 2 +- 30 files changed, 1474 insertions(+), 1516 deletions(-) delete mode 100644 OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceCallback.java delete mode 100644 OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.java create mode 100644 OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt delete mode 100644 OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.java create mode 100644 OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.kt delete mode 100644 OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusServiceCallback.java delete mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.java create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.kt create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonSubscribeImpl.kt create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/FRetryWithTime.kt create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonNetInterceptor.kt create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonRetryException.java create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/RetryWithTime.kt create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CallerLoggerUtils.kt delete mode 100644 OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceCallback.java delete mode 100644 OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java create mode 100644 OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt delete mode 100644 OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceCallback.java delete mode 100644 OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.java create mode 100644 OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.kt diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java index 6d6be9bf00..1c2278ae61 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java @@ -39,8 +39,8 @@ import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback import com.mogo.och.bus.passenger.callback.IBusPassengerRouteLineInfoCallback; import com.mogo.och.bus.passenger.constant.BusPassengerConst; import com.mogo.och.bus.passenger.network.BusPassengerModelLoopManager; -import com.mogo.och.bus.passenger.network.BusPassengerServiceCallback; import com.mogo.och.bus.passenger.network.BusPassengerServiceManager; +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.statusmanager.IMogoStatusChangedListener; @@ -129,8 +129,8 @@ public class BusPassengerModel { } private void queryDriverOperationStatus() { - BusPassengerServiceManager.getInstance().queryDriverOperationStatus(mContext - , new BusPassengerServiceCallback() { + BusPassengerServiceManager.queryDriverOperationStatus(mContext + , new OchCommonServiceCallback() { @Override public void onSuccess(BusPassengerOperationStatusResponse data) { if (data == null || data.data == null) return; @@ -149,8 +149,8 @@ public class BusPassengerModel { } public void queryDriverSiteByCoordinate(){ - BusPassengerServiceManager.getInstance().queryDriverSiteByCoordinate(mContext - , new BusPassengerServiceCallback() { + BusPassengerServiceManager.queryDriverSiteByCoordinate(mContext + , new OchCommonServiceCallback() { @Override public void onSuccess(BusPassengerRoutesResponse data) { if ( data == null diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceCallback.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceCallback.java deleted file mode 100644 index fb53106dcd..0000000000 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceCallback.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.mogo.och.bus.passenger.network; - -/** - * Created on 2022/3/31 - */ -public interface BusPassengerServiceCallback { - - void onSuccess(T data); - - void onFail(int code, String msg); - - default void onError() { - - } -} diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.java deleted file mode 100644 index b155cb084c..0000000000 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.mogo.och.bus.passenger.network; - -import android.content.Context; - -import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -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.network.RequestOptions; -import com.mogo.eagle.core.network.SubscribeImpl; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse; -import com.mogo.och.bus.passenger.bean.BusPassengerQueryLineRequest; -import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResponse; -import com.mogo.och.bus.passenger.constant.BusPassengerConst; - -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS_P; - -/** - * Created on 2022/3/31 - */ -public class BusPassengerServiceManager { - private static final String TAG = BusPassengerServiceManager.class.getSimpleName(); - - private static final class SingletonHolder { - private static final BusPassengerServiceManager INSTANCE = new BusPassengerServiceManager(); - } - - public static BusPassengerServiceManager getInstance() { - return SingletonHolder.INSTANCE; - } - - private BusPassengerServiceApi mBusPassengerServiceApi; - - private BusPassengerServiceManager() { - if (mBusPassengerServiceApi == null){ - mBusPassengerServiceApi = MoGoRetrofitFactory.getInstance( - BusPassengerConst.getBaseUrl()).create(BusPassengerServiceApi.class); - } - } - - /** - * 获取Bus司机端的sn - * @return - */ - private String getDriverAppSn(){ - return CallerTelematicManager.INSTANCE.getServerToken(); -// return "X2020211111NG0XNFK"; - } - - /** - * 查询绑定行驶的小巴车路线 - * @param context - * @param callback - */ - public void queryDriverSiteByCoordinate(Context context - ,BusPassengerServiceCallback callback){ - mBusPassengerServiceApi.queryDriverSiteByCoordinate(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusPassengerQueryLineRequest(getDriverAppSn())) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"queryDriverSiteByCoordinate")); - } - - /** - * 查询司机端出车收车状态,以及车牌号 - * @param context - * @param callback - */ - public void queryDriverOperationStatus(Context context, BusPassengerServiceCallback callback){ - mBusPassengerServiceApi.queryDriverOperationStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,getDriverAppSn()) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"queryDriverOperationStatus")); - } - - - private SubscribeImpl getSubscribeImpl( - Context context, BusPassengerServiceCallback callback, String apiName) { - return new SubscribeImpl(RequestOptions.create(context)) { - @Override - public void onSuccess(T o) { - super.onSuccess(o); - CallerLogger.INSTANCE.e(M_BUS_P + TAG,apiName + - ": onSuccess() " + o.msg); - if (callback != null) { - callback.onSuccess(o); - } - } - - @Override - public void onError(Throwable e) { - super.onError(e); - CallerLogger.INSTANCE.e(M_BUS_P + TAG,apiName + - ": onError() " + e.getMessage()); - if (callback != null) { - callback.onError(); - } - } - - @Override - public void onError(String message, int code) { - super.onError(message, code); - CallerLogger.INSTANCE.e(M_BUS_P + TAG,String.format(apiName + - ": onError() code = %d; message = %s;", code, message)); - if (callback != null) { - callback.onFail(code, message); - } - } - }; - } -} diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt new file mode 100644 index 0000000000..0e70161643 --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt @@ -0,0 +1,62 @@ +package com.mogo.och.bus.passenger.network + +import android.content.Context +import com.mogo.och.bus.passenger.constant.BusPassengerConst.Companion.getBaseUrl +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.getServerToken +import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResponse +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.och.bus.passenger.bean.BusPassengerQueryLineRequest +import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse +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 + +/** + * Created on 2022/3/31 + */ +object BusPassengerServiceManager { + + private var mBusPassengerServiceApi = MoGoRetrofitFactory.getInstance(getBaseUrl()) + .create(BusPassengerServiceApi::class.java) + + /** + * 获取Bus司机端的sn + * @return + */ + private val driverAppSn: String + get() = getServerToken() + /** + * 查询绑定行驶的小巴车路线 + * @param context + * @param callback + */ + @JvmStatic + fun queryDriverSiteByCoordinate( + context: Context, callback: OchCommonServiceCallback? + ) { + mBusPassengerServiceApi.queryDriverSiteByCoordinate( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusPassengerQueryLineRequest(driverAppSn)) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverSiteByCoordinate")) + } + + /** + * 查询司机端出车收车状态,以及车牌号 + * @param context + * @param callback + */ + @JvmStatic + fun queryDriverOperationStatus( + context: Context, + callback: OchCommonServiceCallback?) { + mBusPassengerServiceApi.queryDriverOperationStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + driverAppSn) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverOperationStatus")) + } +} \ No newline at end of file diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusLineModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusLineModel.java index fe1b1ba2d2..4e8d22d921 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusLineModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusLineModel.java @@ -11,8 +11,8 @@ import com.mogo.och.bus.bean.BusQueryLinesResponse; import com.mogo.och.bus.bean.BusRoutesResponse; import com.mogo.och.bus.callback.IBusLinesCallback; import com.mogo.och.bus.net.BusServiceManager; -import com.mogo.och.bus.net.IBusServiceCallback; import com.mogo.och.bus.ui.BusSwitchLineActivity; +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; /** * @author: wangmingjun @@ -42,7 +42,7 @@ public class BusLineModel { mBusLinesCallback = callback; } public void queryBusLines(){ - BusServiceManager.getInstance().queryBusLines(mContext, new IBusServiceCallback() { + BusServiceManager.queryBusLines(mContext, new OchCommonServiceCallback() { @Override public void onSuccess(BusQueryLinesResponse data) { if (null == data && mBusLinesCallback != null) { @@ -56,7 +56,7 @@ public class BusLineModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { ToastUtils.showShort("网络异常,请稍后重试"); }else { @@ -72,7 +72,7 @@ public class BusLineModel { * @param position 位置 */ public void queryBusLineTasksById(int lineId, int position,boolean autoRefresh){ - BusServiceManager.getInstance().queryBusTaskByLineId(mContext, String.valueOf(lineId),new IBusServiceCallback() { + BusServiceManager.queryBusTaskByLineId(mContext, String.valueOf(lineId),new OchCommonServiceCallback() { @Override public void onSuccess(BusQueryLineTaskResponse data) { if (null == data && mBusLinesCallback != null) { @@ -86,7 +86,7 @@ public class BusLineModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { ToastUtils.showShort("网络异常,请稍后重试"); }else { @@ -97,7 +97,7 @@ public class BusLineModel { } public void commitSwitchLineId(int taskId,int lineId){ - BusServiceManager.getInstance().switchLine(mContext,taskId, new IBusServiceCallback() { + BusServiceManager.switchLine(mContext,taskId, new OchCommonServiceCallback() { @Override public void onSuccess(BusRoutesResponse o) { SharedPrefs.getInstance(mContext).putInt(BusSwitchLineActivity.LASTCOMMITLINEID,lineId); @@ -107,7 +107,7 @@ public class BusLineModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { ToastUtils.showShort("网络异常,请稍后重试"); }else { diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index 250ecc2105..ea47eb23de 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -47,11 +47,11 @@ import com.mogo.och.bus.callback.IRefreshBusStationsCallback; import com.mogo.och.bus.callback.ISlidePannelHideCallback; import com.mogo.och.bus.constant.BusConst; import com.mogo.och.bus.net.BusServiceManager; -import com.mogo.och.bus.net.IBusServiceCallback; import com.mogo.och.bus.presenter.BusModelLoopManager; import com.mogo.och.bus.util.BusAnalyticsManager; import com.mogo.och.bus.util.BusTrajectoryManager; 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.provider.LoginService; import com.mogo.och.common.module.manager.OCHAdasAbilityManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; @@ -254,15 +254,15 @@ public class BusOrderModel { BusStationBean currentStation = stationList.get( backgroundCurrentStationIndex); BusStationBean nextStation = stationList.get( backgroundCurrentStationIndex +1); - BusServiceManager.getInstance().updateOrderRoute(mContext, currentLineId, currentStation.getSiteId() - , nextStation.getSiteId(), points, new IBusServiceCallback() { + BusServiceManager.updateOrderRoute(mContext, currentLineId, currentStation.getSiteId() + , nextStation.getSiteId(), points, new OchCommonServiceCallback() { @Override public void onSuccess(BaseData o) { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (isGoingToNextStation){//重试 updateOrderRoute(); } @@ -361,7 +361,7 @@ public class BusOrderModel { */ public void queryBusRoutes() { CallerLogger.INSTANCE.d(M_BUS + TAG, "查询小巴路线"); - BusServiceManager.getInstance().queryBusRoutes(mContext, new IBusServiceCallback() { + BusServiceManager.queryBusRoutes(mContext, new OchCommonServiceCallback() { @Override public void onSuccess(BusRoutesResponse data) { if ( data == null @@ -382,7 +382,7 @@ public class BusOrderModel { updateBusStatus( data.getResult()); } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { // 重复请求小巴路线,直至成功 //改为任务,为空不再去一直取 // queryBusStationDelay(); @@ -448,8 +448,8 @@ public class BusOrderModel { */ public void abortTask() { CallerLogger.INSTANCE.d( M_BUS + TAG, "结束当前路线abortTask"); - BusServiceManager.getInstance().abortTask(mContext, currentTaskId - , new IBusServiceCallback() { + BusServiceManager.abortTask(mContext, currentTaskId + , new OchCommonServiceCallback() { @Override public void onSuccess(BaseData o) { CallerLogger.INSTANCE.d(M_BUS + TAG, "abortTask success: " + o); @@ -461,7 +461,7 @@ public class BusOrderModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { ToastUtils.showShort(failMsg); } }); @@ -540,11 +540,11 @@ public class BusOrderModel { CallerLogger.INSTANCE.e( M_BUS + TAG, "数组越界" ); return; } - BusServiceManager.getInstance().queryStationWriteOffPassengers(mContext, + BusServiceManager.queryStationWriteOffPassengers(mContext, currentTaskId, stationList.get(backgroundCurrentStationIndex).getSiteId(), prePassengerWriteOffTime, - new IBusServiceCallback(){ + new OchCommonServiceCallback(){ @Override public void onSuccess(BusQueryWriteOffPassengersResponse o) { @@ -556,7 +556,7 @@ public class BusOrderModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { } }); @@ -596,11 +596,11 @@ public class BusOrderModel { String arriveStation = stationList.get(arrivedStationIndex).getName(); CallerLogger.INSTANCE.d(M_BUS + TAG,"arriveSiteStation-currentStationIndex = "+ arrivedStationIndex); - BusServiceManager.getInstance().arriveSiteStation(mContext , + BusServiceManager.arriveSiteStation(mContext , stationList.get(arrivedStationIndex).getSeq(), stationList.get(arrivedStationIndex).getSiteId(), currentTaskId , - new IBusServiceCallback() { + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData o) { CallerLogger.INSTANCE.d(M_BUS + TAG,"arriveSiteStation success"); @@ -615,7 +615,7 @@ public class BusOrderModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { ToastUtils.showShort("网络异常,请稍后重试"); }else { @@ -635,11 +635,11 @@ public class BusOrderModel { nextStationName = stationList.get(backgroundCurrentStationIndex + 1).getName(); } String finalNextStationName = nextStationName; - BusServiceManager.getInstance().leaveStation(mContext, + BusServiceManager.leaveStation(mContext, stationList.get(backgroundCurrentStationIndex).getSeq(), stationList.get(backgroundCurrentStationIndex).getSiteId(), currentTaskId, - new IBusServiceCallback() { + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData o) { isArrivedStation = false; @@ -651,7 +651,7 @@ public class BusOrderModel { queryBusRoutes(); } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { ToastUtils.showShort("网络异常,请稍后重试"); }else{ @@ -831,8 +831,8 @@ public class BusOrderModel { */ private void endTask() { CallerLogger.INSTANCE.d( M_BUS + TAG, "任务正常走完endTask()"); - BusServiceManager.getInstance().endTask(mContext, currentTaskId - , new IBusServiceCallback() { + BusServiceManager.endTask(mContext, currentTaskId + , new OchCommonServiceCallback() { @Override public void onSuccess(BaseData o) { CallerLogger.INSTANCE.d(M_BUS + TAG, "endTask success: " + o); @@ -846,7 +846,7 @@ public class BusOrderModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { ToastUtils.showShort(failMsg); } }); @@ -883,15 +883,15 @@ public class BusOrderModel { // 车机端上传心跳数据(只在出车状态时上传) public void runCarHeartbeat() { - BusServiceManager.getInstance().runCarHeartbeat(mContext, mLongitude, mLatitude, - new IBusServiceCallback() { + BusServiceManager.runCarHeartbeat(mContext, mLongitude, mLatitude, + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { } }); diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.java deleted file mode 100644 index d99fcc5d26..0000000000 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.java +++ /dev/null @@ -1,270 +0,0 @@ -package com.mogo.och.bus.net; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; - -import android.content.Context; - -import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -import com.mogo.eagle.core.data.BaseData; -import com.mogo.eagle.core.network.MoGoRetrofitFactory; -import com.mogo.eagle.core.network.RequestOptions; -import com.mogo.eagle.core.network.SubscribeImpl; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.och.bus.bean.BusCloseTaskRequest; -import com.mogo.och.bus.bean.BusQueryLineTaskResponse; -import com.mogo.och.bus.bean.BusQueryLinesResponse; -import com.mogo.och.bus.bean.BusQueryWriteOffPassengersResponse; -import com.mogo.och.bus.bean.BusRoutePlanningUpdateReqBean; -import com.mogo.och.bus.bean.BusRoutesResponse; -import com.mogo.och.bus.bean.BusWriteOffPassengersQueryRequest; -import com.mogo.och.bus.bean.CarHeartbeatReqBean; -import com.mogo.och.bus.bean.BusOrdersResponse; -import com.mogo.och.bus.bean.BusQueryLineStationsRequest; -import com.mogo.och.bus.bean.BusResetDrivingLineRequest; -import com.mogo.och.bus.bean.BusUpdateSiteStatusRequest; -import com.mogo.och.bus.bean.QueryLeaveAwayPassengersRequest; -import com.mogo.och.bus.bean.QueryLeaveAwayPassengersResponse; -import com.mogo.och.bus.constant.BusConst; -import com.mogo.och.bus.model.BusOrderModel; - -import java.util.List; - -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -/** - * @author: wangmingjun - * @date: 2021/10/20 - */ -public class BusServiceManager { - - private static final String TAG = BusServiceManager.class.getSimpleName(); - - private final IBusApiService mService; - - private static final class SingletonHolder { - private static final BusServiceManager INSTANCE = new BusServiceManager(); - } - - public static BusServiceManager getInstance(){ - return SingletonHolder.INSTANCE; - } - - private BusServiceManager(){ - mService = MoGoRetrofitFactory.getInstance(BusConst.getBaseUrl()).create(IBusApiService.class); - } - - /** - * 查询小巴车当前任务 - * @param context - * @param callback - */ - public void queryBusRoutes(Context context, IBusServiceCallback callback) { - //获取当前高德坐标 - - mService.queryBusRoutes(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - , new BusQueryLineStationsRequest()) - .subscribeOn( Schedulers.io() ).observeOn( AndroidSchedulers.mainThread() ) - .subscribe( getSubscribeImpl(context,callback,"queryBusRoutes")); - } - - /** - * 重置线路站点 - * @param context - * @param taskId - * @param callback - */ - public void switchLine(Context context, int taskId, IBusServiceCallback callback){ - mService.switchLine(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),new BusResetDrivingLineRequest(taskId)) - .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"switchLine")); - } - - /** - * 中断当前任务 - * @param context - * @param taskId - * @param callback - */ - public void abortTask(Context context, int taskId, IBusServiceCallback callback){ - mService.abortTask(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusCloseTaskRequest(taskId)) - .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"abortTask")); - } - - /** - * 正常结束任务 - * @param context - * @param taskId - * @param callback - */ - public void endTask(Context context, int taskId, IBusServiceCallback callback){ - mService.endTask(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusCloseTaskRequest(taskId)) - .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"endTask")); - } - - /** - * 离站上报 - * @param context - * @param seq - * @param siteId - * @param callback - */ - public void leaveStation(Context context, int seq, int siteId,int taskId, IBusServiceCallback callback){ - mService.leaveStation(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusUpdateSiteStatusRequest(taskId,siteId,seq)) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"leaveStation")); - } - - /** - * 到站更新站点状态 - * @param context - * @param seq - * @param siteId - * @param callback - */ - public void arriveSiteStation(Context context, int seq, int siteId,int taskId, - IBusServiceCallback callback){ - mService.arriveSiteStation(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusUpdateSiteStatusRequest(taskId,siteId,seq)) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"arriveSiteStation")); - } - - /** - * 查询下车乘客 - * @param context - * @param seq - * @param siteId - * @param callback - */ - public void queryStationLeaveAwayPassengers(Context context, int seq, int siteId - , IBusServiceCallback callback){ - mService.queryStationLeaveAwayPassengers( MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),new QueryLeaveAwayPassengersRequest(seq,siteId)) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"queryStationLeaveAwayPassengers")); - } - - /** - * 查询当前到站点核销乘客 - * @param context - * @param siteId - * @param callback - */ - public void queryStationWriteOffPassengers(Context context,int taskId,int siteId,long prePassengerTime - , IBusServiceCallback callback){ - mService.queryWriteOffPassengers( MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusWriteOffPassengersQueryRequest(taskId,siteId,prePassengerTime)) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"queryStationWriteOffPassengers")); - } - - - - /** - * 查询小巴车订单 - * @param context - * @param callback - */ - public void queryBusOrders(Context context, IBusServiceCallback callback){ - mService.queryBusOrders(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"queryBusOrders")); - } - - public void queryBusLines(Context context, IBusServiceCallback callback){ - mService.queryBusLines(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"queryBusLines")); - } - - public void queryBusTaskByLineId(Context context,String lineId,IBusServiceCallback callback){ - mService.queryBusTaskByLineId(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,lineId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"queryBusLines")); - } - - public void updateOrderRoute(Context context,int lineId, int startSiteId, int endSiteId - , List< BusRoutePlanningUpdateReqBean.Result > points - , IBusServiceCallback callback){ - mService.updateOrderRoute(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusRoutePlanningUpdateReqBean(MoGoAiCloudClientConfig.getInstance().getSn() - ,lineId,startSiteId,endSiteId, points)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"updateOrderRoute")); - } - - /** - * 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度 - * @param context - * @param lon - * @param lat - * @param callback - */ - public void runCarHeartbeat(Context context, double lon, double lat, - IBusServiceCallback callback) { - mService.runCarHeartbeat(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),new CarHeartbeatReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), lon, lat)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "runCarHeartbeat")); - } - - private SubscribeImpl getSubscribeImpl(Context context, IBusServiceCallback callback, String apiName){ - return new SubscribeImpl(RequestOptions.create(context)){ - @Override - public void onSuccess(T o) { - super.onSuccess(o); - CallerLogger.INSTANCE.e(M_BUS + TAG,apiName + ": onSuccess() " + o.msg); - if (callback != null) { - callback.onSuccess(o); - } - } - - @Override - public void onError(String message, int code) { - super.onError(message, code); - CallerLogger.INSTANCE.e(M_BUS + TAG,apiName + ": onError() " +"msg="+ message+" code="+code); - if (callback != null) { - callback.onFail("msg="+ message+" code="+code); - } - } - - @Override - public void onError(Throwable e) { - super.onError(e); - CallerLogger.INSTANCE.e(M_BUS + TAG,apiName + ": onError() " +" e="+e.getMessage()); - if (callback != null) { - callback.onFail(e.getMessage()); - } - } - }; - } -} diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.kt b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.kt new file mode 100644 index 0000000000..126932adbc --- /dev/null +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.kt @@ -0,0 +1,268 @@ +package com.mogo.och.bus.net + +import android.content.Context +import com.mogo.och.bus.constant.BusConst.Companion.getBaseUrl +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.och.bus.bean.* +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 + +/** + * @author: wangmingjun + * @date: 2021/10/20 + */ +object BusServiceManager { + + private val mService: IBusApiService = MoGoRetrofitFactory.getInstance(getBaseUrl()).create( + IBusApiService::class.java + ) + + /** + * 查询小巴车当前任务 + * @param context + * @param callback + */ + @JvmStatic + fun queryBusRoutes(context: Context, callback: OchCommonServiceCallback?) { + //获取当前高德坐标 + mService.queryBusRoutes( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusQueryLineStationsRequest() + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusRoutes")) + } + + /** + * 重置线路站点 + * @param context + * @param taskId + * @param callback + */ + @JvmStatic + fun switchLine( + context: Context, + taskId: Int, + callback: OchCommonServiceCallback? + ) { + mService.switchLine( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusResetDrivingLineRequest(taskId) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "switchLine")) + } + + /** + * 中断当前任务 + * @param context + * @param taskId + * @param callback + */ + @JvmStatic + fun abortTask(context: Context, taskId: Int, callback: OchCommonServiceCallback?) { + mService.abortTask( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusCloseTaskRequest(taskId) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "abortTask")) + } + + /** + * 正常结束任务 + * @param context + * @param taskId + * @param callback + */ + @JvmStatic + fun endTask(context: Context, taskId: Int, callback: OchCommonServiceCallback?) { + mService.endTask( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusCloseTaskRequest(taskId) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "endTask")) + } + + /** + * 离站上报 + * @param context + * @param seq + * @param siteId + * @param callback + */ + @JvmStatic + fun leaveStation( + context: Context, + seq: Int, + siteId: Int, + taskId: Int, + callback: OchCommonServiceCallback? + ) { + mService.leaveStation( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusUpdateSiteStatusRequest(taskId, siteId, seq) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "leaveStation")) + } + + /** + * 到站更新站点状态 + * @param context + * @param seq + * @param siteId + * @param callback + */ + @JvmStatic + fun arriveSiteStation( + context: Context, seq: Int, siteId: Int, taskId: Int, + callback: OchCommonServiceCallback? + ) { + mService.arriveSiteStation( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusUpdateSiteStatusRequest(taskId, siteId, seq) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "arriveSiteStation")) + } + + /** + * 查询下车乘客 + * @param context + * @param seq + * @param siteId + * @param callback + */ + @JvmStatic + fun queryStationLeaveAwayPassengers( + context: Context, + seq: Int, + siteId: Int, + callback: OchCommonServiceCallback? + ) { + mService.queryStationLeaveAwayPassengers( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + QueryLeaveAwayPassengersRequest(seq, siteId) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryStationLeaveAwayPassengers")) + } + + /** + * 查询当前到站点核销乘客 + * @param context + * @param siteId + * @param callback + */ + @JvmStatic + fun queryStationWriteOffPassengers( + context: Context, + taskId: Int, + siteId: Int, + prePassengerTime: Long, + callback: OchCommonServiceCallback? + ) { + mService.queryWriteOffPassengers( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusWriteOffPassengersQueryRequest(taskId, siteId, prePassengerTime) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryStationWriteOffPassengers")) + } + + /** + * 查询小巴车订单 + * @param context + * @param callback + */ + @JvmStatic + fun queryBusOrders(context: Context, callback: OchCommonServiceCallback?) { + mService.queryBusOrders( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusOrders")) + } + @JvmStatic + fun queryBusLines(context: Context, callback: OchCommonServiceCallback?) { + mService.queryBusLines( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusLines")) + } + @JvmStatic + fun queryBusTaskByLineId( + context: Context, + lineId: String?, + callback: OchCommonServiceCallback? + ) { + mService.queryBusTaskByLineId( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + lineId + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusLines")) + } + @JvmStatic + fun updateOrderRoute( + context: Context, + lineId: Int, + startSiteId: Int, + endSiteId: Int, + points: List?, + callback: OchCommonServiceCallback? + ) { + mService.updateOrderRoute( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusRoutePlanningUpdateReqBean( + MoGoAiCloudClientConfig.getInstance().sn, lineId, startSiteId, endSiteId, points + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "updateOrderRoute")) + } + + /** + * 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度 + * @param context + * @param lon + * @param lat + * @param callback + */ + @JvmStatic + fun runCarHeartbeat( + context: Context, lon: Double, lat: Double, + callback: OchCommonServiceCallback? + ) { + mService.runCarHeartbeat( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + CarHeartbeatReqBean( + MoGoAiCloudClientConfig.getInstance().sn, lon, lat + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "runCarHeartbeat")) + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusServiceCallback.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusServiceCallback.java deleted file mode 100644 index 966a86d980..0000000000 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusServiceCallback.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.mogo.och.bus.net; - -/** - * @author: wangmingjun - * @date: 2021/10/20 - */ -public interface IBusServiceCallback< T >{ - void onSuccess(T o); - - void onFail(String failMsg); - - default void onError() { - - } -} diff --git a/OCH/mogo-och-common-module/src/debug/java/com/mogo/och/common/module/utils/SimpleInterceptor.kt b/OCH/mogo-och-common-module/src/debug/java/com/mogo/och/common/module/utils/SimpleInterceptor.kt index 5bacbfe0d7..9dc0b0093e 100644 --- a/OCH/mogo-och-common-module/src/debug/java/com/mogo/och/common/module/utils/SimpleInterceptor.kt +++ b/OCH/mogo-och-common-module/src/debug/java/com/mogo/och/common/module/utils/SimpleInterceptor.kt @@ -10,58 +10,9 @@ class SimpleInterceptor: Interceptor { val encodedPath = original.url().encodedPath() Log.e("SimpleInterceptor",original.method()+ encodedPath+original.url().encodedQuery()) when (encodedPath) { - "/autopilot-car-hailing/operation/v1/driver/bus/loginStatus" -> { - val builder = Response.Builder() - val create:ResponseBody - if(first) { - create = ResponseBody.create( - MediaType.parse("application/json"), - "{\"code\":0,\"msg\":\"\",\"data\":{\"servingStatus\":0,\"driverStatus\":1,\"orderNo\":\"12111\",\"purpose\":1,\"sn\":\"fjsdlfjslf\",\"plateNumber\":\"车牌号\",\"phone\":\"18811539480\",\"lineId\":\"线路id\",\"taskId\":\"任务id\"}}" - ) - first = false - }else{ - create = ResponseBody.create( - MediaType.parse("application/json"), - "{\"code\":0,\"msg\":\"\",\"data\":{\"servingStatus\":0,\"driverStatus\":0,\"orderNo\":\"12111\",\"purpose\":1,\"sn\":\"fjsdlfjslf\",\"plateNumber\":\"车牌号\",\"phone\":\"18811539480\",\"lineId\":\"线路id\",\"taskId\":\"任务id\"}}" - ) - first = true - } - builder.code(200) - builder.request(original) - builder.protocol(Protocol.HTTP_1_1) - builder.message("") - return builder.body(create).build() - } - "/autopilot-car-hailing/line/v2/driver/bus/task/query" -> { - val builder = Response.Builder() - val create = ResponseBody.create(MediaType.parse("application/json"), "{\"code\":0,\"msg\":\"\",\"data\":[{\"id\":1,\"taskStartTime\":1663722000000},{\"id\":2,\"taskStartTime\":1663725600000},{\"id\":3,\"taskStartTime\":1663729200000},{\"id\":4,\"taskStartTime\":1663732800000},{\"id\":5,\"taskStartTime\":1663736400000},{\"id\":6,\"taskStartTime\":1663740000000},{\"id\":7,\"taskStartTime\":1663743600000},{\"id\":8,\"taskStartTime\":1663747200000},{\"id\":9,\"taskStartTime\":1663750800000},{\"id\":10,\"taskStartTime\":1663754400000}]}") - builder.code(200) - builder.request(original) - builder.protocol(Protocol.HTTP_1_1) - builder.message("") - return builder.body(create).build() - } - "/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/startTask" -> { - val builder = Response.Builder() - val create = ResponseBody.create(MediaType.parse("application/json"), "{\"code\":0,\"msg\":\"\",\"data\":null}") - builder.code(200) - builder.request(original) - builder.protocol(Protocol.HTTP_1_1) - builder.message("") - return builder.body(create).build() - } - "/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/endOperation" -> { - val builder = Response.Builder() - val create = ResponseBody.create(MediaType.parse("application/json"), "{\"code\":0,\"msg\":\"\",\"data\":null}") - builder.code(200) - builder.request(original) - builder.protocol(Protocol.HTTP_1_1) - builder.message("") - return builder.body(create).build() - } "/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/startOperation" -> { val builder = Response.Builder() - val create = ResponseBody.create(MediaType.parse("application/json"), "{\"code\":0,\"msg\":\"\",\"data\":null}") + val create = ResponseBody.create(MediaType.parse("application/json"), "{\"code\":100006,\"msg\":\"\",\"data\":null}") builder.code(200) builder.request(original) builder.protocol(Protocol.HTTP_1_1) diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt index d945f03a1f..a5b2277c7d 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt @@ -71,66 +71,70 @@ object OchCommonLoginModel{ * 获取手机验证码 */ fun getPhoneCode(phone: String?) { - OchCommonServiceManager.getInstance().getPhoneCode(mContext, phone, - object : OchCommonServiceCallback { - override fun onSuccess(data: BaseData?) { - if (null != data && 0 == data.code) { - // 获取验证码成功 - ToastUtils.showShort(mContext?.getString(R.string.module_och_taxi_login_get_code_success)) - iTaxiLoginCallback?.getPhoneCodeSuccess() - } else { - if (data != null) { - ToastUtils.showShort(data.code) + mContext?.let { + OchCommonServiceManager.getPhoneCode(it, phone, + object : OchCommonServiceCallback { + override fun onSuccess(data: BaseData?) { + if (null != data && 0 == data.code) { + // 获取验证码成功 + ToastUtils.showShort(mContext?.getString(R.string.module_och_taxi_login_get_code_success)) + iTaxiLoginCallback?.getPhoneCodeSuccess() + } else { + if (data != null) { + ToastUtils.showShort(data.code) + } } } - } - override fun onError() { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort(mContext?.getString(R.string.network_error_tip)) - } else { - ToastUtils.showShort(mContext?.getString(R.string.request_error_tip)) + override fun onError() { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort(mContext?.getString(R.string.network_error_tip)) + } else { + ToastUtils.showShort(mContext?.getString(R.string.request_error_tip)) + } } - } - override fun onFail(code: Int, msg: String) { - ToastUtilsOch.showWithCodeMessage(code,msg) - } - }) + override fun onFail(code: Int, msg: String) { + ToastUtilsOch.showWithCodeMessage(code,msg) + } + }) + } + } fun gotoLogin(phone: String, code: String) { - val location4Login = TaxiLoginReqBean.Location4Login(mLatitude, mLongitude) - OchCommonServiceManager.getInstance().gotoLoginBycode(mContext, phone, code, location4Login, - object : OchCommonServiceCallback { - override fun onSuccess(data: TaxiLoginRespBean?) { - if (null != data && 0 == data.code) { - // 获取验证码成功 - ToastUtils.showShort(mContext?.getString(R.string.module_och_taxi_login_login_success)) - LoginStatusManager.setLoginStatus(TaxiLoginStatusEnum.Login) - mContext?.let { - SharedPrefs.getInstance(it).putString("och_account",phone) - } - iTaxiLoginCallback?.loginSuccess() - } else { - if (data != null) { - ToastUtils.showShort(data.code) + mContext?.let { + val location4Login = TaxiLoginReqBean.Location4Login(mLatitude, mLongitude) + OchCommonServiceManager.gotoLoginBycode(it, phone, code, location4Login, + object : OchCommonServiceCallback { + override fun onSuccess(data: TaxiLoginRespBean?) { + if (null != data && 0 == data.code) { + // 获取验证码成功 + ToastUtils.showShort(mContext?.getString(R.string.module_och_taxi_login_login_success)) + LoginStatusManager.setLoginStatus(TaxiLoginStatusEnum.Login) + mContext?.let { + SharedPrefs.getInstance(it).putString("och_account",phone) + } + iTaxiLoginCallback?.loginSuccess() + } else { + if (data != null) { + ToastUtils.showShort(data.code) + } } } - } - override fun onError() { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort(mContext?.getString(R.string.network_error_tip)) - } else { - ToastUtils.showShort(mContext?.getString(R.string.request_error_tip)) + override fun onError() { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort(mContext?.getString(R.string.network_error_tip)) + } else { + ToastUtils.showShort(mContext?.getString(R.string.request_error_tip)) + } } - } - override fun onFail(code: Int, msg: String) { - ToastUtilsOch.showWithCodeMessage(code,msg) - } - }) + override fun onFail(code: Int, msg: String) { + ToastUtilsOch.showWithCodeMessage(code,msg) + } + }) + } } - } \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusModel.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusModel.java index 0b1e9f0bfb..a2951bfbde 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusModel.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusModel.java @@ -53,7 +53,7 @@ public abstract class OchCommonLoginStatusModel { * 8、登录页面关闭后查下状态 */ public void queryCarStatus() { - OchCommonServiceManager.getInstance().queryDriverServiceStatus(mContext, + OchCommonServiceManager.queryDriverServiceStatus(mContext, new OchCommonServiceCallback() { @Override public void onSuccess(DriverStatusQueryRespBean data) { @@ -93,7 +93,7 @@ public abstract class OchCommonLoginStatusModel { // 登出 public void logout(double mLatitude,double mLongitude) { TaxiLogoutReqBean.Location4Login location4Login = new TaxiLogoutReqBean.Location4Login(mLatitude, mLongitude); - OchCommonServiceManager.getInstance().logout(mContext,location4Login, + OchCommonServiceManager.logout(mContext,location4Login, new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.java deleted file mode 100644 index ecc0129cfe..0000000000 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.java +++ /dev/null @@ -1,187 +0,0 @@ -package com.mogo.och.common.module.biz.network; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI; - -import android.content.Context; - -import com.mogo.cloud.passport.MoGoAiCloudClient; -import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -import com.mogo.commons.debug.DebugConfig; -import com.mogo.eagle.core.data.BaseData; -import com.mogo.eagle.core.network.MoGoRetrofitFactory; -import com.mogo.eagle.core.network.RequestOptions; -import com.mogo.eagle.core.network.SubscribeImpl; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean; -import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean; -import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean; -import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean; -import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean; -import com.mogo.och.common.module.biz.constant.OchCommonConst; - -import io.reactivex.Observable; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by pangfan on 2021/8/19 - */ -public class OchCommonServiceManager { - private static final String TAG = OchCommonServiceManager.class.getSimpleName(); - - private static final class SingletonHolder { - private static final OchCommonServiceManager INSTANCE = new OchCommonServiceManager(); - } - - public static OchCommonServiceManager getInstance() { - return SingletonHolder.INSTANCE; - } - - private OchCommonServiceApiNew mOCHTaxiServiceApi; - - private OchCommonServiceManager() { - if (mOCHTaxiServiceApi == null){ - mOCHTaxiServiceApi = MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(OchCommonServiceApiNew.class); - } - } - - /** - * 获取手机验证码 - * @param context - * @param callback - */ - public void getPhoneCode(Context context, String phone, - OchCommonServiceCallback callback) { - mOCHTaxiServiceApi.getPhoneCode(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , new TaxiLoginSmsReqBean(phone)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "getPhoneCode")); - } - /** - * 通过验证码登录 - * @param context - * @param callback - */ - public void gotoLoginBycode(Context context, String phone, String code, - TaxiLoginReqBean.Location4Login location4Login, - OchCommonServiceCallback callback) { - String sn = MoGoAiCloudClientConfig.getInstance().getSn(); - Observable taxiLoginRespBeanObservable = null; - switch (DebugConfig.getProductFlavor()) { - case "fPadLenovoOchTaxi": {//出租车司机 - taxiLoginRespBeanObservable = mOCHTaxiServiceApi.gotoLoginBycode4Taxi(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , new TaxiLoginReqBean(phone, code, sn, location4Login)); - break; - } - case "fPadLenovoOchBus": {//小巴车司机 - taxiLoginRespBeanObservable = mOCHTaxiServiceApi.gotoLoginBycode4Bus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , new TaxiLoginReqBean(phone, code, sn, location4Login)); - break; - } - } - if (taxiLoginRespBeanObservable != null) { - taxiLoginRespBeanObservable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "gotoLoginBycode")); - } - } - - /** - * 登出 - */ - public void logout(Context context, TaxiLogoutReqBean.Location4Login location4Login, OchCommonServiceCallback callback) { - Observable logout = null; - switch (DebugConfig.getProductFlavor()) { - case "fPadLenovoOchTaxi": {//出租车司机 - logout = mOCHTaxiServiceApi.logout4Taxi( - MoGoAiCloudClientConfig.getInstance().getServiceAppId(), - MoGoAiCloudClientConfig.getInstance().getToken(), - new TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().getSn(), location4Login)); - break; - } - case "fPadLenovoOchBus": {//小巴车司机 - logout = mOCHTaxiServiceApi.logout4Bus( - MoGoAiCloudClientConfig.getInstance().getServiceAppId(), - MoGoAiCloudClientConfig.getInstance().getToken(), - new TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().getSn(), location4Login)); - break; - } - } - if (logout != null) { - logout.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "logout")); - } - } - - /** - * 接单状态和登录状态查询 - * - * @param context - * @param callback - */ - public void queryDriverServiceStatus(Context context, - OchCommonServiceCallback callback) { - if (MoGoAiCloudClientConfig.getInstance().getToken().isEmpty()) { - callback.onFail(OchCommonConst.WAIT_TAKEN, "等待令牌中请稍等"); - MoGoAiCloudClient.getInstance().refreshToken(); - return; - } - String flavor = ""; - switch (DebugConfig.getProductFlavor()) { - case "fPadLenovoOchTaxi": {//出租车司机 - flavor = "taxi"; - break; - } - case "fPadLenovoOchBus": {//小巴车司机 - flavor = "bus"; - break; - } - case "fPadLenovoOchBusPassenger": {//小巴车乘客 - flavor = "bus/passenger"; - break; - } - } - mOCHTaxiServiceApi.queryDriverServiceStatusAndLoginStatus(flavor, MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryDriverServiceStatus")); - } - - - private SubscribeImpl getSubscribeImpl( - Context context, OchCommonServiceCallback callback, String apiName) { - return new SubscribeImpl(RequestOptions.create(context)) { - @Override - public void onSuccess(T o) { - super.onSuccess(o); - CallerLogger.INSTANCE.d(M_TAXI + TAG, apiName + ": onSuccess() " + o.msg); - if (callback != null) { - callback.onSuccess(o); - } - } - - @Override - public void onError(Throwable e) { - super.onError(e); - CallerLogger.INSTANCE.e(M_TAXI + TAG, apiName + ": onError() " + e.getMessage()); - if (callback != null) { - callback.onError(); - } - } - - @Override - public void onError(String message, int code) { - super.onError(message, code); - CallerLogger.INSTANCE.e(M_TAXI + TAG, String.format(apiName + ": onError() code = %d; message = %s;", code, message)); - if (callback != null) { - callback.onFail(code, message); - } - } - }; - } -} diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.kt new file mode 100644 index 0000000000..6779e4a891 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.kt @@ -0,0 +1,154 @@ +package com.mogo.och.common.module.biz.network + +import android.content.Context +import com.mogo.och.common.module.biz.constant.OchCommonConst.Companion.getBaseUrl +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean +import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean +import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean +import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean +import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean +import com.mogo.och.common.module.biz.constant.OchCommonConst +import com.mogo.cloud.passport.MoGoAiCloudClient +import com.mogo.commons.debug.DebugConfig +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.och.common.module.biz.network.interceptor.transformTry +import io.reactivex.Observable + +/** + * Created by pangfan on 2021/8/19 + */ +object OchCommonServiceManager { + + private const val TAG = "OchCommonServiceManager" + + private val mOCHTaxiServiceApi: OchCommonServiceApiNew = + MoGoRetrofitFactory.getInstance(getBaseUrl()).create( + OchCommonServiceApiNew::class.java + ) + + /** + * 获取手机验证码 + * @param context + * @param callback + */ + @JvmStatic + fun getPhoneCode( + context: Context, phone: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.getPhoneCode( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiLoginSmsReqBean(phone) + ).transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "getPhoneCode")) + } + + /** + * 通过验证码登录 + * @param context + * @param callback + */ + @JvmStatic + fun gotoLoginBycode( + context: Context, phone: String?, code: String?, + location4Login: TaxiLoginReqBean.Location4Login?, + callback: OchCommonServiceCallback? + ) { + val sn = MoGoAiCloudClientConfig.getInstance().sn + var taxiLoginRespBeanObservable: Observable? = null + when (DebugConfig.getProductFlavor()) { + "fPadLenovoOchTaxi" -> { + //出租车司机 + taxiLoginRespBeanObservable = mOCHTaxiServiceApi.gotoLoginBycode4Taxi( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiLoginReqBean(phone, code, sn, location4Login) + ).transformTry() + } + "fPadLenovoOchBus" -> { + //小巴车司机 + taxiLoginRespBeanObservable = mOCHTaxiServiceApi.gotoLoginBycode4Bus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiLoginReqBean(phone, code, sn, location4Login) + ).transformTry() + } + } + taxiLoginRespBeanObservable?.subscribe(OchCommonSubscribeImpl(context, callback, "gotoLoginBycode")) + } + + /** + * 登出 + */ + @JvmStatic + fun logout( + context: Context, + location4Login: TaxiLogoutReqBean.Location4Login?, + callback: OchCommonServiceCallback? + ) { + var logout: Observable? = null + when (DebugConfig.getProductFlavor()) { + "fPadLenovoOchTaxi" -> { + //出租车司机 + logout = mOCHTaxiServiceApi.logout4Taxi( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().sn, location4Login) + ).transformTry() + } + "fPadLenovoOchBus" -> { + //小巴车司机 + logout = mOCHTaxiServiceApi.logout4Bus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().sn, location4Login) + ).transformTry() + } + } + logout?.subscribe(OchCommonSubscribeImpl(context, callback, "logout")) + } + + /** + * 接单状态和登录状态查询 + * + * @param context + * @param callback + */ + @JvmStatic + fun queryDriverServiceStatus( + context: Context, + callback: OchCommonServiceCallback? + ) { + if (MoGoAiCloudClientConfig.getInstance().token.isEmpty()) { + callback?.onFail(OchCommonConst.WAIT_TAKEN, "等待令牌中请稍等") + MoGoAiCloudClient.getInstance().refreshToken() + return + } + var flavor = "" + when (DebugConfig.getProductFlavor()) { + "fPadLenovoOchTaxi" -> { + //出租车司机 + flavor = "taxi" + } + "fPadLenovoOchBus" -> { + //小巴车司机 + flavor = "bus" + } + "fPadLenovoOchBusPassenger" -> { + //小巴车乘客 + flavor = "bus/passenger" + } + } + mOCHTaxiServiceApi.queryDriverServiceStatusAndLoginStatus( + flavor, + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ).transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverServiceStatus")) + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonSubscribeImpl.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonSubscribeImpl.kt new file mode 100644 index 0000000000..01f08eaaee --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonSubscribeImpl.kt @@ -0,0 +1,36 @@ +package com.mogo.och.common.module.biz.network + +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.network.RequestOptions +import com.mogo.eagle.core.network.SubscribeImpl +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.common.module.utils.CallerLoggerUtils.flavorTag + +class OchCommonSubscribeImpl( + val context: Any, + val callback: OchCommonServiceCallback?, + val apiName: String +) : SubscribeImpl(RequestOptions.create(context)) { + + companion object { + const val TAG = "OchCommonSubscribeImpl" + } + + override fun onSuccess(o: T) { + super.onSuccess(o) + CallerLogger.d("$flavorTag$TAG", "$apiName: onSuccess() ${o.msg}") + callback?.onSuccess(o) + } + + override fun onError(e: Throwable) { + super.onError(e) + CallerLogger.e("$flavorTag$TAG", "$apiName: onError() ${e.message}") + callback?.onError() + } + + override fun onError(message: String, code: Int) { + super.onError(message, code) + CallerLogger.e("$flavorTag$TAG", "$apiName: onError() code = $code; message = $message") + callback?.onFail(code, message) + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/FRetryWithTime.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/FRetryWithTime.kt new file mode 100644 index 0000000000..93869d6edc --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/FRetryWithTime.kt @@ -0,0 +1,20 @@ +package com.mogo.och.common.module.biz.network.interceptor + +import com.mogo.cloud.passport.MoGoAiCloudClient +import com.mogo.eagle.core.data.BaseData +import io.reactivex.Observable +import io.reactivex.ObservableSource +import io.reactivex.functions.Function + +class FRetryWithTime : Function> { + + override fun apply(baseData: T): ObservableSource { + baseData.let { + if (it.code == 100046 || it.code == 100045 || it.code == 100005 || it.code == 100006 || it.code == 520003) { + MoGoAiCloudClient.getInstance().refreshToken() + return Observable.error(OchCommonRetryException()) + } + } + return Observable.just(baseData) + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonNetInterceptor.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonNetInterceptor.kt new file mode 100644 index 0000000000..1fa0e4bf57 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonNetInterceptor.kt @@ -0,0 +1,13 @@ +package com.mogo.och.common.module.biz.network.interceptor + +import io.reactivex.Observable +import com.mogo.eagle.core.data.BaseData +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.schedulers.Schedulers + +fun Observable.transformTry():Observable { + return flatMap(FRetryWithTime()) + .retryWhen(RetryWithTime()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonRetryException.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonRetryException.java new file mode 100644 index 0000000000..262d1806c0 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonRetryException.java @@ -0,0 +1,5 @@ +package com.mogo.och.common.module.biz.network.interceptor; + +public class OchCommonRetryException extends RuntimeException{ + +} diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/RetryWithTime.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/RetryWithTime.kt new file mode 100644 index 0000000000..83606fdea0 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/RetryWithTime.kt @@ -0,0 +1,30 @@ +package com.mogo.och.common.module.biz.network.interceptor + +import com.mogo.eagle.core.utilcode.constant.TimeConstants +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.util.TimeUtils +import com.mogo.och.common.module.utils.CallerLoggerUtils.flavorTag +import io.reactivex.Observable +import io.reactivex.ObservableSource +import io.reactivex.functions.Function +import java.util.concurrent.TimeUnit + + +class RetryWithTime : Function, ObservableSource> { + companion object { + private const val TAG = "RetryWithTime" + } + var current = -1 + private var timeDelys = intArrayOf(3, 1, 2) + override fun apply(throwableObservable: Observable): ObservableSource? { + return throwableObservable.flatMap { + ++current + CallerLogger.e("${flavorTag}${TAG}", " 时间:${TimeUtils.getStringByNow(0, TimeConstants.SEC)}") + if (it is OchCommonRetryException && current < timeDelys.size) { + Observable.timer(timeDelys[current].toLong(), TimeUnit.SECONDS) + } else { + Observable.error(it) + } + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CallerLoggerUtils.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CallerLoggerUtils.kt new file mode 100644 index 0000000000..6289004563 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CallerLoggerUtils.kt @@ -0,0 +1,31 @@ +package com.mogo.och.common.module.utils + +import com.mogo.commons.debug.DebugConfig +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI_P + +object CallerLoggerUtils { + var flavorTag = when (DebugConfig.getProductFlavor()) { + "fPadLenovoOchTaxi" -> { + //出租车司机 + M_TAXI + } + "fPadLenovoOchBus" -> { + //小巴车司机 + M_BUS + } + "fPadLenovoOchTaxiPassenger" -> { + //出租车乘客 + M_TAXI_P + } + "fPadLenovoOchBusPassenger" -> { + //小巴车乘客 + M_BUS_P + } + else -> { + "" + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java index 297efdd6a9..5a3564a2a3 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java @@ -32,6 +32,7 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.PinYinUtil; import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean; @@ -51,7 +52,6 @@ import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonValueCallback; import com.mogo.och.taxi.passenger.callback.ITaxiPassengerVeloctityCallback; import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum; -import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceCallback; import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceManager; import com.mogo.aicloud.services.socket.IMogoLifecycleListener; import com.mogo.och.taxi.passenger.utils.TaxiPassengerAnalyticsManager; @@ -288,8 +288,8 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback * 才更新最新进行中单到本地 */ public void queryInAndWaitOrders() { - TaxiPassengerServiceManager.getInstance().queryOrdersInAndWaitService(mContext, - new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.queryOrdersInAndWaitService(mContext, + new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerOrdersInServiceQueryRespBean data) { if (data == null || data.data == null) { @@ -346,8 +346,8 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback return; } final String orderNo = mCurrentOCHOrder.orderNo; - TaxiPassengerServiceManager.getInstance().queryOrderById(mContext, orderNo, - new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.queryOrderById(mContext, orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerOrderQueryRespBean data) { if (data != null && data.data != null @@ -693,7 +693,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback */ public void queryOrderRemaining(){ if (mCurrentOCHOrder == null) return; - TaxiPassengerServiceManager.getInstance().queryOrderRemaining(mContext, mCurrentOCHOrder.orderNo, new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.queryOrderRemaining(mContext, mCurrentOCHOrder.orderNo, new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerOrderQueryRemainingResp data) { if (data != null && data.data!=null){ @@ -714,7 +714,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback public void queryOrderRouteList() { if (mCurrentOCHOrder == null) return; CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "--route--- queryOrderRouteList"); - TaxiPassengerServiceManager.getInstance().queryOrderRouteList(mContext, mCurrentOCHOrder.orderNo, new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.queryOrderRouteList(mContext, mCurrentOCHOrder.orderNo, new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerQueryOrderRouteResp data) { CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "--route---"+GsonUtil.jsonFromObject(data)); @@ -765,8 +765,8 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback public void checkPhoneAndUpdateStatus(String phoneTail,ITaxiPassengerCommonCallback commonCallback) { if (mCurrentOCHOrder == null) return; - TaxiPassengerServiceManager.getInstance().checkPhoneAndUpdateOrderStatus(mContext, mCurrentOCHOrder.orderNo, - phoneTail, new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.checkPhoneAndUpdateOrderStatus(mContext, mCurrentOCHOrder.orderNo, + phoneTail, new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerBaseRespBean data) { if (data != null && data.code == 0 && mCurrentOCHOrder != null){ @@ -799,8 +799,8 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback public void arrivedAndScore(TaxiPassengerScoreUpdateOrderReqBean taxiPassengerScoreUpdateOrderReqBean , ITaxiPassengerCommonValueCallback commonCallback) { if (taxiPassengerScoreUpdateOrderReqBean.orderNo == null) return; - TaxiPassengerServiceManager.getInstance().arrivedAndScore(mContext,taxiPassengerScoreUpdateOrderReqBean, - new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.arrivedAndScore(mContext,taxiPassengerScoreUpdateOrderReqBean, + new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerBaseRespBean data) { if(commonCallback!=null) { @@ -829,8 +829,8 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback public void loopQueryPilotStatus(){ if (mCurrentOCHOrder == null) return; - TaxiPassengerServiceManager.getInstance().queryPilotStatus(mContext, mCurrentOCHOrder.orderNo, - new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.queryPilotStatus(mContext, mCurrentOCHOrder.orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerBaseRespBean data) { if (data != null && data.code == 0 && data.data.equals(true)) { @@ -873,9 +873,9 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback TaxiPassengerStartReqBean.Result result = new TaxiPassengerStartReqBean.Result(); result.lat = mLatitude; result.lon = mLongitude; - TaxiPassengerServiceManager.getInstance().startServicePilotDone(mContext, + TaxiPassengerServiceManager.startServicePilotDone(mContext, mCurrentOCHOrder.orderNo, result, - new TaxiPassengerServiceCallback(){ + new OchCommonServiceCallback(){ @Override public void onSuccess(TaxiPassengerBaseRespBean data) { diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceCallback.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceCallback.java deleted file mode 100644 index b2d02607c3..0000000000 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceCallback.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.mogo.och.taxi.passenger.network; - -/** - * @author congtaowang - * @since 2021/1/15 - * - * 修改订单状态回调接口 - */ -public interface TaxiPassengerServiceCallback< T > { - - void onSuccess(T data); - - void onFail(int code, String msg); - - default void onError() { - - } -} diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java deleted file mode 100644 index f052794c40..0000000000 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java +++ /dev/null @@ -1,208 +0,0 @@ -package com.mogo.och.taxi.passenger.network; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P; - -import android.content.Context; - -import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -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.network.RequestOptions; -import com.mogo.eagle.core.network.SubscribeImpl; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerAllStarWorld; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryReqBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerQueryOrderRouteResp; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerStartReqBean; -import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; -import com.mogo.commons.debug.DebugConfig; - -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by pangfan on 2021/8/19 - */ -public class TaxiPassengerServiceManager { - private static final String TAG = TaxiPassengerServiceManager.class.getSimpleName(); - - private static final class SingletonHolder { - private static final TaxiPassengerServiceManager INSTANCE = new TaxiPassengerServiceManager(); - } - - public static TaxiPassengerServiceManager getInstance() { - return SingletonHolder.INSTANCE; - } - - private TaxiPassengerServiceApi mOCHTaxiServiceApi; - - private TaxiPassengerServiceManager() { - if (mOCHTaxiServiceApi == null){ - mOCHTaxiServiceApi = MoGoRetrofitFactory.getInstance(TaxiPassengerConst.getBaseUrl()).create(TaxiPassengerServiceApi.class); - } - } - - /** - * 获取司机端的sn - * @return - */ - private String getDriverAppSn(){ - return CallerTelematicManager.INSTANCE.getServerToken(); - } - - /** - * 查询全部服务中/待服务订单列表 - * @param context - * @param callback - */ - public void queryOrdersInAndWaitService(Context context, - TaxiPassengerServiceCallback callback) { - mOCHTaxiServiceApi.queryOrdersInAndWaitService(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,getDriverAppSn()) //获取到司机端的sn - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrdersInAndWaitService")); - } - - /** - * 查询订单剩余里程和时间 - * @param context - * @param orderNo - * @param callback - */ - public void queryOrderRemaining(Context context, String orderNo, TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.queryOrderRemaining(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,orderNo) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderRemaining")); - } - - public void queryOrderRouteList(Context context, String orderNo, TaxiPassengerServiceCallback callback){ - - mOCHTaxiServiceApi.queryOrderRoute(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,orderNo) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderRouteList")); - } - - /** - * 通过orderId查询订单信息(用于本地已经有orderId时) - * @param context - * @param orderNo - * @param callback - * @deprecated v2.1_0930需求中暂不再使用此接口 - */ - public void queryOrderById(Context context, String orderNo, - TaxiPassengerServiceCallback callback) { - mOCHTaxiServiceApi.queryOrderById(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiPassengerOrderQueryReqBean(getDriverAppSn(), orderNo)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderById")); - } - - private SubscribeImpl getSubscribeImpl( - Context context, TaxiPassengerServiceCallback callback, String apiName) { - return new SubscribeImpl(RequestOptions.create(context)) { - @Override - public void onSuccess(T o) { - super.onSuccess(o); - CallerLogger.INSTANCE.e(M_TAXI_P + TAG,apiName + ": onSuccess() " + o.msg); - if (callback != null) { - callback.onSuccess(o); - } - } - - @Override - public void onError(Throwable e) { - super.onError(e); - CallerLogger.INSTANCE.e(M_TAXI_P + TAG,apiName + ": onError() " + e.getMessage()); - if (callback != null) { - callback.onError(); - } - } - - @Override - public void onError(String message, int code) { - super.onError(message, code); - CallerLogger.INSTANCE.e(M_TAXI_P + TAG,String.format(apiName + ": onError() code = %d; message = %s;", code, message)); - if (callback != null) { - callback.onFail(code, message); - } - } - }; - } - - public void checkPhoneAndUpdateOrderStatus(Context context, String orderNo,String phone ,TaxiPassengerServiceCallback callback){ - - mOCHTaxiServiceApi.checkPhoneAndUpdateOrderStatus( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiPassengerCheckPhoneUpdateOrderReqBean(orderNo,phone)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")); - } - public void arrivedAndScore(Context context,TaxiPassengerScoreUpdateOrderReqBean taxiPassengerScoreUpdateOrderReqBean, TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.arrivedAndScore( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,taxiPassengerScoreUpdateOrderReqBean) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")); - } - - public void getAllScoreWorld(Context context,TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.getWorldAllStar( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "arrivedAndScore")); - } - - public void queryPilotStatus(Context context, String orderNo - ,TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.queryPilotStatus( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,orderNo) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryPilotStatus")); - } - - public void startServicePilotDone(Context context,String orderNo,TaxiPassengerStartReqBean.Result loc - ,TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.startServicePilotDone(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiPassengerStartReqBean(getDriverAppSn() - ,orderNo,loc)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"startServicePilotDone")); - } - public void getWorldByStar(Context context,String start,TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.getWorldByStar( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),start) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")); - } - -} diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt new file mode 100644 index 0000000000..37e0bc2b39 --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt @@ -0,0 +1,199 @@ +package com.mogo.och.taxi.passenger.network + +import android.content.Context +import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst.Companion.getBaseUrl +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.getServerToken +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp +import com.mogo.och.taxi.passenger.bean.TaxiPassengerQueryOrderRouteResp +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryReqBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerAllStarWorld +import com.mogo.och.taxi.passenger.bean.TaxiPassengerStartReqBean +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 + +/** + * Created by pangfan on 2021/8/19 + */ +object TaxiPassengerServiceManager { + + private val mOCHTaxiServiceApi: TaxiPassengerServiceApi = MoGoRetrofitFactory.getInstance(getBaseUrl()).create( + TaxiPassengerServiceApi::class.java + ) + + /** + * 获取司机端的sn + * @return + */ + private val driverAppSn: String + get() = getServerToken() + + /** + * 查询全部服务中/待服务订单列表 + * @param context + * @param callback + */ + @JvmStatic + fun queryOrdersInAndWaitService( + context: Context, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrdersInAndWaitService( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + driverAppSn + ) //获取到司机端的sn + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrdersInAndWaitService")) + } + + /** + * 查询订单剩余里程和时间 + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + fun queryOrderRemaining( + context: Context, + orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderRemaining( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + orderNo + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderRemaining")) + } + @JvmStatic + fun queryOrderRouteList( + context: Context, + orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderRoute( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + orderNo + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderRouteList")) + } + + /** + * 通过orderId查询订单信息(用于本地已经有orderId时) + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + @Deprecated("v2.1_0930需求中暂不再使用此接口") + fun queryOrderById( + context: Context, orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderById( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiPassengerOrderQueryReqBean(driverAppSn, orderNo) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderById")) + } + @JvmStatic + fun checkPhoneAndUpdateOrderStatus( + context: Context, + orderNo: String?, + phone: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.checkPhoneAndUpdateOrderStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiPassengerCheckPhoneUpdateOrderReqBean(orderNo, phone) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")) + } + @JvmStatic + fun arrivedAndScore( + context: Context, + taxiPassengerScoreUpdateOrderReqBean: TaxiPassengerScoreUpdateOrderReqBean?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.arrivedAndScore( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + taxiPassengerScoreUpdateOrderReqBean + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")) + } + @JvmStatic + fun getAllScoreWorld( + context: Context, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.getWorldAllStar( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "arrivedAndScore")) + } + @JvmStatic + fun queryPilotStatus( + context: Context, + orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryPilotStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + orderNo + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryPilotStatus")) + } + @JvmStatic + fun startServicePilotDone( + context: Context, + orderNo: String?, + loc: TaxiPassengerStartReqBean.Result?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.startServicePilotDone( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiPassengerStartReqBean( + driverAppSn, orderNo, loc + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "startServicePilotDone")) + } + @JvmStatic + fun getWorldByStar( + context: Context, + start: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.getWorldByStar( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + start + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")) + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt index 6f56314a9f..548280ca96 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt @@ -25,13 +25,13 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.OverlayViewUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.wigets.OCHBorderShadowLayout import com.mogo.och.taxi.passenger.R import com.mogo.och.taxi.passenger.bean.TaxiPassengerAllStarWorld import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonCallback import com.mogo.och.taxi.passenger.callback.ITaxiPassengerScoreCallback -import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceCallback import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceManager import com.mogo.och.taxi.passenger.ui.comment.adapter.CommentAdapter import com.mogo.och.taxi.passenger.widget.ResizeAnimation @@ -412,8 +412,8 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener { } private fun requestStarWord() { - TaxiPassengerServiceManager.getInstance().getAllScoreWorld(context, - object : TaxiPassengerServiceCallback { + TaxiPassengerServiceManager.getAllScoreWorld(context, + object : OchCommonServiceCallback { override fun onError() { CallerLogger.e( SceneConstant.M_TAXI_P + TAG, @@ -436,8 +436,8 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener { } private fun requestStarWordByStar(start:Int) { - TaxiPassengerServiceManager.getInstance().getWorldByStar(context,start.toString(), - object : TaxiPassengerServiceCallback { + TaxiPassengerServiceManager.getWorldByStar(context,start.toString(), + object : OchCommonServiceCallback { override fun onError() { CallerLogger.e( SceneConstant.M_TAXI_P + TAG, diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 45a0278c55..3ee4f3d7af 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -36,6 +36,7 @@ import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; import com.mogo.och.common.module.biz.constant.LoginStatusManager; 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.provider.LoginService; import com.mogo.och.common.module.manager.OCHAdasAbilityManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; @@ -62,7 +63,6 @@ import com.mogo.och.taxi.constant.TaxiConst; import com.mogo.och.taxi.constant.TaxiOrderStatusEnum; import com.mogo.och.taxi.constant.TaxiOrderTypeEnum; import com.mogo.och.taxi.constant.TaxtServingStatusManager; -import com.mogo.och.taxi.network.TaxiServiceCallback; import com.mogo.och.taxi.network.TaxiServiceManager; import com.mogo.och.taxi.utils.TaxiAnalyticsManager; import com.mogo.och.taxi.utils.OrderUtil; @@ -264,8 +264,8 @@ public class TaxiModel { loginService.queryLoginStatusByNet(); return; } - TaxiServiceManager.getInstance().changeOrderServing(mContext,TaxtServingStatusManager.isOpeningOrderStatus(), - new TaxiServiceCallback() { + TaxiServiceManager.changeOrderServing(mContext,TaxtServingStatusManager.isOpeningOrderStatus(), + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { if (null != data && 0 == data.code) { @@ -297,8 +297,8 @@ public class TaxiModel { * 才更新最新进行中单到本地 */ public void queryInAndWaitOrders() { - TaxiServiceManager.getInstance().queryOrdersInAndWaitService(mContext, - new TaxiServiceCallback() { + TaxiServiceManager.queryOrdersInAndWaitService(mContext, + new OchCommonServiceCallback() { @Override public void onSuccess(OrdersInServiceQueryRespBean data) { if (data == null || data.data == null) { @@ -373,8 +373,8 @@ public class TaxiModel { return; } final String orderNo = mCurrentOCHOrder.orderNo; - TaxiServiceManager.getInstance().queryOrderById(mContext, orderNo, - new TaxiServiceCallback() { + TaxiServiceManager.queryOrderById(mContext, orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(OrderQueryRespBean data) { if (data != null && data.data != null @@ -407,8 +407,8 @@ public class TaxiModel { return; } final String orderNo = mCurrentOCHOrder.orderNo; - TaxiServiceManager.getInstance().cancelOrder(mContext, orderNo, reasonType, reason, - new TaxiServiceCallback() { + TaxiServiceManager.cancelOrder(mContext, orderNo, reasonType, reason, + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { if (null != data && 0 == data.code @@ -439,8 +439,8 @@ public class TaxiModel { // 取消待服务中订单 public void cancelOrderById(final String orderNo, int reasonType, String reason) { - TaxiServiceManager.getInstance().cancelOrder(mContext, orderNo, reasonType, reason, - new TaxiServiceCallback() { + TaxiServiceManager.cancelOrder(mContext, orderNo, reasonType, reason, + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { if (null != data && 0 == data.code) { @@ -472,8 +472,8 @@ public class TaxiModel { return; } final String orderNo = mCurrentOCHOrder.orderNo; - TaxiServiceManager.getInstance().queryOrderRouteInfo(mContext, orderNo, - new TaxiServiceCallback() { + TaxiServiceManager.queryOrderRouteInfo(mContext, orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(OrderQueryRouteInfoRespBean data) { if (null != data && 0 == data.code @@ -493,8 +493,8 @@ public class TaxiModel { // 获取全部订单列表 public void queryOrdersList(int page, int size) { - TaxiServiceManager.getInstance().queryOrdersList(mContext, page, size, - new TaxiServiceCallback() { + TaxiServiceManager.queryOrdersList(mContext, page, size, + new OchCommonServiceCallback() { @Override public void onSuccess(OrdersListQueryRespBean data) { if (null != data && 0 == data.code) { @@ -526,8 +526,8 @@ public class TaxiModel { * 注:只有在本地缓存mNewBookingOrder为null时(执行完抢单or司机关闭改单),才更新新到待抢单 */ public void queryNewBookingOrder() { - TaxiServiceManager.getInstance().queryNewBookingOrder(mContext, - new TaxiServiceCallback() { + TaxiServiceManager.queryNewBookingOrder(mContext, + new OchCommonServiceCallback() { @Override public void onSuccess(OrdersNewBookingQueryRespBean data) { if (data != null && data.code == 0 @@ -554,8 +554,8 @@ public class TaxiModel { // 仅限于获取到新待抢单且需要展示时查询该单信息:(queryOrderById接口可以查询属于该车的单、未派的单) private void queryNewBookingContent(final String orderNo) { - TaxiServiceManager.getInstance().queryOrderById(mContext, orderNo, - new TaxiServiceCallback() { + TaxiServiceManager.queryOrderById(mContext, orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(OrderQueryRespBean data) { if (data != null && data.code == 0 @@ -585,8 +585,8 @@ public class TaxiModel { return; } final String orderNo = mNewBookingOrder.orderNo; - TaxiServiceManager.getInstance().grabOrder(mContext, orderNo, - new TaxiServiceCallback() { + TaxiServiceManager.grabOrder(mContext, orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(OrderGrabRespBean data) { if (data != null && data.code == 0 @@ -624,8 +624,8 @@ public class TaxiModel { return; } final String orderNo = mNewBookingOrder.orderNo; - TaxiServiceManager.getInstance().queryOrderGrabStatus(mContext, orderNo, - new TaxiServiceCallback() { + TaxiServiceManager.queryOrderGrabStatus(mContext, orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(OrderGrabStatusQueryRespBean data) { //TaxiModelLoopManager.getInstance().stopGrabResultLoop(); @@ -663,8 +663,8 @@ public class TaxiModel { // 车机端上传心跳数据(只在出车状态时上传) public void runCarHeartbeat() { - TaxiServiceManager.getInstance().runCarHeartbeat(mContext, mLongitude, mLatitude, - new TaxiServiceCallback() { + TaxiServiceManager.runCarHeartbeat(mContext, mLongitude, mLatitude, + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { @@ -679,8 +679,8 @@ public class TaxiModel { // 查询司机服务数据 public void queryDriverServiceData() { - TaxiServiceManager.getInstance().queryDriverServiceData(mContext, - new TaxiServiceCallback() { + TaxiServiceManager.queryDriverServiceData(mContext, + new OchCommonServiceCallback() { @Override public void onSuccess(DriverServiceDataRespBean data) { if (data != null && data.code == 0 @@ -716,10 +716,10 @@ public class TaxiModel { TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; result.lon = mLongitude; - TaxiServiceManager.getInstance().confirmAutopilotConditionByDriver(mContext, + TaxiServiceManager.confirmAutopilotConditionByDriver(mContext, mCurrentOCHOrder.orderNo, result, - new TaxiServiceCallback(){ + new OchCommonServiceCallback(){ @Override public void onSuccess(TaxiDataBaseRespBean data) { @@ -747,8 +747,8 @@ public class TaxiModel { public void queryAutopilotStatus(){ if (mCurrentOCHOrder == null) return; - TaxiServiceManager.getInstance().queryAutopilotStatus(mContext, mCurrentOCHOrder.orderNo, - new TaxiServiceCallback() { + TaxiServiceManager.queryAutopilotStatus(mContext, mCurrentOCHOrder.orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { if (data != null && data.code == 0) @@ -1257,8 +1257,8 @@ public class TaxiModel { public void updateOrderRoute(List models) { if (null == mCurrentOCHOrder) return; List points = coordinateConverterWgsToGcjList(mContext, models); - TaxiServiceManager.getInstance().updateOrderRoute(mContext, mCurrentOCHOrder.orderNo - , points, new TaxiServiceCallback() { + TaxiServiceManager.updateOrderRoute(mContext, mCurrentOCHOrder.orderNo + , points, new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { @@ -1368,8 +1368,8 @@ public class TaxiModel { */ private void queryOrderRouteList(String orderNo) { if (mCurrentOCHOrder != null) { - TaxiServiceManager.getInstance().queryOrderRoute(mContext, orderNo, - new TaxiServiceCallback() { + TaxiServiceManager.queryOrderRoute(mContext, orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(QueryOrderRouteResp data) { if (data != null && data.data != null && mRoutePoints.size() == 0) { @@ -1414,8 +1414,8 @@ public class TaxiModel { */ private void reportOrderRemain(long lastSumLength, long duration) {// 米/分钟 if (mCurrentOCHOrder == null) return; - TaxiServiceManager.getInstance().reportOrderRemain(mContext, mCurrentOCHOrder.orderNo - , lastSumLength, duration, new TaxiServiceCallback() { + TaxiServiceManager.reportOrderRemain(mContext, mCurrentOCHOrder.orderNo + , lastSumLength, duration, new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { @@ -1440,10 +1440,10 @@ public class TaxiModel { TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; result.lon = mLongitude; - TaxiServiceManager.getInstance().updatePassengerHasBoardedStatus(mContext + TaxiServiceManager.updatePassengerHasBoardedStatus(mContext , mCurrentOCHOrder.orderNo , result - , new TaxiServiceCallback() { + , new OchCommonServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { @@ -1462,10 +1462,10 @@ public class TaxiModel { TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; result.lon = mLongitude; - TaxiServiceManager.getInstance().startServicePilotDone(mContext + TaxiServiceManager.startServicePilotDone(mContext , mCurrentOCHOrder.orderNo , result - , new TaxiServiceCallback() { + , new OchCommonServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { @@ -1482,10 +1482,10 @@ public class TaxiModel { TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; result.lon = mLongitude; - TaxiServiceManager.getInstance().arrivedStartPoint(mContext + TaxiServiceManager.arrivedStartPoint(mContext , mCurrentOCHOrder.orderNo , result - , new TaxiServiceCallback() { + , new OchCommonServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { @@ -1503,10 +1503,10 @@ public class TaxiModel { TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; result.lon = mLongitude; - TaxiServiceManager.getInstance().arriveTerminal(mContext + TaxiServiceManager.arriveTerminal(mContext , mCurrentOCHOrder.orderNo , result - , new TaxiServiceCallback() { + , new OchCommonServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { @@ -1524,10 +1524,10 @@ public class TaxiModel { TaxiOrPassengerReadyReqBean.Result result = new TaxiOrPassengerReadyReqBean.Result(); result.lat = mLatitude; result.lon = mLongitude; - TaxiServiceManager.getInstance().orderCompleted(mContext + TaxiServiceManager.orderCompleted(mContext , mCurrentOCHOrder.orderNo , result - , new TaxiServiceCallback() { + , new OchCommonServiceCallback() { @Override public void onSuccess(TaxiDataBaseRespBean data) { // if (null != data && 0 == data.code){ diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceCallback.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceCallback.java deleted file mode 100644 index 2f3e2ed507..0000000000 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceCallback.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.mogo.och.taxi.network; - -/** - * @author congtaowang - * @since 2021/1/15 - * - * 修改订单状态回调接口 - */ -public interface TaxiServiceCallback< T > { - - void onSuccess(T data); - - void onFail(int code, String msg); - - default void onError() { - - } -} diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.java deleted file mode 100644 index 1d99bce35c..0000000000 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.java +++ /dev/null @@ -1,463 +0,0 @@ -package com.mogo.och.taxi.network; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI; - -import android.content.Context; - -import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -import com.mogo.eagle.core.data.BaseData; -import com.mogo.eagle.core.network.MoGoRetrofitFactory; -import com.mogo.eagle.core.network.RequestOptions; -import com.mogo.eagle.core.network.SubscribeImpl; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.och.taxi.bean.CarHeartbeatReqBean; -import com.mogo.och.taxi.bean.DriverServiceDataRespBean; -import com.mogo.och.taxi.bean.DriverStatusUpdateReqBean; -import com.mogo.och.taxi.bean.OrderCancelReqBean; -import com.mogo.och.taxi.bean.OrderGrabReqBean; -import com.mogo.och.taxi.bean.OrderGrabRespBean; -import com.mogo.och.taxi.bean.OrderGrabStatusQueryRespBean; -import com.mogo.och.taxi.bean.OrderQueryReqBean; -import com.mogo.och.taxi.bean.OrderQueryRespBean; -import com.mogo.och.taxi.bean.OrderQueryRouteInfoReqBean; -import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean; -import com.mogo.och.taxi.bean.OrderRouteUpdateReqBean; -import com.mogo.och.taxi.bean.OrderStatusUpdateReqBean; -import com.mogo.och.taxi.bean.OrdersInServiceQueryRespBean; -import com.mogo.och.taxi.bean.OrdersListQueryReqBean; -import com.mogo.och.taxi.bean.OrdersListQueryRespBean; -import com.mogo.och.taxi.bean.OrdersNewBookingQueryRespBean; -import com.mogo.och.taxi.bean.QueryOrderRouteResp; -import com.mogo.och.taxi.bean.TaxiDataBaseRespBean; -import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean; -import com.mogo.och.taxi.bean.UpdateOrderDisAndTimeReqBean; -import com.mogo.och.taxi.constant.TaxiConst; - -import java.util.List; - -import io.reactivex.Observable; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by pangfan on 2021/8/19 - */ -public class TaxiServiceManager { - private static final String TAG = TaxiServiceManager.class.getSimpleName(); - - private static final class SingletonHolder { - private static final TaxiServiceManager INSTANCE = new TaxiServiceManager(); - } - - public static TaxiServiceManager getInstance() { - return SingletonHolder.INSTANCE; - } - - private TaxiServiceApiNew mOCHTaxiServiceApi; - - private TaxiServiceManager() { - if (mOCHTaxiServiceApi == null){ - mOCHTaxiServiceApi = MoGoRetrofitFactory.getInstance(TaxiConst.getBaseUrl()).create(TaxiServiceApiNew.class); - } - } - - /** - * 查询全部服务中/待服务订单列表 - * @param context - * @param callback - */ - public void queryOrdersInAndWaitService(Context context, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryOrdersInAndWaitService(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrdersInAndWaitService")); - } - - /** - * 查询新到的预约单 - * @param context - * @param callback - */ - public void queryNewBookingOrder(Context context, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryNewBookingOrder(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryNewBookingOrder")); - } - - /** - * (预约单)执行抢单动作 - * @param context - * @param orderNo - * @param callback - */ - public void grabOrder(Context context, String orderNo, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.grabOrder(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new OrderGrabReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), orderNo)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "grabOrder")); - } - - /** - * (预约单)查询抢单结果 - * @param context - * @param orderNo - * @param callback - */ - public void queryOrderGrabStatus(Context context, String orderNo, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryOrderGrabStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new OrderGrabReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), orderNo)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderGrabStatus")); - } - - /** - * 查询订单路径规划信息(到上车点、起始点间的距离和预估时间) - * @param context - * @param orderNo - * @param callback - */ - public void queryOrderRouteInfo(Context context, String orderNo, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryOrderRouteInfo(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new OrderQueryRouteInfoReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), orderNo)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderRouteInfo")); - } - - /** - * 通过orderId查询订单信息(用于本地已经有orderId时) - * @param context - * @param orderNo - * @param callback - * @deprecated v2.1_0930需求中暂不再使用此接口 - */ - public void queryOrderById(Context context, String orderNo, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryOrderById(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new OrderQueryReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), orderNo)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderById")); - } - - /** - * 查询未完成态订单信息(用于本地无orderId时) - * 如果有多条,只会返回时间最近的一条 - * @param context - * @param callback - * @deprecated v2.1_0930需求中暂不再使用此接口 - */ - public void queryOrderInService(Context context, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryOrderInService(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderInService")); - } - - /** - * 司机取消订单 - * @param context - * @param orderNo - * @param cancelType - * @param cancelReason - * @param callback - */ - public void cancelOrder(Context context, String orderNo, int cancelType, String cancelReason, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.cancelOrder(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new OrderCancelReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), orderNo, cancelType, cancelReason)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "cancelOrder")); - } - - /** - * 订单列表获取 - * @param context - * @param page - * @param size - * @param callback - */ - public void queryOrdersList(Context context, int page, int size, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryOrdersList(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new OrdersListQueryReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), page, size)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrdersList")); - } - - /** - * 订单状态更新 - * @param context - * @param orderNo - * @param orderStatus - * @param callback - */ - public void updateOrderStatus(Context context, String orderNo, int orderStatus, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.updateOrderStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new OrderStatusUpdateReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), orderNo, orderStatus)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "updateOrderStatus")); - } - - - /** - * 暂停接单 - * @param context - * @param callback - */ - public void changeOrderServing(Context context,boolean isOrdering, - TaxiServiceCallback callback) { - Observable baseDataObservable = null; - if(isOrdering) {// 正在接单去暂停 - baseDataObservable = mOCHTaxiServiceApi.stopOrderServing(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , new DriverStatusUpdateReqBean( - MoGoAiCloudClientConfig.getInstance().getSn())); - }else {// 没有接单去接单 - baseDataObservable = mOCHTaxiServiceApi.resetOrderServing(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , new DriverStatusUpdateReqBean( - MoGoAiCloudClientConfig.getInstance().getSn())); - } - baseDataObservable.subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "updateDriverServiceStatus")); - } - - /** - * 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度 - * @param context - * @param lon - * @param lat - * @param callback - */ - public void runCarHeartbeat(Context context, double lon, double lat, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.runCarHeartbeat(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new CarHeartbeatReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), lon, lat)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "runCarHeartbeat")); - } - - /** - * 查询司机服务数据 - * @param context - * @param callback - */ - public void queryDriverServiceData(Context context, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryServiceData(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryDriverServiceData")); - } - - /** - * 根据订单上传工控机返回的全路径规划数据 - * @param context - * @param orderNo - * @param callback - */ - public void updateOrderRoute(Context context, String orderNo, List points, - TaxiServiceCallback callback){ - mOCHTaxiServiceApi.updateOrderRoute(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new OrderRouteUpdateReqBean(orderNo,points)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"updateOrderRoute")); - } - - /** - * 上报剩余里程,时间 - * @param context - * @param orderNo - * @param distance - * @param duration - * @param callback - */ - public void reportOrderRemain(Context context, String orderNo, long distance, long duration - , TaxiServiceCallback callback){ - - mOCHTaxiServiceApi.reportOrderRemain(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new UpdateOrderDisAndTimeReqBean(orderNo,distance,duration)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"reportOrderRemain")); - } - - /** - * 查询订单全路径 - * @param context - * @param orderNo - * @param callback - */ - public void queryOrderRoute(Context context, String orderNo, TaxiServiceCallback callback) { - mOCHTaxiServiceApi.queryOrderRoute(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,orderNo) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"queryOrderRoute")); - } - - public void confirmAutopilotConditionByDriver(Context context, String orderNo - , TaxiOrPassengerReadyReqBean.Result loc - , TaxiServiceCallback callback){ - mOCHTaxiServiceApi.confirmAutopilotConditionByDriver( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiOrPassengerReadyReqBean(MoGoAiCloudClientConfig.getInstance().getSn() - ,orderNo,loc)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"confirmAutopilotConditionByDriver")); - } - - public void queryAutopilotStatus(Context context, String orderNo, - TaxiServiceCallback callback){ - mOCHTaxiServiceApi.queryPilotStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,orderNo) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"queryAutopilotStatus")); - } - - public void updatePassengerHasBoardedStatus(Context context, String orderNo - , TaxiOrPassengerReadyReqBean.Result loc - , TaxiServiceCallback callback){ - - mOCHTaxiServiceApi.updatePassengerHasBoardedStatus( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiOrPassengerReadyReqBean(MoGoAiCloudClientConfig.getInstance().getSn() - ,orderNo,loc)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "updatePassengerHasBoardedStatus")); - } - - public void startServicePilotDone(Context context, String orderNo - , TaxiOrPassengerReadyReqBean.Result loc - , TaxiServiceCallback callback){ - mOCHTaxiServiceApi.startServicePilotDone(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiOrPassengerReadyReqBean(MoGoAiCloudClientConfig.getInstance().getSn() - ,orderNo,loc)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "startServicePilotDone")); - } - - public void arrivedStartPoint(Context context, String orderNo - , TaxiOrPassengerReadyReqBean.Result loc - , TaxiServiceCallback callback){ - mOCHTaxiServiceApi.arrivedStartPoint(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiOrPassengerReadyReqBean(MoGoAiCloudClientConfig.getInstance().getSn() - ,orderNo,loc)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "arrivedStartPoint")); - - } - - public void arriveTerminal(Context context, String orderNo - , TaxiOrPassengerReadyReqBean.Result loc - , TaxiServiceCallback callback){ - mOCHTaxiServiceApi.arriveTerminal(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiOrPassengerReadyReqBean(MoGoAiCloudClientConfig.getInstance().getSn() - ,orderNo,loc)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "arriveTerminal")); - - } - - - public void orderCompleted(Context context, String orderNo - , TaxiOrPassengerReadyReqBean.Result loc - , TaxiServiceCallback callback){ - mOCHTaxiServiceApi.orderCompleted(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiOrPassengerReadyReqBean(MoGoAiCloudClientConfig.getInstance().getSn() - ,orderNo,loc)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "orderCompleted")); - - } - - private SubscribeImpl getSubscribeImpl( - Context context, TaxiServiceCallback callback, String apiName) { - return new SubscribeImpl(RequestOptions.create(context)) { - @Override - public void onSuccess(T o) { - super.onSuccess(o); - CallerLogger.INSTANCE.d(M_TAXI + TAG,apiName + ": onSuccess() " + o.msg); - if (callback != null) { - callback.onSuccess(o); - } - } - - @Override - public void onError(Throwable e) { - super.onError(e); - CallerLogger.INSTANCE.e(M_TAXI + TAG,apiName + ": onError() " + e.getMessage()); - if (callback != null) { - callback.onError(); - } - } - - @Override - public void onError(String message, int code) { - super.onError(message, code); - CallerLogger.INSTANCE.e(M_TAXI + TAG,String.format(apiName + ": onError() code = %d; message = %s;", code, message)); - if (callback != null) { - callback.onFail(code, message); - } - } - }; - } -} diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.kt b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.kt new file mode 100644 index 0000000000..6d85432699 --- /dev/null +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.kt @@ -0,0 +1,497 @@ +package com.mogo.och.taxi.network + +import android.content.Context +import com.mogo.och.taxi.constant.TaxiConst.Companion.getBaseUrl +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.eagle.core.data.BaseData +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.taxi.bean.* +import io.reactivex.Observable + +/** + * Created by pangfan on 2021/8/19 + */ +object TaxiServiceManager { + + + private var mOCHTaxiServiceApi: TaxiServiceApiNew = + MoGoRetrofitFactory.getInstance(getBaseUrl()).create( + TaxiServiceApiNew::class.java + ) + + /** + * 查询全部服务中/待服务订单列表 + * @param context + * @param callback + */ + @JvmStatic + fun queryOrdersInAndWaitService( + context: Context, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrdersInAndWaitService( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrdersInAndWaitService")) + } + + /** + * 查询新到的预约单 + * @param context + * @param callback + */ + @JvmStatic + fun queryNewBookingOrder( + context: Context, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryNewBookingOrder( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryNewBookingOrder")) + } + + /** + * (预约单)执行抢单动作 + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + fun grabOrder( + context: Context, orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.grabOrder( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + OrderGrabReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "grabOrder")) + } + + /** + * (预约单)查询抢单结果 + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + fun queryOrderGrabStatus( + context: Context, orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderGrabStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + OrderGrabReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderGrabStatus")) + } + + /** + * 查询订单路径规划信息(到上车点、起始点间的距离和预估时间) + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + fun queryOrderRouteInfo( + context: Context, orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderRouteInfo( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + OrderQueryRouteInfoReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderRouteInfo")) + } + + /** + * 通过orderId查询订单信息(用于本地已经有orderId时) + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + @Deprecated("v2.1_0930需求中暂不再使用此接口") + fun queryOrderById( + context: Context, orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderById( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + OrderQueryReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderById")) + } + + /** + * 查询未完成态订单信息(用于本地无orderId时) + * 如果有多条,只会返回时间最近的一条 + * @param context + * @param callback + */ + @JvmStatic + @Deprecated("v2.1_0930需求中暂不再使用此接口") + fun queryOrderInService( + context: Context, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderInService( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderInService")) + } + + /** + * 司机取消订单 + * @param context + * @param orderNo + * @param cancelType + * @param cancelReason + * @param callback + */ + @JvmStatic + fun cancelOrder( + context: Context, orderNo: String?, cancelType: Int, cancelReason: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.cancelOrder( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + OrderCancelReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo, cancelType, cancelReason + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "cancelOrder")) + } + + /** + * 订单列表获取 + * @param context + * @param page + * @param size + * @param callback + */ + @JvmStatic + fun queryOrdersList( + context: Context, page: Int, size: Int, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrdersList( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + OrdersListQueryReqBean( + MoGoAiCloudClientConfig.getInstance().sn, page, size + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrdersList")) + } + + /** + * 订单状态更新 + * @param context + * @param orderNo + * @param orderStatus + * @param callback + */ + @JvmStatic + fun updateOrderStatus( + context: Context, orderNo: String?, orderStatus: Int, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.updateOrderStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + OrderStatusUpdateReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo, orderStatus + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "updateOrderStatus")) + } + + /** + * 暂停接单 + * @param context + * @param callback + */ + @JvmStatic + fun changeOrderServing( + context: Context, isOrdering: Boolean, + callback: OchCommonServiceCallback? + ) { + val baseDataObservable: Observable = if (isOrdering) { // 正在接单去暂停 + mOCHTaxiServiceApi.stopOrderServing( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + DriverStatusUpdateReqBean( + MoGoAiCloudClientConfig.getInstance().sn + ) + ).transformTry() + } else { // 没有接单去接单 + mOCHTaxiServiceApi.resetOrderServing( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + DriverStatusUpdateReqBean( + MoGoAiCloudClientConfig.getInstance().sn + ) + ).transformTry() + } + baseDataObservable + .subscribe(OchCommonSubscribeImpl(context, callback, "updateDriverServiceStatus")) + } + + /** + * 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度 + * @param context + * @param lon + * @param lat + * @param callback + */ + @JvmStatic + fun runCarHeartbeat( + context: Context, lon: Double, lat: Double, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.runCarHeartbeat( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + CarHeartbeatReqBean( + MoGoAiCloudClientConfig.getInstance().sn, lon, lat + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "runCarHeartbeat")) + } + + /** + * 查询司机服务数据 + * @param context + * @param callback + */ + @JvmStatic + fun queryDriverServiceData( + context: Context, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryServiceData( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverServiceData")) + } + + /** + * 根据订单上传工控机返回的全路径规划数据 + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + fun updateOrderRoute( + context: Context, orderNo: String?, points: List?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.updateOrderRoute( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + OrderRouteUpdateReqBean(orderNo, points) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "updateOrderRoute")) + } + + /** + * 上报剩余里程,时间 + * @param context + * @param orderNo + * @param distance + * @param duration + * @param callback + */ + @JvmStatic + fun reportOrderRemain( + context: Context, + orderNo: String?, + distance: Long, + duration: Long, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.reportOrderRemain( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + UpdateOrderDisAndTimeReqBean(orderNo, distance, duration) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "reportOrderRemain")) + } + + /** + * 查询订单全路径 + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + fun queryOrderRoute( + context: Context, + orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderRoute( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + orderNo + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderRoute")) + } + @JvmStatic + fun confirmAutopilotConditionByDriver( + context: Context, + orderNo: String?, + loc: TaxiOrPassengerReadyReqBean.Result?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.confirmAutopilotConditionByDriver( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiOrPassengerReadyReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo, loc + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "confirmAutopilotConditionByDriver")) + } + @JvmStatic + fun queryAutopilotStatus( + context: Context, orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryPilotStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + orderNo + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryAutopilotStatus")) + } + @JvmStatic + fun updatePassengerHasBoardedStatus( + context: Context, + orderNo: String?, + loc: TaxiOrPassengerReadyReqBean.Result?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.updatePassengerHasBoardedStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiOrPassengerReadyReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo, loc + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "updatePassengerHasBoardedStatus")) + } + @JvmStatic + fun startServicePilotDone( + context: Context, + orderNo: String?, + loc: TaxiOrPassengerReadyReqBean.Result?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.startServicePilotDone( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiOrPassengerReadyReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo, loc + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "startServicePilotDone")) + } + @JvmStatic + fun arrivedStartPoint( + context: Context, + orderNo: String?, + loc: TaxiOrPassengerReadyReqBean.Result?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.arrivedStartPoint( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiOrPassengerReadyReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo, loc + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "arrivedStartPoint")) + } + @JvmStatic + fun arriveTerminal( + context: Context, + orderNo: String?, + loc: TaxiOrPassengerReadyReqBean.Result?, + callback: OchCommonServiceCallback + ) { + mOCHTaxiServiceApi.arriveTerminal( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiOrPassengerReadyReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo, loc + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "arriveTerminal")) + } + @JvmStatic + fun orderCompleted( + context: Context, + orderNo: String?, + loc: TaxiOrPassengerReadyReqBean.Result?, + callback: OchCommonServiceCallback + ) { + mOCHTaxiServiceApi.orderCompleted( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiOrPassengerReadyReqBean( + MoGoAiCloudClientConfig.getInstance().sn, orderNo, loc + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "orderCompleted")) + } + +} \ 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/tools/BusOperationView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/BusOperationView.kt index 37709763dd..141a3ef9d7 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/BusOperationView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/BusOperationView.kt @@ -24,7 +24,7 @@ class BusOperationView @JvmOverloads constructor( init { LayoutInflater.from(context).inflate(R.layout.view_och_bus_operation,this,true) context?.let { - actvAccountPhone.text = SharedPrefs.getInstance(it).getString("account","") + actvAccountPhone.text = phoneMask(SharedPrefs.getInstance(it).getString("och_account","")) } } From de40f4c5948dd7061bd979635aca1ba6221da93b Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 12 Oct 2022 14:15:03 +0800 Subject: [PATCH 008/203] =?UTF-8?q?[V2X][Road]=E6=B7=BB=E5=8A=A040%?= =?UTF-8?q?=E7=9A=84=E9=80=8F=E6=98=8E=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt index e4e5429b21..e1fc046121 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt @@ -45,7 +45,7 @@ object AiRoadMarker { private val line by lazy { AtomicReference() } private val START_COLOR = Color.parseColor("#002ABAD9") - private val END_COLOR = Color.parseColor("#FFFF7A30") + private val END_COLOR = Color.parseColor("#66FF7A30") private val markers = ConcurrentSet() From a7ca4752b113cfa09e5df45e287378157d749d30 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Wed, 12 Oct 2022 16:47:27 +0800 Subject: [PATCH 009/203] =?UTF-8?q?[Fix]docker2.3.0=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E5=B1=8F=E6=AF=94=E4=B9=98=E5=AE=A2=E5=B1=8F=E5=85=88=E6=8B=BF?= =?UTF-8?q?=E5=88=B0=E8=BD=A6=E8=BE=86=E9=85=8D=E7=BD=AE=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=97=B6=E4=B8=8D=E8=BD=AC=E5=8F=91=E6=95=B0=E6=8D=AE=E7=BB=99?= =?UTF-8?q?=E4=B9=98=E5=AE=A2=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/MoGoAutopilotProvider.kt | 51 +++++++++++-------- .../autopilot/telematic/TeleMsgHandler.kt | 6 ++- 2 files changed, 35 insertions(+), 22 deletions(-) diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt index a7268ec13e..dec5498cd8 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt @@ -153,27 +153,6 @@ class MoGoAutopilotProvider : } }, MoGoAiCloudClientConfig.getInstance().sn) } else { - msgHandler.setListener(object : EventListener { - override fun connectDevice(isSupportMulti: Boolean) { - if (!isInit) { - isInit = true - UiThreadHandler.post { - if (isSupportMulti) { - // 直连工控机 - directConnect() - } else { - val options = AdasOptions - .Builder() - .setClient(true) - .build() - AdasManager.getInstance() - .create(options, MoGoAdasMsgConnectStatusListenerImpl()) - listenDeviceData() - } - } - } - } - }) NSDNettyManager.getInstance() .searchAndConnectServer(context, MoGoAiCloudClientConfig.getInstance().sn, AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode), @@ -196,6 +175,36 @@ class MoGoAutopilotProvider : } }) } + msgHandler.setListener(object : EventListener { + override fun connectDevice(isSupportMulti: Boolean) { + if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { + if (!isInit) { + isInit = true + // 转发工控机数据给乘客屏 + listenDeviceData() + } + } else { + if (!isInit) { + isInit = true + UiThreadHandler.post { + if (isSupportMulti) { + // 直连工控机 + directConnect() + } else { + val options = AdasOptions + .Builder() + .setClient(true) + .build() + AdasManager.getInstance() + .create(options, MoGoAdasMsgConnectStatusListenerImpl()) + // 接收司机屏发过来的感知、定位等数据 + listenDeviceData() + } + } + } + } + } + }) CallerAutopilotCarConfigListenerManager.addListener(TAG, this) CallerLogger.i("$M_ADAS_IMPL$TAG", "initServer……") // 同步数据给工控机的服务 diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/telematic/TeleMsgHandler.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/telematic/TeleMsgHandler.kt index 1e21903503..30ffb68fd9 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/telematic/TeleMsgHandler.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/telematic/TeleMsgHandler.kt @@ -118,7 +118,10 @@ class TeleMsgHandler : IMsgHandler { "1" -> true else -> false } - Logger.d("Route", "TeleMsgHandler -> handleMsgFromServer ==> isDemoMode:" + FunctionBuildConfig.isDemoMode + ",isIgnore:" + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData) + Logger.d( + "Route", + "TeleMsgHandler -> handleMsgFromServer ==> isDemoMode:" + FunctionBuildConfig.isDemoMode + ",isIgnore:" + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData + ) timestamp = currTime invokeNettyConnResult("乘客屏收到的美化模式isIgnore为:${FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData}") } else { @@ -139,6 +142,7 @@ class TeleMsgHandler : IMsgHandler { MogoProtocolMsg.REQ_MAC_ADDRESS -> { val carConfig = AdasManager.getInstance().carConfig if (carConfig != null) { + listener?.connectDevice(!carConfig.dockVersion.contains("2.3.0")) val configArray = carConfig.toByteArray() NSDNettyManager.getInstance().sendMsgToSpecifiedClient( From 30e68dca448dcc961bced35b46f33600702c86d3 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Wed, 12 Oct 2022 19:07:54 +0800 Subject: [PATCH 010/203] =?UTF-8?q?[2.12.0]=201=E3=80=81=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=88=B0=E7=9B=AE=E7=9A=84=E5=9C=B0=E5=AF=BC=E8=88=AA=E6=8C=89?= =?UTF-8?q?=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/TaxiBeingServerdOrdersFragment.java | 14 ++++++++--- .../och/taxi/ui/TaxiServerOrdersFragment.java | 5 +--- .../src/main/res/layout/taxi_being_order.xml | 24 +++++++++++++++---- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java index 8d0fa9709d..4a8afee6ae 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java @@ -81,12 +81,13 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implement private LinearLayout mContentModule31; private TextView mStationTv31; - private LinearLayout mContentModule32; + private ConstraintLayout mContentModule32; private TextView mStationTv32; private TextView mArrivedStationTitleTv32; private TextView mGoAheadStationTitleTv31; private TextView mCatchStationTitleTv31; private ImageView mNaviIcon; + private ImageView mNaviToEndIcon; private TextView mPassengerNum; private TextView mPassengerPhone; private ConstraintLayout mPassengerInfoLayout; @@ -171,6 +172,10 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implement private void initNaviView(View view) { mNaviIcon = view.findViewById(R.id.module_och_taxi_navi_iv); mNaviIcon.setOnClickListener(this); + + mNaviToEndIcon = view.findViewById(R.id.module_och_taxi_navi_end_iv); + mNaviToEndIcon.setOnClickListener(this); + } /** @@ -384,6 +389,7 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implement mDistanceAndTime3.setText(Html.fromHtml(strHtml2)); mNaviIcon.setVisibility(View.VISIBLE); } else if (mContentModule2 != null && mContentModule2.getVisibility() == View.VISIBLE) { //前往终点 时间单位是分钟 + mNaviIcon.setVisibility(View.VISIBLE); if (mTtsLessThan200Tip < 1 && meters <= 250 && meters > 150){ speekVoice200mTipsOnce(); } @@ -556,11 +562,13 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implement } else if (v.getId() == R.id.module_och_taxi_order_cancel_iv) { new TaxiOrderCancelDialog(mTaxiFragment, mActivity, mOrderNo, saveOrderState).show(); } else if (v.getId() == R.id.module_och_taxi_navi_iv) { - // TODO: 2021/11/30 打开去往乘客上车点的导航页面 if (mTaxiFragment != null) { showNaviToStartStationFragment(true); } - } else if (v.getId() == R.id.taxi_start_by_auto){//自驾模式 + } else if (v.getId() == R.id.module_och_taxi_navi_end_iv){ + // TODO: 2021/11/30 打开去往乘客下车点的导航页面 + + }else if (v.getId() == R.id.taxi_start_by_auto){//自驾模式 CallerLogger.INSTANCE.d(M_TAXI + TAG, "自驾模式"); mOrderStartModeBtn.setTag(0); startOrEndService(); diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java index 0e4f2bd53b..6ea26a2329 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java @@ -200,10 +200,7 @@ public class TaxiServerOrdersFragment extends BaseTaxiUIFragment { if (null == beingServerdOrdersFragment) return; beingServerdOrdersFragment.onCurrentOrderCancelDone(); } - public void onCurrentOrderDistToStartChanged(long meters, long timeInSecond){ - if (null == beingServerdOrdersFragment) return; - beingServerdOrdersFragment.updateDistanceAndTime(meters,timeInSecond); - } + public void onCurrentOrderDistToEndChanged(long meters, long timeInSecond){ if (null == beingServerdOrdersFragment) return; beingServerdOrdersFragment.updateDistanceAndTime(meters,timeInSecond); diff --git a/OCH/mogo-och-taxi/src/main/res/layout/taxi_being_order.xml b/OCH/mogo-och-taxi/src/main/res/layout/taxi_being_order.xml index 9cb4d3a230..17ce151518 100644 --- a/OCH/mogo-och-taxi/src/main/res/layout/taxi_being_order.xml +++ b/OCH/mogo-och-taxi/src/main/res/layout/taxi_being_order.xml @@ -205,7 +205,7 @@ - + tools:text="送乘客至" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent"/> - + tools:text="- -" + app:layout_constraintTop_toBottomOf="@+id/arrive_station_32" + app:layout_constraintLeft_toLeftOf="parent"/> + + + + Date: Wed, 12 Oct 2022 20:05:09 +0800 Subject: [PATCH 011/203] =?UTF-8?q?[Fix]=E8=A7=A3=E5=86=B3=E5=8F=B8?= =?UTF-8?q?=E6=9C=BA=E5=B1=8F=E8=BF=9E=E6=8E=A5=E5=B7=A5=E6=8E=A7=E6=9C=BA?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/manager/OCHAdasAbilityManager.java | 196 +++--------------- .../autopilot/adapter/MoGoAdasListenerImpl.kt | 5 +- .../IMoGoAutopilotActionsListener.kt | 12 ++ .../CallerAutopilotActionsListenerManager.kt | 60 ++++++ 4 files changed, 107 insertions(+), 166 deletions(-) create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotActionsListener.kt create mode 100644 core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotActionsListenerManager.kt diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java index 60901c1673..93ad0039a6 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java @@ -2,19 +2,14 @@ package com.mogo.och.common.module.manager; import android.content.Context; +import androidx.annotation.Nullable; + +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotActionsListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotActionsListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.Logger; -import com.zhidao.support.adas.high.AdasManager; -import com.zhidao.support.adas.high.OnAdasListener; import com.zhidao.support.adas.high.bean.AutopilotAbility; -import com.zhidao.support.adas.high.common.ProtocolStatus; import chassis.Chassis; -import chassis.VehicleStateOuterClass; -import mogo.telematics.pad.MessagePad; -import mogo_msg.MogoReportMsg; -import perception.TrafficLightOuterClass; -import prediction.Prediction; -import record_cache.RecordPanelOuterClass; import system_master.SystemStatusInfo; /** @@ -22,11 +17,10 @@ import system_master.SystemStatusInfo; * 工控机状态信息回调(判断是否能否启动自动驾驶的回调) * 目前定的是3秒回调一次 */ -public class OCHAdasAbilityManager { +public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener { private static final String TAG = OCHAdasAbilityManager.class.getSimpleName(); - private boolean isAutopilotAbility = true; private String autopilotAbilityReason = ""; @@ -52,164 +46,40 @@ public class OCHAdasAbilityManager { private void initListeners() { //2022.10.9 工控机状态信息回调(判断是否能否启动自动驾驶的回调), 目前定的是3秒回调一次 - AdasManager.getInstance().setOnAdasListener(adasListener); + CallerAutopilotActionsListenerManager.INSTANCE.addListener(TAG, this); } private void releaseListeners() { - AdasManager.getInstance().setOnAdasListener(null); + CallerAutopilotActionsListenerManager.INSTANCE.removeListener(this); + } + + @Override + public void onAutopilotAbility(@Nullable AutopilotAbility ability) { + isAutopilotAbility = true; + autopilotAbilityReason = null; + if (ability.gear == null || ability.gear == Chassis.GearPosition.GEAR_P || ability.gear == Chassis.GearPosition.GEAR_R) { + isAutopilotAbility = false; + autopilotAbilityReason = "挡位不正常"; + } + if (isAutopilotAbility) + if (ability.brake > 0) { + isAutopilotAbility = false; + autopilotAbilityReason = "制动踏板被踩下"; + } + if (isAutopilotAbility) + if (ability.statusInfo.getSysState() == SystemStatusInfo.SystemState.SYS_STARTING) { + isAutopilotAbility = false; + autopilotAbilityReason = "系统正在启动"; + } + if (isAutopilotAbility) + if (ability.statusInfo.getSysState() == SystemStatusInfo.SystemState.SYS_EXITING) { + isAutopilotAbility = false; + autopilotAbilityReason = "系统正在关闭"; + } + Logger.d(TAG, "是否可以启动自动驾驶=" + isAutopilotAbility + " 原因=" + autopilotAbilityReason); } public void release() { releaseListeners(); } - - private final OnAdasListener adasListener = new OnAdasListener() { - @Override - public void onTrajectory(MessagePad.Header header, MessagePad.Trajectory trajectory) { - - } - - @Override - public void onTrackedObjects(MessagePad.Header header, MessagePad.TrackedObjects trackedObjects) { - - } - - @Override - public void onGnssInfo(MessagePad.Header header, MessagePad.GnssInfo gnssInfo) { - - } - - @Override - public void onVehicleState(MessagePad.Header header, VehicleStateOuterClass.VehicleState vehicleState) { - - } - - @Override - public void onAutopilotState(MessagePad.Header header, MessagePad.AutopilotState autopilotState) { - - } - - @Override - public void onReportMessage(MessagePad.Header header, MogoReportMsg.MogoReportMessage mogoReportMessage) { - - } - - @Override - public void onPerceptionTrafficLight(MessagePad.Header header, TrafficLightOuterClass.TrafficLights trafficLights) { - - } - - @Override - public void onPredictionObstacleTrajectory(MessagePad.Header header, Prediction.mPredictionObjects predictionObjects) { - - } - - @Override - public void onPointCloud(byte[] pointCloud) { - - } - - @Override - public void onPlanningObjects(MessagePad.Header header, MessagePad.PlanningObjects planningObjects) { - - } - - @Override - public void onBasicInfoReq(MessagePad.Header header, MessagePad.BasicInfoReq basicInfoReq) { - - } - - @Override - public void onCarConfigResp(MessagePad.Header header, MessagePad.CarConfigResp carConfigResp) { - - } - - @Override - public void onRecordResult(MessagePad.Header header, RecordPanelOuterClass.RecordPanel recordPanel) { - - } - - @Override - public void onGlobalPathResp(MessagePad.Header header, MessagePad.GlobalPathResp globalPathResp) { - - } - - @Override - public void onWarn(MessagePad.Header header, MessagePad.Warn warn) { - - } - - @Override - public void onArrivalNotification(MessagePad.Header header, MessagePad.ArrivalNotification arrivalNotification) { - - } - - @Override - public void onStatusQueryResp(MessagePad.Header header, SystemStatusInfo.StatusInfo statusInfo) { - - } - - @Override - public void onRecordDataConfigResp(MessagePad.Header header, MessagePad.RecordDataConfig config) { - - } - - @Override - public void onPlanningActionMsg(MessagePad.Header header, MessagePad.PlanningActionMsg planningActionMsg) { - - } - - @Override - public void onError(ProtocolStatus status, byte[] bytes) { - - } - - @Override - public void onAutopilotAbility(AutopilotAbility ability) { - isAutopilotAbility = true; - autopilotAbilityReason = null; - if (ability.gear == null || ability.gear == Chassis.GearPosition.GEAR_P || ability.gear == Chassis.GearPosition.GEAR_R) { - isAutopilotAbility = false; - autopilotAbilityReason = "挡位不正常"; - } - if (isAutopilotAbility) - if (ability.brake > 0) { - isAutopilotAbility = false; - autopilotAbilityReason = "制动踏板被踩下"; - } - - if (isAutopilotAbility) - if (ability.statusInfo.getSysState() == SystemStatusInfo.SystemState.SYS_STARTING) { - isAutopilotAbility = false; - autopilotAbilityReason = "系统正在启动"; - } - if (isAutopilotAbility) - if (ability.statusInfo.getSysState() == SystemStatusInfo.SystemState.SYS_EXITING) { - isAutopilotAbility = false; - autopilotAbilityReason = "系统正在关闭"; - } - // 暂时先拦截及提示以上4种异常情况 -// if (isAutopilotAbility) -// if (ability.statusInfo == null) { -// isAutopilotAbility = false; -// autopilotAbilityReason = "系统Topic不正常"; -// } -// if (isAutopilotAbility) -// if (ability.statusInfo.getSysState() == SystemStatusInfo.SystemState.SYS_FAULT) { -// isAutopilotAbility = false; -// autopilotAbilityReason = "系统异常"; -// } -// -// if (isAutopilotAbility) -// for (SystemStatusInfo.HealthInfo healthInfo : ability.statusInfo.getHealthInfoList()) { -// if (healthInfo.getState() == SystemStatusInfo.HealthState.FAULT) { -// isAutopilotAbility = false; -// autopilotAbilityReason = healthInfo.getName() + " Topic异常"; -// break; -// } -// } - - Logger.d(TAG, "是否可以启动自动驾驶=" + isAutopilotAbility + " 原因=" + autopilotAbilityReason); - } - }; } diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt index a9a3e8310b..0402c87379 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -1,7 +1,5 @@ package com.mogo.eagle.core.function.autopilot.adapter -import android.location.Location -import android.util.Log import chassis.VehicleStateOuterClass import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig @@ -37,6 +35,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeAutopilotGuardian import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeAutopilotSNRequest import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeAutopilotStatusRespByQuery +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotActionsListenerManager.invokeAutopilotAbility import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager.invokeAutopilotCarConfigData import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarStatusListenerManager.invokeAutopilotCarStateData import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager @@ -51,7 +50,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListener import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotVehicleStateListenerManager import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.map.navi.MogoCarLocationChangedListenerRegister import com.zhidao.support.adas.high.AdasManager import com.zhidao.support.adas.high.OnAdasListener import com.zhidao.support.adas.high.bean.AutopilotAbility @@ -444,5 +442,6 @@ class MoGoAdasListenerImpl : OnAdasListener { * 使用方法查看:app_ipc_monitoring/uiMainActivity/onAutopilotAbility */ override fun onAutopilotAbility(ability: AutopilotAbility?) { + invokeAutopilotAbility(ability) } } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotActionsListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotActionsListener.kt new file mode 100644 index 0000000000..ed661bbed4 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotActionsListener.kt @@ -0,0 +1,12 @@ +package com.mogo.eagle.core.function.api.autopilot + +import com.zhidao.support.adas.high.bean.AutopilotAbility + + +interface IMoGoAutopilotActionsListener { + + /** + * pnc actions 决策 驾驶的意图 + */ + fun onAutopilotAbility(ability: AutopilotAbility?) +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotActionsListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotActionsListenerManager.kt new file mode 100644 index 0000000000..5310098bda --- /dev/null +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotActionsListenerManager.kt @@ -0,0 +1,60 @@ +package com.mogo.eagle.core.function.call.autopilot + +import androidx.annotation.Nullable +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotActionsListener +import com.mogo.eagle.core.function.call.base.CallerBase +import com.zhidao.support.adas.high.bean.AutopilotAbility +import java.util.concurrent.ConcurrentHashMap + + +object CallerAutopilotActionsListenerManager : CallerBase() { + + private val M_AUTOPILOT_ACTIONS_LISTENER: ConcurrentHashMap = + ConcurrentHashMap() + + /** + * 添加监听 + * @param tag 标记,用来注销监听使用 + * @param listener 监听回调 + */ + fun addListener( + @Nullable tag: String, + @Nullable listener: IMoGoAutopilotActionsListener + ) { + if (M_AUTOPILOT_ACTIONS_LISTENER.containsKey(tag)) { + return + } + M_AUTOPILOT_ACTIONS_LISTENER[tag] = listener + } + + /** + * 删除监听 + * @param tag 标记,用来注销监听使用 + */ + fun removeListener(@Nullable tag: String) { + if (!M_AUTOPILOT_ACTIONS_LISTENER.containsKey(tag)) { + return + } + M_AUTOPILOT_ACTIONS_LISTENER.remove(tag) + } + + /** + * 删除自动驾驶按钮选中监听 + * @param listener 要删除的监听对象 + */ + fun removeListener(@Nullable listener: IMoGoAutopilotActionsListener) { + M_AUTOPILOT_ACTIONS_LISTENER.forEach { + if (it.value == listener) { + M_AUTOPILOT_ACTIONS_LISTENER.remove(it.key) + } + } + } + + @Synchronized + fun invokeAutopilotAbility(ability: AutopilotAbility?) { + M_AUTOPILOT_ACTIONS_LISTENER.forEach { + val listener = it.value + listener.onAutopilotAbility(ability) + } + } +} \ No newline at end of file From 0169a68d1e9e1448cb044dabebc8790f4906090f Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Wed, 12 Oct 2022 20:05:09 +0800 Subject: [PATCH 012/203] =?UTF-8?q?[Fix]=E8=A7=A3=E5=86=B3=E5=8F=B8?= =?UTF-8?q?=E6=9C=BA=E5=B1=8F=E8=BF=9E=E6=8E=A5=E5=B7=A5=E6=8E=A7=E6=9C=BA?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/manager/OCHAdasAbilityManager.java | 196 +++--------------- .../autopilot/adapter/MoGoAdasListenerImpl.kt | 5 +- .../IMoGoAutopilotActionsListener.kt | 12 ++ .../CallerAutopilotActionsListenerManager.kt | 60 ++++++ 4 files changed, 107 insertions(+), 166 deletions(-) create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotActionsListener.kt create mode 100644 core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotActionsListenerManager.kt diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java index 60901c1673..93ad0039a6 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java @@ -2,19 +2,14 @@ package com.mogo.och.common.module.manager; import android.content.Context; +import androidx.annotation.Nullable; + +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotActionsListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotActionsListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.Logger; -import com.zhidao.support.adas.high.AdasManager; -import com.zhidao.support.adas.high.OnAdasListener; import com.zhidao.support.adas.high.bean.AutopilotAbility; -import com.zhidao.support.adas.high.common.ProtocolStatus; import chassis.Chassis; -import chassis.VehicleStateOuterClass; -import mogo.telematics.pad.MessagePad; -import mogo_msg.MogoReportMsg; -import perception.TrafficLightOuterClass; -import prediction.Prediction; -import record_cache.RecordPanelOuterClass; import system_master.SystemStatusInfo; /** @@ -22,11 +17,10 @@ import system_master.SystemStatusInfo; * 工控机状态信息回调(判断是否能否启动自动驾驶的回调) * 目前定的是3秒回调一次 */ -public class OCHAdasAbilityManager { +public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener { private static final String TAG = OCHAdasAbilityManager.class.getSimpleName(); - private boolean isAutopilotAbility = true; private String autopilotAbilityReason = ""; @@ -52,164 +46,40 @@ public class OCHAdasAbilityManager { private void initListeners() { //2022.10.9 工控机状态信息回调(判断是否能否启动自动驾驶的回调), 目前定的是3秒回调一次 - AdasManager.getInstance().setOnAdasListener(adasListener); + CallerAutopilotActionsListenerManager.INSTANCE.addListener(TAG, this); } private void releaseListeners() { - AdasManager.getInstance().setOnAdasListener(null); + CallerAutopilotActionsListenerManager.INSTANCE.removeListener(this); + } + + @Override + public void onAutopilotAbility(@Nullable AutopilotAbility ability) { + isAutopilotAbility = true; + autopilotAbilityReason = null; + if (ability.gear == null || ability.gear == Chassis.GearPosition.GEAR_P || ability.gear == Chassis.GearPosition.GEAR_R) { + isAutopilotAbility = false; + autopilotAbilityReason = "挡位不正常"; + } + if (isAutopilotAbility) + if (ability.brake > 0) { + isAutopilotAbility = false; + autopilotAbilityReason = "制动踏板被踩下"; + } + if (isAutopilotAbility) + if (ability.statusInfo.getSysState() == SystemStatusInfo.SystemState.SYS_STARTING) { + isAutopilotAbility = false; + autopilotAbilityReason = "系统正在启动"; + } + if (isAutopilotAbility) + if (ability.statusInfo.getSysState() == SystemStatusInfo.SystemState.SYS_EXITING) { + isAutopilotAbility = false; + autopilotAbilityReason = "系统正在关闭"; + } + Logger.d(TAG, "是否可以启动自动驾驶=" + isAutopilotAbility + " 原因=" + autopilotAbilityReason); } public void release() { releaseListeners(); } - - private final OnAdasListener adasListener = new OnAdasListener() { - @Override - public void onTrajectory(MessagePad.Header header, MessagePad.Trajectory trajectory) { - - } - - @Override - public void onTrackedObjects(MessagePad.Header header, MessagePad.TrackedObjects trackedObjects) { - - } - - @Override - public void onGnssInfo(MessagePad.Header header, MessagePad.GnssInfo gnssInfo) { - - } - - @Override - public void onVehicleState(MessagePad.Header header, VehicleStateOuterClass.VehicleState vehicleState) { - - } - - @Override - public void onAutopilotState(MessagePad.Header header, MessagePad.AutopilotState autopilotState) { - - } - - @Override - public void onReportMessage(MessagePad.Header header, MogoReportMsg.MogoReportMessage mogoReportMessage) { - - } - - @Override - public void onPerceptionTrafficLight(MessagePad.Header header, TrafficLightOuterClass.TrafficLights trafficLights) { - - } - - @Override - public void onPredictionObstacleTrajectory(MessagePad.Header header, Prediction.mPredictionObjects predictionObjects) { - - } - - @Override - public void onPointCloud(byte[] pointCloud) { - - } - - @Override - public void onPlanningObjects(MessagePad.Header header, MessagePad.PlanningObjects planningObjects) { - - } - - @Override - public void onBasicInfoReq(MessagePad.Header header, MessagePad.BasicInfoReq basicInfoReq) { - - } - - @Override - public void onCarConfigResp(MessagePad.Header header, MessagePad.CarConfigResp carConfigResp) { - - } - - @Override - public void onRecordResult(MessagePad.Header header, RecordPanelOuterClass.RecordPanel recordPanel) { - - } - - @Override - public void onGlobalPathResp(MessagePad.Header header, MessagePad.GlobalPathResp globalPathResp) { - - } - - @Override - public void onWarn(MessagePad.Header header, MessagePad.Warn warn) { - - } - - @Override - public void onArrivalNotification(MessagePad.Header header, MessagePad.ArrivalNotification arrivalNotification) { - - } - - @Override - public void onStatusQueryResp(MessagePad.Header header, SystemStatusInfo.StatusInfo statusInfo) { - - } - - @Override - public void onRecordDataConfigResp(MessagePad.Header header, MessagePad.RecordDataConfig config) { - - } - - @Override - public void onPlanningActionMsg(MessagePad.Header header, MessagePad.PlanningActionMsg planningActionMsg) { - - } - - @Override - public void onError(ProtocolStatus status, byte[] bytes) { - - } - - @Override - public void onAutopilotAbility(AutopilotAbility ability) { - isAutopilotAbility = true; - autopilotAbilityReason = null; - if (ability.gear == null || ability.gear == Chassis.GearPosition.GEAR_P || ability.gear == Chassis.GearPosition.GEAR_R) { - isAutopilotAbility = false; - autopilotAbilityReason = "挡位不正常"; - } - if (isAutopilotAbility) - if (ability.brake > 0) { - isAutopilotAbility = false; - autopilotAbilityReason = "制动踏板被踩下"; - } - - if (isAutopilotAbility) - if (ability.statusInfo.getSysState() == SystemStatusInfo.SystemState.SYS_STARTING) { - isAutopilotAbility = false; - autopilotAbilityReason = "系统正在启动"; - } - if (isAutopilotAbility) - if (ability.statusInfo.getSysState() == SystemStatusInfo.SystemState.SYS_EXITING) { - isAutopilotAbility = false; - autopilotAbilityReason = "系统正在关闭"; - } - // 暂时先拦截及提示以上4种异常情况 -// if (isAutopilotAbility) -// if (ability.statusInfo == null) { -// isAutopilotAbility = false; -// autopilotAbilityReason = "系统Topic不正常"; -// } -// if (isAutopilotAbility) -// if (ability.statusInfo.getSysState() == SystemStatusInfo.SystemState.SYS_FAULT) { -// isAutopilotAbility = false; -// autopilotAbilityReason = "系统异常"; -// } -// -// if (isAutopilotAbility) -// for (SystemStatusInfo.HealthInfo healthInfo : ability.statusInfo.getHealthInfoList()) { -// if (healthInfo.getState() == SystemStatusInfo.HealthState.FAULT) { -// isAutopilotAbility = false; -// autopilotAbilityReason = healthInfo.getName() + " Topic异常"; -// break; -// } -// } - - Logger.d(TAG, "是否可以启动自动驾驶=" + isAutopilotAbility + " 原因=" + autopilotAbilityReason); - } - }; } diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt index a9a3e8310b..0402c87379 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -1,7 +1,5 @@ package com.mogo.eagle.core.function.autopilot.adapter -import android.location.Location -import android.util.Log import chassis.VehicleStateOuterClass import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig @@ -37,6 +35,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeAutopilotGuardian import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeAutopilotSNRequest import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.invokeAutopilotStatusRespByQuery +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotActionsListenerManager.invokeAutopilotAbility import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager.invokeAutopilotCarConfigData import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarStatusListenerManager.invokeAutopilotCarStateData import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager @@ -51,7 +50,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListener import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotVehicleStateListenerManager import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.map.navi.MogoCarLocationChangedListenerRegister import com.zhidao.support.adas.high.AdasManager import com.zhidao.support.adas.high.OnAdasListener import com.zhidao.support.adas.high.bean.AutopilotAbility @@ -444,5 +442,6 @@ class MoGoAdasListenerImpl : OnAdasListener { * 使用方法查看:app_ipc_monitoring/uiMainActivity/onAutopilotAbility */ override fun onAutopilotAbility(ability: AutopilotAbility?) { + invokeAutopilotAbility(ability) } } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotActionsListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotActionsListener.kt new file mode 100644 index 0000000000..ed661bbed4 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotActionsListener.kt @@ -0,0 +1,12 @@ +package com.mogo.eagle.core.function.api.autopilot + +import com.zhidao.support.adas.high.bean.AutopilotAbility + + +interface IMoGoAutopilotActionsListener { + + /** + * pnc actions 决策 驾驶的意图 + */ + fun onAutopilotAbility(ability: AutopilotAbility?) +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotActionsListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotActionsListenerManager.kt new file mode 100644 index 0000000000..5310098bda --- /dev/null +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotActionsListenerManager.kt @@ -0,0 +1,60 @@ +package com.mogo.eagle.core.function.call.autopilot + +import androidx.annotation.Nullable +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotActionsListener +import com.mogo.eagle.core.function.call.base.CallerBase +import com.zhidao.support.adas.high.bean.AutopilotAbility +import java.util.concurrent.ConcurrentHashMap + + +object CallerAutopilotActionsListenerManager : CallerBase() { + + private val M_AUTOPILOT_ACTIONS_LISTENER: ConcurrentHashMap = + ConcurrentHashMap() + + /** + * 添加监听 + * @param tag 标记,用来注销监听使用 + * @param listener 监听回调 + */ + fun addListener( + @Nullable tag: String, + @Nullable listener: IMoGoAutopilotActionsListener + ) { + if (M_AUTOPILOT_ACTIONS_LISTENER.containsKey(tag)) { + return + } + M_AUTOPILOT_ACTIONS_LISTENER[tag] = listener + } + + /** + * 删除监听 + * @param tag 标记,用来注销监听使用 + */ + fun removeListener(@Nullable tag: String) { + if (!M_AUTOPILOT_ACTIONS_LISTENER.containsKey(tag)) { + return + } + M_AUTOPILOT_ACTIONS_LISTENER.remove(tag) + } + + /** + * 删除自动驾驶按钮选中监听 + * @param listener 要删除的监听对象 + */ + fun removeListener(@Nullable listener: IMoGoAutopilotActionsListener) { + M_AUTOPILOT_ACTIONS_LISTENER.forEach { + if (it.value == listener) { + M_AUTOPILOT_ACTIONS_LISTENER.remove(it.key) + } + } + } + + @Synchronized + fun invokeAutopilotAbility(ability: AutopilotAbility?) { + M_AUTOPILOT_ACTIONS_LISTENER.forEach { + val listener = it.value + listener.onAutopilotAbility(ability) + } + } +} \ No newline at end of file From c3ef16ee438a5d746d168c4cfaf9c8f897d0a147 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Thu, 13 Oct 2022 09:10:00 +0800 Subject: [PATCH 013/203] =?UTF-8?q?[2.11.0=20fix]=20=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E7=A6=BB=E7=AB=99=E6=88=90=E5=8A=9F=E5=90=8E=EF=BC=8C=E8=87=AA?= =?UTF-8?q?=E9=A9=BE=E5=91=BD=E4=BB=A4=E5=8F=91=E9=80=81bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/och/bus/model/BusOrderModel.java | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index 250ecc2105..a9600a2ea7 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -475,20 +475,13 @@ public class BusOrderModel { */ private void leaveStationSuccess() { //开启自动驾驶 2.10.0: 如果自动驾驶状态下开启, 非自动驾驶状态下不开启,需手动点击自动驾驶按钮开启 + isGoingToNextStation = true; if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ startAutopilot(false); }else { firstStartAutopilot = 0; } - - if (isGoingToNextStation) { - // 为了避免恢复自动驾驶时重复的接口请求 - return; - } - isGoingToNextStation = true; - -// AIAssist.getInstance( mContext ).speakTTSVoice( "欢迎乘坐’蘑菇车联‘无人驾驶小巴车,请您坐好,注意乘车安全,行程即将开始" ); } /** From 754e5e32e5fb19f492af8c2c3fff3df4dfcd216a Mon Sep 17 00:00:00 2001 From: renwj Date: Tue, 11 Oct 2022 15:18:48 +0800 Subject: [PATCH 014/203] =?UTF-8?q?[V2X][Road]=E5=9F=8E=E5=B8=82=E5=8D=A0?= =?UTF-8?q?=E9=81=93=E6=B0=94=E6=B3=A1=E4=B8=8E=E9=81=93=E8=B7=AF=E6=A0=87?= =?UTF-8?q?=E8=AE=B0=E9=80=BB=E8=BE=91=E4=B8=80=E8=87=B4=EF=BC=8C=E4=B8=8E?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E5=92=8C=E8=AF=AD=E9=9F=B3=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E6=9D=A1=E4=BB=B6=E9=9A=94=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/v2x/events/V2XEventManager.kt | 158 +- .../events/manager/IMoGoV2XMarkerManager.java | 4 + .../manager/impl/MoGoV2XMarkerManager.java | 10 +- .../scenario/scene/airoad/AiRoadMarker.kt | 8 +- .../scene/road/V2XAiRoadEventMarker.kt | 141 ++ .../scene/road/V2XRoadEventMarker.java | 92 +- .../src/main/assets/loc.txt | 1430 ++++++++++++++++- 7 files changed, 1674 insertions(+), 169 deletions(-) create mode 100644 core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XAiRoadEventMarker.kt diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt index cc78004079..e5ba4009fd 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt @@ -1,93 +1,77 @@ package com.mogo.eagle.core.function.v2x.events -import android.content.Context -import android.content.Intent -import android.content.IntentFilter -import android.os.Handler -import android.os.Looper +import android.content.* +import android.os.* import android.provider.Settings.System import android.util.* import androidx.core.util.Pair -import androidx.localbroadcastmanager.content.LocalBroadcastManager +import androidx.localbroadcastmanager.content.* import com.mogo.cloud.commons.utils.* -import com.mogo.cloud.passport.IMoGoTokenCallback -import com.mogo.cloud.passport.MoGoAiCloudClient -import com.mogo.cloud.passport.MoGoAiCloudClientConfig -import com.mogo.commons.network.ParamsUtil +import com.mogo.cloud.passport.* +import com.mogo.commons.network.* import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_V2N import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_CLOUD_SHOW import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_CLOUD_V2N -import com.mogo.eagle.core.data.enums.TrafficTypeEnum +import com.mogo.eagle.core.data.enums.* import com.mogo.eagle.core.data.map.* -import com.mogo.eagle.core.data.traffic.TrafficData -import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener -import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener -import com.mogo.eagle.core.function.call.hmi.CallerHmiManager -import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager -import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager -import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager +import com.mogo.eagle.core.data.traffic.* +import com.mogo.eagle.core.function.api.hmi.warning.* +import com.mogo.eagle.core.function.api.map.listener.* +import com.mogo.eagle.core.function.call.hmi.* +import com.mogo.eagle.core.function.call.map.* import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.Default import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.TooClose -import com.mogo.eagle.core.function.v2x.events.alarm.V2XAlarmServer -import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi +import com.mogo.eagle.core.function.v2x.events.alarm.* +import com.mogo.eagle.core.function.v2x.events.bridge.* import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi.context -import com.mogo.eagle.core.function.v2x.events.consts.V2XConst -import com.mogo.eagle.core.function.v2x.events.consts.V2XConst.BROADCAST_SCENE_EXTRA_KEY -import com.mogo.eagle.core.function.v2x.events.consts.V2XConst.BROADCAST_SCENE_HANDLER_ACTION -import com.mogo.eagle.core.function.v2x.events.consts.V2XConst.MODULE_NAME -import com.mogo.eagle.core.function.v2x.events.consts.V2XConst.V2X_ACC_OFF_TIME_STR -import com.mogo.eagle.core.function.v2x.events.consts.V2XConst.V2X_STRATEGY_PUSH -import com.mogo.eagle.core.function.v2x.events.entity.net.V2XSeekHelpRes -import com.mogo.eagle.core.function.v2x.events.entity.net.V2XStrategyPushRes -import com.mogo.eagle.core.function.v2x.events.manager.V2XStatusManager -import com.mogo.eagle.core.function.v2x.events.network.V2XRefreshCallback -import com.mogo.eagle.core.function.v2x.events.observer.V2XOptimalRouteObserver -import com.mogo.eagle.core.function.v2x.events.receiver.SceneBroadcastReceiver -import com.mogo.eagle.core.function.v2x.events.scenario.impl.V2XScenarioManager +import com.mogo.eagle.core.function.v2x.events.consts.* +import com.mogo.eagle.core.function.v2x.events.consts.V2XConst.* +import com.mogo.eagle.core.function.v2x.events.entity.net.* +import com.mogo.eagle.core.function.v2x.events.manager.* +import com.mogo.eagle.core.function.v2x.events.network.* +import com.mogo.eagle.core.function.v2x.events.observer.* +import com.mogo.eagle.core.function.v2x.events.receiver.* +import com.mogo.eagle.core.function.v2x.events.scenario.impl.* import com.mogo.eagle.core.function.v2x.events.scenario.scene.airoad.* import com.mogo.eagle.core.function.v2x.events.scenario.scene.airoad.AiRoadMarker.Marker +import com.mogo.eagle.core.function.v2x.events.scenario.scene.road.* import com.mogo.eagle.core.function.v2x.events.utils.* -import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceManager -import com.mogo.eagle.core.network.utils.GsonUtil -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.function.v2x.events.utils.MapUtils +import com.mogo.eagle.core.function.v2x.events.voice.* +import com.mogo.eagle.core.network.utils.* +import com.mogo.eagle.core.utilcode.mogo.logger.* import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X -import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr -import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.mogo.eagle.core.utilcode.mogo.storage.* +import com.mogo.eagle.core.utilcode.util.* import com.mogo.eagle.core.utilcode.util.TimeUtils import com.mogo.eagle.core.utilcode.util.Utils -import com.mogo.map.listener.IMogoMapListener -import com.mogo.map.marker.IMogoMarker -import com.mogo.map.marker.IMogoMarkerClickListener -import com.mogo.module.common.ModuleNames -import com.mogo.module.common.drawer.TrafficMarkerDrawer +import com.mogo.map.listener.* +import com.mogo.map.marker.* +import com.mogo.module.common.* +import com.mogo.module.common.drawer.* import com.mogo.module.common.entity.* import com.mogo.module.common.entity.V2XMessageEntity.V2XTypeEnum -import com.mogo.module.common.enums.EventTypeEnum -import com.mogo.module.common.enums.EventTypeHelper -import com.mogo.service.statusmanager.IMogoStatusChangedListener -import com.mogo.service.statusmanager.StatusDescriptor +import com.mogo.module.common.enums.* +import com.mogo.service.statusmanager.* import com.mogo.service.statusmanager.StatusDescriptor.ACC_STATUS import com.mogo.service.statusmanager.StatusDescriptor.SEEK_HELPING -import com.mogo.v2x.V2XManager -import com.mogo.v2x.callback.IV2XCallback -import com.mogo.v2x.config.V2XConfig +import com.mogo.v2x.* +import com.mogo.v2x.callback.* +import com.mogo.v2x.config.* import com.mogo.v2x.data.* -import com.mogo.v2x.event.V2XEvent -import com.shuyu.gsyvideoplayer.GSYVideoManager -import com.shuyu.gsyvideoplayer.cache.CacheFactory -import com.shuyu.gsyvideoplayer.cache.ProxyCacheManager -import com.shuyu.gsyvideoplayer.model.VideoOptionModel -import com.shuyu.gsyvideoplayer.player.IjkPlayerManager -import com.shuyu.gsyvideoplayer.player.PlayerFactory -import com.shuyu.gsyvideoplayer.utils.GSYVideoType -import com.zhjt.service.chain.ChainLog -import com.zhjt.service.chain.TracingConstants +import com.mogo.v2x.event.* +import com.shuyu.gsyvideoplayer.* +import com.shuyu.gsyvideoplayer.cache.* +import com.shuyu.gsyvideoplayer.model.* +import com.shuyu.gsyvideoplayer.player.* +import com.shuyu.gsyvideoplayer.utils.* +import com.zhjt.service.chain.* import kotlinx.coroutines.* -import kotlinx.coroutines.android.asCoroutineDispatcher +import kotlinx.coroutines.android.* import roadwork.Road.RW_PB -import tv.danmaku.ijk.media.player.IjkMediaPlayer -import java.util.concurrent.TimeUnit -import java.util.concurrent.atomic.AtomicBoolean +import tv.danmaku.ijk.media.player.* +import java.util.concurrent.* +import java.util.concurrent.atomic.* object V2XEventManager : IMoGoMapLocationListener, IMoGoTokenCallback, IV2XCallback, @@ -345,6 +329,7 @@ object V2XEventManager : IMoGoMapLocationListener, IMoGoTokenCallback, IV2XCallb private fun refreshCarState(location: MogoLocation) { V2XStatusManager.getInstance().location = location +// V2XAiRoadEventMarker.onLocationChanged(location) // 只有车速大于 5 的时候进行计算 if (location.speed < 5) return val v2xPolyline = BridgeApi.v2xPolyline()?.mogoPolyline @@ -476,21 +461,6 @@ object V2XEventManager : IMoGoMapLocationListener, IMoGoTokenCallback, IV2XCallb private val RW_PB.toRoadMarker: V2XMarkerCardResult get() = V2XMarkerCardResult().also { l1 -> - l1.exploreWay = ArrayList().also { l2 -> - l2.add(V2XMarkerExploreWay().also { l3 -> - l3.poiType = this.roadwork?.poiType?.toString() - l3.generateTime = this.roadwork?.detectTime ?: 0L - l3.location = V2XMarkerLocation().also { l4 -> - val p = CoordinateUtils.transformWgsToGcj(this.roadwork?.center?.point?.lat ?: 0.0, this.roadwork?.center?.point?.lon ?: 0.0) - l4.lon = p[0] - l4.lat = p[1] - AiRoadMarker.enqueue(Marker(this.roadwork?.center?.point?.lat ?: 0.0, this.roadwork?.center?.point?.lon ?: 0.0, this.roadwork?.center?.road?.bearing?.toDouble() ?: 0.0, this.roadwork?.polygonList?.takeIf { it.isNotEmpty() }?.map { d -> - android.util.Pair(d.lon, d.lat) - })) - l4.angle = this.roadwork?.center?.road?.bearing?.toDouble() ?: 0.0 - } - }) - } this.roadwork?.polygonList?.takeIf { it.isNotEmpty() }?.also { old -> l1.extras = HashMap>>().also { extra -> extra["polygon"] = old.map { d -> @@ -499,8 +469,38 @@ object V2XEventManager : IMoGoMapLocationListener, IMoGoTokenCallback, IV2XCallb } } } + l1.exploreWay = ArrayList().also { l2 -> + l2.add(V2XMarkerExploreWay().also { l3 -> + l3.poiType = this.roadwork?.poiType?.toString() + l3.generateTime = this.roadwork?.detectTime ?: 0L + l3.location = V2XMarkerLocation().also { l4 -> + val p = CoordinateUtils.transformWgsToGcj(this.roadwork?.center?.point?.lat ?: 0.0, this.roadwork?.center?.point?.lon ?: 0.0) + l4.lon = p[0] + l4.lat = p[1] + l4.angle = this.roadwork?.center?.road?.bearing?.toDouble() ?: 0.0 + } + + AiRoadMarker.enqueue(Marker( + this.roadwork?.center?.point?.lat ?: 0.0, + this.roadwork?.center?.point?.lon ?: 0.0, + this.roadwork?.center?.road?.bearing?.toDouble() ?: 0.0, + this.roadwork?.polygonList?.takeIf { it.isNotEmpty() }?.map { d -> android.util.Pair(d.lon, d.lat) }, + null, + buildRoadEntity(l3, l1.extras))) + }) + } + } + private fun buildRoadEntity(e: V2XMarkerExploreWay, extra: Map? = null): V2XRoadEventEntity { // 记录道路事件 + val v2XRoadEventEntity = V2XRoadEventEntity() + v2XRoadEventEntity.location = e.location.toMarkerLocation() // 探路目前只有上报拥堵 + v2XRoadEventEntity.poiType = EventTypeEnum.AI_ROAD_WORK.poiType + v2XRoadEventEntity.noveltyInfo = e.toMarkExploreWay(extra) + v2XRoadEventEntity.expireTime = 20000 + return v2XRoadEventEntity + } + private fun handleWarningTargetEvent(data: V2XWarningTarget) { val v2xMessageEntity = V2XMessageEntity() v2xMessageEntity.type = V2XTypeEnum.ALERT_THE_FRONT_WEAKNESS diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/manager/IMoGoV2XMarkerManager.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/manager/IMoGoV2XMarkerManager.java index 5cdcafc116..563998de73 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/manager/IMoGoV2XMarkerManager.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/manager/IMoGoV2XMarkerManager.java @@ -79,4 +79,8 @@ public interface IMoGoV2XMarkerManager extends IProvider { void clearALLPOI(); + /** + * 强制清除道路事件POI + */ + void forceClearAlarmPOI(); } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/manager/impl/MoGoV2XMarkerManager.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/manager/impl/MoGoV2XMarkerManager.java index eadbc5084a..b438ae69cd 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/manager/impl/MoGoV2XMarkerManager.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/manager/impl/MoGoV2XMarkerManager.java @@ -148,8 +148,9 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager { V2XRoadEventEntity v2XRoadEventEntity = new V2XRoadEventEntity(); v2XRoadEventEntity.setLocation(EntityUtilsKt.toMarkerLocation(markerLocation)); // 探路目前只有上报拥堵 - v2XRoadEventEntity.setPoiType(markerExploreWay.getPoiType()); + String poi = markerExploreWay.getPoiType(); + v2XRoadEventEntity.setPoiType(poi); v2XRoadEventEntity.setNoveltyInfo(EntityUtilsKt.toMarkExploreWay(markerExploreWay,markerCardResult.getExtras())); v2XRoadEventEntity.setExpireTime(20000); mV2XRoadEventEntityArrayList.add(v2XRoadEventEntity); @@ -319,6 +320,13 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager { } } + @Override + public void forceClearAlarmPOI() { + if (mAlarmInfoMarker != null) { + mAlarmInfoMarker.remove(); + } + } + @Override public void init(Context context) { diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt index e1fc046121..236564ad45 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt @@ -14,10 +14,12 @@ import com.mogo.eagle.core.data.map.MapRoadInfo.StopLine import com.mogo.eagle.core.function.api.map.listener.* import com.mogo.eagle.core.function.call.map.* import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager.OnRoadListener +import com.mogo.eagle.core.function.v2x.events.scenario.scene.road.* import com.mogo.eagle.core.utilcode.kotlin.* import com.mogo.eagle.core.utilcode.mogo.logger.* import com.mogo.map.* import com.mogo.map.overlay.* +import com.mogo.module.common.entity.* import com.mogo.module.common.utils.* import io.netty.util.internal.* import java.util.* @@ -170,7 +172,6 @@ object AiRoadMarker { removeLine() } - fun enqueue(marker: Marker) { Logger.d(TAG, "--- enqueue --- 1 ---") if (markers.contains(marker)) { @@ -239,6 +240,7 @@ object AiRoadMarker { return } removeLine() + marker.entity?.apply { V2XAiRoadEventMarker.drawMarkers(this) } val evaluator = ArgbEvaluator() val interceptor = DecelerateInterpolator(1.5f) val total = points.size @@ -276,6 +278,7 @@ object AiRoadMarker { private fun unMarker(marker: Marker) { markers -= marker removeLine() + V2XAiRoadEventMarker.removeMarkers(null) } private fun isOutOfRange(markerLon: Double, markerLat: Double, carLon: Double, carLat: Double, carAngle: Double): Boolean { @@ -292,7 +295,8 @@ object AiRoadMarker { val poi_lon: Double, val poi_angle: Double, val polygon: List>?, - var farthestPoint: Pair? = null + var farthestPoint: Pair? = null, + var entity: V2XRoadEventEntity? = null ) { override fun equals(other: Any?): Boolean { diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XAiRoadEventMarker.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XAiRoadEventMarker.kt new file mode 100644 index 0000000000..3442dafbfa --- /dev/null +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XAiRoadEventMarker.kt @@ -0,0 +1,141 @@ +package com.mogo.eagle.core.function.v2x.events.scenario.scene.road + +import android.util.* +import com.mogo.eagle.core.data.map.* +import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi.context +import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi.v2xMarker +import com.mogo.map.* +import com.mogo.map.R.raw +import com.mogo.map.marker.* +import com.mogo.map.overlay.* +import com.mogo.module.common.entity.* +import com.mogo.module.common.utils.* +import java.util.* +import java.util.concurrent.atomic.* +import kotlin.Pair + +object V2XAiRoadEventMarker { + + private val current = AtomicReference?>>() + + private val v2xLocation = AtomicReference() + + private val carLocation = AtomicReference() + + private val timer = Timer() + + private val timerTask by lazy { AtomicReference() } + + private val distance = AtomicInteger(0) + + fun drawMarkers(entity: V2XRoadEventEntity): Pair?>? { + removeMarkers(current.get()) + timerTask.get()?.cancel() + val extra = entity.noveltyInfo.extras.get("polygon"); + if (extra is List<*>) { + val l = extra + if (l.size > 0) { + val polygons: MutableList> = ArrayList() + for (i in l.indices) { + val o = l[i]!! as? androidx.core.util.Pair<*, *> ?: continue + val p = o + val first = p.first + val second = p.second + if (first == null || second == null) { + continue + } + if (first !is Double || second !is Double) { + continue + } + polygons.add(androidx.core.util.Pair.create(first, second)) + } + if (polygons.size > 0) { + val markers = ArrayList(polygons.size) + for (i in polygons.indices) { + val p = polygons[i] + val options = MogoMarkerOptions().data(entity).latitude(p.second).longitude(p.first) + options.anchor(0.5f, 0.5f) + options.icon3DRes(raw.sanjiaozhui) + try { + val marker = MogoMarkerManager.getInstance(context()).addMarker("road_pyramid_" + entity.getPoiType(), options) + markers += marker + } catch (t: Throwable) { + t.printStackTrace() + } + } + if (markers.size > 0) { + v2xMarker()?.drawableAlarmPOI(context(), entity, null) + val l2 = entity.noveltyInfo?.location ?: return null + v2xLocation.set(MogoLocation().also { it.longitude = l2.lon; it.latitude = l2.lat; it.bearing = l2.angle.toFloat() }) + current.set(Pair(null, markers)) + } + } + } + } + return current.get() + } + + fun removeMarkers(pair: Pair?>?) { + if (pair != null) { + realRemove(pair) + } else { + val prev = current.get() + if (prev != null) { + realRemove(prev) + val v2xMarker = v2xMarker() + v2xMarker?.also { + it.forceClearAlarmPOI() + } + } + } + } + + private fun realRemove(pair: Pair?>) { + val line = pair.first + if (line != null && line.isVisible) { + line.remove() + } + val markers = pair.second + if (markers != null && markers.isNotEmpty()) { + for (m in markers) { + m.remove() + } + } + } + + fun onLocationChanged(location: MogoLocation) { + val markerLocation = v2xLocation.get() + carLocation.set(location) + if (markerLocation != null) { + if (isOutOfRange(markerLocation.longitude, markerLocation.latitude, location.longitude, location.latitude, location.bearing.toDouble())) { + v2xLocation.set(null) + this.distance.set(0) + timer.schedule(object : TimerTask() { + override fun run() { + val carLocation = this@V2XAiRoadEventMarker.carLocation.get() + Log.d("XXXXX", "timer do action ---: marker_lon: ${markerLocation.longitude}, marker_lat: ${markerLocation.latitude}, car_lon:${carLocation.longitude}, car_lat: ${carLocation.latitude}") + checkDistanceIsValid(markerLocation.longitude, markerLocation.latitude, carLocation) + } + }.also { this.timerTask.set(it) }, 1000, 1000) + } + } + } + private fun checkDistanceIsValid(x1: Double, y1: Double, location: MogoLocation) { + val distance = DrivingDirectionUtils.distance(x1, y1, location.longitude, location.latitude) + Log.d("XXXXX", "distance: $distance") + if (this.distance.addAndGet(distance.toInt()) >= 100) { + Log.d("XXXXX", "remove marker") + removeMarkers(null) + this.timerTask.get()?.cancel() + } + } + + private fun isOutOfRange(markerLon: Double, markerLat: Double, carLon: Double, carLat: Double, carAngle: Double): Boolean { + return !isFrontOfCar(markerLon, markerLat, carLon, carLat, carAngle) + } + + private fun isFrontOfCar(markerLon: Double, markerLat: Double, carLon: Double, carLat: Double, carAngle: Double): Boolean { + val degree = DrivingDirectionUtils.getDegreeOfCar2Poi2(carLon, carLat, markerLon, markerLat, carAngle) + return degree < 90 + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java index e389c02ea2..442f547809 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java @@ -1,26 +1,13 @@ package com.mogo.eagle.core.function.v2x.events.scenario.scene.road; -import android.graphics.Color; - -import androidx.core.util.Pair; -import com.mogo.eagle.core.data.map.MogoLatLng; -import com.mogo.eagle.core.function.v2x.R; import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XMarkerManager; import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XPolylineManager; -import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XStatusManager; import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XMarker; -import com.mogo.map.MogoMarkerManager; -import com.mogo.map.MogoOverlayManager; -import com.mogo.map.marker.IMogoMarker; -import com.mogo.map.marker.MogoMarkerOptions; -import com.mogo.map.overlay.IMogoOverlayManager; -import com.mogo.map.overlay.IMogoPolyline; -import com.mogo.map.overlay.MogoPolylineOptions; -import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.V2XRoadEventEntity; -import java.util.ArrayList; -import java.util.List; +import com.mogo.module.common.enums.EventTypeEnum; + +import java.util.Objects; /** * 道路V2X事件的Marker @@ -28,11 +15,7 @@ import java.util.List; public class V2XRoadEventMarker implements IV2XMarker { - private final List pyramids = new ArrayList<>(); - - private IMogoPolyline polyline; - - private IMogoOverlayManager overlayManager; +// private Pair> drawInfo; @Override public void drawPOI(V2XRoadEventEntity entity) { @@ -42,58 +25,8 @@ public class V2XRoadEventMarker implements IV2XMarker { if (marker != null) { marker.clearAlarmPOI(); if (entity != null) { - marker.drawableAlarmPOI(BridgeApi.INSTANCE.context(), entity, null); - MarkerExploreWay noveltyInfo = entity.getNoveltyInfo(); - if (noveltyInfo != null && noveltyInfo.extras != null && noveltyInfo.extras.containsKey("polygon")) { - Object extra = noveltyInfo.extras.get("polygon"); - if (pyramids.size() > 0) { - for (IMogoMarker m : pyramids) { - m.remove(); - } - pyramids.clear(); - } - if (polyline != null && polyline.isVisible()) { - polyline.remove(); - } - if (extra instanceof List) { - List l = (List) extra; - if (l.size() > 0) { - List> polygons = new ArrayList<>(); - for (int i = 0; i < l.size(); i++) { - Object o = l.get(i); - if (!(o instanceof Pair)) { - continue; - } - Pair p = (Pair) o; - Object first = p.first; - Object second = p.second; - if (first == null || second == null) { - continue; - } - if (!(first instanceof Double) || !(second instanceof Double)) { - continue; - } - polygons.add(Pair.create((Double) first, (Double) second)); - } - - if (polygons.size() > 0) { - for (int i = 0; i < polygons.size(); i++) { - Pair p = polygons.get(i); - MogoMarkerOptions options = new MogoMarkerOptions() - .data(entity) - .latitude(p.second) - .longitude(p.first); - options.anchor(0.5f, 0.5f); - options.icon3DRes(R.raw.sanjiaozhui); - try { - pyramids.add(MogoMarkerManager.getInstance(BridgeApi.INSTANCE.context()).addMarker("road_pyramid_" + entity.getPoiType(), options)); - } catch (Throwable t) { - t.printStackTrace(); - } - } - } - } - } + if (!Objects.equals(entity.getPoiType(), EventTypeEnum.AI_ROAD_WORK.getPoiType())) { + marker.drawableAlarmPOI(BridgeApi.INSTANCE.context(), entity, null); } } } @@ -109,19 +42,6 @@ public class V2XRoadEventMarker implements IV2XMarker { if (polyLineManager != null) { polyLineManager.clearLine(); } - - IMoGoV2XStatusManager v2xStatus = BridgeApi.INSTANCE.v2xStatus(); - if (v2xStatus != null && v2xStatus.isRoadEventPOIShow()) { - if (polyline != null) { - polyline.remove(); - } - if (pyramids.size() > 0) { - for (IMogoMarker marker : pyramids) { - marker.remove(); - } - pyramids.clear(); - } - } IMoGoV2XMarkerManager v2xMarker = BridgeApi.INSTANCE.v2xMarker(); if (v2xMarker != null) { // 移除事件POI diff --git a/modules/mogo-module-service/src/main/assets/loc.txt b/modules/mogo-module-service/src/main/assets/loc.txt index 294377a39b..5d44c2212e 100644 --- a/modules/mogo-module-service/src/main/assets/loc.txt +++ b/modules/mogo-module-service/src/main/assets/loc.txt @@ -597,4 +597,1432 @@ {"lon":116.72971448603518,"lat":40.20307591489383,"alt":0,"heading":98.15277698298135,"systemTime":1643342530092,"receiverDataTime":1643342530092,"adasSatelliteTime":1643342530092,"satelliteTime":1643342530092,"speed":19.889009475708008} {"lon":116.72972604572371,"lat":40.203074592308575,"alt":0,"heading":98.18870377801562,"systemTime":1643342530133,"receiverDataTime":1643342530133,"adasSatelliteTime":1643342530133,"satelliteTime":1643342530133,"speed":19.882761001586914} {"lon":116.72973528749043,"lat":40.20307353462634,"alt":0,"heading":98.22192581813856,"systemTime":1643342530187,"receiverDataTime":1643342530187,"adasSatelliteTime":1643342530187,"satelliteTime":1643342530187,"speed":19.871068954467773} -{"lon":116.72974452676759,"lat":40.20307247462423,"alt":0,"heading":98.25424627329106,"systemTime":1643342530237,"receiverDataTime":1643342530237,"adasSatelliteTime":1643342530237,"satelliteTime":1643342530237,"speed":19.870927810668945} \ No newline at end of file +{"lon":116.72974452676759,"lat":40.20307247462423,"alt":0,"heading":98.25424627329106,"systemTime":1643342530237,"receiverDataTime":1643342530237,"adasSatelliteTime":1643342530237,"satelliteTime":1643342530237,"speed":19.870927810668945} +{"lon":116.72975376677441,"lat":40.20307140738641,"alt":0,"heading":98.28306967158852,"systemTime":1643342530288,"receiverDataTime":1643342530288,"adasSatelliteTime":1643342530288,"satelliteTime":1643342530288,"speed":19.86296272277832} +{"lon":116.72977225343578,"lat":40.20306922514186,"alt":0,"heading":98.34224643055751,"systemTime":1643342530338,"receiverDataTime":1643342530338,"adasSatelliteTime":1643342530338,"satelliteTime":1643342530338,"speed":19.892122268676758} +{"lon":116.72978614071116,"lat":40.203067554028365,"alt":0,"heading":98.37893820677881,"systemTime":1643342530389,"receiverDataTime":1643342530389,"adasSatelliteTime":1643342530389,"satelliteTime":1643342530389,"speed":19.943029403686523} +{"lon":116.72979541732694,"lat":40.20306642626949,"alt":0,"heading":98.39459300035648,"systemTime":1643342530442,"receiverDataTime":1643342530442,"adasSatelliteTime":1643342530442,"satelliteTime":1643342530442,"speed":19.96682357788086} +{"lon":116.72981397147772,"lat":40.203064148333034,"alt":0,"heading":98.41868990774829,"systemTime":1643342530493,"receiverDataTime":1643342530493,"adasSatelliteTime":1643342530493,"satelliteTime":1643342530493,"speed":19.954238891601562} +{"lon":116.72982092638298,"lat":40.20306329307145,"alt":0,"heading":98.43199511625147,"systemTime":1643342530547,"receiverDataTime":1643342530547,"adasSatelliteTime":1643342530547,"satelliteTime":1643342530547,"speed":19.96088981628418} +{"lon":116.72983946389014,"lat":40.20306101860965,"alt":0,"heading":98.47710168553024,"systemTime":1643342530600,"receiverDataTime":1643342530600,"adasSatelliteTime":1643342530600,"satelliteTime":1643342530600,"speed":19.932252883911133} +{"lon":116.72984872256997,"lat":40.20305988151397,"alt":0,"heading":98.50775557452525,"systemTime":1643342530650,"receiverDataTime":1643342530650,"adasSatelliteTime":1643342530650,"satelliteTime":1643342530650,"speed":19.926441192626953} +{"lon":116.7298602873446,"lat":40.203058453444726,"alt":0,"heading":98.5482449359251,"systemTime":1643342530709,"receiverDataTime":1643342530709,"adasSatelliteTime":1643342530709,"satelliteTime":1643342530709,"speed":19.919322967529297} +{"lon":116.72987418064612,"lat":40.2030567388821,"alt":0,"heading":98.59250456174678,"systemTime":1643342530760,"receiverDataTime":1643342530760,"adasSatelliteTime":1643342530760,"satelliteTime":1643342530760,"speed":19.953453063964844} +{"lon":116.72988808961048,"lat":40.20305502516774,"alt":0,"heading":98.62165580912439,"systemTime":1643342530810,"receiverDataTime":1643342530810,"adasSatelliteTime":1643342530810,"satelliteTime":1643342530810,"speed":19.98210334777832} +{"lon":116.72989737118866,"lat":40.203053873552705,"alt":0,"heading":98.64386758430527,"systemTime":1643342530860,"receiverDataTime":1643342530860,"adasSatelliteTime":1643342530860,"satelliteTime":1643342530860,"speed":19.9903507232666} +{"lon":116.72990665175715,"lat":40.20305272314228,"alt":0,"heading":98.66168071766066,"systemTime":1643342530911,"receiverDataTime":1643342530911,"adasSatelliteTime":1643342530911,"satelliteTime":1643342530911,"speed":19.990795135498047} +{"lon":116.72991593230017,"lat":40.203051581066596,"alt":0,"heading":98.6883457761804,"systemTime":1643342530982,"receiverDataTime":1643342530982,"adasSatelliteTime":1643342530982,"satelliteTime":1643342530982,"speed":19.977432250976562} +{"lon":116.7299414089381,"lat":40.20304843257677,"alt":0,"heading":98.77437883896587,"systemTime":1643342531034,"receiverDataTime":1643342531034,"adasSatelliteTime":1643342531034,"satelliteTime":1643342531034,"speed":19.950824737548828} +{"lon":116.7299414089381,"lat":40.20304843257677,"alt":0,"heading":98.77437883896587,"systemTime":1643342531104,"receiverDataTime":1643342531104,"adasSatelliteTime":1643342531104,"satelliteTime":1643342531104,"speed":19.950824737548828} +{"lon":116.72996225674078,"lat":40.203045832747435,"alt":0,"heading":98.8470520517348,"systemTime":1643342531147,"receiverDataTime":1643342531147,"adasSatelliteTime":1643342531147,"satelliteTime":1643342531147,"speed":19.971195220947266} +{"lon":116.72997616042643,"lat":40.20304408775802,"alt":0,"heading":98.88532843184356,"systemTime":1643342531198,"receiverDataTime":1643342531198,"adasSatelliteTime":1643342531198,"satelliteTime":1643342531198,"speed":19.98146629333496} +{"lon":116.7299877604716,"lat":40.20304261217581,"alt":0,"heading":98.91188420733657,"systemTime":1643342531249,"receiverDataTime":1643342531249,"adasSatelliteTime":1643342531249,"satelliteTime":1643342531249,"speed":20.002273559570312} +{"lon":116.73000169406677,"lat":40.20304081507699,"alt":0,"heading":98.94720994572387,"systemTime":1643342531300,"receiverDataTime":1643342531300,"adasSatelliteTime":1643342531300,"satelliteTime":1643342531300,"speed":20.010604858398438} +{"lon":116.73000866310214,"lat":40.2030399087873,"alt":0,"heading":98.96444934318899,"systemTime":1643342531349,"receiverDataTime":1643342531349,"adasSatelliteTime":1643342531349,"satelliteTime":1643342531349,"speed":20.025632858276367} +{"lon":116.7300202764967,"lat":40.203038395299906,"alt":0,"heading":98.99570428883096,"systemTime":1643342531402,"receiverDataTime":1643342531402,"adasSatelliteTime":1643342531402,"satelliteTime":1643342531402,"speed":20.00701141357422} +{"lon":116.73003420493767,"lat":40.20303656547392,"alt":0,"heading":99.03433583877656,"systemTime":1643342531456,"receiverDataTime":1643342531456,"adasSatelliteTime":1643342531456,"satelliteTime":1643342531456,"speed":20.01605987548828} +{"lon":116.73004116878148,"lat":40.20303564771893,"alt":0,"heading":99.04911636814046,"systemTime":1643342531509,"receiverDataTime":1643342531509,"adasSatelliteTime":1643342531509,"satelliteTime":1643342531509,"speed":20.000591278076172} +{"lon":116.73005973815246,"lat":40.203033207186884,"alt":0,"heading":99.08657312554881,"systemTime":1643342531560,"receiverDataTime":1643342531560,"adasSatelliteTime":1643342531560,"satelliteTime":1643342531560,"speed":20.012182235717773} +{"lon":116.73006902300448,"lat":40.20303198139076,"alt":0,"heading":99.09580754130667,"systemTime":1643342531613,"receiverDataTime":1643342531613,"adasSatelliteTime":1643342531613,"satelliteTime":1643342531613,"speed":20.02492904663086} +{"lon":116.73008528981094,"lat":40.20302983335849,"alt":0,"heading":99.09766535276091,"systemTime":1643342531667,"receiverDataTime":1643342531667,"adasSatelliteTime":1643342531667,"satelliteTime":1643342531667,"speed":20.04338264465332} +{"lon":116.73009458570762,"lat":40.20302861963216,"alt":0,"heading":99.09414097514919,"systemTime":1643342531719,"receiverDataTime":1643342531719,"adasSatelliteTime":1643342531719,"satelliteTime":1643342531719,"speed":20.036930084228516} +{"lon":116.73010619685306,"lat":40.203027092973095,"alt":0,"heading":99.07998882318893,"systemTime":1643342531770,"receiverDataTime":1643342531770,"adasSatelliteTime":1643342531770,"satelliteTime":1643342531770,"speed":20.022607803344727} +{"lon":116.7301154840707,"lat":40.20302587853657,"alt":0,"heading":99.06777644495294,"systemTime":1643342531824,"receiverDataTime":1643342531824,"adasSatelliteTime":1643342531824,"satelliteTime":1643342531824,"speed":20.02398681640625} +{"lon":116.73013869831162,"lat":40.20302286007832,"alt":0,"heading":99.05184844380847,"systemTime":1643342531879,"receiverDataTime":1643342531879,"adasSatelliteTime":1643342531879,"satelliteTime":1643342531879,"speed":20.017667770385742} +{"lon":116.73014101970529,"lat":40.203022558984685,"alt":0,"heading":99.05275002877892,"systemTime":1643342531947,"receiverDataTime":1643342531947,"adasSatelliteTime":1643342531947,"satelliteTime":1643342531947,"speed":20.01885986328125} +{"lon":116.73015495396449,"lat":40.2030207582092,"alt":0,"heading":99.04611108490566,"systemTime":1643342531991,"receiverDataTime":1643342531991,"adasSatelliteTime":1643342531991,"satelliteTime":1643342531991,"speed":20.03559112548828} +{"lon":116.73017818179906,"lat":40.20301774702345,"alt":0,"heading":99.02917221576404,"systemTime":1643342532041,"receiverDataTime":1643342532041,"adasSatelliteTime":1643342532041,"satelliteTime":1643342532041,"speed":20.0323486328125} +{"lon":116.73018747431749,"lat":40.20301654014125,"alt":0,"heading":99.02450036637174,"systemTime":1643342532092,"receiverDataTime":1643342532092,"adasSatelliteTime":1643342532092,"satelliteTime":1643342532092,"speed":20.03985023498535} +{"lon":116.73018979775935,"lat":40.20301623966028,"alt":0,"heading":99.02083938497661,"systemTime":1643342532142,"receiverDataTime":1643342532142,"adasSatelliteTime":1643342532142,"satelliteTime":1643342532142,"speed":20.03955841064453} +{"lon":116.73020837553086,"lat":40.20301385086281,"alt":0,"heading":98.99920134568602,"systemTime":1643342532202,"receiverDataTime":1643342532202,"adasSatelliteTime":1643342532202,"satelliteTime":1643342532202,"speed":20.012937545776367} +{"lon":116.73022229299394,"lat":40.203012043272146,"alt":0,"heading":98.97955772163306,"systemTime":1643342532251,"receiverDataTime":1643342532251,"adasSatelliteTime":1643342532251,"satelliteTime":1643342532251,"speed":20.016326904296875} +{"lon":116.73023158255374,"lat":40.20301084317166,"alt":0,"heading":98.976743683695,"systemTime":1643342532302,"receiverDataTime":1643342532302,"adasSatelliteTime":1643342532302,"satelliteTime":1643342532302,"speed":20.03066062927246} +{"lon":116.73024087290038,"lat":40.2030096391931,"alt":0,"heading":98.9710063247922,"systemTime":1643342532352,"receiverDataTime":1643342532352,"adasSatelliteTime":1643342532352,"satelliteTime":1643342532352,"speed":20.032848358154297} +{"lon":116.730252489289,"lat":40.2030081351568,"alt":0,"heading":98.96592466404971,"systemTime":1643342532403,"receiverDataTime":1643342532403,"adasSatelliteTime":1643342532403,"satelliteTime":1643342532403,"speed":20.038759231567383} +{"lon":116.73026643988544,"lat":40.2030063225374,"alt":0,"heading":98.952236964953,"systemTime":1643342532453,"receiverDataTime":1643342532453,"adasSatelliteTime":1643342532453,"satelliteTime":1643342532453,"speed":20.06883430480957} +{"lon":116.73027341877592,"lat":40.203005414361634,"alt":0,"heading":98.94330307751864,"systemTime":1643342532504,"receiverDataTime":1643342532504,"adasSatelliteTime":1643342532504,"satelliteTime":1643342532504,"speed":20.065767288208008} +{"lon":116.73028505159728,"lat":40.20300390349702,"alt":0,"heading":98.92633688762032,"systemTime":1643342532554,"receiverDataTime":1643342532554,"adasSatelliteTime":1643342532554,"satelliteTime":1643342532554,"speed":20.06612205505371} +{"lon":116.7303059905471,"lat":40.203001213366434,"alt":0,"heading":98.88885280945529,"systemTime":1643342532605,"receiverDataTime":1643342532605,"adasSatelliteTime":1643342532605,"satelliteTime":1643342532605,"speed":20.056758880615234} +{"lon":116.73031063872975,"lat":40.203000621252656,"alt":0,"heading":98.88382579022615,"systemTime":1643342532655,"receiverDataTime":1643342532655,"adasSatelliteTime":1643342532655,"satelliteTime":1643342532655,"speed":20.029809951782227} +{"lon":116.73032223195452,"lat":40.202999148105675,"alt":0,"heading":98.88286956374236,"systemTime":1643342532710,"receiverDataTime":1643342532710,"adasSatelliteTime":1643342532710,"satelliteTime":1643342532710,"speed":19.96295166015625} +{"lon":116.73033611539913,"lat":40.20299739283763,"alt":0,"heading":98.89133899831317,"systemTime":1643342532761,"receiverDataTime":1643342532761,"adasSatelliteTime":1643342532761,"satelliteTime":1643342532761,"speed":19.957292556762695} +{"lon":116.73034538904439,"lat":40.202996220761484,"alt":0,"heading":98.89196737571682,"systemTime":1643342532820,"receiverDataTime":1643342532820,"adasSatelliteTime":1643342532820,"satelliteTime":1643342532820,"speed":20.010528564453125} +{"lon":116.7303663162344,"lat":40.2029935537323,"alt":0,"heading":98.86079439234487,"systemTime":1643342532871,"receiverDataTime":1643342532871,"adasSatelliteTime":1643342532871,"satelliteTime":1643342532871,"speed":20.061368942260742} +{"lon":116.73037793323452,"lat":40.202992068588586,"alt":0,"heading":98.84505763649716,"systemTime":1643342532923,"receiverDataTime":1643342532923,"adasSatelliteTime":1643342532923,"satelliteTime":1643342532923,"speed":20.039531707763672} +{"lon":116.7303918816602,"lat":40.20299028141602,"alt":0,"heading":98.83175242799398,"systemTime":1643342532975,"receiverDataTime":1643342532975,"adasSatelliteTime":1643342532975,"satelliteTime":1643342532975,"speed":20.036720275878906} +{"lon":116.73040118012315,"lat":40.2029891017376,"alt":0,"heading":98.82574186152436,"systemTime":1643342533023,"receiverDataTime":1643342533023,"adasSatelliteTime":1643342533023,"satelliteTime":1643342533023,"speed":20.060144424438477} +{"lon":116.73041047940652,"lat":40.20298792257354,"alt":0,"heading":98.82888374854258,"systemTime":1643342533072,"receiverDataTime":1643342533072,"adasSatelliteTime":1643342533072,"satelliteTime":1643342533072,"speed":20.033540725708008} +{"lon":116.73042208690775,"lat":40.20298645893953,"alt":0,"heading":98.83216223934419,"systemTime":1643342533123,"receiverDataTime":1643342533123,"adasSatelliteTime":1643342533123,"satelliteTime":1643342533123,"speed":20.008066177368164} +{"lon":116.73043601206935,"lat":40.20298471879571,"alt":0,"heading":98.84751650459837,"systemTime":1643342533198,"receiverDataTime":1643342533198,"adasSatelliteTime":1643342533198,"satelliteTime":1643342533198,"speed":20.003934860229492} +{"lon":116.73044297081564,"lat":40.20298385092922,"alt":0,"heading":98.85380027863478,"systemTime":1643342533240,"receiverDataTime":1643342533240,"adasSatelliteTime":1643342533240,"satelliteTime":1643342533240,"speed":19.990930557250977} +{"lon":116.73045224618015,"lat":40.20298267894622,"alt":0,"heading":98.8662312229242,"systemTime":1643342533286,"receiverDataTime":1643342533286,"adasSatelliteTime":1643342533286,"satelliteTime":1643342533286,"speed":19.990478515625} +{"lon":116.73047544354999,"lat":40.20297972729125,"alt":0,"heading":98.91516269813818,"systemTime":1643342533335,"receiverDataTime":1643342533335,"adasSatelliteTime":1643342533335,"satelliteTime":1643342533335,"speed":20.012664794921875} +{"lon":116.73048937292184,"lat":40.20297794338445,"alt":0,"heading":98.94546141729636,"systemTime":1643342533385,"receiverDataTime":1643342533385,"adasSatelliteTime":1643342533385,"satelliteTime":1643342533385,"speed":20.014698028564453} +{"lon":116.73049633475713,"lat":40.20297704750727,"alt":0,"heading":98.96371168275863,"systemTime":1643342533435,"receiverDataTime":1643342533435,"adasSatelliteTime":1643342533435,"satelliteTime":1643342533435,"speed":20.010753631591797} +{"lon":116.73050793494512,"lat":40.20297554945931,"alt":0,"heading":98.99748013801516,"systemTime":1643342533487,"receiverDataTime":1643342533487,"adasSatelliteTime":1643342533487,"satelliteTime":1643342533487,"speed":20.004438400268555} +{"lon":116.7305195297353,"lat":40.202974048834335,"alt":0,"heading":99.04078353735305,"systemTime":1643342533537,"receiverDataTime":1643342533537,"adasSatelliteTime":1643342533537,"satelliteTime":1643342533537,"speed":20.005163192749023} +{"lon":116.7305311242844,"lat":40.202972541708,"alt":0,"heading":99.08386837063749,"systemTime":1643342533590,"receiverDataTime":1643342533590,"adasSatelliteTime":1643342533590,"satelliteTime":1643342533590,"speed":19.995988845825195} +{"lon":116.73053807308875,"lat":40.20297163411547,"alt":0,"heading":99.10971380645682,"systemTime":1643342533656,"receiverDataTime":1643342533656,"adasSatelliteTime":1643342533656,"satelliteTime":1643342533656,"speed":19.977331161499023} +{"lon":116.73055194461243,"lat":40.20296981124017,"alt":0,"heading":99.16320784803636,"systemTime":1643342533706,"receiverDataTime":1643342533706,"adasSatelliteTime":1643342533706,"satelliteTime":1643342533706,"speed":19.930463790893555} +{"lon":116.73056347778629,"lat":40.20296829173435,"alt":0,"heading":99.20085585074148,"systemTime":1643342533755,"receiverDataTime":1643342533755,"adasSatelliteTime":1643342533755,"satelliteTime":1643342533755,"speed":19.89042854309082} +{"lon":116.73058419661328,"lat":40.20296555514461,"alt":0,"heading":99.27068770481569,"systemTime":1643342533807,"receiverDataTime":1643342533807,"adasSatelliteTime":1643342533807,"satelliteTime":1643342533807,"speed":19.85680389404297} +{"lon":116.73058419661328,"lat":40.20296555514461,"alt":0,"heading":99.27068770481569,"systemTime":1643342533859,"receiverDataTime":1643342533859,"adasSatelliteTime":1643342533859,"satelliteTime":1643342533859,"speed":19.85680389404297} +{"lon":116.73059569108574,"lat":40.20296403812337,"alt":0,"heading":99.30937389627464,"systemTime":1643342533909,"receiverDataTime":1643342533909,"adasSatelliteTime":1643342533909,"satelliteTime":1643342533909,"speed":19.83776092529297} +{"lon":116.73060946858958,"lat":40.20296221152224,"alt":0,"heading":99.35355155982627,"systemTime":1643342533959,"receiverDataTime":1643342533959,"adasSatelliteTime":1643342533959,"satelliteTime":1643342533959,"speed":19.802959442138672} +{"lon":116.73063005578322,"lat":40.202959476602864,"alt":0,"heading":99.42461284795108,"systemTime":1643342534010,"receiverDataTime":1643342534010,"adasSatelliteTime":1643342534010,"satelliteTime":1643342534010,"speed":19.698963165283203} +{"lon":116.73064143458858,"lat":40.202957962764714,"alt":0,"heading":99.45288983111494,"systemTime":1643342534060,"receiverDataTime":1643342534060,"adasSatelliteTime":1643342534060,"satelliteTime":1643342534060,"speed":19.6162109375} +{"lon":116.73064370546547,"lat":40.202957661537226,"alt":0,"heading":99.45633224645663,"systemTime":1643342534118,"receiverDataTime":1643342534118,"adasSatelliteTime":1643342534118,"satelliteTime":1643342534118,"speed":19.603546142578125} +{"lon":116.73066638642354,"lat":40.202954594338024,"alt":0,"heading":99.46297119032988,"systemTime":1643342534168,"receiverDataTime":1643342534168,"adasSatelliteTime":1643342534168,"satelliteTime":1643342534168,"speed":19.611692428588867} +{"lon":116.73067547270702,"lat":40.20295336713176,"alt":0,"heading":99.45813541639751,"systemTime":1643342534220,"receiverDataTime":1643342534220,"adasSatelliteTime":1643342534220,"satelliteTime":1643342534220,"speed":19.62241554260254} +{"lon":116.73068455813926,"lat":40.20295213575726,"alt":0,"heading":99.43906552823483,"systemTime":1643342534273,"receiverDataTime":1643342534273,"adasSatelliteTime":1643342534273,"satelliteTime":1643342534273,"speed":19.60988998413086} +{"lon":116.73069589853796,"lat":40.202950599743005,"alt":0,"heading":99.42338341390048,"systemTime":1643342534324,"receiverDataTime":1643342534324,"adasSatelliteTime":1643342534324,"satelliteTime":1643342534324,"speed":19.555309295654297} +{"lon":116.7307071947152,"lat":40.202949078796614,"alt":0,"heading":99.42455820643772,"systemTime":1643342534377,"receiverDataTime":1643342534377,"adasSatelliteTime":1643342534377,"satelliteTime":1643342534377,"speed":19.465145111083984} +{"lon":116.73072515034734,"lat":40.20294669158038,"alt":0,"heading":99.44264454735992,"systemTime":1643342534427,"receiverDataTime":1643342534427,"adasSatelliteTime":1643342534427,"satelliteTime":1643342534427,"speed":19.275381088256836} +{"lon":116.73073627795065,"lat":40.202945207660505,"alt":0,"heading":99.444857528651,"systemTime":1643342534477,"receiverDataTime":1643342534477,"adasSatelliteTime":1643342534477,"satelliteTime":1643342534477,"speed":19.160200119018555} +{"lon":116.73074071223577,"lat":40.20294461424201,"alt":0,"heading":99.44931081198985,"systemTime":1643342534527,"receiverDataTime":1643342534527,"adasSatelliteTime":1643342534527,"satelliteTime":1643342534527,"speed":19.13007926940918} +{"lon":116.73075839336735,"lat":40.20294223480588,"alt":0,"heading":99.43963926412512,"systemTime":1643342534579,"receiverDataTime":1643342534579,"adasSatelliteTime":1643342534579,"satelliteTime":1643342534579,"speed":19.069852828979492} +{"lon":116.73076944975173,"lat":40.202940731248006,"alt":0,"heading":99.41570628127339,"systemTime":1643342534632,"receiverDataTime":1643342534632,"adasSatelliteTime":1643342534632,"satelliteTime":1643342534632,"speed":19.128332138061523} +{"lon":116.73078053201102,"lat":40.20293921915306,"alt":0,"heading":99.38125480709985,"systemTime":1643342534685,"receiverDataTime":1643342534685,"adasSatelliteTime":1643342534685,"satelliteTime":1643342534685,"speed":19.163564682006836} +{"lon":116.73079162519183,"lat":40.20293770443438,"alt":0,"heading":99.35084680491495,"systemTime":1643342534732,"receiverDataTime":1643342534732,"adasSatelliteTime":1643342534732,"satelliteTime":1643342534732,"speed":19.165555953979492} +{"lon":116.73080048816605,"lat":40.20293650089899,"alt":0,"heading":99.33718642657492,"systemTime":1643342534784,"receiverDataTime":1643342534784,"adasSatelliteTime":1643342534784,"satelliteTime":1643342534784,"speed":19.12110137939453} +{"lon":116.73081153451139,"lat":40.20293501021993,"alt":0,"heading":99.32737827492679,"systemTime":1643342534834,"receiverDataTime":1643342534834,"adasSatelliteTime":1643342534834,"satelliteTime":1643342534834,"speed":19.043771743774414} +{"lon":116.73082253386922,"lat":40.20293353959781,"alt":0,"heading":99.3358477094976,"systemTime":1643342534884,"receiverDataTime":1643342534884,"adasSatelliteTime":1643342534884,"satelliteTime":1643342534884,"speed":18.95864486694336} +{"lon":116.73083568605074,"lat":40.20293180232439,"alt":0,"heading":99.35368816360968,"systemTime":1643342534948,"receiverDataTime":1643342534948,"adasSatelliteTime":1643342534948,"satelliteTime":1643342534948,"speed":18.901870727539062} +{"lon":116.73084444605796,"lat":40.20293064734129,"alt":0,"heading":99.3706270327513,"systemTime":1643342534999,"receiverDataTime":1643342534999,"adasSatelliteTime":1643342534999,"satelliteTime":1643342534999,"speed":18.908405303955078} +{"lon":116.73086197952905,"lat":40.20292833371147,"alt":0,"heading":99.40316605395725,"systemTime":1643342535047,"receiverDataTime":1643342535047,"adasSatelliteTime":1643342535047,"satelliteTime":1643342535047,"speed":18.928367614746094} +{"lon":116.73087293413612,"lat":40.20292688850223,"alt":0,"heading":99.4300769992871,"systemTime":1643342535098,"receiverDataTime":1643342535098,"adasSatelliteTime":1643342535098,"satelliteTime":1643342535098,"speed":18.89961051940918} +{"lon":116.73088604607761,"lat":40.20292514977954,"alt":0,"heading":99.46064892601207,"systemTime":1643342535148,"receiverDataTime":1643342535148,"adasSatelliteTime":1643342535148,"satelliteTime":1643342535148,"speed":18.8454532623291} +{"lon":116.73089476265311,"lat":40.20292398668287,"alt":0,"heading":99.48947232430953,"systemTime":1643342535199,"receiverDataTime":1643342535199,"adasSatelliteTime":1643342535199,"satelliteTime":1643342535199,"speed":18.804670333862305} +{"lon":116.73090562491939,"lat":40.20292252036967,"alt":0,"heading":99.52542644010047,"systemTime":1643342535252,"receiverDataTime":1643342535252,"adasSatelliteTime":1643342535252,"satelliteTime":1643342535252,"speed":18.741931915283203} +{"lon":116.73091860090194,"lat":40.20292075712976,"alt":0,"heading":99.57441255682781,"systemTime":1643342535302,"receiverDataTime":1643342535302,"adasSatelliteTime":1643342535302,"satelliteTime":1643342535302,"speed":18.649612426757812} +{"lon":116.73092721802898,"lat":40.202919581159506,"alt":0,"heading":99.6085361819212,"systemTime":1643342535352,"receiverDataTime":1643342535352,"adasSatelliteTime":1643342535352,"satelliteTime":1643342535352,"speed":18.599477767944336} +{"lon":116.73093581671736,"lat":40.202918401080595,"alt":0,"heading":99.64435369392874,"systemTime":1643342535402,"receiverDataTime":1643342535402,"adasSatelliteTime":1643342535402,"satelliteTime":1643342535402,"speed":18.576128005981445} +{"lon":116.73094441511326,"lat":40.20291721500188,"alt":0,"heading":99.67814946994196,"systemTime":1643342535452,"receiverDataTime":1643342535452,"adasSatelliteTime":1643342535452,"satelliteTime":1643342535452,"speed":18.59320068359375} +{"lon":116.73095518131564,"lat":40.20291572258318,"alt":0,"heading":99.71216381200863,"systemTime":1643342535505,"receiverDataTime":1643342535505,"adasSatelliteTime":1643342535505,"satelliteTime":1643342535505,"speed":18.642255783081055} +{"lon":116.73096597156744,"lat":40.20291422219746,"alt":0,"heading":99.74399249354089,"systemTime":1643342535552,"receiverDataTime":1643342535552,"adasSatelliteTime":1643342535552,"satelliteTime":1643342535552,"speed":18.678150177001953} +{"lon":116.73097894668265,"lat":40.202912408906485,"alt":0,"heading":99.78377151526703,"systemTime":1643342535603,"receiverDataTime":1643342535603,"adasSatelliteTime":1643342535603,"satelliteTime":1643342535603,"speed":18.7225399017334} +{"lon":116.73098544169596,"lat":40.20291150105724,"alt":0,"heading":99.80360638461676,"systemTime":1643342535653,"receiverDataTime":1643342535653,"adasSatelliteTime":1643342535653,"satelliteTime":1643342535653,"speed":18.7299747467041} +{"lon":116.73100492771756,"lat":40.20290877743259,"alt":0,"heading":99.86884835156872,"systemTime":1643342535706,"receiverDataTime":1643342535706,"adasSatelliteTime":1643342535706,"satelliteTime":1643342535706,"speed":18.70387840270996} +{"lon":116.73101357317043,"lat":40.20290757164538,"alt":0,"heading":99.89966616510381,"systemTime":1643342535754,"receiverDataTime":1643342535754,"adasSatelliteTime":1643342535754,"satelliteTime":1643342535754,"speed":18.68556785583496} +{"lon":116.73102653059254,"lat":40.20290575566804,"alt":0,"heading":99.96100126385053,"systemTime":1643342535804,"receiverDataTime":1643342535804,"adasSatelliteTime":1643342535804,"satelliteTime":1643342535804,"speed":18.683488845825195} +{"lon":116.73103731186507,"lat":40.2029041963085,"alt":0,"heading":100.01558813569727,"systemTime":1643342535854,"receiverDataTime":1643342535854,"adasSatelliteTime":1643342535854,"satelliteTime":1643342535854,"speed":18.65070152282715} +{"lon":116.73103946231879,"lat":40.20290388129279,"alt":0,"heading":100.02468594767173,"systemTime":1643342535906,"receiverDataTime":1643342535906,"adasSatelliteTime":1643342535906,"satelliteTime":1643342535906,"speed":18.62898826599121} +{"lon":116.73105017467965,"lat":40.20290232516262,"alt":0,"heading":100.06301696929384,"systemTime":1643342535957,"receiverDataTime":1643342535957,"adasSatelliteTime":1643342535957,"satelliteTime":1643342535957,"speed":18.502605438232422} +{"lon":116.73106504190612,"lat":40.20290017198961,"alt":0,"heading":100.09741380195402,"systemTime":1643342536009,"receiverDataTime":1643342536009,"adasSatelliteTime":1643342536009,"satelliteTime":1643342536009,"speed":18.312843322753906} +{"lon":116.7310777222524,"lat":40.20289832922914,"alt":0,"heading":100.1256634643612,"systemTime":1643342536058,"receiverDataTime":1643342536058,"adasSatelliteTime":1643342536058,"satelliteTime":1643342536058,"speed":18.336044311523438} +{"lon":116.73108621840967,"lat":40.20289711559847,"alt":0,"heading":100.16828384478208,"systemTime":1643342536108,"receiverDataTime":1643342536108,"adasSatelliteTime":1643342536108,"satelliteTime":1643342536108,"speed":18.43025016784668} +{"lon":116.73109691944431,"lat":40.2028955985729,"alt":0,"heading":100.22475584883973,"systemTime":1643342536160,"receiverDataTime":1643342536160,"adasSatelliteTime":1643342536160,"satelliteTime":1643342536160,"speed":18.60090446472168} +{"lon":116.7311055410161,"lat":40.20289437758898,"alt":0,"heading":100.26319615348858,"systemTime":1643342536210,"receiverDataTime":1643342536210,"adasSatelliteTime":1643342536210,"satelliteTime":1643342536210,"speed":18.70134162902832} +{"lon":116.73111854994852,"lat":40.202892516437046,"alt":0,"heading":100.28253924921805,"systemTime":1643342536260,"receiverDataTime":1643342536260,"adasSatelliteTime":1643342536260,"satelliteTime":1643342536260,"speed":18.804784774780273} +{"lon":116.7311294155022,"lat":40.20289094330664,"alt":0,"heading":100.28953336292814,"systemTime":1643342536310,"receiverDataTime":1643342536310,"adasSatelliteTime":1643342536310,"satelliteTime":1643342536310,"speed":18.79163360595703} +{"lon":116.73114025523867,"lat":40.20288936070859,"alt":0,"heading":100.2998606089532,"systemTime":1643342536361,"receiverDataTime":1643342536361,"adasSatelliteTime":1643342536361,"satelliteTime":1643342536361,"speed":18.725008010864258} +{"lon":116.73115319705937,"lat":40.20288746328108,"alt":0,"heading":100.31964083678956,"systemTime":1643342536422,"receiverDataTime":1643342536422,"adasSatelliteTime":1643342536422,"satelliteTime":1643342536422,"speed":18.61502456665039} +{"lon":116.73116178694602,"lat":40.20288620159325,"alt":0,"heading":100.34324597056113,"systemTime":1643342536474,"receiverDataTime":1643342536474,"adasSatelliteTime":1643342536474,"satelliteTime":1643342536474,"speed":18.557506561279297} +{"lon":116.73118103401067,"lat":40.20288337761502,"alt":0,"heading":100.41340567371549,"systemTime":1643342536522,"receiverDataTime":1643342536522,"adasSatelliteTime":1643342536522,"satelliteTime":1643342536522,"speed":18.47562599182129} +{"lon":116.7311853021312,"lat":40.20288275220697,"alt":0,"heading":100.42616446708507,"systemTime":1643342536577,"receiverDataTime":1643342536577,"adasSatelliteTime":1643342536577,"satelliteTime":1643342536577,"speed":18.47268295288086} +{"lon":116.73120023875829,"lat":40.20288056287387,"alt":0,"heading":100.45498786538253,"systemTime":1643342536628,"receiverDataTime":1643342536628,"adasSatelliteTime":1643342536628,"satelliteTime":1643342536628,"speed":18.479766845703125} +{"lon":116.73121305102251,"lat":40.20287866965936,"alt":0,"heading":100.44550756281456,"systemTime":1643342536677,"receiverDataTime":1643342536677,"adasSatelliteTime":1643342536677,"satelliteTime":1643342536677,"speed":18.50679588317871} +{"lon":116.73122373913935,"lat":40.2028770840366,"alt":0,"heading":100.41936159867174,"systemTime":1643342536727,"receiverDataTime":1643342536727,"adasSatelliteTime":1643342536727,"satelliteTime":1643342536727,"speed":18.528676986694336} +{"lon":116.73122587851327,"lat":40.202876765088284,"alt":0,"heading":100.41203963588148,"systemTime":1643342536779,"receiverDataTime":1643342536779,"adasSatelliteTime":1643342536779,"satelliteTime":1643342536779,"speed":18.53762435913086} +{"lon":116.73124517677662,"lat":40.20287388838475,"alt":0,"heading":100.33641578139111,"systemTime":1643342536829,"receiverDataTime":1643342536829,"adasSatelliteTime":1643342536829,"satelliteTime":1643342536829,"speed":18.622228622436523} +{"lon":116.73125809907167,"lat":40.202871968720174,"alt":0,"heading":100.29382272172691,"systemTime":1643342536879,"receiverDataTime":1643342536879,"adasSatelliteTime":1643342536879,"satelliteTime":1643342536879,"speed":18.685373306274414} +{"lon":116.73126672969241,"lat":40.20287069348672,"alt":0,"heading":100.26833245574443,"systemTime":1643342536931,"receiverDataTime":1643342536931,"adasSatelliteTime":1643342536931,"satelliteTime":1643342536931,"speed":18.689918518066406} +{"lon":116.73127535789077,"lat":40.20286942711448,"alt":0,"heading":100.25215856778983,"systemTime":1643342536981,"receiverDataTime":1643342536981,"adasSatelliteTime":1643342536981,"satelliteTime":1643342536981,"speed":18.668901443481445} +{"lon":116.73128612231069,"lat":40.20286785969186,"alt":0,"heading":100.23972762350041,"systemTime":1643342537033,"receiverDataTime":1643342537033,"adasSatelliteTime":1643342537033,"satelliteTime":1643342537033,"speed":18.607505798339844} +{"lon":116.73129899395718,"lat":40.20286600029426,"alt":0,"heading":100.24142151041457,"systemTime":1643342537082,"receiverDataTime":1643342537082,"adasSatelliteTime":1643342537082,"satelliteTime":1643342537082,"speed":18.537763595581055} +{"lon":116.73130541438258,"lat":40.20286507822471,"alt":0,"heading":100.24819705807123,"systemTime":1643342537134,"receiverDataTime":1643342537134,"adasSatelliteTime":1643342537134,"satelliteTime":1643342537134,"speed":18.513586044311523} +{"lon":116.73131610422278,"lat":40.202863541453674,"alt":0,"heading":100.26237653078817,"systemTime":1643342537184,"receiverDataTime":1643342537184,"adasSatelliteTime":1643342537184,"satelliteTime":1643342537184,"speed":18.503326416015625} +{"lon":116.73132893464403,"lat":40.20286168929796,"alt":0,"heading":100.27251253151647,"systemTime":1643342537236,"receiverDataTime":1643342537236,"adasSatelliteTime":1643342537236,"satelliteTime":1643342537236,"speed":18.518096923828125} +{"lon":116.73133750776124,"lat":40.20286043862632,"alt":0,"heading":100.28038090944032,"systemTime":1643342537286,"receiverDataTime":1643342537286,"adasSatelliteTime":1643342537286,"satelliteTime":1643342537286,"speed":18.547592163085938} +{"lon":116.73134823795905,"lat":40.2028588641923,"alt":0,"heading":100.28426045688889,"systemTime":1643342537336,"receiverDataTime":1643342537336,"adasSatelliteTime":1643342537336,"satelliteTime":1643342537336,"speed":18.57883644104004} +{"lon":116.73135898251623,"lat":40.202857279239744,"alt":0,"heading":100.28939675914474,"systemTime":1643342537387,"receiverDataTime":1643342537387,"adasSatelliteTime":1643342537387,"satelliteTime":1643342537387,"speed":18.604291915893555} +{"lon":116.73136973783262,"lat":40.202855685960536,"alt":0,"heading":100.29491555199411,"systemTime":1643342537437,"receiverDataTime":1643342537437,"adasSatelliteTime":1643342537437,"satelliteTime":1643342537437,"speed":18.62030029296875} +{"lon":116.73138913138541,"lat":40.20285280924632,"alt":0,"heading":100.31253744005275,"systemTime":1643342537487,"receiverDataTime":1643342537487,"adasSatelliteTime":1643342537487,"satelliteTime":1643342537487,"speed":18.66315269470215} +{"lon":116.73139776220934,"lat":40.202851531077805,"alt":0,"heading":100.32248219548428,"systemTime":1643342537537,"receiverDataTime":1643342537537,"adasSatelliteTime":1643342537537,"satelliteTime":1643342537537,"speed":18.67732048034668} +{"lon":116.73140856320813,"lat":40.20284993561252,"alt":0,"heading":100.34002212127288,"systemTime":1643342537587,"receiverDataTime":1643342537587,"adasSatelliteTime":1643342537587,"satelliteTime":1643342537587,"speed":18.705652236938477} +{"lon":116.7314172108393,"lat":40.20284866279361,"alt":0,"heading":100.35444748079995,"systemTime":1643342537637,"receiverDataTime":1643342537637,"adasSatelliteTime":1643342537637,"satelliteTime":1643342537637,"speed":18.711084365844727} +{"lon":116.73143018598023,"lat":40.20284675542363,"alt":0,"heading":100.37903616181198,"systemTime":1643342537687,"receiverDataTime":1643342537687,"adasSatelliteTime":1643342537687,"satelliteTime":1643342537687,"speed":18.71893310546875} +{"lon":116.73143667274667,"lat":40.202845801529975,"alt":0,"heading":100.39302438923218,"systemTime":1643342537736,"receiverDataTime":1643342537736,"adasSatelliteTime":1643342537736,"satelliteTime":1643342537736,"speed":18.712661743164062} +{"lon":116.73144748123511,"lat":40.202844213437295,"alt":0,"heading":100.41550937197985,"systemTime":1643342537787,"receiverDataTime":1643342537787,"adasSatelliteTime":1643342537787,"satelliteTime":1643342537787,"speed":18.715646743774414} +{"lon":116.73145829462715,"lat":40.20284262627081,"alt":0,"heading":100.44138212855586,"systemTime":1643342537837,"receiverDataTime":1643342537837,"adasSatelliteTime":1643342537837,"satelliteTime":1643342537837,"speed":18.723045349121094} +{"lon":116.73147127299562,"lat":40.202840716402555,"alt":0,"heading":100.46067058277198,"systemTime":1643342537888,"receiverDataTime":1643342537888,"adasSatelliteTime":1643342537888,"satelliteTime":1643342537888,"speed":18.733509063720703} +{"lon":116.73147343652471,"lat":40.20284039648126,"alt":0,"heading":100.46211858287603,"systemTime":1643342537943,"receiverDataTime":1643342537943,"adasSatelliteTime":1643342537943,"satelliteTime":1643342537943,"speed":18.736974716186523} +{"lon":116.73148859240976,"lat":40.20283814754521,"alt":0,"heading":100.46315677162987,"systemTime":1643342537994,"receiverDataTime":1643342537994,"adasSatelliteTime":1643342537994,"satelliteTime":1643342537994,"speed":18.77117919921875} +{"lon":116.73151029882467,"lat":40.20283491373485,"alt":0,"heading":100.42665624070531,"systemTime":1643342538044,"receiverDataTime":1643342538044,"adasSatelliteTime":1643342538044,"satelliteTime":1643342538044,"speed":18.84324073791504} +{"lon":116.73151247469694,"lat":40.202834590113795,"alt":0,"heading":100.42127405163934,"systemTime":1643342538097,"receiverDataTime":1643342538097,"adasSatelliteTime":1643342538097,"satelliteTime":1643342538097,"speed":18.852951049804688} +{"lon":116.73152337108255,"lat":40.202832970007634,"alt":0,"heading":100.39283314393542,"systemTime":1643342538150,"receiverDataTime":1643342538150,"adasSatelliteTime":1643342538150,"satelliteTime":1643342538150,"speed":18.90056610107422} +{"lon":116.73153647329677,"lat":40.20283102925346,"alt":0,"heading":100.36526650044524,"systemTime":1643342538197,"receiverDataTime":1643342538197,"adasSatelliteTime":1643342538197,"satelliteTime":1643342538197,"speed":18.92662239074707} +{"lon":116.73154521345661,"lat":40.20282974063407,"alt":0,"heading":100.3512236315117,"systemTime":1643342538249,"receiverDataTime":1643342538249,"adasSatelliteTime":1643342538249,"satelliteTime":1643342538249,"speed":18.92578125} +{"lon":116.73156049688068,"lat":40.20282748427217,"alt":0,"heading":100.34034997035303,"systemTime":1643342538303,"receiverDataTime":1643342538303,"adasSatelliteTime":1643342538303,"satelliteTime":1643342538303,"speed":18.90269660949707} +{"lon":116.7315735752373,"lat":40.202825551535675,"alt":0,"heading":100.33392959253322,"systemTime":1643342538357,"receiverDataTime":1643342538357,"adasSatelliteTime":1643342538357,"satelliteTime":1643342538357,"speed":18.868196487426758} +{"lon":116.73158663486154,"lat":40.20282362148958,"alt":0,"heading":100.3308150262717,"systemTime":1643342538406,"receiverDataTime":1643342538406,"adasSatelliteTime":1643342538406,"satelliteTime":1643342538406,"speed":18.850505828857422} +{"lon":116.73159533927961,"lat":40.20282233338658,"alt":0,"heading":100.3238209125616,"systemTime":1643342538461,"receiverDataTime":1643342538461,"adasSatelliteTime":1643342538461,"satelliteTime":1643342538461,"speed":18.85769271850586} +{"lon":116.73160405087154,"lat":40.20282104138459,"alt":0,"heading":100.31032445876166,"systemTime":1643342538510,"receiverDataTime":1643342538510,"adasSatelliteTime":1643342538510,"satelliteTime":1643342538510,"speed":18.88128662109375} +{"lon":116.73161277658349,"lat":40.2028197494746,"alt":0,"heading":100.29652747663823,"systemTime":1643342538570,"receiverDataTime":1643342538570,"adasSatelliteTime":1643342538570,"satelliteTime":1643342538570,"speed":18.91696548461914} +{"lon":116.73163028165949,"lat":40.2028171647438,"alt":0,"heading":100.25833305879952,"systemTime":1643342538620,"receiverDataTime":1643342538620,"adasSatelliteTime":1643342538620,"satelliteTime":1643342538620,"speed":18.990142822265625} +{"lon":116.73164124997439,"lat":40.202815553493956,"alt":0,"heading":100.23729607615589,"systemTime":1643342538669,"receiverDataTime":1643342538669,"adasSatelliteTime":1643342538669,"satelliteTime":1643342538669,"speed":19.011140823364258} +{"lon":116.73164124997439,"lat":40.202815553493956,"alt":0,"heading":100.23729607615589,"systemTime":1643342538720,"receiverDataTime":1643342538720,"adasSatelliteTime":1643342538720,"satelliteTime":1643342538720,"speed":19.011140823364258} +{"lon":116.73165222444035,"lat":40.20281394492474,"alt":0,"heading":100.21888188615353,"systemTime":1643342538771,"receiverDataTime":1643342538771,"adasSatelliteTime":1643342538771,"satelliteTime":1643342538771,"speed":19.014453887939453} +{"lon":116.73166758587493,"lat":40.202811705855154,"alt":0,"heading":100.19442980892488,"systemTime":1643342538821,"receiverDataTime":1643342538821,"adasSatelliteTime":1643342538821,"satelliteTime":1643342538821,"speed":18.992971420288086} +{"lon":116.73168731052033,"lat":40.20280884583577,"alt":0,"heading":100.17527795849217,"systemTime":1643342538871,"receiverDataTime":1643342538871,"adasSatelliteTime":1643342538871,"satelliteTime":1643342538871,"speed":18.969758987426758} +{"lon":116.7316960720628,"lat":40.20280757477962,"alt":0,"heading":100.16650799559787,"systemTime":1643342538921,"receiverDataTime":1643342538921,"adasSatelliteTime":1643342538921,"satelliteTime":1643342538921,"speed":18.970312118530273} +{"lon":116.7317070325274,"lat":40.20280598997604,"alt":0,"heading":100.15243780590765,"systemTime":1643342538975,"receiverDataTime":1643342538975,"adasSatelliteTime":1643342538975,"satelliteTime":1643342538975,"speed":18.991214752197266} +{"lon":116.73171361425166,"lat":40.202805042210365,"alt":0,"heading":100.14844897543236,"systemTime":1643342539026,"receiverDataTime":1643342539026,"adasSatelliteTime":1643342539026,"satelliteTime":1643342539026,"speed":18.997684478759766} +{"lon":116.73172678619584,"lat":40.20280314258602,"alt":0,"heading":100.12850482305592,"systemTime":1643342539078,"receiverDataTime":1643342539078,"adasSatelliteTime":1643342539078,"satelliteTime":1643342539078,"speed":19.020286560058594} +{"lon":116.73173996931607,"lat":40.20280125066811,"alt":0,"heading":100.11754919962722,"systemTime":1643342539127,"receiverDataTime":1643342539127,"adasSatelliteTime":1643342539127,"satelliteTime":1643342539127,"speed":19.018848419189453} +{"lon":116.73175752910923,"lat":40.20279873663658,"alt":0,"heading":100.11809561476082,"systemTime":1643342539178,"receiverDataTime":1643342539178,"adasSatelliteTime":1643342539178,"satelliteTime":1643342539178,"speed":18.98362159729004} +{"lon":116.73176191382787,"lat":40.20279811147552,"alt":0,"heading":100.12372369063691,"systemTime":1643342539228,"receiverDataTime":1643342539228,"adasSatelliteTime":1643342539228,"satelliteTime":1643342539228,"speed":18.972965240478516} +{"lon":116.73177068275788,"lat":40.20279684906493,"alt":0,"heading":100.13159206856076,"systemTime":1643342539278,"receiverDataTime":1643342539278,"adasSatelliteTime":1643342539278,"satelliteTime":1643342539278,"speed":18.967117309570312} +{"lon":116.73178822169875,"lat":40.202794313498806,"alt":0,"heading":100.1449519185773,"systemTime":1643342539328,"receiverDataTime":1643342539328,"adasSatelliteTime":1643342539328,"satelliteTime":1643342539328,"speed":18.984037399291992} +{"lon":116.73179918952147,"lat":40.202792720353266,"alt":0,"heading":100.14216520139594,"systemTime":1643342539378,"receiverDataTime":1643342539378,"adasSatelliteTime":1643342539378,"satelliteTime":1643342539378,"speed":18.986717224121094} +{"lon":116.73180357563982,"lat":40.20279208205358,"alt":0,"heading":100.14312142787975,"systemTime":1643342539427,"receiverDataTime":1643342539427,"adasSatelliteTime":1643342539427,"satelliteTime":1643342539427,"speed":18.98145294189453} +{"lon":116.73181234289957,"lat":40.20279080544821,"alt":0,"heading":100.14418693739027,"systemTime":1643342539477,"receiverDataTime":1643342539477,"adasSatelliteTime":1643342539477,"satelliteTime":1643342539477,"speed":18.963382720947266} +{"lon":116.73182985215304,"lat":40.202788254414386,"alt":0,"heading":100.14033471069838,"systemTime":1643342539535,"receiverDataTime":1643342539535,"adasSatelliteTime":1643342539535,"satelliteTime":1643342539535,"speed":18.933683395385742} +{"lon":116.73184297457178,"lat":40.20278634723809,"alt":0,"heading":100.13446074801217,"systemTime":1643342539595,"receiverDataTime":1643342539595,"adasSatelliteTime":1643342539595,"satelliteTime":1643342539595,"speed":18.930322647094727} +{"lon":116.73185172070907,"lat":40.202785083184466,"alt":0,"heading":100.13249365353121,"systemTime":1643342539646,"receiverDataTime":1643342539646,"adasSatelliteTime":1643342539646,"satelliteTime":1643342539646,"speed":18.917083740234375} +{"lon":116.7318626419603,"lat":40.20278350708948,"alt":0,"heading":100.129351766513,"systemTime":1643342539697,"receiverDataTime":1643342539697,"adasSatelliteTime":1643342539697,"satelliteTime":1643342539697,"speed":18.89394760131836} +{"lon":116.73187572648395,"lat":40.202781622152315,"alt":0,"heading":100.13314935169153,"systemTime":1643342539748,"receiverDataTime":1643342539748,"adasSatelliteTime":1643342539748,"satelliteTime":1643342539748,"speed":18.855016708374023} +{"lon":116.73188443671961,"lat":40.202780369923936,"alt":0,"heading":100.13732942746358,"systemTime":1643342539806,"receiverDataTime":1643342539806,"adasSatelliteTime":1643342539806,"satelliteTime":1643342539806,"speed":18.839279174804688} +{"lon":116.73190183088093,"lat":40.20277787100126,"alt":0,"heading":100.14178271080243,"systemTime":1643342539855,"receiverDataTime":1643342539855,"adasSatelliteTime":1643342539855,"satelliteTime":1643342539855,"speed":18.796653747558594} +{"lon":116.73190183088093,"lat":40.20277787100126,"alt":0,"heading":100.14178271080243,"systemTime":1643342539933,"receiverDataTime":1643342539933,"adasSatelliteTime":1643342539933,"satelliteTime":1643342539933,"speed":18.796653747558594} +{"lon":116.73192567769213,"lat":40.20277443532032,"alt":0,"heading":100.13762995578706,"systemTime":1643342539983,"receiverDataTime":1643342539983,"adasSatelliteTime":1643342539983,"satelliteTime":1643342539983,"speed":18.741628646850586} +{"lon":116.73193649934124,"lat":40.20277287589855,"alt":0,"heading":100.12596399268467,"systemTime":1643342540035,"receiverDataTime":1643342540035,"adasSatelliteTime":1643342540035,"satelliteTime":1643342540035,"speed":18.734025955200195} +{"lon":116.73194731908836,"lat":40.202771313023085,"alt":0,"heading":100.11793169022074,"systemTime":1643342540085,"receiverDataTime":1643342540085,"adasSatelliteTime":1643342540085,"satelliteTime":1643342540085,"speed":18.735153198242188} +{"lon":116.73195813838359,"lat":40.202769753259666,"alt":0,"heading":100.10694874603536,"systemTime":1643342540135,"receiverDataTime":1643342540135,"adasSatelliteTime":1643342540135,"satelliteTime":1643342540135,"speed":18.726411819458008} +{"lon":116.73197110054558,"lat":40.202767889219544,"alt":0,"heading":100.09858859449126,"systemTime":1643342540185,"receiverDataTime":1643342540185,"adasSatelliteTime":1643342540185,"satelliteTime":1643342540185,"speed":18.67326545715332} +{"lon":116.73197756530166,"lat":40.202766961174845,"alt":0,"heading":100.09418995266577,"systemTime":1643342540235,"receiverDataTime":1643342540235,"adasSatelliteTime":1643342540235,"satelliteTime":1643342540235,"speed":18.638534545898438} +{"lon":116.73199905842723,"lat":40.20276386054077,"alt":0,"heading":100.07072142267761,"systemTime":1643342540293,"receiverDataTime":1643342540293,"adasSatelliteTime":1643342540293,"satelliteTime":1643342540293,"speed":18.56761932373047} +{"lon":116.73200549411676,"lat":40.20276293121999,"alt":0,"heading":100.0532088176457,"systemTime":1643342540338,"receiverDataTime":1643342540338,"adasSatelliteTime":1643342540338,"satelliteTime":1643342540338,"speed":18.55678939819336} +{"lon":116.73201835209242,"lat":40.20276106981039,"alt":0,"heading":100.00452322924185,"systemTime":1643342540390,"receiverDataTime":1643342540390,"adasSatelliteTime":1643342540390,"satelliteTime":1643342540390,"speed":18.533336639404297} +{"lon":116.73202691930919,"lat":40.20275983260038,"alt":0,"heading":99.96386994330193,"systemTime":1643342540438,"receiverDataTime":1643342540438,"adasSatelliteTime":1643342540438,"satelliteTime":1643342540438,"speed":18.5281982421875} +{"lon":116.73203977040826,"lat":40.202757986733204,"alt":0,"heading":99.9032451842289,"systemTime":1643342540489,"receiverDataTime":1643342540489,"adasSatelliteTime":1643342540489,"satelliteTime":1643342540489,"speed":18.523670196533203} +{"lon":116.73205261362695,"lat":40.20275615417495,"alt":0,"heading":99.84248382137247,"systemTime":1643342540538,"receiverDataTime":1643342540538,"adasSatelliteTime":1643342540538,"satelliteTime":1643342540538,"speed":18.499916076660156} +{"lon":116.73205902877619,"lat":40.20275524426636,"alt":0,"heading":99.81426147972198,"systemTime":1643342540589,"receiverDataTime":1643342540589,"adasSatelliteTime":1643342540589,"satelliteTime":1643342540589,"speed":18.485267639160156} +{"lon":116.73206971143513,"lat":40.2027537406399,"alt":0,"heading":99.77142253324766,"systemTime":1643342540640,"receiverDataTime":1643342540640,"adasSatelliteTime":1643342540640,"satelliteTime":1643342540640,"speed":18.460453033447266} +{"lon":116.73208038027849,"lat":40.20275225113821,"alt":0,"heading":99.7304140774709,"systemTime":1643342540691,"receiverDataTime":1643342540691,"adasSatelliteTime":1643342540691,"satelliteTime":1643342540691,"speed":18.43040657043457} +{"lon":116.73209528410769,"lat":40.20275018958527,"alt":0,"heading":99.67806750767193,"systemTime":1643342540742,"receiverDataTime":1643342540742,"adasSatelliteTime":1643342540742,"satelliteTime":1643342540742,"speed":18.37272834777832} +{"lon":116.73209953386895,"lat":40.20274960451539,"alt":0,"heading":99.66325965755134,"systemTime":1643342540795,"receiverDataTime":1643342540795,"adasSatelliteTime":1643342540795,"satelliteTime":1643342540795,"speed":18.3557071685791} +{"lon":116.73210802318691,"lat":40.20274844028049,"alt":0,"heading":99.63749618400205,"systemTime":1643342540846,"receiverDataTime":1643342540846,"adasSatelliteTime":1643342540846,"satelliteTime":1643342540846,"speed":18.326974868774414} +{"lon":116.73212921038174,"lat":40.202745555033204,"alt":0,"heading":99.56403066928938,"systemTime":1643342540898,"receiverDataTime":1643342540898,"adasSatelliteTime":1643342540898,"satelliteTime":1643342540898,"speed":18.28898811340332} +{"lon":116.73213132720986,"lat":40.20274526819075,"alt":0,"heading":99.55646281968902,"systemTime":1643342540953,"receiverDataTime":1643342540953,"adasSatelliteTime":1643342540953,"satelliteTime":1643342540953,"speed":18.285526275634766} +{"lon":116.73213978961277,"lat":40.20274412430902,"alt":0,"heading":99.52712032701464,"systemTime":1643342541004,"receiverDataTime":1643342541004,"adasSatelliteTime":1643342541004,"satelliteTime":1643342541004,"speed":18.265926361083984} +{"lon":116.7321630203959,"lat":40.202740992223504,"alt":0,"heading":99.4482999439927,"systemTime":1643342541055,"receiverDataTime":1643342541055,"adasSatelliteTime":1643342541055,"satelliteTime":1643342541055,"speed":18.21507453918457} +{"lon":116.7321714550356,"lat":40.20273986092848,"alt":0,"heading":99.42627941410856,"systemTime":1643342541106,"receiverDataTime":1643342541106,"adasSatelliteTime":1643342541106,"satelliteTime":1643342541106,"speed":18.208072662353516} +{"lon":116.73217988411851,"lat":40.20273873364018,"alt":0,"heading":99.40685435610905,"systemTime":1643342541157,"receiverDataTime":1643342541157,"adasSatelliteTime":1643342541157,"satelliteTime":1643342541157,"speed":18.191171646118164} +{"lon":116.73219041469657,"lat":40.202737329728166,"alt":0,"heading":99.38529827908849,"systemTime":1643342541224,"receiverDataTime":1643342541224,"adasSatelliteTime":1643342541224,"satelliteTime":1643342541224,"speed":18.186321258544922} +{"lon":116.73220936088673,"lat":40.20273478522026,"alt":0,"heading":99.37319518387923,"systemTime":1643342541281,"receiverDataTime":1643342541281,"adasSatelliteTime":1643342541281,"satelliteTime":1643342541281,"speed":18.16806411743164} +{"lon":116.7322135674773,"lat":40.202734220762565,"alt":0,"heading":99.37084559880475,"systemTime":1643342541332,"receiverDataTime":1643342541332,"adasSatelliteTime":1643342541332,"satelliteTime":1643342541332,"speed":18.15912628173828} +{"lon":116.73222197083612,"lat":40.20273309268312,"alt":0,"heading":99.36972544778087,"systemTime":1643342541382,"receiverDataTime":1643342541382,"adasSatelliteTime":1643342541382,"satelliteTime":1643342541382,"speed":18.126266479492188} +{"lon":116.73223035632202,"lat":40.20273196633107,"alt":0,"heading":99.36603714562905,"systemTime":1643342541432,"receiverDataTime":1643342541432,"adasSatelliteTime":1643342541432,"satelliteTime":1643342541432,"speed":18.085697174072266} +{"lon":116.73225125759855,"lat":40.20272915857602,"alt":0,"heading":99.36308650390761,"systemTime":1643342541482,"receiverDataTime":1643342541482,"adasSatelliteTime":1643342541482,"satelliteTime":1643342541482,"speed":18.027833938598633} +{"lon":116.73225960457226,"lat":40.202728037360316,"alt":0,"heading":99.36322310769101,"systemTime":1643342541532,"receiverDataTime":1643342541532,"adasSatelliteTime":1643342541532,"satelliteTime":1643342541532,"speed":18.015724182128906} +{"lon":116.73226169082821,"lat":40.202727757978856,"alt":0,"heading":99.3648896738485,"systemTime":1643342541597,"receiverDataTime":1643342541597,"adasSatelliteTime":1643342541597,"satelliteTime":1643342541597,"speed":18.014963150024414} +{"lon":116.73228257196419,"lat":40.20272496958035,"alt":0,"heading":99.35879714510884,"systemTime":1643342541636,"receiverDataTime":1643342541636,"adasSatelliteTime":1643342541636,"satelliteTime":1643342541636,"speed":18.047399520874023} +{"lon":116.73228884127558,"lat":40.20272413350536,"alt":0,"heading":99.35565525809064,"systemTime":1643342541685,"receiverDataTime":1643342541685,"adasSatelliteTime":1643342541685,"satelliteTime":1643342541685,"speed":18.044754028320312} +{"lon":116.73228884127558,"lat":40.20272413350536,"alt":0,"heading":99.35565525809064,"systemTime":1643342541735,"receiverDataTime":1643342541735,"adasSatelliteTime":1643342541735,"satelliteTime":1643342541735,"speed":18.044754028320312} +{"lon":116.73230763246872,"lat":40.20272163573454,"alt":0,"heading":99.34579246492913,"systemTime":1643342541787,"receiverDataTime":1643342541787,"adasSatelliteTime":1643342541787,"satelliteTime":1643342541787,"speed":18.008312225341797} +{"lon":116.73231805771556,"lat":40.2027202519821,"alt":0,"heading":99.34412589877165,"systemTime":1643342541836,"receiverDataTime":1643342541836,"adasSatelliteTime":1643342541836,"satelliteTime":1643342541836,"speed":18.000452041625977} +{"lon":116.73233055899729,"lat":40.20271858269199,"alt":0,"heading":99.32470084077214,"systemTime":1643342541886,"receiverDataTime":1643342541886,"adasSatelliteTime":1643342541886,"satelliteTime":1643342541886,"speed":17.987960815429688} +{"lon":116.73233888896574,"lat":40.20271747370494,"alt":0,"heading":99.30224317878114,"systemTime":1643342541937,"receiverDataTime":1643342541937,"adasSatelliteTime":1643342541937,"satelliteTime":1643342541937,"speed":17.98082733154297} +{"lon":116.73234721161867,"lat":40.202716363613696,"alt":0,"heading":99.2675184970408,"systemTime":1643342541987,"receiverDataTime":1643342541987,"adasSatelliteTime":1643342541987,"satelliteTime":1643342541987,"speed":17.960599899291992} +{"lon":116.73236797029486,"lat":40.202713601507014,"alt":0,"heading":99.16812558423877,"systemTime":1643342542037,"receiverDataTime":1643342542037,"adasSatelliteTime":1643342542037,"satelliteTime":1643342542037,"speed":17.88194465637207} +{"lon":116.73236797029486,"lat":40.202713601507014,"alt":0,"heading":99.16812558423877,"systemTime":1643342542087,"receiverDataTime":1643342542087,"adasSatelliteTime":1643342542087,"satelliteTime":1643342542087,"speed":17.88194465637207} +{"lon":116.73238449634465,"lat":40.20271143489025,"alt":0,"heading":99.10271969274673,"systemTime":1643342542140,"receiverDataTime":1643342542140,"adasSatelliteTime":1643342542140,"satelliteTime":1643342542140,"speed":17.80191993713379} +{"lon":116.73239273850363,"lat":40.20271036271613,"alt":0,"heading":99.07012603002742,"systemTime":1643342542192,"receiverDataTime":1643342542192,"adasSatelliteTime":1643342542192,"satelliteTime":1643342542192,"speed":17.775753021240234} +{"lon":116.73240304359871,"lat":40.202709030339726,"alt":0,"heading":99.03223214051219,"systemTime":1643342542242,"receiverDataTime":1643342542242,"adasSatelliteTime":1643342542242,"satelliteTime":1643342542242,"speed":17.792766571044922} +{"lon":116.73241338135112,"lat":40.202707685984585,"alt":0,"heading":98.99122368473543,"systemTime":1643342542297,"receiverDataTime":1643342542297,"adasSatelliteTime":1643342542297,"satelliteTime":1643342542297,"speed":17.848369598388672} +{"lon":116.73243206544512,"lat":40.20270526027322,"alt":0,"heading":98.91426111316774,"systemTime":1643342542347,"receiverDataTime":1643342542347,"adasSatelliteTime":1643342542347,"satelliteTime":1643342542347,"speed":17.932313919067383} +{"lon":116.73244247436004,"lat":40.202703915490545,"alt":0,"heading":98.8721325063671,"systemTime":1643342542397,"receiverDataTime":1643342542397,"adasSatelliteTime":1643342542397,"satelliteTime":1643342542397,"speed":17.9444637298584} +{"lon":116.73244455672315,"lat":40.202703647732434,"alt":0,"heading":98.8647285813068,"systemTime":1643342542448,"receiverDataTime":1643342542448,"adasSatelliteTime":1643342542448,"satelliteTime":1643342542448,"speed":17.942169189453125} +{"lon":116.73245912441685,"lat":40.20270177989319,"alt":0,"heading":98.81161703032079,"systemTime":1643342542497,"receiverDataTime":1643342542497,"adasSatelliteTime":1643342542497,"satelliteTime":1643342542497,"speed":17.90995216369629} +{"lon":116.73246535623561,"lat":40.20270098559775,"alt":0,"heading":98.79068933070387,"systemTime":1643342542549,"receiverDataTime":1643342542549,"adasSatelliteTime":1643342542549,"satelliteTime":1643342542549,"speed":17.88306427001953} +{"lon":116.73246950762224,"lat":40.202700459086586,"alt":0,"heading":98.77773929203752,"systemTime":1643342542597,"receiverDataTime":1643342542597,"adasSatelliteTime":1643342542597,"satelliteTime":1643342542597,"speed":17.876850128173828} +{"lon":116.73249444016817,"lat":40.20269731954043,"alt":0,"heading":98.68965717250103,"systemTime":1643342542648,"receiverDataTime":1643342542648,"adasSatelliteTime":1643342542648,"satelliteTime":1643342542648,"speed":17.933311462402344} +{"lon":116.73249860615611,"lat":40.20269680092829,"alt":0,"heading":98.67383845438329,"systemTime":1643342542699,"receiverDataTime":1643342542699,"adasSatelliteTime":1643342542699,"satelliteTime":1643342542699,"speed":17.94420051574707} +{"lon":116.73251318806338,"lat":40.202694990433194,"alt":0,"heading":98.61668343140862,"systemTime":1643342542749,"receiverDataTime":1643342542749,"adasSatelliteTime":1643342542749,"satelliteTime":1643342542749,"speed":17.922731399536133} +{"lon":116.73252565723782,"lat":40.20269344722156,"alt":0,"heading":98.56654984290073,"systemTime":1643342542799,"receiverDataTime":1643342542799,"adasSatelliteTime":1643342542799,"satelliteTime":1643342542799,"speed":17.8854923248291} +{"lon":116.73253603636475,"lat":40.202692168588776,"alt":0,"heading":98.52704402874137,"systemTime":1643342542849,"receiverDataTime":1643342542849,"adasSatelliteTime":1643342542849,"satelliteTime":1643342542849,"speed":17.875484466552734} +{"lon":116.73254641466212,"lat":40.20269089662448,"alt":0,"heading":98.48600825220794,"systemTime":1643342542902,"receiverDataTime":1643342542902,"adasSatelliteTime":1643342542902,"satelliteTime":1643342542902,"speed":17.877838134765625} +{"lon":116.73254641466212,"lat":40.20269089662448,"alt":0,"heading":98.48600825220794,"systemTime":1643342542959,"receiverDataTime":1643342542959,"adasSatelliteTime":1643342542959,"satelliteTime":1643342542959,"speed":17.877838134765625} +{"lon":116.73255471793914,"lat":40.202689879313716,"alt":0,"heading":98.45013609868703,"systemTime":1643342543009,"receiverDataTime":1643342543009,"adasSatelliteTime":1643342543009,"satelliteTime":1643342543009,"speed":17.878267288208008} +{"lon":116.7325775478536,"lat":40.20268708963997,"alt":0,"heading":98.34877609140403,"systemTime":1643342543060,"receiverDataTime":1643342543060,"adasSatelliteTime":1643342543060,"satelliteTime":1643342543060,"speed":17.88893699645996} +{"lon":116.73258585994752,"lat":40.20268607952935,"alt":0,"heading":98.3117291453459,"systemTime":1643342543113,"receiverDataTime":1643342543113,"adasSatelliteTime":1643342543113,"satelliteTime":1643342543113,"speed":17.902206420898438} +{"lon":116.73259417821181,"lat":40.20268507510887,"alt":0,"heading":98.27203208588978,"systemTime":1643342543164,"receiverDataTime":1643342543164,"adasSatelliteTime":1643342543164,"satelliteTime":1643342543164,"speed":17.90952491760254} +{"lon":116.73260457539546,"lat":40.20268383568113,"alt":0,"heading":98.22769049779805,"systemTime":1643342543214,"receiverDataTime":1643342543214,"adasSatelliteTime":1643342543214,"satelliteTime":1643342543214,"speed":17.890892028808594} +{"lon":116.73262121217549,"lat":40.20268185396734,"alt":0,"heading":98.16222996479264,"systemTime":1643342543266,"receiverDataTime":1643342543266,"adasSatelliteTime":1643342543266,"satelliteTime":1643342543266,"speed":17.892236709594727} +{"lon":116.73262537534531,"lat":40.20268135731433,"alt":0,"heading":98.14930724688298,"systemTime":1643342543317,"receiverDataTime":1643342543317,"adasSatelliteTime":1643342543317,"satelliteTime":1643342543317,"speed":17.903512954711914} +{"lon":116.73264415017123,"lat":40.202679146388,"alt":0,"heading":98.09275328055529,"systemTime":1643342543367,"receiverDataTime":1643342543367,"adasSatelliteTime":1643342543367,"satelliteTime":1643342543367,"speed":17.953216552734375} +{"lon":116.73265250729986,"lat":40.20267816927262,"alt":0,"heading":98.06597893900883,"systemTime":1643342543418,"receiverDataTime":1643342543418,"adasSatelliteTime":1643342543418,"satelliteTime":1643342543418,"speed":17.956832885742188} +{"lon":116.73265250729986,"lat":40.20267816927262,"alt":0,"heading":98.06597893900883,"systemTime":1643342543469,"receiverDataTime":1643342543469,"adasSatelliteTime":1643342543469,"satelliteTime":1643342543469,"speed":17.956832885742188} +{"lon":116.7326733992634,"lat":40.20267574383322,"alt":0,"heading":97.9972672359585,"systemTime":1643342543522,"receiverDataTime":1643342543522,"adasSatelliteTime":1643342543522,"satelliteTime":1643342543522,"speed":17.948511123657227} +{"lon":116.73268384576133,"lat":40.20267454178779,"alt":0,"heading":97.95628610093843,"systemTime":1643342543573,"receiverDataTime":1643342543573,"adasSatelliteTime":1643342543573,"satelliteTime":1643342543573,"speed":17.95637321472168} +{"lon":116.73269429251368,"lat":40.20267334738305,"alt":0,"heading":97.91497711683819,"systemTime":1643342543624,"receiverDataTime":1643342543624,"adasSatelliteTime":1643342543624,"satelliteTime":1643342543624,"speed":17.949377059936523} +{"lon":116.73270055792403,"lat":40.20267263362693,"alt":0,"heading":97.8901698697727,"systemTime":1643342543674,"receiverDataTime":1643342543674,"adasSatelliteTime":1643342543674,"satelliteTime":1643342543674,"speed":17.943639755249023} +{"lon":116.73270264589586,"lat":40.20267239626493,"alt":0,"heading":97.88232881260552,"systemTime":1643342543725,"receiverDataTime":1643342543725,"adasSatelliteTime":1643342543725,"satelliteTime":1643342543725,"speed":17.941295623779297} +{"lon":116.7327151654024,"lat":40.20267097647005,"alt":0,"heading":97.8368943942466,"systemTime":1643342543776,"receiverDataTime":1643342543776,"adasSatelliteTime":1643342543776,"satelliteTime":1643342543776,"speed":17.919002532958984} +{"lon":116.73273391452298,"lat":40.20266885212795,"alt":0,"heading":97.76282782288699,"systemTime":1643342543826,"receiverDataTime":1643342543826,"adasSatelliteTime":1643342543826,"satelliteTime":1643342543826,"speed":17.89432716369629} +{"lon":116.73274224443539,"lat":40.20266790729867,"alt":0,"heading":97.72761136752639,"systemTime":1643342543877,"receiverDataTime":1643342543877,"adasSatelliteTime":1643342543877,"satelliteTime":1643342543877,"speed":17.902132034301758} +{"lon":116.73275266602623,"lat":40.202666733301676,"alt":0,"heading":97.67988200560634,"systemTime":1643342543929,"receiverDataTime":1643342543929,"adasSatelliteTime":1643342543929,"satelliteTime":1643342543929,"speed":17.924449920654297} +{"lon":116.73276519326221,"lat":40.202665329722215,"alt":0,"heading":97.61526841605803,"systemTime":1643342543980,"receiverDataTime":1643342543980,"adasSatelliteTime":1643342543980,"satelliteTime":1643342543980,"speed":17.952037811279297} +{"lon":116.73277981608615,"lat":40.202663697108704,"alt":0,"heading":97.54300501463929,"systemTime":1643342544030,"receiverDataTime":1643342544030,"adasSatelliteTime":1643342544030,"satelliteTime":1643342544030,"speed":17.94208526611328} +{"lon":116.73279024655169,"lat":40.20266254505552,"alt":0,"heading":97.4960133131496,"systemTime":1643342544084,"receiverDataTime":1643342544084,"adasSatelliteTime":1643342544084,"satelliteTime":1643342544084,"speed":17.9090518951416} +{"lon":116.73280066194123,"lat":40.20266141193646,"alt":0,"heading":97.45292847986516,"systemTime":1643342544131,"receiverDataTime":1643342544131,"adasSatelliteTime":1643342544131,"satelliteTime":1643342544131,"speed":17.884748458862305} +{"lon":116.73281315834006,"lat":40.20266006378509,"alt":0,"heading":97.4023304384937,"systemTime":1643342544185,"receiverDataTime":1643342544185,"adasSatelliteTime":1643342544185,"satelliteTime":1643342544185,"speed":17.897783279418945} +{"lon":116.7328215035801,"lat":40.20265917115071,"alt":0,"heading":97.35766100132183,"systemTime":1643342544234,"receiverDataTime":1643342544234,"adasSatelliteTime":1643342544234,"satelliteTime":1643342544234,"speed":17.92230987548828} +{"lon":116.73282986250987,"lat":40.202658286518904,"alt":0,"heading":97.32708907459686,"systemTime":1643342544284,"receiverDataTime":1643342544284,"adasSatelliteTime":1643342544284,"satelliteTime":1643342544284,"speed":17.93699836730957} +{"lon":116.73284031174039,"lat":40.20265719211728,"alt":0,"heading":97.29359382690711,"systemTime":1643342544333,"receiverDataTime":1643342544333,"adasSatelliteTime":1643342544333,"satelliteTime":1643342544333,"speed":17.920101165771484} +{"lon":116.73285282426342,"lat":40.20265587892055,"alt":0,"heading":97.25550869209512,"systemTime":1643342544384,"receiverDataTime":1643342544384,"adasSatelliteTime":1643342544384,"satelliteTime":1643342544384,"speed":17.866418838500977} +{"lon":116.73286114501585,"lat":40.202655013997536,"alt":0,"heading":97.2311385771365,"systemTime":1643342544434,"receiverDataTime":1643342544434,"adasSatelliteTime":1643342544434,"satelliteTime":1643342544434,"speed":17.835548400878906} +{"lon":116.73286946497674,"lat":40.20265415986129,"alt":0,"heading":97.20802521698519,"systemTime":1643342544485,"receiverDataTime":1643342544485,"adasSatelliteTime":1643342544485,"satelliteTime":1643342544485,"speed":17.847370147705078} +{"lon":116.73287987605606,"lat":40.202653087415264,"alt":0,"heading":97.16097887398215,"systemTime":1643342544535,"receiverDataTime":1643342544535,"adasSatelliteTime":1643342544535,"satelliteTime":1643342544535,"speed":17.870079040527344} +{"lon":116.73289238103187,"lat":40.202651789664756,"alt":0,"heading":97.10723894559248,"systemTime":1643342544585,"receiverDataTime":1643342544585,"adasSatelliteTime":1643342544585,"satelliteTime":1643342544585,"speed":17.893163681030273} +{"lon":116.73290905047331,"lat":40.20265008271187,"alt":0,"heading":97.06150399891007,"systemTime":1643342544639,"receiverDataTime":1643342544639,"adasSatelliteTime":1643342544639,"satelliteTime":1643342544639,"speed":17.863693237304688} +{"lon":116.73291113284571,"lat":40.20264986987082,"alt":0,"heading":97.05623109287083,"systemTime":1643342544689,"receiverDataTime":1643342544689,"adasSatelliteTime":1643342544689,"satelliteTime":1643342544689,"speed":17.864459991455078} +{"lon":116.7329277835307,"lat":40.202648169330054,"alt":0,"heading":96.99790127735892,"systemTime":1643342544739,"receiverDataTime":1643342544739,"adasSatelliteTime":1643342544739,"satelliteTime":1643342544739,"speed":17.851099014282227} +{"lon":116.73294026415302,"lat":40.20264689824556,"alt":0,"heading":96.94825946247127,"systemTime":1643342544793,"receiverDataTime":1643342544793,"adasSatelliteTime":1643342544793,"satelliteTime":1643342544793,"speed":17.844833374023438} +{"lon":116.73294858336224,"lat":40.20264605282679,"alt":0,"heading":96.91317961089408,"systemTime":1643342544841,"receiverDataTime":1643342544841,"adasSatelliteTime":1643342544841,"satelliteTime":1643342544841,"speed":17.844919204711914} +{"lon":116.73295690368138,"lat":40.20264521096054,"alt":0,"heading":96.8779631555335,"systemTime":1643342544893,"receiverDataTime":1643342544893,"adasSatelliteTime":1643342544893,"satelliteTime":1643342544893,"speed":17.846162796020508} +{"lon":116.7329652242984,"lat":40.20264437210024,"alt":0,"heading":96.8438395304401,"systemTime":1643342544942,"receiverDataTime":1643342544942,"adasSatelliteTime":1643342544942,"satelliteTime":1643342544942,"speed":17.845291137695312} +{"lon":116.73296730440015,"lat":40.20264416293027,"alt":0,"heading":96.83558866192273,"systemTime":1643342544996,"receiverDataTime":1643342544996,"adasSatelliteTime":1643342544996,"satelliteTime":1643342544996,"speed":17.84515380859375} +{"lon":116.73298810416159,"lat":40.20264208948433,"alt":0,"heading":96.74903650476033,"systemTime":1643342545046,"receiverDataTime":1643342545046,"adasSatelliteTime":1643342545046,"satelliteTime":1643342545046,"speed":17.83824348449707} +{"lon":116.73299849756654,"lat":40.202641065387205,"alt":0,"heading":96.70521401104553,"systemTime":1643342545096,"receiverDataTime":1643342545096,"adasSatelliteTime":1643342545096,"satelliteTime":1643342545096,"speed":17.821996688842773} +{"lon":116.73300680657657,"lat":40.20264025119648,"alt":0,"heading":96.67374049935012,"systemTime":1643342545150,"receiverDataTime":1643342545150,"adasSatelliteTime":1643342545150,"satelliteTime":1643342545150,"speed":17.811397552490234} +{"lon":116.73302549665053,"lat":40.2026384480129,"alt":0,"heading":96.60773355121111,"systemTime":1643342545201,"receiverDataTime":1643342545201,"adasSatelliteTime":1643342545201,"satelliteTime":1643342545201,"speed":17.81100845336914} +{"lon":116.73302964748257,"lat":40.20263804558569,"alt":0,"heading":96.5892373989387,"systemTime":1643342545253,"receiverDataTime":1643342545253,"adasSatelliteTime":1643342545253,"satelliteTime":1643342545253,"speed":17.809064865112305} +{"lon":116.73304624500564,"lat":40.20263644151662,"alt":0,"heading":96.53057973434665,"systemTime":1643342545306,"receiverDataTime":1643342545306,"adasSatelliteTime":1643342545306,"satelliteTime":1643342545306,"speed":17.793907165527344} +{"lon":116.73305660927032,"lat":40.2026354482962,"alt":0,"heading":96.49590969411966,"systemTime":1643342545355,"receiverDataTime":1643342545355,"adasSatelliteTime":1643342545355,"satelliteTime":1643342545355,"speed":17.77474021911621} +{"lon":116.73306696287375,"lat":40.202634455892515,"alt":0,"heading":96.45315270991539,"systemTime":1643342545406,"receiverDataTime":1643342545406,"adasSatelliteTime":1643342545406,"satelliteTime":1643342545406,"speed":17.759422302246094} +{"lon":116.7330793761253,"lat":40.20263326347384,"alt":0,"heading":96.399303498499,"systemTime":1643342545460,"receiverDataTime":1643342545460,"adasSatelliteTime":1643342545460,"satelliteTime":1643342545460,"speed":17.74993896484375} +{"lon":116.7330793761253,"lat":40.20263326347384,"alt":0,"heading":96.399303498499,"systemTime":1643342545506,"receiverDataTime":1643342545506,"adasSatelliteTime":1643342545506,"satelliteTime":1643342545506,"speed":17.74993896484375} +{"lon":116.73309800163804,"lat":40.20263149678074,"alt":0,"heading":96.33873338093933,"systemTime":1643342545555,"receiverDataTime":1643342545555,"adasSatelliteTime":1643342545555,"satelliteTime":1643342545555,"speed":17.76296043395996} +{"lon":116.73310835882948,"lat":40.20263052930895,"alt":0,"heading":96.3038447746589,"systemTime":1643342545606,"receiverDataTime":1643342545606,"adasSatelliteTime":1643342545606,"satelliteTime":1643342545606,"speed":17.766277313232422} +{"lon":116.73312079007924,"lat":40.202629380603575,"alt":0,"heading":96.26606016817038,"systemTime":1643342545666,"receiverDataTime":1643342545666,"adasSatelliteTime":1643342545666,"satelliteTime":1643342545666,"speed":17.767173767089844} +{"lon":116.73312493433983,"lat":40.202628997715344,"alt":0,"heading":96.25431224279797,"systemTime":1643342545709,"receiverDataTime":1643342545709,"adasSatelliteTime":1643342545709,"satelliteTime":1643342545709,"speed":17.76924705505371} +{"lon":116.73313115034175,"lat":40.20262842712567,"alt":0,"heading":96.24029669462111,"systemTime":1643342545760,"receiverDataTime":1643342545760,"adasSatelliteTime":1643342545760,"satelliteTime":1643342545760,"speed":17.76412582397461} +{"lon":116.73314565271863,"lat":40.202627110720975,"alt":0,"heading":96.21874061760055,"systemTime":1643342545810,"receiverDataTime":1643342545810,"adasSatelliteTime":1643342545810,"satelliteTime":1643342545810,"speed":17.75887680053711} +{"lon":116.73316014696482,"lat":40.2026257999491,"alt":0,"heading":96.20229352207915,"systemTime":1643342545873,"receiverDataTime":1643342545873,"adasSatelliteTime":1643342545873,"satelliteTime":1643342545873,"speed":17.745027542114258} +{"lon":116.733166358627,"lat":40.20262524045577,"alt":0,"heading":96.19344159691481,"systemTime":1643342545918,"receiverDataTime":1643342545918,"adasSatelliteTime":1643342545918,"satelliteTime":1643342545918,"speed":17.750362396240234} +{"lon":116.7331767143502,"lat":40.20262430384453,"alt":0,"heading":96.18008174689827,"systemTime":1643342545969,"receiverDataTime":1643342545969,"adasSatelliteTime":1643342545969,"satelliteTime":1643342545969,"speed":17.758319854736328} +{"lon":116.73318707981844,"lat":40.20262336724255,"alt":0,"heading":96.16612084023477,"systemTime":1643342546020,"receiverDataTime":1643342546020,"adasSatelliteTime":1643342546020,"satelliteTime":1643342546020,"speed":17.78080940246582} +{"lon":116.7331995294377,"lat":40.202622245230884,"alt":0,"heading":96.15464612242914,"systemTime":1643342546068,"receiverDataTime":1643342546068,"adasSatelliteTime":1643342546068,"satelliteTime":1643342546068,"speed":17.78472900390625} +{"lon":116.73321613563209,"lat":40.202620746014524,"alt":0,"heading":96.14084914030572,"systemTime":1643342546123,"receiverDataTime":1643342546123,"adasSatelliteTime":1643342546123,"satelliteTime":1643342546123,"speed":17.80168914794922} +{"lon":116.7332265246512,"lat":40.20261981498572,"alt":0,"heading":96.13426483794582,"systemTime":1643342546174,"receiverDataTime":1643342546174,"adasSatelliteTime":1643342546174,"satelliteTime":1643342546174,"speed":17.813161849975586} +{"lon":116.7332348404143,"lat":40.20261907028721,"alt":0,"heading":96.12065910111916,"systemTime":1643342546225,"receiverDataTime":1643342546225,"adasSatelliteTime":1643342546225,"satelliteTime":1643342546225,"speed":17.8148136138916} +{"lon":116.73324731202328,"lat":40.20261795085908,"alt":0,"heading":96.11617849702363,"systemTime":1643342546275,"receiverDataTime":1643342546275,"adasSatelliteTime":1643342546275,"satelliteTime":1643342546275,"speed":17.794330596923828} +{"lon":116.73324731202328,"lat":40.20261795085908,"alt":0,"heading":96.11617849702363,"systemTime":1643342546327,"receiverDataTime":1643342546327,"adasSatelliteTime":1643342546327,"satelliteTime":1643342546327,"speed":17.794330596923828} +{"lon":116.73326600599955,"lat":40.20261628386838,"alt":0,"heading":96.11361034589571,"systemTime":1643342546381,"receiverDataTime":1643342546381,"adasSatelliteTime":1643342546381,"satelliteTime":1643342546381,"speed":17.788654327392578} +{"lon":116.73327431902845,"lat":40.2026155487238,"alt":0,"heading":96.11268144016859,"systemTime":1643342546433,"receiverDataTime":1643342546433,"adasSatelliteTime":1643342546433,"satelliteTime":1643342546433,"speed":17.804235458374023} +{"lon":116.73328472491966,"lat":40.20261463141911,"alt":0,"heading":96.11044113812082,"systemTime":1643342546482,"receiverDataTime":1643342546482,"adasSatelliteTime":1643342546482,"satelliteTime":1643342546482,"speed":17.829755783081055} +{"lon":116.7332972302522,"lat":40.20261352668817,"alt":0,"heading":96.10604249629533,"systemTime":1643342546532,"receiverDataTime":1643342546532,"adasSatelliteTime":1643342546532,"satelliteTime":1643342546532,"speed":17.86042594909668} +{"lon":116.73330557650642,"lat":40.202612788109754,"alt":0,"heading":96.09708128810428,"systemTime":1643342546583,"receiverDataTime":1643342546583,"adasSatelliteTime":1643342546583,"satelliteTime":1643342546583,"speed":17.871990203857422} +{"lon":116.7333139209694,"lat":40.20261205200716,"alt":0,"heading":96.08954075926059,"systemTime":1643342546633,"receiverDataTime":1643342546633,"adasSatelliteTime":1643342546633,"satelliteTime":1643342546633,"speed":17.857887268066406} +{"lon":116.73332433843758,"lat":40.2026111279799,"alt":0,"heading":96.07809336221165,"systemTime":1643342546689,"receiverDataTime":1643342546689,"adasSatelliteTime":1643342546689,"satelliteTime":1643342546689,"speed":17.8328800201416} +{"lon":116.73334514814265,"lat":40.2026092684909,"alt":0,"heading":96.0610178892866,"systemTime":1643342546739,"receiverDataTime":1643342546739,"adasSatelliteTime":1643342546739,"satelliteTime":1643342546739,"speed":17.828489303588867} +{"lon":116.73335555849823,"lat":40.20260833429493,"alt":0,"heading":96.0489694355907,"systemTime":1643342546790,"receiverDataTime":1643342546790,"adasSatelliteTime":1643342546790,"satelliteTime":1643342546790,"speed":17.8422794342041} +{"lon":116.73336389519028,"lat":40.202607589464236,"alt":0,"heading":96.03957109529277,"systemTime":1643342546841,"receiverDataTime":1643342546841,"adasSatelliteTime":1643342546841,"satelliteTime":1643342546841,"speed":17.860960006713867} +{"lon":116.73337432804725,"lat":40.202606664619225,"alt":0,"heading":96.0286974341341,"systemTime":1643342546900,"receiverDataTime":1643342546900,"adasSatelliteTime":1643342546900,"satelliteTime":1643342546900,"speed":17.87715721130371} +{"lon":116.7333868500976,"lat":40.20260556394363,"alt":0,"heading":96.03219449098916,"systemTime":1643342546951,"receiverDataTime":1643342546951,"adasSatelliteTime":1643342546951,"satelliteTime":1643342546951,"speed":17.875192642211914} +{"lon":116.73339728448022,"lat":40.202604654815154,"alt":0,"heading":96.05172883201539,"systemTime":1643342547002,"receiverDataTime":1643342547002,"adasSatelliteTime":1643342547002,"satelliteTime":1643342547002,"speed":17.86223793029785} +{"lon":116.73340979856562,"lat":40.202603571351,"alt":0,"heading":96.0989664203152,"systemTime":1643342547052,"receiverDataTime":1643342547052,"adasSatelliteTime":1643342547052,"satelliteTime":1643342547052,"speed":17.863948822021484} +{"lon":116.73341188476257,"lat":40.202603390936915,"alt":0,"heading":96.10866528893662,"systemTime":1643342547103,"receiverDataTime":1643342547103,"adasSatelliteTime":1643342547103,"satelliteTime":1643342547103,"speed":17.866317749023438} +{"lon":116.73342649321233,"lat":40.20260212440043,"alt":0,"heading":96.17696718063674,"systemTime":1643342547153,"receiverDataTime":1643342547153,"adasSatelliteTime":1643342547153,"satelliteTime":1643342547153,"speed":17.877756118774414} +{"lon":116.73343693977787,"lat":40.2026012069268,"alt":0,"heading":96.21964220257098,"systemTime":1643342547203,"receiverDataTime":1643342547203,"adasSatelliteTime":1643342547203,"satelliteTime":1643342547203,"speed":17.908010482788086} +{"lon":116.7334453084194,"lat":40.20260045881316,"alt":0,"heading":96.24250967591219,"systemTime":1643342547253,"receiverDataTime":1643342547253,"adasSatelliteTime":1643342547253,"satelliteTime":1643342547253,"speed":17.928096771240234} +{"lon":116.7334578775488,"lat":40.202599319426525,"alt":0,"heading":96.27428371593109,"systemTime":1643342547305,"receiverDataTime":1643342547305,"adasSatelliteTime":1643342547305,"satelliteTime":1643342547305,"speed":17.944164276123047} +{"lon":116.7334683513252,"lat":40.20259836020281,"alt":0,"heading":96.30226017077146,"systemTime":1643342547358,"receiverDataTime":1643342547358,"adasSatelliteTime":1643342547358,"satelliteTime":1643342547358,"speed":17.93619728088379} +{"lon":116.73347881826247,"lat":40.20259739619739,"alt":0,"heading":96.32761383297054,"systemTime":1643342547408,"receiverDataTime":1643342547408,"adasSatelliteTime":1643342547408,"satelliteTime":1643342547408,"speed":17.927017211914062} +{"lon":116.73349137755729,"lat":40.202596236516506,"alt":0,"heading":96.36870425101735,"systemTime":1643342547459,"receiverDataTime":1643342547459,"adasSatelliteTime":1643342547459,"satelliteTime":1643342547459,"speed":17.93178939819336} +{"lon":116.73349975527448,"lat":40.20259546237831,"alt":0,"heading":96.39586108315731,"systemTime":1643342547509,"receiverDataTime":1643342547509,"adasSatelliteTime":1643342547509,"satelliteTime":1643342547509,"speed":17.94493865966797} +{"lon":116.73351443157213,"lat":40.202594102993814,"alt":0,"heading":96.44757927555266,"systemTime":1643342547561,"receiverDataTime":1643342547561,"adasSatelliteTime":1643342547561,"satelliteTime":1643342547561,"speed":17.969566345214844} +{"lon":116.73352702049075,"lat":40.20259292811378,"alt":0,"heading":96.49377867509861,"systemTime":1643342547613,"receiverDataTime":1643342547613,"adasSatelliteTime":1643342547613,"satelliteTime":1643342547613,"speed":17.976787567138672} +{"lon":116.73353541077499,"lat":40.20259213817775,"alt":0,"heading":96.52358562063655,"systemTime":1643342547660,"receiverDataTime":1643342547660,"adasSatelliteTime":1643342547660,"satelliteTime":1643342547660,"speed":17.975751876831055} +{"lon":116.73353541077499,"lat":40.20259213817775,"alt":0,"heading":96.52358562063655,"systemTime":1643342547711,"receiverDataTime":1643342547711,"adasSatelliteTime":1643342547711,"satelliteTime":1643342547711,"speed":17.975751876831055} +{"lon":116.7335584942647,"lat":40.20258993653538,"alt":0,"heading":96.58904615364196,"systemTime":1643342547761,"receiverDataTime":1643342547761,"adasSatelliteTime":1643342547761,"satelliteTime":1643342547761,"speed":18.001266479492188} +{"lon":116.73356689711567,"lat":40.20258913097146,"alt":0,"heading":96.60874441920826,"systemTime":1643342547821,"receiverDataTime":1643342547821,"adasSatelliteTime":1643342547821,"satelliteTime":1643342547821,"speed":18.013185501098633} +{"lon":116.7335795062618,"lat":40.20258791927066,"alt":0,"heading":96.64144736495429,"systemTime":1643342547872,"receiverDataTime":1643342547872,"adasSatelliteTime":1643342547872,"satelliteTime":1643342547872,"speed":18.02224349975586} +{"lon":116.73358791818843,"lat":40.202587113684764,"alt":0,"heading":96.66196525322101,"systemTime":1643342547922,"receiverDataTime":1643342547922,"adasSatelliteTime":1643342547922,"satelliteTime":1643342547922,"speed":18.035499572753906} +{"lon":116.73359212709364,"lat":40.20258671278414,"alt":0,"heading":96.67469672583391,"systemTime":1643342547974,"receiverDataTime":1643342547974,"adasSatelliteTime":1643342547974,"satelliteTime":1643342547974,"speed":18.044281005859375} +{"lon":116.73359633816844,"lat":40.2025863118065,"alt":0,"heading":96.68994170806138,"systemTime":1643342548025,"receiverDataTime":1643342548025,"adasSatelliteTime":1643342548025,"satelliteTime":1643342548025,"speed":18.054105758666992} +{"lon":116.73361740931807,"lat":40.20258429828182,"alt":0,"heading":96.75892661867852,"systemTime":1643342548076,"receiverDataTime":1643342548076,"adasSatelliteTime":1643342548076,"satelliteTime":1643342548076,"speed":18.067455291748047} +{"lon":116.73362794034853,"lat":40.20258328847403,"alt":0,"heading":96.79922473478159,"systemTime":1643342548125,"receiverDataTime":1643342548125,"adasSatelliteTime":1643342548125,"satelliteTime":1643342548125,"speed":18.05474090576172} +{"lon":116.73363636099732,"lat":40.2025824753002,"alt":0,"heading":96.82501552908755,"systemTime":1643342548176,"receiverDataTime":1643342548176,"adasSatelliteTime":1643342548176,"satelliteTime":1643342548176,"speed":18.054203033447266} +{"lon":116.73364689316172,"lat":40.20258144752912,"alt":0,"heading":96.85222700274089,"systemTime":1643342548227,"receiverDataTime":1643342548227,"adasSatelliteTime":1643342548227,"satelliteTime":1643342548227,"speed":18.07901382446289} +{"lon":116.73365954731408,"lat":40.202580189238546,"alt":0,"heading":96.86318262616959,"systemTime":1643342548277,"receiverDataTime":1643342548277,"adasSatelliteTime":1643342548277,"satelliteTime":1643342548277,"speed":18.102447509765625} +{"lon":116.7336700970622,"lat":40.20257912263772,"alt":0,"heading":96.86520436216391,"systemTime":1643342548328,"receiverDataTime":1643342548328,"adasSatelliteTime":1643342548328,"satelliteTime":1643342548328,"speed":18.104650497436523} +{"lon":116.73367853350081,"lat":40.202578263312716,"alt":0,"heading":96.85424873873521,"systemTime":1643342548378,"receiverDataTime":1643342548378,"adasSatelliteTime":1643342548378,"satelliteTime":1643342548378,"speed":18.096881866455078} +{"lon":116.73369329603037,"lat":40.20257676485823,"alt":0,"heading":96.82170971752927,"systemTime":1643342548428,"receiverDataTime":1643342548428,"adasSatelliteTime":1643342548428,"satelliteTime":1643342548428,"speed":18.101701736450195} +{"lon":116.73371018788461,"lat":40.20257506369059,"alt":0,"heading":96.7785156012181,"systemTime":1643342548484,"receiverDataTime":1643342548484,"adasSatelliteTime":1643342548484,"satelliteTime":1643342548484,"speed":18.12957763671875} +{"lon":116.73371864436935,"lat":40.20257422418012,"alt":0,"heading":96.76225975099348,"systemTime":1643342548535,"receiverDataTime":1643342548535,"adasSatelliteTime":1643342548535,"satelliteTime":1643342548535,"speed":18.137420654296875} +{"lon":116.73372922024866,"lat":40.20257318905242,"alt":0,"heading":96.74384556099112,"systemTime":1643342548592,"receiverDataTime":1643342548592,"adasSatelliteTime":1643342548592,"satelliteTime":1643342548592,"speed":18.14651870727539} +{"lon":116.73373556877002,"lat":40.202572570848226,"alt":0,"heading":96.73515756036687,"systemTime":1643342548647,"receiverDataTime":1643342548647,"adasSatelliteTime":1643342548647,"satelliteTime":1643342548647,"speed":18.149829864501953} +{"lon":116.7337440348697,"lat":40.20257175161959,"alt":0,"heading":96.72138789900012,"systemTime":1643342548702,"receiverDataTime":1643342548702,"adasSatelliteTime":1643342548702,"satelliteTime":1643342548702,"speed":18.150991439819336} +{"lon":116.73376097621563,"lat":40.20257012653993,"alt":0,"heading":96.69606155755771,"systemTime":1643342548746,"receiverDataTime":1643342548746,"adasSatelliteTime":1643342548746,"satelliteTime":1643342548746,"speed":18.157310485839844} +{"lon":116.73376732762878,"lat":40.20256951643247,"alt":0,"heading":96.68423166991525,"systemTime":1643342548796,"receiverDataTime":1643342548796,"adasSatelliteTime":1643342548796,"satelliteTime":1643342548796,"speed":18.15489387512207} +{"lon":116.73377368220943,"lat":40.20256890850875,"alt":0,"heading":96.67330336724324,"systemTime":1643342548847,"receiverDataTime":1643342548847,"adasSatelliteTime":1643342548847,"satelliteTime":1643342548847,"speed":18.168785095214844} +{"lon":116.73378428376596,"lat":40.20256789517816,"alt":0,"heading":96.65688359247852,"systemTime":1643342548896,"receiverDataTime":1643342548896,"adasSatelliteTime":1643342548896,"satelliteTime":1643342548896,"speed":18.193058013916016} +{"lon":116.73379702975883,"lat":40.2025666778051,"alt":0,"heading":96.63439860973084,"systemTime":1643342548947,"receiverDataTime":1643342548947,"adasSatelliteTime":1643342548947,"satelliteTime":1643342548947,"speed":18.235458374023438} +{"lon":116.73381404757396,"lat":40.202565060816156,"alt":0,"heading":96.59877234302004,"systemTime":1643342548998,"receiverDataTime":1643342548998,"adasSatelliteTime":1643342548998,"satelliteTime":1643342548998,"speed":18.234973907470703} +{"lon":116.73383103965548,"lat":40.20256343983817,"alt":0,"heading":96.56443015187322,"systemTime":1643342549053,"receiverDataTime":1643342549053,"adasSatelliteTime":1643342549053,"satelliteTime":1643342549053,"speed":18.19171714782715} +{"lon":116.73383952289184,"lat":40.20256262780948,"alt":0,"heading":96.550359962183,"systemTime":1643342549100,"receiverDataTime":1643342549100,"adasSatelliteTime":1643342549100,"satelliteTime":1643342549100,"speed":18.186521530151367} +{"lon":116.73385013255294,"lat":40.2025616204404,"alt":0,"heading":96.53030652677984,"systemTime":1643342549152,"receiverDataTime":1643342549152,"adasSatelliteTime":1643342549152,"satelliteTime":1643342549152,"speed":18.205604553222656} +{"lon":116.73386288673473,"lat":40.20256041268614,"alt":0,"heading":96.49593701487633,"systemTime":1643342549204,"receiverDataTime":1643342549204,"adasSatelliteTime":1643342549204,"satelliteTime":1643342549204,"speed":18.247093200683594} +{"lon":116.73387141573838,"lat":40.2025595901979,"alt":0,"heading":96.46246908794328,"systemTime":1643342549256,"receiverDataTime":1643342549256,"adasSatelliteTime":1643342549256,"satelliteTime":1643342549256,"speed":18.27579116821289} +{"lon":116.73388208895861,"lat":40.20255856395343,"alt":0,"heading":96.42870063268673,"systemTime":1643342549304,"receiverDataTime":1643342549304,"adasSatelliteTime":1643342549304,"satelliteTime":1643342549304,"speed":18.290279388427734} +{"lon":116.73389276873321,"lat":40.20255755049524,"alt":0,"heading":96.40315572519089,"systemTime":1643342549355,"receiverDataTime":1643342549355,"adasSatelliteTime":1643342549355,"satelliteTime":1643342549355,"speed":18.299280166625977} +{"lon":116.73390559199579,"lat":40.20255633618066,"alt":0,"heading":96.38023361033632,"systemTime":1643342549440,"receiverDataTime":1643342549440,"adasSatelliteTime":1643342549440,"satelliteTime":1643342549440,"speed":18.305429458618164} +{"lon":116.73392271172054,"lat":40.20255472665539,"alt":0,"heading":96.35583617462103,"systemTime":1643342549485,"receiverDataTime":1643342549485,"adasSatelliteTime":1643342549485,"satelliteTime":1643342549485,"speed":18.331764221191406} +{"lon":116.73392699395478,"lat":40.20255432928828,"alt":0,"heading":96.35053594782511,"systemTime":1643342549536,"receiverDataTime":1643342549536,"adasSatelliteTime":1643342549536,"satelliteTime":1643342549536,"speed":18.329349517822266} +{"lon":116.73394412279785,"lat":40.20255274941744,"alt":0,"heading":96.32173987028433,"systemTime":1643342549586,"receiverDataTime":1643342549586,"adasSatelliteTime":1643342549586,"satelliteTime":1643342549586,"speed":18.331552505493164} +{"lon":116.73395697037716,"lat":40.20255156594393,"alt":0,"heading":96.29441911360428,"systemTime":1643342549637,"receiverDataTime":1643342549637,"adasSatelliteTime":1643342549637,"satelliteTime":1643342549637,"speed":18.340723037719727} +{"lon":116.73396339938853,"lat":40.202550980571964,"alt":0,"heading":96.28286243352862,"systemTime":1643342549687,"receiverDataTime":1643342549687,"adasSatelliteTime":1643342549687,"satelliteTime":1643342549687,"speed":18.35308837890625} +{"lon":116.73397412098993,"lat":40.202550007476894,"alt":0,"heading":96.2615249225615,"systemTime":1643342549745,"receiverDataTime":1643342549745,"adasSatelliteTime":1643342549745,"satelliteTime":1643342549745,"speed":18.364351272583008} +{"lon":116.73398698902454,"lat":40.20254884176922,"alt":0,"heading":96.23548824144541,"systemTime":1643342549798,"receiverDataTime":1643342549798,"adasSatelliteTime":1643342549798,"satelliteTime":1643342549798,"speed":18.36705780029297} +{"lon":116.73399342503312,"lat":40.20254826024254,"alt":0,"heading":96.2224835612657,"systemTime":1643342549847,"receiverDataTime":1643342549847,"adasSatelliteTime":1643342549847,"satelliteTime":1643342549847,"speed":18.373106002807617} +{"lon":116.73400415602501,"lat":40.202547293711554,"alt":0,"heading":96.20270333342935,"systemTime":1643342549897,"receiverDataTime":1643342549897,"adasSatelliteTime":1643342549897,"satelliteTime":1643342549897,"speed":18.383588790893555} +{"lon":116.73401274651812,"lat":40.202546516045885,"alt":0,"heading":96.186338200178,"systemTime":1643342549947,"receiverDataTime":1643342549947,"adasSatelliteTime":1643342549947,"satelliteTime":1643342549947,"speed":18.397151947021484} +{"lon":116.73401704319208,"lat":40.20254612668723,"alt":0,"heading":96.1745629540489,"systemTime":1643342549996,"receiverDataTime":1643342549996,"adasSatelliteTime":1643342549996,"satelliteTime":1643342549996,"speed":18.399234771728516} +{"lon":116.73404280324219,"lat":40.20254379856866,"alt":0,"heading":96.10893849650341,"systemTime":1643342550047,"receiverDataTime":1643342550047,"adasSatelliteTime":1643342550047,"satelliteTime":1643342550047,"speed":18.36553192138672} +{"lon":116.73405566210637,"lat":40.20254264071939,"alt":0,"heading":96.07115389001491,"systemTime":1643342550099,"receiverDataTime":1643342550099,"adasSatelliteTime":1643342550099,"satelliteTime":1643342550099,"speed":18.346086502075195} +{"lon":116.73406422765075,"lat":40.20254187143255,"alt":0,"heading":96.04601879386927,"systemTime":1643342550148,"receiverDataTime":1643342550148,"adasSatelliteTime":1643342550148,"satelliteTime":1643342550148,"speed":18.334857940673828} +{"lon":116.73407278769997,"lat":40.2025411087362,"alt":0,"heading":96.02287811296125,"systemTime":1643342550199,"receiverDataTime":1643342550199,"adasSatelliteTime":1643342550199,"satelliteTime":1643342550199,"speed":18.319459915161133} +{"lon":116.7340834752246,"lat":40.20254014956943,"alt":0,"heading":95.99443720525733,"systemTime":1643342550249,"receiverDataTime":1643342550249,"adasSatelliteTime":1643342550249,"satelliteTime":1643342550249,"speed":18.28566551208496} +{"lon":116.73409628297154,"lat":40.2025390043416,"alt":0,"heading":95.96301833507526,"systemTime":1643342550300,"receiverDataTime":1643342550300,"adasSatelliteTime":1643342550300,"satelliteTime":1643342550300,"speed":18.264493942260742} +{"lon":116.73410268370442,"lat":40.20253843151588,"alt":0,"heading":95.94810120192795,"systemTime":1643342550351,"receiverDataTime":1643342550351,"adasSatelliteTime":1643342550351,"satelliteTime":1643342550351,"speed":18.26363754272461} +{"lon":116.7341154902618,"lat":40.20253728433499,"alt":0,"heading":95.9127208220273,"systemTime":1643342550400,"receiverDataTime":1643342550400,"adasSatelliteTime":1643342550400,"satelliteTime":1643342550400,"speed":18.282058715820312} +{"lon":116.73412830568041,"lat":40.202536141280355,"alt":0,"heading":95.882859234976,"systemTime":1643342550455,"receiverDataTime":1643342550455,"adasSatelliteTime":1643342550455,"satelliteTime":1643342550455,"speed":18.271163940429688} +{"lon":116.7341347043408,"lat":40.20253557100965,"alt":0,"heading":95.86753229047848,"systemTime":1643342550501,"receiverDataTime":1643342550501,"adasSatelliteTime":1643342550501,"satelliteTime":1643342550501,"speed":18.242725372314453} +{"lon":116.7341432184357,"lat":40.202534815816904,"alt":0,"heading":95.84941862879961,"systemTime":1643342550553,"receiverDataTime":1643342550553,"adasSatelliteTime":1643342550553,"satelliteTime":1643342550553,"speed":18.19563865661621} +{"lon":116.73415593858951,"lat":40.20253369253665,"alt":0,"heading":95.82294481557665,"systemTime":1643342550604,"receiverDataTime":1643342550604,"adasSatelliteTime":1643342550604,"satelliteTime":1643342550604,"speed":18.104291915893555} +{"lon":116.73416860295858,"lat":40.20253258404071,"alt":0,"heading":95.79816488926784,"systemTime":1643342550654,"receiverDataTime":1643342550654,"adasSatelliteTime":1643342550654,"satelliteTime":1643342550654,"speed":18.039602279663086} +{"lon":116.73418754606453,"lat":40.20253093943971,"alt":0,"heading":95.76087205639956,"systemTime":1643342550731,"receiverDataTime":1643342550731,"adasSatelliteTime":1643342550731,"satelliteTime":1643342550731,"speed":17.997018814086914} +{"lon":116.73419595531503,"lat":40.20253021298984,"alt":0,"heading":95.74278571547737,"systemTime":1643342550781,"receiverDataTime":1643342550781,"adasSatelliteTime":1643342550781,"satelliteTime":1643342550781,"speed":17.991390228271484} +{"lon":116.73420226040422,"lat":40.20252967079463,"alt":0,"heading":95.73079190329483,"systemTime":1643342550835,"receiverDataTime":1643342550835,"adasSatelliteTime":1643342550835,"satelliteTime":1643342550835,"speed":17.98346519470215} +{"lon":116.73421486033415,"lat":40.20252859146016,"alt":0,"heading":95.70601197698602,"systemTime":1643342550885,"receiverDataTime":1643342550885,"adasSatelliteTime":1643342550885,"satelliteTime":1643342550885,"speed":17.956195831298828} +{"lon":116.73422742795837,"lat":40.20252751938913,"alt":0,"heading":95.68292593759138,"systemTime":1643342550938,"receiverDataTime":1643342550938,"adasSatelliteTime":1643342550938,"satelliteTime":1643342550938,"speed":17.89992332458496} +{"lon":116.73423578330816,"lat":40.202526817236105,"alt":0,"heading":95.66986661589831,"systemTime":1643342550986,"receiverDataTime":1643342550986,"adasSatelliteTime":1643342550986,"satelliteTime":1643342550986,"speed":17.854433059692383} +{"lon":116.73425452936694,"lat":40.20252525408786,"alt":0,"heading":95.63773740604258,"systemTime":1643342551036,"receiverDataTime":1643342551036,"adasSatelliteTime":1643342551036,"satelliteTime":1643342551036,"speed":17.82011604309082} +{"lon":116.73426286241877,"lat":40.20252456551872,"alt":0,"heading":95.62265634835519,"systemTime":1643342551086,"receiverDataTime":1643342551086,"adasSatelliteTime":1643342551086,"satelliteTime":1643342551086,"speed":17.829105377197266} +{"lon":116.73426702930402,"lat":40.20252422158174,"alt":0,"heading":95.61473332891798,"systemTime":1643342551138,"receiverDataTime":1643342551138,"adasSatelliteTime":1643342551138,"satelliteTime":1643342551138,"speed":17.82703971862793} +{"lon":116.73428368599983,"lat":40.202522860080705,"alt":0,"heading":95.58563672305372,"systemTime":1643342551192,"receiverDataTime":1643342551192,"adasSatelliteTime":1643342551192,"satelliteTime":1643342551192,"speed":17.798797607421875} +{"lon":116.73429408191254,"lat":40.20252201639611,"alt":0,"heading":95.56582917446069,"systemTime":1643342551242,"receiverDataTime":1643342551242,"adasSatelliteTime":1643342551242,"satelliteTime":1643342551242,"speed":17.779170989990234} +{"lon":116.73430656203507,"lat":40.20252100502053,"alt":0,"heading":95.54618555040773,"systemTime":1643342551293,"receiverDataTime":1643342551293,"adasSatelliteTime":1643342551293,"satelliteTime":1643342551293,"speed":17.800636291503906} +{"lon":116.7343128079509,"lat":40.20252049918276,"alt":0,"heading":95.53547581378915,"systemTime":1643342551349,"receiverDataTime":1643342551349,"adasSatelliteTime":1643342551349,"satelliteTime":1643342551349,"speed":17.808897018432617} +{"lon":116.73432322767201,"lat":40.20251965949256,"alt":0,"heading":95.51320939709491,"systemTime":1643342551400,"receiverDataTime":1643342551400,"adasSatelliteTime":1643342551400,"satelliteTime":1643342551400,"speed":17.8289794921875} +{"lon":116.73433573402343,"lat":40.20251864860065,"alt":0,"heading":95.49148939553426,"systemTime":1643342551450,"receiverDataTime":1643342551450,"adasSatelliteTime":1643342551450,"satelliteTime":1643342551450,"speed":17.816566467285156} +{"lon":116.73434406349416,"lat":40.20251797686973,"alt":0,"heading":95.4811621495092,"systemTime":1643342551501,"receiverDataTime":1643342551501,"adasSatelliteTime":1643342551501,"satelliteTime":1643342551501,"speed":17.79910659790039} +{"lon":116.73435446585053,"lat":40.202517137883724,"alt":0,"heading":95.4733484130987,"systemTime":1643342551552,"receiverDataTime":1643342551552,"adasSatelliteTime":1643342551552,"satelliteTime":1643342551552,"speed":17.788347244262695} +{"lon":116.73436694487415,"lat":40.2025161297134,"alt":0,"heading":95.46304848783033,"systemTime":1643342551602,"receiverDataTime":1643342551602,"adasSatelliteTime":1643342551602,"satelliteTime":1643342551602,"speed":17.793315887451172} +{"lon":116.73437526771501,"lat":40.202515455157126,"alt":0,"heading":95.45504350612308,"systemTime":1643342551652,"receiverDataTime":1643342551652,"adasSatelliteTime":1643342551652,"satelliteTime":1643342551652,"speed":17.800182342529297} +{"lon":116.73438566970646,"lat":40.20251461430243,"alt":0,"heading":95.44023565600249,"systemTime":1643342551704,"receiverDataTime":1643342551704,"adasSatelliteTime":1643342551704,"satelliteTime":1643342551704,"speed":17.790870666503906} +{"lon":116.734398148243,"lat":40.20251361003419,"alt":0,"heading":95.43184818370172,"systemTime":1643342551757,"receiverDataTime":1643342551757,"adasSatelliteTime":1643342551757,"satelliteTime":1643342551757,"speed":17.79244041442871} +{"lon":116.73440438857317,"lat":40.20251310513382,"alt":0,"heading":95.43026357981427,"systemTime":1643342551808,"receiverDataTime":1643342551808,"adasSatelliteTime":1643342551808,"satelliteTime":1643342551808,"speed":17.79672622680664} +{"lon":116.73442728430108,"lat":40.20251126448235,"alt":0,"heading":95.46990599775702,"systemTime":1643342551859,"receiverDataTime":1643342551859,"adasSatelliteTime":1643342551859,"satelliteTime":1643342551859,"speed":17.793119430541992} +{"lon":116.73442936407898,"lat":40.20251109871164,"alt":0,"heading":95.47812954551772,"systemTime":1643342551913,"receiverDataTime":1643342551913,"adasSatelliteTime":1643342551913,"satelliteTime":1643342551913,"speed":17.78866958618164} +{"lon":116.73444390384174,"lat":40.20250993845139,"alt":0,"heading":95.53719702145999,"systemTime":1643342551962,"receiverDataTime":1643342551962,"adasSatelliteTime":1643342551962,"satelliteTime":1643342551962,"speed":17.745534896850586} +{"lon":116.73445426808767,"lat":40.2025091012147,"alt":0,"heading":95.58998072336585,"systemTime":1643342552017,"receiverDataTime":1643342552017,"adasSatelliteTime":1643342552017,"satelliteTime":1643342552017,"speed":17.729129791259766} +{"lon":116.73446670290915,"lat":40.20250809925177,"alt":0,"heading":95.6568892564753,"systemTime":1643342552069,"receiverDataTime":1643342552069,"adasSatelliteTime":1643342552069,"satelliteTime":1643342552069,"speed":17.73282241821289} +{"lon":116.73446670290915,"lat":40.20250809925177,"alt":0,"heading":95.6568892564753,"systemTime":1643342552118,"receiverDataTime":1643342552118,"adasSatelliteTime":1643342552118,"satelliteTime":1643342552118,"speed":17.73282241821289} +{"lon":116.73448326621111,"lat":40.20250674844015,"alt":0,"heading":95.7502716028077,"systemTime":1643342552169,"receiverDataTime":1643342552169,"adasSatelliteTime":1643342552169,"satelliteTime":1643342552169,"speed":17.69422149658203} +{"lon":116.73449565135498,"lat":40.20250571499157,"alt":0,"heading":95.81761726802404,"systemTime":1643342552219,"receiverDataTime":1643342552219,"adasSatelliteTime":1643342552219,"satelliteTime":1643342552219,"speed":17.637584686279297} +{"lon":116.73450183280828,"lat":40.20250518711896,"alt":0,"heading":95.84316217551988,"systemTime":1643342552270,"receiverDataTime":1643342552270,"adasSatelliteTime":1643342552270,"satelliteTime":1643342552270,"speed":17.61114501953125} +{"lon":116.73450183280828,"lat":40.20250518711896,"alt":0,"heading":95.84316217551988,"systemTime":1643342552322,"receiverDataTime":1643342552322,"adasSatelliteTime":1643342552322,"satelliteTime":1643342552322,"speed":17.61114501953125} +{"lon":116.7345243972286,"lat":40.202503233327484,"alt":0,"heading":95.98288052518166,"systemTime":1643342552373,"receiverDataTime":1643342552373,"adasSatelliteTime":1643342552373,"satelliteTime":1643342552373,"speed":17.48434829711914} +{"lon":116.73454070040175,"lat":40.20250180119945,"alt":0,"heading":96.101288684633,"systemTime":1643342552422,"receiverDataTime":1643342552422,"adasSatelliteTime":1643342552422,"satelliteTime":1643342552422,"speed":17.39534568786621} +{"lon":116.73454070040175,"lat":40.20250180119945,"alt":0,"heading":96.101288684633,"systemTime":1643342552473,"receiverDataTime":1643342552473,"adasSatelliteTime":1643342552473,"satelliteTime":1643342552473,"speed":17.39534568786621} +{"lon":116.73455085158308,"lat":40.20250089734113,"alt":0,"heading":96.18346952072659,"systemTime":1643342552525,"receiverDataTime":1643342552525,"adasSatelliteTime":1643342552525,"satelliteTime":1643342552525,"speed":17.356843948364258} +{"lon":116.73456704657086,"lat":40.20249943496011,"alt":0,"heading":96.3317939087426,"systemTime":1643342552575,"receiverDataTime":1643342552575,"adasSatelliteTime":1643342552575,"satelliteTime":1643342552575,"speed":17.300390243530273} +{"lon":116.73456704657086,"lat":40.20249943496011,"alt":0,"heading":96.3317939087426,"systemTime":1643342552626,"receiverDataTime":1643342552626,"adasSatelliteTime":1643342552626,"satelliteTime":1643342552626,"speed":17.300390243530273} +{"lon":116.73459323762437,"lat":40.20249701688051,"alt":0,"heading":96.60456434343622,"systemTime":1643342552677,"receiverDataTime":1643342552677,"adasSatelliteTime":1643342552677,"satelliteTime":1643342552677,"speed":17.196758270263672} +{"lon":116.73460125454243,"lat":40.20249625502082,"alt":0,"heading":96.68671785877314,"systemTime":1643342552728,"receiverDataTime":1643342552728,"adasSatelliteTime":1643342552728,"satelliteTime":1643342552728,"speed":17.150615692138672} +{"lon":116.73460924294592,"lat":40.20249548122772,"alt":0,"heading":96.77723152565414,"systemTime":1643342552777,"receiverDataTime":1643342552777,"adasSatelliteTime":1643342552777,"satelliteTime":1643342552777,"speed":17.085969924926758} +{"lon":116.73461917552342,"lat":40.20249450529332,"alt":0,"heading":96.88941055258243,"systemTime":1643342552827,"receiverDataTime":1643342552827,"adasSatelliteTime":1643342552827,"satelliteTime":1643342552827,"speed":16.98786163330078} +{"lon":116.73462905631432,"lat":40.20249353061597,"alt":0,"heading":97.01145237267222,"systemTime":1643342552886,"receiverDataTime":1643342552886,"adasSatelliteTime":1643342552886,"satelliteTime":1643342552886,"speed":16.906742095947266} +{"lon":116.73463888831577,"lat":40.20249255343876,"alt":0,"heading":97.13527004194621,"systemTime":1643342552937,"receiverDataTime":1643342552937,"adasSatelliteTime":1643342552937,"satelliteTime":1643342552937,"speed":16.836753845214844} +{"lon":116.73464868805003,"lat":40.20249156180636,"alt":0,"heading":97.25302250323723,"systemTime":1643342552988,"receiverDataTime":1643342552988,"adasSatelliteTime":1643342552988,"satelliteTime":1643342552988,"speed":16.798927307128906} +{"lon":116.73466041958477,"lat":40.20249035424355,"alt":0,"heading":97.39203051322534,"systemTime":1643342553039,"receiverDataTime":1643342553039,"adasSatelliteTime":1643342553039,"satelliteTime":1643342553039,"speed":16.763957977294922} +{"lon":116.73466822825526,"lat":40.20248954748302,"alt":0,"heading":97.48404682172374,"systemTime":1643342553090,"receiverDataTime":1643342553090,"adasSatelliteTime":1643342553090,"satelliteTime":1643342553090,"speed":16.745771408081055} +{"lon":116.73467796311266,"lat":40.20248852718502,"alt":0,"heading":97.6024276604184,"systemTime":1643342553140,"receiverDataTime":1643342553140,"adasSatelliteTime":1643342553140,"satelliteTime":1643342553140,"speed":16.688636779785156} +{"lon":116.73468959496479,"lat":40.20248729414095,"alt":0,"heading":97.73258374524217,"systemTime":1643342553191,"receiverDataTime":1643342553191,"adasSatelliteTime":1643342553191,"satelliteTime":1643342553191,"speed":16.611438751220703} +{"lon":116.73469730432866,"lat":40.20248646638634,"alt":0,"heading":97.8258021670345,"systemTime":1643342553241,"receiverDataTime":1643342553241,"adasSatelliteTime":1643342553241,"satelliteTime":1643342553241,"speed":16.518966674804688} +{"lon":116.7347125722286,"lat":40.202484775260125,"alt":0,"heading":97.99546406601762,"systemTime":1643342553291,"receiverDataTime":1643342553291,"adasSatelliteTime":1643342553291,"satelliteTime":1643342553291,"speed":16.343482971191406} +{"lon":116.7347220318121,"lat":40.202483709055,"alt":0,"heading":98.0980808281079,"systemTime":1643342553340,"receiverDataTime":1643342553340,"adasSatelliteTime":1643342553340,"satelliteTime":1643342553340,"speed":16.24019432067871} +{"lon":116.73473144791527,"lat":40.202482638242856,"alt":0,"heading":98.19608038231924,"systemTime":1643342553392,"receiverDataTime":1643342553392,"adasSatelliteTime":1643342553392,"satelliteTime":1643342553392,"speed":16.196317672729492} +{"lon":116.73473896004221,"lat":40.202481765952115,"alt":0,"heading":98.26807057617117,"systemTime":1643342553443,"receiverDataTime":1643342553443,"adasSatelliteTime":1643342553443,"satelliteTime":1643342553443,"speed":16.16463851928711} +{"lon":116.73474832910522,"lat":40.20248065915944,"alt":0,"heading":98.34475994017207,"systemTime":1643342553493,"receiverDataTime":1643342553493,"adasSatelliteTime":1643342553493,"satelliteTime":1643342553493,"speed":16.12718963623047} +{"lon":116.73475953882304,"lat":40.20247932933589,"alt":0,"heading":98.43289670122192,"systemTime":1643342553547,"receiverDataTime":1643342553547,"adasSatelliteTime":1643342553547,"satelliteTime":1643342553547,"speed":16.072242736816406} +{"lon":116.73476698363794,"lat":40.20247844150048,"alt":0,"heading":98.4882485542557,"systemTime":1643342553594,"receiverDataTime":1643342553594,"adasSatelliteTime":1643342553594,"satelliteTime":1643342553594,"speed":16.011707305908203} +{"lon":116.73477440115849,"lat":40.202477552584035,"alt":0,"heading":98.54174259583525,"systemTime":1643342553645,"receiverDataTime":1643342553645,"adasSatelliteTime":1643342553645,"satelliteTime":1643342553645,"speed":15.957584381103516} +{"lon":116.73478363623134,"lat":40.20247643443451,"alt":0,"heading":98.60709384581392,"systemTime":1643342553694,"receiverDataTime":1643342553694,"adasSatelliteTime":1643342553694,"satelliteTime":1643342553694,"speed":15.890045166015625} +{"lon":116.73479466274817,"lat":40.2024750826555,"alt":0,"heading":98.68777204029011,"systemTime":1643342553746,"receiverDataTime":1643342553746,"adasSatelliteTime":1643342553746,"satelliteTime":1643342553746,"speed":15.80666446685791} +{"lon":116.73480015542263,"lat":40.202474408337764,"alt":0,"heading":98.73014653390086,"systemTime":1643342553795,"receiverDataTime":1643342553795,"adasSatelliteTime":1643342553795,"satelliteTime":1643342553795,"speed":15.772031784057617} +{"lon":116.73480928040352,"lat":40.20247328217637,"alt":0,"heading":98.80582502990461,"systemTime":1643342553846,"receiverDataTime":1643342553846,"adasSatelliteTime":1643342553846,"satelliteTime":1643342553846,"speed":15.70845890045166} +{"lon":116.73482017174943,"lat":40.20247191926359,"alt":0,"heading":98.89415303625121,"systemTime":1643342553896,"receiverDataTime":1643342553896,"adasSatelliteTime":1643342553896,"satelliteTime":1643342553896,"speed":15.61446762084961} +{"lon":116.73482739283541,"lat":40.202471003121076,"alt":0,"heading":98.94532481351295,"systemTime":1643342553947,"receiverDataTime":1643342553947,"adasSatelliteTime":1643342553947,"satelliteTime":1643342553947,"speed":15.548139572143555} +{"lon":116.73484172795551,"lat":40.20246915960413,"alt":0,"heading":99.03654882006764,"systemTime":1643342553997,"receiverDataTime":1643342553997,"adasSatelliteTime":1643342553997,"satelliteTime":1643342553997,"speed":15.403769493103027} +{"lon":116.73485063070616,"lat":40.20246800160629,"alt":0,"heading":99.07078172818774,"systemTime":1643342554047,"receiverDataTime":1643342554047,"adasSatelliteTime":1643342554047,"satelliteTime":1643342554047,"speed":15.35066032409668} +{"lon":116.73486127757286,"lat":40.20246659968985,"alt":0,"heading":99.0911083711577,"systemTime":1643342554102,"receiverDataTime":1643342554102,"adasSatelliteTime":1643342554102,"satelliteTime":1643342554102,"speed":15.30864143371582} +{"lon":116.73486836161419,"lat":40.202465663502615,"alt":0,"heading":99.0942502581759,"systemTime":1643342554153,"receiverDataTime":1643342554153,"adasSatelliteTime":1643342554153,"satelliteTime":1643342554153,"speed":15.283329963684082} +{"lon":116.7348754213115,"lat":40.202464743394835,"alt":0,"heading":99.10099848507588,"systemTime":1643342554204,"receiverDataTime":1643342554204,"adasSatelliteTime":1643342554204,"satelliteTime":1643342554204,"speed":15.202967643737793} +{"lon":116.73488245060034,"lat":40.20246383773656,"alt":0,"heading":99.12389327917377,"systemTime":1643342554258,"receiverDataTime":1643342554258,"adasSatelliteTime":1643342554258,"satelliteTime":1643342554258,"speed":15.121211051940918} +{"lon":116.7348911869146,"lat":40.20246270950625,"alt":0,"heading":99.14965675272305,"systemTime":1643342554307,"receiverDataTime":1643342554307,"adasSatelliteTime":1643342554307,"satelliteTime":1643342554307,"speed":15.006793975830078} +{"lon":116.73490158684871,"lat":40.202461362576656,"alt":0,"heading":99.16610384824445,"systemTime":1643342554357,"receiverDataTime":1643342554357,"adasSatelliteTime":1643342554357,"satelliteTime":1643342554357,"speed":14.894381523132324} +{"lon":116.73491194088884,"lat":40.202460031180195,"alt":0,"heading":99.17886264161403,"systemTime":1643342554412,"receiverDataTime":1643342554412,"adasSatelliteTime":1643342554412,"satelliteTime":1643342554412,"speed":14.848556518554688} +{"lon":116.73492398526166,"lat":40.202458476142965,"alt":0,"heading":99.16107682901531,"systemTime":1643342554462,"receiverDataTime":1643342554462,"adasSatelliteTime":1643342554462,"satelliteTime":1643342554462,"speed":14.804788589477539} +{"lon":116.73493256062277,"lat":40.20245735441334,"alt":0,"heading":99.12763622283893,"systemTime":1643342554511,"receiverDataTime":1643342554511,"adasSatelliteTime":1643342554511,"satelliteTime":1643342554511,"speed":14.766884803771973} +{"lon":116.73494111203884,"lat":40.20245623197468,"alt":0,"heading":99.08026203075572,"systemTime":1643342554562,"receiverDataTime":1643342554562,"adasSatelliteTime":1643342554562,"satelliteTime":1643342554562,"speed":14.72569751739502} +{"lon":116.73494793170076,"lat":40.20245533732243,"alt":0,"heading":99.03581115963728,"systemTime":1643342554613,"receiverDataTime":1643342554613,"adasSatelliteTime":1643342554613,"satelliteTime":1643342554613,"speed":14.677459716796875} +{"lon":116.7349547252966,"lat":40.20245444608142,"alt":0,"heading":98.98756270334032,"systemTime":1643342554663,"receiverDataTime":1643342554663,"adasSatelliteTime":1643342554663,"satelliteTime":1643342554663,"speed":14.618597030639648} +{"lon":116.73495980146834,"lat":40.202453780899404,"alt":0,"heading":98.94690941740039,"systemTime":1643342554713,"receiverDataTime":1643342554713,"adasSatelliteTime":1643342554713,"satelliteTime":1643342554713,"speed":14.567708969116211} +{"lon":116.73497323879847,"lat":40.2024520171777,"alt":0,"heading":98.82412993688024,"systemTime":1643342554764,"receiverDataTime":1643342554764,"adasSatelliteTime":1643342554764,"satelliteTime":1643342554764,"speed":14.409577369689941} +{"lon":116.73497824141508,"lat":40.20245136735063,"alt":0,"heading":98.77519846166628,"systemTime":1643342554820,"receiverDataTime":1643342554820,"adasSatelliteTime":1643342554820,"satelliteTime":1643342554820,"speed":14.356614112854004} +{"lon":116.73498488872542,"lat":40.20245051271986,"alt":0,"heading":98.70741566434307,"systemTime":1643342554870,"receiverDataTime":1643342554870,"adasSatelliteTime":1643342554870,"satelliteTime":1643342554870,"speed":14.302666664123535} +{"lon":116.73499316507728,"lat":40.20244946393894,"alt":0,"heading":98.61679271443533,"systemTime":1643342554920,"receiverDataTime":1643342554920,"adasSatelliteTime":1643342554920,"satelliteTime":1643342554920,"speed":14.2356538772583} +{"lon":116.73500798097491,"lat":40.202447632138835,"alt":0,"heading":98.43363436165228,"systemTime":1643342554971,"receiverDataTime":1643342554971,"adasSatelliteTime":1643342554971,"satelliteTime":1643342554971,"speed":14.134395599365234} +{"lon":116.73501453478329,"lat":40.202446836699664,"alt":0,"heading":98.34675435540971,"systemTime":1643342555020,"receiverDataTime":1643342555020,"adasSatelliteTime":1643342555020,"satelliteTime":1643342555020,"speed":14.08692741394043} +{"lon":116.73502270005706,"lat":40.202445862021996,"alt":0,"heading":98.23383766805107,"systemTime":1643342555072,"receiverDataTime":1643342555072,"adasSatelliteTime":1643342555072,"satelliteTime":1643342555072,"speed":14.030664443969727} +{"lon":116.73502921490726,"lat":40.20244509968764,"alt":0,"heading":98.14903403931619,"systemTime":1643342555123,"receiverDataTime":1643342555123,"adasSatelliteTime":1643342555123,"satelliteTime":1643342555123,"speed":13.996318817138672} +{"lon":116.7350373351979,"lat":40.20244415808495,"alt":0,"heading":98.04628067344251,"systemTime":1643342555173,"receiverDataTime":1643342555173,"adasSatelliteTime":1643342555173,"satelliteTime":1643342555173,"speed":13.941445350646973} +{"lon":116.73504702940453,"lat":40.20244304920146,"alt":0,"heading":97.9183922114232,"systemTime":1643342555223,"receiverDataTime":1643342555223,"adasSatelliteTime":1643342555223,"satelliteTime":1643342555223,"speed":13.853910446166992} +{"lon":116.73505347672244,"lat":40.202442317284714,"alt":0,"heading":97.83233182788103,"systemTime":1643342555274,"receiverDataTime":1643342555274,"adasSatelliteTime":1643342555274,"satelliteTime":1643342555274,"speed":13.820277214050293} +{"lon":116.73506630384394,"lat":40.20244086567297,"alt":0,"heading":97.663516872355,"systemTime":1643342555324,"receiverDataTime":1643342555324,"adasSatelliteTime":1643342555324,"satelliteTime":1643342555324,"speed":13.711275100708008} +{"lon":116.73507427668325,"lat":40.20243996873094,"alt":0,"heading":97.55297709082751,"systemTime":1643342555381,"receiverDataTime":1643342555381,"adasSatelliteTime":1643342555381,"satelliteTime":1643342555381,"speed":13.664259910583496} +{"lon":116.73507427668325,"lat":40.20243996873094,"alt":0,"heading":97.55297709082751,"systemTime":1643342555432,"receiverDataTime":1643342555432,"adasSatelliteTime":1643342555432,"satelliteTime":1643342555432,"speed":13.664259910583496} +{"lon":116.73508854923071,"lat":40.20243838968723,"alt":0,"heading":97.37205904009221,"systemTime":1643342555481,"receiverDataTime":1643342555481,"adasSatelliteTime":1643342555481,"satelliteTime":1643342555481,"speed":13.547043800354004} +{"lon":116.73509485695482,"lat":40.20243770918394,"alt":0,"heading":97.29444077036419,"systemTime":1643342555531,"receiverDataTime":1643342555531,"adasSatelliteTime":1643342555531,"satelliteTime":1643342555531,"speed":13.49853515625} +{"lon":116.73510114256797,"lat":40.20243703901636,"alt":0,"heading":97.22215004818878,"systemTime":1643342555583,"receiverDataTime":1643342555583,"adasSatelliteTime":1643342555583,"satelliteTime":1643342555583,"speed":13.451167106628418} +{"lon":116.73510740413727,"lat":40.20243637650103,"alt":0,"heading":97.14906702406964,"systemTime":1643342555632,"receiverDataTime":1643342555632,"adasSatelliteTime":1643342555632,"satelliteTime":1643342555632,"speed":13.398210525512695} +{"lon":116.73512452956945,"lat":40.202434597610015,"alt":0,"heading":96.94569131134334,"systemTime":1643342555684,"receiverDataTime":1643342555684,"adasSatelliteTime":1643342555684,"satelliteTime":1643342555684,"speed":13.305225372314453} +{"lon":116.7351307269787,"lat":40.2024339641077,"alt":0,"heading":96.87318202311448,"systemTime":1643342555732,"receiverDataTime":1643342555732,"adasSatelliteTime":1643342555732,"satelliteTime":1643342555732,"speed":13.257766723632812} +{"lon":116.73513689864053,"lat":40.20243334364554,"alt":0,"heading":96.79971650840183,"systemTime":1643342555785,"receiverDataTime":1643342555785,"adasSatelliteTime":1643342555785,"satelliteTime":1643342555785,"speed":13.195892333984375} +{"lon":116.73514457623511,"lat":40.20243258712311,"alt":0,"heading":96.70327423732125,"systemTime":1643342555834,"receiverDataTime":1643342555834,"adasSatelliteTime":1643342555834,"satelliteTime":1643342555834,"speed":13.122118949890137} +{"lon":116.73515373134128,"lat":40.20243168951653,"alt":0,"heading":96.59177822930995,"systemTime":1643342555885,"receiverDataTime":1643342555885,"adasSatelliteTime":1643342555885,"satelliteTime":1643342555885,"speed":13.035103797912598} +{"lon":116.73515677017086,"lat":40.20243139091271,"alt":0,"heading":96.55372041525465,"systemTime":1643342555935,"receiverDataTime":1643342555935,"adasSatelliteTime":1643342555935,"satelliteTime":1643342555935,"speed":13.010986328125} +{"lon":116.73516738127125,"lat":40.202430361168624,"alt":0,"heading":96.41588719780378,"systemTime":1643342555985,"receiverDataTime":1643342555985,"adasSatelliteTime":1643342555985,"satelliteTime":1643342555985,"speed":12.974910736083984} +{"lon":116.73517645418718,"lat":40.2024295098108,"alt":0,"heading":96.30788824664755,"systemTime":1643342556036,"receiverDataTime":1643342556036,"adasSatelliteTime":1643342556036,"satelliteTime":1643342556036,"speed":12.92908000946045} +{"lon":116.73518248521188,"lat":40.2024289556478,"alt":0,"heading":96.23983224175754,"systemTime":1643342556090,"receiverDataTime":1643342556090,"adasSatelliteTime":1643342556090,"satelliteTime":1643342556090,"speed":12.89465045928955} +{"lon":116.73518849605745,"lat":40.202428410386936,"alt":0,"heading":96.1723772935145,"systemTime":1643342556140,"receiverDataTime":1643342556140,"adasSatelliteTime":1643342556140,"satelliteTime":1643342556140,"speed":12.841690063476562} +{"lon":116.73519448191583,"lat":40.202427874206776,"alt":0,"heading":96.10489502451478,"systemTime":1643342556190,"receiverDataTime":1643342556190,"adasSatelliteTime":1643342556190,"satelliteTime":1643342556190,"speed":12.783713340759277} +{"lon":116.73520192284552,"lat":40.20242722034439,"alt":0,"heading":96.02621124527623,"systemTime":1643342556240,"receiverDataTime":1643342556240,"adasSatelliteTime":1643342556240,"satelliteTime":1643342556240,"speed":12.70064926147461} +{"lon":116.73521078880678,"lat":40.20242643227006,"alt":0,"heading":95.92698225701427,"systemTime":1643342556292,"receiverDataTime":1643342556292,"adasSatelliteTime":1643342556292,"satelliteTime":1643342556292,"speed":12.615639686584473} +{"lon":116.7352181326744,"lat":40.20242577898923,"alt":0,"heading":95.85515598770242,"systemTime":1643342556343,"receiverDataTime":1643342556343,"adasSatelliteTime":1643342556343,"satelliteTime":1643342556343,"speed":12.548730850219727} +{"lon":116.73522689620224,"lat":40.20242499853711,"alt":0,"heading":95.76805741540642,"systemTime":1643342556393,"receiverDataTime":1643342556393,"adasSatelliteTime":1643342556393,"satelliteTime":1643342556393,"speed":12.472099304199219} +{"lon":116.73523271286858,"lat":40.20242448656952,"alt":0,"heading":95.70980956216455,"systemTime":1643342556443,"receiverDataTime":1643342556443,"adasSatelliteTime":1643342556443,"satelliteTime":1643342556443,"speed":12.431957244873047} +{"lon":116.73523850958365,"lat":40.20242397528683,"alt":0,"heading":95.65538661485789,"systemTime":1643342556495,"receiverDataTime":1643342556495,"adasSatelliteTime":1643342556495,"satelliteTime":1643342556495,"speed":12.38829517364502} +{"lon":116.73525436914024,"lat":40.20242258575006,"alt":0,"heading":95.4967896223302,"systemTime":1643342556559,"receiverDataTime":1643342556559,"adasSatelliteTime":1643342556559,"satelliteTime":1643342556559,"speed":12.299586296081543} +{"lon":116.73526010692704,"lat":40.20242209374407,"alt":0,"heading":95.43835052379157,"systemTime":1643342556609,"receiverDataTime":1643342556609,"adasSatelliteTime":1643342556609,"satelliteTime":1643342556609,"speed":12.257497787475586} +{"lon":116.73526582422176,"lat":40.202421612784434,"alt":0,"heading":95.38138674611366,"systemTime":1643342556660,"receiverDataTime":1643342556660,"adasSatelliteTime":1643342556660,"satelliteTime":1643342556660,"speed":12.209346771240234} +{"lon":116.73527293611676,"lat":40.20242102536357,"alt":0,"heading":95.31349466576373,"systemTime":1643342556712,"receiverDataTime":1643342556712,"adasSatelliteTime":1643342556712,"satelliteTime":1643342556712,"speed":12.137142181396484} +{"lon":116.7352814210482,"lat":40.2024203328487,"alt":0,"heading":95.22716107465477,"systemTime":1643342556760,"receiverDataTime":1643342556760,"adasSatelliteTime":1643342556760,"satelliteTime":1643342556760,"speed":12.067935943603516} +{"lon":116.73528705245407,"lat":40.20241987149756,"alt":0,"heading":95.16842144779267,"systemTime":1643342556811,"receiverDataTime":1643342556811,"adasSatelliteTime":1643342556811,"satelliteTime":1643342556811,"speed":12.026068687438965} +{"lon":116.73529266402494,"lat":40.20241941840085,"alt":0,"heading":95.11050144363095,"systemTime":1643342556861,"receiverDataTime":1643342556861,"adasSatelliteTime":1643342556861,"satelliteTime":1643342556861,"speed":11.979921340942383} +{"lon":116.73529965009803,"lat":40.202418870576025,"alt":0,"heading":95.03493223065394,"systemTime":1643342556913,"receiverDataTime":1643342556913,"adasSatelliteTime":1643342556913,"satelliteTime":1643342556913,"speed":11.92145824432373} +{"lon":116.7353066052767,"lat":40.202418343603696,"alt":0,"heading":94.9697995467287,"systemTime":1643342556964,"receiverDataTime":1643342556964,"adasSatelliteTime":1643342556964,"satelliteTime":1643342556964,"speed":11.860823631286621} +{"lon":116.73531214060743,"lat":40.20241792688906,"alt":0,"heading":94.91338218418439,"systemTime":1643342557014,"receiverDataTime":1643342557014,"adasSatelliteTime":1643342557014,"satelliteTime":1643342557014,"speed":11.806551933288574} +{"lon":116.73532587782584,"lat":40.202416914849366,"alt":0,"heading":94.76746202275623,"systemTime":1643342557064,"receiverDataTime":1643342557064,"adasSatelliteTime":1643342557064,"satelliteTime":1643342557064,"speed":11.687372207641602} +{"lon":116.73533133419673,"lat":40.202416522053674,"alt":0,"heading":94.71033432053825,"systemTime":1643342557115,"receiverDataTime":1643342557115,"adasSatelliteTime":1643342557115,"satelliteTime":1643342557115,"speed":11.635218620300293} +{"lon":116.73533812063977,"lat":40.20241604235784,"alt":0,"heading":94.64585733477332,"systemTime":1643342557167,"receiverDataTime":1643342557167,"adasSatelliteTime":1643342557167,"satelliteTime":1643342557167,"speed":11.56635570526123} +{"lon":116.73534486961319,"lat":40.20241557262689,"alt":0,"heading":94.59269114227395,"systemTime":1643342557219,"receiverDataTime":1643342557219,"adasSatelliteTime":1643342557219,"satelliteTime":1643342557219,"speed":11.491358757019043} +{"lon":116.73535159192426,"lat":40.20241509480542,"alt":0,"heading":94.52411604300701,"systemTime":1643342557270,"receiverDataTime":1643342557270,"adasSatelliteTime":1643342557270,"satelliteTime":1643342557270,"speed":11.421072959899902} +{"lon":116.73535959934593,"lat":40.202414524251864,"alt":0,"heading":94.44570547133527,"systemTime":1643342557321,"receiverDataTime":1643342557321,"adasSatelliteTime":1643342557321,"satelliteTime":1643342557321,"speed":11.329373359680176} +{"lon":116.73536490338236,"lat":40.20241414967991,"alt":0,"heading":94.3945883355869,"systemTime":1643342557373,"receiverDataTime":1643342557373,"adasSatelliteTime":1643342557373,"satelliteTime":1643342557373,"speed":11.268049240112305} +{"lon":116.73537018057684,"lat":40.20241377845028,"alt":0,"heading":94.34426350178224,"systemTime":1643342557421,"receiverDataTime":1643342557421,"adasSatelliteTime":1643342557421,"satelliteTime":1643342557421,"speed":11.206698417663574} +{"lon":116.73537673938861,"lat":40.202413320177584,"alt":0,"heading":94.28861112042497,"systemTime":1643342557471,"receiverDataTime":1643342557471,"adasSatelliteTime":1643342557471,"satelliteTime":1643342557471,"speed":11.130793571472168} +{"lon":116.73538455417713,"lat":40.202412783417124,"alt":0,"heading":94.21959888905117,"systemTime":1643342557523,"receiverDataTime":1643342557523,"adasSatelliteTime":1643342557523,"satelliteTime":1643342557523,"speed":11.046648979187012} +{"lon":116.73538973075175,"lat":40.202412436647535,"alt":0,"heading":94.17318092345177,"systemTime":1643342557576,"receiverDataTime":1643342557576,"adasSatelliteTime":1643342557576,"satelliteTime":1643342557576,"speed":10.992908477783203} +{"lon":116.7353961653837,"lat":40.202412014605585,"alt":0,"heading":94.11550680610017,"systemTime":1643342557625,"receiverDataTime":1643342557625,"adasSatelliteTime":1643342557625,"satelliteTime":1643342557625,"speed":10.926582336425781} +{"lon":116.73540383319083,"lat":40.20241151914747,"alt":0,"heading":94.0469863483466,"systemTime":1643342557675,"receiverDataTime":1643342557675,"adasSatelliteTime":1643342557675,"satelliteTime":1643342557675,"speed":10.843311309814453} +{"lon":116.73540891209309,"lat":40.20241120162852,"alt":0,"heading":94.00354634522533,"systemTime":1643342557726,"receiverDataTime":1643342557726,"adasSatelliteTime":1643342557726,"satelliteTime":1643342557726,"speed":10.785801887512207} +{"lon":116.73541522128595,"lat":40.202410817648385,"alt":0,"heading":93.95100853012958,"systemTime":1643342557775,"receiverDataTime":1643342557775,"adasSatelliteTime":1643342557775,"satelliteTime":1643342557775,"speed":10.710421562194824} +{"lon":116.73542273193108,"lat":40.202410366492266,"alt":0,"heading":93.88997395970635,"systemTime":1643342557826,"receiverDataTime":1643342557826,"adasSatelliteTime":1643342557826,"satelliteTime":1643342557826,"speed":10.614930152893066} +{"lon":116.73542646160847,"lat":40.202410144196435,"alt":0,"heading":93.8600577311417,"systemTime":1643342557877,"receiverDataTime":1643342557877,"adasSatelliteTime":1643342557877,"satelliteTime":1643342557877,"speed":10.56710147857666} +{"lon":116.73543264051158,"lat":40.202409782400146,"alt":0,"heading":93.81626255818358,"systemTime":1643342557927,"receiverDataTime":1643342557927,"adasSatelliteTime":1643342557927,"satelliteTime":1643342557927,"speed":10.490017890930176} +{"lon":116.73543999888918,"lat":40.20240936557635,"alt":0,"heading":93.76897032837041,"systemTime":1643342557978,"receiverDataTime":1643342557978,"adasSatelliteTime":1643342557978,"satelliteTime":1643342557978,"speed":10.405243873596191} +{"lon":116.73544486946484,"lat":40.2024090941527,"alt":0,"heading":93.74733228907981,"systemTime":1643342558029,"receiverDataTime":1643342558029,"adasSatelliteTime":1643342558029,"satelliteTime":1643342558029,"speed":10.344132423400879} +{"lon":116.73545091739992,"lat":40.202408761726716,"alt":0,"heading":93.72990164631794,"systemTime":1643342558078,"receiverDataTime":1643342558078,"adasSatelliteTime":1643342558078,"satelliteTime":1643342558078,"speed":10.268327713012695} +{"lon":116.73545811673726,"lat":40.20240836956863,"alt":0,"heading":93.71686964538155,"systemTime":1643342558134,"receiverDataTime":1643342558134,"adasSatelliteTime":1643342558134,"satelliteTime":1643342558134,"speed":10.179787635803223} +{"lon":116.73546169342393,"lat":40.20240817682186,"alt":0,"heading":93.71211583371922,"systemTime":1643342558186,"receiverDataTime":1643342558186,"adasSatelliteTime":1643342558186,"satelliteTime":1643342558186,"speed":10.137897491455078} +{"lon":116.73547350772009,"lat":40.202407527293836,"alt":0,"heading":93.74771477967333,"systemTime":1643342558235,"receiverDataTime":1643342558235,"adasSatelliteTime":1643342558235,"satelliteTime":1643342558235,"speed":9.996912002563477} +{"lon":116.7354793520175,"lat":40.202407190804315,"alt":0,"heading":93.77877848001854,"systemTime":1643342558301,"receiverDataTime":1643342558301,"adasSatelliteTime":1643342558301,"satelliteTime":1643342558301,"speed":9.92572021484375} +{"lon":116.73548631343554,"lat":40.2024067822513,"alt":0,"heading":93.8342942575924,"systemTime":1643342558351,"receiverDataTime":1643342558351,"adasSatelliteTime":1643342558351,"satelliteTime":1643342558351,"speed":9.851219177246094} +{"lon":116.73548977368317,"lat":40.202406573545886,"alt":0,"heading":93.86696988258176,"systemTime":1643342558402,"receiverDataTime":1643342558402,"adasSatelliteTime":1643342558402,"satelliteTime":1643342558402,"speed":9.811996459960938} +{"lon":116.7354955110603,"lat":40.20240621919879,"alt":0,"heading":93.93046332110619,"systemTime":1643342558452,"receiverDataTime":1643342558452,"adasSatelliteTime":1643342558452,"satelliteTime":1643342558452,"speed":9.7493896484375} +{"lon":116.73550234479879,"lat":40.20240578661223,"alt":0,"heading":94.0179717047524,"systemTime":1643342558503,"receiverDataTime":1643342558503,"adasSatelliteTime":1643342558503,"satelliteTime":1643342558503,"speed":9.674060821533203} +{"lon":116.73550574226311,"lat":40.20240557080956,"alt":0,"heading":94.06712174601981,"systemTime":1643342558553,"receiverDataTime":1643342558553,"adasSatelliteTime":1643342558553,"satelliteTime":1643342558553,"speed":9.638869285583496} +{"lon":116.73551699016703,"lat":40.20240485058883,"alt":0,"heading":94.27038817571939,"systemTime":1643342558610,"receiverDataTime":1643342558610,"adasSatelliteTime":1643342558610,"satelliteTime":1643342558610,"speed":9.546063423156738} +{"lon":116.73552257306953,"lat":40.20240449413981,"alt":0,"heading":94.39365942985978,"systemTime":1643342558660,"receiverDataTime":1643342558660,"adasSatelliteTime":1643342558660,"satelliteTime":1643342558660,"speed":9.501437187194824} +{"lon":116.735523686513,"lat":40.20240442293526,"alt":0,"heading":94.41802954481838,"systemTime":1643342558710,"receiverDataTime":1643342558710,"adasSatelliteTime":1643342558710,"satelliteTime":1643342558710,"speed":9.49344539642334} +{"lon":116.7355314525067,"lat":40.20240391787486,"alt":0,"heading":94.61279921919046,"systemTime":1643342558764,"receiverDataTime":1643342558764,"adasSatelliteTime":1643342558764,"satelliteTime":1643342558764,"speed":9.441252708435059} +{"lon":116.73553806851257,"lat":40.2024034734344,"alt":0,"heading":94.81467229029936,"systemTime":1643342558811,"receiverDataTime":1643342558811,"adasSatelliteTime":1643342558811,"satelliteTime":1643342558811,"speed":9.391736030578613} +{"lon":116.7355446605934,"lat":40.20240303500205,"alt":0,"heading":95.04556000500247,"systemTime":1643342558861,"receiverDataTime":1643342558861,"adasSatelliteTime":1643342558861,"satelliteTime":1643342558861,"speed":9.354588508605957} +{"lon":116.73554794373752,"lat":40.20240281264813,"alt":0,"heading":95.1704158630303,"systemTime":1643342558914,"receiverDataTime":1643342558914,"adasSatelliteTime":1643342558914,"satelliteTime":1643342558914,"speed":9.331104278564453} +{"lon":116.73555339024435,"lat":40.20240243353494,"alt":0,"heading":95.4051558044253,"systemTime":1643342558972,"receiverDataTime":1643342558972,"adasSatelliteTime":1643342558972,"satelliteTime":1643342558972,"speed":9.275118827819824} +{"lon":116.73555987974889,"lat":40.20240195789945,"alt":0,"heading":95.71543763804064,"systemTime":1643342559021,"receiverDataTime":1643342559021,"adasSatelliteTime":1643342559021,"satelliteTime":1643342559021,"speed":9.210844039916992} +{"lon":116.73556417793591,"lat":40.20240161707712,"alt":0,"heading":95.93553365385513,"systemTime":1643342559070,"receiverDataTime":1643342559070,"adasSatelliteTime":1643342559070,"satelliteTime":1643342559070,"speed":9.167863845825195} +{"lon":116.73556952830606,"lat":40.20240117345376,"alt":0,"heading":96.22240159899567,"systemTime":1643342559120,"receiverDataTime":1643342559120,"adasSatelliteTime":1643342559120,"satelliteTime":1643342559120,"speed":9.1302490234375} +{"lon":116.73557803044761,"lat":40.20240043679694,"alt":0,"heading":96.7248303143418,"systemTime":1643342559170,"receiverDataTime":1643342559170,"adasSatelliteTime":1643342559170,"satelliteTime":1643342559170,"speed":9.076719284057617} +{"lon":116.73558014901832,"lat":40.20240024313016,"alt":0,"heading":96.85719938045665,"systemTime":1643342559220,"receiverDataTime":1643342559220,"adasSatelliteTime":1643342559220,"satelliteTime":1643342559220,"speed":9.070558547973633} +{"lon":116.73558014901832,"lat":40.20240024313016,"alt":0,"heading":96.85719938045665,"systemTime":1643342559270,"receiverDataTime":1643342559270,"adasSatelliteTime":1643342559270,"satelliteTime":1643342559270,"speed":9.070558547973633} +{"lon":116.73559283484056,"lat":40.20239895366171,"alt":0,"heading":97.6637900799218,"systemTime":1643342559321,"receiverDataTime":1643342559321,"adasSatelliteTime":1643342559321,"satelliteTime":1643342559321,"speed":9.03239917755127} +{"lon":116.73559493880848,"lat":40.202398725903414,"alt":0,"heading":97.80255220309978,"systemTime":1643342559373,"receiverDataTime":1643342559373,"adasSatelliteTime":1643342559373,"satelliteTime":1643342559373,"speed":9.014522552490234} +{"lon":116.73559912991082,"lat":40.20239825791095,"alt":0,"heading":98.08502150641483,"systemTime":1643342559425,"receiverDataTime":1643342559425,"adasSatelliteTime":1643342559425,"satelliteTime":1643342559425,"speed":8.96824836730957} +{"lon":116.7356105368482,"lat":40.2023968792242,"alt":0,"heading":98.93972405839354,"systemTime":1643342559486,"receiverDataTime":1643342559486,"adasSatelliteTime":1643342559486,"satelliteTime":1643342559486,"speed":8.859891891479492} +{"lon":116.73561362163213,"lat":40.20239648379994,"alt":0,"heading":99.18918988763909,"systemTime":1643342559526,"receiverDataTime":1643342559526,"adasSatelliteTime":1643342559526,"satelliteTime":1643342559526,"speed":8.840758323669434} +{"lon":116.73561874420233,"lat":40.20239581239368,"alt":0,"heading":99.62389044717538,"systemTime":1643342559579,"receiverDataTime":1643342559579,"adasSatelliteTime":1643342559579,"satelliteTime":1643342559579,"speed":8.812155723571777} +{"lon":116.73562486544768,"lat":40.20239498653118,"alt":0,"heading":100.18363811003627,"systemTime":1643342559629,"receiverDataTime":1643342559629,"adasSatelliteTime":1643342559629,"satelliteTime":1643342559629,"speed":8.783293724060059} +{"lon":116.73562892997279,"lat":40.20239441771678,"alt":0,"heading":100.57530847780147,"systemTime":1643342559681,"receiverDataTime":1643342559681,"adasSatelliteTime":1643342559681,"satelliteTime":1643342559681,"speed":8.764350891113281} +{"lon":116.73563298094003,"lat":40.20239382689016,"alt":0,"heading":100.98227846930752,"systemTime":1643342559732,"receiverDataTime":1643342559732,"adasSatelliteTime":1643342559732,"satelliteTime":1643342559732,"speed":8.745848655700684} +{"lon":116.73563701555288,"lat":40.20239321560015,"alt":0,"heading":101.3964338198204,"systemTime":1643342559780,"receiverDataTime":1643342559780,"adasSatelliteTime":1643342559780,"satelliteTime":1643342559780,"speed":8.722379684448242} +{"lon":116.7356410351367,"lat":40.202392582902334,"alt":0,"heading":101.81810237842032,"systemTime":1643342559831,"receiverDataTime":1643342559831,"adasSatelliteTime":1643342559831,"satelliteTime":1643342559831,"speed":8.705302238464355} +{"lon":116.7356510107216,"lat":40.20239091592291,"alt":0,"heading":102.91563181577132,"systemTime":1643342559882,"receiverDataTime":1643342559882,"adasSatelliteTime":1643342559882,"satelliteTime":1643342559882,"speed":8.645415306091309} +{"lon":116.73565695028424,"lat":40.20238986048089,"alt":0,"heading":103.60386899729849,"systemTime":1643342559932,"receiverDataTime":1643342559932,"adasSatelliteTime":1643342559932,"satelliteTime":1643342559932,"speed":8.627357482910156} +{"lon":116.73566089453374,"lat":40.20238912940393,"alt":0,"heading":104.06354072844034,"systemTime":1643342559983,"receiverDataTime":1643342559983,"adasSatelliteTime":1643342559983,"satelliteTime":1643342559983,"speed":8.615558624267578} +{"lon":116.73566482474317,"lat":40.202388371663176,"alt":0,"heading":104.51201094934338,"systemTime":1643342560033,"receiverDataTime":1643342560033,"adasSatelliteTime":1643342560033,"satelliteTime":1643342560033,"speed":8.606518745422363} +{"lon":116.7356677647883,"lat":40.202387787345565,"alt":0,"heading":104.8478103696979,"systemTime":1643342560083,"receiverDataTime":1643342560083,"adasSatelliteTime":1643342560083,"satelliteTime":1643342560083,"speed":8.602309226989746} +{"lon":116.73567459359772,"lat":40.202386369049705,"alt":0,"heading":105.63459352057,"systemTime":1643342560134,"receiverDataTime":1643342560134,"adasSatelliteTime":1643342560134,"satelliteTime":1643342560134,"speed":8.585308074951172} +{"lon":116.73567653905819,"lat":40.20238595188048,"alt":0,"heading":105.86198417841807,"systemTime":1643342560184,"receiverDataTime":1643342560184,"adasSatelliteTime":1643342560184,"satelliteTime":1643342560184,"speed":8.586309432983398} +{"lon":116.73568431290795,"lat":40.20238422756102,"alt":0,"heading":106.7800708858945,"systemTime":1643342560235,"receiverDataTime":1643342560235,"adasSatelliteTime":1643342560235,"satelliteTime":1643342560235,"speed":8.600564002990723} +{"lon":116.73569014297965,"lat":40.202382867840505,"alt":0,"heading":107.47049372795607,"systemTime":1643342560286,"receiverDataTime":1643342560286,"adasSatelliteTime":1643342560286,"satelliteTime":1643342560286,"speed":8.616271018981934} +{"lon":116.73569402249308,"lat":40.20238193246795,"alt":0,"heading":107.94188606371367,"systemTime":1643342560335,"receiverDataTime":1643342560335,"adasSatelliteTime":1643342560335,"satelliteTime":1643342560335,"speed":8.621726036071777} +{"lon":116.7356988606855,"lat":40.20238073058431,"alt":0,"heading":108.54548354104604,"systemTime":1643342560387,"receiverDataTime":1643342560387,"adasSatelliteTime":1643342560387,"satelliteTime":1643342560387,"speed":8.623044967651367} +{"lon":116.73570464737071,"lat":40.2023792362475,"alt":0,"heading":109.28161400903333,"systemTime":1643342560439,"receiverDataTime":1643342560439,"adasSatelliteTime":1643342560439,"satelliteTime":1643342560439,"speed":8.62401294708252} +{"lon":116.73570849372884,"lat":40.20237821165225,"alt":0,"heading":109.78464378102643,"systemTime":1643342560489,"receiverDataTime":1643342560489,"adasSatelliteTime":1643342560489,"satelliteTime":1643342560489,"speed":8.625753402709961} +{"lon":116.73571328488735,"lat":40.20237688949022,"alt":0,"heading":110.41744714724977,"systemTime":1643342560545,"receiverDataTime":1643342560545,"adasSatelliteTime":1643342560545,"satelliteTime":1643342560545,"speed":8.63603401184082} +{"lon":116.73571328488735,"lat":40.20237688949022,"alt":0,"heading":110.41744714724977,"systemTime":1643342560589,"receiverDataTime":1643342560589,"adasSatelliteTime":1643342560589,"satelliteTime":1643342560589,"speed":8.63603401184082} +{"lon":116.73571996694344,"lat":40.20237496777424,"alt":0,"heading":111.32045279703881,"systemTime":1643342560640,"receiverDataTime":1643342560640,"adasSatelliteTime":1643342560640,"satelliteTime":1643342560640,"speed":8.653858184814453} +{"lon":116.73572662392077,"lat":40.202372969023905,"alt":0,"heading":112.23769256105817,"systemTime":1643342560690,"receiverDataTime":1643342560690,"adasSatelliteTime":1643342560690,"satelliteTime":1643342560690,"speed":8.669084548950195} +{"lon":116.73573135768649,"lat":40.20237148615183,"alt":0,"heading":112.90153230687005,"systemTime":1643342560741,"receiverDataTime":1643342560741,"adasSatelliteTime":1643342560741,"satelliteTime":1643342560741,"speed":8.683764457702637} +{"lon":116.73573607153034,"lat":40.2023699554256,"alt":0,"heading":113.57927831783208,"systemTime":1643342560791,"receiverDataTime":1643342560791,"adasSatelliteTime":1643342560791,"satelliteTime":1643342560791,"speed":8.689848899841309} +{"lon":116.73574169585206,"lat":40.20236806268489,"alt":0,"heading":114.4027259241688,"systemTime":1643342560842,"receiverDataTime":1643342560842,"adasSatelliteTime":1643342560842,"satelliteTime":1643342560842,"speed":8.689709663391113} +{"lon":116.73574543314453,"lat":40.202366776028754,"alt":0,"heading":114.95796566217749,"systemTime":1643342560895,"receiverDataTime":1643342560895,"adasSatelliteTime":1643342560895,"satelliteTime":1643342560895,"speed":8.694876670837402} +{"lon":116.7357528687989,"lat":40.20236413567499,"alt":0,"heading":116.08923623402836,"systemTime":1643342560947,"receiverDataTime":1643342560947,"adasSatelliteTime":1643342560947,"satelliteTime":1643342560947,"speed":8.702872276306152} +{"lon":116.7357528687989,"lat":40.20236413567499,"alt":0,"heading":116.08923623402836,"systemTime":1643342561000,"receiverDataTime":1643342561000,"adasSatelliteTime":1643342561000,"satelliteTime":1643342561000,"speed":8.702872276306152} +{"lon":116.73576299682301,"lat":40.202360311032486,"alt":0,"heading":117.65534396919892,"systemTime":1643342561051,"receiverDataTime":1643342561051,"adasSatelliteTime":1643342561051,"satelliteTime":1643342561051,"speed":8.731639862060547} +{"lon":116.73576664827301,"lat":40.202358858711854,"alt":0,"heading":118.22192182122981,"systemTime":1643342561101,"receiverDataTime":1643342561101,"adasSatelliteTime":1643342561101,"satelliteTime":1643342561101,"speed":8.738383293151855} +{"lon":116.73577118797907,"lat":40.202356999832986,"alt":0,"heading":118.9379442123006,"systemTime":1643342561152,"receiverDataTime":1643342561152,"adasSatelliteTime":1643342561152,"satelliteTime":1643342561152,"speed":8.74638557434082} +{"lon":116.7357766017365,"lat":40.202354714749404,"alt":0,"heading":119.80901189753067,"systemTime":1643342561205,"receiverDataTime":1643342561205,"adasSatelliteTime":1643342561205,"satelliteTime":1643342561205,"speed":8.75416374206543} +{"lon":116.73577930769945,"lat":40.2023535479791,"alt":0,"heading":120.26387517549684,"systemTime":1643342561257,"receiverDataTime":1643342561257,"adasSatelliteTime":1643342561257,"satelliteTime":1643342561257,"speed":8.765271186828613} +{"lon":116.73578379336146,"lat":40.20235155959524,"alt":0,"heading":120.99489666198495,"systemTime":1643342561307,"receiverDataTime":1643342561307,"adasSatelliteTime":1643342561307,"satelliteTime":1643342561307,"speed":8.783292770385742} +{"lon":116.73578736611871,"lat":40.20234993894178,"alt":0,"heading":121.58458787416717,"systemTime":1643342561357,"receiverDataTime":1643342561357,"adasSatelliteTime":1643342561357,"satelliteTime":1643342561357,"speed":8.790058135986328} +{"lon":116.73579269518689,"lat":40.202347454746416,"alt":0,"heading":122.46723956022959,"systemTime":1643342561408,"receiverDataTime":1643342561408,"adasSatelliteTime":1643342561408,"satelliteTime":1643342561408,"speed":8.808328628540039} +{"lon":116.7357997394867,"lat":40.202344023834335,"alt":0,"heading":123.64192281444505,"systemTime":1643342561460,"receiverDataTime":1643342561460,"adasSatelliteTime":1643342561460,"satelliteTime":1643342561460,"speed":8.842753410339355} +{"lon":116.73580323679185,"lat":40.202342257758744,"alt":0,"heading":124.22604059226455,"systemTime":1643342561510,"receiverDataTime":1643342561510,"adasSatelliteTime":1643342561510,"satelliteTime":1643342561510,"speed":8.868189811706543} +{"lon":116.73580758463977,"lat":40.20234000335205,"alt":0,"heading":124.95487641821826,"systemTime":1643342561561,"receiverDataTime":1643342561561,"adasSatelliteTime":1643342561561,"satelliteTime":1643342561561,"speed":8.897597312927246} +{"lon":116.7358084503735,"lat":40.20233954612131,"alt":0,"heading":125.10147959856342,"systemTime":1643342561617,"receiverDataTime":1643342561617,"adasSatelliteTime":1643342561617,"satelliteTime":1643342561617,"speed":8.901740074157715} +{"lon":116.73581705459037,"lat":40.20233487825403,"alt":0,"heading":126.5789587990639,"systemTime":1643342561665,"receiverDataTime":1643342561665,"adasSatelliteTime":1643342561665,"satelliteTime":1643342561665,"speed":8.948941230773926} +{"lon":116.73582046311802,"lat":40.20233295982825,"alt":0,"heading":127.1792231440813,"systemTime":1643342561718,"receiverDataTime":1643342561718,"adasSatelliteTime":1643342561718,"satelliteTime":1643342561718,"speed":8.965864181518555} +{"lon":116.7358238507929,"lat":40.20233100782547,"alt":0,"heading":127.77803948899466,"systemTime":1643342561781,"receiverDataTime":1643342561781,"adasSatelliteTime":1643342561781,"satelliteTime":1643342561781,"speed":8.990693092346191} +{"lon":116.73583057344314,"lat":40.20232702162385,"alt":0,"heading":128.96856878208456,"systemTime":1643342561833,"receiverDataTime":1643342561833,"adasSatelliteTime":1643342561833,"satelliteTime":1643342561833,"speed":9.016468048095703} +{"lon":116.73583556662707,"lat":40.2023239675298,"alt":0,"heading":129.86299571427608,"systemTime":1643342561887,"receiverDataTime":1643342561887,"adasSatelliteTime":1643342561887,"satelliteTime":1643342561887,"speed":9.043481826782227} +{"lon":116.73583887624932,"lat":40.20232189426896,"alt":0,"heading":130.46418896502058,"systemTime":1643342561937,"receiverDataTime":1643342561937,"adasSatelliteTime":1643342561937,"satelliteTime":1643342561937,"speed":9.078363418579102} +{"lon":116.73584379537216,"lat":40.20231871871399,"alt":0,"heading":131.36156653893354,"systemTime":1643342561985,"receiverDataTime":1643342561985,"adasSatelliteTime":1643342561985,"satelliteTime":1643342561985,"speed":9.103479385375977} +{"lon":116.73584703458607,"lat":40.20231655853634,"alt":0,"heading":131.9516402417093,"systemTime":1643342562037,"receiverDataTime":1643342562037,"adasSatelliteTime":1643342562037,"satelliteTime":1643342562037,"speed":9.112451553344727} +{"lon":116.73585184852956,"lat":40.202313268648275,"alt":0,"heading":132.84986475907934,"systemTime":1643342562087,"receiverDataTime":1643342562087,"adasSatelliteTime":1643342562087,"satelliteTime":1643342562087,"speed":9.14047908782959} +{"lon":116.73585503330192,"lat":40.202311039045526,"alt":0,"heading":133.4563309158631,"systemTime":1643342562138,"receiverDataTime":1643342562138,"adasSatelliteTime":1643342562138,"satelliteTime":1643342562138,"speed":9.164347648620605} +{"lon":116.73585819781032,"lat":40.20230877978618,"alt":0,"heading":134.06173156313636,"systemTime":1643342562188,"receiverDataTime":1643342562188,"adasSatelliteTime":1643342562188,"satelliteTime":1643342562188,"speed":9.19067096710205} +{"lon":116.73586368510895,"lat":40.20230476227285,"alt":0,"heading":135.14754039587163,"systemTime":1643342562239,"receiverDataTime":1643342562239,"adasSatelliteTime":1643342562239,"satelliteTime":1643342562239,"speed":9.212115287780762} +{"lon":116.73586601145553,"lat":40.20230300757733,"alt":0,"heading":135.61084578765193,"systemTime":1643342562295,"receiverDataTime":1643342562295,"adasSatelliteTime":1643342562295,"satelliteTime":1643342562295,"speed":9.232534408569336} +{"lon":116.73586832320335,"lat":40.20230123304613,"alt":0,"heading":136.0725119340314,"systemTime":1643342562344,"receiverDataTime":1643342562344,"adasSatelliteTime":1643342562344,"satelliteTime":1643342562344,"speed":9.252291679382324} +{"lon":116.73587666043123,"lat":40.202294543786586,"alt":0,"heading":137.75107190369707,"systemTime":1643342562395,"receiverDataTime":1643342562395,"adasSatelliteTime":1643342562395,"satelliteTime":1643342562395,"speed":9.330674171447754} +{"lon":116.73587962622547,"lat":40.2022920392083,"alt":0,"heading":138.37166289168442,"systemTime":1643342562446,"receiverDataTime":1643342562446,"adasSatelliteTime":1643342562446,"satelliteTime":1643342562446,"speed":9.341474533081055} +{"lon":116.73588329723871,"lat":40.202288871892215,"alt":0,"heading":139.16538551475327,"systemTime":1643342562497,"receiverDataTime":1643342562497,"adasSatelliteTime":1643342562497,"satelliteTime":1643342562497,"speed":9.364646911621094} +{"lon":116.73588548255739,"lat":40.20228695339071,"alt":0,"heading":139.64959128539383,"systemTime":1643342562548,"receiverDataTime":1643342562548,"adasSatelliteTime":1643342562548,"satelliteTime":1643342562548,"speed":9.378293991088867} +{"lon":116.73589124909515,"lat":40.20228178753501,"alt":0,"heading":140.96385628548768,"systemTime":1643342562600,"receiverDataTime":1643342562600,"adasSatelliteTime":1643342562600,"satelliteTime":1643342562600,"speed":9.385575294494629} +{"lon":116.73589266797156,"lat":40.20228048212267,"alt":0,"heading":141.29678702639077,"systemTime":1643342562650,"receiverDataTime":1643342562650,"adasSatelliteTime":1643342562650,"satelliteTime":1643342562650,"speed":9.384936332702637} +{"lon":116.73589684187013,"lat":40.20227651721578,"alt":0,"heading":142.29284717343208,"systemTime":1643342562700,"receiverDataTime":1643342562700,"adasSatelliteTime":1643342562700,"satelliteTime":1643342562700,"speed":9.380620002746582} +{"lon":116.73590090938728,"lat":40.20227248209601,"alt":0,"heading":143.28541026361833,"systemTime":1643342562749,"receiverDataTime":1643342562749,"adasSatelliteTime":1643342562749,"satelliteTime":1643342562749,"speed":9.408561706542969} +{"lon":116.73590357939302,"lat":40.20226976120204,"alt":0,"heading":143.9482937829464,"systemTime":1643342562800,"receiverDataTime":1643342562800,"adasSatelliteTime":1643342562800,"satelliteTime":1643342562800,"speed":9.419137954711914} +{"lon":116.73590357939302,"lat":40.20226976120204,"alt":0,"heading":143.9482937829464,"systemTime":1643342562850,"receiverDataTime":1643342562850,"adasSatelliteTime":1643342562850,"satelliteTime":1643342562850,"speed":9.419137954711914} +{"lon":116.73590949069846,"lat":40.202263546078235,"alt":0,"heading":145.4982003094057,"systemTime":1643342562901,"receiverDataTime":1643342562901,"adasSatelliteTime":1643342562901,"satelliteTime":1643342562901,"speed":9.48563289642334} +{"lon":116.73591334524897,"lat":40.20225932110563,"alt":0,"heading":146.5653490653285,"systemTime":1643342562952,"receiverDataTime":1643342562952,"adasSatelliteTime":1643342562952,"satelliteTime":1643342562952,"speed":9.522361755371094} +{"lon":116.73591523261777,"lat":40.202257180175465,"alt":0,"heading":147.09406034860083,"systemTime":1643342563001,"receiverDataTime":1643342563001,"adasSatelliteTime":1643342563001,"satelliteTime":1643342563001,"speed":9.536467552185059} +{"lon":116.73591831464826,"lat":40.20225357662499,"alt":0,"heading":147.9718216192175,"systemTime":1643342563051,"receiverDataTime":1643342563051,"adasSatelliteTime":1643342563051,"satelliteTime":1643342563051,"speed":9.53783893585205} +{"lon":116.73592131753584,"lat":40.20224993906732,"alt":0,"heading":148.85594862614064,"systemTime":1643342563102,"receiverDataTime":1643342563102,"adasSatelliteTime":1643342563102,"satelliteTime":1643342563102,"speed":9.526312828063965} +{"lon":116.73592711025722,"lat":40.202242587924296,"alt":0,"heading":150.66217849177218,"systemTime":1643342563154,"receiverDataTime":1643342563154,"adasSatelliteTime":1643342563154,"satelliteTime":1643342563154,"speed":9.500879287719727} +{"lon":116.73592823208186,"lat":40.20224110377481,"alt":0,"heading":151.0223480270853,"systemTime":1643342563204,"receiverDataTime":1643342563204,"adasSatelliteTime":1643342563204,"satelliteTime":1643342563204,"speed":9.496384620666504} +{"lon":116.73593151807516,"lat":40.202236604527585,"alt":0,"heading":152.12102493621686,"systemTime":1643342563255,"receiverDataTime":1643342563255,"adasSatelliteTime":1643342563255,"satelliteTime":1643342563255,"speed":9.506744384765625} +{"lon":116.7359341748575,"lat":40.20223280274678,"alt":0,"heading":153.01963194418042,"systemTime":1643342563306,"receiverDataTime":1643342563306,"adasSatelliteTime":1643342563306,"satelliteTime":1643342563306,"speed":9.52840805053711} +{"lon":116.73593726856828,"lat":40.202228177543695,"alt":0,"heading":154.08964937955463,"systemTime":1643342563355,"receiverDataTime":1643342563355,"adasSatelliteTime":1643342563355,"satelliteTime":1643342563355,"speed":9.567924499511719} +{"lon":116.73593926922662,"lat":40.2022250521969,"alt":0,"heading":154.80509803473512,"systemTime":1643342563406,"receiverDataTime":1643342563406,"adasSatelliteTime":1643342563406,"satelliteTime":1643342563406,"speed":9.597956657409668} +{"lon":116.7359412152236,"lat":40.20222189221624,"alt":0,"heading":155.51745944441078,"systemTime":1643342563459,"receiverDataTime":1643342563459,"adasSatelliteTime":1643342563459,"satelliteTime":1643342563459,"speed":9.624600410461426} +{"lon":116.73594310943557,"lat":40.202218702839566,"alt":0,"heading":156.23277149580787,"systemTime":1643342563510,"receiverDataTime":1643342563510,"adasSatelliteTime":1643342563510,"satelliteTime":1643342563510,"speed":9.642366409301758} +{"lon":116.73594540487818,"lat":40.202214686934255,"alt":0,"heading":157.1316790320949,"systemTime":1643342563561,"receiverDataTime":1643342563561,"adasSatelliteTime":1643342563561,"satelliteTime":1643342563561,"speed":9.655655860900879} +{"lon":116.73594762627266,"lat":40.20221064420742,"alt":0,"heading":158.03728015376853,"systemTime":1643342563613,"receiverDataTime":1643342563613,"adasSatelliteTime":1643342563613,"satelliteTime":1643342563613,"speed":9.664592742919922} +{"lon":116.73595019165425,"lat":40.20220576260564,"alt":0,"heading":159.13207751545156,"systemTime":1643342563662,"receiverDataTime":1643342563662,"adasSatelliteTime":1643342563662,"satelliteTime":1643342563662,"speed":9.662074089050293} +{"lon":116.73595184087577,"lat":40.20220249387635,"alt":0,"heading":159.8657764360943,"systemTime":1643342563717,"receiverDataTime":1643342563717,"adasSatelliteTime":1643342563717,"satelliteTime":1643342563717,"speed":9.65550708770752} +{"lon":116.73595497818908,"lat":40.202195919167806,"alt":0,"heading":161.32320220119163,"systemTime":1643342563764,"receiverDataTime":1643342563764,"adasSatelliteTime":1643342563764,"satelliteTime":1643342563764,"speed":9.6543607711792} +{"lon":116.7359568226963,"lat":40.202191778116344,"alt":0,"heading":162.22650837930416,"systemTime":1643342563817,"receiverDataTime":1643342563817,"adasSatelliteTime":1643342563817,"satelliteTime":1643342563817,"speed":9.661898612976074} +{"lon":116.7359589195283,"lat":40.202186777367096,"alt":0,"heading":163.31403841971027,"systemTime":1643342563864,"receiverDataTime":1643342563864,"adasSatelliteTime":1643342563864,"satelliteTime":1643342563864,"speed":9.67284107208252} +{"lon":116.73595992266374,"lat":40.20218426449346,"alt":0,"heading":163.8581312889935,"systemTime":1643342563927,"receiverDataTime":1643342563927,"adasSatelliteTime":1643342563927,"satelliteTime":1643342563927,"speed":9.678776741027832} +{"lon":116.73596152745749,"lat":40.20218005679611,"alt":0,"heading":164.77102705270073,"systemTime":1643342563979,"receiverDataTime":1643342563979,"adasSatelliteTime":1643342563979,"satelliteTime":1643342563979,"speed":9.693804740905762} +{"lon":116.73596333119549,"lat":40.20217497303998,"alt":0,"heading":165.86249128206876,"systemTime":1643342564031,"receiverDataTime":1643342564031,"adasSatelliteTime":1643342564031,"satelliteTime":1643342564031,"speed":9.711917877197266} +{"lon":116.73596473518339,"lat":40.2021707127182,"alt":0,"heading":166.76544229034445,"systemTime":1643342564089,"receiverDataTime":1643342564089,"adasSatelliteTime":1643342564089,"satelliteTime":1643342564089,"speed":9.721952438354492} +{"lon":116.7359663073559,"lat":40.20216557481662,"alt":0,"heading":167.84767210395464,"systemTime":1643342564132,"receiverDataTime":1643342564132,"adasSatelliteTime":1643342564132,"satelliteTime":1643342564132,"speed":9.734529495239258} +{"lon":116.73596729506117,"lat":40.20216213484777,"alt":0,"heading":168.57074325024885,"systemTime":1643342564184,"receiverDataTime":1643342564184,"adasSatelliteTime":1643342564184,"satelliteTime":1643342564184,"speed":9.748230934143066} +{"lon":116.73596823425608,"lat":40.202158682672206,"alt":0,"heading":169.29744805718153,"systemTime":1643342564234,"receiverDataTime":1643342564234,"adasSatelliteTime":1643342564234,"satelliteTime":1643342564234,"speed":9.7609281539917} +{"lon":116.7359703452121,"lat":40.202149933247775,"alt":0,"heading":171.14159913308498,"systemTime":1643342564284,"receiverDataTime":1643342564284,"adasSatelliteTime":1643342564284,"satelliteTime":1643342564284,"speed":9.838770866394043} +{"lon":116.73597125551514,"lat":40.202145506362875,"alt":0,"heading":172.0442222922805,"systemTime":1643342564339,"receiverDataTime":1643342564339,"adasSatelliteTime":1643342564339,"satelliteTime":1643342564339,"speed":9.866058349609375} +{"lon":116.73597125551514,"lat":40.202145506362875,"alt":0,"heading":172.0442222922805,"systemTime":1643342564385,"receiverDataTime":1643342564385,"adasSatelliteTime":1643342564385,"satelliteTime":1643342564385,"speed":9.866058349609375} +{"lon":116.7359725116761,"lat":40.20213836259931,"alt":0,"heading":173.48473650899285,"systemTime":1643342564435,"receiverDataTime":1643342564435,"adasSatelliteTime":1643342564435,"satelliteTime":1643342564435,"speed":9.907634735107422} +{"lon":116.73597305718107,"lat":40.202134764397,"alt":0,"heading":174.20059497552356,"systemTime":1643342564486,"receiverDataTime":1643342564486,"adasSatelliteTime":1643342564486,"satelliteTime":1643342564486,"speed":9.935532569885254} +{"lon":116.73597367029522,"lat":40.20213025003731,"alt":0,"heading":175.0910057564831,"systemTime":1643342564536,"receiverDataTime":1643342564536,"adasSatelliteTime":1643342564536,"satelliteTime":1643342564536,"speed":9.966794967651367} +{"lon":116.73597428486063,"lat":40.202124809889284,"alt":0,"heading":176.13310137853028,"systemTime":1643342564594,"receiverDataTime":1643342564594,"adasSatelliteTime":1643342564594,"satelliteTime":1643342564594,"speed":10.01616382598877} +{"lon":116.73597445795697,"lat":40.20212298927375,"alt":0,"heading":176.47247981800987,"systemTime":1643342564645,"receiverDataTime":1643342564645,"adasSatelliteTime":1643342564645,"satelliteTime":1643342564645,"speed":10.035759925842285} +{"lon":116.73597513722324,"lat":40.202112917737324,"alt":0,"heading":178.2205437926696,"systemTime":1643342564695,"receiverDataTime":1643342564695,"adasSatelliteTime":1643342564695,"satelliteTime":1643342564695,"speed":10.121914863586426} +{"lon":116.73597517751793,"lat":40.202111998498985,"alt":0,"heading":178.36987904868275,"systemTime":1643342564745,"receiverDataTime":1643342564745,"adasSatelliteTime":1643342564745,"satelliteTime":1643342564745,"speed":10.127306938171387} +{"lon":116.7359753577601,"lat":40.20210554707516,"alt":0,"heading":179.35796153477347,"systemTime":1643342564802,"receiverDataTime":1643342564802,"adasSatelliteTime":1643342564802,"satelliteTime":1643342564802,"speed":10.179308891296387} +{"lon":116.73597538969213,"lat":40.20210091890976,"alt":0,"heading":180.00961622310604,"systemTime":1643342564853,"receiverDataTime":1643342564853,"adasSatelliteTime":1643342564853,"satelliteTime":1643342564853,"speed":10.223417282104492} +{"lon":116.73597534900314,"lat":40.20209627242096,"alt":0,"heading":180.60526336024452,"systemTime":1643342564902,"receiverDataTime":1643342564902,"adasSatelliteTime":1643342564902,"satelliteTime":1643342564902,"speed":10.27028751373291} +{"lon":116.73597521263751,"lat":40.20209066902256,"alt":0,"heading":181.23456966961282,"systemTime":1643342564955,"receiverDataTime":1643342564955,"adasSatelliteTime":1643342564955,"satelliteTime":1643342564955,"speed":10.343530654907227} +{"lon":116.73597507247986,"lat":40.20208691283808,"alt":0,"heading":181.61186931936433,"systemTime":1643342565003,"receiverDataTime":1643342565003,"adasSatelliteTime":1643342565003,"satelliteTime":1643342565003,"speed":10.39420223236084} +{"lon":116.73597469051437,"lat":40.202079355827365,"alt":0,"heading":182.2561200826366,"systemTime":1643342565054,"receiverDataTime":1643342565054,"adasSatelliteTime":1643342565054,"satelliteTime":1643342565054,"speed":10.485480308532715} +{"lon":116.73597463461635,"lat":40.20207840735764,"alt":0,"heading":182.32496838947034,"systemTime":1643342565104,"receiverDataTime":1643342565104,"adasSatelliteTime":1643342565104,"satelliteTime":1643342565104,"speed":10.495410919189453} +{"lon":116.73597433090939,"lat":40.20207365256264,"alt":0,"heading":182.64249022360588,"systemTime":1643342565154,"receiverDataTime":1643342565154,"adasSatelliteTime":1643342565154,"satelliteTime":1643342565154,"speed":10.549753189086914} +{"lon":116.73597391861938,"lat":40.202067917331085,"alt":0,"heading":182.9641648127568,"systemTime":1643342565205,"receiverDataTime":1643342565205,"adasSatelliteTime":1643342565205,"satelliteTime":1643342565205,"speed":10.61541748046875} +{"lon":116.7359736194302,"lat":40.202064065124105,"alt":0,"heading":183.14251471236418,"systemTime":1643342565254,"receiverDataTime":1643342565254,"adasSatelliteTime":1643342565254,"satelliteTime":1643342565254,"speed":10.670845985412598} +{"lon":116.73597322207976,"lat":40.20205920301035,"alt":0,"heading":183.32742159357477,"systemTime":1643342565305,"receiverDataTime":1643342565305,"adasSatelliteTime":1643342565305,"satelliteTime":1643342565305,"speed":10.749031066894531} +{"lon":116.73597271213092,"lat":40.20205331717152,"alt":0,"heading":183.50355851189104,"systemTime":1643342565356,"receiverDataTime":1643342565356,"adasSatelliteTime":1643342565356,"satelliteTime":1643342565356,"speed":10.838362693786621} +{"lon":116.73597226234713,"lat":40.20204836918796,"alt":0,"heading":183.62142025620878,"systemTime":1643342565409,"receiverDataTime":1643342565409,"adasSatelliteTime":1643342565409,"satelliteTime":1643342565409,"speed":10.909749031066895} +{"lon":116.73597170545223,"lat":40.20204238112675,"alt":0,"heading":183.7220699238181,"systemTime":1643342565463,"receiverDataTime":1643342565463,"adasSatelliteTime":1643342565463,"satelliteTime":1643342565463,"speed":10.987944602966309} +{"lon":116.73597142183309,"lat":40.2020393691975,"alt":0,"heading":183.75542856772444,"systemTime":1643342565515,"receiverDataTime":1643342565515,"adasSatelliteTime":1643342565515,"satelliteTime":1643342565515,"speed":11.030448913574219} +{"lon":116.73597055477295,"lat":40.20203027564783,"alt":0,"heading":183.8226103084007,"systemTime":1643342565572,"receiverDataTime":1643342565572,"adasSatelliteTime":1643342565572,"satelliteTime":1643342565572,"speed":11.162120819091797} +{"lon":116.73597035881276,"lat":40.20202824348213,"alt":0,"heading":183.82856623335692,"systemTime":1643342565622,"receiverDataTime":1643342565622,"adasSatelliteTime":1643342565622,"satelliteTime":1643342565622,"speed":11.188806533813477} +{"lon":116.73596956820874,"lat":40.20202007431584,"alt":0,"heading":183.82763732762982,"systemTime":1643342565671,"receiverDataTime":1643342565671,"adasSatelliteTime":1643342565671,"satelliteTime":1643342565671,"speed":11.300885200500488} +{"lon":116.73596906972303,"lat":40.20201492978629,"alt":0,"heading":183.8299869127043,"systemTime":1643342565723,"receiverDataTime":1643342565723,"adasSatelliteTime":1643342565723,"satelliteTime":1643342565723,"speed":11.378254890441895} +{"lon":116.73596847927473,"lat":40.20200871824293,"alt":0,"heading":183.83375717712616,"systemTime":1643342565772,"receiverDataTime":1643342565772,"adasSatelliteTime":1643342565772,"satelliteTime":1643342565772,"speed":11.459526062011719} +{"lon":116.73596808687934,"lat":40.20200455595679,"alt":0,"heading":183.84233589472367,"systemTime":1643342565822,"receiverDataTime":1643342565822,"adasSatelliteTime":1643342565822,"satelliteTime":1643342565822,"speed":11.512258529663086} +{"lon":116.73596768424134,"lat":40.202000376900195,"alt":0,"heading":183.84842842346333,"systemTime":1643342565873,"receiverDataTime":1643342565873,"adasSatelliteTime":1643342565873,"satelliteTime":1643342565873,"speed":11.565764427185059} +{"lon":116.73596717741185,"lat":40.20199512546647,"alt":0,"heading":183.86072276396936,"systemTime":1643342565923,"receiverDataTime":1643342565923,"adasSatelliteTime":1643342565923,"satelliteTime":1643342565923,"speed":11.645194053649902} +{"lon":116.73596656540317,"lat":40.201988779873034,"alt":0,"heading":183.864083217041,"systemTime":1643342565975,"receiverDataTime":1643342565975,"adasSatelliteTime":1643342565975,"satelliteTime":1643342565975,"speed":11.739444732666016} +{"lon":116.73596615597688,"lat":40.20198452441424,"alt":0,"heading":183.87088608545434,"systemTime":1643342566025,"receiverDataTime":1643342566025,"adasSatelliteTime":1643342566025,"satelliteTime":1643342566025,"speed":11.799854278564453} +{"lon":116.7359657401017,"lat":40.20198024783828,"alt":0,"heading":183.8787544633782,"systemTime":1643342566075,"receiverDataTime":1643342566075,"adasSatelliteTime":1643342566075,"satelliteTime":1643342566075,"speed":11.866726875305176} +{"lon":116.73596521225758,"lat":40.201974869696,"alt":0,"heading":183.88746978475913,"systemTime":1643342566136,"receiverDataTime":1643342566136,"adasSatelliteTime":1643342566136,"satelliteTime":1643342566136,"speed":11.950759887695312} +{"lon":116.73596458098034,"lat":40.20196837560127,"alt":0,"heading":183.8973598986773,"systemTime":1643342566179,"receiverDataTime":1643342566179,"adasSatelliteTime":1643342566179,"satelliteTime":1643342566179,"speed":12.031343460083008} +{"lon":116.73596415701937,"lat":40.20196402305748,"alt":0,"heading":183.90429937087404,"systemTime":1643342566230,"receiverDataTime":1643342566230,"adasSatelliteTime":1643342566230,"satelliteTime":1643342566230,"speed":12.087518692016602} +{"lon":116.7359636137197,"lat":40.20195852675834,"alt":0,"heading":183.91815099451082,"systemTime":1643342566280,"receiverDataTime":1643342566280,"adasSatelliteTime":1643342566280,"satelliteTime":1643342566280,"speed":12.176874160766602} +{"lon":116.73596317344703,"lat":40.20195409292307,"alt":0,"heading":183.926675070595,"systemTime":1643342566330,"receiverDataTime":1643342566330,"adasSatelliteTime":1643342566330,"satelliteTime":1643342566330,"speed":12.240326881408691} +{"lon":116.73596228249909,"lat":40.201945142082536,"alt":0,"heading":183.9476300909686,"systemTime":1643342566380,"receiverDataTime":1643342566380,"adasSatelliteTime":1643342566380,"satelliteTime":1643342566380,"speed":12.371790885925293} +{"lon":116.73596217020939,"lat":40.20194401496271,"alt":0,"heading":183.95221997809085,"systemTime":1643342566431,"receiverDataTime":1643342566431,"adasSatelliteTime":1643342566431,"satelliteTime":1643342566431,"speed":12.387639045715332} +{"lon":116.73596092906195,"lat":40.201931502219686,"alt":0,"heading":183.99033243365952,"systemTime":1643342566481,"receiverDataTime":1643342566481,"adasSatelliteTime":1643342566481,"satelliteTime":1643342566481,"speed":12.55881118774414} +{"lon":116.73596070007916,"lat":40.20192921048663,"alt":0,"heading":183.99880186823034,"systemTime":1643342566532,"receiverDataTime":1643342566532,"adasSatelliteTime":1643342566532,"satelliteTime":1643342566532,"speed":12.586875915527344} +{"lon":116.73596024051778,"lat":40.201924615951135,"alt":0,"heading":184.01511235996833,"systemTime":1643342566585,"receiverDataTime":1643342566585,"adasSatelliteTime":1643342566585,"satelliteTime":1643342566585,"speed":12.637417793273926} +{"lon":116.73595978158242,"lat":40.20192000823875,"alt":0,"heading":184.02951039873872,"systemTime":1643342566634,"receiverDataTime":1643342566634,"adasSatelliteTime":1643342566634,"satelliteTime":1643342566634,"speed":12.68384075164795} +{"lon":116.73595862317059,"lat":40.201908430636884,"alt":0,"heading":184.06781409960413,"systemTime":1643342566683,"receiverDataTime":1643342566683,"adasSatelliteTime":1643342566683,"satelliteTime":1643342566683,"speed":12.80986499786377} +{"lon":116.73595862317059,"lat":40.201908430636884,"alt":0,"heading":184.06781409960413,"systemTime":1643342566733,"receiverDataTime":1643342566733,"adasSatelliteTime":1643342566733,"satelliteTime":1643342566733,"speed":12.80986499786377} +{"lon":116.7359574572149,"lat":40.2018967448424,"alt":0,"heading":184.1233571979347,"systemTime":1643342566783,"receiverDataTime":1643342566783,"adasSatelliteTime":1643342566783,"satelliteTime":1643342566783,"speed":12.950310707092285} +{"lon":116.73595698628866,"lat":40.201892041744415,"alt":0,"heading":184.1582458042151,"systemTime":1643342566833,"receiverDataTime":1643342566833,"adasSatelliteTime":1643342566833,"satelliteTime":1643342566833,"speed":13.00228214263916} +{"lon":116.73595639195922,"lat":40.20188614265373,"alt":0,"heading":184.21501833659624,"systemTime":1643342566884,"receiverDataTime":1643342566884,"adasSatelliteTime":1643342566884,"satelliteTime":1643342566884,"speed":13.051942825317383} +{"lon":116.73595567395776,"lat":40.201879043525736,"alt":0,"heading":184.29269124783764,"systemTime":1643342566938,"receiverDataTime":1643342566938,"adasSatelliteTime":1643342566938,"satelliteTime":1643342566938,"speed":13.099248886108398} +{"lon":116.73595518436058,"lat":40.201874298515655,"alt":0,"heading":184.3553104221483,"systemTime":1643342566985,"receiverDataTime":1643342566985,"adasSatelliteTime":1643342566985,"satelliteTime":1643342566985,"speed":13.134695053100586} +{"lon":116.73595468311818,"lat":40.20186954269069,"alt":0,"heading":184.41661820013834,"systemTime":1643342567039,"receiverDataTime":1643342567039,"adasSatelliteTime":1643342567039,"satelliteTime":1643342567039,"speed":13.172988891601562} +{"lon":116.73595417216454,"lat":40.201864774936986,"alt":0,"heading":184.47595888364742,"systemTime":1643342567090,"receiverDataTime":1643342567090,"adasSatelliteTime":1643342567090,"satelliteTime":1643342567090,"speed":13.214632034301758} +{"lon":116.73595351340836,"lat":40.20185879375086,"alt":0,"heading":184.55516175726288,"systemTime":1643342567140,"receiverDataTime":1643342567140,"adasSatelliteTime":1643342567140,"satelliteTime":1643342567140,"speed":13.280694007873535} +{"lon":116.73595283646262,"lat":40.201852782819905,"alt":0,"heading":184.63420070633828,"systemTime":1643342567191,"receiverDataTime":1643342567191,"adasSatelliteTime":1643342567191,"satelliteTime":1643342567191,"speed":13.359832763671875} +{"lon":116.73595201992492,"lat":40.201845525630844,"alt":0,"heading":184.72572524121645,"systemTime":1643342567241,"receiverDataTime":1643342567241,"adasSatelliteTime":1643342567241,"satelliteTime":1643342567241,"speed":13.435286521911621} +{"lon":116.73595072482644,"lat":40.201834506634825,"alt":0,"heading":184.8571380808475,"systemTime":1643342567295,"receiverDataTime":1643342567295,"adasSatelliteTime":1643342567295,"satelliteTime":1643342567295,"speed":13.564719200134277} +{"lon":116.73595013639782,"lat":40.20182956779543,"alt":0,"heading":184.9113697828574,"systemTime":1643342567345,"receiverDataTime":1643342567345,"adasSatelliteTime":1643342567345,"satelliteTime":1643342567345,"speed":13.613174438476562} +{"lon":116.73594998867338,"lat":40.201828329723064,"alt":0,"heading":184.925494614061,"systemTime":1643342567397,"receiverDataTime":1643342567397,"adasSatelliteTime":1643342567397,"satelliteTime":1643342567397,"speed":13.623544692993164} +{"lon":116.73594865018883,"lat":40.20181711222712,"alt":0,"heading":185.06638775626,"systemTime":1643342567447,"receiverDataTime":1643342567447,"adasSatelliteTime":1643342567447,"satelliteTime":1643342567447,"speed":13.756257057189941} +{"lon":116.7359480367655,"lat":40.20181208443761,"alt":0,"heading":185.12275047729096,"systemTime":1643342567496,"receiverDataTime":1643342567496,"adasSatelliteTime":1643342567496,"satelliteTime":1643342567496,"speed":13.819063186645508} +{"lon":116.73594772994682,"lat":40.201809565515106,"alt":0,"heading":185.15015319624104,"systemTime":1643342567547,"receiverDataTime":1643342567547,"adasSatelliteTime":1643342567547,"satelliteTime":1643342567547,"speed":13.841667175292969} +{"lon":116.73594726633148,"lat":40.20180578154203,"alt":0,"heading":185.1954236900599,"systemTime":1643342567601,"receiverDataTime":1643342567601,"adasSatelliteTime":1643342567601,"satelliteTime":1643342567601,"speed":13.878454208374023} +{"lon":116.73594648381352,"lat":40.201799459585686,"alt":0,"heading":185.267741732992,"systemTime":1643342567649,"receiverDataTime":1643342567649,"adasSatelliteTime":1643342567649,"satelliteTime":1643342567649,"speed":13.935161590576172} +{"lon":116.73594569014674,"lat":40.20179312094683,"alt":0,"heading":185.33861177582003,"systemTime":1643342567702,"receiverDataTime":1643342567702,"adasSatelliteTime":1643342567702,"satelliteTime":1643342567702,"speed":13.985312461853027} +{"lon":116.7359448816763,"lat":40.20178676664191,"alt":0,"heading":185.4143995548505,"systemTime":1643342567753,"receiverDataTime":1643342567753,"adasSatelliteTime":1643342567753,"satelliteTime":1643342567753,"speed":14.034857749938965} +{"lon":116.73594322656311,"lat":40.20177401032628,"alt":0,"heading":185.55100333825075,"systemTime":1643342567805,"receiverDataTime":1643342567805,"adasSatelliteTime":1643342567805,"satelliteTime":1643342567805,"speed":14.137534141540527} +{"lon":116.73594254332741,"lat":40.201768884458986,"alt":0,"heading":185.58999005803318,"systemTime":1643342567862,"receiverDataTime":1643342567862,"adasSatelliteTime":1643342567862,"satelliteTime":1643342567862,"speed":14.190181732177734} +{"lon":116.73594167421545,"lat":40.20176245586867,"alt":0,"heading":185.61862221103388,"systemTime":1643342567912,"receiverDataTime":1643342567912,"adasSatelliteTime":1643342567912,"satelliteTime":1643342567912,"speed":14.253413200378418} +{"lon":116.73593989463,"lat":40.2017495294779,"alt":0,"heading":185.60184726643232,"systemTime":1643342567962,"receiverDataTime":1643342567962,"adasSatelliteTime":1643342567962,"satelliteTime":1643342567962,"speed":14.373047828674316} +{"lon":116.73593953537518,"lat":40.201746933731094,"alt":0,"heading":185.59089164300363,"systemTime":1643342568012,"receiverDataTime":1643342568012,"adasSatelliteTime":1643342568012,"satelliteTime":1643342568012,"speed":14.392863273620605} +{"lon":116.73593899641179,"lat":40.201743034312805,"alt":0,"heading":185.57163050954418,"systemTime":1643342568064,"receiverDataTime":1643342568064,"adasSatelliteTime":1643342568064,"satelliteTime":1643342568064,"speed":14.421780586242676} +{"lon":116.73593739033562,"lat":40.20173129234098,"alt":0,"heading":185.5027275611971,"systemTime":1643342568113,"receiverDataTime":1643342568113,"adasSatelliteTime":1643342568113,"satelliteTime":1643342568113,"speed":14.515703201293945} +{"lon":116.73593703871053,"lat":40.201728673165306,"alt":0,"heading":185.48570672978542,"systemTime":1643342568163,"receiverDataTime":1643342568163,"adasSatelliteTime":1643342568163,"satelliteTime":1643342568163,"speed":14.537766456604004} +{"lon":116.7359363401524,"lat":40.201723425227144,"alt":0,"heading":185.45079080274832,"systemTime":1643342568215,"receiverDataTime":1643342568215,"adasSatelliteTime":1643342568215,"satelliteTime":1643342568215,"speed":14.5750150680542} +{"lon":116.73593546932305,"lat":40.20171683492581,"alt":0,"heading":185.41994566845653,"systemTime":1643342568265,"receiverDataTime":1643342568265,"adasSatelliteTime":1643342568265,"satelliteTime":1643342568265,"speed":14.637941360473633} +{"lon":116.73593408936826,"lat":40.20170618220918,"alt":0,"heading":185.36981207994864,"systemTime":1643342568319,"receiverDataTime":1643342568319,"adasSatelliteTime":1643342568319,"satelliteTime":1643342568319,"speed":14.752248764038086} +{"lon":116.73593323028673,"lat":40.20169947282598,"alt":0,"heading":185.3434475497524,"systemTime":1643342568368,"receiverDataTime":1643342568368,"adasSatelliteTime":1643342568368,"satelliteTime":1643342568368,"speed":14.811383247375488} +{"lon":116.73593254429332,"lat":40.20169407852314,"alt":0,"heading":185.31853101966018,"systemTime":1643342568419,"receiverDataTime":1643342568419,"adasSatelliteTime":1643342568419,"satelliteTime":1643342568419,"speed":14.859109878540039} +{"lon":116.73593152171095,"lat":40.20168594153392,"alt":0,"heading":185.28132014906197,"systemTime":1643342568470,"receiverDataTime":1643342568470,"adasSatelliteTime":1643342568470,"satelliteTime":1643342568470,"speed":14.928641319274902} +{"lon":116.73593066830536,"lat":40.20167913309494,"alt":0,"heading":185.25705931713009,"systemTime":1643342568522,"receiverDataTime":1643342568522,"adasSatelliteTime":1643342568522,"satelliteTime":1643342568522,"speed":14.984710693359375} +{"lon":116.73592964834421,"lat":40.20167094067888,"alt":0,"heading":185.22192482403955,"systemTime":1643342568572,"receiverDataTime":1643342568572,"adasSatelliteTime":1643342568572,"satelliteTime":1643342568572,"speed":15.04678726196289} +{"lon":116.7359289732923,"lat":40.201665466619396,"alt":0,"heading":185.19979501112869,"systemTime":1643342568625,"receiverDataTime":1643342568625,"adasSatelliteTime":1643342568625,"satelliteTime":1643342568625,"speed":15.086432456970215} +{"lon":116.73592813311497,"lat":40.20165860778968,"alt":0,"heading":185.17905855680854,"systemTime":1643342568675,"receiverDataTime":1643342568675,"adasSatelliteTime":1643342568675,"satelliteTime":1643342568675,"speed":15.142926216125488} +{"lon":116.73592712935145,"lat":40.201650350229016,"alt":0,"heading":185.14908768673052,"systemTime":1643342568728,"receiverDataTime":1643342568728,"adasSatelliteTime":1643342568728,"satelliteTime":1643342568728,"speed":15.209166526794434} +{"lon":116.73592646024355,"lat":40.20164482823352,"alt":0,"heading":185.12963530797433,"systemTime":1643342568776,"receiverDataTime":1643342568776,"adasSatelliteTime":1643342568776,"satelliteTime":1643342568776,"speed":15.258666038513184} +{"lon":116.73592579581036,"lat":40.20163929379028,"alt":0,"heading":185.11053809905496,"systemTime":1643342568826,"receiverDataTime":1643342568826,"adasSatelliteTime":1643342568826,"satelliteTime":1643342568826,"speed":15.295543670654297} +{"lon":116.73592513455233,"lat":40.201633748984264,"alt":0,"heading":185.08734277663362,"systemTime":1643342568878,"receiverDataTime":1643342568878,"adasSatelliteTime":1643342568878,"satelliteTime":1643342568878,"speed":15.328869819641113} +{"lon":116.7359238096938,"lat":40.201622625623415,"alt":0,"heading":185.05182579294953,"systemTime":1643342568927,"receiverDataTime":1643342568927,"adasSatelliteTime":1643342568927,"satelliteTime":1643342568927,"speed":15.409709930419922} +{"lon":116.73592315041888,"lat":40.2016170467067,"alt":0,"heading":185.0313625461962,"systemTime":1643342568977,"receiverDataTime":1643342568977,"adasSatelliteTime":1643342568977,"satelliteTime":1643342568977,"speed":15.446475982666016} +{"lon":116.73592249331148,"lat":40.201611455238066,"alt":0,"heading":185.01415046948776,"systemTime":1643342569029,"receiverDataTime":1643342569029,"adasSatelliteTime":1643342569029,"satelliteTime":1643342569029,"speed":15.487561225891113} +{"lon":116.7359210156625,"lat":40.20159883124518,"alt":0,"heading":184.96978156063935,"systemTime":1643342569086,"receiverDataTime":1643342569086,"adasSatelliteTime":1643342569086,"satelliteTime":1643342569086,"speed":15.570497512817383} +{"lon":116.7359203587056,"lat":40.20159320173221,"alt":0,"heading":184.95300661603778,"systemTime":1643342569136,"receiverDataTime":1643342569136,"adasSatelliteTime":1643342569136,"satelliteTime":1643342569136,"speed":15.610222816467285} +{"lon":116.73591921668029,"lat":40.20158332026349,"alt":0,"heading":184.91568646241285,"systemTime":1643342569189,"receiverDataTime":1643342569189,"adasSatelliteTime":1643342569189,"satelliteTime":1643342569189,"speed":15.676852226257324} +{"lon":116.73591838761321,"lat":40.20157622315618,"alt":0,"heading":184.89325612117852,"systemTime":1643342569239,"receiverDataTime":1643342569239,"adasSatelliteTime":1643342569239,"satelliteTime":1643342569239,"speed":15.73628044128418} +{"lon":116.73591755117403,"lat":40.20156908518234,"alt":0,"heading":184.86552555314827,"systemTime":1643342569289,"receiverDataTime":1643342569289,"adasSatelliteTime":1643342569289,"satelliteTime":1643342569289,"speed":15.795039176940918} +{"lon":116.73591738438449,"lat":40.20156765318198,"alt":0,"heading":184.8591598168418,"systemTime":1643342569340,"receiverDataTime":1643342569340,"adasSatelliteTime":1643342569340,"satelliteTime":1643342569340,"speed":15.805887222290039} +{"lon":116.73591604613802,"lat":40.20155614924245,"alt":0,"heading":184.8187797384687,"systemTime":1643342569391,"receiverDataTime":1643342569391,"adasSatelliteTime":1643342569391,"satelliteTime":1643342569391,"speed":15.884270668029785} +{"lon":116.73591554435131,"lat":40.20155181350138,"alt":0,"heading":184.80361671851128,"systemTime":1643342569441,"receiverDataTime":1643342569441,"adasSatelliteTime":1643342569441,"satelliteTime":1643342569441,"speed":15.913251876831055} +{"lon":116.73591437250928,"lat":40.201541654870056,"alt":0,"heading":184.77094109352194,"systemTime":1643342569491,"receiverDataTime":1643342569491,"adasSatelliteTime":1643342569491,"satelliteTime":1643342569491,"speed":15.988717079162598} +{"lon":116.73591336922088,"lat":40.20153291343309,"alt":0,"heading":184.74383890289533,"systemTime":1643342569543,"receiverDataTime":1643342569543,"adasSatelliteTime":1643342569543,"satelliteTime":1643342569543,"speed":16.062726974487305} +{"lon":116.73591270147075,"lat":40.20152707034152,"alt":0,"heading":184.7255339959197,"systemTime":1643342569594,"receiverDataTime":1643342569594,"adasSatelliteTime":1643342569594,"satelliteTime":1643342569594,"speed":16.105682373046875} +{"lon":116.73591203416998,"lat":40.20152121519612,"alt":0,"heading":184.70834923996793,"systemTime":1643342569644,"receiverDataTime":1643342569644,"adasSatelliteTime":1643342569644,"satelliteTime":1643342569644,"speed":16.146602630615234} +{"lon":116.73591120453366,"lat":40.20151388642956,"alt":0,"heading":184.68947059710203,"systemTime":1643342569695,"receiverDataTime":1643342569695,"adasSatelliteTime":1643342569695,"satelliteTime":1643342569695,"speed":16.169099807739258} +{"lon":116.73591020569889,"lat":40.20150509265295,"alt":0,"heading":184.673078143094,"systemTime":1643342569751,"receiverDataTime":1643342569751,"adasSatelliteTime":1643342569751,"satelliteTime":1643342569751,"speed":16.184558868408203} +{"lon":116.73590970448325,"lat":40.20150069176422,"alt":0,"heading":184.66365248203937,"systemTime":1643342569799,"receiverDataTime":1643342569799,"adasSatelliteTime":1643342569799,"satelliteTime":1643342569799,"speed":16.207489013671875} +{"lon":116.73590886939945,"lat":40.201493346044025,"alt":0,"heading":184.64646772608762,"systemTime":1643342569858,"receiverDataTime":1643342569858,"adasSatelliteTime":1643342569858,"satelliteTime":1643342569858,"speed":16.253381729125977} +{"lon":116.73590751174065,"lat":40.20148154379453,"alt":0,"heading":184.60537730804083,"systemTime":1643342569906,"receiverDataTime":1643342569906,"adasSatelliteTime":1643342569906,"satelliteTime":1643342569906,"speed":16.358627319335938} +{"lon":116.73590649409356,"lat":40.20147265583608,"alt":0,"heading":184.57723692866037,"systemTime":1643342569959,"receiverDataTime":1643342569959,"adasSatelliteTime":1643342569959,"satelliteTime":1643342569959,"speed":16.409290313720703} +{"lon":116.73590598656988,"lat":40.201468204394196,"alt":0,"heading":184.5636311918337,"systemTime":1643342570009,"receiverDataTime":1643342570009,"adasSatelliteTime":1643342570009,"satelliteTime":1643342570009,"speed":16.429576873779297} +{"lon":116.73590514997596,"lat":40.20146077753986,"alt":0,"heading":184.54210243556983,"systemTime":1643342570059,"receiverDataTime":1643342570059,"adasSatelliteTime":1643342570059,"satelliteTime":1643342570059,"speed":16.45374870300293} +{"lon":116.73590432548929,"lat":40.20145334473671,"alt":0,"heading":184.52986273657717,"systemTime":1643342570109,"receiverDataTime":1643342570109,"adasSatelliteTime":1643342570109,"satelliteTime":1643342570109,"speed":16.470190048217773} +{"lon":116.73590334698434,"lat":40.201444410584536,"alt":0,"heading":184.5148909619165,"systemTime":1643342570159,"receiverDataTime":1643342570159,"adasSatelliteTime":1643342570159,"satelliteTime":1643342570159,"speed":16.517906188964844} +{"lon":116.73590205181948,"lat":40.20143244572696,"alt":0,"heading":184.50142182887322,"systemTime":1643342570220,"receiverDataTime":1643342570220,"adasSatelliteTime":1643342570220,"satelliteTime":1643342570220,"speed":16.60931396484375} +{"lon":116.7359012326093,"lat":40.20142491498362,"alt":0,"heading":184.49317096035585,"systemTime":1643342570269,"receiverDataTime":1643342570269,"adasSatelliteTime":1643342570269,"satelliteTime":1643342570269,"speed":16.662519454956055} +{"lon":116.7359007392486,"lat":40.20142038319944,"alt":0,"heading":184.48890892231378,"systemTime":1643342570321,"receiverDataTime":1643342570321,"adasSatelliteTime":1643342570321,"satelliteTime":1643342570321,"speed":16.690093994140625} +{"lon":116.73589957829118,"lat":40.20140977144429,"alt":0,"heading":184.47109578895837,"systemTime":1643342570370,"receiverDataTime":1643342570370,"adasSatelliteTime":1643342570370,"satelliteTime":1643342570370,"speed":16.75142478942871} +{"lon":116.7358989085669,"lat":40.20140368074133,"alt":0,"heading":184.4539383537633,"systemTime":1643342570421,"receiverDataTime":1643342570421,"adasSatelliteTime":1643342570421,"satelliteTime":1643342570421,"speed":16.799522399902344} +{"lon":116.73589857230174,"lat":40.20140062727692,"alt":0,"heading":184.44721744762,"systemTime":1643342570476,"receiverDataTime":1643342570476,"adasSatelliteTime":1643342570476,"satelliteTime":1643342570476,"speed":16.82195281982422} +{"lon":116.73589706017964,"lat":40.2013868437893,"alt":0,"heading":184.4138041622003,"systemTime":1643342570524,"receiverDataTime":1643342570524,"adasSatelliteTime":1643342570524,"satelliteTime":1643342570524,"speed":16.907175064086914} +{"lon":116.73589622291342,"lat":40.20137916957264,"alt":0,"heading":184.4009634065607,"systemTime":1643342570575,"receiverDataTime":1643342570575,"adasSatelliteTime":1643342570575,"satelliteTime":1643342570575,"speed":16.936473846435547} +{"lon":116.73589572464549,"lat":40.20137456258552,"alt":0,"heading":184.39416053814736,"systemTime":1643342570626,"receiverDataTime":1643342570626,"adasSatelliteTime":1643342570626,"satelliteTime":1643342570626,"speed":16.946996688842773} +{"lon":116.73589457166668,"lat":40.20136380970115,"alt":0,"heading":184.40484295400924,"systemTime":1643342570679,"receiverDataTime":1643342570679,"adasSatelliteTime":1643342570679,"satelliteTime":1643342570679,"speed":16.969345092773438} +{"lon":116.73589391622077,"lat":40.20135765961496,"alt":0,"heading":184.42325714401161,"systemTime":1643342570730,"receiverDataTime":1643342570730,"adasSatelliteTime":1643342570730,"satelliteTime":1643342570730,"speed":16.995328903198242} +{"lon":116.73589310143932,"lat":40.201349961207605,"alt":0,"heading":184.4535285424131,"systemTime":1643342570781,"receiverDataTime":1643342570781,"adasSatelliteTime":1643342570781,"satelliteTime":1643342570781,"speed":17.033788681030273} +{"lon":116.73589244618198,"lat":40.201343791279704,"alt":0,"heading":184.48716039388626,"systemTime":1643342570830,"receiverDataTime":1643342570830,"adasSatelliteTime":1643342570830,"satelliteTime":1643342570830,"speed":17.069801330566406} +{"lon":116.73589161954821,"lat":40.20133606510791,"alt":0,"heading":184.52879722706663,"systemTime":1643342570881,"receiverDataTime":1643342570881,"adasSatelliteTime":1643342570881,"satelliteTime":1643342570881,"speed":17.11014747619629} +{"lon":116.735890613143,"lat":40.2013267762517,"alt":0,"heading":184.59188085424088,"systemTime":1643342570931,"receiverDataTime":1643342570931,"adasSatelliteTime":1643342570931,"satelliteTime":1643342570931,"speed":17.15621566772461} +{"lon":116.73588993403524,"lat":40.20132057406921,"alt":0,"heading":184.63851738589372,"systemTime":1643342570981,"receiverDataTime":1643342570981,"adasSatelliteTime":1643342570981,"satelliteTime":1643342570981,"speed":17.182350158691406} +{"lon":116.73588924632793,"lat":40.201314364165356,"alt":0,"heading":184.6852632005733,"systemTime":1643342571033,"receiverDataTime":1643342571033,"adasSatelliteTime":1643342571033,"satelliteTime":1643342571033,"speed":17.21034049987793} +{"lon":116.73588765056886,"lat":40.20130036005935,"alt":0,"heading":184.79667724631454,"systemTime":1643342571083,"receiverDataTime":1643342571083,"adasSatelliteTime":1643342571083,"satelliteTime":1643342571083,"speed":17.285400390625} +{"lon":116.7358867515832,"lat":40.201292557648955,"alt":0,"heading":184.85978819424545,"systemTime":1643342571133,"receiverDataTime":1643342571133,"adasSatelliteTime":1643342571133,"satelliteTime":1643342571133,"speed":17.32651138305664} +{"lon":116.73588657059473,"lat":40.20129099534557,"alt":0,"heading":184.87186396869805,"systemTime":1643342571188,"receiverDataTime":1643342571188,"adasSatelliteTime":1643342571188,"satelliteTime":1643342571188,"speed":17.33397674560547} +{"lon":116.73588584206654,"lat":40.20128474022319,"alt":0,"heading":184.91836389656748,"systemTime":1643342571238,"receiverDataTime":1643342571238,"adasSatelliteTime":1643342571238,"satelliteTime":1643342571238,"speed":17.36580467224121} +{"lon":116.73588378747874,"lat":40.20126745661915,"alt":0,"heading":185.04103409406093,"systemTime":1643342571288,"receiverDataTime":1643342571288,"adasSatelliteTime":1643342571288,"satelliteTime":1643342571288,"speed":17.446460723876953} +{"lon":116.7358834105095,"lat":40.20126430439515,"alt":0,"heading":185.06780843560736,"systemTime":1643342571339,"receiverDataTime":1643342571339,"adasSatelliteTime":1643342571339,"satelliteTime":1643342571339,"speed":17.44988250732422} +{"lon":116.73588227109971,"lat":40.201254834376435,"alt":0,"heading":185.15356829082606,"systemTime":1643342571390,"receiverDataTime":1643342571390,"adasSatelliteTime":1643342571390,"satelliteTime":1643342571390,"speed":17.478193283081055} +{"lon":116.73588092258892,"lat":40.20124374836485,"alt":0,"heading":185.25066626006696,"systemTime":1643342571440,"receiverDataTime":1643342571440,"adasSatelliteTime":1643342571440,"satelliteTime":1643342571440,"speed":17.536413192749023} +{"lon":116.73588013448465,"lat":40.201237393439676,"alt":0,"heading":185.30060860327808,"systemTime":1643342571499,"receiverDataTime":1643342571499,"adasSatelliteTime":1643342571499,"satelliteTime":1643342571499,"speed":17.579299926757812} +{"lon":116.73587933953162,"lat":40.20123102852555,"alt":0,"heading":185.344676983803,"systemTime":1643342571546,"receiverDataTime":1643342571546,"adasSatelliteTime":1643342571546,"satelliteTime":1643342571546,"speed":17.613615036010742} +{"lon":116.73587853863793,"lat":40.20122465523385,"alt":0,"heading":185.38806234541093,"systemTime":1643342571597,"receiverDataTime":1643342571597,"adasSatelliteTime":1643342571597,"satelliteTime":1643342571597,"speed":17.644926071166992} +{"lon":116.7358775243534,"lat":40.2012166766539,"alt":0,"heading":185.4382232546755,"systemTime":1643342571647,"receiverDataTime":1643342571647,"adasSatelliteTime":1643342571647,"satelliteTime":1643342571647,"speed":17.68751335144043} +{"lon":116.73587629849487,"lat":40.20120708413481,"alt":0,"heading":185.50606069351207,"systemTime":1643342571706,"receiverDataTime":1643342571706,"adasSatelliteTime":1643342571706,"satelliteTime":1643342571706,"speed":17.7341251373291} +{"lon":116.73587568092177,"lat":40.2012022812639,"alt":0,"heading":185.5383265071512,"systemTime":1643342571754,"receiverDataTime":1643342571754,"adasSatelliteTime":1643342571754,"satelliteTime":1643342571754,"speed":17.753826141357422} +{"lon":116.73587337570102,"lat":40.20118463249306,"alt":0,"heading":185.67864591345995,"systemTime":1643342571803,"receiverDataTime":1643342571803,"adasSatelliteTime":1643342571803,"satelliteTime":1643342571803,"speed":17.815397262573242} +{"lon":116.73587231657186,"lat":40.20117660291753,"alt":0,"heading":185.74224863501112,"systemTime":1643342571853,"receiverDataTime":1643342571853,"adasSatelliteTime":1643342571853,"satelliteTime":1643342571853,"speed":17.837318420410156} +{"lon":116.73587146178124,"lat":40.20117017293257,"alt":0,"heading":185.7918358083854,"systemTime":1643342571907,"receiverDataTime":1643342571907,"adasSatelliteTime":1643342571907,"satelliteTime":1643342571907,"speed":17.861841201782227} +{"lon":116.7358712439586,"lat":40.201168564518426,"alt":0,"heading":185.80172592230358,"systemTime":1643342571956,"receiverDataTime":1643342571956,"adasSatelliteTime":1643342571956,"satelliteTime":1643342571956,"speed":17.86859130859375} +{"lon":116.73586901477479,"lat":40.201152430895924,"alt":0,"heading":185.90324985412664,"systemTime":1643342572007,"receiverDataTime":1643342572007,"adasSatelliteTime":1643342572007,"satelliteTime":1643342572007,"speed":17.979856491088867} +{"lon":116.73586810975546,"lat":40.20114596016942,"alt":0,"heading":185.94753680070502,"systemTime":1643342572061,"receiverDataTime":1643342572061,"adasSatelliteTime":1643342572061,"satelliteTime":1643342572061,"speed":17.994884490966797} +{"lon":116.73586719434559,"lat":40.201139490004365,"alt":0,"heading":185.9934356719275,"systemTime":1643342572110,"receiverDataTime":1643342572110,"adasSatelliteTime":1643342572110,"satelliteTime":1643342572110,"speed":17.993131637573242} +{"lon":116.73586627022009,"lat":40.201133021266955,"alt":0,"heading":186.03624729764513,"systemTime":1643342572160,"receiverDataTime":1643342572160,"adasSatelliteTime":1643342572160,"satelliteTime":1643342572160,"speed":17.999698638916016} +{"lon":116.73586510138495,"lat":40.201124929668104,"alt":0,"heading":186.08949545241455,"systemTime":1643342572211,"receiverDataTime":1643342572211,"adasSatelliteTime":1643342572211,"satelliteTime":1643342572211,"speed":18.027721405029297} +{"lon":116.73586367822563,"lat":40.20111517934372,"alt":0,"heading":186.15140428705155,"systemTime":1643342572262,"receiverDataTime":1643342572262,"adasSatelliteTime":1643342572262,"satelliteTime":1643342572262,"speed":18.1201171875} +{"lon":116.73586175510636,"lat":40.20110209485546,"alt":0,"heading":186.23361244390182,"systemTime":1643342572321,"receiverDataTime":1643342572321,"adasSatelliteTime":1643342572321,"satelliteTime":1643342572321,"speed":18.227510452270508} +{"lon":116.73586053505731,"lat":40.201093888000344,"alt":0,"heading":186.28339086257287,"systemTime":1643342572372,"receiverDataTime":1643342572372,"adasSatelliteTime":1643342572372,"satelliteTime":1643342572372,"speed":18.25605010986328} +{"lon":116.73586053505731,"lat":40.201093888000344,"alt":0,"heading":186.28339086257287,"systemTime":1643342572422,"receiverDataTime":1643342572422,"adasSatelliteTime":1643342572422,"satelliteTime":1643342572422,"speed":18.25605010986328} +{"lon":116.73585906472276,"lat":40.201084026931,"alt":0,"heading":186.35218452789326,"systemTime":1643342572475,"receiverDataTime":1643342572475,"adasSatelliteTime":1643342572475,"satelliteTime":1643342572475,"speed":18.27260971069336} +{"lon":116.7358573369834,"lat":40.20107251001956,"alt":0,"heading":186.4399114775929,"systemTime":1643342572526,"receiverDataTime":1643342572526,"adasSatelliteTime":1643342572526,"satelliteTime":1643342572526,"speed":18.30006980895996} +{"lon":116.73585608585438,"lat":40.201064274204455,"alt":0,"heading":186.5022301235801,"systemTime":1643342572578,"receiverDataTime":1643342572578,"adasSatelliteTime":1643342572578,"satelliteTime":1643342572578,"speed":18.333160400390625} +{"lon":116.73585507829705,"lat":40.20105767781972,"alt":0,"heading":186.54640778713173,"systemTime":1643342572625,"receiverDataTime":1643342572625,"adasSatelliteTime":1643342572625,"satelliteTime":1643342572625,"speed":18.35810661315918} +{"lon":116.73585355096604,"lat":40.20104776990896,"alt":0,"heading":186.61014711246628,"systemTime":1643342572677,"receiverDataTime":1643342572677,"adasSatelliteTime":1643342572677,"satelliteTime":1643342572677,"speed":18.40038299560547} +{"lon":116.73585226063223,"lat":40.20103949704082,"alt":0,"heading":186.66577217306687,"systemTime":1643342572727,"receiverDataTime":1643342572727,"adasSatelliteTime":1643342572727,"satelliteTime":1643342572727,"speed":18.448444366455078} +{"lon":116.73585121912701,"lat":40.20103286356179,"alt":0,"heading":186.70833791197438,"systemTime":1643342572778,"receiverDataTime":1643342572778,"adasSatelliteTime":1643342572778,"satelliteTime":1643342572778,"speed":18.494083404541016} +{"lon":116.73585016792813,"lat":40.201026217215194,"alt":0,"heading":186.75155934904222,"systemTime":1643342572827,"receiverDataTime":1643342572827,"adasSatelliteTime":1643342572827,"satelliteTime":1643342572827,"speed":18.530853271484375} +{"lon":116.73584858074787,"lat":40.20101623087063,"alt":0,"heading":186.8175116556679,"systemTime":1643342572878,"receiverDataTime":1643342572878,"adasSatelliteTime":1643342572878,"satelliteTime":1643342572878,"speed":18.567087173461914} +{"lon":116.73584724451398,"lat":40.20100790090888,"alt":0,"heading":186.87488524469597,"systemTime":1643342572927,"receiverDataTime":1643342572927,"adasSatelliteTime":1643342572927,"satelliteTime":1643342572927,"speed":18.585535049438477} +{"lon":116.7358453557998,"lat":40.2009962315647,"alt":0,"heading":186.9589512130005,"systemTime":1643342572980,"receiverDataTime":1643342572980,"adasSatelliteTime":1643342572980,"satelliteTime":1643342572980,"speed":18.606534957885742} +{"lon":116.73584454139694,"lat":40.20099122747479,"alt":0,"heading":186.99605280057202,"systemTime":1643342573029,"receiverDataTime":1643342573029,"adasSatelliteTime":1643342573029,"satelliteTime":1643342573029,"speed":18.61705207824707} +{"lon":116.73584206792836,"lat":40.20097619455514,"alt":0,"heading":187.10282231767766,"systemTime":1643342573079,"receiverDataTime":1643342573079,"adasSatelliteTime":1643342573079,"satelliteTime":1643342573079,"speed":18.674121856689453} +{"lon":116.73584067182317,"lat":40.200967825838035,"alt":0,"heading":187.15738186876771,"systemTime":1643342573129,"receiverDataTime":1643342573129,"adasSatelliteTime":1643342573129,"satelliteTime":1643342573129,"speed":18.70440101623535} +{"lon":116.73583926506302,"lat":40.200959449215325,"alt":0,"heading":187.21071198580717,"systemTime":1643342573181,"receiverDataTime":1643342573181,"adasSatelliteTime":1643342573181,"satelliteTime":1643342573181,"speed":18.721296310424805} +{"lon":116.73583783847151,"lat":40.20095106393458,"alt":0,"heading":187.24557327133093,"systemTime":1643342573247,"receiverDataTime":1643342573247,"adasSatelliteTime":1643342573247,"satelliteTime":1643342573247,"speed":18.7413387298584} +{"lon":116.73583638965732,"lat":40.200942664101404,"alt":0,"heading":187.2754348583822,"systemTime":1643342573298,"receiverDataTime":1643342573298,"adasSatelliteTime":1643342573298,"satelliteTime":1643342573298,"speed":18.776227951049805} +{"lon":116.73583521946735,"lat":40.20093593194467,"alt":0,"heading":187.28740134980808,"systemTime":1643342573355,"receiverDataTime":1643342573355,"adasSatelliteTime":1643342573355,"satelliteTime":1643342573355,"speed":18.80673599243164} +{"lon":116.73583375427582,"lat":40.2009275013606,"alt":0,"heading":187.29723682221288,"systemTime":1643342573406,"receiverDataTime":1643342573406,"adasSatelliteTime":1643342573406,"satelliteTime":1643342573406,"speed":18.83928871154785} +{"lon":116.73583198269274,"lat":40.20091736509331,"alt":0,"heading":187.28882202915543,"systemTime":1643342573456,"receiverDataTime":1643342573456,"adasSatelliteTime":1643342573456,"satelliteTime":1643342573456,"speed":18.873992919921875} +{"lon":116.73583079719829,"lat":40.20091059789656,"alt":0,"heading":187.27289402801097,"systemTime":1643342573508,"receiverDataTime":1643342573508,"adasSatelliteTime":1643342573508,"satelliteTime":1643342573508,"speed":18.891128540039062} +{"lon":116.7358296136402,"lat":40.20090382615908,"alt":0,"heading":187.25461644179202,"systemTime":1643342573559,"receiverDataTime":1643342573559,"adasSatelliteTime":1643342573559,"satelliteTime":1643342573559,"speed":18.904647827148438} +{"lon":116.7358266714481,"lat":40.20088688449108,"alt":0,"heading":187.19688768292707,"systemTime":1643342573609,"receiverDataTime":1643342573609,"adasSatelliteTime":1643342573609,"satelliteTime":1643342573609,"speed":18.931432723999023} +{"lon":116.73582637872262,"lat":40.20088518908297,"alt":0,"heading":187.19087711645744,"systemTime":1643342573658,"receiverDataTime":1643342573658,"adasSatelliteTime":1643342573658,"satelliteTime":1643342573658,"speed":18.934324264526367} +{"lon":116.73582346329566,"lat":40.2008682220375,"alt":0,"heading":187.1167012620711,"systemTime":1643342573717,"receiverDataTime":1643342573717,"adasSatelliteTime":1643342573717,"satelliteTime":1643342573717,"speed":18.977571487426758} +{"lon":116.73582201528593,"lat":40.20085972531162,"alt":0,"heading":187.0752283534308,"systemTime":1643342573768,"receiverDataTime":1643342573768,"adasSatelliteTime":1643342573768,"satelliteTime":1643342573768,"speed":18.985326766967773} +{"lon":116.73582201528593,"lat":40.20085972531162,"alt":0,"heading":187.0752283534308,"systemTime":1643342573816,"receiverDataTime":1643342573816,"adasSatelliteTime":1643342573816,"satelliteTime":1643342573816,"speed":18.985326766967773} +{"lon":116.73581943137619,"lat":40.20084442306803,"alt":0,"heading":186.99255574371696,"systemTime":1643342573870,"receiverDataTime":1643342573870,"adasSatelliteTime":1643342573870,"satelliteTime":1643342573870,"speed":19.000207901000977} +{"lon":116.7358182923582,"lat":40.200837618308945,"alt":0,"heading":186.96015332629443,"systemTime":1643342573923,"receiverDataTime":1643342573923,"adasSatelliteTime":1643342573923,"satelliteTime":1643342573923,"speed":19.014530181884766} +{"lon":116.73581687436561,"lat":40.20082910212333,"alt":0,"heading":186.91709581376665,"systemTime":1643342573973,"receiverDataTime":1643342573973,"adasSatelliteTime":1643342573973,"satelliteTime":1643342573973,"speed":19.037296295166016} +{"lon":116.73581602689951,"lat":40.20082398916366,"alt":0,"heading":186.89108645340724,"systemTime":1643342574025,"receiverDataTime":1643342574025,"adasSatelliteTime":1643342574025,"satelliteTime":1643342574025,"speed":19.042434692382812} +{"lon":116.73581461906824,"lat":40.200815466411505,"alt":0,"heading":186.8511708278977,"systemTime":1643342574077,"receiverDataTime":1643342574077,"adasSatelliteTime":1643342574077,"satelliteTime":1643342574077,"speed":19.0456485748291} +{"lon":116.73581321684432,"lat":40.20080694225959,"alt":0,"heading":186.80729369266953,"systemTime":1643342574130,"receiverDataTime":1643342574130,"adasSatelliteTime":1643342574130,"satelliteTime":1643342574130,"speed":19.049291610717773} +{"lon":116.73581043766917,"lat":40.20078987755242,"alt":0,"heading":186.71948478069984,"systemTime":1643342574185,"receiverDataTime":1643342574185,"adasSatelliteTime":1643342574185,"satelliteTime":1643342574185,"speed":19.083433151245117} +{"lon":116.73581043766917,"lat":40.20078987755242,"alt":0,"heading":186.71948478069984,"systemTime":1643342574234,"receiverDataTime":1643342574234,"adasSatelliteTime":1643342574234,"satelliteTime":1643342574234,"speed":19.083433151245117} +{"lon":116.73580988495772,"lat":40.200786460316735,"alt":0,"heading":186.70262787382825,"systemTime":1643342574294,"receiverDataTime":1643342574294,"adasSatelliteTime":1643342574294,"satelliteTime":1643342574294,"speed":19.09325408935547} +{"lon":116.73580850642642,"lat":40.20077789336184,"alt":0,"heading":186.65036326629934,"systemTime":1643342574345,"receiverDataTime":1643342574345,"adasSatelliteTime":1643342574345,"satelliteTime":1643342574345,"speed":19.12448501586914} +{"lon":116.73580795983413,"lat":40.20077446809639,"alt":0,"heading":186.6336702839678,"systemTime":1643342574395,"receiverDataTime":1643342574395,"adasSatelliteTime":1643342574395,"satelliteTime":1643342574395,"speed":19.13143539428711} +{"lon":116.73580605962609,"lat":40.20076246696723,"alt":0,"heading":186.57531314769923,"systemTime":1643342574446,"receiverDataTime":1643342574446,"adasSatelliteTime":1643342574446,"satelliteTime":1643342574446,"speed":19.14063262939453} +{"lon":116.73580311545373,"lat":40.20074356174902,"alt":0,"heading":186.4861928394089,"systemTime":1643342574499,"receiverDataTime":1643342574499,"adasSatelliteTime":1643342574499,"satelliteTime":1643342574499,"speed":19.168519973754883} +{"lon":116.7358009944433,"lat":40.20072979324919,"alt":0,"heading":186.42283600466786,"systemTime":1643342574562,"receiverDataTime":1643342574562,"adasSatelliteTime":1643342574562,"satelliteTime":1643342574562,"speed":19.19639015197754} +{"lon":116.73579915393611,"lat":40.20071772962017,"alt":0,"heading":186.3638778117523,"systemTime":1643342574619,"receiverDataTime":1643342574619,"adasSatelliteTime":1643342574619,"satelliteTime":1643342574619,"speed":19.228328704833984} +{"lon":116.73579836668341,"lat":40.20071255465954,"alt":0,"heading":186.33874271560666,"systemTime":1643342574673,"receiverDataTime":1643342574673,"adasSatelliteTime":1643342574673,"satelliteTime":1643342574673,"speed":19.23927879333496} +{"lon":116.735797061411,"lat":40.20070392736998,"alt":0,"heading":186.29737908999306,"systemTime":1643342574730,"receiverDataTime":1643342574730,"adasSatelliteTime":1643342574730,"satelliteTime":1643342574730,"speed":19.243242263793945} +{"lon":116.73579472744024,"lat":40.20068840098192,"alt":0,"heading":186.22670029246177,"systemTime":1643342574774,"receiverDataTime":1643342574774,"adasSatelliteTime":1643342574774,"satelliteTime":1643342574774,"speed":19.23833465576172} +{"lon":116.7357942136885,"lat":40.20068495144638,"alt":0,"heading":186.21213832915132,"systemTime":1643342574825,"receiverDataTime":1643342574825,"adasSatelliteTime":1643342574825,"satelliteTime":1643342574825,"speed":19.2374267578125} +{"lon":116.73579191253675,"lat":40.20066941509357,"alt":0,"heading":186.14252504113054,"systemTime":1643342574875,"receiverDataTime":1643342574875,"adasSatelliteTime":1643342574875,"satelliteTime":1643342574875,"speed":19.28202247619629} +{"lon":116.73579063930028,"lat":40.200660762001434,"alt":0,"heading":186.10605183096266,"systemTime":1643342574927,"receiverDataTime":1643342574927,"adasSatelliteTime":1643342574927,"satelliteTime":1643342574927,"speed":19.324615478515625} +{"lon":116.73578937635581,"lat":40.20065209540974,"alt":0,"heading":186.06414179021547,"systemTime":1643342574978,"receiverDataTime":1643342574978,"adasSatelliteTime":1643342574978,"satelliteTime":1643342574978,"speed":19.34026527404785} +{"lon":116.73578812399715,"lat":40.20064342987517,"alt":0,"heading":186.02359778730226,"systemTime":1643342575030,"receiverDataTime":1643342575030,"adasSatelliteTime":1643342575030,"satelliteTime":1643342575030,"speed":19.3266658782959} +{"lon":116.73578737678011,"lat":40.20063823450251,"alt":0,"heading":185.9983534081299,"systemTime":1643342575081,"receiverDataTime":1643342575081,"adasSatelliteTime":1643342575081,"satelliteTime":1643342575081,"speed":19.314334869384766} +{"lon":116.7357861397118,"lat":40.20062957996038,"alt":0,"heading":185.95903883926732,"systemTime":1643342575131,"receiverDataTime":1643342575131,"adasSatelliteTime":1643342575131,"satelliteTime":1643342575131,"speed":19.306941986083984} +{"lon":116.73578442554789,"lat":40.20061746294158,"alt":0,"heading":185.906719590225,"systemTime":1643342575182,"receiverDataTime":1643342575182,"adasSatelliteTime":1643342575182,"satelliteTime":1643342575182,"speed":19.315771102905273} +{"lon":116.73578442554789,"lat":40.20061746294158,"alt":0,"heading":185.906719590225,"systemTime":1643342575232,"receiverDataTime":1643342575232,"adasSatelliteTime":1643342575232,"satelliteTime":1643342575232,"speed":19.315771102905273} +{"lon":116.73578222248636,"lat":40.2006018437874,"alt":0,"heading":185.82481196169823,"systemTime":1643342575282,"receiverDataTime":1643342575282,"adasSatelliteTime":1643342575282,"satelliteTime":1643342575282,"speed":19.35626983642578} +{"lon":116.7357807567209,"lat":40.20059140286754,"alt":0,"heading":185.77806614701865,"systemTime":1643342575332,"receiverDataTime":1643342575332,"adasSatelliteTime":1643342575332,"satelliteTime":1643342575332,"speed":19.413835525512695} +{"lon":116.73577978086433,"lat":40.200584426537795,"alt":0,"heading":185.7410192009605,"systemTime":1643342575384,"receiverDataTime":1643342575384,"adasSatelliteTime":1643342575384,"satelliteTime":1643342575384,"speed":19.439023971557617} +{"lon":116.73577808159538,"lat":40.20057219130507,"alt":0,"heading":185.67244410169357,"systemTime":1643342575434,"receiverDataTime":1643342575434,"adasSatelliteTime":1643342575434,"satelliteTime":1643342575434,"speed":19.473604202270508} +{"lon":116.73577783986715,"lat":40.20057044276315,"alt":0,"heading":185.66340093123247,"systemTime":1643342575484,"receiverDataTime":1643342575484,"adasSatelliteTime":1643342575484,"satelliteTime":1643342575484,"speed":19.470138549804688} +{"lon":116.73577663859841,"lat":40.20056170571561,"alt":0,"heading":185.61307609742784,"systemTime":1643342575539,"receiverDataTime":1643342575539,"adasSatelliteTime":1643342575539,"satelliteTime":1643342575539,"speed":19.449140548706055} +{"lon":116.73577521078607,"lat":40.20055123426073,"alt":0,"heading":185.55466431964587,"systemTime":1643342575594,"receiverDataTime":1643342575594,"adasSatelliteTime":1643342575594,"satelliteTime":1643342575594,"speed":19.429052352905273} +{"lon":116.73577356184238,"lat":40.200539024648606,"alt":0,"heading":185.487537220483,"systemTime":1643342575644,"receiverDataTime":1643342575644,"adasSatelliteTime":1643342575644,"satelliteTime":1643342575644,"speed":19.433218002319336} +{"lon":116.73577216418104,"lat":40.20052854986381,"alt":0,"heading":185.43281374485287,"systemTime":1643342575695,"receiverDataTime":1643342575695,"adasSatelliteTime":1643342575695,"satelliteTime":1643342575695,"speed":19.457719802856445} +{"lon":116.73577100520002,"lat":40.20051981013964,"alt":0,"heading":185.3837183450988,"systemTime":1643342575745,"receiverDataTime":1643342575745,"adasSatelliteTime":1643342575745,"satelliteTime":1643342575745,"speed":19.48369026184082} +{"lon":116.73577031383809,"lat":40.20051456183174,"alt":0,"heading":185.35311909761714,"systemTime":1643342575795,"receiverDataTime":1643342575795,"adasSatelliteTime":1643342575795,"satelliteTime":1643342575795,"speed":19.492263793945312} +{"lon":116.73576916883204,"lat":40.200505811578196,"alt":0,"heading":185.29910596166067,"systemTime":1643342575846,"receiverDataTime":1643342575846,"adasSatelliteTime":1643342575846,"satelliteTime":1643342575846,"speed":19.499174118041992} +{"lon":116.73576803363284,"lat":40.20049705824654,"alt":0,"heading":185.24875380709935,"systemTime":1643342575900,"receiverDataTime":1643342575900,"adasSatelliteTime":1643342575900,"satelliteTime":1643342575900,"speed":19.506298065185547} +{"lon":116.73576601392617,"lat":40.20048128744471,"alt":0,"heading":185.1597974233491,"systemTime":1643342575951,"receiverDataTime":1643342575951,"adasSatelliteTime":1643342575951,"satelliteTime":1643342575951,"speed":19.533109664916992} +{"lon":116.73576512892113,"lat":40.20047427254707,"alt":0,"heading":185.11578368433754,"systemTime":1643342576002,"receiverDataTime":1643342576002,"adasSatelliteTime":1643342576002,"satelliteTime":1643342576002,"speed":19.538070678710938} +{"lon":116.73576425055876,"lat":40.20046725660832,"alt":0,"heading":185.0747205870474,"systemTime":1643342576052,"receiverDataTime":1643342576052,"adasSatelliteTime":1643342576052,"satelliteTime":1643342576052,"speed":19.53856086730957} +{"lon":116.73576338205078,"lat":40.200460242846326,"alt":0,"heading":185.03330231992047,"systemTime":1643342576103,"receiverDataTime":1643342576103,"adasSatelliteTime":1643342576103,"satelliteTime":1643342576103,"speed":19.526945114135742} +{"lon":116.73576230733313,"lat":40.20045148159051,"alt":0,"heading":184.98431620319315,"systemTime":1643342576152,"receiverDataTime":1643342576152,"adasSatelliteTime":1643342576152,"satelliteTime":1643342576152,"speed":19.512392044067383} +{"lon":116.73576103417444,"lat":40.20044097839944,"alt":0,"heading":184.92494819892738,"systemTime":1643342576208,"receiverDataTime":1643342576208,"adasSatelliteTime":1643342576208,"satelliteTime":1643342576208,"speed":19.48499298095703} +{"lon":116.73576019445488,"lat":40.200433985002284,"alt":0,"heading":184.8875460830324,"systemTime":1643342576258,"receiverDataTime":1643342576258,"adasSatelliteTime":1643342576258,"satelliteTime":1643342576258,"speed":19.47047233581543} +{"lon":116.73575935976396,"lat":40.20042699403738,"alt":0,"heading":184.84574532531192,"systemTime":1643342576313,"receiverDataTime":1643342576313,"adasSatelliteTime":1643342576313,"satelliteTime":1643342576313,"speed":19.469091415405273} +{"lon":116.73575832132184,"lat":40.20041825723004,"alt":0,"heading":184.79643135950442,"systemTime":1643342576360,"receiverDataTime":1643342576360,"adasSatelliteTime":1643342576360,"satelliteTime":1643342576360,"speed":19.463930130004883} +{"lon":116.73575708794957,"lat":40.2004077725779,"alt":0,"heading":184.73679014767188,"systemTime":1643342576411,"receiverDataTime":1643342576411,"adasSatelliteTime":1643342576411,"satelliteTime":1643342576411,"speed":19.462017059326172} +{"lon":116.73575627314624,"lat":40.20040079027772,"alt":0,"heading":184.69351406909067,"systemTime":1643342576463,"receiverDataTime":1643342576463,"adasSatelliteTime":1643342576463,"satelliteTime":1643342576463,"speed":19.42827796936035} +{"lon":116.73575446740733,"lat":40.200385128864234,"alt":0,"heading":184.6074810063052,"systemTime":1643342576522,"receiverDataTime":1643342576522,"adasSatelliteTime":1643342576522,"satelliteTime":1643342576522,"speed":19.334802627563477} +{"lon":116.7357532891697,"lat":40.20037472691122,"alt":0,"heading":184.55027134181717,"systemTime":1643342576573,"receiverDataTime":1643342576573,"adasSatelliteTime":1643342576573,"satelliteTime":1643342576573,"speed":19.2914981842041} +{"lon":116.7357525153596,"lat":40.20036780306213,"alt":0,"heading":184.5147816788898,"systemTime":1643342576622,"receiverDataTime":1643342576622,"adasSatelliteTime":1643342576622,"satelliteTime":1643342576622,"speed":19.265501022338867} +{"lon":116.73575174969044,"lat":40.20036088657294,"alt":0,"heading":184.4797018273126,"systemTime":1643342576673,"receiverDataTime":1643342576673,"adasSatelliteTime":1643342576673,"satelliteTime":1643342576673,"speed":19.246301651000977} +{"lon":116.73575080429175,"lat":40.200352255688145,"alt":0,"heading":184.43765518278198,"systemTime":1643342576722,"receiverDataTime":1643342576722,"adasSatelliteTime":1643342576722,"satelliteTime":1643342576722,"speed":19.19640350341797} +{"lon":116.73574968872767,"lat":40.20034193186265,"alt":0,"heading":184.39514408538784,"systemTime":1643342576773,"receiverDataTime":1643342576773,"adasSatelliteTime":1643342576773,"satelliteTime":1643342576773,"speed":19.127058029174805} +{"lon":116.73574895128866,"lat":40.20033507014833,"alt":0,"heading":184.36981774394542,"systemTime":1643342576823,"receiverDataTime":1643342576823,"adasSatelliteTime":1643342576823,"satelliteTime":1643342576823,"speed":19.077072143554688} +{"lon":116.73574821882974,"lat":40.20032822549433,"alt":0,"heading":184.34604868563378,"systemTime":1643342576874,"receiverDataTime":1643342576874,"adasSatelliteTime":1643342576874,"satelliteTime":1643342576874,"speed":19.03225326538086} +{"lon":116.7357474925867,"lat":40.20032139469392,"alt":0,"heading":184.32012128754442,"systemTime":1643342576927,"receiverDataTime":1643342576927,"adasSatelliteTime":1643342576927,"satelliteTime":1643342576927,"speed":18.99692726135254} +{"lon":116.73574569946638,"lat":40.200304361545975,"alt":0,"heading":184.24493456516092,"systemTime":1643342576976,"receiverDataTime":1643342576976,"adasSatelliteTime":1643342576976,"satelliteTime":1643342576976,"speed":18.93564796447754} +{"lon":116.73574569946638,"lat":40.200304361545975,"alt":0,"heading":184.24493456516092,"systemTime":1643342577026,"receiverDataTime":1643342577026,"adasSatelliteTime":1643342577026,"satelliteTime":1643342577026,"speed":18.93564796447754} +{"lon":116.73574429384219,"lat":40.200290778596376,"alt":0,"heading":184.19190497644493,"systemTime":1643342577076,"receiverDataTime":1643342577076,"adasSatelliteTime":1643342577076,"satelliteTime":1643342577076,"speed":18.860794067382812} +{"lon":116.7357437746085,"lat":40.200285701735794,"alt":0,"heading":184.17417380535957,"systemTime":1643342577129,"receiverDataTime":1643342577129,"adasSatelliteTime":1643342577129,"satelliteTime":1643342577129,"speed":18.818971633911133} +{"lon":116.7357429161981,"lat":40.20027726782595,"alt":0,"heading":184.14406633149815,"systemTime":1643342577182,"receiverDataTime":1643342577182,"adasSatelliteTime":1643342577182,"satelliteTime":1643342577182,"speed":18.739267349243164} +{"lon":116.73574206878206,"lat":40.200268868833135,"alt":0,"heading":184.1183028579489,"systemTime":1643342577232,"receiverDataTime":1643342577232,"adasSatelliteTime":1643342577232,"satelliteTime":1643342577232,"speed":18.664325714111328} +{"lon":116.73574055652017,"lat":40.200253831021726,"alt":0,"heading":184.06680323160697,"systemTime":1643342577282,"receiverDataTime":1643342577282,"adasSatelliteTime":1643342577282,"satelliteTime":1643342577282,"speed":18.522714614868164} +{"lon":116.73573973014302,"lat":40.20024552327871,"alt":0,"heading":184.04931794733176,"systemTime":1643342577333,"receiverDataTime":1643342577333,"adasSatelliteTime":1643342577333,"satelliteTime":1643342577333,"speed":18.46700096130371} +{"lon":116.73573873691265,"lat":40.20023556781912,"alt":0,"heading":184.03713288985244,"systemTime":1643342577383,"receiverDataTime":1643342577383,"adasSatelliteTime":1643342577383,"satelliteTime":1643342577383,"speed":18.463436126708984} +{"lon":116.73573807919091,"lat":40.20022892776974,"alt":0,"heading":184.03546632369498,"systemTime":1643342577434,"receiverDataTime":1643342577434,"adasSatelliteTime":1643342577434,"satelliteTime":1643342577434,"speed":18.471302032470703} +{"lon":116.73573742396196,"lat":40.20022228970842,"alt":0,"heading":184.03893605979334,"systemTime":1643342577484,"receiverDataTime":1643342577484,"adasSatelliteTime":1643342577484,"satelliteTime":1643342577484,"speed":18.45182228088379} +{"lon":116.73573660776675,"lat":40.200214015781505,"alt":0,"heading":184.04300685253867,"systemTime":1643342577534,"receiverDataTime":1643342577534,"adasSatelliteTime":1643342577534,"satelliteTime":1643342577534,"speed":18.367237091064453} +{"lon":116.73573563186723,"lat":40.200204149130116,"alt":0,"heading":184.0574868535791,"systemTime":1643342577585,"receiverDataTime":1643342577585,"adasSatelliteTime":1643342577585,"satelliteTime":1643342577585,"speed":18.23525619506836} +{"lon":116.73573498731683,"lat":40.20019761022044,"alt":0,"heading":184.06592896739323,"systemTime":1643342577636,"receiverDataTime":1643342577636,"adasSatelliteTime":1643342577636,"satelliteTime":1643342577636,"speed":18.15277671813965} +{"lon":116.73573434881675,"lat":40.20019110037388,"alt":0,"heading":184.0801904023802,"systemTime":1643342577686,"receiverDataTime":1643342577686,"adasSatelliteTime":1643342577686,"satelliteTime":1643342577686,"speed":18.075782775878906} +{"lon":116.73573371085446,"lat":40.200184612703694,"alt":0,"heading":184.08988927100162,"systemTime":1643342577736,"receiverDataTime":1643342577736,"adasSatelliteTime":1643342577736,"satelliteTime":1643342577736,"speed":18.02781105041504} +{"lon":116.73573227233777,"lat":40.20017006699188,"alt":0,"heading":184.10576263063274,"systemTime":1643342577787,"receiverDataTime":1643342577787,"adasSatelliteTime":1643342577787,"satelliteTime":1643342577787,"speed":17.951242446899414} +{"lon":116.7357319515136,"lat":40.200166842824245,"alt":0,"heading":184.1082761402473,"systemTime":1643342577837,"receiverDataTime":1643342577837,"adasSatelliteTime":1643342577837,"satelliteTime":1643342577837,"speed":17.935087203979492} +{"lon":116.7357309847707,"lat":40.20015719015347,"alt":0,"heading":184.1159532728744,"systemTime":1643342577890,"receiverDataTime":1643342577890,"adasSatelliteTime":1643342577890,"satelliteTime":1643342577890,"speed":17.87494468688965} +{"lon":116.73572985322414,"lat":40.20014597719456,"alt":0,"heading":184.12139010345373,"systemTime":1643342577941,"receiverDataTime":1643342577941,"adasSatelliteTime":1643342577941,"satelliteTime":1643342577941,"speed":17.790660858154297} +{"lon":116.73572904477338,"lat":40.200137999680365,"alt":0,"heading":184.12207312237072,"systemTime":1643342577992,"receiverDataTime":1643342577992,"adasSatelliteTime":1643342577992,"satelliteTime":1643342577992,"speed":17.733516693115234} +{"lon":116.73572839499654,"lat":40.200131635275625,"alt":0,"heading":184.12119885815696,"systemTime":1643342578046,"receiverDataTime":1643342578046,"adasSatelliteTime":1643342578046,"satelliteTime":1643342578046,"speed":17.692441940307617} +{"lon":116.73572758740102,"lat":40.20012370211739,"alt":0,"heading":184.12081636756344,"systemTime":1643342578101,"receiverDataTime":1643342578101,"adasSatelliteTime":1643342578101,"satelliteTime":1643342578101,"speed":17.632442474365234} +{"lon":116.73572662599217,"lat":40.20011422388424,"alt":0,"heading":184.12518768863225,"systemTime":1643342578151,"receiverDataTime":1643342578151,"adasSatelliteTime":1643342578151,"satelliteTime":1643342578151,"speed":17.541114807128906} +{"lon":116.73572599064737,"lat":40.20010793359493,"alt":0,"heading":184.1293677644043,"systemTime":1643342578205,"receiverDataTime":1643342578205,"adasSatelliteTime":1643342578205,"satelliteTime":1643342578205,"speed":17.476051330566406} +{"lon":116.73572520332084,"lat":40.200100099044356,"alt":0,"heading":184.13185395326218,"systemTime":1643342578258,"receiverDataTime":1643342578258,"adasSatelliteTime":1643342578258,"satelliteTime":1643342578258,"speed":17.40791893005371} +{"lon":116.73572442724529,"lat":40.20009228831933,"alt":0,"heading":184.14171674642367,"systemTime":1643342578309,"receiverDataTime":1643342578309,"adasSatelliteTime":1643342578309,"satelliteTime":1643342578309,"speed":17.357118606567383} +{"lon":116.73572396445113,"lat":40.20008761393668,"alt":0,"heading":184.1466071618694,"systemTime":1643342578361,"receiverDataTime":1643342578361,"adasSatelliteTime":1643342578361,"satelliteTime":1643342578361,"speed":17.319316864013672} +{"lon":116.73572273843092,"lat":40.20007520258148,"alt":0,"heading":184.16217999317703,"systemTime":1643342578411,"receiverDataTime":1643342578411,"adasSatelliteTime":1643342578411,"satelliteTime":1643342578411,"speed":17.204370498657227} +{"lon":116.73572167977395,"lat":40.20006441192033,"alt":0,"heading":184.17160565423166,"systemTime":1643342578461,"receiverDataTime":1643342578461,"adasSatelliteTime":1643342578461,"satelliteTime":1643342578461,"speed":17.101167678833008} +{"lon":116.73572107901309,"lat":40.20005827176329,"alt":0,"heading":184.1762228621106,"systemTime":1643342578520,"receiverDataTime":1643342578520,"adasSatelliteTime":1643342578520,"satelliteTime":1643342578520,"speed":17.054847717285156} +{"lon":116.73572033020162,"lat":40.200050618683306,"alt":0,"heading":184.17737033389116,"systemTime":1643342578573,"receiverDataTime":1643342578573,"adasSatelliteTime":1643342578573,"satelliteTime":1643342578573,"speed":17.003314971923828} +{"lon":116.73572033020162,"lat":40.200050618683306,"alt":0,"heading":184.17737033389116,"systemTime":1643342578630,"receiverDataTime":1643342578630,"adasSatelliteTime":1643342578630,"satelliteTime":1643342578630,"speed":17.003314971923828} +{"lon":116.73571868697111,"lat":40.20003386103396,"alt":0,"heading":184.18939146683036,"systemTime":1643342578681,"receiverDataTime":1643342578681,"adasSatelliteTime":1643342578681,"satelliteTime":1643342578681,"speed":16.9006404876709} +{"lon":116.73571793985867,"lat":40.20002627815549,"alt":0,"heading":184.19365350487246,"systemTime":1643342578731,"receiverDataTime":1643342578731,"adasSatelliteTime":1643342578731,"satelliteTime":1643342578731,"speed":16.84832763671875} +{"lon":116.73571718824095,"lat":40.20001872303042,"alt":0,"heading":184.19228746703845,"systemTime":1643342578782,"receiverDataTime":1643342578782,"adasSatelliteTime":1643342578782,"satelliteTime":1643342578782,"speed":16.78004264831543} +{"lon":116.73571658067834,"lat":40.20001270533215,"alt":0,"heading":184.19149516509472,"systemTime":1643342578833,"receiverDataTime":1643342578833,"adasSatelliteTime":1643342578833,"satelliteTime":1643342578833,"speed":16.70905113220215} +{"lon":116.73571596941204,"lat":40.20000671631127,"alt":0,"heading":184.1826159191737,"systemTime":1643342578888,"receiverDataTime":1643342578888,"adasSatelliteTime":1643342578888,"satelliteTime":1643342578888,"speed":16.6274471282959} +{"lon":116.73571459910639,"lat":40.19999333919452,"alt":0,"heading":184.14122497280343,"systemTime":1643342578937,"receiverDataTime":1643342578937,"adasSatelliteTime":1643342578937,"satelliteTime":1643342578937,"speed":16.485307693481445} +{"lon":116.73571385631932,"lat":40.199985946607555,"alt":0,"heading":184.11395885763676,"systemTime":1643342578991,"receiverDataTime":1643342578991,"adasSatelliteTime":1643342578991,"satelliteTime":1643342578991,"speed":16.4289608001709} +{"lon":116.73571311977571,"lat":40.19997857858944,"alt":0,"heading":184.08901500678786,"systemTime":1643342579051,"receiverDataTime":1643342579051,"adasSatelliteTime":1643342579051,"satelliteTime":1643342579051,"speed":16.376197814941406} +{"lon":116.73571239248315,"lat":40.199971234183536,"alt":0,"heading":184.06874300533127,"systemTime":1643342579106,"receiverDataTime":1643342579106,"adasSatelliteTime":1643342579106,"satelliteTime":1643342579106,"speed":16.318449020385742} +{"lon":116.73571168177635,"lat":40.19996391820581,"alt":0,"heading":184.0602189292471,"systemTime":1643342579179,"receiverDataTime":1643342579179,"adasSatelliteTime":1643342579179,"satelliteTime":1643342579179,"speed":16.25185775756836} +{"lon":116.73571041000677,"lat":40.19995081234071,"alt":0,"heading":184.06169425010782,"systemTime":1643342579214,"receiverDataTime":1643342579214,"adasSatelliteTime":1643342579214,"satelliteTime":1643342579214,"speed":16.153535842895508} +{"lon":116.73570983935494,"lat":40.199945008083915,"alt":0,"heading":184.0660655711766,"systemTime":1643342579267,"receiverDataTime":1643342579267,"adasSatelliteTime":1643342579267,"satelliteTime":1643342579267,"speed":16.10523796081543} +{"lon":116.73570927087165,"lat":40.19993922317325,"alt":0,"heading":184.07560051525795,"systemTime":1643342579317,"receiverDataTime":1643342579317,"adasSatelliteTime":1643342579317,"satelliteTime":1643342579317,"speed":16.050363540649414} +{"lon":116.73570856569182,"lat":40.199932020188896,"alt":0,"heading":184.0948343279607,"systemTime":1643342579369,"receiverDataTime":1643342579369,"adasSatelliteTime":1643342579369,"satelliteTime":1643342579369,"speed":15.980473518371582} +{"lon":116.73570786167522,"lat":40.199924850231646,"alt":0,"heading":184.12436806593186,"systemTime":1643342579424,"receiverDataTime":1643342579424,"adasSatelliteTime":1643342579424,"satelliteTime":1643342579424,"speed":15.90186882019043} +{"lon":116.73570715481686,"lat":40.199917711696855,"alt":0,"heading":184.16103252139646,"systemTime":1643342579472,"receiverDataTime":1643342579472,"adasSatelliteTime":1643342579472,"satelliteTime":1643342579472,"speed":15.842307090759277} +{"lon":116.735706871186,"lat":40.199914862800085,"alt":0,"heading":184.17696052254095,"systemTime":1643342579530,"receiverDataTime":1643342579530,"adasSatelliteTime":1643342579530,"satelliteTime":1643342579530,"speed":15.823954582214355} +{"lon":116.73570601317537,"lat":40.19990633414328,"alt":0,"heading":184.23212113027796,"systemTime":1643342579573,"receiverDataTime":1643342579573,"adasSatelliteTime":1643342579573,"satelliteTime":1643342579573,"speed":15.781452178955078} +{"lon":116.73570456770183,"lat":40.19989218008813,"alt":0,"heading":184.31228023037724,"systemTime":1643342579627,"receiverDataTime":1643342579627,"adasSatelliteTime":1643342579627,"satelliteTime":1643342579627,"speed":15.673820495605469} +{"lon":116.73570398060598,"lat":40.19988655996026,"alt":0,"heading":184.34017472294758,"systemTime":1643342579681,"receiverDataTime":1643342579681,"adasSatelliteTime":1643342579681,"satelliteTime":1643342579681,"speed":15.586858749389648} +{"lon":116.73570398060598,"lat":40.19988655996026,"alt":0,"heading":184.34017472294758,"systemTime":1643342579728,"receiverDataTime":1643342579728,"adasSatelliteTime":1643342579728,"satelliteTime":1643342579728,"speed":15.586858749389648} +{"lon":116.73570235223426,"lat":40.19987125928177,"alt":0,"heading":184.40405065206554,"systemTime":1643342579778,"receiverDataTime":1643342579778,"adasSatelliteTime":1643342579778,"satelliteTime":1643342579778,"speed":15.392340660095215} +{"lon":116.73570190577678,"lat":40.199867110946485,"alt":0,"heading":184.42495103092577,"systemTime":1643342579830,"receiverDataTime":1643342579830,"adasSatelliteTime":1643342579830,"satelliteTime":1643342579830,"speed":15.380820274353027} +{"lon":116.73570115663462,"lat":40.1998602031296,"alt":0,"heading":184.45601473127098,"systemTime":1643342579903,"receiverDataTime":1643342579903,"adasSatelliteTime":1643342579903,"satelliteTime":1643342579903,"speed":15.367081642150879} +{"lon":116.73570025328094,"lat":40.19985192629078,"alt":0,"heading":184.4910399413348,"systemTime":1643342579949,"receiverDataTime":1643342579949,"adasSatelliteTime":1643342579949,"satelliteTime":1643342579949,"speed":15.331911087036133} +{"lon":116.73569905284012,"lat":40.199840946743215,"alt":0,"heading":184.53606454834355,"systemTime":1643342580003,"receiverDataTime":1643342580003,"adasSatelliteTime":1643342580003,"satelliteTime":1643342580003,"speed":15.208151817321777} +{"lon":116.73569830168383,"lat":40.1998341393175,"alt":0,"heading":184.5685762487928,"systemTime":1643342580052,"receiverDataTime":1643342580052,"adasSatelliteTime":1643342580052,"satelliteTime":1643342580052,"speed":15.112174034118652} +{"lon":116.73569755561066,"lat":40.19982737558263,"alt":0,"heading":184.6026725531295,"systemTime":1643342580110,"receiverDataTime":1643342580110,"adasSatelliteTime":1643342580110,"satelliteTime":1643342580110,"speed":15.016570091247559} +{"lon":116.7356974067974,"lat":40.19982602784556,"alt":0,"heading":184.61032236499992,"systemTime":1643342580157,"receiverDataTime":1643342580157,"adasSatelliteTime":1643342580157,"satelliteTime":1643342580157,"speed":14.999192237854004} +{"lon":116.73569591519208,"lat":40.199812619847,"alt":0,"heading":184.66326999144584,"systemTime":1643342580207,"receiverDataTime":1643342580207,"adasSatelliteTime":1643342580207,"satelliteTime":1643342580207,"speed":14.866331100463867} +{"lon":116.7356957655811,"lat":40.19981128409358,"alt":0,"heading":184.66996357683246,"systemTime":1643342580257,"receiverDataTime":1643342580257,"adasSatelliteTime":1643342580257,"satelliteTime":1643342580257,"speed":14.85343074798584} +{"lon":116.7356950102627,"lat":40.199804622955014,"alt":0,"heading":184.6918201821765,"systemTime":1643342580307,"receiverDataTime":1643342580307,"adasSatelliteTime":1643342580307,"satelliteTime":1643342580307,"speed":14.793927192687988} +{"lon":116.73569409644202,"lat":40.19979666736867,"alt":0,"heading":184.7134582214671,"systemTime":1643342580357,"receiverDataTime":1643342580357,"adasSatelliteTime":1643342580357,"satelliteTime":1643342580357,"speed":14.715535163879395} +{"lon":116.73569333407596,"lat":40.199790077289684,"alt":0,"heading":184.71780222177924,"systemTime":1643342580412,"receiverDataTime":1643342580412,"adasSatelliteTime":1643342580412,"satelliteTime":1643342580412,"speed":14.627068519592285} +{"lon":116.735692110022,"lat":40.19977961632837,"alt":0,"heading":184.71517942913795,"systemTime":1643342580462,"receiverDataTime":1643342580462,"adasSatelliteTime":1643342580462,"satelliteTime":1643342580462,"speed":14.476155281066895} +{"lon":116.73569135419758,"lat":40.19977313938183,"alt":0,"heading":184.71110863639262,"systemTime":1643342580517,"receiverDataTime":1643342580517,"adasSatelliteTime":1643342580517,"satelliteTime":1643342580517,"speed":14.36280345916748} +{"lon":116.73569061087873,"lat":40.19976671288501,"alt":0,"heading":184.70733837197076,"systemTime":1643342580565,"receiverDataTime":1643342580565,"adasSatelliteTime":1643342580565,"satelliteTime":1643342580565,"speed":14.252127647399902} +{"lon":116.73568987978923,"lat":40.19976033826896,"alt":0,"heading":184.70911422115498,"systemTime":1643342580618,"receiverDataTime":1643342580618,"adasSatelliteTime":1643342580618,"satelliteTime":1643342580618,"speed":14.131850242614746} +{"lon":116.73568930212889,"lat":40.19975527769557,"alt":0,"heading":184.7081033531578,"systemTime":1643342580668,"receiverDataTime":1643342580668,"adasSatelliteTime":1643342580668,"satelliteTime":1643342580668,"speed":14.037792205810547} +{"lon":116.73568859483022,"lat":40.19974899994158,"alt":0,"heading":184.7151247876246,"systemTime":1643342580718,"receiverDataTime":1643342580718,"adasSatelliteTime":1643342580718,"satelliteTime":1643342580718,"speed":13.91903305053711} +{"lon":116.73568788961502,"lat":40.1997427703112,"alt":0,"heading":184.72367618446546,"systemTime":1643342580768,"receiverDataTime":1643342580768,"adasSatelliteTime":1643342580768,"satelliteTime":1643342580768,"speed":13.821537971496582} +{"lon":116.73568704201107,"lat":40.19973535671776,"alt":0,"heading":184.73397610973382,"systemTime":1643342580818,"receiverDataTime":1643342580818,"adasSatelliteTime":1643342580818,"satelliteTime":1643342580818,"speed":13.691474914550781} +{"lon":116.73568648317313,"lat":40.199730451351634,"alt":0,"heading":184.7395222233399,"systemTime":1643342580869,"receiverDataTime":1643342580869,"adasSatelliteTime":1643342580869,"satelliteTime":1643342580869,"speed":13.618403434753418} +{"lon":116.735685800765,"lat":40.19972435340252,"alt":0,"heading":184.74987679012162,"systemTime":1643342580920,"receiverDataTime":1643342580920,"adasSatelliteTime":1643342580920,"satelliteTime":1643342580920,"speed":13.529885292053223} +{"lon":116.73568497562302,"lat":40.1997170960499,"alt":0,"heading":184.756078601888,"systemTime":1643342580972,"receiverDataTime":1643342580972,"adasSatelliteTime":1643342580972,"satelliteTime":1643342580972,"speed":13.406354904174805} +{"lon":116.73568442049698,"lat":40.199712295187524,"alt":0,"heading":184.75411150740703,"systemTime":1643342581023,"receiverDataTime":1643342581023,"adasSatelliteTime":1643342581023,"satelliteTime":1643342581023,"speed":13.326440811157227} +{"lon":116.73568386934792,"lat":40.19970752572473,"alt":0,"heading":184.7537563375702,"systemTime":1643342581095,"receiverDataTime":1643342581095,"adasSatelliteTime":1643342581095,"satelliteTime":1643342581095,"speed":13.227712631225586} +{"lon":116.73568332658172,"lat":40.199702798434444,"alt":0,"heading":184.75296403562646,"systemTime":1643342581127,"receiverDataTime":1643342581127,"adasSatelliteTime":1643342581127,"satelliteTime":1643342581127,"speed":13.104013442993164} +{"lon":116.73568212707849,"lat":40.19969231841538,"alt":0,"heading":184.77329067859642,"systemTime":1643342581176,"receiverDataTime":1643342581176,"adasSatelliteTime":1643342581176,"satelliteTime":1643342581176,"speed":12.83817195892334} +{"lon":116.73568147013872,"lat":40.19968658661806,"alt":0,"heading":184.77405565978347,"systemTime":1643342581226,"receiverDataTime":1643342581226,"adasSatelliteTime":1643342581226,"satelliteTime":1643342581226,"speed":12.698502540588379} +{"lon":116.7356806920957,"lat":40.19967977999007,"alt":0,"heading":184.7883990570405,"systemTime":1643342581277,"receiverDataTime":1643342581277,"adasSatelliteTime":1643342581277,"satelliteTime":1643342581277,"speed":12.559182167053223} +{"lon":116.73568030576268,"lat":40.19967640367977,"alt":0,"heading":184.79763347279834,"systemTime":1643342581332,"receiverDataTime":1643342581332,"adasSatelliteTime":1643342581332,"satelliteTime":1643342581332,"speed":12.497010231018066} +{"lon":116.73567966846751,"lat":40.19967081108792,"alt":0,"heading":184.80678592628615,"systemTime":1643342581382,"receiverDataTime":1643342581382,"adasSatelliteTime":1643342581382,"satelliteTime":1643342581382,"speed":12.406407356262207} +{"lon":116.73567903258984,"lat":40.19966525287938,"alt":0,"heading":184.81205883232542,"systemTime":1643342581433,"receiverDataTime":1643342581433,"adasSatelliteTime":1643342581433,"satelliteTime":1643342581433,"speed":12.340848922729492} +{"lon":116.73567839346492,"lat":40.19965972437963,"alt":0,"heading":184.81785083274158,"systemTime":1643342581485,"receiverDataTime":1643342581485,"adasSatelliteTime":1643342581485,"satelliteTime":1643342581485,"speed":12.271051406860352} +{"lon":116.73567788275457,"lat":40.199655327124056,"alt":0,"heading":184.82306909726748,"systemTime":1643342581535,"receiverDataTime":1643342581535,"adasSatelliteTime":1643342581535,"satelliteTime":1643342581535,"speed":12.201814651489258} +{"lon":116.73567737327997,"lat":40.19965095829539,"alt":0,"heading":184.825500644612,"systemTime":1643342581597,"receiverDataTime":1643342581597,"adasSatelliteTime":1643342581597,"satelliteTime":1643342581597,"speed":12.118837356567383} +{"lon":116.73567649021038,"lat":40.19964339352834,"alt":0,"heading":184.83446185280306,"systemTime":1643342581641,"receiverDataTime":1643342581641,"adasSatelliteTime":1643342581641,"satelliteTime":1643342581641,"speed":11.941370964050293} +{"lon":116.73567624219946,"lat":40.19964125408856,"alt":0,"heading":184.83995332489573,"systemTime":1643342581694,"receiverDataTime":1643342581694,"adasSatelliteTime":1643342581694,"satelliteTime":1643342581694,"speed":11.883916854858398} +{"lon":116.73567599621839,"lat":40.19963912511343,"alt":0,"heading":184.84282200434714,"systemTime":1643342581743,"receiverDataTime":1643342581743,"adasSatelliteTime":1643342581743,"satelliteTime":1643342581743,"speed":11.825347900390625} +{"lon":116.73567430379732,"lat":40.19962451083423,"alt":0,"heading":184.8671101570357,"systemTime":1643342581793,"receiverDataTime":1643342581793,"adasSatelliteTime":1643342581793,"satelliteTime":1643342581793,"speed":11.447270393371582} +{"lon":116.73567406590861,"lat":40.199622459730044,"alt":0,"heading":184.87186396869805,"systemTime":1643342581843,"receiverDataTime":1643342581843,"adasSatelliteTime":1643342581843,"satelliteTime":1643342581843,"speed":11.400879859924316} +{"lon":116.735673710894,"lat":40.19961939894857,"alt":0,"heading":184.87721883700735,"systemTime":1643342581904,"receiverDataTime":1643342581904,"adasSatelliteTime":1643342581904,"satelliteTime":1643342581904,"speed":11.33034896850586} +{"lon":116.73567324123681,"lat":40.1996153460373,"alt":0,"heading":184.88590683763158,"systemTime":1643342581953,"receiverDataTime":1643342581953,"adasSatelliteTime":1643342581953,"satelliteTime":1643342581953,"speed":11.24522590637207} +{"lon":116.7356722993004,"lat":40.199607328111355,"alt":0,"heading":184.90172555574935,"systemTime":1643342582005,"receiverDataTime":1643342582005,"adasSatelliteTime":1643342582005,"satelliteTime":1643342582005,"speed":11.084687232971191} +{"lon":116.73567160030082,"lat":40.19960139825156,"alt":0,"heading":184.9092934053497,"systemTime":1643342582059,"receiverDataTime":1643342582059,"adasSatelliteTime":1643342582059,"satelliteTime":1643342582059,"speed":10.937732696533203} +{"lon":116.7356709072679,"lat":40.19959554813206,"alt":0,"heading":184.9157411039262,"systemTime":1643342582109,"receiverDataTime":1643342582109,"adasSatelliteTime":1643342582109,"satelliteTime":1643342582109,"speed":10.790514945983887} +{"lon":116.73567033544447,"lat":40.199590731440175,"alt":0,"heading":184.9307128785869,"systemTime":1643342582161,"receiverDataTime":1643342582161,"adasSatelliteTime":1643342582161,"satelliteTime":1643342582161,"speed":10.678399085998535} +{"lon":116.73566977034018,"lat":40.19958596460626,"alt":0,"heading":184.94920903085927,"systemTime":1643342582210,"receiverDataTime":1643342582210,"adasSatelliteTime":1643342582210,"satelliteTime":1643342582210,"speed":10.568398475646973} +{"lon":116.7356688697094,"lat":40.19957843011626,"alt":0,"heading":184.98611937313402,"systemTime":1643342582260,"receiverDataTime":1643342582260,"adasSatelliteTime":1643342582260,"satelliteTime":1643342582260,"speed":10.410185813903809} +{"lon":116.7356683039148,"lat":40.19957377833673,"alt":0,"heading":185.03412194262086,"systemTime":1643342582313,"receiverDataTime":1643342582313,"adasSatelliteTime":1643342582313,"satelliteTime":1643342582313,"speed":10.308744430541992} +{"lon":116.73566773670169,"lat":40.199569173121276,"alt":0,"heading":185.0958668527178,"systemTime":1643342582362,"receiverDataTime":1643342582362,"adasSatelliteTime":1643342582362,"satelliteTime":1643342582362,"speed":10.206559181213379} +{"lon":116.73566727957025,"lat":40.199565527389574,"alt":0,"heading":185.1448529694451,"systemTime":1643342582412,"receiverDataTime":1643342582412,"adasSatelliteTime":1643342582412,"satelliteTime":1643342582412,"speed":10.103626251220703} +{"lon":116.7356668265468,"lat":40.199561916341395,"alt":0,"heading":185.208564974023,"systemTime":1643342582462,"receiverDataTime":1643342582462,"adasSatelliteTime":1643342582462,"satelliteTime":1643342582462,"speed":10.014087677001953} +{"lon":116.73566626571318,"lat":40.19955744734522,"alt":0,"heading":185.30752075471813,"systemTime":1643342582512,"receiverDataTime":1643342582512,"adasSatelliteTime":1643342582512,"satelliteTime":1643342582512,"speed":9.906831741333008} +{"lon":116.73566570725247,"lat":40.1995530236781,"alt":0,"heading":185.42868831059417,"systemTime":1643342582563,"receiverDataTime":1643342582563,"adasSatelliteTime":1643342582563,"satelliteTime":1643342582563,"speed":9.811931610107422} +{"lon":116.73566525869377,"lat":40.199549517379374,"alt":0,"heading":185.5334087709488,"systemTime":1643342582616,"receiverDataTime":1643342582616,"adasSatelliteTime":1643342582616,"satelliteTime":1643342582616,"speed":9.73129940032959} +{"lon":116.73566469473346,"lat":40.199545179608236,"alt":0,"heading":185.67506689433486,"systemTime":1643342582664,"receiverDataTime":1643342582664,"adasSatelliteTime":1643342582664,"satelliteTime":1643342582664,"speed":9.618346214294434} +{"lon":116.73566411866909,"lat":40.19954089070398,"alt":0,"heading":185.8301668300075,"systemTime":1643342582714,"receiverDataTime":1643342582714,"adasSatelliteTime":1643342582714,"satelliteTime":1643342582714,"speed":9.523963928222656} +{"lon":116.73566400268706,"lat":40.19954003805528,"alt":0,"heading":185.86355279467054,"systemTime":1643342582770,"receiverDataTime":1643342582770,"adasSatelliteTime":1643342582770,"satelliteTime":1643342582770,"speed":9.50248908996582} +{"lon":116.7356628310357,"lat":40.199531607349606,"alt":0,"heading":186.24191795393256,"systemTime":1643342582820,"receiverDataTime":1643342582820,"adasSatelliteTime":1643342582820,"satelliteTime":1643342582820,"speed":9.313116073608398} +{"lon":116.73566235011356,"lat":40.19952828442819,"alt":0,"heading":186.41513155128408,"systemTime":1643342582871,"receiverDataTime":1643342582871,"adasSatelliteTime":1643342582871,"satelliteTime":1643342582871,"speed":9.23948860168457} +{"lon":116.7356617333307,"lat":40.19952416534357,"alt":0,"heading":186.6485054548451,"systemTime":1643342582923,"receiverDataTime":1643342582923,"adasSatelliteTime":1643342582923,"satelliteTime":1643342582923,"speed":9.166391372680664} +{"lon":116.73566059425065,"lat":40.19951683442033,"alt":0,"heading":187.1269738665828,"systemTime":1643342582974,"receiverDataTime":1643342582974,"adasSatelliteTime":1643342582974,"satelliteTime":1643342582974,"speed":9.035663604736328} +{"lon":116.73566007598238,"lat":40.1995136135725,"alt":0,"heading":187.3529711658402,"systemTime":1643342583024,"receiverDataTime":1643342583024,"adasSatelliteTime":1643342583024,"satelliteTime":1643342583024,"speed":8.973458290100098} +{"lon":116.73565940265316,"lat":40.19950961831261,"alt":0,"heading":187.649210130522,"systemTime":1643342583077,"receiverDataTime":1643342583077,"adasSatelliteTime":1643342583077,"satelliteTime":1643342583077,"speed":8.911094665527344} +{"lon":116.73565855322596,"lat":40.19950486442702,"alt":0,"heading":188.02850419551115,"systemTime":1643342583128,"receiverDataTime":1643342583128,"adasSatelliteTime":1643342583128,"satelliteTime":1643342583128,"speed":8.843177795410156} +{"lon":116.7356579596438,"lat":40.19950171763591,"alt":0,"heading":188.29695795064933,"systemTime":1643342583177,"receiverDataTime":1643342583177,"adasSatelliteTime":1643342583177,"satelliteTime":1643342583177,"speed":8.800981521606445} +{"lon":116.73565735182463,"lat":40.199498591172755,"alt":0,"heading":188.5736079327915,"systemTime":1643342583228,"receiverDataTime":1643342583228,"adasSatelliteTime":1643342583228,"satelliteTime":1643342583228,"speed":8.743492126464844} +{"lon":116.73565655860264,"lat":40.199494711923855,"alt":0,"heading":188.94760177098473,"systemTime":1643342583277,"receiverDataTime":1643342583277,"adasSatelliteTime":1643342583277,"satelliteTime":1643342583277,"speed":8.684608459472656} +{"lon":116.73565558182972,"lat":40.19949008910824,"alt":0,"heading":189.4239664844581,"systemTime":1643342583331,"receiverDataTime":1643342583331,"adasSatelliteTime":1643342583331,"satelliteTime":1643342583331,"speed":8.640364646911621} +{"lon":116.73565508027912,"lat":40.19948778818646,"alt":0,"heading":189.67908771033643,"systemTime":1643342583379,"receiverDataTime":1643342583379,"adasSatelliteTime":1643342583379,"satelliteTime":1643342583379,"speed":8.620238304138184} +{"lon":116.73565349999623,"lat":40.19948093028044,"alt":0,"heading":190.49122452340762,"systemTime":1643342583429,"receiverDataTime":1643342583429,"adasSatelliteTime":1643342583429,"satelliteTime":1643342583429,"speed":8.558904647827148} +{"lon":116.73565313377138,"lat":40.199479415424975,"alt":0,"heading":190.680502725687,"systemTime":1643342583480,"receiverDataTime":1643342583480,"adasSatelliteTime":1643342583480,"satelliteTime":1643342583480,"speed":8.54599666595459} +{"lon":116.73565257176995,"lat":40.19947714947542,"alt":0,"heading":190.96635980283037,"systemTime":1643342583532,"receiverDataTime":1643342583532,"adasSatelliteTime":1643342583532,"satelliteTime":1643342583532,"speed":8.527555465698242} +{"lon":116.73565058074915,"lat":40.19946964481519,"alt":0,"heading":191.96550719537652,"systemTime":1643342583586,"receiverDataTime":1643342583586,"adasSatelliteTime":1643342583586,"satelliteTime":1643342583586,"speed":8.475743293762207} +{"lon":116.73564952155775,"lat":40.1994659223858,"alt":0,"heading":192.5025239886796,"systemTime":1643342583637,"receiverDataTime":1643342583637,"adasSatelliteTime":1643342583637,"satelliteTime":1643342583637,"speed":8.441283226013184} +{"lon":116.73564930507393,"lat":40.199465180751424,"alt":0,"heading":192.61000384545892,"systemTime":1643342583686,"receiverDataTime":1643342583686,"adasSatelliteTime":1643342583686,"satelliteTime":1643342583686,"speed":8.43387508392334} +{"lon":116.73564729553127,"lat":40.19945855089264,"alt":0,"heading":193.6148612761512,"systemTime":1643342583737,"receiverDataTime":1643342583737,"adasSatelliteTime":1643342583737,"satelliteTime":1643342583737,"speed":8.35884952545166} +{"lon":116.73564613566883,"lat":40.19945490130721,"alt":0,"heading":194.20561799784394,"systemTime":1643342583787,"receiverDataTime":1643342583787,"adasSatelliteTime":1643342583787,"satelliteTime":1643342583787,"speed":8.322911262512207} +{"lon":116.73564589858158,"lat":40.19945417440673,"alt":0,"heading":194.3255561196694,"systemTime":1643342583839,"receiverDataTime":1643342583839,"adasSatelliteTime":1643342583839,"satelliteTime":1643342583839,"speed":8.31559944152832} +{"lon":116.73564368671487,"lat":40.1994476773679,"alt":0,"heading":195.43562578433654,"systemTime":1643342583890,"receiverDataTime":1643342583890,"adasSatelliteTime":1643342583890,"satelliteTime":1643342583890,"speed":8.25361156463623} +{"lon":116.73564265597972,"lat":40.199444816825995,"alt":0,"heading":195.93666114109197,"systemTime":1643342583940,"receiverDataTime":1643342583940,"adasSatelliteTime":1643342583940,"satelliteTime":1643342583940,"speed":8.222979545593262} +{"lon":116.73564131843146,"lat":40.19944126878269,"alt":0,"heading":196.5717048093631,"systemTime":1643342583991,"receiverDataTime":1643342583991,"adasSatelliteTime":1643342583991,"satelliteTime":1643342583991,"speed":8.181488990783691} +{"lon":116.73564076696309,"lat":40.19943985816938,"alt":0,"heading":196.83018648831305,"systemTime":1643342584042,"receiverDataTime":1643342584042,"adasSatelliteTime":1643342584042,"satelliteTime":1643342584042,"speed":8.170059204101562} +{"lon":116.73563850586831,"lat":40.199434248249084,"alt":0,"heading":197.89225358349336,"systemTime":1643342584097,"receiverDataTime":1643342584097,"adasSatelliteTime":1643342584097,"satelliteTime":1643342584097,"speed":8.13482666015625} +{"lon":116.73563850586831,"lat":40.199434248249084,"alt":0,"heading":197.89225358349336,"systemTime":1643342584149,"receiverDataTime":1643342584149,"adasSatelliteTime":1643342584149,"satelliteTime":1643342584149,"speed":8.13482666015625} +{"lon":116.73563702799692,"lat":40.199430768423454,"alt":0,"heading":198.58166555755776,"systemTime":1643342584199,"receiverDataTime":1643342584199,"adasSatelliteTime":1643342584199,"satelliteTime":1643342584199,"speed":8.115363121032715} +{"lon":116.73563581132068,"lat":40.19942800341055,"alt":0,"heading":199.14428189987004,"systemTime":1643342584250,"receiverDataTime":1643342584250,"adasSatelliteTime":1643342584250,"satelliteTime":1643342584250,"speed":8.086762428283691} +{"lon":116.73563231223935,"lat":40.19942049900272,"alt":0,"heading":200.7138320503823,"systemTime":1643342584328,"receiverDataTime":1643342584328,"adasSatelliteTime":1643342584328,"satelliteTime":1643342584328,"speed":8.002495765686035} +{"lon":116.73562926881887,"lat":40.19941446102371,"alt":0,"heading":202.04738550469227,"systemTime":1643342584372,"receiverDataTime":1643342584372,"adasSatelliteTime":1643342584372,"satelliteTime":1643342584372,"speed":7.9621734619140625} +{"lon":116.73562787741378,"lat":40.19941179838495,"alt":0,"heading":202.66355053009747,"systemTime":1643342584428,"receiverDataTime":1643342584428,"adasSatelliteTime":1643342584428,"satelliteTime":1643342584428,"speed":7.951181888580322} +{"lon":116.7356260855916,"lat":40.199408498808474,"alt":0,"heading":203.438339868787,"systemTime":1643342584477,"receiverDataTime":1643342584477,"adasSatelliteTime":1643342584477,"satelliteTime":1643342584477,"speed":7.919033527374268} +{"lon":116.73562460808411,"lat":40.19940588110687,"alt":0,"heading":204.0613897248756,"systemTime":1643342584526,"receiverDataTime":1643342584526,"adasSatelliteTime":1643342584526,"satelliteTime":1643342584526,"speed":7.9105634689331055} +{"lon":116.73562231653723,"lat":40.199401979199685,"alt":0,"heading":205.00095054710255,"systemTime":1643342584577,"receiverDataTime":1643342584577,"adasSatelliteTime":1643342584577,"satelliteTime":1643342584577,"speed":7.9225006103515625} +{"lon":116.73561994855183,"lat":40.19939810126065,"alt":0,"heading":205.9435166525643,"systemTime":1643342584629,"receiverDataTime":1643342584629,"adasSatelliteTime":1643342584629,"satelliteTime":1643342584629,"speed":7.916946887969971} +{"lon":116.73561873966246,"lat":40.19939617352979,"alt":0,"heading":206.4210561585749,"systemTime":1643342584678,"receiverDataTime":1643342584678,"adasSatelliteTime":1643342584678,"satelliteTime":1643342584678,"speed":7.913826942443848} +{"lon":116.73561668275691,"lat":40.19939297759127,"alt":0,"heading":207.21682783839475,"systemTime":1643342584731,"receiverDataTime":1643342584731,"adasSatelliteTime":1643342584731,"satelliteTime":1643342584731,"speed":7.912671089172363} +{"lon":116.7356132597657,"lat":40.19938790629823,"alt":0,"heading":208.49360876032358,"systemTime":1643342584781,"receiverDataTime":1643342584781,"adasSatelliteTime":1643342584781,"satelliteTime":1643342584781,"speed":7.938481330871582} +{"lon":116.73561237788175,"lat":40.19938664552146,"alt":0,"heading":208.8132342927235,"systemTime":1643342584832,"receiverDataTime":1643342584832,"adasSatelliteTime":1643342584832,"satelliteTime":1643342584832,"speed":7.945703506469727} +{"lon":116.73560826134839,"lat":40.19938100992421,"alt":0,"heading":210.25366654716584,"systemTime":1643342584882,"receiverDataTime":1643342584882,"adasSatelliteTime":1643342584882,"satelliteTime":1643342584882,"speed":7.996824741363525} +{"lon":116.7356063654888,"lat":40.19937851743385,"alt":0,"heading":210.8986276501118,"systemTime":1643342584932,"receiverDataTime":1643342584932,"adasSatelliteTime":1643342584932,"satelliteTime":1643342584932,"speed":8.024067878723145} +{"lon":116.73560344513687,"lat":40.19937479365935,"alt":0,"heading":211.8678314933366,"systemTime":1643342584984,"receiverDataTime":1643342584984,"adasSatelliteTime":1643342584984,"satelliteTime":1643342584984,"speed":8.058053016662598} +{"lon":116.73560144666723,"lat":40.19937232486843,"alt":0,"heading":212.51527878514045,"systemTime":1643342585034,"receiverDataTime":1643342585034,"adasSatelliteTime":1643342585034,"satelliteTime":1643342585034,"speed":8.078621864318848} +{"lon":116.73559940469143,"lat":40.19936986760445,"alt":0,"heading":213.1653215488289,"systemTime":1643342585084,"receiverDataTime":1643342585084,"adasSatelliteTime":1643342585084,"satelliteTime":1643342585084,"speed":8.099427223205566} +{"lon":116.73559680163744,"lat":40.1993668085293,"alt":0,"heading":213.97243134267097,"systemTime":1643342585134,"receiverDataTime":1643342585134,"adasSatelliteTime":1643342585134,"satelliteTime":1643342585134,"speed":8.124775886535645} +{"lon":116.7355935978302,"lat":40.19936316296779,"alt":0,"heading":214.92882175101283,"systemTime":1643342585187,"receiverDataTime":1643342585187,"adasSatelliteTime":1643342585187,"satelliteTime":1643342585187,"speed":8.148460388183594} +{"lon":116.73559141325688,"lat":40.19936074972807,"alt":0,"heading":215.55708987162728,"systemTime":1643342585238,"receiverDataTime":1643342585238,"adasSatelliteTime":1643342585238,"satelliteTime":1643342585238,"speed":8.153740882873535} +{"lon":116.73558918020484,"lat":40.19935835169086,"alt":0,"heading":216.2018324085198,"systemTime":1643342585286,"receiverDataTime":1643342585286,"adasSatelliteTime":1643342585286,"satelliteTime":1643342585286,"speed":8.166725158691406} +{"lon":116.73558402056965,"lat":40.199353015995456,"alt":0,"heading":217.66551462689688,"systemTime":1643342585336,"receiverDataTime":1643342585336,"adasSatelliteTime":1643342585336,"satelliteTime":1643342585336,"speed":8.194876670837402} +{"lon":116.7355828438269,"lat":40.199351843687914,"alt":0,"heading":217.991014121983,"systemTime":1643342585395,"receiverDataTime":1643342585395,"adasSatelliteTime":1643342585395,"satelliteTime":1643342585395,"speed":8.199029922485352} +{"lon":116.73557805349651,"lat":40.19934719645594,"alt":0,"heading":219.31732757577274,"systemTime":1643342585444,"receiverDataTime":1643342585444,"adasSatelliteTime":1643342585444,"satelliteTime":1643342585444,"speed":8.20477294921875} +{"lon":116.73557561148917,"lat":40.19934490180489,"alt":0,"heading":220.00493637989626,"systemTime":1643342585494,"receiverDataTime":1643342585494,"adasSatelliteTime":1643342585494,"satelliteTime":1643342585494,"speed":8.198624610900879} +{"lon":116.73557189825043,"lat":40.19934149397819,"alt":0,"heading":221.07450302278525,"systemTime":1643342585549,"receiverDataTime":1643342585549,"adasSatelliteTime":1643342585549,"satelliteTime":1643342585549,"speed":8.204132080078125} +{"lon":116.73556937777674,"lat":40.19933925445824,"alt":0,"heading":221.7958119802736,"systemTime":1643342585601,"receiverDataTime":1643342585601,"adasSatelliteTime":1643342585601,"satelliteTime":1643342585601,"speed":8.193280220031738} +{"lon":116.73556618536145,"lat":40.19933648964659,"alt":0,"heading":222.70372170588672,"systemTime":1643342585655,"receiverDataTime":1643342585655,"adasSatelliteTime":1643342585655,"satelliteTime":1643342585655,"speed":8.180249214172363} +{"lon":116.73556294865519,"lat":40.19933376819733,"alt":0,"heading":223.62736818734754,"systemTime":1643342585706,"receiverDataTime":1643342585706,"adasSatelliteTime":1643342585706,"satelliteTime":1643342585706,"speed":8.15431022644043} +{"lon":116.7355590002345,"lat":40.19933057107624,"alt":0,"heading":224.74954094722398,"systemTime":1643342585757,"receiverDataTime":1643342585757,"adasSatelliteTime":1643342585757,"satelliteTime":1643342585757,"speed":8.12515640258789} +{"lon":116.73555632536046,"lat":40.19932848347156,"alt":0,"heading":225.50741873752858,"systemTime":1643342585807,"receiverDataTime":1643342585807,"adasSatelliteTime":1643342585807,"satelliteTime":1643342585807,"speed":8.106295585632324} +{"lon":116.73555294340146,"lat":40.19932591862421,"alt":0,"heading":226.47055737277043,"systemTime":1643342585857,"receiverDataTime":1643342585857,"adasSatelliteTime":1643342585857,"satelliteTime":1643342585857,"speed":8.078034400939941} +{"lon":116.7355488282981,"lat":40.19932291203625,"alt":0,"heading":227.64196213618428,"systemTime":1643342585907,"receiverDataTime":1643342585907,"adasSatelliteTime":1643342585907,"satelliteTime":1643342585907,"speed":8.046162605285645} +{"lon":116.7355460407904,"lat":40.19932095333153,"alt":0,"heading":228.43048015510558,"systemTime":1643342585957,"receiverDataTime":1643342585957,"adasSatelliteTime":1643342585957,"satelliteTime":1643342585957,"speed":8.038299560546875} +{"lon":116.73554251073836,"lat":40.199318552321024,"alt":0,"heading":229.42710037765883,"systemTime":1643342586008,"receiverDataTime":1643342586008,"adasSatelliteTime":1643342586008,"satelliteTime":1643342586008,"speed":8.02323055267334} +{"lon":116.73554037250187,"lat":40.19931713571875,"alt":0,"heading":230.02996019456083,"systemTime":1643342586059,"receiverDataTime":1643342586059,"adasSatelliteTime":1643342586059,"satelliteTime":1643342586059,"speed":8.010873794555664} +{"lon":116.73553604912306,"lat":40.19931435977609,"alt":0,"heading":231.25032375394534,"systemTime":1643342586109,"receiverDataTime":1643342586109,"adasSatelliteTime":1643342586109,"satelliteTime":1643342586109,"speed":7.987252235412598} +{"lon":116.73552946735256,"lat":40.199310353145826,"alt":0,"heading":233.08787686711057,"systemTime":1643342586161,"receiverDataTime":1643342586161,"adasSatelliteTime":1643342586161,"satelliteTime":1643342586161,"speed":7.916737079620361} +{"lon":116.73552651169871,"lat":40.199308627450854,"alt":0,"heading":233.91005405826166,"systemTime":1643342586210,"receiverDataTime":1643342586210,"adasSatelliteTime":1643342586210,"satelliteTime":1643342586210,"speed":7.898169994354248} +{"lon":116.73552277048204,"lat":40.199306516355705,"alt":0,"heading":234.93992364169452,"systemTime":1643342586261,"receiverDataTime":1643342586261,"adasSatelliteTime":1643342586261,"satelliteTime":1643342586261,"speed":7.883042335510254} +{"lon":116.73552125969192,"lat":40.19930568996252,"alt":0,"heading":235.35183869015967,"systemTime":1643342586316,"receiverDataTime":1643342586316,"adasSatelliteTime":1643342586316,"satelliteTime":1643342586316,"speed":7.882059574127197} +{"lon":116.73551669652308,"lat":40.199303253522714,"alt":0,"heading":236.58191477854393,"systemTime":1643342586365,"receiverDataTime":1643342586365,"adasSatelliteTime":1643342586365,"satelliteTime":1643342586365,"speed":7.853915214538574} +{"lon":116.73551288064328,"lat":40.19930126387037,"alt":0,"heading":237.59599296461573,"systemTime":1643342586420,"receiverDataTime":1643342586420,"adasSatelliteTime":1643342586420,"satelliteTime":1643342586420,"speed":7.834345817565918} +{"lon":116.73550823819888,"lat":40.19929895934379,"alt":0,"heading":238.82147916587775,"systemTime":1643342586470,"receiverDataTime":1643342586470,"adasSatelliteTime":1643342586470,"satelliteTime":1643342586470,"speed":7.822706699371338} +{"lon":116.73550510125018,"lat":40.19929749498936,"alt":0,"heading":239.62490065756802,"systemTime":1643342586522,"receiverDataTime":1643342586522,"adasSatelliteTime":1643342586522,"satelliteTime":1643342586522,"speed":7.782292366027832} +{"lon":116.73549875747467,"lat":40.19929470087388,"alt":0,"heading":241.24171571713677,"systemTime":1643342586572,"receiverDataTime":1643342586572,"adasSatelliteTime":1643342586572,"satelliteTime":1643342586572,"speed":7.779881954193115} +{"lon":116.73549474672755,"lat":40.199293014422196,"alt":0,"heading":242.25881284682168,"systemTime":1643342586622,"receiverDataTime":1643342586622,"adasSatelliteTime":1643342586622,"satelliteTime":1643342586622,"speed":7.777064800262451} +{"lon":116.73549071750593,"lat":40.19929136686719,"alt":0,"heading":243.28451601486086,"systemTime":1643342586673,"receiverDataTime":1643342586673,"adasSatelliteTime":1643342586673,"satelliteTime":1643342586673,"speed":7.765139579772949} +{"lon":116.73548584536553,"lat":40.199289423898854,"alt":0,"heading":244.5508604077379,"systemTime":1643342586724,"receiverDataTime":1643342586724,"adasSatelliteTime":1643342586724,"satelliteTime":1643342586724,"speed":7.794581413269043} +{"lon":116.73548256519447,"lat":40.19928817231747,"alt":0,"heading":245.38922514722194,"systemTime":1643342586775,"receiverDataTime":1643342586775,"adasSatelliteTime":1643342586775,"satelliteTime":1643342586775,"speed":7.797595024108887} +{"lon":116.73548256519447,"lat":40.19928817231747,"alt":0,"heading":245.38922514722194,"systemTime":1643342586827,"receiverDataTime":1643342586827,"adasSatelliteTime":1643342586827,"satelliteTime":1643342586827,"speed":7.797595024108887} +{"lon":116.73547504276428,"lat":40.1992855312131,"alt":0,"heading":247.18578346498873,"systemTime":1643342586878,"receiverDataTime":1643342586878,"adasSatelliteTime":1643342586878,"satelliteTime":1643342586878,"speed":7.83666467666626} +{"lon":116.73547078876292,"lat":40.19928418031707,"alt":0,"heading":248.1534710062178,"systemTime":1643342586932,"receiverDataTime":1643342586932,"adasSatelliteTime":1643342586932,"satelliteTime":1643342586932,"speed":7.842302322387695} +{"lon":116.73546564043099,"lat":40.19928262837592,"alt":0,"heading":249.3350254307383,"systemTime":1643342586984,"receiverDataTime":1643342586984,"adasSatelliteTime":1643342586984,"satelliteTime":1643342586984,"speed":7.864570140838623} +{"lon":116.73546217922554,"lat":40.19928162527364,"alt":0,"heading":250.13216314839215,"systemTime":1643342587035,"receiverDataTime":1643342587035,"adasSatelliteTime":1643342587035,"satelliteTime":1643342587035,"speed":7.88819694519043} +{"lon":116.73545431088971,"lat":40.19927947940772,"alt":0,"heading":251.91838055975555,"systemTime":1643342587086,"receiverDataTime":1643342587086,"adasSatelliteTime":1643342587086,"satelliteTime":1643342587086,"speed":7.918313026428223} +{"lon":116.73544989789534,"lat":40.199278356518015,"alt":0,"heading":252.87836364760085,"systemTime":1643342587136,"receiverDataTime":1643342587136,"adasSatelliteTime":1643342587136,"satelliteTime":1643342587136,"speed":7.927713394165039} +{"lon":116.73544634151254,"lat":40.199277501122815,"alt":0,"heading":253.6268021164725,"systemTime":1643342587185,"receiverDataTime":1643342587185,"adasSatelliteTime":1643342587185,"satelliteTime":1643342587185,"speed":7.950163841247559} +{"lon":116.73544365565823,"lat":40.199276885698445,"alt":0,"heading":254.18575747738967,"systemTime":1643342587236,"receiverDataTime":1643342587236,"adasSatelliteTime":1643342587236,"satelliteTime":1643342587236,"speed":7.964118957519531} +{"lon":116.73543823395048,"lat":40.19927572947945,"alt":0,"heading":255.2466361196544,"systemTime":1643342587288,"receiverDataTime":1643342587288,"adasSatelliteTime":1643342587288,"satelliteTime":1643342587288,"speed":7.996363639831543} +{"lon":116.7354318485246,"lat":40.199274478566295,"alt":0,"heading":256.4375069222028,"systemTime":1643342587337,"receiverDataTime":1643342587337,"adasSatelliteTime":1643342587337,"satelliteTime":1643342587337,"speed":8.02580738067627} +{"lon":116.73542817174159,"lat":40.199273812118484,"alt":0,"heading":257.0869213084876,"systemTime":1643342587387,"receiverDataTime":1643342587387,"adasSatelliteTime":1643342587387,"satelliteTime":1643342587387,"speed":8.04664421081543} +{"lon":116.73542447505642,"lat":40.1992731757272,"alt":0,"heading":257.7047119189153,"systemTime":1643342587441,"receiverDataTime":1643342587441,"adasSatelliteTime":1643342587441,"satelliteTime":1643342587441,"speed":8.069435119628906} +{"lon":116.73542075621143,"lat":40.1992725681219,"alt":0,"heading":258.29862418800457,"systemTime":1643342587492,"receiverDataTime":1643342587492,"adasSatelliteTime":1643342587492,"satelliteTime":1643342587492,"speed":8.101243019104004} +{"lon":116.73541795211467,"lat":40.199272132598416,"alt":0,"heading":258.7201015013077,"systemTime":1643342587543,"receiverDataTime":1643342587543,"adasSatelliteTime":1643342587543,"satelliteTime":1643342587543,"speed":8.123320579528809} +{"lon":116.73541042025921,"lat":40.19927103919662,"alt":0,"heading":259.75238897170675,"systemTime":1643342587593,"receiverDataTime":1643342587593,"adasSatelliteTime":1643342587593,"satelliteTime":1643342587593,"speed":8.187870025634766} +{"lon":116.73540662205761,"lat":40.19927052624946,"alt":0,"heading":260.219027495802,"systemTime":1643342587643,"receiverDataTime":1643342587643,"adasSatelliteTime":1643342587643,"satelliteTime":1643342587643,"speed":8.22368335723877} +{"lon":116.7354028046322,"lat":40.19927003342903,"alt":0,"heading":260.65252594204435,"systemTime":1643342587694,"receiverDataTime":1643342587694,"adasSatelliteTime":1643342587694,"satelliteTime":1643342587694,"speed":8.252732276916504} +{"lon":116.73539415204509,"lat":40.19926899845592,"alt":0,"heading":261.49158736082376,"systemTime":1643342587744,"receiverDataTime":1643342587744,"adasSatelliteTime":1643342587744,"satelliteTime":1643342587744,"speed":8.317258834838867} +{"lon":116.73538930667824,"lat":40.19926846791163,"alt":0,"heading":261.8761953129872,"systemTime":1643342587799,"receiverDataTime":1643342587799,"adasSatelliteTime":1643342587799,"satelliteTime":1643342587799,"speed":8.352524757385254} +{"lon":116.73538443777743,"lat":40.199267966248804,"alt":0,"heading":262.2064486197356,"systemTime":1643342587847,"receiverDataTime":1643342587847,"adasSatelliteTime":1643342587847,"satelliteTime":1643342587847,"speed":8.382760047912598} +{"lon":116.73537856567675,"lat":40.199267388846195,"alt":0,"heading":262.5354998131902,"systemTime":1643342587898,"receiverDataTime":1643342587898,"adasSatelliteTime":1643342587898,"satelliteTime":1643342587898,"speed":8.423539161682129} +{"lon":116.73537463381544,"lat":40.199267016050996,"alt":0,"heading":262.71674571300565,"systemTime":1643342587947,"receiverDataTime":1643342587947,"adasSatelliteTime":1643342587947,"satelliteTime":1643342587947,"speed":8.450363159179688} +{"lon":116.73537068721808,"lat":40.19926665383397,"alt":0,"heading":262.87180466754324,"systemTime":1643342588000,"receiverDataTime":1643342588000,"adasSatelliteTime":1643342588000,"satelliteTime":1643342588000,"speed":8.478590965270996} +{"lon":116.73536473887435,"lat":40.19926611936395,"alt":0,"heading":263.0584737375597,"systemTime":1643342588050,"receiverDataTime":1643342588050,"adasSatelliteTime":1643342588050,"satelliteTime":1643342588050,"speed":8.52736759185791} +{"lon":116.73536175201241,"lat":40.19926585446166,"alt":0,"heading":263.1343981203736,"systemTime":1643342588104,"receiverDataTime":1643342588104,"adasSatelliteTime":1643342588104,"satelliteTime":1643342588104,"speed":8.550965309143066} +{"lon":116.73535975629979,"lat":40.199265678081126,"alt":0,"heading":263.1792314820855,"systemTime":1643342588151,"receiverDataTime":1643342588151,"adasSatelliteTime":1643342588151,"satelliteTime":1643342588151,"speed":8.564931869506836} +{"lon":116.73535074531958,"lat":40.199264883807516,"alt":0,"heading":263.3306977571197,"systemTime":1643342588202,"receiverDataTime":1643342588202,"adasSatelliteTime":1643342588202,"satelliteTime":1643342588202,"speed":8.603530883789062} +{"lon":116.73534470631421,"lat":40.199264357035034,"alt":0,"heading":263.42304191469833,"systemTime":1643342588253,"receiverDataTime":1643342588253,"adasSatelliteTime":1643342588253,"satelliteTime":1643342588253,"speed":8.624600410461426} +{"lon":116.73534066897285,"lat":40.19926401401317,"alt":0,"heading":263.4703068237548,"systemTime":1643342588305,"receiverDataTime":1643342588305,"adasSatelliteTime":1643342588305,"satelliteTime":1643342588305,"speed":8.632153511047363} +{"lon":116.73534066897285,"lat":40.19926401401317,"alt":0,"heading":263.4703068237548,"systemTime":1643342588353,"receiverDataTime":1643342588353,"adasSatelliteTime":1643342588353,"satelliteTime":1643342588353,"speed":8.632153511047363} +{"lon":116.73532955614789,"lat":40.19926308773643,"alt":0,"heading":263.59100992676724,"systemTime":1643342588403,"receiverDataTime":1643342588403,"adasSatelliteTime":1643342588403,"satelliteTime":1643342588403,"speed":8.630145072937012} +{"lon":116.73532854623252,"lat":40.19926300366598,"alt":0,"heading":263.60278517289635,"systemTime":1643342588454,"receiverDataTime":1643342588454,"adasSatelliteTime":1643342588454,"satelliteTime":1643342588454,"speed":8.627975463867188} +{"lon":116.73532147888652,"lat":40.19926241406153,"alt":0,"heading":263.69424140588285,"systemTime":1643342588506,"receiverDataTime":1643342588506,"adasSatelliteTime":1643342588506,"satelliteTime":1643342588506,"speed":8.623556137084961} +{"lon":116.73531542235645,"lat":40.199261910008524,"alt":0,"heading":263.7876374125936,"systemTime":1643342588559,"receiverDataTime":1643342588559,"adasSatelliteTime":1643342588559,"satelliteTime":1643342588559,"speed":8.626585006713867} +{"lon":116.73530734689015,"lat":40.19926124532131,"alt":0,"heading":263.90656466642184,"systemTime":1643342588609,"receiverDataTime":1643342588609,"adasSatelliteTime":1643342588609,"satelliteTime":1643342588609,"speed":8.627172470092773} +{"lon":116.73530230460996,"lat":40.19926084283908,"alt":0,"heading":263.9817513888054,"systemTime":1643342588660,"receiverDataTime":1643342588660,"adasSatelliteTime":1643342588660,"satelliteTime":1643342588660,"speed":8.613080978393555} +{"lon":116.73529727285505,"lat":40.19926044757173,"alt":0,"heading":264.0646152438159,"systemTime":1643342588710,"receiverDataTime":1643342588710,"adasSatelliteTime":1643342588710,"satelliteTime":1643342588710,"speed":8.591796875} +{"lon":116.73529626829321,"lat":40.19926036904842,"alt":0,"heading":264.0834938866819,"systemTime":1643342588761,"receiverDataTime":1643342588761,"adasSatelliteTime":1643342588761,"satelliteTime":1643342588761,"speed":8.58584976196289} +{"lon":116.7352882522599,"lat":40.1992597507698,"alt":0,"heading":264.2281846140594,"systemTime":1643342588811,"receiverDataTime":1643342588811,"adasSatelliteTime":1643342588811,"satelliteTime":1643342588811,"speed":8.54792308807373} +{"lon":116.73528326163203,"lat":40.199259373456435,"alt":0,"heading":264.32891624393875,"systemTime":1643342588862,"receiverDataTime":1643342588862,"adasSatelliteTime":1643342588862,"satelliteTime":1643342588862,"speed":8.519835472106934} +{"lon":116.73527728941777,"lat":40.199258931250554,"alt":0,"heading":264.458648857034,"systemTime":1643342588913,"receiverDataTime":1643342588913,"adasSatelliteTime":1643342588913,"satelliteTime":1643342588913,"speed":8.499346733093262} +{"lon":116.73527331467326,"lat":40.19925864419159,"alt":0,"heading":264.5545993544943,"systemTime":1643342588964,"receiverDataTime":1643342588964,"adasSatelliteTime":1643342588964,"satelliteTime":1643342588964,"speed":8.490467071533203} +{"lon":116.73526835143606,"lat":40.19925829829597,"alt":0,"heading":264.6765455519357,"systemTime":1643342589019,"receiverDataTime":1643342589019,"adasSatelliteTime":1643342589019,"satelliteTime":1643342589019,"speed":8.476107597351074} +{"lon":116.73526241465609,"lat":40.199257896640574,"alt":0,"heading":264.8280391477266,"systemTime":1643342589069,"receiverDataTime":1643342589069,"adasSatelliteTime":1643342589069,"satelliteTime":1643342589069,"speed":8.434840202331543} +{"lon":116.73525847605471,"lat":40.19925763735865,"alt":0,"heading":264.93155749478734,"systemTime":1643342589120,"receiverDataTime":1643342589120,"adasSatelliteTime":1643342589120,"satelliteTime":1643342589120,"speed":8.39495849609375} +{"lon":116.73525357573459,"lat":40.19925732512621,"alt":0,"heading":265.0683661838627,"systemTime":1643342589171,"receiverDataTime":1643342589171,"adasSatelliteTime":1643342589171,"satelliteTime":1643342589171,"speed":8.354828834533691} +{"lon":116.7352477248631,"lat":40.19925694962948,"alt":0,"heading":265.22992747849014,"systemTime":1643342589221,"receiverDataTime":1643342589221,"adasSatelliteTime":1643342589221,"satelliteTime":1643342589221,"speed":8.304849624633789} +{"lon":116.73524190683115,"lat":40.199256576693834,"alt":0,"heading":265.3893167729616,"systemTime":1643342589271,"receiverDataTime":1643342589271,"adasSatelliteTime":1643342589271,"satelliteTime":1643342589271,"speed":8.236287117004395} +{"lon":116.73523901796932,"lat":40.19925639530771,"alt":0,"heading":265.46642960869104,"systemTime":1643342589322,"receiverDataTime":1643342589322,"adasSatelliteTime":1643342589322,"satelliteTime":1643342589322,"speed":8.189448356628418} +{"lon":116.73523710023751,"lat":40.199256278492086,"alt":0,"heading":265.51443217817786,"systemTime":1643342589379,"receiverDataTime":1643342589379,"adasSatelliteTime":1643342589379,"satelliteTime":1643342589379,"speed":8.159435272216797} +{"lon":116.73522760472802,"lat":40.19925572828564,"alt":0,"heading":265.7522593650777,"systemTime":1643342589423,"receiverDataTime":1643342589423,"adasSatelliteTime":1643342589423,"satelliteTime":1643342589423,"speed":8.015975952148438} +{"lon":116.73522384951819,"lat":40.19925552568914,"alt":0,"heading":265.845436805735,"systemTime":1643342589474,"receiverDataTime":1643342589474,"adasSatelliteTime":1643342589474,"satelliteTime":1643342589474,"speed":7.954848766326904} +{"lon":116.73521920256199,"lat":40.19925527753322,"alt":0,"heading":265.96902224857723,"systemTime":1643342589529,"receiverDataTime":1643342589529,"adasSatelliteTime":1643342589529,"satelliteTime":1643342589529,"speed":7.863698959350586} +{"lon":116.7352136976439,"lat":40.19925498123266,"alt":0,"heading":266.1300644488278,"systemTime":1643342589578,"receiverDataTime":1643342589578,"adasSatelliteTime":1643342589578,"satelliteTime":1643342589578,"speed":7.760123252868652} +{"lon":116.7352136976439,"lat":40.19925498123266,"alt":0,"heading":266.1300644488278,"systemTime":1643342589662,"receiverDataTime":1643342589662,"adasSatelliteTime":1643342589662,"satelliteTime":1643342589662,"speed":7.760123252868652} +{"lon":116.73520556573408,"lat":40.19925455029939,"alt":0,"heading":266.37461254187093,"systemTime":1643342589730,"receiverDataTime":1643342589730,"adasSatelliteTime":1643342589730,"satelliteTime":1643342589730,"speed":7.636855125427246} +{"lon":116.73519666816027,"lat":40.19925409580676,"alt":0,"heading":266.6336133151978,"systemTime":1643342589779,"receiverDataTime":1643342589779,"adasSatelliteTime":1643342589779,"satelliteTime":1643342589779,"speed":7.524048805236816} +{"lon":116.73519402402033,"lat":40.19925396705193,"alt":0,"heading":266.7085541507712,"systemTime":1643342589830,"receiverDataTime":1643342589830,"adasSatelliteTime":1643342589830,"satelliteTime":1643342589830,"speed":7.494294166564941} +{"lon":116.73518963894603,"lat":40.199253764874975,"alt":0,"heading":266.8341749899861,"systemTime":1643342589880,"receiverDataTime":1643342589880,"adasSatelliteTime":1643342589880,"satelliteTime":1643342589880,"speed":7.449526786804199} +{"lon":116.73518440735423,"lat":40.19925354495901,"alt":0,"heading":266.9784832267701,"systemTime":1643342589931,"receiverDataTime":1643342589931,"adasSatelliteTime":1643342589931,"satelliteTime":1643342589931,"speed":7.4071526527404785} +{"lon":116.7351774723666,"lat":40.19925327407301,"alt":0,"heading":267.16873131591166,"systemTime":1643342589987,"receiverDataTime":1643342589987,"adasSatelliteTime":1643342589987,"satelliteTime":1643342589987,"speed":7.36306095123291} +{"lon":116.73517402052411,"lat":40.199253145718245,"alt":0,"heading":267.2659932096926,"systemTime":1643342590031,"receiverDataTime":1643342590031,"adasSatelliteTime":1643342590031,"satelliteTime":1643342590031,"speed":7.340611457824707} +{"lon":116.73517058027048,"lat":40.199253018029026,"alt":0,"heading":267.363350726122,"systemTime":1643342590081,"receiverDataTime":1643342590081,"adasSatelliteTime":1643342590081,"satelliteTime":1643342590081,"speed":7.318296432495117} +{"lon":116.73516714929762,"lat":40.19925289271273,"alt":0,"heading":267.4625523936273,"systemTime":1643342590133,"receiverDataTime":1643342590133,"adasSatelliteTime":1643342590133,"satelliteTime":1643342590133,"speed":7.299962997436523} +{"lon":116.73516372729301,"lat":40.19925277317924,"alt":0,"heading":267.5633523253983,"systemTime":1643342590184,"receiverDataTime":1643342590184,"adasSatelliteTime":1643342590184,"satelliteTime":1643342590184,"speed":7.280218601226807} +{"lon":116.73515946378244,"lat":40.19925263328824,"alt":0,"heading":267.6881398815344,"systemTime":1643342590235,"receiverDataTime":1643342590235,"adasSatelliteTime":1643342590235,"satelliteTime":1643342590235,"speed":7.253805637359619} +{"lon":116.73515097911358,"lat":40.199252390101925,"alt":0,"heading":267.9132765769564,"systemTime":1643342590289,"receiverDataTime":1643342590289,"adasSatelliteTime":1643342590289,"satelliteTime":1643342590289,"speed":7.204697608947754} +{"lon":116.73514760090949,"lat":40.199252297696766,"alt":0,"heading":268.0068638289639,"systemTime":1643342590345,"receiverDataTime":1643342590345,"adasSatelliteTime":1643342590345,"satelliteTime":1643342590345,"speed":7.1870198249816895} +{"lon":116.73514339028421,"lat":40.19925218877289,"alt":0,"heading":268.12848217732517,"systemTime":1643342590393,"receiverDataTime":1643342590393,"adasSatelliteTime":1643342590393,"satelliteTime":1643342590393,"speed":7.163033485412598} +{"lon":116.73513835576338,"lat":40.199252066773205,"alt":0,"heading":268.27575471620895,"systemTime":1643342590444,"receiverDataTime":1643342590444,"adasSatelliteTime":1643342590444,"satelliteTime":1643342590444,"speed":7.133572101593018} +{"lon":116.73513835576338,"lat":40.199252066773205,"alt":0,"heading":268.27575471620895,"systemTime":1643342590494,"receiverDataTime":1643342590494,"adasSatelliteTime":1643342590494,"satelliteTime":1643342590494,"speed":7.133572101593018} +{"lon":116.73513167905843,"lat":40.19925192164971,"alt":0,"heading":268.4686938998835,"systemTime":1643342590544,"receiverDataTime":1643342590544,"adasSatelliteTime":1643342590544,"satelliteTime":1643342590544,"speed":7.088523864746094} +{"lon":116.73512835603955,"lat":40.19925185470246,"alt":0,"heading":268.56304613307805,"systemTime":1643342590595,"receiverDataTime":1643342590595,"adasSatelliteTime":1643342590595,"satelliteTime":1643342590595,"speed":7.068426609039307} +{"lon":116.73512421462092,"lat":40.19925177943157,"alt":0,"heading":268.67239746168997,"systemTime":1643342590647,"receiverDataTime":1643342590647,"adasSatelliteTime":1643342590647,"satelliteTime":1643342590647,"speed":7.046504974365234} +{"lon":116.73511679007571,"lat":40.19925166078047,"alt":0,"heading":268.8747349856624,"systemTime":1643342590700,"receiverDataTime":1643342590700,"adasSatelliteTime":1643342590700,"satelliteTime":1643342590700,"speed":7.0086164474487305} +{"lon":116.73511514652603,"lat":40.199251637053464,"alt":0,"heading":268.91934978132093,"systemTime":1643342590750,"receiverDataTime":1643342590750,"adasSatelliteTime":1643342590750,"satelliteTime":1643342590750,"speed":6.998402118682861} +{"lon":116.73511186667474,"lat":40.1992515908663,"alt":0,"heading":269.01166661814284,"systemTime":1643342590800,"receiverDataTime":1643342590800,"adasSatelliteTime":1643342590800,"satelliteTime":1643342590800,"speed":6.977489471435547} +{"lon":116.73511104836372,"lat":40.19925157984766,"alt":0,"heading":269.03467069526744,"systemTime":1643342590854,"receiverDataTime":1643342590854,"adasSatelliteTime":1643342590854,"satelliteTime":1643342590854,"speed":6.972006320953369} +{"lon":116.73510370721424,"lat":40.19925149584187,"alt":0,"heading":269.20765206618717,"systemTime":1643342590908,"receiverDataTime":1643342590908,"adasSatelliteTime":1643342590908,"satelliteTime":1643342590908,"speed":6.935863018035889} +{"lon":116.73509801997963,"lat":40.199251436331174,"alt":0,"heading":269.312741356757,"systemTime":1643342590961,"receiverDataTime":1643342590961,"adasSatelliteTime":1643342590961,"satelliteTime":1643342590961,"speed":6.912174701690674} +{"lon":116.73509477993517,"lat":40.199251403651196,"alt":0,"heading":269.3688035494645,"systemTime":1643342591012,"receiverDataTime":1643342591012,"adasSatelliteTime":1643342591012,"satelliteTime":1643342591012,"speed":6.896612167358398} +{"lon":116.73509235449875,"lat":40.19925138075438,"alt":0,"heading":269.409402193891,"systemTime":1643342591063,"receiverDataTime":1643342591063,"adasSatelliteTime":1643342591063,"satelliteTime":1643342591063,"speed":6.8867292404174805} +{"lon":116.73508670855917,"lat":40.199251329712745,"alt":0,"heading":269.5056532196748,"systemTime":1643342591115,"receiverDataTime":1643342591115,"adasSatelliteTime":1643342591115,"satelliteTime":1643342591115,"speed":6.865148544311523} +{"lon":116.73508188353563,"lat":40.19925128897258,"alt":0,"heading":269.5858123197741,"systemTime":1643342591166,"receiverDataTime":1643342591166,"adasSatelliteTime":1643342591166,"satelliteTime":1643342591166,"speed":6.846848011016846} +{"lon":116.73508188353563,"lat":40.19925128897258,"alt":0,"heading":269.5858123197741,"systemTime":1643342591217,"receiverDataTime":1643342591217,"adasSatelliteTime":1643342591217,"satelliteTime":1643342591217,"speed":6.846848011016846} +{"lon":116.73507304761786,"lat":40.199251228682066,"alt":0,"heading":269.7440814632216,"systemTime":1643342591271,"receiverDataTime":1643342591271,"adasSatelliteTime":1643342591271,"satelliteTime":1643342591271,"speed":6.8346848487854} +{"lon":116.73507304761786,"lat":40.199251228682066,"alt":0,"heading":269.7440814632216,"systemTime":1643342591323,"receiverDataTime":1643342591323,"adasSatelliteTime":1643342591323,"satelliteTime":1643342591323,"speed":6.8346848487854} +{"lon":116.73506421140681,"lat":40.19925119492448,"alt":0,"heading":269.90255551234424,"systemTime":1643342591371,"receiverDataTime":1643342591371,"adasSatelliteTime":1643342591371,"satelliteTime":1643342591371,"speed":6.818972587585449} +{"lon":116.73506260741941,"lat":40.19925119153754,"alt":0,"heading":269.92984894826765,"systemTime":1643342591421,"receiverDataTime":1643342591421,"adasSatelliteTime":1643342591421,"satelliteTime":1643342591421,"speed":6.812653064727783} +{"lon":116.73505540514043,"lat":40.199251177790785,"alt":0,"heading":270.0651549957256,"systemTime":1643342591471,"receiverDataTime":1643342591471,"adasSatelliteTime":1643342591471,"satelliteTime":1643342591471,"speed":6.787290096282959} +{"lon":116.73505221207363,"lat":40.19925117637874,"alt":0,"heading":270.12789711344135,"systemTime":1643342591523,"receiverDataTime":1643342591523,"adasSatelliteTime":1643342591523,"satelliteTime":1643342591523,"speed":6.777444362640381} +{"lon":116.73504823087886,"lat":40.199251180378084,"alt":0,"heading":270.2127690440679,"systemTime":1643342591574,"receiverDataTime":1643342591574,"adasSatelliteTime":1643342591574,"satelliteTime":1643342591574,"speed":6.7574567794799805} +{"lon":116.73504505451554,"lat":40.19925118571435,"alt":0,"heading":270.28396693597614,"systemTime":1643342591626,"receiverDataTime":1643342591626,"adasSatelliteTime":1643342591626,"satelliteTime":1643342591626,"speed":6.744734764099121} +{"lon":116.73503871992732,"lat":40.19925120152038,"alt":0,"heading":270.4440938908779,"systemTime":1643342591677,"receiverDataTime":1643342591677,"adasSatelliteTime":1643342591677,"satelliteTime":1643342591677,"speed":6.720102310180664} +{"lon":116.73503871992732,"lat":40.19925120152038,"alt":0,"heading":270.4440938908779,"systemTime":1643342591729,"receiverDataTime":1643342591729,"adasSatelliteTime":1643342591729,"satelliteTime":1643342591729,"speed":6.720102310180664} +{"lon":116.73503083673,"lat":40.199251240973986,"alt":0,"heading":270.66339760474864,"systemTime":1643342591778,"receiverDataTime":1643342591778,"adasSatelliteTime":1643342591778,"satelliteTime":1643342591778,"speed":6.696110248565674} +{"lon":116.73503083673,"lat":40.199251240973986,"alt":0,"heading":270.66339760474864,"systemTime":1643342591828,"receiverDataTime":1643342591828,"adasSatelliteTime":1643342591828,"satelliteTime":1643342591828,"speed":6.696110248565674} +{"lon":116.73502454785442,"lat":40.199251293870695,"alt":0,"heading":270.84640569337,"systemTime":1643342591878,"receiverDataTime":1643342591878,"adasSatelliteTime":1643342591878,"satelliteTime":1643342591878,"speed":6.681491374969482} +{"lon":116.7350182758122,"lat":40.19925136770427,"alt":0,"heading":271.037719292022,"systemTime":1643342591931,"receiverDataTime":1643342591931,"adasSatelliteTime":1643342591931,"satelliteTime":1643342591931,"speed":6.667954444885254} +{"lon":116.7350182758122,"lat":40.19925136770427,"alt":0,"heading":271.037719292022,"systemTime":1643342591981,"receiverDataTime":1643342591981,"adasSatelliteTime":1643342591981,"satelliteTime":1643342591981,"speed":6.667954444885254} +{"lon":116.73501045705922,"lat":40.199251476504735,"alt":0,"heading":271.26577930840875,"systemTime":1643342592034,"receiverDataTime":1643342592034,"adasSatelliteTime":1643342592034,"satelliteTime":1643342592034,"speed":6.649343013763428} +{"lon":116.73500733515624,"lat":40.19925152318305,"alt":0,"heading":271.35894308868774,"systemTime":1643342592084,"receiverDataTime":1643342592084,"adasSatelliteTime":1643342592084,"satelliteTime":1643342592084,"speed":6.6456122398376465} +{"lon":116.73500421519415,"lat":40.199251573903226,"alt":0,"heading":271.45180634064326,"systemTime":1643342592134,"receiverDataTime":1643342592134,"adasSatelliteTime":1643342592134,"satelliteTime":1643342592134,"speed":6.640823841094971} +{"lon":116.73500032048932,"lat":40.199251643860315,"alt":0,"heading":271.57102046241664,"systemTime":1643342592186,"receiverDataTime":1643342592186,"adasSatelliteTime":1643342592186,"satelliteTime":1643342592186,"speed":6.631932735443115} +{"lon":116.7349964292657,"lat":40.19925172497851,"alt":0,"heading":271.6800576023267,"systemTime":1643342592235,"receiverDataTime":1643342592235,"adasSatelliteTime":1643342592235,"satelliteTime":1643342592235,"speed":6.628811359405518} +{"lon":116.73499253784043,"lat":40.199251824197184,"alt":0,"heading":271.7955014596783,"systemTime":1643342592287,"receiverDataTime":1643342592287,"adasSatelliteTime":1643342592287,"satelliteTime":1643342592287,"speed":6.624156951904297} +{"lon":116.73498865101033,"lat":40.19925193273614,"alt":0,"heading":271.90945633579076,"systemTime":1643342592337,"receiverDataTime":1643342592337,"adasSatelliteTime":1643342592337,"satelliteTime":1643342592337,"speed":6.6178412437438965} +{"lon":116.73498476885422,"lat":40.19925204593136,"alt":0,"heading":272.02376638174013,"systemTime":1643342592388,"receiverDataTime":1643342592388,"adasSatelliteTime":1643342592388,"satelliteTime":1643342592388,"speed":6.611258029937744} +{"lon":116.73498166559493,"lat":40.19925214115674,"alt":0,"heading":272.1146488788363,"systemTime":1643342592457,"receiverDataTime":1643342592457,"adasSatelliteTime":1643342592457,"satelliteTime":1643342592457,"speed":6.6073126792907715} +{"lon":116.73497392425847,"lat":40.199252401065465,"alt":0,"heading":272.34923855606957,"systemTime":1643342592533,"receiverDataTime":1643342592533,"adasSatelliteTime":1643342592533,"satelliteTime":1643342592533,"speed":6.587682723999023} +{"lon":116.73497083427117,"lat":40.19925251020976,"alt":0,"heading":272.4391511663036,"systemTime":1643342592584,"receiverDataTime":1643342592584,"adasSatelliteTime":1643342592584,"satelliteTime":1643342592584,"speed":6.580109119415283} +{"lon":116.73496697917095,"lat":40.19925265178976,"alt":0,"heading":272.5407160792617,"systemTime":1643342592638,"receiverDataTime":1643342592638,"adasSatelliteTime":1643342592638,"satelliteTime":1643342592638,"speed":6.567164421081543} +{"lon":116.73496159359597,"lat":40.199252860354065,"alt":0,"heading":272.6674434091221,"systemTime":1643342592689,"receiverDataTime":1643342592689,"adasSatelliteTime":1643342592689,"satelliteTime":1643342592689,"speed":6.556333541870117} +{"lon":116.73495852002405,"lat":40.199252985072945,"alt":0,"heading":272.73574530082226,"systemTime":1643342592739,"receiverDataTime":1643342592739,"adasSatelliteTime":1643342592739,"satelliteTime":1643342592739,"speed":6.5505290031433105} +{"lon":116.73495161781128,"lat":40.19925327304007,"alt":0,"heading":272.8741522541634,"systemTime":1643342592789,"receiverDataTime":1643342592789,"adasSatelliteTime":1643342592789,"satelliteTime":1643342592789,"speed":6.533304214477539} +{"lon":116.7349470298381,"lat":40.19925347047247,"alt":0,"heading":272.9570024487956,"systemTime":1643342592839,"receiverDataTime":1643342592839,"adasSatelliteTime":1643342592839,"satelliteTime":1643342592839,"speed":6.515581130981445} +{"lon":116.7349447414762,"lat":40.19925357011368,"alt":0,"heading":272.9936532438819,"systemTime":1643342592889,"receiverDataTime":1643342592889,"adasSatelliteTime":1643342592889,"satelliteTime":1643342592889,"speed":6.503171443939209} +{"lon":116.73494169753123,"lat":40.199253702216915,"alt":0,"heading":273.0375986810018,"systemTime":1643342592940,"receiverDataTime":1643342592940,"adasSatelliteTime":1643342592940,"satelliteTime":1643342592940,"speed":6.487307548522949} +{"lon":116.73493789941399,"lat":40.199253867020715,"alt":0,"heading":273.09249974155034,"systemTime":1643342592990,"receiverDataTime":1643342592990,"adasSatelliteTime":1643342592990,"satelliteTime":1643342592990,"speed":6.477713584899902} +{"lon":116.73493410812696,"lat":40.199254036547835,"alt":0,"heading":273.1521272930045,"systemTime":1643342593060,"receiverDataTime":1643342593060,"adasSatelliteTime":1643342593060,"satelliteTime":1643342593060,"speed":6.46525764465332} +{"lon":116.7349295705047,"lat":40.19925424401705,"alt":0,"heading":273.2256747699872,"systemTime":1643342593108,"receiverDataTime":1643342593108,"adasSatelliteTime":1643342593108,"satelliteTime":1643342593108,"speed":6.446794033050537} +{"lon":116.73492730659004,"lat":40.199254346186656,"alt":0,"heading":273.26373258404254,"systemTime":1643342593159,"receiverDataTime":1643342593159,"adasSatelliteTime":1643342593159,"satelliteTime":1643342593159,"speed":6.43800163269043} +{"lon":116.73492203878591,"lat":40.199254588924184,"alt":0,"heading":273.3486591561825,"systemTime":1643342593210,"receiverDataTime":1643342593210,"adasSatelliteTime":1643342593210,"satelliteTime":1643342593210,"speed":6.412949562072754} +{"lon":116.73491604978692,"lat":40.1992548791022,"alt":0,"heading":273.4331622565939,"systemTime":1643342593260,"receiverDataTime":1643342593260,"adasSatelliteTime":1643342593260,"satelliteTime":1643342593260,"speed":6.381260871887207} +{"lon":116.73491232214708,"lat":40.19925506494879,"alt":0,"heading":273.4943607515572,"systemTime":1643342593312,"receiverDataTime":1643342593312,"adasSatelliteTime":1643342593312,"satelliteTime":1643342593312,"speed":6.364768028259277} +{"lon":116.73490934749913,"lat":40.19925521584883,"alt":0,"heading":273.54409818909323,"systemTime":1643342593363,"receiverDataTime":1643342593363,"adasSatelliteTime":1643342593363,"satelliteTime":1643342593363,"speed":6.350151538848877} +{"lon":116.73490638091097,"lat":40.19925537079313,"alt":0,"heading":273.5944230228979,"systemTime":1643342593413,"receiverDataTime":1643342593413,"adasSatelliteTime":1643342593413,"satelliteTime":1643342593413,"speed":6.33367395401001} +{"lon":116.73490268373777,"lat":40.19925557020282,"alt":0,"heading":273.65252061197805,"systemTime":1643342593472,"receiverDataTime":1643342593472,"adasSatelliteTime":1643342593472,"satelliteTime":1643342593472,"speed":6.313229560852051} +{"lon":116.73489900058118,"lat":40.19925577138565,"alt":0,"heading":273.70810469144357,"systemTime":1643342593522,"receiverDataTime":1643342593522,"adasSatelliteTime":1643342593522,"satelliteTime":1643342593522,"speed":6.288788795471191} +{"lon":116.73489459969825,"lat":40.19925600542526,"alt":0,"heading":273.77386575277245,"systemTime":1643342593572,"receiverDataTime":1643342593572,"adasSatelliteTime":1643342593572,"satelliteTime":1643342593572,"speed":6.256558895111084} +{"lon":116.7348916799235,"lat":40.199256159892855,"alt":0,"heading":273.82315239782326,"systemTime":1643342593624,"receiverDataTime":1643342593624,"adasSatelliteTime":1643342593624,"satelliteTime":1643342593624,"speed":6.228003978729248} +{"lon":116.73488877540791,"lat":40.19925631702485,"alt":0,"heading":273.8714008541203,"systemTime":1643342593674,"receiverDataTime":1643342593674,"adasSatelliteTime":1643342593674,"satelliteTime":1643342593674,"speed":6.194235801696777} +{"lon":116.73488588774224,"lat":40.19925647517992,"alt":0,"heading":273.92123391430465,"systemTime":1643342593728,"receiverDataTime":1643342593728,"adasSatelliteTime":1643342593728,"satelliteTime":1643342593728,"speed":6.157707691192627} +{"lon":116.73488230238513,"lat":40.19925667684286,"alt":0,"heading":273.9782113523609,"systemTime":1643342593778,"receiverDataTime":1643342593778,"adasSatelliteTime":1643342593778,"satelliteTime":1643342593778,"speed":6.111447811126709} +{"lon":116.73487523462693,"lat":40.19925709357902,"alt":0,"heading":274.065514830332,"systemTime":1643342593828,"receiverDataTime":1643342593828,"adasSatelliteTime":1643342593828,"satelliteTime":1643342593828,"speed":5.9792890548706055} +{"lon":116.73487245460397,"lat":40.199257259940055,"alt":0,"heading":274.0838607184427,"systemTime":1643342593881,"receiverDataTime":1643342593881,"adasSatelliteTime":1643342593881,"satelliteTime":1643342593881,"speed":5.917003154754639} +{"lon":116.73486970361974,"lat":40.19925742532411,"alt":0,"heading":274.090062530209,"systemTime":1643342593929,"receiverDataTime":1643342593929,"adasSatelliteTime":1643342593929,"satelliteTime":1643342593929,"speed":5.855509281158447} +{"lon":116.73486698312225,"lat":40.19925759031467,"alt":0,"heading":274.08835498291654,"systemTime":1643342593982,"receiverDataTime":1643342593982,"adasSatelliteTime":1643342593982,"satelliteTime":1643342593982,"speed":5.787456035614014} +{"lon":116.73486362941091,"lat":40.19925779614582,"alt":0,"heading":274.0679053965415,"systemTime":1643342594032,"receiverDataTime":1643342594032,"adasSatelliteTime":1643342594032,"satelliteTime":1643342594032,"speed":5.697107315063477} +{"lon":116.73485967209128,"lat":40.19925803742804,"alt":0,"heading":274.0126355057778,"systemTime":1643342594084,"receiverDataTime":1643342594084,"adasSatelliteTime":1643342594084,"satelliteTime":1643342594084,"speed":5.5941667556762695} +{"lon":116.73485451087043,"lat":40.19925834360048,"alt":0,"heading":273.8856486287289,"systemTime":1643342594135,"receiverDataTime":1643342594135,"adasSatelliteTime":1643342594135,"satelliteTime":1643342594135,"speed":5.448897361755371} +{"lon":116.7348519821099,"lat":40.1992584858542,"alt":0,"heading":273.80248424539485,"systemTime":1643342594186,"receiverDataTime":1643342594186,"adasSatelliteTime":1643342594186,"satelliteTime":1643342594186,"speed":5.368979454040527} +{"lon":116.73484886871806,"lat":40.1992586533177,"alt":0,"heading":273.67949985919955,"systemTime":1643342594235,"receiverDataTime":1643342594235,"adasSatelliteTime":1643342594235,"satelliteTime":1643342594235,"speed":5.277531147003174} +{"lon":116.73484459054657,"lat":40.19925886812064,"alt":0,"heading":273.461890032243,"systemTime":1643342594289,"receiverDataTime":1643342594289,"adasSatelliteTime":1643342594289,"satelliteTime":1643342594289,"speed":5.154534339904785} +{"lon":116.73484159708273,"lat":40.1992590088993,"alt":0,"heading":273.28423681193095,"systemTime":1643342594343,"receiverDataTime":1643342594343,"adasSatelliteTime":1643342594343,"satelliteTime":1643342594343,"speed":5.065052509307861} +{"lon":116.73483923755485,"lat":40.19925911412939,"alt":0,"heading":273.1224432908717,"systemTime":1643342594401,"receiverDataTime":1643342594401,"adasSatelliteTime":1643342594401,"satelliteTime":1643342594401,"speed":5.000243663787842} +{"lon":116.73483632959457,"lat":40.199259238739806,"alt":0,"heading":272.8851898398621,"systemTime":1643342594452,"receiverDataTime":1643342594452,"adasSatelliteTime":1643342594452,"satelliteTime":1643342594452,"speed":4.922383785247803} +{"lon":116.73483289637431,"lat":40.199259380142095,"alt":0,"heading":272.5419864944473,"systemTime":1643342594502,"receiverDataTime":1643342594502,"adasSatelliteTime":1643342594502,"satelliteTime":1643342594502,"speed":4.835648059844971} +{"lon":116.73483064209957,"lat":40.19925946641471,"alt":0,"heading":272.2777674565945,"systemTime":1643342594553,"receiverDataTime":1643342594553,"adasSatelliteTime":1643342594553,"satelliteTime":1643342594553,"speed":4.7764892578125} +{"lon":116.73482841527225,"lat":40.19925954420875,"alt":0,"heading":271.98651453000684,"systemTime":1643342594605,"receiverDataTime":1643342594605,"adasSatelliteTime":1643342594605,"satelliteTime":1643342594605,"speed":4.71820068359375} +{"lon":116.73482566801316,"lat":40.19925962843205,"alt":0,"heading":271.58838280328683,"systemTime":1643342594659,"receiverDataTime":1643342594659,"adasSatelliteTime":1643342594659,"satelliteTime":1643342594659,"speed":4.6505866050720215} +{"lon":116.7348224217031,"lat":40.1992597062105,"alt":0,"heading":271.04459046232705,"systemTime":1643342594706,"receiverDataTime":1643342594706,"adasSatelliteTime":1643342594706,"satelliteTime":1643342594706,"speed":4.5740814208984375} +{"lon":116.73482028591336,"lat":40.19925974365938,"alt":0,"heading":270.6428250749686,"systemTime":1643342594757,"receiverDataTime":1643342594757,"adasSatelliteTime":1643342594757,"satelliteTime":1643342594757,"speed":4.526536464691162} +{"lon":116.73481556302237,"lat":40.19925978034786,"alt":0,"heading":269.62973043613727,"systemTime":1643342594813,"receiverDataTime":1643342594813,"adasSatelliteTime":1643342594813,"satelliteTime":1643342594813,"speed":4.419610023498535} +{"lon":116.73481247298464,"lat":40.1992597647499,"alt":0,"heading":268.8740246459887,"systemTime":1643342594866,"receiverDataTime":1643342594866,"adasSatelliteTime":1643342594866,"satelliteTime":1643342594866,"speed":4.357093334197998} +{"lon":116.7348109443759,"lat":40.199259745614704,"alt":0,"heading":268.47342039078916,"systemTime":1643342594920,"receiverDataTime":1643342594920,"adasSatelliteTime":1643342594920,"satelliteTime":1643342594920,"speed":4.326894760131836} +{"lon":116.7348084220989,"lat":40.19925969690685,"alt":0,"heading":267.7645970191036,"systemTime":1643342594970,"receiverDataTime":1643342594970,"adasSatelliteTime":1643342594970,"satelliteTime":1643342594970,"speed":4.272579669952393} +{"lon":116.73480543892492,"lat":40.19925960575337,"alt":0,"heading":266.8666457093003,"systemTime":1643342595021,"receiverDataTime":1643342595021,"adasSatelliteTime":1643342595021,"satelliteTime":1643342595021,"speed":4.207949638366699} +{"lon":116.73480396452298,"lat":40.1992595472202,"alt":0,"heading":266.3965784302417,"systemTime":1643342595071,"receiverDataTime":1643342595071,"adasSatelliteTime":1643342595071,"satelliteTime":1643342595071,"speed":4.178901672363281} +{"lon":116.73480152431921,"lat":40.1992594344555,"alt":0,"heading":265.5796878055082,"systemTime":1643342595121,"receiverDataTime":1643342595121,"adasSatelliteTime":1643342595121,"satelliteTime":1643342595121,"speed":4.153376579284668} +{"lon":116.73479861490979,"lat":40.19925926827317,"alt":0,"heading":264.52987406969885,"systemTime":1643342595173,"receiverDataTime":1643342595173,"adasSatelliteTime":1643342595173,"satelliteTime":1643342595173,"speed":4.128345489501953} +{"lon":116.7347966899778,"lat":40.19925913252949,"alt":0,"heading":263.794686167817,"systemTime":1643342595226,"receiverDataTime":1643342595226,"adasSatelliteTime":1643342595226,"satelliteTime":1643342595226,"speed":4.1066813468933105} +{"lon":116.7347942993487,"lat":40.199258937584425,"alt":0,"heading":262.83750345753145,"systemTime":1643342595275,"receiverDataTime":1643342595275,"adasSatelliteTime":1643342595275,"satelliteTime":1643342595275,"speed":4.085078716278076} +{"lon":116.73479144786855,"lat":40.19925867125076,"alt":0,"heading":261.6461818624978,"systemTime":1643342595327,"receiverDataTime":1643342595327,"adasSatelliteTime":1643342595327,"satelliteTime":1643342595327,"speed":4.06749153137207} +{"lon":116.73478956053388,"lat":40.19925846939681,"alt":0,"heading":260.8217780296773,"systemTime":1643342595378,"receiverDataTime":1643342595378,"adasSatelliteTime":1643342595378,"satelliteTime":1643342595378,"speed":4.046395301818848} +{"lon":116.73478629377207,"lat":40.19925806048815,"alt":0,"heading":259.32584365803945,"systemTime":1643342595429,"receiverDataTime":1643342595429,"adasSatelliteTime":1643342595429,"satelliteTime":1643342595429,"speed":4.008044242858887} +{"lon":116.73478352943884,"lat":40.19925765753695,"alt":0,"heading":257.9897766941149,"systemTime":1643342595481,"receiverDataTime":1643342595481,"adasSatelliteTime":1643342595481,"satelliteTime":1643342595481,"speed":3.9777450561523438} +{"lon":116.73478125247878,"lat":40.19925728337976,"alt":0,"heading":256.84536483830095,"systemTime":1643342595531,"receiverDataTime":1643342595531,"adasSatelliteTime":1643342595531,"satelliteTime":1643342595531,"speed":3.951850175857544} +{"lon":116.73477900141485,"lat":40.19925687345971,"alt":0,"heading":255.66928822549477,"systemTime":1643342595583,"receiverDataTime":1643342595583,"adasSatelliteTime":1643342595583,"satelliteTime":1643342595583,"speed":3.9263577461242676} +{"lon":116.7347772185237,"lat":40.199256524192315,"alt":0,"heading":254.69925109919123,"systemTime":1643342595632,"receiverDataTime":1643342595632,"adasSatelliteTime":1643342595632,"satelliteTime":1643342595632,"speed":3.9058749675750732} +{"lon":116.73477501111387,"lat":40.199256057047954,"alt":0,"heading":253.45723584013777,"systemTime":1643342595683,"receiverDataTime":1643342595683,"adasSatelliteTime":1643342595683,"satelliteTime":1643342595683,"speed":3.8902273178100586} +{"lon":116.73477239220863,"lat":40.19925545830117,"alt":0,"heading":251.9279564849719,"systemTime":1643342595733,"receiverDataTime":1643342595733,"adasSatelliteTime":1643342595733,"satelliteTime":1643342595733,"speed":3.8598885536193848} +{"lon":116.73477109827525,"lat":40.199255143850934,"alt":0,"heading":251.15559869362687,"systemTime":1643342595785,"receiverDataTime":1643342595785,"adasSatelliteTime":1643342595785,"satelliteTime":1643342595785,"speed":3.840543508529663} +{"lon":116.73476939041227,"lat":40.199254708069,"alt":0,"heading":250.1169591472997,"systemTime":1643342595834,"receiverDataTime":1643342595834,"adasSatelliteTime":1643342595834,"satelliteTime":1643342595834,"speed":3.817713975906372} +{"lon":116.73476687084504,"lat":40.199254010749776,"alt":0,"heading":248.54716310997733,"systemTime":1643342595885,"receiverDataTime":1643342595885,"adasSatelliteTime":1643342595885,"satelliteTime":1643342595885,"speed":3.7800769805908203} +{"lon":116.73476440562183,"lat":40.199253259238574,"alt":0,"heading":246.97657477071124,"systemTime":1643342595935,"receiverDataTime":1643342595935,"adasSatelliteTime":1643342595935,"satelliteTime":1643342595935,"speed":3.747934103012085} +{"lon":116.7347627865158,"lat":40.199252735072,"alt":0,"heading":245.91557318504147,"systemTime":1643342595987,"receiverDataTime":1643342595987,"adasSatelliteTime":1643342595987,"satelliteTime":1643342595987,"speed":3.731349468231201} +{"lon":116.73475920569165,"lat":40.199251476781214,"alt":0,"heading":243.5027542192211,"systemTime":1643342596036,"receiverDataTime":1643342596036,"adasSatelliteTime":1643342596036,"satelliteTime":1643342596036,"speed":3.7194817066192627} +{"lon":116.73475686394731,"lat":40.199250575740216,"alt":0,"heading":241.8935616507661,"systemTime":1643342596089,"receiverDataTime":1643342596089,"adasSatelliteTime":1643342596089,"satelliteTime":1643342596089,"speed":3.7091827392578125} +{"lon":116.73475686394731,"lat":40.199250575740216,"alt":0,"heading":241.8935616507661,"systemTime":1643342596141,"receiverDataTime":1643342596141,"adasSatelliteTime":1643342596141,"satelliteTime":1643342596141,"speed":3.7091827392578125} +{"lon":116.73475381168889,"lat":40.19924929941926,"alt":0,"heading":239.7587177237869,"systemTime":1643342596193,"receiverDataTime":1643342596193,"adasSatelliteTime":1643342596193,"satelliteTime":1643342596193,"speed":3.685511827468872} +{"lon":116.73475231824959,"lat":40.19924863565633,"alt":0,"heading":238.6867878354451,"systemTime":1643342596249,"receiverDataTime":1643342596249,"adasSatelliteTime":1643342596249,"satelliteTime":1643342596249,"speed":3.6683709621429443} +{"lon":116.73474939874703,"lat":40.19924726986947,"alt":0,"heading":236.54549620988942,"systemTime":1643342596320,"receiverDataTime":1643342596320,"adasSatelliteTime":1643342596320,"satelliteTime":1643342596320,"speed":3.6302874088287354} +{"lon":116.73474762156624,"lat":40.19924637623519,"alt":0,"heading":235.19627430162345,"systemTime":1643342596371,"receiverDataTime":1643342596371,"adasSatelliteTime":1643342596371,"satelliteTime":1643342596371,"speed":3.6220788955688477} +{"lon":116.73474657507465,"lat":40.199245821095985,"alt":0,"heading":234.38528496033283,"systemTime":1643342596422,"receiverDataTime":1643342596422,"adasSatelliteTime":1643342596422,"satelliteTime":1643342596422,"speed":3.6164262294769287} +{"lon":116.73474319761021,"lat":40.1992438868898,"alt":0,"heading":231.68552974748022,"systemTime":1643342596472,"receiverDataTime":1643342596472,"adasSatelliteTime":1643342596472,"satelliteTime":1643342596472,"speed":3.5816292762756348} +{"lon":116.73474319761021,"lat":40.1992438868898,"alt":0,"heading":231.68552974748022,"systemTime":1643342596524,"receiverDataTime":1643342596524,"adasSatelliteTime":1643342596524,"satelliteTime":1643342596524,"speed":3.5816292762756348} +{"lon":116.73474124983943,"lat":40.199242674290474,"alt":0,"heading":230.05456253595122,"systemTime":1643342596576,"receiverDataTime":1643342596576,"adasSatelliteTime":1643342596576,"satelliteTime":1643342596576,"speed":3.5576705932617188} +{"lon":116.7347399813357,"lat":40.19924184820388,"alt":0,"heading":228.95080396607716,"systemTime":1643342596625,"receiverDataTime":1643342596625,"adasSatelliteTime":1643342596625,"satelliteTime":1643342596625,"speed":3.543320894241333} +{"lon":116.73473842689832,"lat":40.199240798787024,"alt":0,"heading":227.55460401669984,"systemTime":1643342596675,"receiverDataTime":1643342596675,"adasSatelliteTime":1643342596675,"satelliteTime":1643342596675,"speed":3.524029016494751} +{"lon":116.73473629023823,"lat":40.19923930396878,"alt":0,"heading":225.5634672698577,"systemTime":1643342596727,"receiverDataTime":1643342596727,"adasSatelliteTime":1643342596727,"satelliteTime":1643342596727,"speed":3.522493839263916} +{"lon":116.7347339052194,"lat":40.19923754832846,"alt":0,"heading":223.25748612303468,"systemTime":1643342596777,"receiverDataTime":1643342596777,"adasSatelliteTime":1643342596777,"satelliteTime":1643342596777,"speed":3.513291358947754} +{"lon":116.7347327528291,"lat":40.19923664724321,"alt":0,"heading":222.10476875718996,"systemTime":1643342596832,"receiverDataTime":1643342596832,"adasSatelliteTime":1643342596832,"satelliteTime":1643342596832,"speed":3.498554229736328} +{"lon":116.73473107411245,"lat":40.19923526903001,"alt":0,"heading":220.37584297258465,"systemTime":1643342596882,"receiverDataTime":1643342596882,"adasSatelliteTime":1643342596882,"satelliteTime":1643342596882,"speed":3.4849355220794678} +{"lon":116.73472998896347,"lat":40.199234331291876,"alt":0,"heading":219.21380922871202,"systemTime":1643342596934,"receiverDataTime":1643342596934,"adasSatelliteTime":1643342596934,"satelliteTime":1643342596934,"speed":3.4757256507873535} +{"lon":116.73472867871264,"lat":40.19923313518667,"alt":0,"heading":217.74947131217465,"systemTime":1643342596987,"receiverDataTime":1643342596987,"adasSatelliteTime":1643342596987,"satelliteTime":1643342596987,"speed":3.461696147918701} +{"lon":116.73472718367694,"lat":40.199231664019166,"alt":0,"heading":215.9827199399458,"systemTime":1643342597039,"receiverDataTime":1643342597039,"adasSatelliteTime":1643342597039,"satelliteTime":1643342597039,"speed":3.4390170574188232} +{"lon":116.73472648014071,"lat":40.199230910366204,"alt":0,"heading":215.12178825544405,"systemTime":1643342597091,"receiverDataTime":1643342597091,"adasSatelliteTime":1643342597091,"satelliteTime":1643342597091,"speed":3.425400733947754} +{"lon":116.73472535399814,"lat":40.19922963696944,"alt":0,"heading":213.68285864261912,"systemTime":1643342597141,"receiverDataTime":1643342597141,"adasSatelliteTime":1643342597141,"satelliteTime":1643342597141,"speed":3.407188892364502} +{"lon":116.73472426734982,"lat":40.19922835215573,"alt":0,"heading":212.2130838955024,"systemTime":1643342597194,"receiverDataTime":1643342597194,"adasSatelliteTime":1643342597194,"satelliteTime":1643342597194,"speed":3.3910531997680664} +{"lon":116.7347226101938,"lat":40.19922627430368,"alt":0,"heading":209.72779662258822,"systemTime":1643342597247,"receiverDataTime":1643342597247,"adasSatelliteTime":1643342597247,"satelliteTime":1643342597247,"speed":3.3615550994873047} +{"lon":116.73472221492406,"lat":40.19922574944036,"alt":0,"heading":209.09693303008916,"systemTime":1643342597297,"receiverDataTime":1643342597297,"adasSatelliteTime":1643342597297,"satelliteTime":1643342597297,"speed":3.3533520698547363} +{"lon":116.73472070966878,"lat":40.19922363329282,"alt":0,"heading":206.59276711430903,"systemTime":1643342597347,"receiverDataTime":1643342597347,"adasSatelliteTime":1643342597347,"satelliteTime":1643342597347,"speed":3.3173723220825195} +{"lon":116.7347199910015,"lat":40.19922257018883,"alt":0,"heading":205.34098468474247,"systemTime":1643342597424,"receiverDataTime":1643342597424,"adasSatelliteTime":1643342597424,"satelliteTime":1643342597424,"speed":3.305483102798462} +{"lon":116.73471828537895,"lat":40.199219887643636,"alt":0,"heading":202.13505781287856,"systemTime":1643342597478,"receiverDataTime":1643342597478,"adasSatelliteTime":1643342597478,"satelliteTime":1643342597478,"speed":3.287700653076172} +{"lon":116.7347175008291,"lat":40.19921853163494,"alt":0,"heading":200.50780622425805,"systemTime":1643342597527,"receiverDataTime":1643342597527,"adasSatelliteTime":1643342597527,"satelliteTime":1643342597527,"speed":3.2672951221466064} +{"lon":116.73471735055523,"lat":40.19921825916444,"alt":0,"heading":200.18211548387515,"systemTime":1643342597577,"receiverDataTime":1643342597577,"adasSatelliteTime":1643342597577,"satelliteTime":1643342597577,"speed":3.2650537490844727} +{"lon":116.73471691443093,"lat":40.1992174373761,"alt":0,"heading":199.20045337560424,"systemTime":1643342597631,"receiverDataTime":1643342597631,"adasSatelliteTime":1643342597631,"satelliteTime":1643342597631,"speed":3.265472650527954} +{"lon":116.73471574804387,"lat":40.199214941726574,"alt":0,"heading":196.2384735401365,"systemTime":1643342597685,"receiverDataTime":1643342597685,"adasSatelliteTime":1643342597685,"satelliteTime":1643342597685,"speed":3.2445602416992188} +{"lon":116.7347150938317,"lat":40.199213257326704,"alt":0,"heading":194.25823777520972,"systemTime":1643342597736,"receiverDataTime":1643342597736,"adasSatelliteTime":1643342597736,"satelliteTime":1643342597736,"speed":3.2343435287475586} +{"lon":116.7347147028316,"lat":40.19921212831882,"alt":0,"heading":192.92834530229487,"systemTime":1643342597786,"receiverDataTime":1643342597786,"adasSatelliteTime":1643342597786,"satelliteTime":1643342597786,"speed":3.2221384048461914} +{"lon":116.73471434536677,"lat":40.19921099819834,"alt":0,"heading":191.6050917732533,"systemTime":1643342597837,"receiverDataTime":1643342597837,"adasSatelliteTime":1643342597837,"satelliteTime":1643342597837,"speed":3.2079954147338867} +{"lon":116.7347138788472,"lat":40.19920929995336,"alt":0,"heading":189.6292819709087,"systemTime":1643342597887,"receiverDataTime":1643342597887,"adasSatelliteTime":1643342597887,"satelliteTime":1643342597887,"speed":3.190948486328125} +{"lon":116.73471354953183,"lat":40.19920788265565,"alt":0,"heading":187.98968140026878,"systemTime":1643342597941,"receiverDataTime":1643342597941,"adasSatelliteTime":1643342597941,"satelliteTime":1643342597941,"speed":3.178107500076294} +{"lon":116.73471332097091,"lat":40.19920674839797,"alt":0,"heading":186.67724689087248,"systemTime":1643342597997,"receiverDataTime":1643342597997,"adasSatelliteTime":1643342597997,"satelliteTime":1643342597997,"speed":3.1684372425079346} +{"lon":116.73471291952345,"lat":40.199204198348475,"alt":0,"heading":183.7142561874076,"systemTime":1643342598046,"receiverDataTime":1643342598046,"adasSatelliteTime":1643342598046,"satelliteTime":1643342598046,"speed":3.1444036960601807} +{"lon":116.73471274684718,"lat":40.199202502166564,"alt":0,"heading":181.73123370529947,"systemTime":1643342598097,"receiverDataTime":1643342598097,"adasSatelliteTime":1643342598097,"satelliteTime":1643342598097,"speed":3.129770517349243} +{"lon":116.73471267875001,"lat":40.199201372784444,"alt":0,"heading":180.41226953505665,"systemTime":1643342598149,"receiverDataTime":1643342598149,"adasSatelliteTime":1643342598149,"satelliteTime":1643342598149,"speed":3.122391939163208} +{"lon":116.73471264761635,"lat":40.19920024545608,"alt":0,"heading":179.09778596890933,"systemTime":1643342598199,"receiverDataTime":1643342598199,"adasSatelliteTime":1643342598199,"satelliteTime":1643342598199,"speed":3.112816333770752} +{"lon":116.73471270286215,"lat":40.19919798677937,"alt":0,"heading":176.47242517649653,"systemTime":1643342598250,"receiverDataTime":1643342598250,"adasSatelliteTime":1643342598250,"satelliteTime":1643342598250,"speed":3.1045937538146973} +{"lon":116.73471272026705,"lat":40.19919770431032,"alt":0,"heading":176.14520447373954,"systemTime":1643342598300,"receiverDataTime":1643342598300,"adasSatelliteTime":1643342598300,"satelliteTime":1643342598300,"speed":3.1052582263946533} +{"lon":116.734712809083,"lat":40.199196577663045,"alt":0,"heading":174.84306988961166,"systemTime":1643342598351,"receiverDataTime":1643342598351,"adasSatelliteTime":1643342598351,"satelliteTime":1643342598351,"speed":3.0904502868652344} +{"lon":116.73471311298104,"lat":40.199194059986795,"alt":0,"heading":171.91860145306563,"systemTime":1643342598406,"receiverDataTime":1643342598406,"adasSatelliteTime":1643342598406,"satelliteTime":1643342598406,"speed":3.0697481632232666} +{"lon":116.73471333887922,"lat":40.199192672505305,"alt":0,"heading":170.2646574851687,"systemTime":1643342598453,"receiverDataTime":1643342598453,"adasSatelliteTime":1643342598453,"satelliteTime":1643342598453,"speed":3.052539825439453} +{"lon":116.7347136823621,"lat":40.199191027810926,"alt":0,"heading":168.28600632412937,"systemTime":1643342598503,"receiverDataTime":1643342598503,"adasSatelliteTime":1643342598503,"satelliteTime":1643342598503,"speed":3.025969982147217} +{"lon":116.73471396370313,"lat":40.199189947593396,"alt":0,"heading":166.99608411823743,"systemTime":1643342598554,"receiverDataTime":1643342598554,"adasSatelliteTime":1643342598554,"satelliteTime":1643342598554,"speed":3.013810157775879} +{"lon":116.7347140404806,"lat":40.199189679134356,"alt":0,"heading":166.6783983595618,"systemTime":1643342598605,"receiverDataTime":1643342598605,"adasSatelliteTime":1643342598605,"satelliteTime":1643342598605,"speed":3.012770175933838} +{"lon":116.73471453557373,"lat":40.199188074200116,"alt":0,"heading":164.77220184523796,"systemTime":1643342598657,"receiverDataTime":1643342598657,"adasSatelliteTime":1643342598657,"satelliteTime":1643342598657,"speed":3.0136733055114746} +{"lon":116.73471528102773,"lat":40.19918596090884,"alt":0,"heading":162.22803834167826,"systemTime":1643342598710,"receiverDataTime":1643342598710,"adasSatelliteTime":1643342598710,"satelliteTime":1643342598710,"speed":2.994696855545044} +{"lon":116.73471569131227,"lat":40.199184919085106,"alt":0,"heading":160.9431977965288,"systemTime":1643342598760,"receiverDataTime":1643342598760,"adasSatelliteTime":1643342598760,"satelliteTime":1643342598760,"speed":2.981978416442871} +{"lon":116.7347162453391,"lat":40.19918363472583,"alt":0,"heading":159.35064356889197,"systemTime":1643342598810,"receiverDataTime":1643342598810,"adasSatelliteTime":1643342598810,"satelliteTime":1643342598810,"speed":2.965104103088379} +{"lon":116.73471697322051,"lat":40.19918212347291,"alt":0,"heading":157.4706476602243,"systemTime":1643342598861,"receiverDataTime":1643342598861,"adasSatelliteTime":1643342598861,"satelliteTime":1643342598861,"speed":2.9419898986816406} +{"lon":116.73471710177824,"lat":40.19918187508,"alt":0,"heading":157.1614040153628,"systemTime":1643342598911,"receiverDataTime":1643342598911,"adasSatelliteTime":1643342598911,"satelliteTime":1643342598911,"speed":2.9381468296051025} +{"lon":116.73471777913358,"lat":40.199180648146765,"alt":0,"heading":155.63223394322367,"systemTime":1643342598961,"receiverDataTime":1643342598961,"adasSatelliteTime":1643342598961,"satelliteTime":1643342598961,"speed":2.926788091659546} +{"lon":116.73471927703193,"lat":40.19917826151465,"alt":0,"heading":152.59176157381415,"systemTime":1643342599015,"receiverDataTime":1643342599015,"adasSatelliteTime":1643342599015,"satelliteTime":1643342599015,"speed":2.905658721923828} +{"lon":116.73471943341477,"lat":40.19917802668071,"alt":0,"heading":152.28825528785546,"systemTime":1643342599074,"receiverDataTime":1643342599074,"adasSatelliteTime":1643342599074,"satelliteTime":1643342599074,"speed":2.9036080837249756} +{"lon":116.73472056017222,"lat":40.19917640140674,"alt":0,"heading":150.19125060887814,"systemTime":1643342599125,"receiverDataTime":1643342599125,"adasSatelliteTime":1643342599125,"satelliteTime":1643342599125,"speed":2.8954057693481445} +{"lon":116.73472140776224,"lat":40.19917526135025,"alt":0,"heading":148.72180371084158,"systemTime":1643342599174,"receiverDataTime":1643342599174,"adasSatelliteTime":1643342599174,"satelliteTime":1643342599174,"speed":2.8911802768707275} +{"lon":116.73472210866849,"lat":40.19917436247686,"alt":0,"heading":147.56725585429933,"systemTime":1643342599224,"receiverDataTime":1643342599224,"adasSatelliteTime":1643342599224,"satelliteTime":1643342599224,"speed":2.8831212520599365} +{"lon":116.73472358685599,"lat":40.1991726057085,"alt":0,"heading":145.33785478845047,"systemTime":1643342599274,"receiverDataTime":1643342599274,"adasSatelliteTime":1643342599274,"satelliteTime":1643342599274,"speed":2.8715767860412598} +{"lon":116.73472436196414,"lat":40.199171751409644,"alt":0,"heading":144.23925984158896,"systemTime":1643342599326,"receiverDataTime":1643342599326,"adasSatelliteTime":1643342599326,"satelliteTime":1643342599326,"speed":2.8544962406158447} +{"lon":116.73472515448886,"lat":40.199170912112365,"alt":0,"heading":143.15347832961035,"systemTime":1643342599383,"receiverDataTime":1643342599383,"adasSatelliteTime":1643342599383,"satelliteTime":1643342599383,"speed":2.8447577953338623} +{"lon":116.73472701318822,"lat":40.19916906944342,"alt":0,"heading":140.76132751621844,"systemTime":1643342599431,"receiverDataTime":1643342599431,"adasSatelliteTime":1643342599431,"satelliteTime":1643342599431,"speed":2.844235897064209} +{"lon":116.73472809587257,"lat":40.199168077627455,"alt":0,"heading":139.47517557474836,"systemTime":1643342599481,"receiverDataTime":1643342599481,"adasSatelliteTime":1643342599481,"satelliteTime":1643342599481,"speed":2.838319778442383} +{"lon":116.7347283151897,"lat":40.199167881790174,"alt":0,"heading":139.22256785848464,"systemTime":1643342599535,"receiverDataTime":1643342599535,"adasSatelliteTime":1643342599535,"satelliteTime":1643342599535,"speed":2.8363170623779297} +{"lon":116.73472963510933,"lat":40.199166712712824,"alt":0,"heading":137.7052823155013,"systemTime":1643342599589,"receiverDataTime":1643342599589,"adasSatelliteTime":1643342599589,"satelliteTime":1643342599589,"speed":2.831371545791626} +{"lon":116.73473097585747,"lat":40.19916556347681,"alt":0,"heading":136.21001730240212,"systemTime":1643342599638,"receiverDataTime":1643342599638,"adasSatelliteTime":1643342599638,"satelliteTime":1643342599638,"speed":2.823955774307251} +{"lon":116.7347318958753,"lat":40.199164818618925,"alt":0,"heading":135.23133315660934,"systemTime":1643342599690,"receiverDataTime":1643342599690,"adasSatelliteTime":1643342599690,"satelliteTime":1643342599690,"speed":2.8217196464538574} +{"lon":116.73473402991073,"lat":40.19916320541578,"alt":0,"heading":133.1074994945722,"systemTime":1643342599740,"receiverDataTime":1643342599740,"adasSatelliteTime":1643342599740,"satelliteTime":1643342599740,"speed":2.8017020225524902} +{"lon":116.73473523829819,"lat":40.19916234306514,"alt":0,"heading":131.95907148752627,"systemTime":1643342599791,"receiverDataTime":1643342599791,"adasSatelliteTime":1643342599791,"satelliteTime":1643342599791,"speed":2.7775659561157227} +{"lon":116.73473620837245,"lat":40.199161667692856,"alt":0,"heading":131.05166719591173,"systemTime":1643342599843,"receiverDataTime":1643342599843,"adasSatelliteTime":1643342599843,"satelliteTime":1643342599843,"speed":2.7617156505584717} +{"lon":116.73473743292077,"lat":40.19916084012029,"alt":0,"heading":129.91695420871918,"systemTime":1643342599894,"receiverDataTime":1643342599894,"adasSatelliteTime":1643342599894,"satelliteTime":1643342599894,"speed":2.7603938579559326} +{"lon":116.73473868328668,"lat":40.199160033627926,"alt":0,"heading":128.7818587309331,"systemTime":1643342599944,"receiverDataTime":1643342599944,"adasSatelliteTime":1643342599944,"satelliteTime":1643342599944,"speed":2.7668254375457764} +{"lon":116.73473970266458,"lat":40.19915940289361,"alt":0,"heading":127.87500085445215,"systemTime":1643342599994,"receiverDataTime":1643342599994,"adasSatelliteTime":1643342599994,"satelliteTime":1643342599994,"speed":2.772723436355591} +{"lon":116.73474073836478,"lat":40.199158788545546,"alt":0,"heading":126.97633920497525,"systemTime":1643342600049,"receiverDataTime":1643342600049,"adasSatelliteTime":1643342600049,"satelliteTime":1643342600049,"speed":2.768186092376709} +{"lon":116.7347420538786,"lat":40.19915805290182,"alt":0,"heading":125.87681535238659,"systemTime":1643342600099,"receiverDataTime":1643342600099,"adasSatelliteTime":1643342600099,"satelliteTime":1643342600099,"speed":2.7446675300598145} +{"lon":116.73474364612761,"lat":40.199157218398675,"alt":0,"heading":124.57336937193804,"systemTime":1643342600149,"receiverDataTime":1643342600149,"adasSatelliteTime":1643342600149,"satelliteTime":1643342600149,"speed":2.7009153366088867} +{"lon":116.73474471056635,"lat":40.199156686226985,"alt":0,"heading":123.70303934713833,"systemTime":1643342600199,"receiverDataTime":1643342600199,"adasSatelliteTime":1643342600199,"satelliteTime":1643342600199,"speed":2.6843414306640625} +{"lon":116.7347460489841,"lat":40.19915603118256,"alt":0,"heading":122.61100138188002,"systemTime":1643342600255,"receiverDataTime":1643342600255,"adasSatelliteTime":1643342600255,"satelliteTime":1643342600255,"speed":2.6871590614318848} +{"lon":116.73474875740659,"lat":40.19915472042112,"alt":0,"heading":120.41490431842415,"systemTime":1643342600305,"receiverDataTime":1643342600305,"adasSatelliteTime":1643342600305,"satelliteTime":1643342600305,"speed":2.694345712661743} +{"lon":116.73474984759066,"lat":40.19915421103248,"alt":0,"heading":119.559983200392,"systemTime":1643342600357,"receiverDataTime":1643342600357,"adasSatelliteTime":1643342600357,"satelliteTime":1643342600357,"speed":2.6829092502593994} +{"lon":116.73475121801245,"lat":40.19915359250476,"alt":0,"heading":118.50797014366995,"systemTime":1643342600407,"receiverDataTime":1643342600407,"adasSatelliteTime":1643342600407,"satelliteTime":1643342600407,"speed":2.6728732585906982} +{"lon":116.73475287588454,"lat":40.19915287852193,"alt":0,"heading":117.23796476939778,"systemTime":1643342600457,"receiverDataTime":1643342600457,"adasSatelliteTime":1643342600457,"satelliteTime":1643342600457,"speed":2.662611722946167} +{"lon":116.73475398782735,"lat":40.19915241722868,"alt":0,"heading":116.37834448121666,"systemTime":1643342600508,"receiverDataTime":1643342600508,"adasSatelliteTime":1643342600508,"satelliteTime":1643342600508,"speed":2.658813953399658} +{"lon":116.734755106444,"lat":40.19915196951945,"alt":0,"heading":115.52222124989058,"systemTime":1643342600558,"receiverDataTime":1643342600558,"adasSatelliteTime":1643342600558,"satelliteTime":1643342600558,"speed":2.658446788787842} +{"lon":116.73475623037274,"lat":40.19915152949657,"alt":0,"heading":114.66773726396531,"systemTime":1643342600609,"receiverDataTime":1643342600609,"adasSatelliteTime":1643342600609,"satelliteTime":1643342600609,"speed":2.6613128185272217} +{"lon":116.73475736039669,"lat":40.19915110115423,"alt":0,"heading":113.82486459962905,"systemTime":1643342600660,"receiverDataTime":1643342600660,"adasSatelliteTime":1643342600660,"satelliteTime":1643342600660,"speed":2.6553733348846436} +{"lon":116.73475878115019,"lat":40.19915059264457,"alt":0,"heading":112.79399780857736,"systemTime":1643342600712,"receiverDataTime":1643342600712,"adasSatelliteTime":1643342600712,"satelliteTime":1643342600712,"speed":2.6438703536987305} +{"lon":116.73476020964823,"lat":40.19915010786853,"alt":0,"heading":111.78170913206812,"systemTime":1643342600770,"receiverDataTime":1643342600770,"adasSatelliteTime":1643342600770,"satelliteTime":1643342600770,"speed":2.6392009258270264} +{"lon":116.73476279752336,"lat":40.199149284627914,"alt":0,"heading":109.9532674912557,"systemTime":1643342600821,"receiverDataTime":1643342600821,"adasSatelliteTime":1643342600821,"satelliteTime":1643342600821,"speed":2.625443458557129} +{"lon":116.73476424255551,"lat":40.19914885689732,"alt":0,"heading":108.91565247330405,"systemTime":1643342600872,"receiverDataTime":1643342600872,"adasSatelliteTime":1643342600872,"satelliteTime":1643342600872,"speed":2.619288921356201} +{"lon":116.73476424255551,"lat":40.19914885689732,"alt":0,"heading":108.91565247330405,"systemTime":1643342600928,"receiverDataTime":1643342600928,"adasSatelliteTime":1643342600928,"satelliteTime":1643342600928,"speed":2.619288921356201} +{"lon":116.73476744144465,"lat":40.19914802989503,"alt":0,"heading":106.7521217518108,"systemTime":1643342600978,"receiverDataTime":1643342600978,"adasSatelliteTime":1643342600978,"satelliteTime":1643342600978,"speed":2.583557605743408} +{"lon":116.73476861135416,"lat":40.19914776907425,"alt":0,"heading":106.01407883085591,"systemTime":1643342601028,"receiverDataTime":1643342601028,"adasSatelliteTime":1643342601028,"satelliteTime":1643342601028,"speed":2.5814526081085205} +{"lon":116.73477007328837,"lat":40.19914746236778,"alt":0,"heading":105.09948918023453,"systemTime":1643342601081,"receiverDataTime":1643342601081,"adasSatelliteTime":1643342601081,"satelliteTime":1643342601081,"speed":2.5598978996276855} +{"lon":116.73477123456328,"lat":40.199147231705176,"alt":0,"heading":104.36677380683223,"systemTime":1643342601134,"receiverDataTime":1643342601134,"adasSatelliteTime":1643342601134,"satelliteTime":1643342601134,"speed":2.534062147140503} +{"lon":116.73477238750232,"lat":40.19914701443335,"alt":0,"heading":103.64454960399509,"systemTime":1643342601184,"receiverDataTime":1643342601184,"adasSatelliteTime":1643342601184,"satelliteTime":1643342601184,"speed":2.5096487998962402} +{"lon":116.73477522769076,"lat":40.19914649950914,"alt":0,"heading":101.89214162902326,"systemTime":1643342601236,"receiverDataTime":1643342601236,"adasSatelliteTime":1643342601236,"satelliteTime":1643342601236,"speed":2.464963436126709} +{"lon":116.73477522769076,"lat":40.19914649950914,"alt":0,"heading":101.89214162902326,"systemTime":1643342601285,"receiverDataTime":1643342601285,"adasSatelliteTime":1643342601285,"satelliteTime":1643342601285,"speed":2.464963436126709} +{"lon":116.73477744773692,"lat":40.199146134102705,"alt":0,"heading":100.58899617689818,"systemTime":1643342601336,"receiverDataTime":1643342601336,"adasSatelliteTime":1643342601336,"satelliteTime":1643342601336,"speed":2.4007492065429688} +{"lon":116.73477880693166,"lat":40.19914593299876,"alt":0,"heading":99.83002555632636,"systemTime":1643342601386,"receiverDataTime":1643342601386,"adasSatelliteTime":1643342601386,"satelliteTime":1643342601386,"speed":2.355477809906006} +{"lon":116.73478040273233,"lat":40.19914570428521,"alt":0,"heading":98.94371288886883,"systemTime":1643342601438,"receiverDataTime":1643342601438,"adasSatelliteTime":1643342601438,"satelliteTime":1643342601438,"speed":2.2989683151245117} +{"lon":116.73478144444472,"lat":40.19914556522604,"alt":0,"heading":98.37762681045817,"systemTime":1643342601487,"receiverDataTime":1643342601487,"adasSatelliteTime":1643342601487,"satelliteTime":1643342601487,"speed":2.256371021270752} +{"lon":116.73478272108233,"lat":40.199145412464226,"alt":0,"heading":97.71403295145642,"systemTime":1643342601538,"receiverDataTime":1643342601538,"adasSatelliteTime":1643342601538,"satelliteTime":1643342601538,"speed":2.196260690689087} +{"lon":116.73478396938424,"lat":40.19914527890302,"alt":0,"heading":97.10355064344067,"systemTime":1643342601588,"receiverDataTime":1643342601588,"adasSatelliteTime":1643342601588,"satelliteTime":1643342601588,"speed":2.14700984954834} +{"lon":116.73478543987346,"lat":40.19914513916267,"alt":0,"heading":96.4287552742001,"systemTime":1643342601639,"receiverDataTime":1643342601639,"adasSatelliteTime":1643342601639,"satelliteTime":1643342601639,"speed":2.1011476516723633} +{"lon":116.73478640096302,"lat":40.199145054377766,"alt":0,"heading":96.00908113083783,"systemTime":1643342601692,"receiverDataTime":1643342601692,"adasSatelliteTime":1643342601692,"satelliteTime":1643342601692,"speed":2.0593929290771484} +{"lon":116.73478734225758,"lat":40.19914497187314,"alt":0,"heading":95.60560819618684,"systemTime":1643342601742,"receiverDataTime":1643342601742,"adasSatelliteTime":1643342601742,"satelliteTime":1643342601742,"speed":2.014805316925049} +{"lon":116.73478849033728,"lat":40.19914487306404,"alt":0,"heading":95.1363195586936,"systemTime":1643342601799,"receiverDataTime":1643342601799,"adasSatelliteTime":1643342601799,"satelliteTime":1643342601799,"speed":1.9574501514434814} +{"lon":116.73478849033728,"lat":40.19914487306404,"alt":0,"heading":95.1363195586936,"systemTime":1643342601849,"receiverDataTime":1643342601849,"adasSatelliteTime":1643342601849,"satelliteTime":1643342601849,"speed":1.9574501514434814} +{"lon":116.73479025792794,"lat":40.19914473352023,"alt":0,"heading":94.48417309674079,"systemTime":1643342601899,"receiverDataTime":1643342601899,"adasSatelliteTime":1643342601899,"satelliteTime":1643342601899,"speed":1.8632113933563232} +{"lon":116.73479215548639,"lat":40.19914461587062,"alt":0,"heading":93.88404535550679,"systemTime":1643342601951,"receiverDataTime":1643342601951,"adasSatelliteTime":1643342601951,"satelliteTime":1643342601951,"speed":1.7722573280334473} +{"lon":116.73479317026637,"lat":40.1991445781572,"alt":0,"heading":93.59796971230998,"systemTime":1643342602002,"receiverDataTime":1643342602002,"adasSatelliteTime":1643342602002,"satelliteTime":1643342602002,"speed":1.718858242034912} +{"lon":116.73479415509867,"lat":40.19914455454902,"alt":0,"heading":93.34003444849361,"systemTime":1643342602054,"receiverDataTime":1643342602054,"adasSatelliteTime":1643342602054,"satelliteTime":1643342602054,"speed":1.6664564609527588} +{"lon":116.73479510956906,"lat":40.19914453493108,"alt":0,"heading":93.10045873316623,"systemTime":1643342602105,"receiverDataTime":1643342602105,"adasSatelliteTime":1643342602105,"satelliteTime":1643342602105,"speed":1.6141787767410278} +{"lon":116.73479585194254,"lat":40.19914451803839,"alt":0,"heading":92.91885766351395,"systemTime":1643342602155,"receiverDataTime":1643342602155,"adasSatelliteTime":1643342602155,"satelliteTime":1643342602155,"speed":1.5759966373443604} +{"lon":116.73479657629537,"lat":40.199144501579276,"alt":0,"heading":92.76053387855305,"systemTime":1643342602208,"receiverDataTime":1643342602208,"adasSatelliteTime":1643342602208,"satelliteTime":1643342602208,"speed":1.5366575717926025} +{"lon":116.7347981654034,"lat":40.19914443925617,"alt":0,"heading":92.48598759467521,"systemTime":1643342602258,"receiverDataTime":1643342602258,"adasSatelliteTime":1643342602258,"satelliteTime":1643342602258,"speed":1.4685463905334473} +{"lon":116.73479902769544,"lat":40.19914438328813,"alt":0,"heading":92.35717022692877,"systemTime":1643342602308,"receiverDataTime":1643342602308,"adasSatelliteTime":1643342602308,"satelliteTime":1643342602308,"speed":1.4337055683135986} +{"lon":116.73479986709728,"lat":40.19914431887518,"alt":0,"heading":92.23526501062238,"systemTime":1643342602361,"receiverDataTime":1643342602361,"adasSatelliteTime":1643342602361,"satelliteTime":1643342602361,"speed":1.391833782196045} +{"lon":116.73479986709728,"lat":40.19914431887518,"alt":0,"heading":92.23526501062238,"systemTime":1643342602412,"receiverDataTime":1643342602412,"adasSatelliteTime":1643342602412,"satelliteTime":1643342602412,"speed":1.3826435804367065} +{"lon":116.73480178200468,"lat":40.19914416862375,"alt":0,"heading":91.9900885401756,"systemTime":1643342602461,"receiverDataTime":1643342602461,"adasSatelliteTime":1643342602461,"satelliteTime":1643342602461,"speed":1.2846163511276245} +{"lon":116.73480178200468,"lat":40.19914416862375,"alt":0,"heading":91.9900885401756,"systemTime":1643342602514,"receiverDataTime":1643342602514,"adasSatelliteTime":1643342602514,"satelliteTime":1643342602514,"speed":1.2846163511276245} +{"lon":116.73480297792018,"lat":40.19914408858569,"alt":0,"heading":91.87427585260887,"systemTime":1643342602563,"receiverDataTime":1643342602563,"adasSatelliteTime":1643342602563,"satelliteTime":1643342602563,"speed":1.219725489616394} +{"lon":116.73480369356012,"lat":40.19914404307363,"alt":0,"heading":91.80886996111683,"systemTime":1643342602613,"receiverDataTime":1643342602613,"adasSatelliteTime":1643342602613,"satelliteTime":1643342602613,"speed":1.1818772554397583} +{"lon":116.7348042488643,"lat":40.199144007409416,"alt":0,"heading":91.76349018427126,"systemTime":1643342602664,"receiverDataTime":1643342602664,"adasSatelliteTime":1643342602664,"satelliteTime":1643342602664,"speed":1.1505528688430786} +{"lon":116.73480505322264,"lat":40.19914395578114,"alt":0,"heading":91.71270089760306,"systemTime":1643342602717,"receiverDataTime":1643342602717,"adasSatelliteTime":1643342602717,"satelliteTime":1643342602717,"speed":1.1053402423858643} +{"lon":116.73480557179504,"lat":40.1991439233344,"alt":0,"heading":91.6855167447064,"systemTime":1643342602768,"receiverDataTime":1643342602768,"adasSatelliteTime":1643342602768,"satelliteTime":1643342602768,"speed":1.0770442485809326} +{"lon":116.73480620070886,"lat":40.19914388486182,"alt":0,"heading":91.65887900694335,"systemTime":1643342602820,"receiverDataTime":1643342602820,"adasSatelliteTime":1643342602820,"satelliteTime":1643342602820,"speed":1.0416619777679443} +{"lon":116.73480680746893,"lat":40.199143847186555,"alt":0,"heading":91.63065666529286,"systemTime":1643342602884,"receiverDataTime":1643342602884,"adasSatelliteTime":1643342602884,"satelliteTime":1643342602884,"speed":1.002799153327942} +{"lon":116.73480783188545,"lat":40.19914378461098,"alt":0,"heading":91.5807416428384,"systemTime":1643342602924,"receiverDataTime":1643342602924,"adasSatelliteTime":1643342602924,"satelliteTime":1643342602924,"speed":0.9168331623077393} +{"lon":116.73480835916546,"lat":40.199143758323466,"alt":0,"heading":91.57563266133923,"systemTime":1643342602974,"receiverDataTime":1643342602974,"adasSatelliteTime":1643342602974,"satelliteTime":1643342602974,"speed":0.8635351061820984} +{"lon":116.73480835916546,"lat":40.199143758323466,"alt":0,"heading":91.57563266133923,"systemTime":1643342603024,"receiverDataTime":1643342603024,"adasSatelliteTime":1643342603024,"satelliteTime":1643342603024,"speed":0.8528992533683777} +{"lon":116.73480866029139,"lat":40.19914374504063,"alt":0,"heading":91.57525017074572,"systemTime":1643342603076,"receiverDataTime":1643342603076,"adasSatelliteTime":1643342603076,"satelliteTime":1643342603076,"speed":0.8311600685119629} +{"lon":116.73480940543223,"lat":40.199143713594225,"alt":0,"heading":91.56770964190201,"systemTime":1643342603125,"receiverDataTime":1643342603125,"adasSatelliteTime":1643342603125,"satelliteTime":1643342603125,"speed":0.7421823143959045} +{"lon":116.73480982787434,"lat":40.19914369635211,"alt":0,"heading":91.55686330150004,"systemTime":1643342603177,"receiverDataTime":1643342603177,"adasSatelliteTime":1643342603177,"satelliteTime":1643342603177,"speed":0.6846883893013} +{"lon":116.7348101411118,"lat":40.1991436838359,"alt":0,"heading":91.54609892336809,"systemTime":1643342603226,"receiverDataTime":1643342603226,"adasSatelliteTime":1643342603226,"satelliteTime":1643342603226,"speed":0.6384119391441345} +{"lon":116.73481080753805,"lat":40.19914366255582,"alt":0,"heading":91.52782133714915,"systemTime":1643342603277,"receiverDataTime":1643342603277,"adasSatelliteTime":1643342603277,"satelliteTime":1643342603277,"speed":0.5573496222496033} +{"lon":116.73481080753805,"lat":40.19914366255582,"alt":0,"heading":91.52782133714915,"systemTime":1643342603328,"receiverDataTime":1643342603328,"adasSatelliteTime":1643342603328,"satelliteTime":1643342603328,"speed":0.5388079881668091} +{"lon":116.73481127726379,"lat":40.199143650106194,"alt":0,"heading":91.53082662038395,"systemTime":1643342603377,"receiverDataTime":1643342603377,"adasSatelliteTime":1643342603377,"satelliteTime":1643342603377,"speed":0.488678902387619} +{"lon":116.73481163863711,"lat":40.19914363646899,"alt":0,"heading":91.52607280872162,"systemTime":1643342603428,"receiverDataTime":1643342603428,"adasSatelliteTime":1643342603428,"satelliteTime":1643342603428,"speed":0.425760418176651} +{"lon":116.73481185849106,"lat":40.199143626534585,"alt":0,"heading":91.51877816668805,"systemTime":1643342603478,"receiverDataTime":1643342603478,"adasSatelliteTime":1643342603478,"satelliteTime":1643342603478,"speed":0.38394197821617126} +{"lon":116.73481210575605,"lat":40.19914361510469,"alt":0,"heading":91.51055461892736,"systemTime":1643342603529,"receiverDataTime":1643342603529,"adasSatelliteTime":1643342603529,"satelliteTime":1643342603529,"speed":0.3295033872127533} +{"lon":116.73481235487462,"lat":40.199143605085304,"alt":0,"heading":91.51142888314111,"systemTime":1643342603580,"receiverDataTime":1643342603580,"adasSatelliteTime":1643342603580,"satelliteTime":1643342603580,"speed":0.2626360356807709} +{"lon":116.73481235487462,"lat":40.199143605085304,"alt":0,"heading":91.51142888314111,"systemTime":1643342603631,"receiverDataTime":1643342603631,"adasSatelliteTime":1643342603631,"satelliteTime":1643342603631,"speed":0.2190326750278473} +{"lon":116.73481263408107,"lat":40.19914359639987,"alt":0,"heading":91.51899673274148,"systemTime":1643342603682,"receiverDataTime":1643342603682,"adasSatelliteTime":1643342603682,"satelliteTime":1643342603682,"speed":0.16486623883247375} +{"lon":116.73481263408107,"lat":40.19914359639987,"alt":0,"heading":91.51899673274148,"systemTime":1643342603732,"receiverDataTime":1643342603732,"adasSatelliteTime":1643342603732,"satelliteTime":1643342603732,"speed":0.1102428063750267} +{"lon":116.73481263408107,"lat":40.19914359639987,"alt":0,"heading":91.51899673274148,"systemTime":1643342603784,"receiverDataTime":1643342603784,"adasSatelliteTime":1643342603784,"satelliteTime":1643342603784,"speed":0.04492854326963425} From 752bbbc59307286c09a61e45109167412763271e Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 13 Oct 2022 15:42:41 +0800 Subject: [PATCH 015/203] remove if condition of takeover --- .../com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index 280763b9b8..effa6dcb9f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -1404,8 +1404,7 @@ class MoGoHmiFragment : MvpFragment(), EXIT_AUTOPILOT_FOR_LOCATION, EXIT_AUTOPILOT_FOR_CHASSIS, EXIT_AUTOPILOT_FOR_DISTANCE -> { - if (FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData - && getAutoPilotStatusInfo().state != STATUS_AUTOPILOT_RUNNING) { + if (getAutoPilotStatusInfo().state != STATUS_AUTOPILOT_RUNNING) { showWarningV2X( EventTypeEnum.TAKE_OVER_EVENT.poiType, EventTypeEnum.TAKE_OVER_EVENT.content, From f5a1acbce8af0efb42d0118e416bac8e2cf71043 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Thu, 13 Oct 2022 15:55:46 +0800 Subject: [PATCH 016/203] =?UTF-8?q?[2.11.0=20fix]=201=E3=80=81bus=E5=8F=B8?= =?UTF-8?q?=E6=9C=BA=E7=AB=AF=20=E4=B8=AD=E9=97=B4=E7=AB=99=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E8=87=AA=E5=8A=A8=E9=A9=BE=E9=A9=B6=E5=8A=A8=E7=94=BB?= =?UTF-8?q?bug=202=E3=80=81=E5=90=AF=E5=8A=A8=E8=87=AA=E9=A9=BE=E6=A1=A3?= =?UTF-8?q?=E4=BD=8D=E5=BC=82=E5=B8=B8=E5=8C=BA=E5=88=86taxi=E5=92=8Cbus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/och/bus/presenter/BusPresenter.java | 8 +++----- .../common/module/manager/OCHAdasAbilityManager.java | 11 ++++++++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index 03e14b23d9..a2a710c9dd 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -184,9 +184,7 @@ public class BusPresenter extends Presenter switch (state) { case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE: if (currentAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { - if (currentAutopilotStatus == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) {//2-->1语音提示 -// AIAssist.getInstance( getContext() ).speakTTSVoice( "已进入人工驾驶模式" ); - } + currentAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE; // 设置UI【自动驾驶】按钮是否展示 runOnUIThread(() -> mView.onAutopilotEnableChange(true)); @@ -212,11 +210,11 @@ public class BusPresenter extends Presenter case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING: if (currentAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { currentAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING; - // 改变UI自动驾驶状态 - runOnUIThread(() -> mView.onAutopilotStatusChanged(currentAutopilotStatus)); BusOrderModel.getInstance().triggerStartServiceEvent( BusOrderModel.getInstance().isRestartAutopilot(), true); } + // 改变UI自动驾驶状态 + runOnUIThread(() -> mView.onAutopilotStatusChanged(currentAutopilotStatus)); break; case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE: if (currentAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java index 93ad0039a6..0804a47687 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/OCHAdasAbilityManager.java @@ -4,6 +4,7 @@ import android.content.Context; import androidx.annotation.Nullable; +import com.mogo.commons.debug.DebugConfig; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotActionsListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotActionsListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.Logger; @@ -57,10 +58,18 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener { public void onAutopilotAbility(@Nullable AutopilotAbility ability) { isAutopilotAbility = true; autopilotAbilityReason = null; - if (ability.gear == null || ability.gear == Chassis.GearPosition.GEAR_P || ability.gear == Chassis.GearPosition.GEAR_R) { + if (ability.gear == null || ability.gear == Chassis.GearPosition.GEAR_P || + ability.gear == Chassis.GearPosition.GEAR_R) { isAutopilotAbility = false; autopilotAbilityReason = "挡位不正常"; } + + if (DebugConfig.getProductFlavor() == "fPadLenovoOchBus" && + ability.gear == Chassis.GearPosition.GEAR_N){ //bus档位不正常 + isAutopilotAbility = false; + autopilotAbilityReason = "挡位不正常"; + } + if (isAutopilotAbility) if (ability.brake > 0) { isAutopilotAbility = false; From a29e83fd5a2be552823604f637b98e74f5748eea Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 13 Oct 2022 16:42:44 +0800 Subject: [PATCH 017/203] add log --- .../eagle/core/function/hmi/ui/MoGoHmiFragment.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index effa6dcb9f..7e71484bdf 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -1304,7 +1304,13 @@ class MoGoHmiFragment : MvpFragment(), /** * 升级app弹框 */ - override fun showUpgradeDialog(name: String, url: String, title: String, content: String, installType: String) { + override fun showUpgradeDialog( + name: String, + url: String, + title: String, + content: String, + installType: String + ) { if (upgradeAppDialog == null) { upgradeAppDialog = UpgradeAppDialog(requireContext()) } @@ -1379,6 +1385,7 @@ class MoGoHmiFragment : MvpFragment(), * 工控机监控节点上报 */ override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) { + Log.d("EmArrow-1013", "onAutopilotGuardian : $guardianInfo , takeOver : $takeOver") ThreadUtils.runOnUiThread { guardianInfo?.let { if (reportList.size > 49) { @@ -1404,6 +1411,10 @@ class MoGoHmiFragment : MvpFragment(), EXIT_AUTOPILOT_FOR_LOCATION, EXIT_AUTOPILOT_FOR_CHASSIS, EXIT_AUTOPILOT_FOR_DISTANCE -> { + Log.d( + "EmArrow-1013", + "it code : ${it.code} , state : ${getAutoPilotStatusInfo().state}" + ) if (getAutoPilotStatusInfo().state != STATUS_AUTOPILOT_RUNNING) { showWarningV2X( EventTypeEnum.TAKE_OVER_EVENT.poiType, @@ -1412,11 +1423,13 @@ class MoGoHmiFragment : MvpFragment(), EventTypeEnum.TAKE_OVER_EVENT.poiType, object : IMoGoWarningStatusListener { override fun onShow() { + Log.d("EmArrow-1013", "onShow") takeOver = true clTakeOverView.visibility = View.VISIBLE } override fun onDismiss() { + Log.d("EmArrow-1013", "onDismiss") takeOver = false clTakeOverView.visibility = View.GONE } From 1cf08081431026161634be8da2bc345f2678afc6 Mon Sep 17 00:00:00 2001 From: renwj Date: Thu, 13 Oct 2022 17:09:16 +0800 Subject: [PATCH 018/203] =?UTF-8?q?[V2X][Road]=E7=AE=80=E5=8C=96=E8=BD=A6?= =?UTF-8?q?=E9=81=93=E6=A0=87=E8=AE=B0=E8=A7=A6=E5=8F=91=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E6=94=B9=E4=B8=BA=E4=B8=8E=E5=BC=B9=E7=AA=97=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=E9=80=BB=E8=BE=91=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/v2x/events/V2XEventManager.kt | 29 ++++----- .../scenario/scene/airoad/AiRoadMarker.kt | 11 ++-- .../scene/road/V2XAiRoadEventMarker.kt | 4 +- .../scene/road/V2XRoadEventMarker.java | 62 ++++++++++++++++++- 4 files changed, 80 insertions(+), 26 deletions(-) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt index e5ba4009fd..616638f90e 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/V2XEventManager.kt @@ -464,9 +464,10 @@ object V2XEventManager : IMoGoMapLocationListener, IMoGoTokenCallback, IV2XCallb this.roadwork?.polygonList?.takeIf { it.isNotEmpty() }?.also { old -> l1.extras = HashMap>>().also { extra -> extra["polygon"] = old.map { d -> - val p = CoordinateUtils.transformWgsToGcj(d.lat, d.lon) - Pair(p[0], p[1]) + Pair(d.lon, d.lat) } + + extra["gps_location"] = listOf(Pair(this.roadwork?.center?.point?.lon ?: 0.0, this.roadwork?.center?.point?.lat ?: 0.0)) } } l1.exploreWay = ArrayList().also { l2 -> @@ -479,27 +480,19 @@ object V2XEventManager : IMoGoMapLocationListener, IMoGoTokenCallback, IV2XCallb l4.lat = p[1] l4.angle = this.roadwork?.center?.road?.bearing?.toDouble() ?: 0.0 } - - AiRoadMarker.enqueue(Marker( - this.roadwork?.center?.point?.lat ?: 0.0, - this.roadwork?.center?.point?.lon ?: 0.0, - this.roadwork?.center?.road?.bearing?.toDouble() ?: 0.0, - this.roadwork?.polygonList?.takeIf { it.isNotEmpty() }?.map { d -> android.util.Pair(d.lon, d.lat) }, - null, - buildRoadEntity(l3, l1.extras))) }) } } - private fun buildRoadEntity(e: V2XMarkerExploreWay, extra: Map? = null): V2XRoadEventEntity { // 记录道路事件 - val v2XRoadEventEntity = V2XRoadEventEntity() - v2XRoadEventEntity.location = e.location.toMarkerLocation() // 探路目前只有上报拥堵 - v2XRoadEventEntity.poiType = EventTypeEnum.AI_ROAD_WORK.poiType - v2XRoadEventEntity.noveltyInfo = e.toMarkExploreWay(extra) - v2XRoadEventEntity.expireTime = 20000 - return v2XRoadEventEntity - } +// private fun buildRoadEntity(e: V2XMarkerExploreWay, extra: Map? = null): V2XRoadEventEntity { // 记录道路事件 +// val v2XRoadEventEntity = V2XRoadEventEntity() +// v2XRoadEventEntity.location = e.location.toMarkerLocation() // 探路目前只有上报拥堵 +// v2XRoadEventEntity.poiType = EventTypeEnum.AI_ROAD_WORK.poiType +// v2XRoadEventEntity.noveltyInfo = e.toMarkExploreWay(extra) +// v2XRoadEventEntity.expireTime = 20000 +// return v2XRoadEventEntity +// } private fun handleWarningTargetEvent(data: V2XWarningTarget) { val v2xMessageEntity = V2XMessageEntity() diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt index 236564ad45..7c5b9e3a66 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/airoad/AiRoadMarker.kt @@ -3,8 +3,8 @@ package com.mogo.eagle.core.function.v2x.events.scenario.scene.airoad import android.animation.* import android.content.* import android.graphics.* -import android.util.* import android.view.animation.* +import androidx.core.util.Pair import androidx.lifecycle.* import androidx.lifecycle.Lifecycle.Event import androidx.lifecycle.Lifecycle.Event.ON_CREATE @@ -140,7 +140,6 @@ object AiRoadMarker { private val onLocationListener = object : IMoGoMapLocationListener { - override fun onLocationChanged(location: MogoLocation?, from: Int, isGps: Boolean) { if (location == null || !isGps) { return @@ -188,7 +187,7 @@ object AiRoadMarker { } } - private fun marker(marker: Marker) { + fun marker(marker: Marker) { val location = carLocation.get() ?: return //施工中心点前方的自车行驶方向上300米距离 val l1 = MogoMap.getInstance().mogoMap.getCenterLineRangeInfo(marker.poi_lon, marker.poi_lat, location.third.toFloat(), 300f) @@ -275,7 +274,7 @@ object AiRoadMarker { } } - private fun unMarker(marker: Marker) { + fun unMarker(marker: Marker) { markers -= marker removeLine() V2XAiRoadEventMarker.removeMarkers(null) @@ -294,8 +293,8 @@ object AiRoadMarker { val poi_lat: Double, val poi_lon: Double, val poi_angle: Double, - val polygon: List>?, - var farthestPoint: Pair? = null, + val polygon: List>?, + var farthestPoint: androidx.core.util.Pair? = null, var entity: V2XRoadEventEntity? = null ) { diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XAiRoadEventMarker.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XAiRoadEventMarker.kt index 3442dafbfa..fc497bc807 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XAiRoadEventMarker.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XAiRoadEventMarker.kt @@ -1,6 +1,7 @@ package com.mogo.eagle.core.function.v2x.events.scenario.scene.road import android.util.* +import com.mogo.cloud.commons.utils.* import com.mogo.eagle.core.data.map.* import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi.context import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi.v2xMarker @@ -47,7 +48,8 @@ object V2XAiRoadEventMarker { if (first !is Double || second !is Double) { continue } - polygons.add(androidx.core.util.Pair.create(first, second)) + val xx = CoordinateUtils.transformWgsToGcj(second, first) + polygons.add(androidx.core.util.Pair.create(xx[0], xx[1])) } if (polygons.size > 0) { val markers = ArrayList(polygons.size) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java index 442f547809..9ed04ecba2 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java @@ -1,12 +1,20 @@ package com.mogo.eagle.core.function.v2x.events.scenario.scene.road; +import androidx.core.util.Pair; + +import com.mogo.cloud.commons.utils.CoordinateUtils; import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XMarkerManager; import com.mogo.eagle.core.function.v2x.events.manager.IMoGoV2XPolylineManager; +import com.mogo.eagle.core.function.v2x.events.scenario.scene.airoad.AiRoadMarker; import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XMarker; +import com.mogo.module.common.entity.MarkerExploreWay; +import com.mogo.module.common.entity.MarkerLocation; import com.mogo.module.common.entity.V2XRoadEventEntity; import com.mogo.module.common.enums.EventTypeEnum; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; /** @@ -15,7 +23,7 @@ import java.util.Objects; public class V2XRoadEventMarker implements IV2XMarker { -// private Pair> drawInfo; + private AiRoadMarker.Marker mMarker; @Override public void drawPOI(V2XRoadEventEntity entity) { @@ -26,7 +34,59 @@ public class V2XRoadEventMarker implements IV2XMarker { marker.clearAlarmPOI(); if (entity != null) { if (!Objects.equals(entity.getPoiType(), EventTypeEnum.AI_ROAD_WORK.getPoiType())) { + AiRoadMarker.Marker prev = mMarker; + if (prev != null) { + AiRoadMarker.INSTANCE.unMarker(prev); + mMarker = null; + } marker.drawableAlarmPOI(BridgeApi.INSTANCE.context(), entity, null); + } else { + AiRoadMarker.Marker prev = mMarker; + if (prev != null) { + AiRoadMarker.INSTANCE.unMarker(prev); + mMarker = null; + } + MarkerExploreWay noveltyInfo = entity.getNoveltyInfo(); + if (noveltyInfo != null && noveltyInfo.extras != null) { + List> polygons = new ArrayList<>(); + Pair gpsLocation = null; + if (noveltyInfo.extras.containsKey("polygon")) { + Object extra = noveltyInfo.extras.get("polygon"); + if (extra instanceof List) { + List l = (List) extra; + if (l.size() > 0) { + for (int i = 0; i < l.size(); i++) { + Object o = l.get(i); + if (!(o instanceof Pair)) { + continue; + } + Pair p = (Pair) o; + Object first = p.first; + Object second = p.second; + if (first == null || second == null) { + continue; + } + if (!(first instanceof Double) || !(second instanceof Double)) { + continue; + } + polygons.add(Pair.create((Double) first, (Double) second)); + } + } + } + } + + if (noveltyInfo.extras.containsKey("gps_location")) { + gpsLocation = (Pair) ((List)(noveltyInfo.extras.get("gps_location"))).get(0); + } + + if (!polygons.isEmpty() && gpsLocation != null) { + MarkerLocation location = noveltyInfo.getLocation(); + AiRoadMarker.Marker m = new AiRoadMarker.Marker(gpsLocation.second, gpsLocation.first, location.getAngle(), polygons, null, entity); + mMarker = m; + AiRoadMarker.INSTANCE.marker(m); + } + + } } } } From 13853fee0ddc3b8afdf487bb468d6c07a55cfdf6 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Thu, 13 Oct 2022 17:35:08 +0800 Subject: [PATCH 019/203] =?UTF-8?q?2.11.0=20=20=E4=BC=98=E5=8C=96=E5=B0=8F?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E6=8A=96=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eagle/core/function/smp/SmallMapDirectionView.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java index 82547703d6..4f797a1b80 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java @@ -35,6 +35,7 @@ import com.amap.api.maps.model.PolylineOptions; import com.mogo.cloud.commons.utils.CoordinateUtils; import com.mogo.eagle.core.data.map.MogoLatLng; import com.mogo.eagle.core.data.map.MogoLocation; +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager; @@ -54,6 +55,8 @@ import java.util.List; import java.util.Timer; import java.util.TimerTask; +import mogo.telematics.pad.MessagePad; + /** * 小地图的方向View * @@ -62,7 +65,7 @@ import java.util.TimerTask; */ public class SmallMapDirectionView extends RelativeLayout - implements IMoGoMapLocationListener, ISmallMapDirectionView { + implements IMoGoMapLocationListener, ISmallMapDirectionView, IMoGoAutopilotStatusListener { //小地图名称 public static final String TAG = "SmallMapDirectionView"; @@ -367,4 +370,9 @@ public class SmallMapDirectionView mCoordinatesLatLng.addAll(latLngs); } + @Override + public void onAutopilotArriveAtStation(@org.jetbrains.annotations.Nullable MessagePad.ArrivalNotification arrivalNotification) { + clearPolyline(); + mCoordinatesLatLng.clear(); + } } From 5410a659f2d891441dd6b992ec6720b3ee9c272f Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Thu, 13 Oct 2022 19:05:33 +0800 Subject: [PATCH 020/203] =?UTF-8?q?[2.11.0=20fix]=201=E3=80=81bus=E5=8F=B8?= =?UTF-8?q?=E6=9C=BA=E7=AB=AF=E4=BF=AE=E5=A4=8D=E7=BE=8E=E5=8C=96=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E4=B8=8B=E7=BB=93=E6=9D=9F=E8=B7=AF=E7=BA=BF=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E9=A9=BE=E9=A9=B6=E6=8C=89=E9=92=AE=E7=8A=B6=E6=80=81?= =?UTF-8?q?bug=202=E3=80=81bus=E4=B9=98=E5=AE=A2=E5=B1=8F=E7=BB=93?= =?UTF-8?q?=E6=9D=9F=E8=B7=AF=E7=BA=BFbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../passenger/model/BusPassengerModel.java | 1 + .../mogo/och/bus/presenter/BusPresenter.java | 26 ++++--------------- 2 files changed, 6 insertions(+), 21 deletions(-) diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java index 6d6be9bf00..bc4002a800 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java @@ -157,6 +157,7 @@ public class BusPassengerModel { || data.getResult() == null || data.getResult().getSites() == null) { routesResult = null; + startOrStopCalculateRouteInfo(false); if (mRouteLineInfoCallback != null){ mRouteLineInfoCallback.showNoTaskView(); } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index a2a710c9dd..ace5357382 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -147,17 +147,6 @@ public class BusPresenter extends Presenter runOnUIThread(() -> mView.clearBusStationsMarkers()); } - private void functionDemoModeChange() { -// CallerLogger.INSTANCE.d(M_BUS + "BusOrderModel ="," functionDemoModeChange ="+mCurrentStation); - if (FunctionBuildConfig.isDemoMode - && ((mCurrentStation > 0 && mCurrentStation < mStationList.size() - 1) - || ((mCurrentStation == 0 || mCurrentStation == mStationList.size() - 1) - && BusOrderModel.getInstance().isGoingToNextStation()))) { - runOnUIThread(() -> mView.onAutopilotStatusChanged( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING)); - } - } - @Override public void hideSlidePanel() { if (mView != null) { @@ -193,11 +182,8 @@ public class BusPresenter extends Presenter // } if (FunctionBuildConfig.isDemoMode && ( - (mCurrentStation > 0 && mCurrentStation < mStationList.size() - 1) - || ( - (mCurrentStation == 0 || mCurrentStation == mStationList.size() - 1) - && BusOrderModel.getInstance().isGoingToNextStation() - ) + (mCurrentStation >= 0 && mCurrentStation <= mStationList.size() - 1) + && BusOrderModel.getInstance().isGoingToNextStation() ) ) { CallerLogger.INSTANCE.d(M_BUS + "BusOrderModel=", "有美化功能"); @@ -224,11 +210,9 @@ public class BusPresenter extends Presenter currentAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE; if (FunctionBuildConfig.isDemoMode && ( - (mCurrentStation > 0 && mCurrentStation < mStationList.size() - 1) - || ( - (mCurrentStation == 0 || mCurrentStation == mStationList.size() - 1) - && BusOrderModel.getInstance().isGoingToNextStation() - ) + (mCurrentStation >= 0 && mCurrentStation <= mStationList.size() - 1) + && BusOrderModel.getInstance().isGoingToNextStation() + ) ) { CallerLogger.INSTANCE.d(M_BUS + "BusOrderModel=", "有美化功能"); From 4aaca15a32f42f7eac0bd024678abd9b64e006b6 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Thu, 13 Oct 2022 19:36:54 +0800 Subject: [PATCH 021/203] =?UTF-8?q?2.11.0=20=20remove=20=E5=B0=8F=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/eagle/core/function/smp/SmallMapDirectionView.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java index 4f797a1b80..62f08577f4 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java @@ -372,7 +372,7 @@ public class SmallMapDirectionView @Override public void onAutopilotArriveAtStation(@org.jetbrains.annotations.Nullable MessagePad.ArrivalNotification arrivalNotification) { - clearPolyline(); - mCoordinatesLatLng.clear(); +// clearPolyline(); +// mCoordinatesLatLng.clear(); } } From ab51c6faf82ce44d80c637890ebc64e7d4ceb621 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Fri, 14 Oct 2022 10:02:00 +0800 Subject: [PATCH 022/203] =?UTF-8?q?2.11.0=20=20remove=20=E5=B0=8F=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eagle/core/function/smp/SmallMapDirectionView.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java index 62f08577f4..6d1da969a3 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/SmallMapDirectionView.java @@ -65,7 +65,7 @@ import mogo.telematics.pad.MessagePad; */ public class SmallMapDirectionView extends RelativeLayout - implements IMoGoMapLocationListener, ISmallMapDirectionView, IMoGoAutopilotStatusListener { + implements IMoGoMapLocationListener, ISmallMapDirectionView { //小地图名称 public static final String TAG = "SmallMapDirectionView"; @@ -370,9 +370,4 @@ public class SmallMapDirectionView mCoordinatesLatLng.addAll(latLngs); } - @Override - public void onAutopilotArriveAtStation(@org.jetbrains.annotations.Nullable MessagePad.ArrivalNotification arrivalNotification) { -// clearPolyline(); -// mCoordinatesLatLng.clear(); - } } From 3c42e3b4db3c2f4a0ddf27dfa0c5f5c0a1274415 Mon Sep 17 00:00:00 2001 From: renwj Date: Fri, 14 Oct 2022 10:25:54 +0800 Subject: [PATCH 023/203] =?UTF-8?q?[Route]=E7=A7=BB=E6=8E=89=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E9=9D=A2=E6=9D=BF=E4=B8=AD=E5=AF=B9=E5=BC=95=E5=AF=BC?= =?UTF-8?q?=E7=BA=BF=E7=9A=84=E5=BC=BA=E7=BB=98=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eagle/core/function/hmi/ui/setting/DebugSettingView.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 f7d33700c7..e842a2dd1e 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 @@ -40,6 +40,7 @@ import com.mogo.eagle.core.data.obu.ObuStatusInfo import com.mogo.eagle.core.data.report.ReportEntity import com.mogo.eagle.core.data.upgrade.UpgradeVersionEntity import com.mogo.eagle.core.function.api.autopilot.* +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener.Companion import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsFuncConfigListener import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener @@ -578,8 +579,6 @@ class DebugSettingView @JvmOverloads constructor( } FunctionBuildConfig.isDemoMode = isChecked tbIsDrawAutopilotTrajectoryData.isEnabled = !isChecked - Logger.d("Route", "DebugSettingView -> initView ==> isDemoMode:" + FunctionBuildConfig.isDemoMode + ",isIgnore: $isChecked" ) - FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = isChecked if (!FunctionBuildConfig.isDemoMode) { tbIsDrawAutopilotTrajectoryData.isChecked = false } From 6fca4370c930508cb3bedcbf257da5963c11bf5e Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Fri, 14 Oct 2022 12:05:25 +0800 Subject: [PATCH 024/203] =?UTF-8?q?[Fix]Release=E5=8C=85=E5=85=B3=E9=97=AD?= =?UTF-8?q?KOOM=E7=9B=91=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eagle/core/function/main/MainActivity.java | 18 +++++++++--------- .../function/main/MainMoGoApplication.java | 12 ++++-------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.java index dcde8ca87d..a3526435ed 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.java @@ -26,8 +26,8 @@ import com.kwai.koom.base.MonitorManager; import com.kwai.koom.nativeoom.leakmonitor.LeakMonitor; import com.kwai.koom.nativeoom.leakmonitor.LeakMonitorConfig; import com.kwai.koom.nativeoom.leakmonitor.LeakRecord; -import com.mogo.cloud.commons.BuildConfig; import com.mogo.commons.context.ContextHolderUtil; +import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.mvp.BaseFragment; import com.mogo.commons.mvp.MvpActivity; import com.mogo.commons.mvp.MvpFragment; @@ -217,7 +217,7 @@ public class MainActivity extends MvpActivity implement */ public void startUpInStage2() { StartupConfig config = null; - if (BuildConfig.DEBUG) { + if (DebugConfig.isDebug()) { config = new StartupConfig.Builder() .setLoggerLevel(LoggerLevel.DEBUG) .setOpenStatistics(true) @@ -283,8 +283,10 @@ public class MainActivity extends MvpActivity implement // 启动一些基本的服务:定位等 startBaseService(); - // 启动Native内存泄漏监测 - startLeakMonitor(); + if (DebugConfig.isDebug()) { + // 启动Native内存泄漏监测 + startLeakMonitor(); + } } /** @@ -305,12 +307,10 @@ public class MainActivity extends MvpActivity implement .setMonitorThreshold(16) .setNativeHeapAllocatedThreshold(0) .setSelectedSoList(new String[]{"libhdmap", "libmap", - "libAMapSDK_NAVI_v8_0_1", "librouting", "libZegoExpressEngine", - "libUtils", "libcommon", "libcntts", "libduiutils", - "libdatamgr", "libdatascript", "libguidance", "libndsprovider", - "libndssqlite", "libpbjni", "libsearch" + "libAMapSDK_NAVI_v8_0_1", "libZegoExpressEngine", + "libcntts" }) - .setEnableLocalSymbolic(BuildConfig.DEBUG) + .setEnableLocalSymbolic(DebugConfig.isDebug()) .setLeakListener(leaks -> { StringBuilder stringBuilder = new StringBuilder(); if (!leaks.isEmpty()) { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java index 842c5f0713..f99afd3f39 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java @@ -4,20 +4,16 @@ import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI import android.content.Context; import android.os.Process; -import android.util.Log; import com.bytedance.boost_multidex.BoostMultiDex; import com.elegant.utils.UiThreadHandler; -import com.kwai.koom.base.DefaultInitTask; import com.mogo.cloud.socket.SocketBuildConfig; import com.mogo.commons.AbsMogoApplication; -import com.mogo.eagle.core.data.app.AppConfigInfo; +import com.mogo.commons.debug.DebugConfig; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.constants.MoGoConfig; import com.mogo.eagle.core.data.constants.MogoServicePaths; import com.mogo.eagle.core.function.api.chat.biz.ChatConsts; -import com.mogo.eagle.core.function.autopilot.adapter.MoGoHandAdasMsgManager; -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager; import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; import com.mogo.eagle.core.function.notice.PushUIConstants; @@ -31,7 +27,6 @@ import com.mogo.map.MapApiPath; import com.mogo.module.common.MogoModule; import com.mogo.module.common.MogoModulePaths; import com.mogo.module.service.ServiceConst; -import com.zhidao.support.adas.high.AdasManager; import com.zhidao.support.obu.ami.AmiClientManager; import com.zhjt.mogo_core_function_devatools.monitor.db.CpuInfo; import com.zhjt.mogo_core_function_devatools.monitor.db.MemInfo; @@ -62,8 +57,9 @@ public abstract class MainMoGoApplication extends AbsMogoApplication { initLogConfig(); initTipToast(); initModules(); - - initKoom(); + if (DebugConfig.isDebug()) { + initKoom(); + } //查询是否有版本的更新 queryAppUpgrade(); checkMonitorDb(); From aa3594d75c152b9158a8b40505f1dbd6b748669e Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 14 Oct 2022 12:08:56 +0800 Subject: [PATCH 025/203] =?UTF-8?q?[fix]=20=E5=8A=A0=E4=B8=8Atrycatch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/module/biz/ui/TaxiLoginDialogFragment.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt index 3dfc3389e2..3ad8a1cfd2 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt @@ -258,15 +258,15 @@ class TaxiLoginDialogFragment : MvpDialogFragment Date: Fri, 14 Oct 2022 13:19:36 +0800 Subject: [PATCH 026/203] =?UTF-8?q?[2.11.0=20fix]=20=E7=A9=BA=E6=8C=87?= =?UTF-8?q?=E9=92=88=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utils/CoordinateCalculateRouteUtil.java | 55 ++++++++++--------- .../mogo/och/taxi/ui/TaxiNaviFragment.java | 6 +- 2 files changed, 35 insertions(+), 26 deletions(-) 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 01ec888715..d0532ffea9 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 @@ -144,26 +144,29 @@ public class CoordinateCalculateRouteUtil { if (mRoutePoints.size() > 0){ //基础点 LatLng baseLatLng = mRoutePoints.get(0); - float baseDiffDis = CoordinateUtils.calculateLineDistance(realLon,realLat - ,baseLatLng.longitude,baseLatLng.latitude);// lon,lat, prelon, prelat + if (baseLatLng != null){ + float baseDiffDis = CoordinateUtils.calculateLineDistance(realLon,realLat + ,baseLatLng.longitude,baseLatLng.latitude);// lon,lat, prelon, prelat - for (int i= 1; i < mRoutePoints.size(); i++){ - LatLng latLng = mRoutePoints.get(i); - float diff = CoordinateUtils.calculateLineDistance(realLon,realLat - ,latLng.longitude,latLng.latitude); - if (baseDiffDis > diff){ + for (int i= 1; i < mRoutePoints.size(); i++){ + LatLng latLng = mRoutePoints.get(i); + float diff = CoordinateUtils.calculateLineDistance(realLon,realLat + ,latLng.longitude,latLng.latitude); + if (baseDiffDis > diff){ // Logger.d(M_TAXI + "calculateRouteSumLength", "点:"+i+"-------先记录点----- "); - baseDiffDis = diff; - currentIndex = i; + baseDiffDis = diff; + currentIndex = i; + } } - } // Logger.d(M_TAXI + "calculateRouteSumLength", "点:"+currentIndex+"-------是最近的点------ "); - if (currentIndex == mRoutePoints.size()-1){ - latePoints.add(mRoutePoints.get(currentIndex)); - }else { - latePoints.addAll(mRoutePoints.subList(currentIndex,mRoutePoints.size()-1)); + if (currentIndex == mRoutePoints.size()-1){ + latePoints.add(mRoutePoints.get(currentIndex)); + }else { + latePoints.addAll(mRoutePoints.subList(currentIndex,mRoutePoints.size()-1)); + } + return latePoints; } - return latePoints; + } return latePoints; } @@ -180,20 +183,22 @@ public class CoordinateCalculateRouteUtil { if (mRoutePoints.size() > 0){ //基础点 LatLng baseLatLng = mRoutePoints.get(0); - float baseDiffDis = CoordinateUtils.calculateLineDistance(realLon,realLat - ,baseLatLng.longitude,baseLatLng.latitude);// lon,lat, prelon, prelat + if (baseLatLng != null){ + float baseDiffDis = CoordinateUtils.calculateLineDistance(realLon,realLat + ,baseLatLng.longitude,baseLatLng.latitude);// lon,lat, prelon, prelat - for (int i= 1; i < mRoutePoints.size(); i++){ - LatLng latLng = mRoutePoints.get(i); - float diff = CoordinateUtils.calculateLineDistance(realLon,realLat - ,latLng.longitude,latLng.latitude); - if (baseDiffDis > diff){ + for (int i= 1; i < mRoutePoints.size(); i++){ + LatLng latLng = mRoutePoints.get(i); + float diff = CoordinateUtils.calculateLineDistance(realLon,realLat + ,latLng.longitude,latLng.latitude); + if (baseDiffDis > diff){ // Logger.d(M_TAXI + "calculateRouteSumLength", "点:"+i+"-------先记录点----- "); - baseDiffDis = diff; - currentIndex = i; + baseDiffDis = diff; + currentIndex = i; + } } + return currentIndex; } - return currentIndex; } return currentIndex; } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiNaviFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiNaviFragment.java index 35438d42a4..fd629e6f51 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiNaviFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiNaviFragment.java @@ -156,8 +156,12 @@ public class TaxiNaviFragment extends BaseTaxiUIFragment implements AMapNaviView @Override public void onDestroy() { super.onDestroy(); + NaviToDestinationModel.getInstance(getContext()).setVoiceIsMute(false); - mAMapNaviView.onDestroy(); + if (mAMapNaviView != null){ + mAMapNaviView.onDestroy(); + } + if (mNaviToStartInfoCallback != null){ mNaviToStartInfoCallback = null; } From 97e6d8636aa3f911c6298cb47d70259a1ce837fd Mon Sep 17 00:00:00 2001 From: renwj Date: Fri, 14 Oct 2022 16:29:30 +0800 Subject: [PATCH 027/203] =?UTF-8?q?[Route]=E6=B8=85=E6=8E=89=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E7=9A=84=E5=BC=95=E5=AF=BC=E7=BA=BF=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [Route]清掉缓存的引导线数据 --- .../service/routeoverlay/MogoRouteOverlayManager.java | 10 ++++++---- .../service/routeoverlay/RouteOverlayDrawer.java | 7 +++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java index 14caea1f5a..efc8f13177 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java @@ -86,10 +86,12 @@ public class MogoRouteOverlayManager implements return; } synchronized (queue) { - List items = queue.peekLast(); - if (items != null && !items.isEmpty()) { - Logger.d(TAG, "--- onLocationChanged -- [isDemo1: " + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData + ",isDemo2:" +FunctionBuildConfig.isDemoMode + ",isGps:" + isGps + ",mode:" + autopilotMode.get() + ",lon:" + location.getLongitude() + ",lat:" + location.getLatitude() + ",angle:" + location.getBearing() + "]"); - RouteOverlayDrawer.getInstance().drawTrajectoryList(items, location.getBearing()); + if (!queue.isEmpty()) { + List items = queue.pollLast(); + if (items != null && !items.isEmpty()) { + Logger.d(TAG, "--- onLocationChanged -- [isDemo1: " + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData + ",isDemo2:" +FunctionBuildConfig.isDemoMode + ",isGps:" + isGps + ",mode:" + autopilotMode.get() + ",lon:" + location.getLongitude() + ",lat:" + location.getLatitude() + ",angle:" + location.getBearing() + "]"); + RouteOverlayDrawer.getInstance().drawTrajectoryList(items, location.getBearing()); + } } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/RouteOverlayDrawer.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/RouteOverlayDrawer.java index 65d9e0dbaf..01076f6084 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/RouteOverlayDrawer.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/RouteOverlayDrawer.java @@ -63,14 +63,13 @@ public class RouteOverlayDrawer { } public void clearMogoRouteOverlay() { + if (mRenderTask != null) { + mRenderHandler.removeCallbacks(mRenderTask); + } if (mMoGoPolyline != null) { mMoGoPolyline.remove(); mMoGoPolyline = null; } - - if (mRenderTask != null) { - mRenderHandler.removeCallbacks(mRenderTask); - } } private class RenderTask implements Runnable { From ecda801c35457b9bffb4ed586c8deec7d08e0940 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Fri, 14 Oct 2022 16:53:06 +0800 Subject: [PATCH 028/203] =?UTF-8?q?[2.11.0]=20[fix]1=E3=80=81bus=E7=BE=8E?= =?UTF-8?q?=E5=8C=96=E6=A8=A1=E5=BC=8F=E7=BB=93=E6=9D=9F=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E8=87=AA=E9=A9=BE=E6=8C=89=E9=92=AE=E5=B1=95=E7=A4=BA=E8=B0=83?= =?UTF-8?q?=E6=95=B4=202=E3=80=81taxi=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8c?= =?UTF-8?q?atch=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/och/bus/presenter/BusPresenter.java | 19 ++++----- .../taxi/ui/TaxiPersonalDialogFragment.java | 40 ++++++++++--------- 2 files changed, 29 insertions(+), 30 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index ace5357382..b0b1f3023e 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -56,7 +56,6 @@ public class BusPresenter extends Presenter private int currentAutopilotStatus = -1; private List mStationList = new ArrayList<>(); private int mCurrentStation = 0; -// private boolean isRestartAutopilot = false; public BusPresenter(BusFragment view) { super(view); @@ -177,9 +176,7 @@ public class BusPresenter extends Presenter currentAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE; // 设置UI【自动驾驶】按钮是否展示 runOnUIThread(() -> mView.onAutopilotEnableChange(true)); -// if (BusOrderModel.getInstance().isGoingToNextStation()) { -// runOnUIThread(() -> mView.hideSlidePanel()); -// } + if (FunctionBuildConfig.isDemoMode && ( (mCurrentStation >= 0 && mCurrentStation <= mStationList.size() - 1) @@ -189,9 +186,9 @@ public class BusPresenter extends Presenter CallerLogger.INSTANCE.d(M_BUS + "BusOrderModel=", "有美化功能"); return; } - // 改变UI自动驾驶状态 - runOnUIThread(() -> mView.onAutopilotStatusChanged(currentAutopilotStatus)); } + // 改变UI自动驾驶状态 + runOnUIThread(() -> mView.onAutopilotStatusChanged(currentAutopilotStatus)); break; case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING: if (currentAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { @@ -204,9 +201,7 @@ public class BusPresenter extends Presenter break; case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE: if (currentAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { - if (currentAutopilotStatus == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) {//2-->0语音提示 -// AIAssist.getInstance( getContext() ).speakTTSVoice( "自动驾驶已停止,请人工接管" ); - } + currentAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE; if (FunctionBuildConfig.isDemoMode && ( @@ -218,10 +213,10 @@ public class BusPresenter extends Presenter CallerLogger.INSTANCE.d(M_BUS + "BusOrderModel=", "有美化功能"); return; } - runOnUIThread(() -> { - mView.onAutopilotStatusChanged(currentAutopilotStatus); - }); } + runOnUIThread(() -> { + mView.onAutopilotStatusChanged(currentAutopilotStatus); + }); break; default: runOnUIThread(() -> mView.onAutopilotEnableChange(false)); diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiPersonalDialogFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiPersonalDialogFragment.java index 919214147e..5ff117c9ef 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiPersonalDialogFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiPersonalDialogFragment.java @@ -266,27 +266,31 @@ public class TaxiPersonalDialogFragment extends DialogFragment implements View.O } public void onOrdersListPageRefresh(List ordersList){ - if (null == ordersList && mNextPage == 0){//无数据 - mOrdersRv.setVisibility(View.GONE); - mNoDatas.setVisibility(View.VISIBLE); - return; - } - mOrdersRv.setVisibility(View.VISIBLE); - mNoDatas.setVisibility(View.GONE); - if ((null == ordersList) || (ordersList.size() < mPerPageSize && mNextPage > 0)){//已经没有更多数据,提示无数据 - //已经没有更多数据 - serverHadNoData = true; + try { + if (null == ordersList && mNextPage == 0){//无数据 + mOrdersRv.setVisibility(View.GONE); + mNoDatas.setVisibility(View.VISIBLE); + return; + } + mOrdersRv.setVisibility(View.VISIBLE); + mNoDatas.setVisibility(View.GONE); + if ((null == ordersList) || (ordersList.size() < mPerPageSize && mNextPage > 0)){//已经没有更多数据,提示无数据 + //已经没有更多数据 + serverHadNoData = true; + orders.addAll(ordersList); + mAdapter.notifyDataSetChanged(); + mNextPage = mNextPage +1; + return; + } + serverHadNoData = false; orders.addAll(ordersList); - mAdapter.notifyDataSetChanged(); + if(mAdapter!=null) { + mAdapter.notifyDataSetChanged(); + } mNextPage = mNextPage +1; - return; + }catch (Exception e){ + e.fillInStackTrace(); } - serverHadNoData = false; - orders.addAll(ordersList); - if(mAdapter!=null) { - mAdapter.notifyDataSetChanged(); - } - mNextPage = mNextPage +1; } class OrderAdapter extends RecyclerView.Adapter{ From fbe11c22c498fc266bc852ed7843c19c4bc192fd Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Fri, 14 Oct 2022 19:58:52 +0800 Subject: [PATCH 029/203] =?UTF-8?q?[2.11.0]=20[fix]1=E3=80=81bus=20?= =?UTF-8?q?=E5=B0=8F=E5=9C=B0=E5=9B=BE=E6=B8=85=E9=99=A4=E8=BD=A8=E8=BF=B9?= =?UTF-8?q?=202=E3=80=81taxi=E8=87=AA=E9=A9=BE=E6=8C=89=E9=92=AE=E6=98=BE?= =?UTF-8?q?=E7=A4=BAbug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../passenger/ui/BusPassengerBaseFragment.java | 1 + .../ui/BusPassengerMapDirectionView.java | 2 +- .../passenger/ui/BusPassengerRouteFragment.java | 17 ++++++++--------- .../mogo/och/bus/presenter/BusPresenter.java | 1 + .../java/com/mogo/och/taxi/model/TaxiModel.java | 6 +++--- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java index 143e4d1cc4..c9abd42c76 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java @@ -105,6 +105,7 @@ public abstract class BusPassengerBaseFragment 2) { + if (mLinePointsLatLng.size() > 2) { //设置线段纹理 PolylineOptions polylineOptions = new PolylineOptions(); diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java index 4f5d0d0451..dfc9495007 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java @@ -148,7 +148,7 @@ public class BusPassengerRouteFragment extends if (latLngList.size() > 0) { drawablePolyline(latLngList,haveArrivedIndex); } else { - clearPolyline(); + clearMapView(); } } @@ -164,7 +164,7 @@ public class BusPassengerRouteFragment extends }); } } else { - clearPolyline(); + clearMapView(); } } @@ -185,13 +185,13 @@ public class BusPassengerRouteFragment extends } } - public void clearPolyline() { + public void clearMapView() { if (mMapDirectionView != null) { UiThreadHandler.post(new Runnable() { @Override public void run() { mMapDirectionView.clearPolyline(); - + mMapDirectionView.clearCoordinatesLatLng(); } }); } @@ -230,7 +230,7 @@ public class BusPassengerRouteFragment extends mNoLineInfoView.setVisibility(View.VISIBLE); mRouteInfoView.setVisibility(View.GONE); updateArrivedStation(null,0,true); - clearPolyline(); + clearMapView(); clearMapMarkers(); } } @@ -240,10 +240,10 @@ public class BusPassengerRouteFragment extends mNoLineInfoView.setVisibility(View.VISIBLE); mRouteInfoView.setVisibility(View.GONE); updateArrivedStation(null,0,true); - clearPolyline(); + clearMapView(); clearMapMarkers(); } - emptyTv.setText(getString(R.string.bus_p_no_task)); + emptyTv.setText(getString(R.string.bus_p_no_task)); } public void hideNoTaskView(){ @@ -285,8 +285,7 @@ public class BusPassengerRouteFragment extends if (currentStationIndex == 0 && isArrived){ //到达始发站且并未出发, 恢复站点marker 清楚路径 清空路径点 SharedPrefsMgr.getInstance(getContext()) .remove(BusPassengerConst.BUS_SP_KEY_ORDER_SUM_DIS); - if (mMapDirectionView != null) mMapDirectionView.clearCoordinatesLatLng(); - clearPolyline(); + clearMapView(); } if (stations.size() > 0){ diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index b0b1f3023e..fdb55d3a36 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -156,6 +156,7 @@ public class BusPresenter extends Presenter @Override public void onAutopilotArriveAtStation(MessagePad.ArrivalNotification arrivalNotification) { + CallerLogger.INSTANCE.e( M_BUS + TAG, "onAutopilotArriveAtStation arrive"); BusOrderModel.getInstance().onArriveAt(arrivalNotification); } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 45a0278c55..9c1fc34c0c 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -1162,7 +1162,7 @@ public class TaxiModel { // 当美化模式(演示模式)开启时:且有订单、且为去往目的地状态,维持自动驾驶icon开启状态 return; } - if (state != mPrevAPStatus && mADASStatusCallback != null){ + if (mADASStatusCallback != null){ mADASStatusCallback.onAutopilotEnable(); } mPrevAPStatus = state; @@ -1174,7 +1174,7 @@ public class TaxiModel { // 当美化模式(演示模式)开启时:且有订单、且为去往目的地状态,维持自动驾驶icon开启状态 return; } - if (state != mPrevAPStatus && mADASStatusCallback != null){ + if (mADASStatusCallback != null){ mADASStatusCallback.onAutopilotDisable(); } mPrevAPStatus = state; @@ -1192,7 +1192,7 @@ public class TaxiModel { } return; } - if (state != mPrevAPStatus && mADASStatusCallback != null){ + if (mADASStatusCallback != null){ mADASStatusCallback.onManMachineCoDriving(); } mPrevAPStatus = state; From 0234b9cc6009219cc8b1be059c4f956302045451 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Mon, 17 Oct 2022 08:52:47 +0800 Subject: [PATCH 030/203] =?UTF-8?q?[2.11.0]=201=E3=80=81bus=20=E5=8F=B8?= =?UTF-8?q?=E6=9C=BA=E7=AB=AF=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/bus/model/BusOrderModel.java | 82 +++++++++---------- .../mogo/och/bus/presenter/BusPresenter.java | 2 +- 2 files changed, 41 insertions(+), 43 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index a9600a2ea7..465be06f92 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -347,10 +347,9 @@ public class BusOrderModel { startLon, startLat, location.getLongitude(), location.getLatitude() ); - CallerLogger.INSTANCE.d(M_BUS + TAG,"judgeArrivedStation() distance = " + distance - +" to " + upcomingStation.getName()); - if ( distance <= BusConst.ARRIVE_AT_END_STATION_DISTANCE ) { + CallerLogger.INSTANCE.d(M_BUS + TAG,"行程日志-judgeArrivedStation() distance = " + distance + +" to " + upcomingStation.getName()); onArriveAt(null); //无自动驾驶到站信息传null return; } @@ -473,12 +472,12 @@ public class BusOrderModel { * 服务端返回的OchBusRoutesResult逻辑, 离开站为当前站, 到达下一站后才会将下一站置为当前站, * 车机端展示是离开当前站,下一站设置为当前站, 所以服务端数据回来要做处理,不能直接渲染 */ - private void leaveStationSuccess() { + private void leaveStationSuccess(int leaveIndex) { //开启自动驾驶 2.10.0: 如果自动驾驶状态下开启, 非自动驾驶状态下不开启,需手动点击自动驾驶按钮开启 isGoingToNextStation = true; if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ - startAutopilot(false); + startAutopilot(false,leaveIndex); }else { firstStartAutopilot = 0; } @@ -488,12 +487,7 @@ public class BusOrderModel { * 开启自动驾驶 * @param isRestart */ - private void startAutopilot(boolean isRestart) { - - if (backgroundCurrentStationIndex +1 > stationList.size() - 1 || !isGoingToNextStation){ - CallerLogger.INSTANCE.e(M_BUS + TAG, "mismatch condition."); - return; - } + private void startAutopilot(boolean isRestart,int leaveIndex) { if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()){ ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() + @@ -505,20 +499,17 @@ public class BusOrderModel { triggerStartServiceEvent(isRestart, false); - BusStationBean currentStation = stationList.get( backgroundCurrentStationIndex); - BusStationBean nextStation = stationList.get( backgroundCurrentStationIndex + 1); - - AutopilotControlParameters parameters = initAutopilotControlParameters(); + AutopilotControlParameters parameters = initAutopilotControlParameters(leaveIndex); if (null == parameters) { - CallerLogger.INSTANCE.e(M_BUS + TAG, "AutopilotControlParameters is empty."); + CallerLogger.INSTANCE.e(M_BUS + TAG, "行程日志-AutopilotControlParameters is empty."); return; } CallerAutoPilotManager.INSTANCE.startAutoPilot(parameters); - CallerLogger.INSTANCE.d( M_BUS + TAG, "开启自动驾驶====" + GsonUtil.jsonFromObject(parameters) - +" startLatLon="+currentStation.getName()+",endLatLon="+nextStation.getName() + - "isRestart = " + isRestart); + CallerLogger.INSTANCE.d( M_BUS + TAG, "行程日志-开启自动驾驶====" + GsonUtil.jsonFromObject(parameters) + +" startLatLon="+parameters.startName+",endLatLon="+parameters.endName + + "isRestart = " + isRestart); if (mControllerStatusCallback != null) { mControllerStatusCallback.startOpenAutopilot(); @@ -596,7 +587,7 @@ public class BusOrderModel { new IBusServiceCallback() { @Override public void onSuccess(BaseData o) { - CallerLogger.INSTANCE.d(M_BUS + TAG,"arriveSiteStation success"); + CallerLogger.INSTANCE.d(M_BUS + TAG,"行程日志-arriveSiteStation success"); queryBusRoutes(); ttsTips(String.format(mContext @@ -636,12 +627,12 @@ public class BusOrderModel { @Override public void onSuccess(BaseData o) { isArrivedStation = false; - CallerLogger.INSTANCE.d( M_BUS + TAG, "自动驾驶开启开往下一站====" ); + CallerLogger.INSTANCE.d( M_BUS + TAG, "行程日志-离站成功开往下一站====" ); //需要更改当前站和下一站的状态 然后渲染 startOrStopQueryPassengerWriteOff(false); - leaveStationSuccess(); - leaveTTSTips(finalNextStationName); queryBusRoutes(); + leaveStationSuccess(backgroundCurrentStationIndex); + leaveTTSTips(finalNextStationName); } @Override public void onFail(String failMsg) { @@ -738,7 +729,8 @@ public class BusOrderModel { BusStationBean currentStation = stationList.get(backgroundCurrentStationIndex); CallerLogger.INSTANCE.d( M_BUS + TAG, - "渲染站点信息服务端currentStationIndex="+backgroundCurrentStationIndex + "行程日志-STATION_STATUS_STOPPED-backgroundCurrentStationIndex=" + +backgroundCurrentStationIndex +" isLeaving()="+currentStation.isLeaving()); // 美化是否开始 @@ -795,9 +787,9 @@ public class BusOrderModel { * 在踩刹车、控制方向盘等操作后,会停止自动驾驶,重启自动驾驶的话相当于重新设置自动驾驶目的地 */ public void restartAutopilot() { - CallerLogger.INSTANCE.d( M_BUS + TAG, "重启自动驾驶===" + isGoingToNextStation ); + CallerLogger.INSTANCE.d( M_BUS + TAG, "行程日志-重启自动驾驶===" + isGoingToNextStation ); //只去启动自动驾驶,不再去上报离站 - startAutopilot(firstStartAutopilot >= 1); + startAutopilot(firstStartAutopilot >= 1,-1); } public boolean isRestartAutopilot(){ @@ -851,20 +843,14 @@ public class BusOrderModel { */ public void onArriveAt( MessagePad.ArrivalNotification data){ if ( backgroundCurrentStationIndex +1 > stationList.size() - 1 ) { - CallerLogger.INSTANCE.e( M_BUS + TAG, "到站异常,取消后续操作结束" ); + CallerLogger.INSTANCE.e( M_BUS + TAG, "行程日志-到站异常,取消后续操作结束" ); return; } if (isArrivedStation) return; isArrivedStation = true; -// if (FunctionBuildConfig.isDemoMode && backgroundCurrentStationIndex <= stationList.size() - 1) {//到达一站结束美化 -// closeBeautificationMode(); -// CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore:置为false(到最后一站)"); -// } - - - CallerLogger.INSTANCE.d( M_BUS + TAG, "到站====currentStationIndex=" + backgroundCurrentStationIndex); + CallerLogger.INSTANCE.d( M_BUS + TAG, "行程日志-到站==backgroundCurrentStationIndex=" + backgroundCurrentStationIndex); isGoingToNextStation = false; arriveSiteStation(); @@ -927,7 +913,7 @@ public class BusOrderModel { */ private void updateAutopilotControlParameters() { - AutopilotControlParameters parameters = initAutopilotControlParameters(); + AutopilotControlParameters parameters = initAutopilotControlParameters(-1); if (null == parameters){ CallerLogger.INSTANCE.e(M_BUS + TAG, "AutopilotControlParameters is empty."); return; @@ -941,14 +927,25 @@ public class BusOrderModel { CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(null); } - private AutopilotControlParameters initAutopilotControlParameters() { - if (backgroundCurrentStationIndex +1 > stationList.size() - 1 || !isGoingToNextStation){ - CallerLogger.INSTANCE.e(M_BUS + TAG, "mismatch condition."); - return null; - } + private AutopilotControlParameters initAutopilotControlParameters(int leaveIndex) { + BusStationBean currentStation = null; + BusStationBean nextStation = null; - BusStationBean currentStation = stationList.get( backgroundCurrentStationIndex); - BusStationBean nextStation = stationList.get( backgroundCurrentStationIndex + 1); + if (leaveIndex < 0){ + if (backgroundCurrentStationIndex +1 > stationList.size() - 1 || !isGoingToNextStation){ + CallerLogger.INSTANCE.e(M_BUS + TAG, "行程日志-mismatch condition1."); + return null; + } + currentStation = stationList.get( backgroundCurrentStationIndex); + nextStation = stationList.get( backgroundCurrentStationIndex + 1); + }else { + if (leaveIndex +1 > stationList.size() - 1 || !isGoingToNextStation){ + CallerLogger.INSTANCE.e(M_BUS + TAG, "行程日志-mismatch condition2."); + return null; + } + currentStation = stationList.get( leaveIndex); + nextStation = stationList.get( leaveIndex + 1); + } AutopilotControlParameters parameters = new AutopilotControlParameters(); parameters.routeID = busRoutesResult.getLineId(); @@ -970,6 +967,7 @@ public class BusOrderModel { busRoutesResult.txtFileUrlDPQP, busRoutesResult.txtFileMd5DPQP, busRoutesResult.contrailSaveTimeDPQP); } + return parameters; } } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index fdb55d3a36..88aa1860c1 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -156,7 +156,7 @@ public class BusPresenter extends Presenter @Override public void onAutopilotArriveAtStation(MessagePad.ArrivalNotification arrivalNotification) { - CallerLogger.INSTANCE.e( M_BUS + TAG, "onAutopilotArriveAtStation arrive"); + CallerLogger.INSTANCE.e( M_BUS + TAG, "行程日志-onAutopilotArriveAtStation arrive"); BusOrderModel.getInstance().onArriveAt(arrivalNotification); } From 191c84992f9b55f4dfb19ff8d927b31d80c81735 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Mon, 17 Oct 2022 10:15:56 +0800 Subject: [PATCH 031/203] change the vip change light to test --- .../v2x/trafficlight/network/TrafficLightNetWorkModel.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/network/TrafficLightNetWorkModel.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/network/TrafficLightNetWorkModel.kt index f9a30eeb9a..fc566852bc 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/network/TrafficLightNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/network/TrafficLightNetWorkModel.kt @@ -120,7 +120,8 @@ class TrafficLightNetWorkModel { } loader { apiCall { - getNetWorkApi().changeLight(map) + MoGoRetrofitFactory.getInstanceNoCallAdapter("http://dzt-qa-city.zhidaozhixing.com") + .create(TrafficLightApiService::class.java).changeLight(map) } } onSuccess { From 2d7970bfa0f461e890af5d215eba8795cfbed202 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Mon, 17 Oct 2022 11:39:17 +0800 Subject: [PATCH 032/203] =?UTF-8?q?[feature]=20=E8=B7=91=E9=A9=AC=E7=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusPassengerLineStationsAdapter.java | 10 +++++- .../ui/BusPassengerRouteFragment.java | 3 +- .../main/res/layout/bus_p_route_fragment.xml | 8 +++-- .../res/layout/bus_p_stations_common_item.xml | 3 +- .../mogo/och/bus/fragment/BusFragment.java | 3 +- .../src/main/res/layout/fragment_och_bus.xml | 7 ++-- .../common/module/wigets/MarqueeTextView.java | 35 +++++++++++++++++++ 7 files changed, 59 insertions(+), 10 deletions(-) create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/MarqueeTextView.java diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java index 734edccdd6..565372b4a9 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java @@ -1,6 +1,7 @@ package com.mogo.och.bus.passenger.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -14,6 +15,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.mogo.och.bus.passenger.R; import com.mogo.och.bus.passenger.bean.BusPassengerStation; import com.mogo.och.common.module.utils.BlinkAnimationUtil; +import com.mogo.och.common.module.wigets.MarqueeTextView; import java.util.List; @@ -58,9 +60,11 @@ public class BusPassengerLineStationsAdapter extends RecyclerView.Adapter - - public static final String TAG = "BusFragment"; private TextView mSwitchLine; //切换路线 - private TextView mLineName; + private MarqueeTextView mLineName; private TextView mTaskTime; private Group groupStationsPanel; private ConstraintLayout noDataView; diff --git a/OCH/mogo-och-bus/src/main/res/layout/fragment_och_bus.xml b/OCH/mogo-och-bus/src/main/res/layout/fragment_och_bus.xml index 8609630b9c..1b9bbeec01 100644 --- a/OCH/mogo-och-bus/src/main/res/layout/fragment_och_bus.xml +++ b/OCH/mogo-och-bus/src/main/res/layout/fragment_och_bus.xml @@ -10,15 +10,16 @@ app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent"> - Date: Mon, 17 Oct 2022 12:00:15 +0800 Subject: [PATCH 033/203] =?UTF-8?q?[2.11.0]=201=E3=80=81bus=E5=8F=B8?= =?UTF-8?q?=E6=9C=BA=E7=AB=AF=20=E8=A7=84=E8=8C=83=E7=BB=93=E6=9D=9F/?= =?UTF-8?q?=E4=B8=AD=E6=96=AD=E4=BB=BB=E5=8A=A1=20=E6=B8=85=E7=A9=BAtag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/och/bus/model/BusOrderModel.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index 465be06f92..ac7140a5f2 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -452,7 +452,7 @@ public class BusOrderModel { @Override public void onSuccess(BaseData o) { CallerLogger.INSTANCE.d(M_BUS + TAG, "abortTask success: " + o); - isGoingToNextStation = false; + clearNativeTag(); if (o.code == 0){ // 重置成功 queryBusRoutes(); startOrStopQueryPassengerWriteOff(false); @@ -467,6 +467,11 @@ public class BusOrderModel { } + private void clearNativeTag() { + isGoingToNextStation = false; + backgroundCurrentStationIndex = 0; + } + /** * 离站上报成功后渲染站点 * 服务端返回的OchBusRoutesResult逻辑, 离开站为当前站, 到达下一站后才会将下一站置为当前站, @@ -822,8 +827,7 @@ public class BusOrderModel { public void onSuccess(BaseData o) { CallerLogger.INSTANCE.d(M_BUS + TAG, "endTask success: " + o); if (o.code == 0){ - isGoingToNextStation = false; - backgroundCurrentStationIndex = 0; + clearNativeTag(); queryBusRoutes();// 重新获取任务 startOrStopQueryPassengerWriteOff(false); ttsTips(mContext.getString(R.string.bus_end_task_tip)); From f73cd136dad471f255f1bd7162b2b6f93a5fe3d9 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Mon, 17 Oct 2022 15:04:00 +0800 Subject: [PATCH 034/203] remove log call --- .../hmi/ui/widget/CircularProgressView.kt | 4 ---- .../hmi/ui/widget/SteeringWheelView.java | 17 +++-------------- .../function/hmi/ui/widget/V2XWarningView.kt | 2 -- 3 files changed, 3 insertions(+), 20 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CircularProgressView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CircularProgressView.kt index 214cd5e923..e84187017b 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CircularProgressView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CircularProgressView.kt @@ -6,7 +6,6 @@ import android.content.res.TypedArray import android.graphics.* import android.util.AttributeSet import android.util.DisplayMetrics -import android.util.Log import android.view.View import android.view.animation.LinearInterpolator import android.view.animation.OvershootInterpolator @@ -81,7 +80,6 @@ class CircularProgressView @JvmOverloads constructor( mRectF = RectF(mRectL.toFloat(), mRectT.toFloat(), (mRectL + mRectLength).toFloat(), (mRectT + mRectLength).toFloat()) - Log.d(TAG, "onMeasure:" + mRectF.toString() + "," + "width:" + measuredWidth.toString() + "," + "PaddingLeft:" + getPaddingLeft().toString()) } /** @@ -107,7 +105,6 @@ class CircularProgressView @JvmOverloads constructor( override fun onDraw(canvas: Canvas?) { super.onDraw(canvas) - Log.d(TAG, "onDraw") canvas?.let { mRectF?.let { it1 -> it.drawArc(it1, 0.0f, 360.0f, false, mBackPaint) } mRectF?.let { it1 -> @@ -154,7 +151,6 @@ class CircularProgressView @JvmOverloads constructor( val animator = ValueAnimator.ofInt(mProgress, progress) animator.addUpdateListener { mProgress = it.animatedValue as Int - Log.d(TAG, "setProgress" + mProgress.toString()) invalidate() } animator.interpolator = LinearInterpolator() diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.java index 67594f090e..34f476121f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.java @@ -3,7 +3,6 @@ package com.mogo.eagle.core.function.hmi.ui.widget; import android.content.Context; import android.graphics.BlurMaskFilter; import android.util.AttributeSet; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.animation.RotateAnimation; @@ -54,12 +53,10 @@ public class SteeringWheelView extends ConstraintLayout { public SteeringWheelView(@NonNull Context context) { super(context); - Log.d(TAG, "1"); } public SteeringWheelView(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); - Log.d(TAG, "2"); if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { LayoutInflater.from(context).inflate(R.layout.hmi_steering_wheel_bus, this); } else { @@ -94,12 +91,10 @@ public class SteeringWheelView extends ConstraintLayout { public SteeringWheelView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); - Log.d(TAG, "3"); } public SteeringWheelView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); - Log.d(TAG, "4"); } private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener() { @@ -127,7 +122,6 @@ public class SteeringWheelView extends ConstraintLayout { int state = autopilotStatusInfo.getState(); CallerLogger.INSTANCE.d(M_BUS_P + TAG, "state = %s", state); if (autopilotIV != null) { - Log.d(TAG, "autopilotIV != null"); if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { // TODO @@ -151,7 +145,7 @@ public class SteeringWheelView extends ConstraintLayout { } } } else { - Log.d(TAG, "autopilotIV=null"); + CallerLogger.INSTANCE.d(TAG, "autopilotIV=null"); } } }); @@ -192,7 +186,6 @@ public class SteeringWheelView extends ConstraintLayout { */ @Override public void onAutopilotLightSwitchData(@org.jetbrains.annotations.Nullable Chassis.LightSwitch lightSwitch) { - Log.d(TAG, "车辆转向灯:" + lightSwitch.toString()); } /** @@ -201,7 +194,6 @@ public class SteeringWheelView extends ConstraintLayout { */ @Override public void onAutopilotBrakeLightData(boolean brakeLight) { - Log.d(TAG, "刹车灯:" + String.valueOf(brakeLight)); } /** @@ -219,7 +211,6 @@ public class SteeringWheelView extends ConstraintLayout { */ @Override public void onAutopilotSteeringData(float steering) { - Log.d(TAG, "steering原始值====" + String.valueOf(steering)); if (Math.abs(steering) < 1) { steering = 0; } @@ -227,7 +218,6 @@ public class SteeringWheelView extends ConstraintLayout { ThreadUtils.runOnUiThread(new Runnable() { @Override public void run() { - Log.d(TAG, "steering忽略小数点后====" + String.valueOf((int) steeringValue)); if (steeringTVL != null && steeringValue > 0) { steeringTVR.setVisibility(View.INVISIBLE); steeringTVL.setVisibility(View.VISIBLE); @@ -237,7 +227,7 @@ public class SteeringWheelView extends ConstraintLayout { steeringTVR.setVisibility(View.VISIBLE); steeringTVR.setText(String.valueOf((int) -steeringValue) + "°"); } else { - Log.d(TAG, "onAutopilotSteeringData error"); + CallerLogger.INSTANCE.d(TAG, "onAutopilotSteeringData error"); } animationWithSteeringData(-steeringValue); if (steeringCircularV != null) { @@ -260,7 +250,7 @@ public class SteeringWheelView extends ConstraintLayout { ThreadUtils.runOnUiThread(new Runnable() { @Override public void run() { - Log.d(TAG, "乘客屏档位" + gear.toString()); + CallerLogger.INSTANCE.d(TAG, "乘客屏档位" + gear.toString()); if (tapPositionView != null) { tapPositionView.updateWithGear(gear); } @@ -288,7 +278,6 @@ public class SteeringWheelView extends ConstraintLayout { * @param steering */ private void animationWithSteeringData(float steering) { - Log.d(TAG, "方向盘转动" + String.valueOf(steering)); rotateAnimation = new RotateAnimation(fromDegrees, steering, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 0.5f); diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/V2XWarningView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/V2XWarningView.kt index 80c0da6125..6bc394fba8 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/V2XWarningView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/V2XWarningView.kt @@ -2,7 +2,6 @@ package com.mogo.eagle.core.function.hmi.ui.widget import android.content.Context import android.util.AttributeSet -import android.util.Log import android.view.LayoutInflater import android.view.View import android.widget.RelativeLayout @@ -53,7 +52,6 @@ class V2XWarningView @JvmOverloads constructor( * @param closeTime 倒计时 */ fun showWarning(direction: WarningDirectionEnum, closeTime: Long) { - Log.d(TAG, "预警红边:预警方向->$direction 预警倒计时->$closeTime") UiThreadHandler.post { // 如果传入的不是关闭显示,则设置倒计时,定时关闭红框警示 if (direction != ALERT_WARNING_NON) { From 42104bc48d2dc7815cdcaf5a437d8a73e64e816b Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Mon, 17 Oct 2022 16:50:48 +0800 Subject: [PATCH 035/203] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BB=95=E6=A1=A9?= =?UTF-8?q?=E5=BC=80=E5=85=B3=E5=92=8C=E7=BB=95=E6=A1=A9=E9=80=9F=E5=BA=A6?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/proto/message_pad.proto | 21 +++++++++++++++---- .../zhidao/support/adas/high/AdasChannel.java | 19 +++++++++++++++++ .../zhidao/support/adas/high/AdasManager.java | 9 ++++++++ .../support/adas/high/IAdasNetCommApi.java | 5 +++++ .../support/adas/high/common/MessageType.java | 1 + 5 files changed, 51 insertions(+), 4 deletions(-) diff --git a/libraries/mogo-adas-data/src/main/proto/message_pad.proto b/libraries/mogo-adas-data/src/main/proto/message_pad.proto index 3c16b7d91f..b6ac7f2a10 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -4,7 +4,7 @@ package mogo.telematics.pad; enum ProtocolVersion { Defaultver = 0; - CurrentVersion = 7; //每次修改proto文件增加1 + CurrentVersion = 8; //每次修改proto文件增加1 } enum MessageType @@ -50,6 +50,7 @@ enum MessageType MsgTypeOperatorCmdReq = 0x10116; //操控指令 MsgTypeSubscribeDataReq = 0x10117; //数据订阅、取消订阅请求 MsgTypeSpecialVehicleTaskCmd = 0x10118; //特种车辆命令 + MsgTypeSetParamReq = 0x10119; //设置参数命令 } message Header @@ -141,11 +142,11 @@ message GnssInfo // message definition for MessageType: MsgTypeAutopilotState message AutopilotState { - uint32 state = 1; //0: 不可用(abandoned), 1:ready, 2:自动驾驶中,3:平行驾驶 + uint32 state = 1; //0: 不可用(abandoned), 1:ready, 2:自动驾驶中 uint32 camera = 2; //camera节点状态 1:开启,0:关闭 uint32 radar = 3; //雷达节点状态 1:开启,0:关闭 uint32 rtk = 4; //RTK节点状态 1:开启,0:关闭 - uint32 autopilotMode = 5; //自动驾驶状态 0: 非自动驾驶,1: 自动驾驶,2平行驾驶 + uint32 autopilotMode = 5; //自动驾驶状态 0: 非自动驾驶,1: 自动驾驶 double speed = 6; //惯导车速 m/s string reason = 7; //不可用原因(abandoned) } @@ -166,7 +167,7 @@ message AutopilotState message PlanningObject { uint32 uuid = 1; - uint32 type = 2; //影响自车决策的类型, 和感知的障碍物类型不是一回事 0是leading障碍物,1是避障和择机的障碍物 + uint32 type = 2; //影响自车决策的类型, 和感知的障碍物类型不是一回事 } message PlanningObjects @@ -466,3 +467,15 @@ message PlanningActionMsg //message definition for MsgTypeSpecialVehicleTaskCmd //refer to special_vehicle_task_cmd.proto for details +//message definition for MsgTypeSetParamReq +message SetOneParam +{ + uint32 type = 1; // 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标障碍物速度阈值(double, m/s) + string value = 2; // 转成字符串的值 +} + +message SetParamReq +{ + repeated SetOneParam reqs = 1; +} + diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index daa4366e6e..62f257b274 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -14,6 +14,7 @@ import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_LINK_LOG_WEB_SO import android.os.SystemClock; import android.text.TextUtils; +import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -300,6 +301,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec if (mSocket == null || bytes == null || bytes.length <= 0) { return false; } + Log.d("liyz", "sendWsMessag bytes = " + bytes); //TODO ByteString byteString = ByteString.of(bytes); if (!byteString.startsWith(Constants.RAW_MG)) { CupidLogUtils.e(TAG, "协议不匹配,命令下发失败 bytes=" + ByteUtil.byteArrToHex(bytes)); @@ -1194,5 +1196,22 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec public boolean sendOperatorCmdStopHonking() { return sendOperatorCmdSetHorn(2); } + + /** + * 绕障开关和速度控制 + * @param type + * @param value + */ + @Override + public boolean setDetouring(int type, String value) { + MessagePad.SetOneParam oneParam = MessagePad.SetOneParam + .newBuilder().setType(type).setValue(value).build(); + MessagePad.SetParamReq req = MessagePad.SetParamReq + .newBuilder() + .addReqs(oneParam) + .build(); + return sendPBMessage(MessageType.TYPE_SEND_DETOURING_DATA_REQ.typeCode, req.toByteArray()); + } + } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java index 35b0554b2e..a682ee6249 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java @@ -570,6 +570,15 @@ public class AdasManager implements IAdasNetCommApi { return mChannel != null && mChannel.sendOperatorCmdStopHonking(); } + /** + * 绕障开关和速度控制 + * @param type + * @param value + */ + @Override + public boolean setDetouring(int type, String value) { + return mChannel != null && mChannel.setDetouring(type, value); + } /** * 获取工控机固定IP列表 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java index 6fc73c2beb..62f9a2fb14 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java @@ -349,6 +349,11 @@ public interface IAdasNetCommApi { */ void setEnableLog(boolean isEnableLog); + /** + * 绕障开关和速度相关 + */ + boolean setDetouring(int type, String value); + /** * 获取与当前连接工控机兼容性 * 连接状态=已连接 时正常返回,其他状态全部为null diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java index 7fada1ae8e..625b824321 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java @@ -49,6 +49,7 @@ public enum MessageType { TYPE_SEND_RECORD_DATA_CONFIG_REQ(MessagePad.MessageType.MsgTypeRecordDataConfigReq, "数据采集配置查询"), TYPE_RECEIVE_RECORD_DATA_CONFIG_RESP(MessagePad.MessageType.MsgTypeRecordDataConfigResp, "数据采集配置"), TYPE_SEND_SUBSCRIBE_DATA_REQ(MessagePad.MessageType.MsgTypeSubscribeDataReq, "数据订阅、取消订阅请求"), + TYPE_SEND_DETOURING_DATA_REQ(MessagePad.MessageType.MsgTypeSetParamReq, "绕障开关和阈值"), //透传 原始pb文件中不存在以下type。由于Java中无法强转所以在mogo-adas-data message_pad.proto中放开注释 TYPE_RECEIVE_PLANNING_DECISION_STATE(MessagePad.MessageType.MsgTypePlanningDecisionState, "Planning决策状态"); From 0ada00a5c518f10a3ee16b3746cdd1b542d7867d Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Mon, 17 Oct 2022 17:46:46 +0800 Subject: [PATCH 036/203] =?UTF-8?q?[2.11.0]=20bus=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=E8=87=AA=E9=A9=BE=E7=8A=B6=E6=80=81=E8=B5=8B=E5=80=BC?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/och/bus/presenter/BusPresenter.java | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index 88aa1860c1..8106fb33e6 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -173,20 +173,20 @@ public class BusPresenter extends Presenter switch (state) { case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE: if (currentAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { - - currentAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE; // 设置UI【自动驾驶】按钮是否展示 runOnUIThread(() -> mView.onAutopilotEnableChange(true)); - - if (FunctionBuildConfig.isDemoMode - && ( - (mCurrentStation >= 0 && mCurrentStation <= mStationList.size() - 1) - && BusOrderModel.getInstance().isGoingToNextStation() - ) - ) { - CallerLogger.INSTANCE.d(M_BUS + "BusOrderModel=", "有美化功能"); - return; - } + } + if (FunctionBuildConfig.isDemoMode + && ( + (mCurrentStation >= 0 && mCurrentStation <= mStationList.size() - 1) + && BusOrderModel.getInstance().isGoingToNextStation() + ) + ) { + CallerLogger.INSTANCE.d(M_BUS + "BusOrderModel=", "有美化功能"); + return; + } + if (currentAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) { + currentAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE; } // 改变UI自动驾驶状态 runOnUIThread(() -> mView.onAutopilotStatusChanged(currentAutopilotStatus)); @@ -201,19 +201,19 @@ public class BusPresenter extends Presenter runOnUIThread(() -> mView.onAutopilotStatusChanged(currentAutopilotStatus)); break; case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE: + if (FunctionBuildConfig.isDemoMode + && ( + (mCurrentStation >= 0 && mCurrentStation <= mStationList.size() - 1) + && BusOrderModel.getInstance().isGoingToNextStation() + + ) + ) { + CallerLogger.INSTANCE.d(M_BUS + "BusOrderModel=", "有美化功能"); + return; + } + if (currentAutopilotStatus != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) { - currentAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE; - if (FunctionBuildConfig.isDemoMode - && ( - (mCurrentStation >= 0 && mCurrentStation <= mStationList.size() - 1) - && BusOrderModel.getInstance().isGoingToNextStation() - - ) - ) { - CallerLogger.INSTANCE.d(M_BUS + "BusOrderModel=", "有美化功能"); - return; - } } runOnUIThread(() -> { mView.onAutopilotStatusChanged(currentAutopilotStatus); From ebac03d7f2c0cc633143fc83bf89ca27d33daac9 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Mon, 17 Oct 2022 18:04:11 +0800 Subject: [PATCH 037/203] =?UTF-8?q?[feature]=20=E9=80=9A=E8=BF=87=E5=8F=8D?= =?UTF-8?q?=E5=B0=84=E8=B0=83=E6=95=B4=E9=97=B4=E9=9A=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/layout/bus_p_route_fragment.xml | 2 + .../res/layout/bus_p_stations_common_item.xml | 2 + .../och/common/module/utils/FieldUtils.java | 37 ++++++++ .../common/module/wigets/MarqueeTextView.java | 94 +++++++++++++++++++ .../src/main/res/values/attrs.xml | 5 + 5 files changed, 140 insertions(+) create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FieldUtils.java diff --git a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_route_fragment.xml b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_route_fragment.xml index 557740ae89..7a7792bdc1 100644 --- a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_route_fragment.xml +++ b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_route_fragment.xml @@ -115,6 +115,8 @@ android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:text="----" + app:customGap="0.5" + app:useCustomGap="true" android:textColor="@color/bus_p_line_name_color" android:textSize="@dimen/bus_p_driver_number_plate_size" android:textStyle="bold" diff --git a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_stations_common_item.xml b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_stations_common_item.xml index 9416bfb1c8..d33ecffc3a 100644 --- a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_stations_common_item.xml +++ b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_stations_common_item.xml @@ -18,6 +18,8 @@ android:layout_marginRight="@dimen/dp_60" android:textColor="@color/bus_p_station_txt_color" android:layout_marginLeft="@dimen/dp_90" + app:customGap="0.5" + app:useCustomGap="true" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@+id/bus_p_tag" app:layout_constraintTop_toBottomOf="@+id/bus_p_cur_arrow_bg"/> diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FieldUtils.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FieldUtils.java new file mode 100644 index 0000000000..9dc909d19c --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FieldUtils.java @@ -0,0 +1,37 @@ +package com.mogo.och.common.module.utils; + +import android.text.TextUtils; + +import java.lang.reflect.Field; +import java.lang.reflect.Member; +import java.lang.reflect.Modifier; + +public class FieldUtils { + + public static Field getDeclaredField(final Class cls, final String fieldName, final + boolean forceAccess) { + if (cls == null || TextUtils.isEmpty(fieldName)) { + return null; + } + try { + // only consider the specified class by using getDeclaredField() + final Field field = cls.getDeclaredField(fieldName); + if (!isAccessible(field)) { + if (forceAccess) { + field.setAccessible(true); + } else { + return null; + } + } + return field; + } catch (final Exception e) { + e.printStackTrace(); + } + return null; + } + + + private static boolean isAccessible(final Member m) { + return m != null && Modifier.isPublic(m.getModifiers()) && !m.isSynthetic(); + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/MarqueeTextView.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/MarqueeTextView.java index 31c979747d..884d504338 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/MarqueeTextView.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/MarqueeTextView.java @@ -1,12 +1,31 @@ package com.mogo.och.common.module.wigets; import android.content.Context; +import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.ViewDebug; +import android.widget.TextView; + +import com.mogo.och.common.module.R; +import com.mogo.och.common.module.utils.FieldUtils; + +import java.lang.reflect.Field; public class MarqueeTextView extends androidx.appcompat.widget.AppCompatTextView{ + /** + * 上一次设置的时间,用于过滤多余操作 + */ + private long mLastSetTime; + /** + * 自定义 gap + */ + private float mCustomGap = 0.3f; + /** + * 是否使用自定义 gap + */ + private boolean mUseCustomGap; public MarqueeTextView(Context context) { this(context, null); @@ -18,6 +37,11 @@ public class MarqueeTextView extends androidx.appcompat.widget.AppCompatTextView public MarqueeTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); + + TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MarqueeTextView); + mCustomGap = typedArray.getFloat(R.styleable.MarqueeTextView_customGap, mCustomGap); + mUseCustomGap = typedArray.getBoolean(R.styleable.MarqueeTextView_useCustomGap, false); + typedArray.recycle(); } @Override @@ -32,4 +56,74 @@ public class MarqueeTextView extends androidx.appcompat.widget.AppCompatTextView return true; } + @Override + public void invalidate() { + reflectToChangeGap(); + + super.invalidate(); + } + + private void reflectToChangeGap() { + if (!mUseCustomGap) { + return; + } + if (System.currentTimeMillis() - mLastSetTime < 1000) { + // 1s 内不重新设置,过滤多余操作 + return; + } + try { + Class marqueClass = null; + Class[] innerClazz = TextView.class.getDeclaredClasses(); + for (Class clazz : innerClazz) { + if ("Marquee".equals(clazz.getSimpleName())) { + marqueClass = clazz; + } + } + + if (marqueClass == null) { + return; + } + + Field field1 = FieldUtils.getDeclaredField(marqueClass, "mGhostStart", true); + + if (field1 == null) { + return; + } + + final int textWidth = getWidth() - getCompoundPaddingLeft() - getCompoundPaddingRight(); + final float lineWidth = getLayout().getLineWidth(0); + final float gap = mCustomGap*textWidth; + float ghostStart = lineWidth - textWidth + gap; + float maxScroll = ghostStart + textWidth; + float ghostOffset = lineWidth + gap; + float maxFadeScroll = ghostStart + lineWidth + lineWidth; + + final Field field = FieldUtils.getDeclaredField(TextView.class, "mMarquee", true); + if (field != null) { + Object mMarque = field.get(this); + if (mMarque != null) { + mLastSetTime = System.currentTimeMillis(); + float mGhostStart = (float) field1.get(mMarque); + if (mGhostStart != ghostStart) { + // 需要设置的 mGhostStart 与当前 ghostStart 不相等时才去设置 + Field field2 = FieldUtils.getDeclaredField(marqueClass, "mMaxScroll", true); + Field field3 = FieldUtils.getDeclaredField(marqueClass, "mGhostOffset", true); + Field field4 = FieldUtils.getDeclaredField(marqueClass, "mMaxFadeScroll", true); + + if (field2 == null || field3 == null || field4 == null) { + return; + } + + field1.set(mMarque, ghostStart); + field2.set(mMarque, maxScroll); + field3.set(mMarque, ghostOffset); + field4.set(mMarque, maxFadeScroll); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } diff --git a/OCH/mogo-och-common-module/src/main/res/values/attrs.xml b/OCH/mogo-och-common-module/src/main/res/values/attrs.xml index 27efdf3802..9043a1d2ad 100644 --- a/OCH/mogo-och-common-module/src/main/res/values/attrs.xml +++ b/OCH/mogo-och-common-module/src/main/res/values/attrs.xml @@ -52,4 +52,9 @@ + + + + + \ No newline at end of file From a8eb16f43ec9194eef72d21a08e6c7c19915ca24 Mon Sep 17 00:00:00 2001 From: renwj Date: Mon, 17 Oct 2022 19:52:13 +0800 Subject: [PATCH 038/203] =?UTF-8?q?[V2X][Road]=E5=9F=8E=E5=B8=82=E5=8D=A0?= =?UTF-8?q?=E9=81=93=E6=96=BD=E5=B7=A5=E9=80=82=E9=85=8D=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E8=A7=86=E8=A7=92=E5=88=87=E6=8D=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/bus/fragment/BaseBusTabFragment.java | 4 +++ .../ui/TaxiPassengerBaseFragment.java | 4 +++ .../mogo/och/taxi/ui/BaseTaxiTabFragment.java | 4 +++ .../hmi/ui/widget/PerspectiveSwitchView.kt | 4 +++ .../scenario/scene/airoad/AiRoadMarker.kt | 36 +++++++++++++++++-- .../scene/road/V2XRoadEventMarker.java | 2 +- 6 files changed, 50 insertions(+), 4 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java index 6d3d91396b..63a09fe752 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java @@ -34,6 +34,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListener import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.hmi.ui.widget.TrafficDataView; +import com.mogo.eagle.core.function.v2x.events.scenario.scene.airoad.AiRoadMarker; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; @@ -138,6 +139,7 @@ public abstract class BaseBusTabFragment //切换地图的远近视图 if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isLongSight()) { MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers(); + AiRoadMarker.INSTANCE.restore(); MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); } else if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isMediumSight()) { @@ -145,10 +147,12 @@ public abstract class BaseBusTabFragment .inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS, BusConst.TYPE_MARKER_BUS_ORDER); MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null); mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long); + AiRoadMarker.INSTANCE.clear(); } else { MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers(); MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); + AiRoadMarker.INSTANCE.restore(); } } }); diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java index 34b8898d5f..7c61e35c1e 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java @@ -20,6 +20,7 @@ import com.mogo.eagle.core.function.api.hmi.view.IViewNotification; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.call.map.CallerSmpManager; +import com.mogo.eagle.core.function.v2x.events.scenario.scene.airoad.AiRoadMarker; import com.mogo.eagle.core.utilcode.util.OverlayViewUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.MogoMapUIController; @@ -135,14 +136,17 @@ public class TaxiPassengerBaseFragment extends MvpFragment $isTrigger") if (isTrigger) { marker.set(top) - marker(top) + marker(top, true) } else { synchronized(markers) { markers.remove(top) @@ -187,7 +187,7 @@ object AiRoadMarker { } } - fun marker(marker: Marker) { + fun marker(marker: Marker, drawMarker: Boolean) { val location = carLocation.get() ?: return //施工中心点前方的自车行驶方向上300米距离 val l1 = MogoMap.getInstance().mogoMap.getCenterLineRangeInfo(marker.poi_lon, marker.poi_lat, location.third.toFloat(), 300f) @@ -239,7 +239,9 @@ object AiRoadMarker { return } removeLine() - marker.entity?.apply { V2XAiRoadEventMarker.drawMarkers(this) } + if (drawMarker) { + marker.entity?.apply { V2XAiRoadEventMarker.drawMarkers(this) } + } val evaluator = ArgbEvaluator() val interceptor = DecelerateInterpolator(1.5f) val total = points.size @@ -275,11 +277,39 @@ object AiRoadMarker { } fun unMarker(marker: Marker) { + Logger.d(TAG, "--- unMarker ---") markers -= marker removeLine() V2XAiRoadEventMarker.removeMarkers(null) } + fun clear() { + hideLine() +// V2XAiRoadEventMarker.removeMarkers(null) + } + + fun restore() { + showLine() + val marker = marker.get() + if (marker != null) { + marker(marker, false) + } + } + + private fun hideLine() { + val old = line.get() + if (old != null && !old.isDestroyed) { + old.isVisible = false + } + } + + private fun showLine() { + val old = line.get() + if (old != null && !old.isDestroyed) { + old.isVisible = true + } + } + private fun isOutOfRange(markerLon: Double, markerLat: Double, carLon: Double, carLat: Double, carAngle: Double): Boolean { return !isFrontOfCar(markerLon, markerLat, carLon, carLat, carAngle) } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java index 9ed04ecba2..13f257eea0 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java @@ -83,7 +83,7 @@ public class V2XRoadEventMarker implements IV2XMarker { MarkerLocation location = noveltyInfo.getLocation(); AiRoadMarker.Marker m = new AiRoadMarker.Marker(gpsLocation.second, gpsLocation.first, location.getAngle(), polygons, null, entity); mMarker = m; - AiRoadMarker.INSTANCE.marker(m); + AiRoadMarker.INSTANCE.marker(m, true); } } From e3d60b975e628ac276dc1424662ad82ea9c408b3 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Tue, 18 Oct 2022 10:58:38 +0800 Subject: [PATCH 039/203] [2.12.0] opt --- .../mogo/och/taxi/ui/BaseTaxiTabFragment.java | 4 +-- .../ui/TaxiBeingServerdOrdersFragment.java | 32 ++++++++++++++++--- .../mogo/och/taxi/ui/TaxiNaviFragment.java | 8 +---- 3 files changed, 30 insertions(+), 14 deletions(-) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java index c7e70d1105..a94a80e47b 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java @@ -291,7 +291,7 @@ public abstract class BaseTaxiTabFragment { - showNaviToStartStationFragment(false); + showNaviToStationFragment(false); }); } @@ -564,7 +564,7 @@ public abstract class BaseTaxiTabFragment closeBeautificationMode ==> isDemoMode:" + FunctionBuildConfig.isDemoMode); if (FunctionBuildConfig.isDemoMode) {//收车结束美化 - FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false; - CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(false); - CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false); + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false; //是否强制绘制引导线 + CallerAutoPilotManager.INSTANCE.setIgnoreConditionDraw(false);// 同步给乘客屏 + CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false);//是否自动启动自驾 CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore:置为false"); } } @@ -745,9 +745,13 @@ public class BusOrderModel { if (stationList.get(backgroundCurrentStationIndex).isLeaving()){ startBeautificationMode(); CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore:置为true(每次滑动出发)"); - }else { + }else if (backgroundCurrentStationIndex >0 && backgroundCurrentStationIndex < stationList.size()-1){ + //美化模式下 中间站点到站 引导线要一直绘制,所以此处不出强制绘制不传false + CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false); + CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore:false(到达中间站)"); + clearStartAutopilotTag(); + }else{ closeBeautificationMode(); - CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore:false(到站)"); clearStartAutopilotTag(); } } From ef50758aaffe7f2f95211f8a6fc0327a8372326c Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Tue, 18 Oct 2022 13:19:38 +0800 Subject: [PATCH 041/203] =?UTF-8?q?[2.11.0]=E8=BF=9C=E8=BF=91=E8=A7=86?= =?UTF-8?q?=E8=A7=92=E4=B8=8B=E5=AF=B9marker=E6=98=BE=E7=A4=BA=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E5=81=9A=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/bus/fragment/BaseBusTabFragment.java | 11 +++++++---- .../taxi/passenger/ui/TaxiPassengerBaseFragment.java | 9 ++++++--- .../com/mogo/och/taxi/ui/BaseTaxiTabFragment.java | 11 +++++++---- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java index 63a09fe752..78adde0984 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java @@ -138,18 +138,21 @@ public abstract class BaseBusTabFragment public void onClickImpl(View v) { //切换地图的远近视图 if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isLongSight()) { - MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers(); + // 2.11.0去掉 +// MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers(); AiRoadMarker.INSTANCE.restore(); MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); } else if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isMediumSight()) { - MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) - .inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS, BusConst.TYPE_MARKER_BUS_ORDER); + // 2.11.0去掉 +// MogoMarkerManager.getInstance(AbsMogoApplication.getApp()) +// .inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS, BusConst.TYPE_MARKER_BUS_ORDER); MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null); mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long); AiRoadMarker.INSTANCE.clear(); } else { - MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers(); + // 2.11.0去掉 +// MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers(); MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); AiRoadMarker.INSTANCE.restore(); diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java index 7c61e35c1e..d8a1c5c4bc 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java @@ -133,17 +133,20 @@ public class TaxiPassengerBaseFragment extends MvpFragment Date: Tue, 18 Oct 2022 14:13:26 +0800 Subject: [PATCH 042/203] =?UTF-8?q?[V2X][Road]=E8=A7=86=E8=A7=92=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E4=B9=9F=E8=A6=81=E4=BF=9D=E6=8C=81=E7=BB=98=E5=88=B6?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/och/bus/fragment/BaseBusTabFragment.java | 3 --- .../och/taxi/passenger/ui/TaxiPassengerBaseFragment.java | 3 --- .../main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java | 4 ---- .../core/function/hmi/ui/widget/PerspectiveSwitchView.kt | 5 ----- 4 files changed, 15 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java index 78adde0984..4d02c0d64d 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java @@ -140,7 +140,6 @@ public abstract class BaseBusTabFragment if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isLongSight()) { // 2.11.0去掉 // MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers(); - AiRoadMarker.INSTANCE.restore(); MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); } else if (MogoMapUIController.getInstance().getCurrentMapVisualAngle().isMediumSight()) { @@ -149,13 +148,11 @@ public abstract class BaseBusTabFragment // .inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS, BusConst.TYPE_MARKER_BUS_ORDER); MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null); mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_long); - AiRoadMarker.INSTANCE.clear(); } else { // 2.11.0去掉 // MogoMarkerManager.getInstance(AbsMogoApplication.getApp()).visibleAllMarkers(); MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null); mSwitchMapModeImage.setImageResource(R.drawable.bus_switch_map_medium); - AiRoadMarker.INSTANCE.restore(); } } }); diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java index d8a1c5c4bc..4af679e575 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java @@ -137,19 +137,16 @@ public class TaxiPassengerBaseFragment extends MvpFragment Date: Tue, 18 Oct 2022 14:48:47 +0800 Subject: [PATCH 043/203] =?UTF-8?q?[feature]=20taxi=E4=B9=98=E5=AE=A2?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E5=B0=8F=E9=94=AE=E7=9B=98=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../passenger/ui/TaxiPassengerCheckView.kt | 20 ++- .../layout/taxi_p_passenger_check_panel.xml | 132 +++++++++--------- .../src/main/res/values/styles.xml | 2 +- 3 files changed, 85 insertions(+), 69 deletions(-) diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerCheckView.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerCheckView.kt index da793abc1e..68fe7170da 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerCheckView.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerCheckView.kt @@ -103,7 +103,7 @@ class TaxiPassengerCheckView :RelativeLayout, View.OnClickListener { R.id.tv_taxi_passenger_number_second -> {selectIndex(1)} R.id.tv_taxi_passenger_number_third -> {selectIndex(2)} R.id.tv_taxi_passenger_number_fourth -> {selectIndex(3)} - R.id.tv_taxi_passenger_number_submit -> {checkAndCommit()} + R.id.tv_taxi_passenger_number_submit -> {clearNumber()} else -> {} } } @@ -130,9 +130,27 @@ class TaxiPassengerCheckView :RelativeLayout, View.OnClickListener { index++ } changeStyle() + numSelect.forEach { + if(it==null){ + return + } + } + + checkAndCommit() } } + private fun clearNumber(){ + for(i in numSelect.indices){ + numSelect[i] = null + } + numSelectTextView.forEach { + it?.text = "" + } + index = 0 + changeStyle() + } + private fun deleteNumver() { if (index in 0..3) { if(numSelect[index]==null){ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_passenger_check_panel.xml b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_passenger_check_panel.xml index e7dc22f64a..3887d99934 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_passenger_check_panel.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_passenger_check_panel.xml @@ -189,7 +189,7 @@ android:layout_marginTop="@dimen/dp_14" tools:text="蘑菇 3291号为您服务" android:textColor="@color/taxi_p_check_keyboard_samll_mogo_color" - android:textSize="@dimen/dp_24" + android:textSize="24px" app:layout_constraintStart_toStartOf="@+id/tv_small_mogo" app:layout_constraintTop_toBottomOf="@+id/tv_small_mogo" /> @@ -198,12 +198,12 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_84" - android:layout_marginTop="@dimen/dp_129" + android:layout_marginTop="308px" android:text="@string/taxi_p_check_input_phone_tail_title" android:textColor="@color/taxi_p_check_keyboard_samll_mogo_color" - android:textSize="@dimen/sp_36" + android:textSize="@dimen/dp_36" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/tv_taxi_number" /> + app:layout_constraintTop_toTopOf="parent" /> - - + app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_back" + app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_back" /> + app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_zero" + app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_back" /> - - - - + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_seven" /> + + + + + + + + + @@ -340,7 +347,7 @@ - - diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml index e50749e0fd..6776cc12e1 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml @@ -28,7 +28,7 @@ + + + + + \ 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/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index ae03721b01..d405d83176 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -43,6 +43,10 @@ class SOPSettingView @JvmOverloads constructor( } + if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ + tbMarkingObstacles.visibility = View.GONE + } + //引导线动态效果 tbRouteDynamicEffect.isChecked = AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) && !AppIdentityModeUtils.isBus( @@ -154,6 +158,14 @@ class SOPSettingView @JvmOverloads constructor( } } + if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ + tvSpeedThresholdTitle.visibility = View.GONE + ivSpeedReduce.visibility = View.GONE + tvSpeed.visibility = View.GONE + ivSpeedAdd.visibility = View.GONE + btnSpeedSet.visibility = View.GONE + } + } } \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordTypeEntity.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordTypeEntity.kt new file mode 100644 index 0000000000..476972c1e4 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordTypeEntity.kt @@ -0,0 +1,8 @@ +package com.mogo.eagle.core.data.badcase + +/** + * @author XuXinChao + * @description BadCase录制模板实体类 + * @since: 2022/10/25 + */ +data class RecordTypeEntity(var id: Int,var desc: String,var topicsList:ArrayList) \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt index 044b4931c1..8521f85b31 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt @@ -259,10 +259,12 @@ object CallerAutoPilotManager { * @param recordType 0:不需要修改内置类型的topic组合, 1:需要修改内置类型的topic组合 * @param topicsNeedToCache */ - fun getBadCaseConfig(reqType: Int,recordType: Int,topicsNeedToCache: List){ + fun getBadCaseConfig(reqType: Int,recordType: Int,topicsNeedToCache: List): Boolean?{ // 司机屏才能查询数据采集的配置 if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { - providerApi?.getBadCaseConfig(reqType, recordType, topicsNeedToCache) + return providerApi?.getBadCaseConfig(reqType, recordType, topicsNeedToCache) + }else{ + return false } } From e20abe099be7ce9a65a957d551c82c487fb96a13 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Wed, 26 Oct 2022 10:57:20 +0800 Subject: [PATCH 127/203] =?UTF-8?q?[2.12.0]=20bus=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=E5=8F=82=E6=95=B0=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/common/module/utils/CoordinateCalculateRouteUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 2f092a2c47..3ab7e47426 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 @@ -164,7 +164,7 @@ public class CoordinateCalculateRouteUtil { // Logger.d(M_TAXI + "calculateRouteSumLength", "点:"+currentIndex+"-------是最近的点------ "); if (currentIndex == mRoutePoints.size()-1){ latePoints.add(mRoutePoints.get(currentIndex)); - }else { + }else if(currentIndex < mRoutePoints.size()-1){ latePoints.addAll(mRoutePoints.subList(currentIndex,mRoutePoints.size()-1)); } return latePoints; From 9300baf426baed28908e6c7615762f93eafcd250 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Wed, 26 Oct 2022 11:34:02 +0800 Subject: [PATCH 128/203] =?UTF-8?q?[change]=20=E6=9B=B4=E6=96=B0=E8=A1=8C?= =?UTF-8?q?=E7=A8=8B=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/bus/util/BusSendTripInfoManager.kt | 2 +- .../zhidao/adas/client/ui/MainActivity.java | 6 ++- .../autopilot/MoGoAutopilotProvider.kt | 21 ++++++---- .../core/function/hmi/ui/MoGoHmiFragment.kt | 2 +- .../api/autopilot/IMoGoAutopilotProvider.kt | 19 ++++++---- .../call/autopilot/CallerAutoPilotManager.kt | 21 ++++++---- .../src/main/proto/message_pad.proto | 7 ++-- .../zhidao/support/adas/high/AdasChannel.java | 38 ++++++++++++------- .../zhidao/support/adas/high/AdasManager.java | 21 ++++++---- .../support/adas/high/IAdasNetCommApi.java | 15 +++++--- 10 files changed, 97 insertions(+), 55 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt index ebbe1adaee..21927b0403 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt @@ -26,6 +26,6 @@ object BusSendTripInfoManager{ fun sendBusTripInfo(type: Int, lineName: String, stationName: String, isLastStop: Boolean) { d(SceneConstant.M_BUS + "BusSendTripInfoManager", "type: "+ type +", lineName: "+ lineName + ", stationName: "+stationName+", isLastStop: "+isLastStop) - CallerAutoPilotManager.sendTripInfo(type,lineName,stationName,isLastStop) + CallerAutoPilotManager.sendTripInfo(type,lineName,stationName, "", isLastStop) } } diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java index 8bd832812b..5d5984277a 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java @@ -1368,7 +1368,11 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas break; case Constants.TITLE.SEND_TRIP_INFO: //行程信息 - AdasManager.getInstance().sendTripInfoReq(1, "", "", false); + AdasManager.getInstance().sendTripInfoReq(1, "x10", "x11", "x12", false); + AdasManager.getInstance().sendTripInfoReq(2, "x13", "x14", "x15", true); + AdasManager.getInstance().sendTripInfoReq(3, "x16", "x17", "x18", false); + AdasManager.getInstance().sendTripInfoReq(4, "x19", "x20", "x21", true); + AdasManager.getInstance().sendTripInfoReq(5, "x22", "x23", "x24", false); break; } } diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt index c196118cf3..7d61c7c8f0 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/MoGoAutopilotProvider.kt @@ -571,15 +571,20 @@ class MoGoAutopilotProvider : } /** - * 行程信息 - * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 - * @param lineName 路线名, for type 1, 2 - * @param stopName 站点名, for type 3, 4 - * @param isLastStop - * @return + * 发生行程相关 + * type=1或2的时 需要参数 lineName + * type=3或4的时 需要参数 lineName departureStopName arrivalStopName isLastStop + * type=5时 不需要任何参数 + * + * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 + * @param lineName 路线名 + * @param departureStopName 出站站点名 + * @param arrivalStopName 下一站到达站点名 + * @param isLastStop 是否最终站 + * @return boolean */ - override fun sendTripInfo(type: Int, lineName: String, stopName: String, isLastStop: Boolean) { - AdasManager.getInstance().sendTripInfoReq(type, lineName, stopName, isLastStop) + override fun sendTripInfo(type: Int, lineName: String, departureStopName: String,arrivalStopName: String, isLastStop: Boolean) { + AdasManager.getInstance().sendTripInfoReq(type, lineName, departureStopName,arrivalStopName, isLastStop) } /** diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index 7b615a4a4c..75d6ed49bb 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -751,7 +751,7 @@ class MoGoHmiFragment : MvpFragment(), context?.let { it -> SharedPrefsMgr.getInstance(it).getLong("roadwork", 0) } if (currentTime - oldTime!! > 60) { //超过一分钟,才会继续播报重复提醒 context?.let { it -> SharedPrefsMgr.getInstance(it).putLong("roadwork", System.currentTimeMillis() / 1000) } - CallerAutoPilotManager.sendTripInfo(5, "", "", false); + CallerAutoPilotManager.sendTripInfo(5, "", "", "", false); } } diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.kt index 947362f230..88cf35fb5b 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotProvider.kt @@ -264,12 +264,17 @@ interface IMoGoAutopilotProvider : IMoGoFunctionServerProvider { fun sendOperatorSetHorn(value: Double) /** - * 行程信息 - * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 - * @param lineName 路线名, for type 1, 2 - * @param stopName 站点名, for type 3, 4 - * @param isLastStop 是否是最后一站 - * @return + * 发生行程相关 + * type=1或2的时 需要参数 lineName + * type=3或4的时 需要参数 lineName departureStopName arrivalStopName isLastStop + * type=5时 不需要任何参数 + * + * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 + * @param lineName 路线名 + * @param departureStopName 出站站点名 + * @param arrivalStopName 下一站到达站点名 + * @param isLastStop 是否最终站 + * @return boolean */ - fun sendTripInfo(type: Int, lineName: String, stopName: String, isLastStop: Boolean) + fun sendTripInfo(type: Int, lineName: String, departureStopName: String,arrivalStopName: String, isLastStop: Boolean) } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt index 044b4931c1..0671190d67 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotManager.kt @@ -295,15 +295,20 @@ object CallerAutoPilotManager { } /** - * 行程信息 - * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 - * @param lineName 路线名, for type 1, 2 - * @param stopName 站点名, for type 3, 4 - * @param isLastStop 是否终点站 - * @return + * 发生行程相关 + * type=1或2的时 需要参数 lineName + * type=3或4的时 需要参数 lineName departureStopName arrivalStopName isLastStop + * type=5时 不需要任何参数 + * + * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 + * @param lineName 路线名 + * @param departureStopName 出站站点名 + * @param arrivalStopName 下一站到达站点名 + * @param isLastStop 是否最终站 + * @return boolean */ - fun sendTripInfo(type: Int, lineName: String, stopName: String, isLastStop: Boolean) { - providerApi?.sendTripInfo(type, lineName, stopName, isLastStop) + fun sendTripInfo(type: Int, lineName: String, departureStopName: String, arrivalStopName: String, isLastStop: Boolean) { + providerApi?.sendTripInfo(type, lineName, departureStopName, arrivalStopName, isLastStop) } /** diff --git a/libraries/mogo-adas-data/src/main/proto/message_pad.proto b/libraries/mogo-adas-data/src/main/proto/message_pad.proto index f66599735b..8d17379521 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -489,9 +489,10 @@ message SetParamReq message TripInfoEvent { uint32 type = 1; //事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 - string lineName = 2; //路线名, for type 1, 2 - string stopName = 3; //站点名, for type 3, 4 - bool isLastStop = 4; //是否最终站, for type 3, 4 + string lineName = 2; //路线名 + string departureStopName = 3; //出站站点名 + string arrivalStopName = 4; //下一站到达站点名 + bool isLastStop = 5; //下一站到达站是否最终站 } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index a10e71e0d9..e30c0fa60a 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -14,7 +14,6 @@ import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_LINK_LOG_WEB_SO import android.os.SystemClock; import android.text.TextUtils; -import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -1264,22 +1263,35 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec } /** + * 发生行程相关 + * type=1或2的时 需要参数 lineName + * type=3或4的时 需要参数 lineName departureStopName arrivalStopName isLastStop + * type=5时 不需要任何参数 * - * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 - * @param lineName 路线名, for type 1, 2 - * @param stopName 站点名, for type 3, 4 - * @param isLastStop - * @return + * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 + * @param lineName 路线名 + * @param departureStopName 出站站点名 + * @param arrivalStopName 下一站到达站点名 + * @param isLastStop 是否最终站 + * @return boolean */ @Override - public boolean sendTripInfoReq(int type, String lineName, String stopName, boolean isLastStop) { - MessagePad.TripInfoEvent req = MessagePad.TripInfoEvent + public boolean sendTripInfoReq(int type, String lineName, String departureStopName, String arrivalStopName, boolean isLastStop) { + MessagePad.TripInfoEvent.Builder builder = MessagePad.TripInfoEvent .newBuilder() - .setType(type) - .setLineName(lineName) - .setStopName(stopName) - .setIsLastStop(isLastStop) - .build(); + .setType(type); + if (type < 5) { + if (lineName != null) + builder.setLineName(lineName); + if (type == 3 || type == 4) { + if (departureStopName != null) + builder.setDepartureStopName(departureStopName); + if (arrivalStopName != null) + builder.setArrivalStopName(arrivalStopName); + builder.setIsLastStop(isLastStop); + } + } + MessagePad.TripInfoEvent req = builder.build(); return sendPBMessage(MessageType.TYPE_SEND_TRIP_INFO_REQ.typeCode, req.toByteArray()); } diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java index 309cf44151..c6428cf401 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java @@ -654,16 +654,21 @@ public class AdasManager implements IAdasNetCommApi { } /** - * 行程信息 - * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 - * @param lineName 路线名, for type 1, 2 - * @param stopName 站点名, for type 3, 4 - * @param isLastStop 是否终点站 - * @return + * 发生行程相关 + * type=1或2的时 需要参数 lineName + * type=3或4的时 需要参数 lineName departureStopName arrivalStopName isLastStop + * type=5时 不需要任何参数 + * + * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 + * @param lineName 路线名 + * @param departureStopName 出站站点名 + * @param arrivalStopName 下一站到达站点名 + * @param isLastStop 是否最终站 + * @return boolean */ @Override - public boolean sendTripInfoReq(int type, String lineName, String stopName, boolean isLastStop) { - return mChannel != null && mChannel.sendTripInfoReq(type,lineName,stopName,isLastStop); + public boolean sendTripInfoReq(int type, String lineName, String departureStopName, String arrivalStopName, boolean isLastStop) { + return mChannel != null && mChannel.sendTripInfoReq(type, lineName, departureStopName, arrivalStopName, isLastStop); } /** diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java index 76722ecdef..b0bb0c3403 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java @@ -382,13 +382,18 @@ public interface IAdasNetCommApi { /** * 发生行程相关 + * type=1或2的时 需要参数 lineName + * type=3或4的时 需要参数 lineName departureStopName arrivalStopName isLastStop + * type=5时 不需要任何参数 * - * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 - * @param lineName 路线名, for type 1, 2 - * @param stopName 站点名, for type 3, 4 - * @return boolean 是否最终站, for type 3, 4 + * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 + * @param lineName 路线名 + * @param departureStopName 出站站点名 + * @param arrivalStopName 下一站到达站点名 + * @param isLastStop 是否最终站 + * @return boolean */ - boolean sendTripInfoReq(int type, String lineName, String stopName, boolean isLastStop); + boolean sendTripInfoReq(int type, String lineName, String departureStopName, String arrivalStopName, boolean isLastStop); // TODO 需求暂停 待讨论 From 314a0899d605dee876cb876b43a0b1727e8ef67b Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 26 Oct 2022 11:54:11 +0800 Subject: [PATCH 129/203] =?UTF-8?q?[V2X][Road]=E6=96=BD=E5=B7=A5=E5=8C=BA?= =?UTF-8?q?=E5=9F=9F=E6=B7=BB=E5=8A=A0=E5=9B=B4=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scene/road/V2XAiRoadEventMarker.kt | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XAiRoadEventMarker.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XAiRoadEventMarker.kt index fc497bc807..4689c0d8d7 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XAiRoadEventMarker.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XAiRoadEventMarker.kt @@ -1,5 +1,6 @@ package com.mogo.eagle.core.function.v2x.events.scenario.scene.road +import android.graphics.* import android.util.* import com.mogo.cloud.commons.utils.* import com.mogo.eagle.core.data.map.* @@ -14,6 +15,7 @@ import com.mogo.module.common.utils.* import java.util.* import java.util.concurrent.atomic.* import kotlin.Pair +import kotlin.collections.ArrayList object V2XAiRoadEventMarker { @@ -29,6 +31,8 @@ object V2XAiRoadEventMarker { private val distance = AtomicInteger(0) + private val overlayManager by lazy { MogoOverlayManager.getInstance() } + fun drawMarkers(entity: V2XRoadEventEntity): Pair?>? { removeMarkers(current.get()) timerTask.get()?.cancel() @@ -69,7 +73,32 @@ object V2XAiRoadEventMarker { v2xMarker()?.drawableAlarmPOI(context(), entity, null) val l2 = entity.noveltyInfo?.location ?: return null v2xLocation.set(MogoLocation().also { it.longitude = l2.lon; it.latitude = l2.lat; it.bearing = l2.angle.toFloat() }) - current.set(Pair(null, markers)) + + val options = MogoPolylineOptions() + val colors = ArrayList() + colors.add(Color.argb(204, 237, 172, 21)) + colors.add(Color.argb(0, 255, 255, 255)) + options.colorValues(colors) + val points = ArrayList() + + for (p in polygons) { + points.add(MogoLatLng(p.second, p.first)) + } + if (points.size > 2) { + points.add(points[0]) + } + options.points(points); + options.useGradient(true) + options.useFacade(true) + options.setGps(false) + options.width(5f) + options.zIndex(75000f) + options.maxIndex(800000f) + val line = overlayManager.addPolyline(options) + current.set(Pair(line, markers)) + if (line != null) { + line.isVisible = true + } } } } From f33a63cb64fee1041d0d1a2100235b7f204a5f93 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Wed, 26 Oct 2022 12:13:21 +0800 Subject: [PATCH 130/203] =?UTF-8?q?[2.12.0]=20bus=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=E7=BB=99=E5=A4=96=E5=B1=8F=E6=8E=A5=E5=8F=A3=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/bus/model/BusOrderModel.java | 43 ++++++++++++------- .../och/bus/util/BusSendTripInfoManager.kt | 14 +++--- 2 files changed, 36 insertions(+), 21 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index 49a0d83a0e..c8befdfc97 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -481,6 +481,7 @@ public class BusOrderModel { BusSendTripInfoManager.INSTANCE.sendBusTripInfo(BusSendTripInfoManager.END_TRIP , busRoutesResult.getName() ,"" + ,"" ,false); } } @@ -490,16 +491,27 @@ public class BusOrderModel { * 服务端返回的OchBusRoutesResult逻辑, 离开站为当前站, 到达下一站后才会将下一站置为当前站, * 车机端展示是离开当前站,下一站设置为当前站, 所以服务端数据回来要做处理,不能直接渲染 */ - private void leaveStationSuccess(int leaveIndex) { + private void leaveStationSuccess(int leaveIndex,String leaveStation,String nextStation) { + + onStartAutopilot(leaveIndex); + + leaveTTSTips(nextStation); if (busRoutesResult != null){ + boolean isLastStop = false; + if (leaveIndex + 1 == stationList.size() -1){ + isLastStop = true; + } //给bus外屏发送 BusSendTripInfoManager.INSTANCE.sendBusTripInfo(BusSendTripInfoManager.LEAVE_STATION , busRoutesResult.getName() - ,busRoutesResult.getSites().get(leaveIndex).getName() - ,false); + ,leaveStation + ,nextStation + ,isLastStop); } + } + private void onStartAutopilot(int leaveIndex) { //开启自动驾驶 2.10.0: 如果自动驾驶状态下开启, 非自动驾驶状态下不开启,需手动点击自动驾驶按钮开启 isGoingToNextStation = true; if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() @@ -605,6 +617,7 @@ public class BusOrderModel { } int arrivedStationIndex = backgroundCurrentStationIndex + 1; String arriveStation = stationList.get(arrivedStationIndex).getName(); + String departureStopName = stationList.get(backgroundCurrentStationIndex).getName(); CallerLogger.INSTANCE.d(M_BUS + TAG,"arriveSiteStation-currentStationIndex = "+ arrivedStationIndex); BusServiceManager.arriveSiteStation(mContext , @@ -617,11 +630,7 @@ public class BusOrderModel { CallerLogger.INSTANCE.d(M_BUS + TAG,"行程日志-arriveSiteStation success"); queryBusRoutes(); - arriveStationSuccess(arrivedStationIndex); - - ttsTips(String.format(mContext - .getString(R.string.bus_arrived_station_tip), - arriveStation)); + arriveStationSuccess(arrivedStationIndex,departureStopName,arriveStation); //5s轮询核销乘客 startOrStopQueryPassengerWriteOff(true); @@ -642,20 +651,23 @@ public class BusOrderModel { }); } - private void arriveStationSuccess(int arrivedStationIndex) { + private void arriveStationSuccess(int arrivedStationIndex,String departureStopName,String arriveStation) { if (busRoutesResult != null){ - boolean isLastStop; + boolean isLastStop = false; if (arrivedStationIndex == busRoutesResult.getSites().size() - 1 ){ isLastStop = true; - }else { - isLastStop = false; } //给bus外屏发送 BusSendTripInfoManager.INSTANCE.sendBusTripInfo(BusSendTripInfoManager.ARRIVE_STATION , busRoutesResult.getName() - ,busRoutesResult.getSites().get(arrivedStationIndex).getName() + ,departureStopName + ,arriveStation ,isLastStop); } + + ttsTips(String.format(mContext + .getString(R.string.bus_arrived_station_tip), + arriveStation)); } /** @@ -681,8 +693,7 @@ public class BusOrderModel { //需要更改当前站和下一站的状态 然后渲染 startOrStopQueryPassengerWriteOff(false); queryBusRoutes(); - leaveStationSuccess(backgroundCurrentStationIndex); - leaveTTSTips(finalNextStationName); + leaveStationSuccess(backgroundCurrentStationIndex,currentStationName,finalNextStationName); } @Override public void onFail(int code, String failMsg) { @@ -774,7 +785,7 @@ public class BusOrderModel { && !stationList.get(0).isLeaving()){ //默认是第一站到站查询 if (busRoutesResult != null){ // 第一站到站也是行程开始的时候 BusSendTripInfoManager.INSTANCE.sendBusTripInfo(BusSendTripInfoManager.START_TRIP - ,busRoutesResult.getName(),"",false); + ,busRoutesResult.getName(),"","",false); } startOrStopQueryPassengerWriteOff(true); } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt index 21927b0403..45d89d2359 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusSendTripInfoManager.kt @@ -19,13 +19,17 @@ object BusSendTripInfoManager{ * 行程信息 * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 * @param lineName 路线名, for type 1, 2 - * @param stopName 站点名, for type 3, 4 - * @param isLastStop 是否终点站 + * @param departureStopName 出站站点名, for type 3, 4 + * @param arrivalStopName 下一站到达站点名, for type 3, 4 + * @param isLastStop 是否终点站(下一站或者要到达站) * @return */ - fun sendBusTripInfo(type: Int, lineName: String, stationName: String, isLastStop: Boolean) { + fun sendBusTripInfo(type: Int, lineName: String, + departureStopName: String, + arrivalStopName: String, + isLastStop: Boolean) { d(SceneConstant.M_BUS + "BusSendTripInfoManager", "type: "+ type - +", lineName: "+ lineName + ", stationName: "+stationName+", isLastStop: "+isLastStop) - CallerAutoPilotManager.sendTripInfo(type,lineName,stationName, "", isLastStop) + +", lineName: "+ lineName + ", stationName: "+arrivalStopName+", isLastStop: "+isLastStop) + CallerAutoPilotManager.sendTripInfo(type,lineName,departureStopName, arrivalStopName, isLastStop) } } From 5707d28ae91c2d04cad95d7099a15aafb41c105e Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Wed, 26 Oct 2022 14:40:55 +0800 Subject: [PATCH 131/203] =?UTF-8?q?[2.11.0]=20bus=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=E6=98=BE=E7=A4=BA/=E9=9A=90=E8=97=8F=E8=BD=A8?= =?UTF-8?q?=E8=BF=B9=E8=B0=83=E8=AF=95=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/och/bus/fragment/BusFragment.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java index e39b6ade10..2d150eabfc 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java @@ -106,6 +106,14 @@ public class BusFragment extends BaseBusTabFragment showAutopilotBiz(); mSwitchLine.setOnClickListener(this); + + mLineName.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + showHideTestBar(); + return false; + } + }); } @Subscribe(threadMode = ThreadMode.MAIN) From ce216d4a7fc3052237b3a1221d73f83b597d6c6d Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 26 Oct 2022 17:56:56 +0800 Subject: [PATCH 132/203] =?UTF-8?q?[2.12.0-f]=20=20tts=20=E9=83=A8?= =?UTF-8?q?=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/zhjt/dispatch/DispatchDialogManager.java | 2 +- .../core/function/v2x/events/view/CarZegoLiveVideoView.java | 4 ++-- .../src/main/java/com/mogo/module/service/MogoServices.java | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/function-impl/mogo-core-function-dispatch/src/main/java/com/zhjt/dispatch/DispatchDialogManager.java b/core/function-impl/mogo-core-function-dispatch/src/main/java/com/zhjt/dispatch/DispatchDialogManager.java index 67ec158a58..9c7590180b 100644 --- a/core/function-impl/mogo-core-function-dispatch/src/main/java/com/zhjt/dispatch/DispatchDialogManager.java +++ b/core/function-impl/mogo-core-function-dispatch/src/main/java/com/zhjt/dispatch/DispatchDialogManager.java @@ -93,7 +93,7 @@ public class DispatchDialogManager { } private void voice() { - AIAssist.getInstance(mContext).speakTTSVoice("请立即停车!请立即停车!"); + AIAssist.getInstance(mContext).speakTTSVoiceWithLevel("请立即停车!请立即停车!",AIAssist.LEVEL0); } public void releaseDialog() { diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/view/CarZegoLiveVideoView.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/view/CarZegoLiveVideoView.java index bfb7a8f057..da71a17e9f 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/view/CarZegoLiveVideoView.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/view/CarZegoLiveVideoView.java @@ -82,12 +82,12 @@ public class CarZegoLiveVideoView extends RoundLayout { */ public void startLive() { if (mSurfaceView != null) { - AIAssist.getInstance(AbsMogoApplication.getApp()).speakTTSVoice(AbsMogoApplication.getApp().getString(R.string.v2x_voice_see_front_car_live)); + //AIAssist.getInstance(AbsMogoApplication.getApp()).speakTTSVoice(AbsMogoApplication.getApp().getString(R.string.v2x_voice_see_front_car_live)); playLiveVideo(); mClLoadError.setVisibility(GONE); CallerLogger.INSTANCE.d(M_V2X + TAG, "startLive"); } else { - AIAssist.getInstance(AbsMogoApplication.getApp()).speakTTSVoice(AbsMogoApplication.getApp().getString(R.string.v2x_voice_see_front_car_live_error)); + //AIAssist.getInstance(AbsMogoApplication.getApp()).speakTTSVoice(AbsMogoApplication.getApp().getString(R.string.v2x_voice_see_front_car_live_error)); mLoading.setVisibility(GONE); mClLoadError.setVisibility(VISIBLE); CallerLogger.INSTANCE.d(M_V2X + TAG, "没有找到可直播车机"); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index 30af912b2b..5c61fa611e 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -158,7 +158,7 @@ public class MogoServices implements IMogoMapListener, if (!mLastStatusIsVr) { MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode(TAG, true); if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_LENOVO) { - AIAssist.getInstance(mContext).speakTTSVoice("已开启鹰眼模式"); + //AIAssist.getInstance(mContext).speakTTSVoice("已开启鹰眼模式"); } mLastStatusIsVr = true; } @@ -167,7 +167,7 @@ public class MogoServices implements IMogoMapListener, mLastStatusIsVr = false; MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode(TAG, false); if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_LENOVO) { - AIAssist.getInstance(mContext).speakTTSVoice("已退出鹰眼模式"); + //AIAssist.getInstance(mContext).speakTTSVoice("已退出鹰眼模式"); } } } From 8f876d4b0a3375fd1987a76045480a5d85824ca8 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Wed, 26 Oct 2022 18:15:15 +0800 Subject: [PATCH 133/203] =?UTF-8?q?BadCase=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E5=BD=95=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/BadCaseConfigView.kt | 23 +++++-- .../badcase/biz/CaseTopicListDialog.java | 69 ++++++++++++++++--- .../badcase/biz/adapter/TopicListAdapter.kt | 26 +++++-- .../main/res/layout/layout_badcase_config.xml | 1 + .../core/data/badcase/RecordTypeEntity.kt | 2 +- .../eagle/core/data/badcase/TopicEntity.kt | 3 + 6 files changed, 104 insertions(+), 20 deletions(-) create mode 100644 core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/TopicEntity.kt diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt index 21cc2a280a..e437709f0d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt @@ -8,6 +8,7 @@ import android.view.LayoutInflater import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.GridLayoutManager import com.mogo.eagle.core.data.badcase.RecordTypeEntity +import com.mogo.eagle.core.data.badcase.TopicEntity import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager @@ -156,6 +157,20 @@ internal class BadCaseConfigView @JvmOverloads constructor( val gridLayoutManager = GridLayoutManager(context,2) rvTemplate.layoutManager = gridLayoutManager rvTemplate.adapter = recordTemplateAdapter +// val list = ArrayList() +// list.add(TopicEntity("/v2n/aicloud/rsm_info",false,false)) +// list.add(TopicEntity("/autopilot_info/report_msg_error",false,false)) +// list.add(TopicEntity("/v2n/aicloud/rsi_info",false,false)) +// list.add(TopicEntity("/record_cache/task",false,true)) +// list.add(TopicEntity("/sensor/rainmode",false,true)) +// list.add(TopicEntity("/record_cache/master/task",false,true)) +// list.add(TopicEntity("/telematics/trip_info_event",false,true)) +// list.add(TopicEntity("/telematics/light",false,true)) +// list.add(TopicEntity("/guardian/aicloud_state",false,true)) +// recordTypesList.add(RecordTypeEntity(1,"红路灯",list)) +// recordTemplateAdapter?.setData(recordTypesList) +// recordTemplateAdapter?.notifyDataSetChanged() + } fun setClickListener(clickListener: ClickListener) { @@ -163,9 +178,7 @@ internal class BadCaseConfigView @JvmOverloads constructor( } private fun showCaseTopicListDialog(recordTypeEntity: RecordTypeEntity){ - if(caseTopicListDialog == null){ - caseTopicListDialog = CaseTopicListDialog(context) - } + caseTopicListDialog = CaseTopicListDialog(context) caseTopicListDialog?.setData(recordTypeEntity) caseTopicListDialog?.show() } @@ -175,9 +188,9 @@ internal class BadCaseConfigView @JvmOverloads constructor( ThreadUtils.runOnUiThread { config.recordTypesList.iterator().forEach { if (it.id != 99){ - val topicList = ArrayList() + val topicList = ArrayList() it.topicsList.iterator().forEach { - topicList.add(it) + topicList.add(TopicEntity(it,true,false)) } recordTypesList.add(RecordTypeEntity(it.id,it.desc,topicList)) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java index d8bef0bbcc..125724cc83 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java @@ -17,10 +17,12 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.mogo.eagle.core.data.badcase.RecordTypeEntity; +import com.mogo.eagle.core.data.badcase.TopicEntity; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; import com.mogo.eagle.core.utilcode.util.ThreadUtils; +import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.zhjt.mogo_core_function_devatools.R; import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.TopicListAdapter; @@ -46,8 +48,10 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL private RecyclerView rvTopicList; private TopicListAdapter topicListAdapter; private String searchStr; - private List allTopicList = new ArrayList<>(); - + private List allTopicList = new ArrayList<>(); + private RecordTypeEntity recordType; + private List addTopicList = new ArrayList<>(); + private List searchTopicList = new ArrayList<>(); public CaseTopicListDialog(@NonNull Context context) { super(context, R.style.bad_case_dialog); @@ -61,6 +65,20 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL CallerAutopilotRecordListenerManager.INSTANCE.addListener(TAG, this); init(); initEvent(); + //获取所有Topic + CallerAutoPilotManager.INSTANCE.getBadCaseConfig(1, 0, new ArrayList<>()); + if(recordType!=null){ + tvCaseName.setText(recordType.getDesc()); + if(recordType.getTopicsList().size()>0){ + topicListAdapter.setData(recordType.getTopicsList()); + topicListAdapter.notifyDataSetChanged(); + } + } + } + + @Override + public void onAttachedToWindow() { + super.onAttachedToWindow(); } @Override @@ -70,12 +88,8 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL } public void setData(RecordTypeEntity recordTypeEntity){ - tvCaseName.setText(recordTypeEntity.getDesc()); - //获取所有Topic - CallerAutoPilotManager.INSTANCE.getBadCaseConfig(1, 0, new ArrayList<>()); - if(recordTypeEntity.getTopicsList().size()>0){ - topicListAdapter.setData(recordTypeEntity.getTopicsList()); - topicListAdapter.notifyDataSetChanged(); + if(recordTypeEntity!=null){ + recordType = recordTypeEntity; } } @@ -90,6 +104,13 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); rvTopicList.setLayoutManager(linearLayoutManager); topicListAdapter = new TopicListAdapter(); + topicListAdapter.setListener((topicName, clicked) -> { + if(clicked){ + addTopicList.add(topicName); + }else{ + addTopicList.remove(topicName); + } + }); rvTopicList.setAdapter(topicListAdapter); } @@ -113,7 +134,16 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL } else { ivSearch.setImageDrawable(getContext().getDrawable(R.drawable.icon_bad_case_search)); } - //TODO + if(searchStr!=null && searchStr.length()>0){ + searchTopicList.clear(); + for(int index=0;index0){ etSearch.setText(""); ivSearch.setImageDrawable(getContext().getDrawable(R.drawable.icon_bad_case_search)); + topicListAdapter.setData(recordType.getTopicsList()); + topicListAdapter.notifyDataSetChanged(); + } + }); + tvSave.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if(recordType!=null){ + Boolean success=CallerAutoPilotManager.INSTANCE.getBadCaseConfig(2,recordType.getId(),addTopicList); + if(Boolean.TRUE.equals(success)){ + ToastUtils.showShort("Topic设置成功"); + dismiss(); + }else{ + ToastUtils.showShort("Topic设置失败"); + } + } + + } }); @@ -135,8 +183,9 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL ThreadUtils.runOnUiThread(() -> { if(config.getAllTopicsCount()>0){ for(int index=0;index() { - private var data:List? = null + private var data:List? = null + private var topicClickListener: TopicClickListener? = null - fun setData( data: List?){ + fun setData( data: List?){ this.data = data } + fun setListener(listener: TopicClickListener){ + topicClickListener = listener + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TopicListHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.item_topic_list, parent, false) @@ -27,8 +33,16 @@ class TopicListAdapter: RecyclerView.Adapter() } override fun onBindViewHolder(holder: TopicListHolder, position: Int) { - data?.let{ - holder.topic_check_box.text = it[position] + data?.let{topicList-> + holder.topic_check_box.text = topicList[position].topicName + holder.topic_check_box.setOnCheckedChangeListener(null) + holder.topic_check_box.isChecked = topicList[position].topicStatus + holder.topic_check_box.tag = topicList + holder.topic_check_box.isClickable = topicList[position].topicCanClick + holder.topic_check_box.setOnCheckedChangeListener { _, b -> + topicList[position].topicStatus = b + topicClickListener?.onClick(topicList[position].topicName,b) + } } } @@ -38,4 +52,8 @@ class TopicListAdapter: RecyclerView.Adapter() var topic_check_box: CheckBox = itemView.findViewById(R.id.topic_check_box); } + interface TopicClickListener{ + fun onClick(topicName: String,clicked: Boolean) + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml index f317a80347..3c9e609e2d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml @@ -317,6 +317,7 @@ app:layout_constraintTop_toBottomOf="@id/tvRecordTemplate" android:background="@drawable/template_list_bg" android:layout_marginTop="@dimen/dp_50" + android:paddingBottom="20dp" /> ) \ No newline at end of file +data class RecordTypeEntity(var id: Int,var desc: String,var topicsList:ArrayList) \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/TopicEntity.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/TopicEntity.kt new file mode 100644 index 0000000000..db985c1003 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/TopicEntity.kt @@ -0,0 +1,3 @@ +package com.mogo.eagle.core.data.badcase + +data class TopicEntity(var topicName: String,var topicStatus: Boolean,var topicCanClick: Boolean) \ No newline at end of file From 6a0b659de7253ce853dbd6a0c697d7a6c2adac83 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 20 Oct 2022 15:02:46 +0800 Subject: [PATCH 134/203] .. wait to test of fun --- .../funcconfig/FuncConfigConst.kt | 2 ++ .../function/map/identify/TrackerSourceHelper.kt | 7 ++++--- .../core/function/map/identify/WarningHelper.kt | 15 ++++++++++----- .../core/data/deva/bizconfig/FuncBizConfig.kt | 1 + 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigConst.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigConst.kt index 9b2fd420b0..a00da213a2 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigConst.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigConst.kt @@ -21,6 +21,7 @@ import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_LIMIT import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_LTA import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_OPT_LINE import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_PNC_ACTIONS +import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_PNC_WARNING import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_RAIN_MODE import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_RTS import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_SLW @@ -90,6 +91,7 @@ class FuncConfigConst { foundationSubList.add(SubBiz(BIZ_BYPASS, lock = false, state = true, dependNode = "", data = "")) foundationSubList.add(SubBiz(BIZ_AUTOPILOT_LANE_SELECTION, lock = false, state = true, dependNode = "", data = "")) foundationSubList.add(SubBiz(BIZ_PNC_ACTIONS, lock = false, state = true, dependNode = "", data = "")) + foundationSubList.add(SubBiz(BIZ_PNC_WARNING, lock = false, state = true, dependNode = "", data = "")) businessList.add(Business(FOUNDATION,foundationSubList)) return FuncConfig(0, AppUtils.getAppVersionCode(), getChannelCode(), getEnv(), businessList) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackerSourceHelper.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackerSourceHelper.kt index fa8072b1a5..0b80a57e4a 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackerSourceHelper.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/TrackerSourceHelper.kt @@ -59,9 +59,10 @@ object TrackerSourceHelper { } // pnc预警 - val pncColor = WarningHelper.getPncColor(data.uuid.toString()) - if (pncColor.isNotBlank()) { - color = pncColor + WarningHelper.getPncColor(data.uuid.toString()){ + if (it.isNotBlank()) { + color = it + } } return color } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/WarningHelper.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/WarningHelper.kt index fe6285a7f1..b9a5307175 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/WarningHelper.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/WarningHelper.kt @@ -3,10 +3,14 @@ package com.mogo.eagle.core.function.map.identify import android.annotation.SuppressLint import android.util.Log import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig +import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_PNC_WARNING +import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.FOUNDATION import com.mogo.eagle.core.data.traffic.TrafficData import com.mogo.eagle.core.data.traffic.threatLevelColor import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getCurWgs84SatelliteTime +import com.zhjt.service_biz.BizConfig import mogo.telematics.pad.MessagePad import mogo.telematics.pad.MessagePad.PlanningObject import java.util.concurrent.ConcurrentHashMap @@ -111,30 +115,31 @@ object WarningHelper { return "" } - fun getPncColor(uuid: String): String { + @BizConfig(FOUNDATION,"",BIZ_PNC_WARNING) + fun getPncColor(uuid: String, color:(String) -> Unit) { if (FunctionBuildConfig.isBeautyMode) { // 判断物体是否有预警信息 if (pncWarningBeautyTrafficData.containsKey(uuid)) { val planningTrack = pncWarningBeautyTrafficData[uuid] if (planningTrack != null && !timeOut(planningTrack.time)) { Log.i("EmArrow0926","pnc color uuid : $uuid") - return planningTrack.color + color.invoke(planningTrack.color) } else { pncWarningBeautyTrafficData.remove(uuid) } } - return "" + return color.invoke("") } else { // 判断物体是否有预警信息 if (pncWarningOriginTrafficData.containsKey(uuid)) { val planningTrack = pncWarningOriginTrafficData[uuid] if (planningTrack != null && !timeOut(planningTrack.time)) { - return planningTrack.color + color.invoke(planningTrack.color) } else { pncWarningOriginTrafficData.remove(uuid) } } - return "" + return color.invoke("") } } diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/bizconfig/FuncBizConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/bizconfig/FuncBizConfig.kt index 096e6923ed..1c714dcc59 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/bizconfig/FuncBizConfig.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/bizconfig/FuncBizConfig.kt @@ -41,6 +41,7 @@ class FuncBizConfig { const val BIZ_BYPASS = "BIZ_BYPASS" // 绕障 todo 暂未实现 const val BIZ_AUTOPILOT_LANE_SELECTION = "BIZ_AUTOPILOT_LANE_SELECTION" // 择机变道 todo 暂未实现 const val BIZ_PNC_ACTIONS = "BIZ_PNC_ACTIONS" // PNC行为决策 + const val BIZ_PNC_WARNING = "BIZ_PNC_WARNING" // PNC障碍物颜色 } } \ No newline at end of file From 0ffda8fb65cf47035d57678334f6cabd9e0a2332 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Mon, 24 Oct 2022 11:01:41 +0800 Subject: [PATCH 135/203] wait to test of fun config which adding the msgReceive --- .../funcconfig/FuncConfigCenter.kt | 10 ++++++++-- .../core/function/map/identify/WarningHelper.kt | 12 ++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt index 3e585ace26..4feb330166 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt @@ -1,6 +1,7 @@ package com.zhjt.mogo_core_function_devatools.funcconfig import android.content.Context +import android.util.Log import com.mogo.aicloud.services.socket.IMogoOnMessageListener import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager import com.mogo.commons.AbsMogoApplication @@ -56,7 +57,7 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo refreshConfig(GsonUtils.fromJson(bizJson, FuncConfig::class.java)) }) } - }else{ + } else { ToastUtils.showLong("未获取到域控mac信息") } } @@ -66,8 +67,9 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo } override fun onMsgReceived(obj: FuncConfig?) { + Log.d(TAG, "onMsgReceived Business : $obj") obj?.let { - refreshConfig(it) + invokeUpdate(it) } } @@ -81,6 +83,10 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo ) private fun refreshConfig(funcConfig: FuncConfig) { BizManager.updateBizConfigData(funcConfig) + invokeUpdate(funcConfig) + } + + private fun invokeUpdate(funcConfig: FuncConfig) { funcConfig.business.forEach { business -> CallerDevaToolsFuncConfigListenerManager.invokeDevaToolsFuncConfigBizUpdate( business.biz.uppercase(), diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/WarningHelper.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/WarningHelper.kt index b9a5307175..3539215978 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/WarningHelper.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/identify/WarningHelper.kt @@ -1,9 +1,7 @@ package com.mogo.eagle.core.function.map.identify import android.annotation.SuppressLint -import android.util.Log import com.mogo.eagle.core.data.config.FunctionBuildConfig -import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_PNC_WARNING import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.FOUNDATION import com.mogo.eagle.core.data.traffic.TrafficData @@ -101,7 +99,6 @@ object WarningHelper { return } if (exist) { - Log.i("EmArrow0926","obu color uuid : ${obuTrafficData.uuid}") obuWarningTrafficData[obuTrafficData.uuid!!] = obuTrafficData } else { obuWarningTrafficData.remove(obuTrafficData.uuid) @@ -115,20 +112,19 @@ object WarningHelper { return "" } - @BizConfig(FOUNDATION,"",BIZ_PNC_WARNING) - fun getPncColor(uuid: String, color:(String) -> Unit) { + @BizConfig(FOUNDATION,"", BIZ_PNC_WARNING) + fun getPncColor(uuid: String, color:((String) -> Unit)) { if (FunctionBuildConfig.isBeautyMode) { // 判断物体是否有预警信息 if (pncWarningBeautyTrafficData.containsKey(uuid)) { val planningTrack = pncWarningBeautyTrafficData[uuid] if (planningTrack != null && !timeOut(planningTrack.time)) { - Log.i("EmArrow0926","pnc color uuid : $uuid") color.invoke(planningTrack.color) } else { pncWarningBeautyTrafficData.remove(uuid) } } - return color.invoke("") + color.invoke("") } else { // 判断物体是否有预警信息 if (pncWarningOriginTrafficData.containsKey(uuid)) { @@ -139,7 +135,7 @@ object WarningHelper { pncWarningOriginTrafficData.remove(uuid) } } - return color.invoke("") + color.invoke("") } } From 16c7bd9755d82414b7a396403bf3236972ec7f00 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Wed, 26 Oct 2022 14:13:44 +0800 Subject: [PATCH 136/203] add func of statusbar and func config wait to update --- .../module/biz/ui/TaxiLoginDialogFragment.kt | 95 ++++++------ .../taxi/passenger/ui/video/VideoActivity.kt | 64 +++++---- .../funcconfig/FuncConfigCenter.kt | 2 +- .../network/FuncConfigNetWorkModel.kt | 10 +- .../core/function/hmi/ui/MoGoHmiFragment.kt | 18 +++ .../hmi/ui/setting/DebugSettingView.kt | 2 + .../hmi/ui/widget/BatteryGroupView.kt | 92 ++++++++++++ .../function/hmi/ui/widget/BatteryView.kt | 135 ++++++++++++++++++ .../function/hmi/ui/widget/BlueToothView.kt | 23 +++ .../function/hmi/ui/widget/DemoModeView.kt | 23 +++ .../function/hmi/ui/widget/StatusBarView.kt | 89 ++++++++++++ .../function/hmi/ui/widget/WifiStateView.kt | 92 ++++++++++++ .../function/main/MainLauncherActivity.java | 8 +- .../src/main/res/drawable/battery_charge.png | Bin 0 -> 1254 bytes .../src/main/res/drawable/blue_tooth.png | Bin 0 -> 1146 bytes .../src/main/res/drawable/demo_mode.png | Bin 0 -> 1214 bytes .../res/drawable/wifi_light_state_close.png | Bin 0 -> 1562 bytes .../res/drawable/wifi_light_state_five.png | Bin 0 -> 1178 bytes .../res/drawable/wifi_light_state_four.png | Bin 0 -> 1203 bytes .../res/drawable/wifi_light_state_one.png | Bin 0 -> 1244 bytes .../res/drawable/wifi_light_state_three.png | Bin 0 -> 1219 bytes .../res/drawable/wifi_light_state_two.png | Bin 0 -> 1230 bytes .../src/main/res/layout/fragment_hmi.xml | 10 +- .../main/res/layout/view_battery_group.xml | 21 +++ .../src/main/res/layout/view_blue_tooth.xml | 14 ++ .../src/main/res/layout/view_demo_mode.xml | 14 ++ .../src/main/res/layout/view_status_bar.xml | 56 ++++++++ .../main/res/values-xhdpi-2560x1440/color.xml | 2 + .../src/main/res/values/color.xml | 3 + .../src/main/res/values/strings.xml | 2 +- .../api/hmi/warning/IMoGoWaringProvider.kt | 12 ++ .../function/call/hmi/CallerHmiManager.kt | 25 +++- .../eagle/core/utilcode/util/BarUtils.java | 9 ++ .../com/mogo/commons/mvp/MvpActivity.java | 3 +- 34 files changed, 730 insertions(+), 94 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryGroupView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/DemoModeView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/WifiStateView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/blue_tooth.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/demo_mode.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_close.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_five.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_four.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_one.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_three.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_two.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_demo_mode.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_status_bar.xml diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt index 3ad8a1cfd2..e40bf14a9c 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt @@ -1,5 +1,6 @@ package com.mogo.och.common.module.biz.ui +import android.annotation.SuppressLint import android.content.DialogInterface import android.graphics.Rect import android.os.Bundle @@ -20,10 +21,10 @@ import com.alibaba.android.arouter.launcher.ARouter import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.debug.DebugConfig import com.mogo.commons.mvp.MvpDialogFragment +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager 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.BarUtils import com.mogo.eagle.core.utilcode.util.KeyboardUtils import com.mogo.och.common.module.R import com.mogo.och.common.module.biz.constant.OchCommonConst @@ -35,7 +36,8 @@ import com.mogo.och.common.module.biz.provider.LoginService * @author: yangyakun * @date: 2022/8/15 */ -class TaxiLoginDialogFragment : MvpDialogFragment(), +class TaxiLoginDialogFragment : + MvpDialogFragment(), DialogInterface.OnKeyListener { lateinit var clMain: ConstraintLayout @@ -54,14 +56,6 @@ class TaxiLoginDialogFragment : MvpDialogFragment - BarUtils.setNavBarVisibility(window,false) - } - } - } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -88,11 +82,8 @@ class TaxiLoginDialogFragment : MvpDialogFragment - BarUtils.setStatusBarColor( - it, - ContextCompat.getColor(contextIn, R.color.taxi_4D000000) - ) + context?.let { _ -> + CallerHmiManager.setStatusBarDarkOrLight(false) } } } @@ -108,23 +99,22 @@ class TaxiLoginDialogFragment : MvpDialogFragment { - closeSoftInput() - } + mRootView.setOnTouchListener { _, event -> + when (event?.action) { + MotionEvent.ACTION_DOWN -> { + closeSoftInput() } - return false } - }) + false + } acbtnLogin.onClick { val phone = aceLoginPhoneValue.text.toString() val code = acetPhoneCodeValue.text.toString() - mPresenter?.gotoLogin(phone,code) + mPresenter?.gotoLogin(phone, code) } actvWelcomeLoginTitle.setOnClickListener { continuousClick() @@ -148,7 +138,7 @@ class TaxiLoginDialogFragment : MvpDialogFragment - if(itEditable.isNotEmpty()){ + it?.let { itEditable -> + if (itEditable.isNotEmpty()) { inputPhoneNormal() } } @@ -175,28 +165,29 @@ class TaxiLoginDialogFragment : MvpDialogFragment= (SystemClock.uptimeMillis() - DURATION)) { mHits = LongArray(COUNTS) //重新初始化数组 - mPresenter?.gotoLogin("13288888888","8888") + mPresenter?.gotoLogin("13288888888", "8888") } } @@ -234,6 +238,7 @@ class TaxiLoginDialogFragment : MvpDialogFragment() - companion object{ + companion object { const val VIDEOTYPE = "VIDEOTYPE" const val VIDEOTYPE_CONSULT = 0 const val VIDEOTYPE_MOIES = 1 @@ -68,10 +63,10 @@ class VideoActivity : AppCompatActivity() { const val EVENT_FINISH = 0 - fun startActivity(context:Context,videoType:Int,sumDis:Int){ + fun startActivity(context: Context, videoType: Int, sumDis: Int) { val intent = Intent(context, VideoActivity::class.java) intent.putExtra(VIDEOTYPE, videoType) - intent.putExtra(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS,sumDis) + intent.putExtra(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS, sumDis) context.startActivity(intent) } } @@ -114,7 +109,7 @@ class VideoActivity : AppCompatActivity() { LeftMenuOpen.registerCallback(LeftMenuOpen.callBack) } - private fun initConsultData(){ + private fun initConsultData() { arrayListOf.clear() arrayListOf.add( TaxiPassengerVideoPlay( @@ -238,7 +233,7 @@ class VideoActivity : AppCompatActivity() { } indicatorView.onPageScrolled(currentIndex, fl, 0) } - val recyclerVideoAdapter = RecyclerVideoAdapter(this, arrayListOf,rvVideoPlaylist) + val recyclerVideoAdapter = RecyclerVideoAdapter(this, arrayListOf, rvVideoPlaylist) recyclerVideoAdapter.setOnThumbImageClilckListener { val (_: Int, player) = getPlayer(carouselLayoutManager) if (player is ConsultVideoPlayer) { @@ -280,24 +275,31 @@ class VideoActivity : AppCompatActivity() { override fun onAttachedToWindow() { super.onAttachedToWindow() - when (videotype){ + when (videotype) { VIDEOTYPE_CONSULT -> { - OverlayLeftViewUtils.showOverlayView(this,isOpen = false, checkIndex = OverlayLeftViewUtils.CONSULT) + OverlayLeftViewUtils.showOverlayView( + this, + isOpen = false, + checkIndex = OverlayLeftViewUtils.CONSULT + ) } VIDEOTYPE_MOIES -> { - OverlayLeftViewUtils.showOverlayView(this,isOpen = false, checkIndex = OverlayLeftViewUtils.MOVIE) + OverlayLeftViewUtils.showOverlayView( + this, + isOpen = false, + checkIndex = OverlayLeftViewUtils.MOVIE + ) } } val sumDis = intent.getIntExtra(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS, 0) - FloatingDistanceInfoUtils.showOverlayView(this,sumDis=sumDis) + FloatingDistanceInfoUtils.showOverlayView(this, sumDis = sumDis) } override fun onResume() { super.onResume() - BarUtils.setNavBarVisibility(window,false) val carouselLayoutManager = rvVideoPlaylist?.layoutManager as CarouselLayoutManager val (centerItemPosition: Int, player) = getPlayer(carouselLayoutManager) - if(centerItemPosition<0){ + if (centerItemPosition < 0) { setBackageAndPlayNext(arrayListOf[0]) } player?.let { @@ -325,12 +327,20 @@ class VideoActivity : AppCompatActivity() { override fun onError(e: Throwable?) {} override fun onNext(t: Long?) { if (!OverlayLeftViewUtils.getStatus()) { - when (videotype){ + when (videotype) { VIDEOTYPE_CONSULT -> { - OverlayLeftViewUtils.showOverlayView(this@VideoActivity,isOpen = false, checkIndex = OverlayLeftViewUtils.CONSULT) + OverlayLeftViewUtils.showOverlayView( + this@VideoActivity, + isOpen = false, + checkIndex = OverlayLeftViewUtils.CONSULT + ) } VIDEOTYPE_MOIES -> { - OverlayLeftViewUtils.showOverlayView(this@VideoActivity,isOpen = false, checkIndex = OverlayLeftViewUtils.MOVIE) + OverlayLeftViewUtils.showOverlayView( + this@VideoActivity, + isOpen = false, + checkIndex = OverlayLeftViewUtils.MOVIE + ) } } } @@ -356,7 +366,7 @@ class VideoActivity : AppCompatActivity() { } @Subscribe(threadMode = ThreadMode.MAIN) - fun finishActivity(event: FinishActivity){ + fun finishActivity(event: FinishActivity) { CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "finishActivity(event)") cancleSubscribe() val intent = Intent() @@ -379,21 +389,21 @@ class VideoActivity : AppCompatActivity() { cancleSubscribe() } - private fun cancleSubscribe(){ + private fun cancleSubscribe() { subscribe?.let { - if(!it.isUnsubscribed){ + if (!it.isUnsubscribed) { it.unsubscribe() } } } private fun releaseOnNewInstance() { - if (rvVideoPlaylist!=null&&rvVideoPlaylist?.layoutManager != null) { + if (rvVideoPlaylist != null && rvVideoPlaylist?.layoutManager != null) { val carouselLayoutManager = rvVideoPlaylist?.layoutManager as CarouselLayoutManager val (_: Int, player) = getPlayer(carouselLayoutManager) player?.let { - player.currentPlayer.release() - player.onVideoReset() + player.currentPlayer.release() + player.onVideoReset() } } FullVideoUtils.dismissOverlayView(true) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt index 4feb330166..7a68a09b7c 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt @@ -82,11 +82,11 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo clientPkFileName = "sn" ) private fun refreshConfig(funcConfig: FuncConfig) { - BizManager.updateBizConfigData(funcConfig) invokeUpdate(funcConfig) } private fun invokeUpdate(funcConfig: FuncConfig) { + BizManager.updateBizConfigData(funcConfig) funcConfig.business.forEach { business -> CallerDevaToolsFuncConfigListenerManager.invokeDevaToolsFuncConfigBizUpdate( business.biz.uppercase(), diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt index 84f786e521..25644cdc03 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt @@ -34,9 +34,13 @@ class FuncConfigNetWorkModel { if (error == null) { error = onError } - map["sn"] = MoGoAiCloudClientConfig.getInstance().sn - map["mac"] = mac - map["channelVersion"] = FuncConfigConst.getChannelCode() + //todo test +// map["sn"] = MoGoAiCloudClientConfig.getInstance().sn + map["sn"] = "X20202203105S688HZ" +// map["mac"] = DeviceUtils.getMacAddress() + map["mac"] = "48:b0:2d:3a:bc:78" +// map["channelVersion"] = FuncConfigConst.getChannelCode() + map["channelVersion"] = 1 } loader { apiCall { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index 79d4d8520d..f055703288 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -11,6 +11,7 @@ import android.text.TextUtils import android.transition.* import android.view.Gravity import android.view.View +import android.view.ViewGroup import android.view.WindowManager import android.view.WindowManager.LayoutParams import android.view.animation.* @@ -82,6 +83,7 @@ import com.mogo.eagle.core.function.hmi.ui.setting.SOPSettingView import com.mogo.eagle.core.function.hmi.ui.tools.AdUpgradeDialog import com.mogo.eagle.core.function.hmi.ui.tools.AutoPilotAndCheckView import com.mogo.eagle.core.function.hmi.ui.tools.MaskView +import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView import com.mogo.eagle.core.function.hmi.ui.widget.V2XNotificationView import com.mogo.eagle.core.utilcode.kotlin.* import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils @@ -192,6 +194,14 @@ class MoGoHmiFragment : MvpFragment(), override fun initViews() { initViewShowWithConfig() + + //设置StatusBar初始状态 + if (FunctionBuildConfig.isDemoMode) { + viewStatusBar.updateRightView(true, "demoMode", DemoModeView(requireContext())) + } else { + viewStatusBar.updateRightView(false, "demoMode", DemoModeView(requireContext())) + } + ivCameraIcon?.setOnClickListener { if (cameraViewFloat == null) { showCameraList(CallerMonitorManager.getCameraList()) @@ -413,6 +423,14 @@ class MoGoHmiFragment : MvpFragment(), busOperationStatus?.showBusOperation() } + override fun setStatusBarDarkOrLight(light: Boolean) { + viewStatusBar.setStatusBarDarkOrLight(light) + } + + override fun updateStatusBarRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) { + viewStatusBar.updateRightView(insert, tag, viewGroup) + } + /** * 设置 红绿灯 代理View */ 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 9b8c6d67f0..4a20ce0775 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 @@ -62,6 +62,7 @@ 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.upgrade.UpgradeListAdapter +import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel @@ -573,6 +574,7 @@ class DebugSettingView @JvmOverloads constructor( // 演示模式 tbIsDemoMode.setOnCheckedChangeListener { _, isChecked -> + CallerHmiManager.updateStatusBarRightView(isChecked,"demoMode", DemoModeView(context)) CallerAutoPilotManager.setDemoMode(isChecked) if (!isChecked) { //关闭美化模式时,通知工控机 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryGroupView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryGroupView.kt new file mode 100644 index 0000000000..95c72f7406 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryGroupView.kt @@ -0,0 +1,92 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.os.BatteryManager +import android.os.Handler +import android.os.Message +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.View +import android.widget.ImageView +import android.widget.LinearLayout +import com.mogo.eagle.core.function.hmi.R +import java.lang.ref.WeakReference + +class BatteryGroupView : LinearLayout { + + constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 + ) : super(context, attrs, defStyleAttr) { + } + + private var batteryHandler: BatteryHandler = BatteryHandler(this) + private var view: View = + LayoutInflater.from(context).inflate(R.layout.view_battery_group, this, true) + private var batteryView: BatteryView = (view as BatteryGroupView).findViewById(R.id.viewBattery) + private var ivBatteryCharge: ImageView = (view as BatteryGroupView).findViewById(R.id.ivBatteryCharge) + + private val batteryStateReceiver: BroadcastReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + when (intent.action) { + Intent.ACTION_BATTERY_CHANGED -> { + val level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0) + val scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 0) + val charge = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1) + val percentage = (level * 100) / scale + val message = Message.obtain() + message.what = 0 + message.arg1 = percentage + message.arg2 = charge + batteryHandler.sendMessage(message) + } + } + } + } + + companion object { + class BatteryHandler(batteryGroupView: BatteryGroupView) : Handler() { + + //虚引用 + private var stateViewWeakReference: WeakReference? = null + + init { + stateViewWeakReference = WeakReference(batteryGroupView) + } + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val batteryGroupView = stateViewWeakReference?.get() + batteryGroupView?.let { + if (msg.what == 0) { + it.batteryView.setPower(msg.arg1) + val isCharging = msg.arg2 == BatteryManager.BATTERY_STATUS_CHARGING || + msg.arg2 == BatteryManager.BATTERY_STATUS_FULL + it.batteryView.setCharging(isCharging) + if (isCharging) { + it.ivBatteryCharge.visibility = View.VISIBLE + } else { + it.ivBatteryCharge.visibility = View.GONE + } + } + } + } + } + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + val intentFilter = IntentFilter() + intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED) + context.registerReceiver(batteryStateReceiver, intentFilter) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + context.unregisterReceiver(batteryStateReceiver) + } +} \ 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/BatteryView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryView.kt new file mode 100644 index 0000000000..0afbea73f0 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BatteryView.kt @@ -0,0 +1,135 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.graphics.RectF +import android.util.AttributeSet +import android.view.View +import com.mogo.eagle.core.function.hmi.R +import kotlin.math.abs + + +class BatteryView : View { + + private val radius = context.resources.getDimension(R.dimen.dp_4) // 圆角角度 + private val border = context.resources.getDimension(R.dimen.dp_3) // 外边缘宽度 + private val margin = context.resources.getDimension(R.dimen.dp_6) // 边框与内部电量距离 + private val width = context.resources.getDimension(R.dimen.dp_57) // 电池宽度 + private val height = context.resources.getDimension(R.dimen.dp_28) // 电池高度 + private val headWidth = context.resources.getDimension(R.dimen.dp_3) // 电池头宽度 + private val headHeight = context.resources.getDimension(R.dimen.dp_8) // 电池头高度 + private val headRadius = context.resources.getDimension(R.dimen.dp_1) // 电池头圆角角度 + private val batteryNumSize = context.resources.getDimension(R.dimen.dp_20) // 电量显示文字大小 + private val batteryColor = context.resources.getColor(R.color.color_7FECECEC) // 电量内部颜色 + private val powerColor = Color.WHITE + + //默认满电 + private var mPower = 100 + + //是否充电 + private var mIsCharging = false + + constructor( + context: Context, + attrs: AttributeSet? = null + ) : super(context, attrs, 0) { + + } + + constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 + ) : super(context, attrs, defStyleAttr) { + } + + @SuppressLint("NewApi") + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + setMeasuredDimension(width.toInt(), height.toInt()) + } + + @SuppressLint("DrawAllocation") + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + //电池头 + val paint = Paint() + paint.style = Paint.Style.FILL + paint.strokeWidth = 0f + paint.isAntiAlias = true + paint.color = powerColor + + val rectHead = + RectF(width - headWidth, (height - headHeight) / 2, width, (height + headHeight) / 2) + canvas.drawRoundRect(rectHead, headRadius, headRadius, paint) + + //边框 + paint.strokeWidth = border + paint.style = Paint.Style.STROKE + val rectF = + RectF(radius / 2, radius / 2, width - headWidth - radius / 2, height - radius / 2) + canvas.drawRoundRect(rectF, radius, radius, paint) + + //文字画笔 + val textPaint = Paint() + textPaint.color = powerColor + textPaint.isAntiAlias = true + textPaint.textSize = batteryNumSize + textPaint.textAlign = Paint.Align.CENTER + //画数字 + val fontMetrics = textPaint.fontMetrics + canvas.drawText(mPower.toString(), rectF.centerX(), abs(fontMetrics.top), textPaint) + + //电池电量 + val powerValues = mPower / 100.0f + val paintPower = Paint(paint) + paintPower.style = Paint.Style.FILL + + //低电量 + val lowerPaint = Paint(paint) + lowerPaint.style = Paint.Style.FILL + lowerPaint.color = powerColor + if (mPower < 20) { + lowerPaint.color = Color.RED + } else { + lowerPaint.color = batteryColor + } + + //画电量 + if (powerValues != 0f) { + val right = (width - margin - headWidth) * powerValues + val bottom = height - margin + val rect = RectF(margin, margin, right, bottom) + //画矩形 + canvas.drawRoundRect(rect, radius, radius, lowerPaint) + } + } + + /** + * 设置当前电量 + */ + fun setPower(power: Int) { + if (this.mPower < 0) { + this.mPower = 0 + } + if (this.mPower > 100) { + this.mPower = 100 + } + this.mPower = power + if(isAttachedToWindow){ + invalidate() + } + } + + /** + * 是否充电中 + */ + fun setCharging(charging: Boolean) { + this.mIsCharging = charging + invalidate() + } + +} diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt new file mode 100644 index 0000000000..85649ffa64 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt @@ -0,0 +1,23 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.RelativeLayout +import com.mogo.eagle.core.function.hmi.R + +/** + * 魔戒蓝牙控件 + * 放置于StatusBar右侧位置 + */ +class BlueToothView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : RelativeLayout(context, attrs, defStyleAttr) { + + init { + LayoutInflater.from(context).inflate(R.layout.view_blue_tooth, this, true) + } + +} \ 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/DemoModeView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/DemoModeView.kt new file mode 100644 index 0000000000..f0a51a62f8 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/DemoModeView.kt @@ -0,0 +1,23 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.RelativeLayout +import com.mogo.eagle.core.function.hmi.R + +/** + * 演示模式控件 + * 放置于StatusBar右侧位置 + */ +class DemoModeView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : RelativeLayout(context, attrs, defStyleAttr) { + + init { + LayoutInflater.from(context).inflate(R.layout.view_demo_mode, this, true) + } + +} \ 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/StatusBarView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt new file mode 100644 index 0000000000..ef49f6f3d0 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt @@ -0,0 +1,89 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.ViewGroup +import android.widget.RelativeLayout +import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener +import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.util.BarUtils +import com.mogo.eagle.core.utilcode.util.ScreenUtils +import kotlinx.android.synthetic.main.view_status_bar.view.* + +class StatusBarView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : RelativeLayout(context, attrs, defStyleAttr), IMoGoSkinModeChangeListener { + + companion object { + const val TAG = "StatusBarView" + } + + init { + LayoutInflater.from(context).inflate(R.layout.view_status_bar, this, true) + } + + private val rightViewList = mutableListOf() + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + val layoutParamsLeft = + LayoutParams(ScreenUtils.getScreenWidth() / 3, BarUtils.getStatusBarHeight()) + viewStatusBarLeft.layoutParams = layoutParamsLeft + val layoutParamsRight = + LayoutParams(ScreenUtils.getScreenWidth() / 3 * 2, BarUtils.getStatusBarHeight()) + layoutParamsRight.addRule(ALIGN_PARENT_END) + layoutParamsRight.addRule(CENTER_HORIZONTAL) + layoutParamsRight.addRule(CENTER_IN_PARENT) + layoutParamsRight.marginEnd = context.resources.getDimension(R.dimen.dp_44).toInt() + viewStatusBarRight.layoutParams = layoutParamsRight + viewStatusBarRight.addView(BatteryGroupView(this.context)) + + // 添加换肤监听 + CallerSkinModeListenerManager.addListener(TAG, this) + } + + override fun onSkinModeChange(skinMode: Int) { + when (skinMode) { + 0 -> setStatusBarDarkOrLight(false) + 1 -> setStatusBarDarkOrLight(true) + } + } + + fun setStatusBarDarkOrLight(light: Boolean) { + if (light) { + setTextColor(resources.getColor(R.color.color_2C2E30)) + } else { + setTextColor(resources.getColor(R.color.color_FFFFFF)) + } + } + + fun updateRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) { + if (insert) { + rightViewList.add(0, tag) + viewStatusBarRight.addView(viewGroup, 0) + } else { + rightViewList.forEachIndexed { index, s -> + if (s == tag) { + rightViewList.removeAt(index) + viewStatusBarRight.removeViewAt(index) + } + } + } + } + + private fun setTextColor(color: Int) { + viewTextClock.setTextColor(color) + viewStatusBarTag.setTextColor(color) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerSkinModeListenerManager.removeListener(TAG) + } + +} + diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/WifiStateView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/WifiStateView.kt new file mode 100644 index 0000000000..5e45d6c065 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/WifiStateView.kt @@ -0,0 +1,92 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.net.wifi.WifiManager +import android.os.Handler +import android.os.Message +import android.util.AttributeSet +import androidx.appcompat.widget.AppCompatImageView +import com.mogo.eagle.core.function.hmi.R +import java.lang.ref.WeakReference + + +class WifiStateView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : AppCompatImageView(context, attrs, defStyleAttr) { + + companion object { + const val TAG = "WifiStateView" + + class WifiHandler(wifiStateView: WifiStateView) : Handler() { + + //虚引用 + private var stateViewWeakReference: WeakReference? = null + + init { + stateViewWeakReference = WeakReference(wifiStateView) + } + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val wifiStateView = stateViewWeakReference?.get() + wifiStateView?.let { + when (msg.what) { + -1 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_close) + 0 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_one) + 1 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_two) + 2 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_three) + 3 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_four) + 4 -> wifiStateView.setImageResource(R.drawable.wifi_light_state_five) + } + } + } + } + } + + private var wifiManager: WifiManager? = null + private var wifiHandler: WifiHandler? = null + + init { + wifiManager = + context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager? + wifiHandler = WifiHandler(this) + } + + private val wifiStateReceiver: BroadcastReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + when (intent.action) { + WifiManager.WIFI_STATE_CHANGED_ACTION, WifiManager.RSSI_CHANGED_ACTION -> { + if (wifiManager!!.wifiState == WifiManager.WIFI_STATE_DISABLED + || wifiManager!!.wifiState ==WifiManager.WIFI_STATE_DISABLING) { + wifiHandler?.sendEmptyMessage(-1) + return + } + val wifiInfo = wifiManager!!.connectionInfo + val level = WifiManager.calculateSignalLevel(wifiInfo.rssi, 5) + wifiHandler?.sendEmptyMessage(level) + } + } + } + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + val intentFilter = IntentFilter() + //Wifi连接状态变化 + intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION) + //Wifi信号强度变化 + intentFilter.addAction(WifiManager.RSSI_CHANGED_ACTION) + context.registerReceiver(wifiStateReceiver, intentFilter) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + wifiHandler?.removeCallbacksAndMessages(null) + context.unregisterReceiver(wifiStateReceiver) + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java index 0b7bcbd9a4..5e4b73b40e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java @@ -27,6 +27,7 @@ import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider; import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager; import com.mogo.eagle.core.function.hmi.R; import com.mogo.eagle.core.function.main.moujie.BluetoothMonitorReceiver; @@ -34,7 +35,6 @@ import com.mogo.eagle.core.function.main.moujie.ConnectBluetoothEvent; import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; -import com.mogo.eagle.core.utilcode.util.BarUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.service.intent.IMogoIntentListener; @@ -336,11 +336,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis @Override public void onSkinModeChange(int skinMode) { - if (skinMode == 0) { - BarUtils.setStatusBarLightMode(this, false); - } else { - BarUtils.setStatusBarLightMode(this, true); - } + } private synchronized void sendAcc(boolean isSend, double acc) { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge.png new file mode 100644 index 0000000000000000000000000000000000000000..2c46f99c9146c77e21c8d7f92646445dfd26cda3 GIT binary patch literal 1254 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR918lVFJ1ONa40RR91Bme*a08-en?EnA-P)S5VR7ef2RclOBXBegz3XG}{ zD2k$7qRvdP6GdC`0!(oW{LrxkjK*8kXL9hYlSnX5CQR5fYZ`rt->$_+?)a(e-a-&r4ziy|M@KEo*KC)!cbHYF>oxy*RR|&r zLHH*|NAjopdreKP5hS2pp;llR1dO!iGtoN&`D_r}2b5oIJ=$FPyp}}AY~I|N6ni0& zNJd;Pk3p0WM1oOy4~RJU^_i-B4=dDerfJGRt3u%$iM8PQQ0_a0AQFJQUxC=1+$-e; zH-1}5g>Fk+r8Z$M0VXd55jhBM1BurQf7j*Y{;&pfmZhd>dR&gl2|h8WJcKS10QgTSj!D5TC>ZMfsw## z;N3U=O0Y;o)&qybVUA76lD4$Ahx1l3oZ;c2U5ge(b}(G5X;@fD|M!=^i-+^4F(HW1 z_DeB3waL4C4912SR>dS1a$ni-tE#&ORcO#sly8=TI|!2^K#`V_-R2Dudajb9{0f)I zNu1GLI-?|Dj;`$Q5}8yQlDu}A0c#JlSgiift6$Fd2=F-aFMg|2$1O-gs1P_oDH7~x z4#pZ_204Vx)@L`)ir)Baz6m z1(-g18xWy0q3_=&w+Q8owKp7ZFfSkn*YFUb@a3DD|DEvW$3#c8{&MI1Oyu?hY2fT; zaw>B`&cz!D{O>2C7y&-AMa9 zyBdBw&#$95BCTwp!E!`ny^Xs+&BBM5bTyk|lDwUGZ zMu^mrUyQwLM^QvlTi+z1Hh!wV*?>PPwegn_DW;fM6D5Q@6!6y{m-Jz(;AJ4rfyfoH z0;2Np>UILoj!ttWjj&sQ;1@y^DPIyuLx2W=tO)Su%kzp4Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91HlPCl1ONa40RR91HUIzs0P{mGqyPW|e5nMr6AK@^5(VoW3k z6hz{JdT==i1{J+19t00TLE}YFD!73M%}wy)auFAZdJ!)oih>vsj2r4f1<{Dc4I}}P z1cJeUptz72m+^Z^deT!}J=057&!r#y(^dbgdhdVLsh&ztCX-sa0_h5*E0C_h=n7;< zoAz3{Ty8PZXOCoP%Vx7Z_Oc}ynZnKh$3D?mYCC;}?F5?mb#M6Xy~2o+OlApjo)K@pp?KlKka#k93LNXF(O4`Be)r>E<~;#@($Lr!xRu4? zS@Dtdu13rsxSf6p@u`KKfU5(yfzAdYH~Yo2!jo`1=+vo!+pkLs?9D(@j!8@R{^N>}}*r3+}0YN8m*6U-e?1Pt@IlJJl zAf{U5^P_rkbon^v!q@uv?9hmx2;2`6x_Ogh(*()P)%T9!TLpT7&SZh)37ou&%FJ{Q4j!LJg9$rEsU;^LwvMC=A22ic%@n1SW}&MH+b z0yhCU?T59?ObBxfD<#F8A7MMd->?S=#EEn_dWo(b%f_8D?{d}T2rAmD&b8Jzr!KlDC?tEVtY2`^_% z)dw|X1AK0bAuak;5+51X;Q9Orv%rZ=TNU5z_~eSe5y)LqP5!j^xyM>>lklXfVx-^6 zb(UKI{ZfU=8Po5i(v5G5JD!y`N#sPK3WXZ7Ha*uCeHX zkjQUk<&D#L-DG%eVenhQ51_N_kVfAQ>$K%LlC1&X6(#b*r7}NAY2Z@}I|tVS{LISx zd_|VGi<(719uQ*3K+)q6ezh=}r!)C-Z}MhLkU_uA63u7YND>jnE(I) M07*qoM6N<$g8LEu^Z)<= literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/demo_mode.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/demo_mode.png new file mode 100644 index 0000000000000000000000000000000000000000..380b81e9426aeffc2050a2f5a5608dea1e06b8e4 GIT binary patch literal 1214 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~yTfmH9gA{&t)?32Bz@p*l;uw;_ z`gW#ohhLz?@#k|j<&Aw8Wq2)e>(b0p+B}1mH&sk5NQzr?Y2>DGu~TQ-T4zl?>1KB6 zj31||UC^>Ayxd-&W@@x0xjp&%yTAJDp67d?-}yfGwd`gK|G&GR|NLctzVgoJd(F$1 zX%sS{!<)hysk6JIPe1(>6j5~`Yy;OCmPz~%Y%3VvP4`-wIgdN~h7b1*_I1tg75qgO zM?Br4v*Yf?5Kb93{ev;CJKG%(-&?ec&0RV6fgZ=n@Hyv&Gh~GdORru%vY&5RW3$5Q zi;{1|4>G(ccztTx51{t&Bb67&UGt}{n;~1 zi^c6O--Y~!b9d%eFin|V@L`3()vPzqLKx<(*ZA#jsXKr9^I2yfF+3`AHRb+XE!|ji zV&xBJ+X}G{`HboZT3MpHS-uKU1i&G~BS)$sjk)+)+;A49*S$usVARR1UV>zhejw!-YG z2d})h{^ceQtWrumOliTj)41eFfjXFjsu829$rX|^Zcsh4^;S~+SrWG!Db zuk7}WUDs6Zd(NDcUfUky)uQ*%YyB;X>a^B&a z&OLvZtz5opv-G1CpBxuNH%z^*AsgD*$vFRZOP)ab!F4QAr>A)pM6i@HT-_qH=k1TG z)te4i+}yNjAN!lgRVNNUkJ~%v3)j`^&>-FgQDJ)FBHD`%+~SjqF1vOs$6HLl%v5BT z-@|#LM^pGXs<{i;SIOPloOSLd+rz4a^U_&Ag+BaaczBz69z%G_?Z??{^X*PO+P3J{ z>srg!Hv-=oYm3*!IC91ne#mFIwPb_h6_&c#hetA9O@BL8w$_T=;J$O#_QQ=Uaf6I1`0O*QlQ8u#H`*~B%a2W^?AE!ntl zdD5ha??FA4({^8;H=mIssO<1`^>bP0l+XkKcTFoN literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_close.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_close.png new file mode 100644 index 0000000000000000000000000000000000000000..7090814f91ce6649a352f4fc0eaa05ab50000a08 GIT binary patch literal 1562 zcmV+#2IcvQP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91HlPCl1ONa40RR91HUIzs0P{mGqyPW~gh@m}RA>e5m<@9jMG%IG3Pe$f zqVgqzmPkny;{X2-pnxby5=aCDiSYvkgbux$SM|-zPESw2Jw4sK zw`Z-=}fDlRnpENT9#Ncc%r}*$|B1&4x?xJFq0Uix{w(2BQ-_ zZGT3zfu0-a|9cXBoq?$waNZZe8D^4q<^r4l<$(FaG^gy(kp4i|3VZYl(_X+d7UKma zI6+D#fFIb{d*b}3G@rrV9r+=wOe78yNhB3RJ0gH?mW+<;@EZHrA4_9_VWV`a z*VV`~jS-yTDLsY-Cy-u*E_Ik}OipIqwuEC?{>(oA(Y8`6FgEpc7U4)5%P3t}BXjT4 zoP{H^{!jmV=1l+-5jxc+KutZ(iuWNcDDOg*47YPAO~n=21;*dP z5kj7r;5@;p2;GAE3jR2w=nDJXZko#hJAm*vaCQDSp8XP_LLmkyZ^(wc;05=DIiH<^ z55bc6QP9ema5j-^&3Nc=?MXNygKnZ*ti2k8avO$}pQS#^^peH~3Fu}Fs%;@(u47(w zOTiX%o~Dlau)3}o8^U*B4Q&i#bi|#G&{W<;(wHT)z}ygJdP;A5zSZbI?2MEBlTJQYf+P1;PYOaOHQLdmLinK3KjxQUbCLvfPZDzFmMT*t04SIc_HBw~$WsS`~~jkRqg+5Fr4#6pe6 zvf&G%$1@Xx1|5M7LGPP&EQ)lsj%Dj3>vUjk51)6TiGfv>V}$>8cq-LA-N0Kg1)0glw|y3^>frp=6U#`M|%qcqx65TxWOtizUo+B;to7~MzLSi>aChRMj6 z=c#EXz_bEzzW@0i=;@d+#(uuD=51sJ7vFuJriD0LKA7)BGXv&s1-OS8Cb&*ioVE^$ z({`;Xeyn5KHkc`}wvF26N~dj!kgQvRtJTOf+u>*Gjf5*)k;w|yzU`alN+g9io=3?3LfFnD0_z-#J(XYL>gYEc=J?f?J) M07*qoM6N<$f@3P$zW@LL literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_five.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_five.png new file mode 100644 index 0000000000000000000000000000000000000000..8f48f53e24fcc314fdb94dc526461e5837378c20 GIT binary patch literal 1178 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~yTfmH9gA{&t)?32Bz{29`;uw;_ z`gTTihhLz`@#lv$9^3WYUchPSq{1I}XX%8%Jpoda?;PUx{M_&;HEU9lCcpBcDNADH zrWifTG)c)a$!k4n;4C*IW|`#n^Y70uKUco57KnE*+xzOeW%}B^*KcLdt^IcM`I9FR z8$~xD!4n~@MVCc2M7W+l-Yw#Gz(J!$?g!7@4@TzZ-?fi#@i--^s0jExzrGX&V z0dFUXTMJoVJv1|!_(s3)rsyQirq}}cAjSN`Am+=PCrLJXKVT_w-nE49IJeOxg+{hR zhA$d@PRcSJtz~DnPqxrsUZuWJ#XsLkh2WX0{tsKeP6&8!m>DFHskt-^J5;Ud{`y-a7v%F%H zSa&F3``OaFN4L(?%q_d$`0hx=g(;W2q_qFJ-U|7&ruOlSIK`D;7rcC_x>jP#+gbdT zaf=U{acw)~`{DC)@%lAPRjr)M)DP5MIGi`>xyE(Y&muRw>So1lUEq33#XlfxsbBwt zJxq5xUpC(7Hhf;YCh%dh+6%s&PZ_%oZv3U5s(ygaJ*3wD<>E`>8H@iu2$5i~{VSDx zp8ff~Ev>JW_ShVOlS`ndNrgie|lnu6IAQEm%(<*pajN`j&dOs*UM>94q`M za5#pu+;XmKU+`&0+c96=Un?X88I21MDr^aU+2Zn)O_n`1X-#9Y!2;U{aUnvU9~9>v zW955u+29)YrRA^Vg_$p=MaG|ARy*&Xg=x#%d`mtC-P_&=Ur%1%C0=Cu?G5+Isg0j+ zublll%YaX=R!*l~t>DzhH|dY17#GiG{k7|=m)Xr!v$#usoN_EDB|WOxB$-uLrzC7v zd{@p_E7th@oA%AZoBujP8mxnOZr1Co8da3b3tjy7g5l5aPk)b9GN(M5-&t*=xm&IA zaDvd^ZQdt;Yo#{#9v5uBem?B2#+*gFx2eh5|4)sc6i{^i@Jvn3zgq8Qh5X(b9lyF) jS$THr+6H8}nQ1?x-dCn=KbPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91HlPCl1ONa40RR91HUIzs0P{mGqyPW}9Z5t%RA>e5m`g|$aU928EzMpU zmT6`7Kq`6@L0zn%2r4Qlf=<;X=+LEz=ukl?Z$S}ss6&?^I`lepi%v#RL1C#Sl$gCB zwDOUf+UEYw^Mj)0e zN8{t;vRw|7p(M^2&r$dXgRxjl?>SLqiIK<@BAf-4Fawm7pZy`)^h0l)KO{TOd)D%E zoYn!!Xg21?Q8L+T7z5u03HD`UEThEYvr~uTd61Ef06}XOKarrGp%p495}JgEMKB*i z^`(8LQequpXE1PZBsCic4Nw*!LhT(br2){p4htO=#h`0xNT**^YJc?Ld@x{IpH{$}IP&Ku9W*UL?59l(r#k6Yg4e;Ipu%@UhvPgw*&6*Ni0-8~i z+VK6&RG~6sVi=xAos!aCa7xRe9izXU6;b~t4kfh|YCLSeCl0L`mvqXRq-9_lDUFbf zX$cxdFtWK7cEMuMl^_(H21S7+c+UF+?0x3x66GTlwqdh}=Q42aKhJ~5IAijFF>Pk; zuY^9}NXySC+V7#_5a_8dkf73u_X6(0EqoYf0Q*W}H6*r%4k|6j@LwtztAQ<`^==e( zo8cKmp+1aU1Z@SEC@+UiunIgU#nsVNfC1y_M0q{jfn2B?qesCNJY{9zT#~NPT^(I5 z3gR?LOCUsDFFsx0rr(Z4HfKf21l|o(Gxe>;XfHN^| z_|s6DtygTU0nLz8FDacDhACQVRZ0@op-7GA27 z4RZN{qciXp>P>zqUjQfJ2@F80G~=Cc4R(OO4_%^M%f21FzB*ieA}PRO;-XC2qpS+9 z!UzP_I~wjz8cBJf+~p&sIzO)jaR7QDQ$3>N%=|b0_UNUNrG?aq<=YNEx!xW z*8zd(FYDK!OV=rVEH{Jdzkml@=L!WKn`S}$(5ZfVw z5nx8Dq44)o1i5Gr>GSA3bb&Ms&9E^F`vtQ>0++y~ehMSGuL_bJ!Iy%*C{m?a+h34? zqI60UO73AiGbObzO8W)16;JLi&%Ff=#5%VlU`N1?fE@ul0(J!K2;^i0{sXg6YEN05 R*irxh002ovPDHLkV1g*L2etqJ literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_one.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_one.png new file mode 100644 index 0000000000000000000000000000000000000000..1b06cb152d92ea6f92024de0e23fb55c2e1caf2b GIT binary patch literal 1244 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~yTfmH9gA{&t)?32Bz~biV;uw;_ z`gTUP{}l(3Hpct~iyo+Qv9a)GHM#x&@Bg9un77Nvwhl*SM;8~zqt6v{ncn(rPu(tc zcFvQfZ_a#~Q+Yl&ZTotC&rc3W@WA{}4)xJ(Wo2boY+3pmoF(f%{^6`^IQ#Ek-T!>o zDmNab<~Ic*Jq?KpEB$`$-<-x=b7}+MP1%3%qpT#?nJ`E$E>vtz*)>&HWRJMOpG&=) zm<3NSGH!fWSfC(lYL+V!?|dOWIdh99hwQOKB0E^5_MZOL+;wE0d2hnovyQK1*wPMc zl(ODZ=CgGDf&aN;W?hU4%9dPx=@ut9PmU<>PGD@>D&^;%Bv525B*h%M>DZF58@oQ9 zUDaCs{6hZRd2G*(GxXKWX1SMs2^TuNVs4(;5vk_4zhxs}%u!ycYnbZDnv*t(^Zc|49xqg-FP!dG zQMNqmeXYb}&n#Pq@|7x1-LkKzcpd%j)V?t@$+qHm#vCK52e#G=bN}j|mrQWJrTyyb zvA}34SD&>K-_zC?x-R0sIpeLB)}CbB%D$T~x2=*n5cR!;w}wBr)u_Eb7yU*`=E$#WZp^ltDNmSJkCT{FOKSxe8p+#;hS*a@UG~a z4vnVKyMG_$F?-vkYCB<*riYH&JmLkHEXBKI0 z;Q2Ez{MCe>|FIKgPAm?qHr``AYvP)}eo;5Jv3HyZ46s=dZG3yP6!%*LZ~g2O(k=0! zYvk9*|6{oIDqk&Ecy?RMk*-Hezv(^MWw*Yo>+|{C<;R%Xy24c#KjU3&8Z;@}G)d~j zt5fo=e}XhM>sNpH^!t7HlLI;*w#`?mR6v3c>^~pK|M4VabJ8KZC!mtW)78&qol`;+ E0KA$oMgRZ+ literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_three.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_three.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee2dcd8fe3ae1032da9d67c058768b34ed2b05b GIT binary patch literal 1219 zcmV;!1U&nRP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91HlPCl1ONa40RR91HUIzs0P{mGqyPW}ElET{RA>e5m`RTfQ5c4`d7kH? zV~8mT7FbJ&g#?M;VPj{(!m8KA(l4-MZ)r))W6;_h(&nkro=55?x2w*nTXiRCsW*Am ztuuV%`My(a%$N#Q1gZ#B5vU?iMWBj66@hL=pr=!chKGlhJq1pH;}ZVn`3wGpUwe9b z{M`|>%`qIAjD>UHY&ZkzR3rJ{S@RjbOZX9Ihxy$y8Y#|IfHP)eQ9_+*6+aO0O5)(B zR)jU>SdyI;C|(Mil2O2Dv-lVXeU?Tkqi|?E8dkz(u+(1GHwztmP&R{wjl-$=C|C<8 z6|m6S@hE+P{LmHz)OJE+}GiiMcqWo*# z!umPnTc@+&f`sae!A5hVi2Pi~P->^!1Y?cC_Wc|_E24~bxj>)Uv>Ek6b%$W~Z=>&R zXtFjIbqpmQm8~##^qw)-j{-YcTY+w~rh}`Y84ckMx?hGS91A*z;Azb1l(mqC$KftQ zKcpwx{f-?vwFWMZ$i9aio|p{mav^vOLXk2;3iAjCkwkkolXIbR%(wxP?z5SgWuFG; zE%Ltc%z*JB2Jawqkmq`suD@vG31&+PEEnFnJ53+`p`BYXp2 zqCK)z0Ffwj`GQF$DLUn)_@l#DQsfRR#wf-+!@9nIr1Gc#F!z>GeD1L(`Nb#zT( z&Jyt|xfyecxp0j+Q3JvzBOr5B9A}LVnWc8aqxuM%!4VljuNfO+JX#JKlbbOYgn)2s zXftedWgFfAV|&f6^&;P=BhJ`gB$2ls ztxf+bh{^Nf_focz6h=%~PyojCGU444f(|{z0Ha(AiIc0?WKDlbqupzN5LLz z(rkFS+YqA1inZFb4laShY+cFQ^LJG{{y}*!+zIWB88E&a9)TC(7g&$qy!68}a4+=x zFayTbu?yO0x(5`dzXHtWJa`%o!J@du!u=u38PDhlt?TF*MjVFkV6(Wu#&%rt?ei0Z zjzW)EtGI>$|I49elx`krjTquRbQLa5&+%?Iy9Awo0sY?Vg?r#a7{W0cMPF#5>ti^# z5x#~seB(zS3>we)Shx>fhV?krb>kZ;#JX*85Z;Bg>mYX<>vZr06lY<}Cn#58vy&LM z9r~G63hdbp|9uB6W%d8Qn2aoh-Mwr(6;vD<2am%6D1N|8a7U+fc111@oP;5KX0R>y zRaYEIE5Z1Q&@YO5n6*RcwWIDGCv@(7;+akz9Cc2_3{IRo$MZmJO*LLcpo%~hfhq!3 h1gZ#B5g5G@_ybB>*V8jxGR^=1002ovPDHLkV1miB6T<)i literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_two.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/wifi_light_state_two.png new file mode 100644 index 0000000000000000000000000000000000000000..6f88fb83073288be6af941aaed6e90bd0a12c993 GIT binary patch literal 1230 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~yTfmH9gA{&t)?32Bz+&O);uw;_ z`gVF|zHgvN+tq;Ji?h4~mUsy4`yu_qdEXD~eIMm(RNFL6LqokfHnxdf|7`MHW$*Jh zweKv;9VYLcbiMHVhHF*VZ)Lx|YnnZ22?sL#vzCL0_f){@t3lt>HZZO^{bBZd{SU%5 z(o#~N{xeV9C)j*K%|?cKaf0-O5cR+I5t|w8QhxB<6#M@^(n@lj34`S3jrz?gRa0F> z_J|4mxzxRBT}SFo%a(`C3$$fT=a_Y$SA4O3qe&5$)9Z}}jC@UQ)sgqtdb}yT%yX@b zFKD-+0jJru4;OBI)Tm|scRww0aRhgc%Hag>Ho<*!kL;SwYAmqkYJrtd^MrFA88RU! z-PP9if0y_lwzc4?%&)bVWfT0_-X1;TR=mFNpI4H^*2{C*HXcj(UB~+Dl|*vv(uDIl zw|e-PbK8%+u|IHc_k|QYG1WG~{!^9$)>Xx4&L$l2yB2E)Ibcc8gi|(6jwct{ zo_gZ9K+ZU?q2+guTH4L^2P@n6y|3{;^h2mQ_(je6?Db(47SSdeKCXMs=?vhPi^t@rg;hF zT5po??Q}e4R>O7V+pO5vt~EMtb2g@)RLZxFn*A?S;PUgM@0aE%uhcb6b!4?Dp27Kk z+60dmntT#Z-6l=6Ii;3urDAvX-GbdALJN=fm0EcntzCHfMskwvk6#%zDJBQ(tQY3~ zRlV<-;2fp->g&_iHFzFk@}> z8_7F?F=mJDCBA!94~JVvG4-9JjUcES~OY#-B zp@;0DhUum2H#IP2Z!7!WEtzvm)VoR{HF!dV&z|;@8&-z1ug(8H?f5p0f1wX;EraJ| z{MsEad3oVyh4O1@39rAM4d122(N?DVe69sk(Z^FW&eebU^p@LD_Q1{DnwkZ-rrG+L zwR)Z8kW0MCGK2l!-0)Wudj3aGlsU0E?6%~$o>Z0W_nzGBvW!NX#DA=c|I0M7^a0ll z)>BG5IQ7 + + diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml new file mode 100644 index 0000000000..4789ca1988 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml new file mode 100644 index 0000000000..e5e6fcb799 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_demo_mode.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_demo_mode.xml new file mode 100644 index 0000000000..81ffb29e9e --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_demo_mode.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_status_bar.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_status_bar.xml new file mode 100644 index 0000000000..57fd8a6b0a --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_status_bar.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values-xhdpi-2560x1440/color.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values-xhdpi-2560x1440/color.xml index b9cfaf3e10..34334da834 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values-xhdpi-2560x1440/color.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values-xhdpi-2560x1440/color.xml @@ -9,4 +9,6 @@ #FF343C63 #FF282F62 #FFFFFF + #2C2E30 + #D4D8DC \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml index b458be2e4f..fb22d27937 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/color.xml @@ -18,6 +18,9 @@ #FF0006 #0099dd #FFFFFF + #2C2E30 + #D4D8DC + #7FECECEC #FF999900 #FFCC0000 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml index 69abd2557a..90c260be7e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml @@ -52,5 +52,5 @@ 是否修改车机绑定? 是否绑定车机? - + 蘑菇星云 diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt index da734fb58f..2ab37413c9 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt @@ -1,6 +1,7 @@ package com.mogo.eagle.core.function.api.hmi.warning import android.view.View +import android.view.ViewGroup import com.mogo.eagle.core.data.bindingcar.IPCUpgradeStateInfo import com.mogo.eagle.core.data.enums.WarningDirectionEnum import com.mogo.eagle.core.data.map.Infrastructure @@ -263,4 +264,15 @@ interface IMoGoWaringProvider : IMoGoHmiViewProxy { fun showVideoDialog(infList: List) fun setBusOperationView(view:IOchBusView) + + /** + * 设置状态栏暗夜或明亮模式 + * 默认 light + */ + fun setStatusBarDarkOrLight(light: Boolean) + + /** + * 更新(添加/删除)状态栏右侧元素 + */ + fun updateStatusBarRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt index c4d6fc3a55..20a408e34c 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt @@ -1,6 +1,7 @@ package com.mogo.eagle.core.function.call.hmi import android.view.View +import android.view.ViewGroup import com.alibaba.android.arouter.launcher.ARouter import com.mogo.eagle.core.data.bindingcar.IPCUpgradeStateInfo import com.mogo.eagle.core.data.constants.MoGoFragmentPaths @@ -292,7 +293,13 @@ object CallerHmiManager : CallerBase() { waringProviderApi?.showModifyBindingcarDialog() } - fun showUpgradeDialog(name: String, url: String, title: String, content: String, installType: String) { + fun showUpgradeDialog( + name: String, + url: String, + title: String, + content: String, + installType: String + ) { waringProviderApi?.showUpgradeDialog(name, url, title, content, installType) } @@ -397,7 +404,6 @@ object CallerHmiManager : CallerBase() { waringProviderApi?.showVideoDialog(infList) } - /** * 设置 bus出车/收车View * @param view @@ -405,4 +411,19 @@ object CallerHmiManager : CallerBase() { fun setBusOperationView(view: IOchBusView) { waringProviderApi?.setBusOperationView(view) } + + /** + * 设置状态栏暗夜或明亮模式 + * 默认 light + */ + fun setStatusBarDarkOrLight(light: Boolean = true) { + waringProviderApi?.setStatusBarDarkOrLight(light) + } + + /** + * 更新(添加/删除)状态栏右侧元素 + */ + fun updateStatusBarRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) { + waringProviderApi?.updateStatusBarRightView(insert, tag, viewGroup) + } } \ No newline at end of file diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BarUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BarUtils.java index 78eae55bdb..bb1691f024 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BarUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/BarUtils.java @@ -414,6 +414,15 @@ public final class BarUtils { return statusBarView; } + public static void hideStatusBarAndSticky(@NonNull Window window){ + final ViewGroup decorView = (ViewGroup) window.getDecorView(); + final int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; + decorView.setSystemUiVisibility(decorView.getSystemUiVisibility() | uiOptions); + } + public static void transparentStatusBar(@NonNull final Activity activity) { transparentStatusBar(activity.getWindow()); } diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java index 8015fc5637..4318a63680 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java @@ -25,7 +25,7 @@ public abstract class MvpActivity> exten @Override protected void onCreate(@Nullable Bundle savedInstanceState) { - BarUtils.transparentStatusBar(this); + BarUtils.hideStatusBarAndSticky(this.getWindow()); super.onCreate(savedInstanceState); beforeSetContentView(savedInstanceState); setContentView(getLayoutId()); @@ -37,7 +37,6 @@ public abstract class MvpActivity> exten @Override protected void onResume() { super.onResume(); - BarUtils.setNavBarVisibility(this, false); } From 5fcd887dfff1b8f8e9d8abfdf060e906937b5072 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Wed, 26 Oct 2022 15:37:00 +0800 Subject: [PATCH 137/203] .. --- .../network/UpgradeAppNetWorkManager.java | 9 +++-- .../funcconfig/FuncConfigCenter.kt | 4 +- .../funcconfig/FuncConfigImpl.kt | 5 ++- .../network/FuncConfigNetWorkModel.kt | 10 ++--- .../hmi/ui/setting/DebugSettingView.kt | 36 +++++++++++------- .../function/hmi/ui/widget/StatusBarView.kt | 3 +- .../src/main/res/drawable/battery_charge.png | Bin 1254 -> 467 bytes .../main/res/layout/view_battery_group.xml | 3 +- .../CallerAutoPilotStatusListenerManager.kt | 9 +---- .../mogo/logger/scene/SceneConstant.kt | 1 + 10 files changed, 42 insertions(+), 38 deletions(-) diff --git a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/appupgrade/network/UpgradeAppNetWorkManager.java b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/appupgrade/network/UpgradeAppNetWorkManager.java index fd4ec34bb6..d7dc88aa4b 100644 --- a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/appupgrade/network/UpgradeAppNetWorkManager.java +++ b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/appupgrade/network/UpgradeAppNetWorkManager.java @@ -1,5 +1,7 @@ package com.mogo.eagle.core.function.appupgrade.network; +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BINDING; + import android.content.Context; import android.util.Log; @@ -56,8 +58,7 @@ public class UpgradeAppNetWorkManager { // String mac = "48:b0:2d:3a:bc:78"; String sn = MoGoAiCloudClientConfig.getInstance().getSn(); int versionCode = AppUtils.getAppVersionCode(); - CallerLogger.INSTANCE.d(TAG, "getAppUpgradeInfo mac = " + mac + "---type = " + screenType + "---sn = " + sn + "---versionCode =" + versionCode); - Log.d(TAG, "mac = " + mac + "---type = " + screenType + "---sn = " + sn + "---versionCode =" + versionCode); + CallerLogger.INSTANCE.d(M_BINDING + TAG, "getAppUpgradeInfo mac = " + mac + "---type = " + screenType + "---sn = " + sn + "---versionCode =" + versionCode); UpgradeAppRequest request = new UpgradeAppRequest(sn, mac, screenType); RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request)); mUpgradeApiService.getUpgradeInfo(requestBody) @@ -71,14 +72,14 @@ public class UpgradeAppNetWorkManager { @Override public void onNext(@NonNull UpgradeAppInfo info) { if (info != null && info.result != null) { - CallerLogger.INSTANCE.d(TAG, "UpgradeAppInfo url = " + info.result.getAppUrl() + "----code = " + info.result.getVersionCode()); + CallerLogger.INSTANCE.d(M_BINDING + TAG, "UpgradeAppInfo url = " + info.result.getAppUrl() + "----code = " + info.result.getVersionCode()); Log.d(TAG, "UpgradeAppInfo url = " + info.result.getAppUrl() + "----code = " + info.result.getVersionCode() + "--versionCode =" + versionCode + "--info.result = " + info.result); if (info.result.getVersionCode() > versionCode) { CallerHmiManager.INSTANCE.showUpgradeDialog(info.result.getAppUrl().substring(info.result.getAppUrl().lastIndexOf("/")+1), info.result.getAppUrl(), info.result.getInstallTitle(), info.result.getInstallContent(), info.result.getInstallType()); } } else { Log.e(TAG, "onNext info == null"); - CallerLogger.INSTANCE.d(TAG, "UpgradeAppInfo onNext info == null"); + CallerLogger.INSTANCE.d(M_BINDING + TAG, "UpgradeAppInfo onNext info == null"); } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt index 7a68a09b7c..4c310c0302 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt @@ -1,7 +1,6 @@ package com.zhjt.mogo_core_function_devatools.funcconfig import android.content.Context -import android.util.Log import com.mogo.aicloud.services.socket.IMogoOnMessageListener import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager import com.mogo.commons.AbsMogoApplication @@ -67,7 +66,6 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo } override fun onMsgReceived(obj: FuncConfig?) { - Log.d(TAG, "onMsgReceived Business : $obj") obj?.let { invokeUpdate(it) } @@ -82,11 +80,11 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo clientPkFileName = "sn" ) private fun refreshConfig(funcConfig: FuncConfig) { + BizManager.updateBizConfigData(funcConfig) invokeUpdate(funcConfig) } private fun invokeUpdate(funcConfig: FuncConfig) { - BizManager.updateBizConfigData(funcConfig) funcConfig.business.forEach { business -> CallerDevaToolsFuncConfigListenerManager.invokeDevaToolsFuncConfigBizUpdate( business.biz.uppercase(), diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt index 0f9f976b4f..f2c0e0c114 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt @@ -23,7 +23,10 @@ object FuncConfigImpl { data: String? ) { when (type) { - } + BIZ_BEAUTY_MODE -> FunctionBuildConfig.isDemoMode = state + BIZ_RAIN_MODE -> FunctionBuildConfig.isRainMode = state + BIZ_WARNING_UPLOAD -> FunctionBuildConfig.isReportWarning = state + } } } ) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt index 25644cdc03..10540e4e12 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt @@ -34,13 +34,9 @@ class FuncConfigNetWorkModel { if (error == null) { error = onError } - //todo test -// map["sn"] = MoGoAiCloudClientConfig.getInstance().sn - map["sn"] = "X20202203105S688HZ" -// map["mac"] = DeviceUtils.getMacAddress() - map["mac"] = "48:b0:2d:3a:bc:78" -// map["channelVersion"] = FuncConfigConst.getChannelCode() - map["channelVersion"] = 1 + map["sn"] = MoGoAiCloudClientConfig.getInstance().sn + map["mac"] = DeviceUtils.getMacAddress() + map["channelVersion"] = FuncConfigConst.getChannelCode() } loader { apiCall { 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 4a20ce0775..8bb0c5577a 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 @@ -62,6 +62,7 @@ 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.upgrade.UpgradeListAdapter +import com.mogo.eagle.core.function.hmi.ui.widget.BlueToothView import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils @@ -574,7 +575,7 @@ class DebugSettingView @JvmOverloads constructor( // 演示模式 tbIsDemoMode.setOnCheckedChangeListener { _, isChecked -> - CallerHmiManager.updateStatusBarRightView(isChecked,"demoMode", DemoModeView(context)) + CallerHmiManager.updateStatusBarRightView(isChecked, "demoMode", DemoModeView(context)) CallerAutoPilotManager.setDemoMode(isChecked) if (!isChecked) { //关闭美化模式时,通知工控机 @@ -1859,29 +1860,35 @@ class DebugSettingView @JvmOverloads constructor( override fun updateBizData(type: String, state: Boolean, lock: Boolean, data: String?) { when (type) { BIZ_BEAUTY_MODE -> { - if(lock){ - tbIsDemoMode.background = resources.getDrawable(R.drawable.radio_button_lock_background) - }else{ - tbIsDemoMode.background = resources.getDrawable(R.drawable.radio_button_normal_background_right) + if (lock) { + tbIsDemoMode.background = + resources.getDrawable(R.drawable.radio_button_lock_background) + } else { + tbIsDemoMode.background = + resources.getDrawable(R.drawable.radio_button_normal_background_right) } } BIZ_RAIN_MODE -> { - if(lock){ - tbIsRainMode.background = resources.getDrawable(R.drawable.radio_button_lock_background) - }else{ - tbIsRainMode.background = resources.getDrawable(R.drawable.radio_button_normal_background_right) + if (lock) { + tbIsRainMode.background = + resources.getDrawable(R.drawable.radio_button_lock_background) + } else { + tbIsRainMode.background = + resources.getDrawable(R.drawable.radio_button_normal_background_right) } } BIZ_WARNING_UPLOAD -> { - if(lock){ - tbReportWarning.background = resources.getDrawable(R.drawable.radio_button_lock_background) - }else{ + if (lock) { + tbReportWarning.background = + resources.getDrawable(R.drawable.radio_button_lock_background) + } else { tbReportWarning.background = null } } BIZ_BAG_RECORD -> { if (lock) { - btnRecordBag.background = resources.getDrawable(R.drawable.radio_button_lock_background) + btnRecordBag.background = + resources.getDrawable(R.drawable.radio_button_lock_background) } else { btnRecordBag.requestFocus() btnRecordBag.background = null @@ -1889,7 +1896,8 @@ class DebugSettingView @JvmOverloads constructor( } BIZ_FULL_LOG -> { if (lock) { - tbLogCatch.background = resources.getDrawable(R.drawable.radio_button_lock_background) + tbLogCatch.background = + resources.getDrawable(R.drawable.radio_button_lock_background) } else { tbLogCatch.requestFocus() tbLogCatch.background = null diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt index ef49f6f3d0..766c2f62b9 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt @@ -11,6 +11,7 @@ import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.util.BarUtils import com.mogo.eagle.core.utilcode.util.ScreenUtils import kotlinx.android.synthetic.main.view_status_bar.view.* +import java.util.concurrent.CopyOnWriteArrayList class StatusBarView @JvmOverloads constructor( context: Context, @@ -26,7 +27,7 @@ class StatusBarView @JvmOverloads constructor( LayoutInflater.from(context).inflate(R.layout.view_status_bar, this, true) } - private val rightViewList = mutableListOf() + private val rightViewList = CopyOnWriteArrayList() override fun onAttachedToWindow() { super.onAttachedToWindow() diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/battery_charge.png index 2c46f99c9146c77e21c8d7f92646445dfd26cda3..92df72187c9f4d4127a979739664bc1784c5f995 100644 GIT binary patch delta 406 zcmaFHd6`+UGr-TCmrII^fq{Y7)59eQNDBb57zZ1WJh@7yW}>1;y}$xy1{NTn5hMe| z47){JfGQbnJzX3_ECiDi6omf#|39C{meGUPX_+>_*R_Km|H z?hZ!>w)IIRo(tH-6z(xx;$+dk@bu%SMyVMM6`CIEA~^?_F~&=rVaV!mx>Ul}**l+e z%SQe*U7@$l@#6I%Vk;JMdI}o_H!WavxVrR&)r1@V1(|7$o(!VtOgCc}FJb-0(wQU^0`#t7M4=7XyL+imvJ*xsoT!+!WlUJw7+hZSwlUu=Cmqr-FMb zZf?hFEcm6FGd@Vltc&6mIX=Bk;TWUn-lIte92ZDfn{fvoY3R!Nu`y#GlZdcGU`ID| zNJc~2fn){wY`-H<#a&en+cVspcfjHBtQiH83s_7as88Ty$lBMGqQE6Qol!yj5A&ml y1<#r_tU4Yt{M{|u@wp?gJCrw|SR;&6r->oew8c5{&+Z~nkb1iMxvXxRRHPJ8C@5@P z)52QHwRF#mEjj1(96UnbX8?g-pc1Blz%gJLumWp^ zGp7&%@mGM;(qpZ{Fa+G30v&%TNHYP4&DL*>Tand*IoSpNY#$$~P+%fI2-hQiZD?rt zjari#s*auC>B@g9RQKLO5LphgpGQYWEz8$zm$!GARjKPW|9MpiA`3zIeC)7h&cH5nW}paE7WeLY05yWLg5>UwczdR&gl2|M0PM-tZ7(SNdNbjzKe(Rr!gUj(Dq9)I}U?g8ej%F zgv{1wH_nRQ_>oZD?LV+5L!X;-h^|CA@QM3=$uao{VoTsme+GO3KFjOsvh?x=m_B+N z5TP@n@82f32<42mHym#;FCYik@DQQ!<(r!So$%(zL`Ss#a_9U^&cz!D{O>2C7y&-AMa9yBdBw z&#$95BCTwp!E!`nyfAj0M0V1O|eq3^OKq{4z&_;;V zkzb6xYe!K;Qd{37p*DW1zuAC4Dz)*K5GkgZSQ90LI~4HOAD8rDs^DcH&Vk4ku>zv< z@alE~&W=uVC5^CKfZ!KG6e(X4NJD@IfUF4c=gaeo59D%S9x$by{0~xF(48r4V?+P| O002ov22Mn-LSTZ&U@bcU diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml index 4789ca1988..2cdbd556bc 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_battery_group.xml @@ -3,6 +3,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" + android:layout_marginLeft="@dimen/dp_10" android:orientation="horizontal"> Date: Wed, 26 Oct 2022 18:59:04 +0800 Subject: [PATCH 138/203] add func of pnc warning func config --- .../DevaToolsProvider.kt | 1 + .../funcconfig/FuncConfigImpl.kt | 2 + .../hmi/ui/setting/DebugSettingView.kt | 9 ++- .../function/hmi/ui/setting/SOPSettingView.kt | 67 +++++++++++++++++-- .../src/main/res/layout/view_sop_setting.xml | 15 +---- .../function/map/identify/WarningHelper.kt | 6 +- .../core/data/config/FunctionBuildConfig.kt | 7 ++ ...allerDevaToolsFuncConfigListenerManager.kt | 6 +- 8 files changed, 86 insertions(+), 27 deletions(-) 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 8ebdf939ae..8329ac38a6 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 @@ -36,6 +36,7 @@ class DevaToolsProvider : IDevaToolsProvider { override fun initBiz() { bizConfigCenter.init(mContext!!) +// FuncConfigImpl.init() traceManager.init(mContext!!) MogoLogCatchManager.init(mContext!!) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt index f2c0e0c114..82bd32a5dc 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt @@ -2,6 +2,7 @@ package com.zhjt.mogo_core_function_devatools.funcconfig import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_BEAUTY_MODE +import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_PNC_WARNING import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_RAIN_MODE import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_WARNING_UPLOAD import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.FOUNDATION @@ -26,6 +27,7 @@ object FuncConfigImpl { BIZ_BEAUTY_MODE -> FunctionBuildConfig.isDemoMode = state BIZ_RAIN_MODE -> FunctionBuildConfig.isRainMode = state BIZ_WARNING_UPLOAD -> FunctionBuildConfig.isReportWarning = state + BIZ_PNC_WARNING -> FunctionBuildConfig.isPNCWarning = state } } } 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 8bb0c5577a..dc8647fd0a 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 @@ -41,7 +41,6 @@ import com.mogo.eagle.core.data.obu.ObuStatusInfo import com.mogo.eagle.core.data.report.ReportEntity import com.mogo.eagle.core.data.upgrade.UpgradeVersionEntity import com.mogo.eagle.core.function.api.autopilot.* -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener.Companion import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsFuncConfigListener import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener @@ -62,7 +61,6 @@ 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.upgrade.UpgradeListAdapter -import com.mogo.eagle.core.function.hmi.ui.widget.BlueToothView import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils @@ -1860,6 +1858,7 @@ class DebugSettingView @JvmOverloads constructor( override fun updateBizData(type: String, state: Boolean, lock: Boolean, data: String?) { when (type) { BIZ_BEAUTY_MODE -> { + tbIsDemoMode.isClickable = !lock if (lock) { tbIsDemoMode.background = resources.getDrawable(R.drawable.radio_button_lock_background) @@ -1869,6 +1868,7 @@ class DebugSettingView @JvmOverloads constructor( } } BIZ_RAIN_MODE -> { + tbIsRainMode.isClickable = !lock if (lock) { tbIsRainMode.background = resources.getDrawable(R.drawable.radio_button_lock_background) @@ -1878,6 +1878,7 @@ class DebugSettingView @JvmOverloads constructor( } } BIZ_WARNING_UPLOAD -> { + tbReportWarning.isClickable = !lock if (lock) { tbReportWarning.background = resources.getDrawable(R.drawable.radio_button_lock_background) @@ -1887,18 +1888,22 @@ class DebugSettingView @JvmOverloads constructor( } BIZ_BAG_RECORD -> { if (lock) { + btnRecordBag.isClickable = false btnRecordBag.background = resources.getDrawable(R.drawable.radio_button_lock_background) } else { + btnRecordBag.isClickable = true btnRecordBag.requestFocus() btnRecordBag.background = null } } BIZ_FULL_LOG -> { if (lock) { + tbLogCatch.isClickable = false tbLogCatch.background = resources.getDrawable(R.drawable.radio_button_lock_background) } else { + tbLogCatch.isClickable = true tbLogCatch.requestFocus() tbLogCatch.background = null } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index d405d83176..57d2c9111f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -7,7 +7,10 @@ import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig +import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig +import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsFuncConfigListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsFuncConfigListenerManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.call.obu.CallerOBUManager import com.mogo.eagle.core.function.hmi.R @@ -23,7 +26,11 @@ class SOPSettingView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : ConstraintLayout(context, attrs, defStyleAttr){ +) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoDevaToolsFuncConfigListener { + + companion object{ + const val TAG = "SOPSettingView" + } init { LayoutInflater.from(context).inflate(R.layout.view_sop_setting, this, true) @@ -38,9 +45,10 @@ class SOPSettingView @JvmOverloads constructor( FunctionBuildConfig.isDetouring = isChecked } + tbMarkingObstacles.isChecked = FunctionBuildConfig.isPNCWarning //危险障碍物颜色标记开关 tbMarkingObstacles.setOnCheckedChangeListener { _, isChecked -> - + FunctionBuildConfig.isPNCWarning = isChecked } if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ @@ -82,11 +90,6 @@ class SOPSettingView @JvmOverloads constructor( } } - //自车感知到的他车碰撞预警 - tbCollisionWarning.setOnCheckedChangeListener { buttonView, isChecked -> - - } - // 演示模式,上一次勾选的数据 tbDemoMode.isChecked = FunctionBuildConfig.isDemoMode // 演示模式 @@ -168,4 +171,54 @@ class SOPSettingView @JvmOverloads constructor( } + override fun onAttachedToWindow() { + super.onAttachedToWindow() + //添加 业务配置监听 + CallerDevaToolsFuncConfigListenerManager.registerDevaToolsFuncConfigListener( + FuncBizConfig.FOUNDATION, + TAG, + this + ) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + // 移除 业务配置监听 + CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener(this) + } + + override fun updateBizData(type: String, state: Boolean, lock: Boolean, data: String?) { + when (type) { + FuncBizConfig.BIZ_BEAUTY_MODE -> { + tbDemoMode.isClickable = !lock + if (lock) { + tbDemoMode.background = + resources.getDrawable(R.drawable.radio_button_lock_background) + } else { + tbDemoMode.background = + resources.getDrawable(R.drawable.radio_button_normal_background_right) + } + } + FuncBizConfig.BIZ_RAIN_MODE -> { + tbRainMode.isClickable = !lock + if (lock) { + tbRainMode.background = + resources.getDrawable(R.drawable.radio_button_lock_background) + } else { + tbRainMode.background = + resources.getDrawable(R.drawable.radio_button_normal_background_right) + } + } + FuncBizConfig.BIZ_PNC_WARNING -> { + tbMarkingObstacles.isClickable = !lock + if (lock) { + tbMarkingObstacles.background = + resources.getDrawable(R.drawable.radio_button_lock_background) + } else { + tbMarkingObstacles.background = + resources.getDrawable(R.drawable.radio_button_normal_background_right) + } + } + } + } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml index 105f81a5cd..d95264b1c7 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml @@ -69,19 +69,6 @@ android:textSize="@dimen/dp_24" app:layout_constraintTop_toBottomOf="@id/tbTrafficLight" /> - - Unit)) { + if(!FunctionBuildConfig.isPNCWarning){ + color.invoke("") + return + } if (FunctionBuildConfig.isBeautyMode) { // 判断物体是否有预警信息 if (pncWarningBeautyTrafficData.containsKey(uuid)) { diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt index 327e2b186a..15cae7ecf7 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt @@ -156,4 +156,11 @@ object FunctionBuildConfig { @JvmField var isReportWarning = true + /** + * 是否开启PNC障碍物颜色提醒 + */ + @Volatile + @JvmField + var isPNCWarning = true + } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt index fc7254e0d7..5b6c8ba255 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt @@ -10,7 +10,7 @@ object CallerDevaToolsFuncConfigListenerManager { private val M_DEVA_TOOLS_FUNC_CONFIG_LISTENER: ConcurrentHashMap = ConcurrentHashMap() - private val cacheMap = mutableMapOf>() + private val cacheMap = mutableMapOf>() /** * 添加监听 @@ -28,7 +28,9 @@ object CallerDevaToolsFuncConfigListenerManager { M_DEVA_TOOLS_FUNC_CONFIG_LISTENER["$biz'_'$tag"] = listener cacheMap[biz]?.let { - invokeDevaToolsFuncConfigBizUpdate(biz,it) + if (it.size > 0) { + invokeDevaToolsFuncConfigBizUpdate(biz, it) + } } } From a942559c337f60de907029614d4324321ade618a Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 26 Oct 2022 21:00:01 +0800 Subject: [PATCH 139/203] [fix] nuc map adapter --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 3650b1b24e..3dadf1d121 100644 --- a/gradle.properties +++ b/gradle.properties @@ -85,7 +85,7 @@ MOGO_LOCATION_VERSION=1.4.3.26 MOGO_TELEMATIC_VERSION=1.4.3.26 ######## MogoAiCloudSDK Version ######## # 自研地图 -MAP_SDK_VERSION=2.6.0.10 +MAP_SDK_VERSION=2.6.1.1 MAP_SDK_OPERATION_VERSION=1.1.2.4 # websocket WEBSOCKET_VERSION=1.1.7 From b91f1d067562f8e3ee293456fcbec0ba18dbff07 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 26 Oct 2022 21:04:07 +0800 Subject: [PATCH 140/203] =?UTF-8?q?[2.12.0-f]=20tts=20=E8=A1=A5=E6=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OCH/mogo-och-bus/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OCH/mogo-och-bus/src/main/res/values/strings.xml b/OCH/mogo-och-bus/src/main/res/values/strings.xml index 42ef590592..afe287c645 100644 --- a/OCH/mogo-och-bus/src/main/res/values/strings.xml +++ b/OCH/mogo-och-bus/src/main/res/values/strings.xml @@ -44,7 +44,7 @@ 已到达%1$s,带好随身物品,下车请注意。 车辆起步,请扶稳坐好,前方到站是%1$s,请下车的乘客做好准备。 - 感谢您体验\'蘑菇车联\'自动驾驶小巴车,请您携带好随身物品,我们下次再见。 + 感谢您体验\'蘑菇车联\'自动驾驶小巴车,我们下次再见。 From fa31960b9c2fd662224673ae0a85498384420a9c Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 27 Oct 2022 12:07:06 +0800 Subject: [PATCH 141/203] fix bug of func config --- .../DevaToolsProvider.kt | 4 +- .../funcconfig/FuncConfigCenter.kt | 12 ++--- .../funcconfig/FuncConfigImpl.kt | 2 +- .../network/FuncConfigNetWorkModel.kt | 10 +++-- .../hmi/ui/setting/DebugSettingView.kt | 12 ++--- .../function/hmi/ui/setting/SOPSettingView.kt | 45 +++++++++---------- .../IMoGoDevaToolsFuncConfigListener.kt | 7 ++- ...allerDevaToolsFuncConfigListenerManager.kt | 29 ++++++++++-- 8 files changed, 76 insertions(+), 45 deletions(-) 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 8329ac38a6..119b51b41e 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 @@ -35,9 +35,9 @@ class DevaToolsProvider : IDevaToolsProvider { } override fun initBiz() { - bizConfigCenter.init(mContext!!) -// FuncConfigImpl.init() traceManager.init(mContext!!) + bizConfigCenter.init(mContext!!) + FuncConfigImpl.init() MogoLogCatchManager.init(mContext!!) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt index 4c310c0302..1476cf959e 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt @@ -42,6 +42,11 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo MogoAiCloudSocketManager.getInstance(AbsMogoApplication.getApp().applicationContext) .registerOnMessageListener(FUNC_CONFIG_TYPE, this) CallerAutopilotCarConfigListenerManager.addListener(TAG, this) + + //未连接到工控,默认配置 + val bizJson = SPUtils.getInstance("biz_config") + .getString("config", GsonUtils.toJson(defaultFuncConfig())) + refreshConfig(GsonUtils.fromJson(bizJson, FuncConfig::class.java)) } override fun onAutopilotCarConfig(carConfigResp: MessagePad.CarConfigResp) { @@ -49,12 +54,7 @@ class FuncConfigCenter : IMogoOnMessageListener, IMoGoAutopilotCarCo UiThreadHandler.post { funcConfigNetWorkModel.requestFuncConfig(carConfigResp.macAddress, { SPUtils.getInstance("biz_config").put("config", GsonUtils.toJson(it)) - refreshConfig(it) - }, { - val bizJson = SPUtils.getInstance("biz_config") - .getString("config", GsonUtils.toJson(defaultFuncConfig())) - refreshConfig(GsonUtils.fromJson(bizJson, FuncConfig::class.java)) - }) + refreshConfig(it) }, {}) } } else { ToastUtils.showLong("未获取到域控mac信息") diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt index 82bd32a5dc..1d0d9ef98b 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigImpl.kt @@ -15,7 +15,7 @@ object FuncConfigImpl { fun init() { CallerDevaToolsFuncConfigListenerManager.registerDevaToolsFuncConfigListener(FOUNDATION, - TAG, + TAG,false, object : IMoGoDevaToolsFuncConfigListener { override fun updateBizData( type: String, diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt index 10540e4e12..25644cdc03 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt @@ -34,9 +34,13 @@ class FuncConfigNetWorkModel { if (error == null) { error = onError } - map["sn"] = MoGoAiCloudClientConfig.getInstance().sn - map["mac"] = DeviceUtils.getMacAddress() - map["channelVersion"] = FuncConfigConst.getChannelCode() + //todo test +// map["sn"] = MoGoAiCloudClientConfig.getInstance().sn + map["sn"] = "X20202203105S688HZ" +// map["mac"] = DeviceUtils.getMacAddress() + map["mac"] = "48:b0:2d:3a:bc:78" +// map["channelVersion"] = FuncConfigConst.getChannelCode() + map["channelVersion"] = 1 } loader { apiCall { 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 dc8647fd0a..4a764781c9 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 @@ -196,9 +196,7 @@ class DebugSettingView @JvmOverloads constructor( //添加 业务配置监听 CallerDevaToolsFuncConfigListenerManager.registerDevaToolsFuncConfigListener( - FuncBizConfig.FOUNDATION, - TAG, - this + FuncBizConfig.FOUNDATION, TAG, true, this ) if (logInfoView != null) { @@ -230,7 +228,7 @@ class DebugSettingView @JvmOverloads constructor( CallerAutopilotVehicleStateListenerManager.removeListener(TAG) // 移除 业务配置监听 - CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener(this) + CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener( FuncBizConfig.FOUNDATION, TAG) if (logInfoView != null) { logInfoView!!.onEnterBackground() @@ -568,6 +566,10 @@ class DebugSettingView @JvmOverloads constructor( } } + Log.i( + "1026-emArrow", + "debug setting FunctionBuildConfig.isDemoMode : ${FunctionBuildConfig.isDemoMode}" + ) // 演示模式,上一次勾选的数据 tbIsDemoMode.isChecked = FunctionBuildConfig.isDemoMode @@ -1855,7 +1857,7 @@ class DebugSettingView @JvmOverloads constructor( } } - override fun updateBizData(type: String, state: Boolean, lock: Boolean, data: String?) { + override fun updateBizView(type: String, lock: Boolean) { when (type) { BIZ_BEAUTY_MODE -> { tbIsDemoMode.isClickable = !lock diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index 57d2c9111f..f77c252142 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -28,7 +28,7 @@ class SOPSettingView @JvmOverloads constructor( defStyleAttr: Int = 0 ) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoDevaToolsFuncConfigListener { - companion object{ + companion object { const val TAG = "SOPSettingView" } @@ -51,7 +51,7 @@ class SOPSettingView @JvmOverloads constructor( FunctionBuildConfig.isPNCWarning = isChecked } - if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ + if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { tbMarkingObstacles.visibility = View.GONE } @@ -71,9 +71,9 @@ class SOPSettingView @JvmOverloads constructor( //红绿灯标识 tbTrafficLight.isChecked = HmiBuildConfig.isShowTrafficLightView tbTrafficLight.setOnCheckedChangeListener { _, isChecked -> - if(!isChecked){ + if (!isChecked) { HmiBuildConfig.isShowTrafficLightView = false - }else{ + } else { HmiBuildConfig.isShowTrafficLightView = true CallerHmiManager.disableWarningTrafficLight() } @@ -82,9 +82,9 @@ class SOPSettingView @JvmOverloads constructor( //限速标识 tbSpeedLimit.isChecked = HmiBuildConfig.isShowLimitingVelocityView tbSpeedLimit.setOnCheckedChangeListener { _, isChecked -> - if(isChecked){ + if (isChecked) { HmiBuildConfig.isShowLimitingVelocityView = true - }else{ + } else { HmiBuildConfig.isShowLimitingVelocityView = false CallerHmiManager.disableLimitingVelocity() } @@ -122,13 +122,13 @@ class SOPSettingView @JvmOverloads constructor( //OBU控制总开关 tbObu.isChecked = CallerOBUManager.isConnected() tbObu.setOnCheckedChangeListener { _, isChecked -> - if(!isChecked){ - if(AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)){ + if (!isChecked) { + if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) { CallerOBUManager.resetObuIpAddress("192.168.1.199") - }else if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ + } else if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { CallerOBUManager.resetObuIpAddress("192.168.8.199") } - }else{ + } else { //断开链接 CallerOBUManager.disConnectObu() } @@ -137,31 +137,32 @@ class SOPSettingView @JvmOverloads constructor( //变道绕障的目标障碍物速度阈值 tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" ivSpeedReduce.setOnClickListener { - if(FunctionBuildConfig.detouringSpeed<=3){ + if (FunctionBuildConfig.detouringSpeed <= 3) { ToastUtils.showShort("阈值小可为3 m/s") - }else{ + } else { FunctionBuildConfig.detouringSpeed-- tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" } } ivSpeedAdd.setOnClickListener { - if(FunctionBuildConfig.detouringSpeed>=7){ + if (FunctionBuildConfig.detouringSpeed >= 7) { ToastUtils.showShort("阈值最大可为7 m/s") - }else{ + } else { FunctionBuildConfig.detouringSpeed++ tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s" } } btnSpeedSet.setOnClickListener { - val isSuccess = CallerAutoPilotManager.sendDetouringSpeed(FunctionBuildConfig.detouringSpeed.toDouble()) - if(isSuccess == true){ + val isSuccess = + CallerAutoPilotManager.sendDetouringSpeed(FunctionBuildConfig.detouringSpeed.toDouble()) + if (isSuccess == true) { ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置成功") - }else{ + } else { ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置失败") } } - if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ + if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { tvSpeedThresholdTitle.visibility = View.GONE ivSpeedReduce.visibility = View.GONE tvSpeed.visibility = View.GONE @@ -175,19 +176,17 @@ class SOPSettingView @JvmOverloads constructor( super.onAttachedToWindow() //添加 业务配置监听 CallerDevaToolsFuncConfigListenerManager.registerDevaToolsFuncConfigListener( - FuncBizConfig.FOUNDATION, - TAG, - this + FuncBizConfig.FOUNDATION, TAG, true, this ) } override fun onDetachedFromWindow() { super.onDetachedFromWindow() // 移除 业务配置监听 - CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener(this) + CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener(FuncBizConfig.FOUNDATION, TAG) } - override fun updateBizData(type: String, state: Boolean, lock: Boolean, data: String?) { + override fun updateBizView(type: String, lock: Boolean) { when (type) { FuncBizConfig.BIZ_BEAUTY_MODE -> { tbDemoMode.isClickable = !lock diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IMoGoDevaToolsFuncConfigListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IMoGoDevaToolsFuncConfigListener.kt index 099964a0af..ab3cdb20ec 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IMoGoDevaToolsFuncConfigListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IMoGoDevaToolsFuncConfigListener.kt @@ -12,5 +12,10 @@ interface IMoGoDevaToolsFuncConfigListener { * lock : 锁定状态 * data : json */ - fun updateBizData(type: String, state: Boolean, lock: Boolean, data: String?) + fun updateBizData(type: String, state: Boolean, lock: Boolean, data: String?) {} + + /** + * 更新业务锁定状态,仅限View使用 + */ + fun updateBizView(type: String,lock: Boolean){} } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt index 5b6c8ba255..a06e25dc9f 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt @@ -11,6 +11,7 @@ object CallerDevaToolsFuncConfigListenerManager { ConcurrentHashMap() private val cacheMap = mutableMapOf>() + private val viewCacheMap = mutableMapOf() /** * 添加监听 @@ -20,16 +21,18 @@ object CallerDevaToolsFuncConfigListenerManager { fun registerDevaToolsFuncConfigListener( @Nullable biz: String, @Nullable tag: String, + onlyViewRegister:Boolean = false, @Nullable listener: IMoGoDevaToolsFuncConfigListener ) { if (M_DEVA_TOOLS_FUNC_CONFIG_LISTENER.containsKey("$biz'_'$tag")) { return } M_DEVA_TOOLS_FUNC_CONFIG_LISTENER["$biz'_'$tag"] = listener + viewCacheMap["$biz'_'$tag"] = onlyViewRegister cacheMap[biz]?.let { if (it.size > 0) { - invokeDevaToolsFuncConfigBizUpdate(biz, it) + invokeDevaToolsFuncConfigBizUpdate(biz, it, tag) } } } @@ -43,6 +46,7 @@ object CallerDevaToolsFuncConfigListenerManager { return } M_DEVA_TOOLS_FUNC_CONFIG_LISTENER.remove("$biz'_'$tag") + viewCacheMap.remove("$biz'_'$tag") } /** @@ -63,15 +67,32 @@ object CallerDevaToolsFuncConfigListenerManager { /** * 由订阅方判断Type类型,聚合一些 */ - fun invokeDevaToolsFuncConfigBizUpdate(biz: String, list: MutableList) { + fun invokeDevaToolsFuncConfigBizUpdate( + biz: String, + list: MutableList, + tag: String = "" + ) { cacheMap[biz] = list M_DEVA_TOOLS_FUNC_CONFIG_LISTENER.forEach { - val key = it.key - if (key.contains(biz)) { + //全量更新 + if (tag.isEmpty()) { list.forEach { subBiz -> val listener = it.value listener.updateBizData(subBiz.type, subBiz.state, subBiz.lock, subBiz.data) } + return@forEach + } + // 根据biz_tag选择行下发 + val key = it.key + if (key.contains("$biz'_'$tag")) { + list.forEach { subBiz -> + val listener = it.value + if(viewCacheMap["$biz'_'$tag"] == true){ + listener.updateBizView(subBiz.type,subBiz.lock) + }else{ + listener.updateBizData(subBiz.type, subBiz.state, subBiz.lock, subBiz.data) + } + } } } } From b01d0f3e9ddc146557b92c9f35b0d71729e367a2 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 27 Oct 2022 12:08:09 +0800 Subject: [PATCH 142/203] note the test code --- .../funcconfig/network/FuncConfigNetWorkModel.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt index 25644cdc03..c0d69ac4a4 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt @@ -35,12 +35,12 @@ class FuncConfigNetWorkModel { error = onError } //todo test -// map["sn"] = MoGoAiCloudClientConfig.getInstance().sn - map["sn"] = "X20202203105S688HZ" -// map["mac"] = DeviceUtils.getMacAddress() - map["mac"] = "48:b0:2d:3a:bc:78" -// map["channelVersion"] = FuncConfigConst.getChannelCode() - map["channelVersion"] = 1 + map["sn"] = MoGoAiCloudClientConfig.getInstance().sn +// map["sn"] = "X20202203105S688HZ" + map["mac"] = DeviceUtils.getMacAddress() +// map["mac"] = "48:b0:2d:3a:bc:78" + map["channelVersion"] = FuncConfigConst.getChannelCode() +// map["channelVersion"] = 1 } loader { apiCall { From ab541cb175ab20ec93b848ea54e81bf748418f96 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 27 Oct 2022 14:25:44 +0800 Subject: [PATCH 143/203] code style and not the test code --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 1729b5f465..2af28df989 100644 --- a/gradle.properties +++ b/gradle.properties @@ -59,8 +59,8 @@ bytex.ASM_API=ASM7 HOOK_LOG_VERSION=1.6.1 SERVICE_CHAIN_VERSION=1.1.0 -BIZCONFIG_VERSION=1.2.8 -SERVICE_BIZ_VERSION=1.2.1 +BIZCONFIG_VERSION=1.3.0 +SERVICE_BIZ_VERSION=1.2.2 ################ 外部依赖引用 ################ # loglib LOGLIB_VERSION=1.3.38 From 8c38ef7cd69a1b960bfffac2f5df53e4fd0770d2 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 27 Oct 2022 14:30:20 +0800 Subject: [PATCH 144/203] update biz version --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 2af28df989..2af4bef262 100644 --- a/gradle.properties +++ b/gradle.properties @@ -59,8 +59,8 @@ bytex.ASM_API=ASM7 HOOK_LOG_VERSION=1.6.1 SERVICE_CHAIN_VERSION=1.1.0 -BIZCONFIG_VERSION=1.3.0 -SERVICE_BIZ_VERSION=1.2.2 +BIZCONFIG_VERSION=1.3.1 +SERVICE_BIZ_VERSION=1.2.3 ################ 外部依赖引用 ################ # loglib LOGLIB_VERSION=1.3.38 From 3d4530a1ca066efdf275f59a60ab7ff09f3d567b Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 27 Oct 2022 14:49:21 +0800 Subject: [PATCH 145/203] =?UTF-8?q?BadCase=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E5=BD=95=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/BadCaseManager.kt | 9 +-- .../badcase/biz/BadCaseConfigView.kt | 17 +---- .../badcase/biz/CaseListDialog.java | 74 ++++++++++++++++--- .../badcase/biz/CaseTopicListDialog.java | 6 ++ .../badcase/biz/InitiativeBadCaseWindow.kt | 13 ++-- .../badcase/biz/adapter/CaseListAdapter.kt | 21 ++++-- .../badcase/consts/BadCaseConfig.kt | 5 +- .../src/main/res/layout/item_case_list.xml | 6 +- .../main/res/layout/item_record_template.xml | 3 +- .../core/data/badcase/RecordCaseEntity.kt | 3 + 10 files changed, 108 insertions(+), 49 deletions(-) create mode 100644 core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordCaseEntity.kt diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index 3306a57d94..a6cc679a5f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -107,13 +107,8 @@ internal object BadCaseManager : LifecycleEventObserver { if(ClickUtils.isFastClick()){ if(NetworkUtils.isConnected()){ if(BadCaseConfig.dockerVersion!=null){ - val initiativeBadCaseWindow = InitiativeBadCaseWindow(activity) - initiativeBadCaseWindow.setClickListener(object: InitiativeBadCaseWindow.ClickListener{ - override fun closeWindow() { - initiativeBadCaseWindow.hideFloatWindow() - } - }) - initiativeBadCaseWindow.showFloatWindow() + val caseListDialog = CaseListDialog(activity) + caseListDialog.show() }else{ ToastUtils.showShort("工控机连接状态异常") } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt index e437709f0d..8d3f361326 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt @@ -5,6 +5,7 @@ import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.util.AttributeSet import android.view.LayoutInflater +import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.GridLayoutManager import com.mogo.eagle.core.data.badcase.RecordTypeEntity @@ -157,20 +158,7 @@ internal class BadCaseConfigView @JvmOverloads constructor( val gridLayoutManager = GridLayoutManager(context,2) rvTemplate.layoutManager = gridLayoutManager rvTemplate.adapter = recordTemplateAdapter -// val list = ArrayList() -// list.add(TopicEntity("/v2n/aicloud/rsm_info",false,false)) -// list.add(TopicEntity("/autopilot_info/report_msg_error",false,false)) -// list.add(TopicEntity("/v2n/aicloud/rsi_info",false,false)) -// list.add(TopicEntity("/record_cache/task",false,true)) -// list.add(TopicEntity("/sensor/rainmode",false,true)) -// list.add(TopicEntity("/record_cache/master/task",false,true)) -// list.add(TopicEntity("/telematics/trip_info_event",false,true)) -// list.add(TopicEntity("/telematics/light",false,true)) -// list.add(TopicEntity("/guardian/aicloud_state",false,true)) -// recordTypesList.add(RecordTypeEntity(1,"红路灯",list)) -// recordTemplateAdapter?.setData(recordTypesList) -// recordTemplateAdapter?.notifyDataSetChanged() - + rvTemplate.visibility = View.GONE } fun setClickListener(clickListener: ClickListener) { @@ -196,6 +184,7 @@ internal class BadCaseConfigView @JvmOverloads constructor( } } if(recordTypesList.size>1){ + rvTemplate.visibility = View.VISIBLE recordTemplateAdapter?.setData(recordTypesList) recordTemplateAdapter?.notifyDataSetChanged() } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java index f0e6f70ad7..07f6e8b59f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java @@ -1,33 +1,44 @@ package com.zhjt.mogo_core_function_devatools.badcase.biz; +import android.app.Activity; import android.app.Dialog; -import android.content.Context; import android.os.Bundle; -import android.view.View; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.mogo.eagle.core.data.badcase.RecordCaseEntity; +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; +import com.mogo.eagle.core.utilcode.util.ThreadUtils; import com.zhjt.mogo_core_function_devatools.R; import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.CaseListAdapter; +import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig; import java.util.ArrayList; +import mogo.telematics.pad.MessagePad; +import record_cache.RecordPanelOuterClass; + /** * @author XuXinChao * @description BadCase清单选择对话框 * @since: 2022/10/19 */ -public class CaseListDialog extends Dialog { +public class CaseListDialog extends Dialog implements IMoGoAutopilotRecordListener { private TextView tvCancel; private RecyclerView rvCaseList; private CaseListAdapter caseListAdapter; + private static final String TAG = "CaseListDialog"; + private ArrayList recordTypeEntityArrayList = new ArrayList<>(); + private Activity activity; - public CaseListDialog(@NonNull Context context) { - super(context, R.style.bad_case_dialog); + public CaseListDialog(@NonNull Activity activity) { + super(activity, R.style.bad_case_dialog); + this.activity = activity; } @Override @@ -43,21 +54,60 @@ public class CaseListDialog extends Dialog { tvCancel = findViewById(R.id.tvCancel); rvCaseList = findViewById(R.id.rvCaseList); caseListAdapter = new CaseListAdapter(); + caseListAdapter.setListener(recordCaseEntity -> { + //录制Bag包,弹窗 + InitiativeBadCaseWindow initiativeBadCaseWindow = new InitiativeBadCaseWindow(activity); + initiativeBadCaseWindow.setClickListener(initiativeBadCaseWindow::hideFloatWindow); + initiativeBadCaseWindow.showFloatWindow(recordCaseEntity); + }); GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(),2); gridLayoutManager.setOrientation(RecyclerView.VERTICAL); rvCaseList.setLayoutManager(gridLayoutManager); rvCaseList.setAdapter(caseListAdapter); - ArrayList list = new ArrayList<>(); - list.add("红绿灯检测错误"); - list.add("接管默认录制"); - list.add("行程冲突"); - list.add("自定义A"); - caseListAdapter.setData(list); - caseListAdapter.notifyDataSetChanged(); } private void initEvent() { tvCancel.setOnClickListener(v -> dismiss()); } + + @Override + public void onAttachedToWindow() { + super.onAttachedToWindow(); + CallerAutopilotRecordListenerManager.INSTANCE.addListener(TAG, this); + } + + @Override + public void onDetachedFromWindow() { + super.onDetachedFromWindow(); + CallerAutopilotRecordListenerManager.INSTANCE.removeListener(TAG); + } + + + @Override + public void onAutopilotRecordResult(@NonNull RecordPanelOuterClass.RecordPanel recordPanel) { + + } + + @Override + public void onAutopilotRecordConfig(@NonNull MessagePad.RecordDataConfig config) { + ThreadUtils.runOnUiThread(() -> { + if(config.getRecordTypesCount()>0){ + for(int index=0;index topicList = new ArrayList<>(); + for(int position=0;position0){ + recordTypeEntityArrayList.add(new RecordCaseEntity(0,"自定义A",BadCaseConfig.customTopicList)); + } + caseListAdapter.setData(recordTypeEntityArrayList); + caseListAdapter.notifyDataSetChanged(); + }); + } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java index 125724cc83..bc34e091e5 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java @@ -25,6 +25,7 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.zhjt.mogo_core_function_devatools.R; import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.TopicListAdapter; +import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig; import java.util.ArrayList; import java.util.List; @@ -162,6 +163,11 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL Boolean success=CallerAutoPilotManager.INSTANCE.getBadCaseConfig(2,recordType.getId(),addTopicList); if(Boolean.TRUE.equals(success)){ ToastUtils.showShort("Topic设置成功"); + if(recordType.getId() == 0){ + //自定义Topic + BadCaseConfig.customTopicList.addAll(addTopicList); + } + addTopicList.clear(); dismiss(); }else{ ToastUtils.showShort("Topic设置失败"); diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index ef5e535cba..9ae690a283 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -13,6 +13,7 @@ import android.widget.ImageView import android.widget.TextView import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.app.AppConfigInfo +import com.mogo.eagle.core.data.badcase.RecordCaseEntity import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarStateListener import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager @@ -137,13 +138,6 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList CallerAutopilotRecordListenerManager.addListener(this.hashCode().toString(),this) // 添加 ADAS车辆状态&定位 监听 CallerAutopilotCarStatusListenerManager.addListener(this.hashCode().toString(), this) - //开启录包 - CallerAutoPilotManager.recordPackage(BadCaseConfig.type, - Random(SystemClock.elapsedRealtime()).nextInt(), - BadCaseConfig.totalDuration, - BadCaseConfig.previousDuration - ) - viewAudioButton.setOnClickListener { audioStatus = !audioStatus setAudio(audioStatus) @@ -337,7 +331,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList return true } - fun showFloatWindow() { + fun showFloatWindow(recordCaseEntity: RecordCaseEntity) { if (mFloatLayout.parent == null) { val metrics = DisplayMetrics() // 默认固定位置,靠屏幕右边缘的中间 @@ -345,6 +339,9 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList mWindowParams!!.x = metrics.widthPixels mWindowParams!!.y = metrics.heightPixels / 2 - getSysBarHeight(mActivity)-350 mWindowManager!!.addView(mFloatLayout, mWindowParams) + //开启录包 + CallerAutoPilotManager.recordPackage(recordCaseEntity.caseId,Random(SystemClock.elapsedRealtime()).nextInt(), + BadCaseConfig.totalDuration, BadCaseConfig.previousDuration,recordCaseEntity.topicList) } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/CaseListAdapter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/CaseListAdapter.kt index 4ecd352587..c0efade685 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/CaseListAdapter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/CaseListAdapter.kt @@ -5,6 +5,7 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.recyclerview.widget.RecyclerView +import com.mogo.eagle.core.data.badcase.RecordCaseEntity import com.zhjt.mogo_core_function_devatools.R /** @@ -14,12 +15,17 @@ import com.zhjt.mogo_core_function_devatools.R */ class CaseListAdapter: RecyclerView.Adapter() { - private var data:List? = null + private var data:List? = null + private var caseClickListener: CaseClickListener?=null - fun setData( data: List?){ + fun setData( data: List?){ this.data = data } + fun setListener(listener: CaseClickListener){ + caseClickListener = listener + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CaseListHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.item_case_list, parent, false) @@ -27,10 +33,10 @@ class CaseListAdapter: RecyclerView.Adapter() { } override fun onBindViewHolder(holder: CaseListHolder, position: Int) { - data?.let { - holder.caseName.text = it[position] + data?.let {recordCaseEntity-> + holder.caseName.text = recordCaseEntity[position].caseName holder.caseName.setOnClickListener { - + caseClickListener?.onClick(recordCaseEntity[position]) } } } @@ -40,4 +46,9 @@ class CaseListAdapter: RecyclerView.Adapter() { class CaseListHolder(itemView: View) : RecyclerView.ViewHolder(itemView){ var caseName: TextView = itemView.findViewById(R.id.caseName) } + + interface CaseClickListener{ + fun onClick(recordCaseEntity: RecordCaseEntity) + } + } \ 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/badcase/consts/BadCaseConfig.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt index 5ea74fecef..44c7041d9a 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt @@ -27,7 +27,10 @@ object BadCaseConfig { //工控机版本 @JvmField var dockerVersion:String ?= null - + @JvmField var recordKeyList:ArrayList = ArrayList() + //自定义Topic清单列表 + @JvmField + var customTopicList: ArrayList = ArrayList() } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml index 69ce03fc84..38c624c7f5 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml @@ -1,7 +1,7 @@ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml index 67a58891b6..4b5c5fb31e 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml @@ -1,7 +1,7 @@ \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordCaseEntity.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordCaseEntity.kt new file mode 100644 index 0000000000..8f50386f42 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordCaseEntity.kt @@ -0,0 +1,3 @@ +package com.mogo.eagle.core.data.badcase + +data class RecordCaseEntity(var caseId: Int,var caseName: String,var topicList: ArrayList) \ No newline at end of file From 69b65bcd5920e6d2105a09899ce07f521fbb1031 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Thu, 27 Oct 2022 15:07:53 +0800 Subject: [PATCH 146/203] =?UTF-8?q?2.11.0=20=20=E4=B8=8A=E7=BA=BF=E6=B3=A8?= =?UTF-8?q?=E6=8E=89=E7=BA=BF=E7=A8=8B=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3a14cfac1c..e7a2c2ae08 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -291,9 +291,9 @@ dependencies { androidTestImplementation rootProject.ext.dependencies.localbroadcastmanager androidTestImplementation rootProject.ext.dependencies.mogo_v2x - if (isAndroidTestBuild()) { - implementation "com.mogo.thread.opt:lib:${THREAD_OPT_VERSION}" - } +// if (isAndroidTestBuild()) { +// implementation "com.mogo.thread.opt:lib:${THREAD_OPT_VERSION}" +// } } if (!isAndroidTestBuild()) { From 6021a30ba9df697dcf89b5bb0944786dcd541850 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Thu, 27 Oct 2022 15:37:05 +0800 Subject: [PATCH 147/203] =?UTF-8?q?[2.12.0]=20bus=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=E7=BB=93=E6=9D=9F/=E8=B7=91=E5=AE=8C=E8=B7=AF?= =?UTF-8?q?=E7=BA=BF=E5=90=8E=E6=B8=85=E7=A9=BA=E9=B9=B0=E7=9C=BC=E5=B0=8F?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E8=BD=A8=E8=BF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/och/bus/fragment/BusFragment.java | 4 ++++ ...rsFragment.java => TaxiBeingServerdOrdersFragment.java} | 7 +++---- .../com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) rename OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/{CommonBeingServerdOrdersFragment.java => TaxiBeingServerdOrdersFragment.java} (99%) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java index a7341343f2..69132784aa 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java @@ -19,6 +19,7 @@ import com.mogo.eagle.core.data.temp.EventLogout; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.map.CallerHDMapManager; +import com.mogo.eagle.core.function.call.map.CallerSmpManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.map.MogoMarkerManager; @@ -421,6 +422,9 @@ public class BusFragment extends BaseBusTabFragment setOrRemoveMapMaker(false, BusConst.BUS_END_MAP_MAKER, endStation.getLat() , endStation.getLon(),R.raw.end_marker); } + + //清除鹰眼右下角小地图轨迹 + CallerSmpManager.clearPolyline(); } /** diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/CommonBeingServerdOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java similarity index 99% rename from OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/CommonBeingServerdOrdersFragment.java rename to OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java index d114e87532..2434a7fcec 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/CommonBeingServerdOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java @@ -18,7 +18,6 @@ import androidx.constraintlayout.widget.ConstraintLayout; import com.amap.api.navi.model.NaviLatLng; import com.mogo.commons.AbsMogoApplication; -import com.mogo.commons.voice.AIAssist; import com.mogo.eagle.core.data.map.CenterLine; import com.mogo.eagle.core.function.call.map.CallerHDMapManager; import com.mogo.eagle.core.function.call.map.CallerSmpManager; @@ -50,7 +49,7 @@ import java.util.List; * @since 2021/1/18 * 正在进行中订单 */ -public class CommonBeingServerdOrdersFragment extends BaseTaxiUIFragment +public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment implements View.OnClickListener, ICommonNaviChangedCallback { public static final String TAG = "OCHTaxiBeingServerd"; @@ -98,12 +97,12 @@ public class CommonBeingServerdOrdersFragment extends BaseTaxiUIFragment private volatile int saveOrderState = -1; - public static CommonBeingServerdOrdersFragment newInstance(Activity activity, TaxiFragment taxiFragment) { + public static TaxiBeingServerdOrdersFragment newInstance(Activity activity, TaxiFragment taxiFragment) { mActivity = activity; mTaxiFragment = taxiFragment; Bundle args = new Bundle(); - CommonBeingServerdOrdersFragment fragment = new CommonBeingServerdOrdersFragment(); + TaxiBeingServerdOrdersFragment fragment = new TaxiBeingServerdOrdersFragment(); fragment.setArguments(args); return fragment; } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java index ce0f7bb40d..eb8874dc3c 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiServerOrdersFragment.java @@ -51,7 +51,7 @@ public class TaxiServerOrdersFragment extends BaseTaxiUIFragment { private ViewPager mTaxiOrderPager; private String[] mTabTitles = {"进行中","待服务"}; private List fragments = new ArrayList<>(); - private CommonBeingServerdOrdersFragment beingServerdOrdersFragment = null; + private TaxiBeingServerdOrdersFragment beingServerdOrdersFragment = null; private TaxiReserveOrdersFragment reserveOrdersFragment = null; @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @@ -82,7 +82,7 @@ public class TaxiServerOrdersFragment extends BaseTaxiUIFragment { if (0 == i){ mTaxiOrderTab.addTab(tab,true); changeTabLayoutTabUI(tab,true); - beingServerdOrdersFragment = CommonBeingServerdOrdersFragment.newInstance(getActivity(),(TaxiFragment) getParentFragment()); + beingServerdOrdersFragment = TaxiBeingServerdOrdersFragment.newInstance(getActivity(),(TaxiFragment) getParentFragment()); fragments.add(beingServerdOrdersFragment); }else if (1 == i){ mTaxiOrderTab.addTab(tab); From b7a5727beb8a9511746eac46536087d23f53dbc8 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Thu, 27 Oct 2022 16:37:58 +0800 Subject: [PATCH 148/203] =?UTF-8?q?2.11.0=20=20removew=20=20=E8=98=91?= =?UTF-8?q?=E6=88=92=E5=AF=B9=E9=9F=B3=E9=87=8F=E9=94=AE=E7=9A=84=E6=98=A0?= =?UTF-8?q?=E5=B0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/main/MainLauncherActivity.java | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java index f2bf122979..deb9940ad2 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainLauncherActivity.java @@ -212,29 +212,29 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis @Override public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { //向上长按 开启自动驾驶 - long currentTime = System.currentTimeMillis() / (1000); - long oldTime = SharedPrefsMgr.getInstance(getContext()).getLong("old_time_up", 0); -// Log.d("liyz", "time = " + (currentTime - oldTime)); - if (currentTime - oldTime > 6) { - SharedPrefsMgr.getInstance(getContext()).putLong("old_time_up", System.currentTimeMillis() / 1000); -// ToastUtils.showShort("长按 ↑↑↑ 开启自动驾驶"); -// CallerAutoPilotManager.INSTANCE.setControlAutopilotCarAuto(true); - CallerAutoPilotManager.INSTANCE.startAutoPilot(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getAutopilotControlParameters()); - - } - - return true; - } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { //下和中间键盘长按,减速为-2 - long currentTime = System.currentTimeMillis() / (1000); - long oldTime = SharedPrefsMgr.getInstance(getContext()).getLong("old_time_down", 0); - if (currentTime - oldTime > 6) { - SharedPrefsMgr.getInstance(getContext()).putLong("old_time_down", System.currentTimeMillis() / 1000); -// ToastUtils.showShort("长按 ↓↓↓ 减速 -2 "); - sendAcc(true, -2); - } - return true; - } +// if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { //向上长按 开启自动驾驶 +// long currentTime = System.currentTimeMillis() / (1000); +// long oldTime = SharedPrefsMgr.getInstance(getContext()).getLong("old_time_up", 0); +//// Log.d("liyz", "time = " + (currentTime - oldTime)); +// if (currentTime - oldTime > 6) { +// SharedPrefsMgr.getInstance(getContext()).putLong("old_time_up", System.currentTimeMillis() / 1000); +//// ToastUtils.showShort("长按 ↑↑↑ 开启自动驾驶"); +//// CallerAutoPilotManager.INSTANCE.setControlAutopilotCarAuto(true); +// CallerAutoPilotManager.INSTANCE.startAutoPilot(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getAutopilotControlParameters()); +// +// } +// +// return true; +// } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { //下和中间键盘长按,减速为-2 +// long currentTime = System.currentTimeMillis() / (1000); +// long oldTime = SharedPrefsMgr.getInstance(getContext()).getLong("old_time_down", 0); +// if (currentTime - oldTime > 6) { +// SharedPrefsMgr.getInstance(getContext()).putLong("old_time_down", System.currentTimeMillis() / 1000); +//// ToastUtils.showShort("长按 ↓↓↓ 减速 -2 "); +// sendAcc(true, -2); +// } +// return true; +// } // Log.e("liyz", "onKeyDown keyCode = " + keyCode + "--action = " + event.getAction() + "---" + event); return super.onKeyDown(keyCode, event); From 45eddf619ce92d50f425dac86b79c966e99074de Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 27 Oct 2022 16:51:04 +0800 Subject: [PATCH 149/203] =?UTF-8?q?BadCase=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E5=BD=95=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/biz/CaseListDialog.java | 18 ++++++--- .../badcase/biz/CaseTopicListDialog.java | 37 ++++++++++--------- .../src/main/res/layout/item_case_list.xml | 8 ++-- .../main/res/layout/item_record_template.xml | 8 ++-- .../main/res/layout/layout_badcase_config.xml | 15 ++------ 5 files changed, 42 insertions(+), 44 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java index 07f6e8b59f..9756927f7f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java @@ -11,6 +11,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.mogo.eagle.core.data.badcase.RecordCaseEntity; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; import com.mogo.eagle.core.utilcode.util.ThreadUtils; import com.zhjt.mogo_core_function_devatools.R; @@ -75,6 +76,8 @@ public class CaseListDialog extends Dialog implements IMoGoAutopilotRecordListen public void onAttachedToWindow() { super.onAttachedToWindow(); CallerAutopilotRecordListenerManager.INSTANCE.addListener(TAG, this); + //获取数据采集录制模式配置列表 + CallerAutoPilotManager.INSTANCE.getBadCaseConfig(0, 0,new ArrayList<>()); } @Override @@ -94,13 +97,16 @@ public class CaseListDialog extends Dialog implements IMoGoAutopilotRecordListen ThreadUtils.runOnUiThread(() -> { if(config.getRecordTypesCount()>0){ for(int index=0;index topicList = new ArrayList<>(); - for(int position=0;position topicList = new ArrayList<>(); +// TODO java.lang.IndexOutOfBoundsException: Index: 38, Size: 38 +// for(int position=0;index0){ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java index bc34e091e5..7c54e6011c 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java @@ -156,26 +156,23 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL topicListAdapter.notifyDataSetChanged(); } }); - tvSave.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if(recordType!=null){ - Boolean success=CallerAutoPilotManager.INSTANCE.getBadCaseConfig(2,recordType.getId(),addTopicList); - if(Boolean.TRUE.equals(success)){ - ToastUtils.showShort("Topic设置成功"); - if(recordType.getId() == 0){ - //自定义Topic - BadCaseConfig.customTopicList.addAll(addTopicList); - } - addTopicList.clear(); - dismiss(); - }else{ - ToastUtils.showShort("Topic设置失败"); + tvSave.setOnClickListener(v -> { + if(recordType!=null){ + Boolean success=CallerAutoPilotManager.INSTANCE.getBadCaseConfig(2,recordType.getId(),addTopicList); + if(Boolean.TRUE.equals(success)){ + ToastUtils.showShort("Topic设置成功"); + if(recordType.getId() == 0){ + //自定义Topic + BadCaseConfig.customTopicList.addAll(addTopicList); } + addTopicList.clear(); + dismiss(); + }else{ + ToastUtils.showShort("Topic设置失败"); } - - } + + }); tvCancel.setOnClickListener(v -> { @@ -189,9 +186,13 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL ThreadUtils.runOnUiThread(() -> { if(config.getAllTopicsCount()>0){ for(int index=0;index diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml index 4b5c5fb31e..0041cf0c4a 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml @@ -10,9 +10,9 @@ android:layout_marginTop="20dp" android:clickable="true" android:focusable="true" - android:paddingStart="30dp" - android:paddingEnd="30dp" - android:layout_marginStart="20dp" - android:layout_marginEnd="20dp" + android:paddingStart="10dp" + android:paddingEnd="10dp" + android:layout_marginStart="15dp" + android:layout_marginEnd="15dp" > \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml index 3c9e609e2d..9e085c3874 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml @@ -315,20 +315,11 @@ app:layout_constraintLeft_toLeftOf="@id/tvRecordTemplate" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/tvRecordTemplate" + app:layout_constraintBottom_toBottomOf="parent" android:background="@drawable/template_list_bg" android:layout_marginTop="@dimen/dp_50" - android:paddingBottom="20dp" - /> - - From b31cbc58b11ef1662dbadf11644a961d222dd920 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 27 Oct 2022 17:04:50 +0800 Subject: [PATCH 150/203] =?UTF-8?q?=E8=BF=90=E8=90=A5=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=E5=B8=83=E5=B1=80=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/view_sop_setting.xml | 353 +++++++++--------- 1 file changed, 185 insertions(+), 168 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml index d95264b1c7..5644c7fbec 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml @@ -1,183 +1,200 @@ - - - + + - - - - - - - - + android:layout_height="match_parent" + tools:ignore="UselessParent"> - + - + + + + + + + + + + - + - + - + - + - + -