diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerAutopilotPlanningCallback.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerAutopilotPlanningCallback.java index 8d93dacbf1..b4c97ccd35 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerAutopilotPlanningCallback.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerAutopilotPlanningCallback.java @@ -13,6 +13,5 @@ import mogo.telematics.pad.MessagePad; public interface IBusPassengerAutopilotPlanningCallback { void routeResult(List models,int haveArrivedIndex); void routePlanningToNextStationChanged(long meters, long timeInSecond); - void setLineMarker(List models); void updateTotalDistance(); } diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/constant/BusPassengerConst.kt b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/constant/BusPassengerConst.kt index e2ba5ec9e0..c7b0368acd 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/constant/BusPassengerConst.kt +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/constant/BusPassengerConst.kt @@ -39,7 +39,7 @@ class BusPassengerConst { // 未到站(未到站) const val STATION_STATUS_ARRIVING = 3 - //bus平均速度 + //bus平均速度 bus的平均里程:25km/h const val BUS_AVERAGE_SPEED = 25 // 订单总里程 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 1e235f6565..80b648d14c 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 @@ -32,6 +32,8 @@ 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.NetworkUtils; +import com.mogo.eagle.core.utilcode.util.ToastUtils; +import com.mogo.och.bus.passenger.R; import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse; import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResponse; import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResult; @@ -45,8 +47,8 @@ import com.mogo.och.bus.passenger.constant.BusPassengerConst; import com.mogo.och.bus.passenger.network.BusPassengerModelLoopManager; import com.mogo.och.bus.passenger.network.BusPassengerServiceManager; import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; +import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; - import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -134,21 +136,31 @@ public class BusPassengerModel { private void queryDriverOperationStatus() { BusPassengerServiceManager.queryDriverOperationStatus(mContext , new OchCommonServiceCallback() { - @Override - public void onSuccess(BusPassengerOperationStatusResponse data) { - if (data == null || data.data == null) return; - if(mDriverStatusCallback != null){ - mDriverStatusCallback.changeOperationStatus(data.data.driverStatus == 1); - mDriverStatusCallback.updatePlateNumber(data.data.plateNumber); - } - } + @Override + public void onSuccess(BusPassengerOperationStatusResponse data) { + if (data == null || data.data == null) return; + if (mDriverStatusCallback != null) { + mDriverStatusCallback.changeOperationStatus(data.data.driverStatus == 1); + mDriverStatusCallback.updatePlateNumber(data.data.plateNumber); + } + } - @Override - public void onFail(int code, String msg) { - //延迟3s再次查询 - queryDriverOperationDelay(); - } - }); + @Override + public void onError() { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort(mContext.getString(R.string.network_error_tip)); + } else { + ToastUtils.showShort(mContext.getString(R.string.request_error_tip)); + } + queryDriverOperationDelay(); + } + + @Override + public void onFail(int code, String msg) { + //延迟3s再次查询 + queryDriverOperationDelay(); + } + }); } public void queryDriverSiteByCoordinate(){ @@ -160,6 +172,7 @@ public class BusPassengerModel { || data.getResult() == null || data.getResult().getSites() == null) { routesResult = null; + mNextStationIndex = 0; startOrStopCalculateRouteInfo(false); if (mRouteLineInfoCallback != null){ mRouteLineInfoCallback.showNoTaskView(); @@ -173,14 +186,20 @@ public class BusPassengerModel { updatePassengerRouteInfo(data.getResult()); } + @Override + public void onError() { + + } + @Override public void onFail(int code, String msg) { - //code = 1003; message = bus车辆已收车或未出车;bus driver shadow,not exists if (code == 1003){ routesResult = null; startOrStopCalculateRouteInfo(false); queryDriverOperationDelay(); + return; } + CallerLogger.INSTANCE.d( M_BUS_P + TAG, "queryDriverSiteByCoordinate = %s", msg ); } }); } @@ -256,6 +275,8 @@ public class BusPassengerModel { //2021.11.1 自动驾驶路线规划接口 CallerAutopilotPlanningListenerManager.INSTANCE.addListener(TAG,moGoAutopilotPlanningListener); + + AbnormalFactorsLoopManager.INSTANCE.startLoopAbnormalFactors(mContext); } private void releaseListeners() { @@ -269,6 +290,8 @@ public class BusPassengerModel { CallerAutoPilotStatusListenerManager.INSTANCE.removeListener(mGoAutopilotStatusListener); CallerAutopilotPlanningListenerManager.INSTANCE.removeListener(moGoAutopilotPlanningListener); + + AbnormalFactorsLoopManager.INSTANCE.stopLoopAbnormalFactors(); } //监听网络变化,避免启动机器时无网导致无法更新订单信息 @@ -386,7 +409,6 @@ public class BusPassengerModel { List routePoints = routeList.getWayPointsList(); if (null != routePoints && routePoints.size() > 0){ updateRoutePoints(routePoints); - setRouteLineMarker(); startToRouteAndWipe(); } } @@ -417,10 +439,10 @@ public class BusPassengerModel { int nextRouteIndex = CoordinateCalculateRouteUtil.getArrivedPointIndexNew(currentRouteIndex ,mRoutePoints ,stationNext.getGcjLon(),stationNext.getGcjLat()); - CallerLogger.INSTANCE.d(M_BUS_P + TAG, "currentRouteIndex = " + currentRouteIndex + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "轨迹排查==currentRouteIndex = " + currentRouteIndex + ", nextRouteIndex = " + nextRouteIndex); if (currentRouteIndex < nextRouteIndex){ //如果找到的next在起点的轨迹前面,直接舍弃这个轨迹,不显示 - mTwoStationsRouts.addAll(mRoutePoints.subList(currentRouteIndex,nextRouteIndex)); + mTwoStationsRouts.addAll(mRoutePoints.subList(currentRouteIndex,nextRouteIndex + 1)); } } }else { //只有两个站点的时候整个路线就是两个站点之间的轨迹 @@ -452,16 +474,25 @@ public class BusPassengerModel { } for (List lastPoints: lastPointsMap.values()){ + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "轨迹排查==lastPoints.size() = " + lastPoints.size()); float lastSumLength = 0; if (lastPoints.size() == 1){ //只是最后一个点,计算当前位置和最后一个点的距离 - lastSumLength = CoordinateUtils.calculateLineDistance( - lastPoints.get(0).getLongitude(), lastPoints.get(0).getLatitude(), - mLocation.getLongitude(), mLocation.getLatitude()); + if (mNextStationIndex <= mStations.size()-1 && mNextStationIndex >= 0){ + BusPassengerStation stationNext = mStations.get(mNextStationIndex); + lastSumLength = CoordinateUtils.calculateLineDistance( + stationNext.getGcjLon(), stationNext.getGcjLat(), + mLocation.getLongitude(), mLocation.getLatitude()); + }else { + lastSumLength = CoordinateUtils.calculateLineDistance( + lastPoints.get(0).getLongitude(), lastPoints.get(0).getLatitude(), + mLocation.getLongitude(), mLocation.getLatitude()); + } + }else { lastSumLength = CoordinateCalculateRouteUtil.calculateRouteSumLength(lastPoints); } double lastTime = lastSumLength / BusPassengerConst.BUS_AVERAGE_SPEED * 3.6 ; //秒 - CallerLogger.INSTANCE.d(M_BUS_P + TAG, "lastSumLength = " + lastSumLength); + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "轨迹排查==lastSumLength = " + lastSumLength); if (mAutopilotPlanningCallback != null){ mAutopilotPlanningCallback.routePlanningToNextStationChanged((long)lastSumLength,(long) lastTime); } @@ -509,17 +540,6 @@ public class BusPassengerModel { } } - /** - * 设置小地图路径的起终点marker - */ - public void setRouteLineMarker(){ - if (mAutopilotPlanningCallback != null && mRoutePoints != null){ - List routePoints = CoordinateCalculateRouteUtil - .coordinateConverterLocationToLatLng(mContext,mRoutePoints); - mAutopilotPlanningCallback.setLineMarker(routePoints); - } - } - /** * 开始轮询计算剩余里程和时间 * @param isStart diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java index f742af5eb1..b87abc0736 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java @@ -158,11 +158,6 @@ public class BaseBusPassengerPresenter extends Presenter mView.updateRoutePlanningToNextStation(meters, timeInSecond)); } - @Override - public void setLineMarker(List models) { - runOnUIThread(() -> mView.setLineMarker(models)); - } - @Override public void updateTotalDistance() { runOnUIThread(() -> mView.setProgressBarMax()); diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java index 5213372938..6a54479707 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java @@ -51,10 +51,6 @@ public class BusPassengerMapDirectionView private TextureMapView mAMapNaviView; private AMap mAMap; private Marker mCarMarker; - private Marker mStartMarker; - private Marker mEndMarker; - - private int mCurrentIndex = -1; private List mCoordinatesLatLng = new ArrayList<>(); //轨迹坐标数据 private List mLineStationLatLng = new ArrayList<>();//站点坐标数据 @@ -128,10 +124,6 @@ public class BusPassengerMapDirectionView mCarMarker = mAMap.addMarker(new MarkerOptions() .icon(BitmapDescriptorFactory.fromResource(R.drawable.bus_p_map_car)) .anchor(0.5f, 0.5f)); - mStartMarker = mAMap.addMarker(new MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.bus_p_map_view_dir_way_point))); - mEndMarker = mAMap.addMarker(new MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.bus_p_map_view_dir_end_point))); mArrivedRes = BitmapDescriptorFactory.fromResource(R.drawable.bus_p_map_arrow_arrived); mUnArrivedRes = BitmapDescriptorFactory.fromResource(R.drawable.bus_p_map_arrow_un_arrive); @@ -199,21 +191,18 @@ public class BusPassengerMapDirectionView //圈定地图显示范围 LatLngBounds.Builder boundsBuilder = new LatLngBounds.Builder(); - if (mLineStationLatLng.size() > 0){ + if (mCoordinatesLatLng.size() > 0){ //存放经纬度 - for (int i = 0; i < mLineStationLatLng.size(); i++) { - boundsBuilder.include(mLineStationLatLng.get(i)); + for (int i = 0; i < mCoordinatesLatLng.size(); i++) { + boundsBuilder.include(mCoordinatesLatLng.get(i)); } //第二个参数为四周留空宽度 - + }else if (mLineStationLatLng.size() > 0){ + for (int i = 0; i< mLineStationLatLng.size();i++){ + boundsBuilder.include(mLineStationLatLng.get(i)); + } } -// else { - //第二个参数为四周留空宽度 - //设置希望展示的地图缩放级别 -// CameraPosition cameraPosition = new CameraPosition.Builder() -// .target(mCarMarker.getPosition()).tilt(0).bearing(location.getBearing()).zoom(zoomLevel).build(); -// mAMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); -// } + boundsBuilder.include(currentLatLng); mAMap.moveCamera(CameraUpdateFactory.newLatLngBoundsRect(boundsBuilder.build(),100,100,100,100)); } @@ -270,33 +259,11 @@ public class BusPassengerMapDirectionView if (mPolyline != null) { mPolyline.remove(); } - if (mStartMarker != null) { - mStartMarker.setVisible(false); - } - if (mEndMarker != null) { - mEndMarker.setVisible(false); - } } @Override public void setLineMarker() { - if (mStartMarker != null) { - mStartMarker.setVisible(false); - } - if (mEndMarker != null) { - mEndMarker.setVisible(false); - } - if (mCoordinatesLatLng.size() > 2) { - // 设置开始结束Marker位置 - LatLng startLatLng = mCoordinatesLatLng.get(0); - LatLng endLatLng = mCoordinatesLatLng.get(mCoordinatesLatLng.size() - 1); - - mStartMarker.setPosition(startLatLng); - mEndMarker.setPosition(endLatLng); - mStartMarker.setVisible(true); - mEndMarker.setVisible(true); - } } public void clearCoordinatesLatLng(){ @@ -323,19 +290,12 @@ public class BusPassengerMapDirectionView if (mAMapNaviView != null) { mAMapNaviView.onPause(); } - mCurrentIndex = -1; } public void onDestroy() { if (mAMapNaviView != null) { mAMapNaviView.onDestroy(); } - mCurrentIndex = -1; - } - - public void setCoordinatesLatLng(List latLngs) { - mCoordinatesLatLng.clear(); - mCoordinatesLatLng.addAll(latLngs); } public void setCoordinatesLatLng(List latLngs,int haveArrivedIndex) { @@ -347,40 +307,28 @@ public class BusPassengerMapDirectionView public void clearLineMarkers(){ for (int i =0; i< mLineMarkers.size();i++){ mLineMarkers.get(i).setVisible(false); + mLineMarkers.get(i).remove(); } mLineMarkers.clear(); } - public void setLineMarkersAndDraw(List stationLatLngs){ + public void setLinePointMarkerAndDraw(List mLineStationsList, int currentIndex) { clearLineMarkers(); - for (int i = 0; i < stationLatLngs.size(); i++) { - Marker mWayPointMarker = mAMap.addMarker(new MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.bus_p_map_view_dir_way_point))); - mLineMarkers.add(mWayPointMarker); - } - if (mCoordinatesLatLng.size() == 0) { - for (int i = 0; i < mLineMarkers.size(); i++) { - mLineMarkers.get(i).setPosition(stationLatLngs.get(i)); - mLineMarkers.get(i).setVisible(true); - } - mCurrentIndex = -1; - } - } - - public void setLinePointMarkerAndDraw(List routeLineLatLngs, int currentIndex) { mLineStationLatLng.clear(); - mLineStationLatLng.addAll(routeLineLatLngs); + mLineStationLatLng.addAll(mLineStationsList); - if (mLineStationLatLng.size() > 0 && mCurrentIndex != currentIndex) { - if (mAMap != null && mLineMarkers.size() > 0) { - mCurrentIndex = currentIndex; - for (int i = 0; i < mLineMarkers.size(); i++) { - if (i != currentIndex && i + 1 != currentIndex) { - mLineMarkers.get(i).setPosition(mLineStationLatLng.get(i)); - mLineMarkers.get(i).setVisible(true); - } else { - mLineMarkers.get(i).setVisible(false); - } + if (mLineStationsList.size() > 0){ + for (int i = 0; i < mLineStationsList.size(); i++) { + if (currentIndex == i){ + Marker mEndMarker = mAMap.addMarker(new MarkerOptions() + .icon(BitmapDescriptorFactory.fromResource(R.drawable.bus_p_map_view_dir_end_point))); + mEndMarker.setPosition(mLineStationsList.get(i)); + mLineMarkers.add(i,mEndMarker); + }else { + Marker mStartMarker = mAMap.addMarker(new MarkerOptions() + .icon(BitmapDescriptorFactory.fromResource(R.drawable.bus_p_map_view_dir_way_point))); + mStartMarker.setPosition(mLineStationsList.get(i)); + mLineMarkers.add(i,mStartMarker); } } } 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 5e345ae9a5..512046dca3 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 @@ -26,7 +26,6 @@ import com.mogo.och.bus.passenger.constant.BusPassengerConst; import com.mogo.och.bus.passenger.presenter.BaseBusPassengerPresenter; import com.mogo.och.bus.passenger.ui.layoutmanager.CenterLayoutManager; import com.mogo.och.bus.passenger.utils.BPRouteDataTestUtils; -import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.wigets.MarqueeTextView; import java.util.ArrayList; @@ -46,7 +45,6 @@ public class BusPassengerRouteFragment extends private BusPassengerTrafficLightView mTrafficLightView; private List mStationsList = new ArrayList<>(); - private List mLineStationsList = new ArrayList<>(); private TextView mSpeedTv; private ConstraintLayout mNoLineInfoView; @@ -104,12 +102,6 @@ public class BusPassengerRouteFragment extends @Override public boolean onLongClick(View v) { BPRouteDataTestUtils.converToRouteData(); - UiThreadHandler.postDelayed(new Runnable() { - @Override - public void run() { - updateWayPointList(mStationsList,1); - } - },1000); return false; } }); @@ -156,22 +148,6 @@ public class BusPassengerRouteFragment extends } } - public void setLineMarker(List latLngList){ - if (latLngList.size() > 0) { - if (mMapDirectionView != null) { - mMapDirectionView.setCoordinatesLatLng(latLngList); - UiThreadHandler.post(new Runnable() { - @Override - public void run() { - mMapDirectionView.setLineMarker(); - } - }); - } - } else { - clearMapView(); - } - } - /** * 绘制 * @@ -213,18 +189,6 @@ public class BusPassengerRouteFragment extends } } - public void setLineMarkers(List list) { - if (mMapDirectionView != null) { - UiThreadHandler.post(new Runnable() { - @Override - public void run() { - mMapDirectionView.setLineMarkersAndDraw(list); - - } - }); - } - } - public void changeOperationStatus(boolean status) { if (status) { mNoLineInfoView.setVisibility(View.GONE); @@ -298,13 +262,13 @@ public class BusPassengerRouteFragment extends } private void updateWayPointList(List stations,int currentStationIndex) { - mLineStationsList.clear(); + List mLineStationsList = new ArrayList<>(); for (int i = 0; i< stations.size(); i++) {//站点集合 - LatLng latLng = CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(getContext() - ,stations.get(i).getLon(),stations.get(i).getLat());// lat,lon +// LatLng latLng = CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(getContext() +// ,stations.get(i).getLon(),stations.get(i).getLat());// lat,lon + LatLng latLng = new LatLng(stations.get(i).getGcjLat(),stations.get(i).getGcjLon());// lat,lon mLineStationsList.add(latLng); } - setLineMarkers(mLineStationsList); if (mMapDirectionView != null) { UiThreadHandler.post(new Runnable() { diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/utils/BPRouteDataTestUtils.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/utils/BPRouteDataTestUtils.java index c9f8c83d62..ac7db3446d 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/utils/BPRouteDataTestUtils.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/utils/BPRouteDataTestUtils.java @@ -17,10 +17,20 @@ import mogo.telematics.pad.MessagePad; public class BPRouteDataTestUtils { //13号路口起-13号路口终 +// static String jsonStr ="{\n" + +// " \"models\": [\n" + +// " {\n" + +// " \"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19927760268911,\"lon\":116.73512607061035,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19927736555187,\"lon\":116.73498243020299,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19927135941599,\"lon\":116.73482951462647,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199260672670036,\"lon\":116.73468429259535,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199251260349946,\"lon\":116.73453933465,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19924691997577,\"lon\":116.7343756435551,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199247953493625,\"lon\":116.73421240809087,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19924986849947,\"lon\":116.73400425509712,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199249431152175,\"lon\":116.73378579041055,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199248921305724,\"lon\":116.73357811807278,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19925012387371,\"lon\":116.73337650020184,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199252270195075,\"lon\":116.73318223781153,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.1992521615169,\"lon\":116.73298632625203,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19925202633083,\"lon\":116.73279582043983,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199261230205735,\"lon\":116.73263403473568,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199327991681926,\"lon\":116.73251962434813,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19944850496711,\"lon\":116.73249661840195,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199582026896415,\"lon\":116.73251038561487,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199743326352014,\"lon\":116.73253087453938,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199908347167394,\"lon\":116.73255070500186,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.200065950595445,\"lon\":116.7325720694418,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20022747460407,\"lon\":116.73259461416663,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.200384057310536,\"lon\":116.73261575018056,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20053849777916,\"lon\":116.73263451936387,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.200696919444624,\"lon\":116.7326540541723,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2008524952796,\"lon\":116.7326743511824,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20101429705625,\"lon\":116.73269393580199,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20118279997041,\"lon\":116.73271564378308,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201342388452076,\"lon\":116.73273653366076,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201476063822355,\"lon\":116.73275292393079,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20163479199852,\"lon\":116.73277440686762,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20181243476041,\"lon\":116.7328052766508,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201991767093304,\"lon\":116.7328453845644,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20215573733484,\"lon\":116.73287624009339,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202313648759784,\"lon\":116.73289887933315,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202434745374454,\"lon\":116.7329182210956,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20253164952098,\"lon\":116.73297539811277,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20258043275509,\"lon\":116.73312335324984,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20258233576585,\"lon\":116.73331077089557,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20257107560234,\"lon\":116.73351244039137,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202561578580514,\"lon\":116.73370176209845,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20256256788661,\"lon\":116.73391325024126,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20255633158834,\"lon\":116.73413195000244,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202543311179575,\"lon\":116.73436614303907,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20253067346457,\"lon\":116.73458032609663,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20251776111356,\"lon\":116.73477082198242,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202503997557805,\"lon\":116.73498624001282,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20249129260376,\"lon\":116.73518976336872,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20247877796589,\"lon\":116.73537786253135,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20246651610268,\"lon\":116.73559239130266,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20245754388014,\"lon\":116.73574239922202,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20244749208,\"lon\":116.73589674090469,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243806550113,\"lon\":116.73607057284322,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243550556816,\"lon\":116.73628106525871,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243654127756,\"lon\":116.7364949950665,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243738221016,\"lon\":116.7367061649993,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243672476754,\"lon\":116.73691115930336,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243590788176,\"lon\":116.73710722104272,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202436434375336,\"lon\":116.73730688607075,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243749821501,\"lon\":116.73750140347998,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243625962803,\"lon\":116.73771330926793,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202434515480725,\"lon\":116.73791895606205,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2024326561388,\"lon\":116.73815206945737,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243092086137,\"lon\":116.73838655528765,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202430876006126,\"lon\":116.73861890759498,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20242914053177,\"lon\":116.73882029918758,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20242843336561,\"lon\":116.73904465495175,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20242661219026,\"lon\":116.73922453252953,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202426462811076,\"lon\":116.7393708046956,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20242687134937,\"lon\":116.73954685547025,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20242694967377,\"lon\":116.73975021183773,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202424630601236,\"lon\":116.73999740812975,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202422502184625,\"lon\":116.74028266774337,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202419634158936,\"lon\":116.7405942561498,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241975959762,\"lon\":116.7409069557092,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241920524113,\"lon\":116.74120156191647,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241765540262,\"lon\":116.74149288504978,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241569149764,\"lon\":116.7418080096762,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202414529497084,\"lon\":116.74210262897205,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241419532155,\"lon\":116.74241767661879,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202413879360954,\"lon\":116.7427571218185,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241287045245,\"lon\":116.7431284691325,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241214965105,\"lon\":116.74343354359334,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241141271715,\"lon\":116.7437220210538,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2024080520075,\"lon\":116.74399113498052,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202391714280026,\"lon\":116.74427625698272,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20238163805639,\"lon\":116.74452083315958,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202379293010274,\"lon\":116.74475703837204,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202379007817086,\"lon\":116.7449961645494,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20237814181231,\"lon\":116.7452036063558,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202375477619896,\"lon\":116.74539567654291,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2023632396621,\"lon\":116.74555457589031,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20229396554444,\"lon\":116.7456716047369,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20217800547467,\"lon\":116.74574081942625,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202047498095304,\"lon\":116.74573659255675,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20188573786706,\"lon\":116.74571018281719,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201738240263026,\"lon\":116.74568463148606,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20157507049073,\"lon\":116.74565525041498,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20137985142042,\"lon\":116.745619970576,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201187335613575,\"lon\":116.74558631350607,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20098251429043,\"lon\":116.74555055587679,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2007748533628,\"lon\":116.74551426934663,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20057082986032,\"lon\":116.74547749663195,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20036944224329,\"lon\":116.74544156175533,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20016365229035,\"lon\":116.74540577510051,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.1999958572445,\"lon\":116.74537505807076,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19984100521566,\"lon\":116.7453433678602,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.1996863960282,\"lon\":116.74529675648621,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19953919567943,\"lon\":116.74525916493474,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19940587189373,\"lon\":116.74523402869453,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19929047792381,\"lon\":116.74518617038383,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19922141745155,\"lon\":116.74506912884067,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19920798885308,\"lon\":116.744896716334,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19920912644279,\"lon\":116.74467216715483,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199209186509314,\"lon\":116.74448257515108,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19920910709997,\"lon\":116.74430613406223,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.1992100786082,\"lon\":116.74410888316238,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19921081961254,\"lon\":116.74391968819582,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19921040855518,\"lon\":116.7437082083402,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19921085053439,\"lon\":116.74346931155634,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19921197237373,\"lon\":116.74325149697013,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19921248248983,\"lon\":116.74301103786591,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.1992139724646,\"lon\":116.74277237066539,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199215818352386,\"lon\":116.74253219408898,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199216175018876,\"lon\":116.74228853120842,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199215970354246,\"lon\":116.74204663206451,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199216627492966,\"lon\":116.74183871233049,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19921789170398,\"lon\":116.74165788334192,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19922000138535,\"lon\":116.74144512197054,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199221559127494,\"lon\":116.741249370491,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19922287231889,\"lon\":116.7410525810756,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19922229019589,\"lon\":116.74085266662037,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.1992216995901,\"lon\":116.74061957723823,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19922263073874,\"lon\":116.74041638149129,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19922478093337,\"lon\":116.7402123910757,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199227066091595,\"lon\":116.74003419421553,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199228634241756,\"lon\":116.73985841944678,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19922951636012,\"lon\":116.7397079274105,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199252095329484,\"lon\":116.73956265582487,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199346162997905,\"lon\":116.73944690416265,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199470799628024,\"lon\":116.73941941053417,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19962513314346,\"lon\":116.7394280706812,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199780626058924,\"lon\":116.73944255215424,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199961525343376,\"lon\":116.73945856750177,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20016196947193,\"lon\":116.73947572081121,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.200384479551936,\"lon\":116.7394949225795,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.200595083817475,\"lon\":116.73951027963179,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.200792203321086,\"lon\":116.73952526850614,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.200985930701684,\"lon\":116.73954125209579,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20115978977055,\"lon\":116.73955610094161,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201321019536124,\"lon\":116.7395695239138,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20147117943043,\"lon\":116.7395823299481,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20163699848565,\"lon\":116.73959633422596,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20178484338371,\"lon\":116.7396085776486,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201962185646316,\"lon\":116.73962351991214,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2021018923927,\"lon\":116.7396354059821,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2022137620686,\"lon\":116.73964348380458,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20232600820075,\"lon\":116.73961190446633,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241090270993,\"lon\":116.73951649703137,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20245777783807,\"lon\":116.73937664238166,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20246906634823,\"lon\":116.73920146119093,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202470916682884,\"lon\":116.73898763065634,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20247034830421,\"lon\":116.73878158418357,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20246978204673,\"lon\":116.73857680142473,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20247082638905,\"lon\":116.73834517890637,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202471943178196,\"lon\":116.7381047689514,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20247131648035,\"lon\":116.73787761484981,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202470799473765,\"lon\":116.73766230702478,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20247013054322,\"lon\":116.73743619407796,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20246999515433,\"lon\":116.73724916823292,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20247199652478,\"lon\":116.73704888970806,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202473960263525,\"lon\":116.73684083235807,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202474504753205,\"lon\":116.73665462440796,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20247501354581,\"lon\":116.73650710371837,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20246541231906,\"lon\":116.73635807696789,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202426768984274,\"lon\":116.73622283382787,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20236638788854,\"lon\":116.73610589402243,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20227106919894,\"lon\":116.73600895001849,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2021428343084,\"lon\":116.73596816020945,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20197815580698,\"lon\":116.73594623645097,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20181789535303,\"lon\":116.73593148707488,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201667906886954,\"lon\":116.73591743008926,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201505897730755,\"lon\":116.7359002912543,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20135083580946,\"lon\":116.73588579696379,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20118617904595,\"lon\":116.73586970398149,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20102374028594,\"lon\":116.73585314703226,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20085554043743,\"lon\":116.73583763953049,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20069451888229,\"lon\":116.73582073901778,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.200530837344964,\"lon\":116.73580314359012,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2003608457064,\"lon\":116.73578183888779,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20021770046798,\"lon\":116.73575292592922,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20003454701824,\"lon\":116.7357174959358,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19986125116602,\"lon\":116.73569499961796,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19969408518737,\"lon\":116.73567725223492,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19955533048882,\"lon\":116.73566375985422,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19943174810538,\"lon\":116.73564927714162,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19933167546824,\"lon\":116.735595995086,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199280357603875,\"lon\":116.73546293260645,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19927848361656,\"lon\":116.73531579486274,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19928127892504,\"lon\":116.73505848474375,\"speed\": 0.0\n" + +// " }\n" + +// " ]\n" + +// "}"; + + //洱海轨迹 static String jsonStr ="{\n" + " \"models\": [\n" + " {\n" + - " \"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19927760268911,\"lon\":116.73512607061035,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19927736555187,\"lon\":116.73498243020299,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19927135941599,\"lon\":116.73482951462647,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199260672670036,\"lon\":116.73468429259535,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199251260349946,\"lon\":116.73453933465,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19924691997577,\"lon\":116.7343756435551,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199247953493625,\"lon\":116.73421240809087,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19924986849947,\"lon\":116.73400425509712,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199249431152175,\"lon\":116.73378579041055,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199248921305724,\"lon\":116.73357811807278,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19925012387371,\"lon\":116.73337650020184,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199252270195075,\"lon\":116.73318223781153,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.1992521615169,\"lon\":116.73298632625203,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19925202633083,\"lon\":116.73279582043983,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199261230205735,\"lon\":116.73263403473568,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199327991681926,\"lon\":116.73251962434813,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19944850496711,\"lon\":116.73249661840195,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199582026896415,\"lon\":116.73251038561487,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199743326352014,\"lon\":116.73253087453938,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199908347167394,\"lon\":116.73255070500186,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.200065950595445,\"lon\":116.7325720694418,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20022747460407,\"lon\":116.73259461416663,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.200384057310536,\"lon\":116.73261575018056,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20053849777916,\"lon\":116.73263451936387,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.200696919444624,\"lon\":116.7326540541723,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2008524952796,\"lon\":116.7326743511824,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20101429705625,\"lon\":116.73269393580199,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20118279997041,\"lon\":116.73271564378308,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201342388452076,\"lon\":116.73273653366076,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201476063822355,\"lon\":116.73275292393079,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20163479199852,\"lon\":116.73277440686762,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20181243476041,\"lon\":116.7328052766508,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201991767093304,\"lon\":116.7328453845644,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20215573733484,\"lon\":116.73287624009339,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202313648759784,\"lon\":116.73289887933315,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202434745374454,\"lon\":116.7329182210956,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20253164952098,\"lon\":116.73297539811277,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20258043275509,\"lon\":116.73312335324984,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20258233576585,\"lon\":116.73331077089557,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20257107560234,\"lon\":116.73351244039137,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202561578580514,\"lon\":116.73370176209845,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20256256788661,\"lon\":116.73391325024126,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20255633158834,\"lon\":116.73413195000244,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202543311179575,\"lon\":116.73436614303907,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20253067346457,\"lon\":116.73458032609663,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20251776111356,\"lon\":116.73477082198242,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202503997557805,\"lon\":116.73498624001282,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20249129260376,\"lon\":116.73518976336872,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20247877796589,\"lon\":116.73537786253135,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20246651610268,\"lon\":116.73559239130266,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20245754388014,\"lon\":116.73574239922202,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20244749208,\"lon\":116.73589674090469,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243806550113,\"lon\":116.73607057284322,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243550556816,\"lon\":116.73628106525871,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243654127756,\"lon\":116.7364949950665,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243738221016,\"lon\":116.7367061649993,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243672476754,\"lon\":116.73691115930336,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243590788176,\"lon\":116.73710722104272,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202436434375336,\"lon\":116.73730688607075,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243749821501,\"lon\":116.73750140347998,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243625962803,\"lon\":116.73771330926793,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202434515480725,\"lon\":116.73791895606205,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2024326561388,\"lon\":116.73815206945737,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20243092086137,\"lon\":116.73838655528765,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202430876006126,\"lon\":116.73861890759498,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20242914053177,\"lon\":116.73882029918758,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20242843336561,\"lon\":116.73904465495175,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20242661219026,\"lon\":116.73922453252953,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202426462811076,\"lon\":116.7393708046956,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20242687134937,\"lon\":116.73954685547025,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20242694967377,\"lon\":116.73975021183773,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202424630601236,\"lon\":116.73999740812975,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202422502184625,\"lon\":116.74028266774337,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202419634158936,\"lon\":116.7405942561498,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241975959762,\"lon\":116.7409069557092,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241920524113,\"lon\":116.74120156191647,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241765540262,\"lon\":116.74149288504978,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241569149764,\"lon\":116.7418080096762,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202414529497084,\"lon\":116.74210262897205,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241419532155,\"lon\":116.74241767661879,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202413879360954,\"lon\":116.7427571218185,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241287045245,\"lon\":116.7431284691325,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241214965105,\"lon\":116.74343354359334,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241141271715,\"lon\":116.7437220210538,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2024080520075,\"lon\":116.74399113498052,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202391714280026,\"lon\":116.74427625698272,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20238163805639,\"lon\":116.74452083315958,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202379293010274,\"lon\":116.74475703837204,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202379007817086,\"lon\":116.7449961645494,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20237814181231,\"lon\":116.7452036063558,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202375477619896,\"lon\":116.74539567654291,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2023632396621,\"lon\":116.74555457589031,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20229396554444,\"lon\":116.7456716047369,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20217800547467,\"lon\":116.74574081942625,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202047498095304,\"lon\":116.74573659255675,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20188573786706,\"lon\":116.74571018281719,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201738240263026,\"lon\":116.74568463148606,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20157507049073,\"lon\":116.74565525041498,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20137985142042,\"lon\":116.745619970576,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201187335613575,\"lon\":116.74558631350607,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20098251429043,\"lon\":116.74555055587679,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2007748533628,\"lon\":116.74551426934663,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20057082986032,\"lon\":116.74547749663195,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20036944224329,\"lon\":116.74544156175533,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20016365229035,\"lon\":116.74540577510051,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.1999958572445,\"lon\":116.74537505807076,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19984100521566,\"lon\":116.7453433678602,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.1996863960282,\"lon\":116.74529675648621,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19953919567943,\"lon\":116.74525916493474,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19940587189373,\"lon\":116.74523402869453,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19929047792381,\"lon\":116.74518617038383,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19922141745155,\"lon\":116.74506912884067,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19920798885308,\"lon\":116.744896716334,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19920912644279,\"lon\":116.74467216715483,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199209186509314,\"lon\":116.74448257515108,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19920910709997,\"lon\":116.74430613406223,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.1992100786082,\"lon\":116.74410888316238,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19921081961254,\"lon\":116.74391968819582,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19921040855518,\"lon\":116.7437082083402,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19921085053439,\"lon\":116.74346931155634,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19921197237373,\"lon\":116.74325149697013,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19921248248983,\"lon\":116.74301103786591,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.1992139724646,\"lon\":116.74277237066539,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199215818352386,\"lon\":116.74253219408898,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199216175018876,\"lon\":116.74228853120842,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199215970354246,\"lon\":116.74204663206451,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199216627492966,\"lon\":116.74183871233049,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19921789170398,\"lon\":116.74165788334192,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19922000138535,\"lon\":116.74144512197054,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199221559127494,\"lon\":116.741249370491,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19922287231889,\"lon\":116.7410525810756,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19922229019589,\"lon\":116.74085266662037,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.1992216995901,\"lon\":116.74061957723823,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19922263073874,\"lon\":116.74041638149129,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19922478093337,\"lon\":116.7402123910757,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199227066091595,\"lon\":116.74003419421553,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199228634241756,\"lon\":116.73985841944678,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19922951636012,\"lon\":116.7397079274105,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199252095329484,\"lon\":116.73956265582487,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199346162997905,\"lon\":116.73944690416265,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199470799628024,\"lon\":116.73941941053417,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19962513314346,\"lon\":116.7394280706812,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199780626058924,\"lon\":116.73944255215424,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199961525343376,\"lon\":116.73945856750177,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20016196947193,\"lon\":116.73947572081121,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.200384479551936,\"lon\":116.7394949225795,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.200595083817475,\"lon\":116.73951027963179,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.200792203321086,\"lon\":116.73952526850614,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.200985930701684,\"lon\":116.73954125209579,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20115978977055,\"lon\":116.73955610094161,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201321019536124,\"lon\":116.7395695239138,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20147117943043,\"lon\":116.7395823299481,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20163699848565,\"lon\":116.73959633422596,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20178484338371,\"lon\":116.7396085776486,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201962185646316,\"lon\":116.73962351991214,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2021018923927,\"lon\":116.7396354059821,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2022137620686,\"lon\":116.73964348380458,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20232600820075,\"lon\":116.73961190446633,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20241090270993,\"lon\":116.73951649703137,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20245777783807,\"lon\":116.73937664238166,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20246906634823,\"lon\":116.73920146119093,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202470916682884,\"lon\":116.73898763065634,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20247034830421,\"lon\":116.73878158418357,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20246978204673,\"lon\":116.73857680142473,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20247082638905,\"lon\":116.73834517890637,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202471943178196,\"lon\":116.7381047689514,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20247131648035,\"lon\":116.73787761484981,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202470799473765,\"lon\":116.73766230702478,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20247013054322,\"lon\":116.73743619407796,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20246999515433,\"lon\":116.73724916823292,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20247199652478,\"lon\":116.73704888970806,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202473960263525,\"lon\":116.73684083235807,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202474504753205,\"lon\":116.73665462440796,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20247501354581,\"lon\":116.73650710371837,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20246541231906,\"lon\":116.73635807696789,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.202426768984274,\"lon\":116.73622283382787,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20236638788854,\"lon\":116.73610589402243,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20227106919894,\"lon\":116.73600895001849,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2021428343084,\"lon\":116.73596816020945,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20197815580698,\"lon\":116.73594623645097,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20181789535303,\"lon\":116.73593148707488,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201667906886954,\"lon\":116.73591743008926,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.201505897730755,\"lon\":116.7359002912543,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20135083580946,\"lon\":116.73588579696379,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20118617904595,\"lon\":116.73586970398149,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20102374028594,\"lon\":116.73585314703226,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20085554043743,\"lon\":116.73583763953049,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20069451888229,\"lon\":116.73582073901778,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.200530837344964,\"lon\":116.73580314359012,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.2003608457064,\"lon\":116.73578183888779,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20021770046798,\"lon\":116.73575292592922,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.20003454701824,\"lon\":116.7357174959358,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19986125116602,\"lon\":116.73569499961796,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19969408518737,\"lon\":116.73567725223492,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19955533048882,\"lon\":116.73566375985422,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19943174810538,\"lon\":116.73564927714162,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19933167546824,\"lon\":116.735595995086,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.199280357603875,\"lon\":116.73546293260645,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19927848361656,\"lon\":116.73531579486274,\"speed\":0.0},{\"altitude\":0.0,\"angle\":0.0,\"duration\":0,\"lat\":40.19928127892504,\"lon\":116.73505848474375,\"speed\": 0.0\n" + + "\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.87506159122434,\"longitude_\":100.13463113454593,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.874963432017065,\"longitude_\":100.13431083742782,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.87481475105022,\"longitude_\":100.13402921175965,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.874646001578594,\"longitude_\":100.13381071517328,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.874280379177108,\"longitude_\":100.13344505101841,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.87422474353087,\"longitude_\":100.13336522063217,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.8741846037573,\"longitude_\":100.13326081770579,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.874169301193604,\"longitude_\":100.133157732712,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.87417865388365,\"longitude_\":100.13305383003687,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.87424355168725,\"longitude_\":100.13288988207758,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.87441186213399,\"longitude_\":100.1326293335985,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.874490698935094,\"longitude_\":100.13247594955229,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.874551609777672,\"longitude_\":100.13227787460397,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.874574232444672,\"longitude_\":100.1320943662068,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.874574936235152,\"longitude_\":100.13109176087639,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.874553271326842,\"longitude_\":100.13095333429315,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.874468877309848,\"longitude_\":100.1307193884582,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.874449652750723,\"longitude_\":100.1306199898516,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.874449487671647,\"longitude_\":100.13046154976821,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.87448439242463,\"longitude_\":100.13030173580755,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.874554236422213,\"longitude_\":100.13013644761386,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.874657614202334,\"longitude_\":100.1299792051648,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.874777620037,\"longitude_\":100.12985830283493,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.8749211786138,\"longitude_\":100.12975642056448,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.875123187810807,\"longitude_\":100.12965486650492,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.875282658783302,\"longitude_\":100.12960819854966,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.87555277290776,\"longitude_\":100.12954493830546,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.875686392944456,\"longitude_\":100.12948797177033,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.87609150201856,\"longitude_\":100.12914349760804,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.87645852877848,\"longitude_\":100.1289124421148,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.87667085149294,\"longitude_\":100.1288070141346,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.877063427631544,\"longitude_\":100.12866094818,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.87751767381502,\"longitude_\":100.1286538378911,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.87776644058061,\"longitude_\":100.12861180318971,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.87866240134362,\"longitude_\":100.12843614360035,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.879103098247672,\"longitude_\":100.12837521690956,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.879326467139197,\"longitude_\":100.12832846342278,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.8800083487784,\"longitude_\":100.12811951944514,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.88019070137511,\"longitude_\":100.12802255167708,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.880357426115513,\"longitude_\":100.12787083439976,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.880481954487596,\"longitude_\":100.1276940858994,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.880653097994426,\"longitude_\":100.12740127585158,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.880758517533007,\"longitude_\":100.12730743064938,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.880799507331627,\"longitude_\":100.12724835914499,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.88098572681533,\"longitude_\":100.12658255210448,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.881039332211476,\"longitude_\":100.1263847771375,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.881100185621683,\"longitude_\":100.12625820340021,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.881198711287677,\"longitude_\":100.12611952057267,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.88133930457031,\"longitude_\":100.12599337741426,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.881467122690022,\"longitude_\":100.12592180492642,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.88159423650277,\"longitude_\":100.12588048516646,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.882012210316635,\"longitude_\":100.12584119198453,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.88240347787595,\"longitude_\":100.12581569076075,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.882530989675523,\"longitude_\":100.1258417579907,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.88266718412272,\"longitude_\":100.1258996456634,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.882846062879587,\"longitude_\":100.12604302069693,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.883143169798704,\"longitude_\":100.12643363872347,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.883316147374213,\"longitude_\":100.12660436351877,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.883516631635977,\"longitude_\":100.12670006660859,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.884412161186358,\"longitude_\":100.12681096840119,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.88456077756699,\"longitude_\":100.12680626559008,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.88490956874977,\"longitude_\":100.12672087342608,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.885302490381278,\"longitude_\":100.12667304829165,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.885521440240353,\"longitude_\":100.1266801970379,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.885748782438256,\"longitude_\":100.12673442989593,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.886184311775366,\"longitude_\":100.12689928223388,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.886371044711435,\"longitude_\":100.12693222015717,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.886556923046193,\"longitude_\":100.12691593845197,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.887058969863556,\"longitude_\":100.1267783886852,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.887547354704896,\"longitude_\":100.12664214250168,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.887745630547965,\"longitude_\":100.12661296296805,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.887952855908765,\"longitude_\":100.12663469253742,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.88838254724211,\"longitude_\":100.1267432660041,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.88867177268486,\"longitude_\":100.12674878070436,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.888948154040733,\"longitude_\":100.12668867979535,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.889119678251383,\"longitude_\":100.12661519197152,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.88965548111457,\"longitude_\":100.12632103004057,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.890440398289833,\"longitude_\":100.12572932612804,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.890595726487316,\"longitude_\":100.12569393173928,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.89083685708941,\"longitude_\":100.12572825271758,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.89092017694698,\"longitude_\":100.12571880871474,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.891037856897587,\"longitude_\":100.12567497177714,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.891761687561317,\"longitude_\":100.12513259535619,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.891885118463794,\"longitude_\":100.1250643533811,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.89201181287785,\"longitude_\":100.1250211908644,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.892633993404484,\"longitude_\":100.12487357365991,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.892723272763575,\"longitude_\":100.12483263537747,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.892820100842155,\"longitude_\":100.12471361851891,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.89291347694438,\"longitude_\":100.12434808103623,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.892985029043015,\"longitude_\":100.12422953782732,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.89308490178189,\"longitude_\":100.12416612695728,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.893360731467585,\"longitude_\":100.12410368114618,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.894308353220502,\"longitude_\":100.12396602611501,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.895020251951685,\"longitude_\":100.12387330229565,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0},{\"altitude_\":0.0,\"heading_\":0.0,\"latitude_\":25.895317877980734,\"longitude_\":100.12387135197324,\"memoizedIsInitialized\":-1,\"unknownFields\":{\"fields\":{},\"fieldsDescending\":{}},\"memoizedSize\":-1,\"memoizedHashCode\":0" + + " }\n" + " ]\n" + "}"; @@ -34,13 +44,12 @@ public class BPRouteDataTestUtils { for (int i = 0; i < jsonElements.length(); i++) { JSONObject s = jsonElements.getJSONObject(i); MessagePad.Location.Builder builder = MessagePad.Location.newBuilder(); - builder.setLatitude(s.getDouble("lat")); - builder.setLongitude(s.getDouble("lon")); + builder.setLatitude(s.getDouble("latitude_")); + builder.setLongitude(s.getDouble("longitude_")); list.add(builder.build()); } BusPassengerModel.getInstance().updateRoutePoints(list); BusPassengerModel.getInstance().startRemainRouteInfo(); - BusPassengerModel.getInstance().setRouteLineMarker(); BusPassengerModel.getInstance().startToRouteAndWipe(); } catch (JSONException e) { e.printStackTrace(); diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/BusProvider.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/BusProvider.java index 629183bbb7..7e04f66bd0 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/BusProvider.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/BusProvider.java @@ -60,7 +60,9 @@ public class BusProvider implements IMogoOCH { } else { busFragment = new BusFragment(); } - supportFragmentManager.beginTransaction().add(containerId, busFragment, BusFragment.TAG).commitAllowingStateLoss(); + if(!busFragment.isAdded()) { + supportFragmentManager.beginTransaction().add(containerId, busFragment, BusFragment.TAG).commitAllowingStateLoss(); + } return; } CallerLogger.INSTANCE.d(TAG, "准备show fragment"); diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/constant/BusConst.kt b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/constant/BusConst.kt index 686e08b4e4..e98439b8f1 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/constant/BusConst.kt +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/constant/BusConst.kt @@ -63,6 +63,7 @@ class BusConst { const val EVENT_PARAM_END_NAME = "end_name" const val EVENT_PARAM_LINE_ID = "line_id" const val EVENT_PARAM_START_RESULT = "start_autopilot" // true/false + const val EVENT_PARAM_START_FAILURE_CODE = "start_autopilot_failure_code" // 启动自驾失败code const val EVENT_PARAM_START_FAILURE_MSG = "start_autopilot_failure_msg" // 启动自驾失败原因 const val EVENT_PARAM_PLATE_NUM = "plate_number" // 车牌号 const val EVENT_PARAM_ENV_ONLINE = "env_online" // 是否线上环境:true/false 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 c1804854c0..a0323b8b0f 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 @@ -6,6 +6,7 @@ import com.mogo.commons.AbsMogoApplication; import com.mogo.eagle.core.utilcode.util.NetworkUtils; import com.mogo.eagle.core.utilcode.util.SharedPrefs; import com.mogo.eagle.core.utilcode.util.ToastUtils; +import com.mogo.och.bus.R; import com.mogo.och.bus.bean.BusQueryLineTaskResponse; import com.mogo.och.bus.bean.BusQueryLinesResponse; import com.mogo.och.bus.bean.BusRoutesResponse; @@ -56,6 +57,15 @@ public class BusLineModel { } } + @Override + public void 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 public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { @@ -86,6 +96,15 @@ public class BusLineModel { } } + @Override + public void 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 public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { @@ -107,6 +126,15 @@ public class BusLineModel { } } + @Override + public void 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 public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { 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 e46780606e..148aa350ca 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 @@ -68,6 +68,8 @@ import com.mogo.och.common.module.utils.PinYinUtil; import com.mogo.och.common.module.utils.ToastUtilsOch; import com.mogo.och.common.module.voice.VoiceNotice; +import org.jetbrains.annotations.NotNull; + import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -118,7 +120,7 @@ public class BusOrderModel { private volatile int firstStartAutopilot = 0; private LoginService loginService; - + private final Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { @@ -160,11 +162,11 @@ public class BusOrderModel { OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(mAdasStartFailureListener); OCHSocketMessageManager.INSTANCE.registerSocketMessageListener(//监听运营消息 - OCHSocketMessageManager.INSTANCE.getMsgMonitorType(), + OCHSocketMessageManager.msgMonitorType, mMogoOnMessageListener); OCHSocketMessageManager.INSTANCE.registerSocketMessageListener(//监听核销乘客 - OCHSocketMessageManager.INSTANCE.getMsgWriteOffPassengerType(), + OCHSocketMessageManager.msgWriteOffPassengerType, mWriteOffPassengeOnMessageListener); AbnormalFactorsLoopManager.INSTANCE.startLoopAbnormalFactors(mContext); @@ -343,9 +345,9 @@ public class BusOrderModel { OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(null); OCHSocketMessageManager.INSTANCE.releaseSocketMessageListener( - OCHSocketMessageManager.INSTANCE.getMsgMonitorType()); + OCHSocketMessageManager.msgMonitorType); OCHSocketMessageManager.INSTANCE.releaseSocketMessageListener( - OCHSocketMessageManager.INSTANCE.getMsgWriteOffPassengerType()); + OCHSocketMessageManager.msgWriteOffPassengerType); AbnormalFactorsLoopManager.INSTANCE.stopLoopAbnormalFactors(); } @@ -369,8 +371,8 @@ public class BusOrderModel { private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() { @Override - public void onStartAutopilotFailure(@NonNull String startFailedMessage) { - BusAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedMessage); + public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) { + BusAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage); if (mADASStatusCallback != null && !FunctionBuildConfig.isDemoMode){ CallerLogger.INSTANCE.e( M_BUS + TAG, "mAdasStartFailureListener = "+startFailedMessage ); mADASStatusCallback.onStartAdasFailure(); @@ -439,17 +441,30 @@ public class BusOrderModel { clearAutopilotControlParameters(); closeBeautificationMode(); clearStartAutopilotTag(); + removeTipRunnables(); return; } CallerLogger.INSTANCE.d(M_BUS + TAG, "获取到小巴路线数据: " + data); updateBusStatus(data.getResult()); } + + @Override + public void 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 public void onFail(int code, String failMsg) { - // 重复请求小巴路线,直至成功 - //改为任务,为空不再去一直取 -// queryBusStationDelay(); + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort("网络异常,请稍后重试"); + }else { + ToastUtils.showShort(failMsg); + } } }); @@ -527,9 +542,22 @@ public class BusOrderModel { } } + @Override + public void 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 public void onFail(int code, String failMsg) { - ToastUtils.showShort(failMsg); + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort("网络异常,请稍后重试"); + }else { + ToastUtils.showShort(failMsg); + } } }); @@ -644,22 +672,32 @@ public class BusOrderModel { @Override public void onSuccess(BaseData o) { CallerLogger.INSTANCE.d(M_BUS + TAG, "行程日志-arriveSiteStation success"); - queryBusRoutes(); - - arriveStationSuccess(arrivedStationIndex, departureStopName, arriveStation); - + if (o != null && o.code == 0){ + queryBusRoutes(); + isArrivedStation = true; + isGoingToNextStation = false; + arriveStationSuccess(arrivedStationIndex, departureStopName, arriveStation); + } //5s轮询核销乘客 // startOrStopQueryPassengerWriteOff(true); } + @Override + public void 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 public void onFail(int code, String failMsg) { - isArrivedStation = false; - isGoingToNextStation = true; if (ToastUtilsOch.isCustomFastClick(5000)) { if (!NetworkUtils.isConnected(mContext)) { ToastUtils.showShort("网络异常,请稍后重试"); } else { + if (isArrivedStation) return; ToastUtils.showShort(failMsg); } } @@ -712,6 +750,16 @@ public class BusOrderModel { leaveStationSuccess(backgroundCurrentStationIndex, currentStationName, finalNextStationName); } + + @Override + public void 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 public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { @@ -975,9 +1023,22 @@ public class BusOrderModel { } } + @Override + public void 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 public void onFail(int code, String failMsg) { - ToastUtils.showShort(failMsg); + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort("网络异常,请稍后重试"); + }else { + ToastUtils.showShort(failMsg); + } } }); } @@ -1012,13 +1073,10 @@ public class BusOrderModel { } if (isArrivedStation) return; - isArrivedStation = true; CallerLogger.INSTANCE.d(M_BUS + TAG, "行程日志-当前==backgroundCurrentStationIndex=" + backgroundCurrentStationIndex); - isGoingToNextStation = false; - arriveSiteStation(); } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusApiService.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusApiService.java index 7eced02c3a..32e8e7d1d0 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusApiService.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusApiService.java @@ -151,7 +151,7 @@ public interface IBusApiService { Observable endTask(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusCloseTaskRequest data); /** - * 任务正常跑完结束 + * 查询核销乘客,目前不再使用,改为后台下发核销的乘客 * @param appId * @param ticket * @param data 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 b46124078c..3f09f3ab14 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 @@ -2,7 +2,6 @@ package com.mogo.och.bus.presenter; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; -import android.location.Location; import android.os.Looper; import androidx.annotation.NonNull; @@ -19,7 +18,6 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; -import com.mogo.och.bus.R; import com.mogo.och.bus.bean.BusStationBean; import com.mogo.och.bus.bean.WriteOffPassenger; import com.mogo.och.bus.callback.IBusADASStatusCallback; @@ -32,10 +30,9 @@ 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.biz.constant.LoginStatusManager; import com.mogo.och.common.module.manager.OCHAdasAbilityManager; -import com.mogo.och.common.module.utils.SoundPoolHelper; import com.mogo.och.common.module.voice.VoiceNotice; -import com.zhidao.socket.utils.LoginStatusUtil; import org.jetbrains.annotations.NotNull; @@ -72,7 +69,6 @@ public class BusPresenter extends Presenter @Override public void onCreate(@NonNull LifecycleOwner owner) { super.onCreate(owner); - BusOrderModel.getInstance().queryBusRoutes(); initModelListener(); } @@ -286,8 +282,10 @@ public class BusPresenter extends Presenter } @Override public void loginSuccess(DriverStatusQueryRespBean data) { - if(LoginStatusUtil.isLogin()){ + CallerLogger.INSTANCE.d(M_BUS + TAG, " loginStatus =" + LoginStatusManager.isLogin()); + if(LoginStatusManager.isLogin()){ BusOrderModel.getInstance().startOrStopOrderLoop(true); + BusOrderModel.getInstance().queryBusRoutes(); }else { BusTrajectoryManager.getInstance().stopTrajReqLoop(); BusOrderModel.getInstance().startOrStopOrderLoop(false); @@ -296,8 +294,6 @@ public class BusPresenter extends Presenter mView.hideSlidePanel(); BusOrderModel.getInstance().closeBeautificationMode(); } - BusOrderModel.getInstance().queryBusRoutes(); - } @Override diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusAnalyticsManager.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusAnalyticsManager.java index 1b28355846..eaefe8db87 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusAnalyticsManager.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/util/BusAnalyticsManager.java @@ -38,25 +38,33 @@ public class BusAnalyticsManager { private Runnable startAutopilotRunnable = () -> { // 15s内未开启,上报失败埋点 - triggerStartAutopilotFailureEvent("15s后app等待超时"); + triggerStartAutopilotFailureEvent("", "15s后app等待超时"); }; - public void triggerStartAutopilotFailureEventByAdas(String failMsg){ + public void triggerStartAutopilotFailureEventByAdas(String failCode, String failMsg){ removeWaitingCallback(); - triggerStartAutopilotFailureEvent(failMsg); + triggerStartAutopilotFailureEvent(failCode, failMsg); } - private void triggerStartAutopilotFailureEvent(String failMsg){ + private void triggerStartAutopilotFailureEvent(String failCode, String failMsg){ + if (mStartAutopilotParams.isEmpty()) return; + CallerLogger.INSTANCE.e( M_BUS + "triggerStartAutopilotFailureEvent", failMsg ); + + if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() != + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ + mStartAutopilotParams.put(BusConst.EVENT_PARAM_START_FAILURE_CODE, failCode); + mStartAutopilotParams.put(BusConst.EVENT_PARAM_START_FAILURE_MSG, failMsg); + } mStartAutopilotParams.put(BusConst.EVENT_PARAM_START_RESULT , CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING); - mStartAutopilotParams.put(BusConst.EVENT_PARAM_START_FAILURE_MSG, - failMsg); + AnalyticsManager.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams); + + clearStartAutopilotParams();//清空参数数据,防止误传 } - @SuppressLint("NewApi") private void removeWaitingCallback() { if (startAutopilotRunnable != null && UiThreadHandler.getsUiHandler().hasCallbacks(startAutopilotRunnable)) { @@ -64,6 +72,15 @@ public class BusAnalyticsManager { } } + public void clearStartAutopilotFailureMSG(){ + mStartAutopilotParams.put(BusConst.EVENT_PARAM_START_FAILURE_CODE, ""); + mStartAutopilotParams.put(BusConst.EVENT_PARAM_START_FAILURE_MSG, ""); + } + + private void clearStartAutopilotParams(){ + mStartAutopilotParams.clear(); + } + /** * 触发'开启自动驾驶'埋点流程 * 开启自动驾驶,15s内成功则发送成功埋点,否则发送失败埋点 @@ -89,10 +106,14 @@ public class BusAnalyticsManager { mStartAutopilotParams.put(BusConst.EVENT_PARAM_LINE_ID, lineId); if (send) { + if (mStartAutopilotParams.isEmpty()) return; // 开启成功,上报埋点 + clearStartAutopilotFailureMSG(); removeWaitingCallback(); mStartAutopilotParams.put(BusConst.EVENT_PARAM_START_RESULT, true); AnalyticsManager.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams); + + clearStartAutopilotParams();//清空参数数据,防止误传 } else { UiThreadHandler.postDelayed(startAutopilotRunnable, BusConst.LOOP_PERIOD_15S); } diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/OCHSocketMessageManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/OCHSocketMessageManager.kt index dbeb35054e..0439ca7842 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/OCHSocketMessageManager.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/common/socketmessage/OCHSocketMessageManager.kt @@ -12,8 +12,8 @@ import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager * 统一管理业务长链消息推送 */ object OCHSocketMessageManager { - public val msgMonitorType:Int = 6295553 - public val msgWriteOffPassengerType:Int = 6295554 + const val msgMonitorType:Int = 6295553 + const val msgWriteOffPassengerType:Int = 6295554 fun registerSocketMessageListener(msgType:Int, mogoOnMessageListener :IMogoOnMessageListener){ diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/callback/OchAdasStartFailureCallback.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/callback/OchAdasStartFailureCallback.kt index b66f82d19a..e723b6248d 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/callback/OchAdasStartFailureCallback.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/callback/OchAdasStartFailureCallback.kt @@ -5,5 +5,5 @@ package com.mogo.och.common.module.callback * @date: 2022/11/9 */ interface OchAdasStartFailureCallback { - fun onStartAutopilotFailure(startFailedMessage : String) + fun onStartAutopilotFailure(startFailedCode : String, startFailedMessage : String) } \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/AbnormalFactorsLoopManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/AbnormalFactorsLoopManager.kt index 3a24d6ef8a..3f00c53bc4 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/AbnormalFactorsLoopManager.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/AbnormalFactorsLoopManager.kt @@ -2,9 +2,11 @@ package com.mogo.och.common.module.manager import android.Manifest import android.content.Context +import com.mogo.commons.debug.DebugConfig import com.mogo.commons.module.status.IMogoStatusChangedListener import com.mogo.commons.module.status.MogoStatusManager import com.mogo.commons.module.status.StatusDescriptor +import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.ToastUtils @@ -66,11 +68,12 @@ object AbnormalFactorsLoopManager : IMogoStatusChangedListener { var toastStr = "" if (!locationStatusPermsStatus) toastStr += "定位服务异常 " if (!networkStatus) toastStr += " 网络异常 " - if (!socketStatus) toastStr += " 长链接异常 " + + if (!socketStatus && !DebugConfig.getProductFlavor().contains("Passenger")) toastStr += " 长链接异常 " i(TAG, "abnormal_factors_Str = $toastStr") - if (toastStr !== ""){ + if (!FunctionBuildConfig.isDemoMode && toastStr !== ""){ ToastUtils.showLong(toastStr + "请开启相应权限或者查看网络") } } 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 33d7fead37..fda4e3fa53 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 @@ -28,6 +28,7 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo private boolean isAutopilotAbility = true; private String autopilotAbilityReason = ""; + private String startFailedCode = ""; private String startFailedMessage = ""; private OchAdasStartFailureCallback failureCallback = null; @@ -56,6 +57,10 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo return autopilotAbilityReason; } + public String getStartFailedCode() { + return startFailedCode; + } + public String getStartFailedMessage() { return startFailedMessage; } @@ -111,9 +116,11 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo if (statistics == null) return; Logger.d(TAG, "AutopilotStatistics= " + statistics.status); if (failureCallback != null && 1 == statistics.status){ + startFailedCode = statistics.failedMessage.getCode(); startFailedMessage = statistics.failedMessage.getMsg(); - failureCallback.onStartAutopilotFailure(startFailedMessage); - Logger.d(TAG, "statistics-startFailedMessage= " + startFailedMessage); + failureCallback.onStartAutopilotFailure(startFailedCode, startFailedMessage); + Logger.d(TAG, String.format("statistics-startFailedCode = s%; startFailedMessage = s%", + startFailedCode, startFailedMessage)); } } 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 b06736dba5..8b6fec020a 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 @@ -27,7 +27,7 @@ public class CoordinateCalculateRouteUtil { float sumLength = 0; - if (points.get(1) instanceof MogoLocation){ + if (points.get(0) instanceof MogoLocation){ //计算全路径总距离 for (int i = 0;i + 1< points.size();i++){ MogoLocation locationPre = (MogoLocation) points.get(i); @@ -40,7 +40,7 @@ public class CoordinateCalculateRouteUtil { float length = CoordinateUtils.calculateLineDistance(laLon,laLat,preLon,preLat); sumLength += length; } - }else if (points.get(1) instanceof Location){ + }else if (points.get(0) instanceof Location){ //计算全路径总距离 for (int i = 0;i + 1< points.size();i++){ Location locationPre = (Location) points.get(i); @@ -53,7 +53,7 @@ public class CoordinateCalculateRouteUtil { float length = CoordinateUtils.calculateLineDistance(laLon,laLat,preLon,preLat); sumLength += length; } - }else if (points.get(1) instanceof LatLng){ + }else if (points.get(0) instanceof LatLng){ for (int i = 0;i + 1< points.size();i++){ LatLng locationPre = (LatLng) points.get(i); LatLng location = (LatLng) points.get(i+1); @@ -126,7 +126,7 @@ public class CoordinateCalculateRouteUtil { if (currentIndex == mRoutePoints.size()-1){ latePoints.add(mRoutePoints.get(currentIndex)); }else if(currentIndex < mRoutePoints.size()-1){ - latePoints.addAll(mRoutePoints.subList(currentIndex,mRoutePoints.size()-1)); + latePoints.addAll(mRoutePoints.subList(currentIndex,mRoutePoints.size())); } return latePoints; } @@ -263,7 +263,7 @@ public class CoordinateCalculateRouteUtil { // LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); latePoints.add(location); }else { - List locations = mRoutePoints.subList(currentIndex,mRoutePoints.size()-1); + List locations = mRoutePoints.subList(currentIndex,mRoutePoints.size()); for (MogoLocation location: locations) { // LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); latePoints.add(location); diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt index b303ea69e0..446d5d126f 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt @@ -56,6 +56,7 @@ class TaxiPassengerConst { const val EVENT_PARAM_END_NAME = "end_name" const val EVENT_PARAM_ORDER_NUMBER = "order_num" const val EVENT_PARAM_START_RESULT = "start_autopilot" // true/false + const val EVENT_PARAM_START_FAILURE_CODE = "start_autopilot_failure_code" // 启动自驾失败code const val EVENT_PARAM_START_FAILURE_MSG = "start_autopilot_failure_msg" // 启动自驾失败原因 const val EVENT_PARAM_PLATE_NUM = "plate_number" // 车牌号 const val EVENT_PARAM_ENV_ONLINE = "env_online" // 是否线上环境:true/false 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 862d204150..32bdacd61d 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 @@ -38,6 +38,8 @@ 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; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; +import com.mogo.och.common.module.callback.OchAdasStartFailureCallback; +import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager; import com.mogo.och.common.module.manager.OCHAdasAbilityManager; import com.mogo.och.common.module.map.AmapNaviToDestinationModel; import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; @@ -241,6 +243,11 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback //增加限速监听 CallLimitingVelocityListenerManager.INSTANCE.addListener(TAG,limitingVelocityListener); + + AbnormalFactorsLoopManager.INSTANCE.startLoopAbnormalFactors(mContext); + + //开启自驾后 异常信息返回 + OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(mAdasStartFailureListener); } private void releaseListeners() { @@ -255,6 +262,10 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback CallerAutoPilotStatusListenerManager.INSTANCE.removeListener(mGoAutopilotStatusListener); CallerAutopilotPlanningListenerManager.INSTANCE.removeListener(moGoAutopilotPlanningListener); CallLimitingVelocityListenerManager.INSTANCE.removeListener(limitingVelocityListener); + + AbnormalFactorsLoopManager.INSTANCE.stopLoopAbnormalFactors(); + + OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(null); } /** @@ -324,9 +335,14 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback } @Override - public void onFail(int code, String msg) { + public void onError() { } + + @Override + public void onFail(int code, String msg) { + CallerLogger.INSTANCE.e(M_TAXI_P + TAG,"queryInAndWaitOrders"+code+msg); + } }); } @@ -396,6 +412,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback //清除订单信息 public void clearCurrentOCHOrder() { mCurrentOCHOrder = null; + clearAutopilotControlParameters(); SharedPrefsMgr.getInstance(mContext).remove(TaxiPassengerConst.SP_KEY_OCH_TAXI_ORDER); } @@ -578,6 +595,13 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback }; + private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() { + @Override + public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) { + TaxiPassengerAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage); + } + }; + public void startToRouteAndWipe(List models) { List locationsModels = CoordinateCalculateRouteUtil .coordinateConverterWgsToGcjLocations(mContext,models); @@ -907,12 +931,36 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback return; } + AutopilotControlParameters parameters = initAutopilotControlParameters(); + if (parameters == null){ + CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "AutopilotControlParameters is empty."); + return; + } + + CallerAutoPilotManager.INSTANCE.startAutoPilot(parameters); + CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "start autopilot with parameter: %s" + , GsonUtil.jsonFromObject(parameters) + + " ,startSiteName=" + mCurrentOCHOrder.startSiteAddr + + " ,endSiteName=" + mCurrentOCHOrder.endSiteAddr); + + + TaxiPassengerAnalyticsManager.getInstance().triggerStartAutopilotEvent(false, false, + mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo); + } + + private AutopilotControlParameters initAutopilotControlParameters() { + if (!checkCurrentOCHOrder()) { + CallerLogger.INSTANCE.e(M_TAXI_P + TAG, "no order or order is empty."); + ToastUtils.showShort("当前订单不存在或异常!"); + 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) @@ -930,15 +978,26 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback mCurrentOCHOrder.contrailSaveTimeDPQP); } - CallerAutoPilotManager.INSTANCE.startAutoPilot(parameters); - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "start autopilot with parameter: %s" - , GsonUtil.jsonFromObject(parameters) - + " ,startSiteName=" + mCurrentOCHOrder.startSiteAddr - + " ,endSiteName=" + mCurrentOCHOrder.endSiteAddr); + return parameters; + } + /** + * 将业务订单信息保存,鹰眼可取用 + */ + public void updateAutopilotControlParameters() { - TaxiPassengerAnalyticsManager.getInstance().triggerStartAutopilotEvent(false, false, - mCurrentOCHOrder.startSiteAddr, mCurrentOCHOrder.endSiteAddr, mCurrentOCHOrder.orderNo); + AutopilotControlParameters parameters = initAutopilotControlParameters(); + if (null == parameters){ + CallerLogger.INSTANCE.e(M_TAXI_P + TAG, "AutopilotControlParameters is empty."); + return; + } + CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "AutopilotControlParameters is update."); + CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(parameters); + } + + public void clearAutopilotControlParameters(){ + CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "AutopilotControlParameters is clear."); + CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(null); } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/TaxiPassengerServingOrderPresenter.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/TaxiPassengerServingOrderPresenter.java index b508715fd3..11ae9bf1c7 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/TaxiPassengerServingOrderPresenter.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/TaxiPassengerServingOrderPresenter.java @@ -92,27 +92,26 @@ public class TaxiPassengerServingOrderPresenter extends PresentermView.updateOrderStatusView(order)); - }else if (mCurrentPassengerOrder.orderStatus != order.orderStatus) { - runOnUIThread(() ->mView.updateOrderStatusView(order)); - - if (TaxiPassengerOrderStatusEnum.OnTheWayToEnd.getCode() == order.orderStatus){ - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "-----OnTheWayToEndStation----"); - TaxiPassengerModel.getInstance().startOrStopQueryOrderRemaining(true); - } - - if (TaxiPassengerOrderStatusEnum.Cancel.getCode() == mCurrentPassengerOrder.orderStatus - || TaxiPassengerOrderStatusEnum.ArriveAtEnd.getCode() == mCurrentPassengerOrder.orderStatus){ + if (TaxiPassengerOrderStatusEnum.Cancel.getCode() == order.orderStatus + || TaxiPassengerOrderStatusEnum.ArriveAtEnd.getCode() == order.orderStatus + || TaxiPassengerOrderStatusEnum.JourneyCompleted.getCode() == order.orderStatus){ TaxiPassengerModel.getInstance().startOrStopQueryOrderRemaining(false); + TaxiPassengerModel.getInstance().clearAutopilotControlParameters(); + CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "Cancel or ArriveAtEnd or JourneyCompleted"); } - mCurrentPassengerOrder = order; + + mCurrentPassengerOrder = order; //当前无订单 + runOnUIThread(() ->mView.updateOrderStatusView(order)); } } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/ItemViewTouchListener.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/ItemViewTouchListener.kt index 1aa1e9afa3..f9cd1a55b8 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/ItemViewTouchListener.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/ItemViewTouchListener.kt @@ -3,6 +3,8 @@ package com.mogo.och.taxi.passenger.ui.leftmenu import android.annotation.SuppressLint import android.view.MotionEvent import android.view.View +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant class ItemViewTouchListener : View.OnTouchListener { @@ -10,25 +12,34 @@ class ItemViewTouchListener : private var dragTime = 0L @SuppressLint("ClickableViewAccessibility") override fun onTouch(view: View, motionEvent: MotionEvent): Boolean { - when (motionEvent.action) { - MotionEvent.ACTION_DOWN -> { - LeftMenuOpen.dragAndOpen(motionEvent.rawX.toInt(),motionEvent.action) - dragTime = System.currentTimeMillis() - } - MotionEvent.ACTION_MOVE -> { - if (LeftMenuOpen.dragAndOpen(motionEvent.rawX.toInt(),motionEvent.action)) { - return false + try { + when (motionEvent.action) { + MotionEvent.ACTION_DOWN -> { + LeftMenuOpen.dragAndOpen(motionEvent.rawX.toInt(),motionEvent.action) + dragTime = System.currentTimeMillis() } - } - MotionEvent.ACTION_UP -> { - LeftMenuOpen.dragAndOpen(motionEvent.rawX.toInt(),motionEvent.action) - if (System.currentTimeMillis() - dragTime > 500) { - dragTime = 0 - return true + MotionEvent.ACTION_MOVE -> { + if (LeftMenuOpen.dragAndOpen(motionEvent.rawX.toInt(),motionEvent.action)) { + return false + } } + MotionEvent.ACTION_UP -> { + LeftMenuOpen.dragAndOpen(motionEvent.rawX.toInt(),motionEvent.action) + if (System.currentTimeMillis() - dragTime > 500) { + dragTime = 0 + return true + } + } + else -> {} } - else -> {} + } catch (e: Exception) { + CallerLogger.e(SceneConstant.M_TAXI_P + TAG, e.message) + e.printStackTrace() } return false } + + companion object { + const val TAG = "ItemViewTouchListener" + } } \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.java index 18ba2e1e39..4ce2b41afb 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.java @@ -1,11 +1,16 @@ package com.mogo.och.taxi.passenger.utils; +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; + import android.text.TextUtils; import com.mogo.cloud.passport.MoGoAiCloudClientConfig; import com.mogo.commons.debug.DebugConfig; import com.mogo.eagle.core.data.app.AppConfigInfo; +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.analytics.AnalyticsManager; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.DateTimeUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; @@ -34,12 +39,51 @@ public class TaxiPassengerAnalyticsManager { private Runnable startAutopilotRunnable = () -> { // 15s内未开启,上报失败埋点 - mStartAutopilotParams.put(TaxiPassengerConst.EVENT_PARAM_START_RESULT, false); - mStartAutopilotParams.put(TaxiPassengerConst.EVENT_PARAM_START_FAILURE_MSG, - "15s后app等待超时"); - AnalyticsManager.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams); + triggerStartAutopilotFailureEvent("", "15s后app等待超时"); }; + public void triggerStartAutopilotFailureEventByAdas(String failCode, String failMsg){ + removeWaitingCallback(); + triggerStartAutopilotFailureEvent(failCode, failMsg); + } + + private void triggerStartAutopilotFailureEvent(String failCode, String failMsg){ + if (mStartAutopilotParams.isEmpty()) return; + + CallerLogger.INSTANCE.e( M_BUS + "triggerStartAutopilotFailureEvent", failMsg ); + + if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() != + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ + mStartAutopilotParams.put(TaxiPassengerConst.EVENT_PARAM_START_FAILURE_CODE, failCode); + mStartAutopilotParams.put(TaxiPassengerConst.EVENT_PARAM_START_FAILURE_MSG, + failMsg); + } + + mStartAutopilotParams.put(TaxiPassengerConst.EVENT_PARAM_START_RESULT + , CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() == + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING); + + AnalyticsManager.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams); + + clearStartAutopilotParams();//清空参数数据,防止误传 + } + + public void clearStartAutopilotFailureMSG(){ + mStartAutopilotParams.put(TaxiPassengerConst.EVENT_PARAM_START_FAILURE_CODE, ""); + mStartAutopilotParams.put(TaxiPassengerConst.EVENT_PARAM_START_FAILURE_MSG, ""); + } + + private void clearStartAutopilotParams(){ + mStartAutopilotParams.clear(); + } + + private void removeWaitingCallback() { + if (startAutopilotRunnable != null && + UiThreadHandler.getsUiHandler().hasCallbacks(startAutopilotRunnable)) { + UiThreadHandler.removeCallbacks(startAutopilotRunnable); + } + } + /** * 触发'开启自动驾驶'埋点流程 * 开启自动驾驶,15s内成功则发送成功埋点,否则发送失败埋点 @@ -65,13 +109,14 @@ public class TaxiPassengerAnalyticsManager { mStartAutopilotParams.put(TaxiPassengerConst.EVENT_PARAM_ORDER_NUMBER, orderNo); if (send) { + if (mStartAutopilotParams.isEmpty()) return; // 开启成功,取消失败定时任务 - if (startAutopilotRunnable != null && - UiThreadHandler.getsUiHandler().hasCallbacks(startAutopilotRunnable)) { - UiThreadHandler.removeCallbacks(startAutopilotRunnable); - } + clearStartAutopilotFailureMSG(); + removeWaitingCallback(); mStartAutopilotParams.put(TaxiPassengerConst.EVENT_PARAM_START_RESULT, true); -// AnalyticsManager.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams); + AnalyticsManager.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams); + + clearStartAutopilotParams(); } else { UiThreadHandler.postDelayed(startAutopilotRunnable, TaxiPassengerConst.LOOP_PERIOD_15S); } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt index 68f2379a42..21372d9fb7 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt @@ -65,6 +65,7 @@ class TaxiConst { const val EVENT_PARAM_END_NAME = "end_name" const val EVENT_PARAM_ORDER_NUMBER = "order_num" const val EVENT_PARAM_START_RESULT = "start_autopilot" // true/false + const val EVENT_PARAM_START_FAILURE_CODE = "start_autopilot_failure_code" // 启动自驾失败code const val EVENT_PARAM_START_FAILURE_MSG = "start_autopilot_failure_msg" // 启动自驾失败原因 const val EVENT_PARAM_PLATE_NUM = "plate_number" // 车牌号 const val EVENT_PARAM_ENV_ONLINE = "env_online" // 是否线上环境:true/false 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 c114157434..6b2e56777e 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 @@ -232,7 +232,7 @@ public class TaxiModel { OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(mAdasStartFailureListener); OCHSocketMessageManager.INSTANCE.registerSocketMessageListener( - OCHSocketMessageManager.INSTANCE.getMsgMonitorType(), + OCHSocketMessageManager.msgMonitorType, mMogoOnMessageListener); AbnormalFactorsLoopManager.INSTANCE.startLoopAbnormalFactors(mContext); @@ -264,7 +264,7 @@ public class TaxiModel { // 注销地图监听 CallerMapLocationListenerManager.INSTANCE.removeListener(TAG,false); - OCHSocketMessageManager.INSTANCE.releaseSocketMessageListener(OCHSocketMessageManager.INSTANCE.getMsgMonitorType()); + OCHSocketMessageManager.INSTANCE.releaseSocketMessageListener(OCHSocketMessageManager.msgMonitorType); CallerAutoPilotStatusListenerManager.INSTANCE.removeListener(mGoAutopilotStatusListener); CallerAutopilotPlanningListenerManager.INSTANCE.removeListener(moGoAutopilotPlanningListener); @@ -1030,8 +1030,8 @@ public class TaxiModel { private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() { @Override - public void onStartAutopilotFailure(@NonNull String startFailedMessage) { - TaxiAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedMessage); + public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) { + TaxiAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage); if (mADASStatusCallback != null && !FunctionBuildConfig.isDemoMode){ CallerLogger.INSTANCE.e(M_TAXI + TAG, "mAdasStartFailureListener = "+startFailedMessage); mADASStatusCallback.onStartAdasFailure(); diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiOrderCancelDialog.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiOrderCancelDialog.java index 6ce0c58654..95aef7ecdb 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiOrderCancelDialog.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiOrderCancelDialog.java @@ -9,10 +9,13 @@ import android.graphics.drawable.ColorDrawable; import android.os.Build; import android.os.Bundle; import android.text.TextUtils; +import android.view.Display; +import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; +import android.view.WindowManager; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.GridView; @@ -109,11 +112,22 @@ public class TaxiOrderCancelDialog extends AlertDialog implements View.OnClickLi setCancelable(false); setCanceledOnTouchOutside(false); + initWindowView(); + } + + private void initWindowView() { Window window = getWindow(); //dialog padding 去掉 window.getDecorView().setPadding(0,0,0,0); window.setDimAmount(0.5f); window.getDecorView().setBackgroundColor(Color.parseColor("#00FFFFFF"));//设置背景, 不然显示不全 + + WindowManager.LayoutParams params = window.getAttributes(); + window.setGravity(Gravity.CENTER); + WindowManager m = window.getWindowManager(); + Display d = m.getDefaultDisplay(); + params.height = d.getHeight() - 500; + window.setAttributes(params); } @RequiresApi(api = Build.VERSION_CODES.M) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/utils/TaxiAnalyticsManager.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/utils/TaxiAnalyticsManager.java index b6180d52d5..dbdce513fa 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/utils/TaxiAnalyticsManager.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/utils/TaxiAnalyticsManager.java @@ -6,7 +6,9 @@ import android.text.TextUtils; import com.mogo.cloud.passport.MoGoAiCloudClientConfig; import com.mogo.commons.debug.DebugConfig; import com.mogo.eagle.core.data.app.AppConfigInfo; +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.analytics.AnalyticsManager; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.DateTimeUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; @@ -36,12 +38,12 @@ public class TaxiAnalyticsManager { private Runnable startAutopilotRunnable = () -> { // 15s内未开启,上报失败埋点 - triggerStartAutopilotFailureEvent("15s后app等待超时"); + triggerStartAutopilotFailureEvent("", "15s后app等待超时"); }; - public void triggerStartAutopilotFailureEventByAdas(String failMsg){ + public void triggerStartAutopilotFailureEventByAdas(String failCode, String failMsg){ removeWaitingCallback(); - triggerStartAutopilotFailureEvent(failMsg); + triggerStartAutopilotFailureEvent(failCode, failMsg); } private void removeWaitingCallback() { @@ -51,12 +53,31 @@ public class TaxiAnalyticsManager { } } - private void triggerStartAutopilotFailureEvent(String failMsg){ + private void triggerStartAutopilotFailureEvent(String failCode, String failMsg){ + if (mStartAutopilotParams.isEmpty()) return; + CallerLogger.INSTANCE.e(M_TAXI + "triggerStartAutopilotFailureEvent", failMsg); - mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_RESULT, false); - mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_FAILURE_MSG, - failMsg); + if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() != + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ + mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_FAILURE_CODE, failCode); + mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_FAILURE_MSG, + failMsg); + } + mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_RESULT, + CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() == + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING); AnalyticsManager.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams); + + clearStartAutopilotParams();//清空参数数据,防止误传 + } + + private void clearStartAutopilotParams(){ + mStartAutopilotParams.clear(); + } + + public void clearStartAutopilotFailureMSG(){ + mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_FAILURE_CODE, ""); + mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_FAILURE_MSG, ""); } /** @@ -86,10 +107,14 @@ public class TaxiAnalyticsManager { // CallerLogger.INSTANCE.d(M_TAXI + "埋点==","restart = "+restart+", send= "+send); if (send) { + if (mStartAutopilotParams.isEmpty()) return; // 开启成功,上报埋点 + clearStartAutopilotFailureMSG(); removeWaitingCallback(); mStartAutopilotParams.put(TaxiConst.EVENT_PARAM_START_RESULT, true); AnalyticsManager.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams); + + clearStartAutopilotParams();//清空参数数据,防止误传 } else { UiThreadHandler.postDelayed(startAutopilotRunnable, TaxiConst.LOOP_PERIOD_15S); } 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 1eff5f1dc8..0001414e85 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 @@ -74,6 +74,7 @@ android:lineSpacingExtra="10dp" android:textColor="#FFFFFF" android:textSize="@dimen/dp_46" + android:layout_marginRight="@dimen/dp_60" app:layout_constraintRight_toLeftOf="@+id/module_och_taxi_navi_end_iv" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toBottomOf="@+id/module_och_taxi_order_station_title_2" diff --git a/app/build.gradle b/app/build.gradle index 9ce3326429..726a2d8cef 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -55,6 +55,10 @@ if (!isAndroidTestBuild()) { leak_canary_crash_fix { enable !isReleaseBuild } + + anr_fix { + enable true + } } } } @@ -201,6 +205,8 @@ android { buildConfigField 'String', 'WORKING_BRANCH_NAME', getWorkingBranchName() buildConfigField 'String', 'WORKING_BRANCH_HASH', getWorkingBranchHash() buildConfigField 'String', 'APP_BUILD_TIME', getBuildTime() + buildConfigField 'String', 'MAP_SDK_VERSION', "\"${MAP_SDK_VERSION}\"" + buildConfigField 'String', 'MAP_SDK_OPT_VERSION', "\"${MAP_SDK_OPERATION_VERSION}\"" } // 配置网络环境,QA、线上、演示 qa { @@ -253,8 +259,8 @@ dependencies { implementation rootProject.ext.dependencies.arouter implementation rootProject.ext.dependencies.boostmultidex - debugImplementation rootProject.ext.dependencies.debugleakcanary - releaseImplementation rootProject.ext.dependencies.releaseleakcanary +// debugImplementation rootProject.ext.dependencies.debugleakcanary +// releaseImplementation rootProject.ext.dependencies.releaseleakcanary implementation rootProject.ext.dependencies.android_start_up implementation rootProject.ext.dependencies.lancetx_runtime diff --git a/app/src/main/java/com/mogo/launcher/lancet/ANRFix.kt b/app/src/main/java/com/mogo/launcher/lancet/ANRFix.kt new file mode 100644 index 0000000000..878eafd753 --- /dev/null +++ b/app/src/main/java/com/mogo/launcher/lancet/ANRFix.kt @@ -0,0 +1,71 @@ +package com.mogo.launcher.lancet + +import androidx.annotation.* +import com.knightboost.lancet.api.* +import com.knightboost.lancet.api.annotations.* +import com.knightboost.lancet.api.annotations.Weaver +import com.mogo.eagle.core.utilcode.util.* +import kotlinx.coroutines.Runnable + +@Keep +@Weaver +@Group("anr_fix") +class ANRFix { + + @Insert + @TargetClass("com.zhidao.cosupload.service.UploadService") + @TargetMethod(methodName = "addUploadPaths") + private fun fixAddUploadPathsANR() { + ThreadUtils.getIoPool().execute(ANRFixTask(This.get(), "addUploadPaths")) + } + + @Insert + @TargetClass("com.zhidao.cosupload.service.UploadService") + @TargetMethod(methodName = "upload") + private fun fixUploadANR(@ClassOf("com.zhidao.cosupload.model.CacheUploadIdData") data: Any?) { + ThreadUtils.getIoPool().execute(ANRFixTask2(This.get(), "upload", data)) + } + + @Insert + @TargetClass("com.zhidao.cosupload.manager.CosUploadManagerImpl") + @TargetMethod(methodName = "upload") + private fun fixCosUploadManagerImplANR(productLine: String?, paths: List?, eventId: String?, @ClassOf("com.zhidao.cosupload.DbPriorityConfig") config: Any?) { + ThreadUtils.getIoPool().execute(ANRFixTask3(This.get(), "upload", productLine, paths, eventId, config)) + } +} + +class ANRFixTask(private val delegate: Any, private val methodName: String): Runnable { + + override fun run() { + delegate.javaClass.declaredMethods.find { + it.name != methodName && it.name.contains(methodName) + }?.also { + it.isAccessible = true + it.invoke(delegate) + } + } +} + +class ANRFixTask2(private val delegate: Any, private val methodName: String, private val p: Any?): Runnable { + + override fun run() { + delegate.javaClass.declaredMethods.find { + it.name != methodName && it.name.contains(methodName) + }?.also { + it.isAccessible = true + it.invoke(delegate, p) + } + } +} + +class ANRFixTask3(private val delegate: Any, private val methodName: String,private val productLine: String?, private val paths: List?, private val eventId: String?, private val config: Any?): Runnable { + + override fun run() { + delegate.javaClass.declaredMethods.find { + it.name != methodName && it.name.contains(methodName) + }?.also { + it.isAccessible = true + it.invoke(delegate, productLine, paths, eventId, config) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mogo/launcher/stageone/ConfigStartUp.kt b/app/src/main/java/com/mogo/launcher/stageone/ConfigStartUp.kt index 64166537b2..71babd15d0 100644 --- a/app/src/main/java/com/mogo/launcher/stageone/ConfigStartUp.kt +++ b/app/src/main/java/com/mogo/launcher/stageone/ConfigStartUp.kt @@ -55,6 +55,8 @@ class ConfigStartUp : AndroidStartup() { DebugConfig.setCarMachineType(BuildConfig.CAR_MACHINE_TYPE) DebugConfig.setProductFlavor(BuildConfig.FLAVOR_product) DebugConfig.setSocketAppId(BuildConfig.SOCKET_APP_ID) + DebugConfig.setMapVersion(BuildConfig.MAP_SDK_VERSION) + DebugConfig.setMapOptVersion(BuildConfig.MAP_SDK_OPT_VERSION) DebugConfig.setNeedUploadCoordinatesInTime(BuildConfig.IS_NEED_UPLOAD_COORDINATES_IN_TIME) } @@ -80,8 +82,8 @@ class ConfigStartUp : AndroidStartup() { } else if (DebugConfig.getProductFlavor() == "fPadLenovoOchBus" || DebugConfig.getProductFlavor() == "fPadLenovoOchBusPassenger" || DebugConfig.getProductFlavor() == "fPadLenovoOchSweeper") { HdMapBuildConfig.currentCarVrIconRes = R.raw.xiaobache - HmiBuildConfig.isShowBrakeLightView = false - HmiBuildConfig.isShowTurnLightView = false +// HmiBuildConfig.isShowBrakeLightView = false +// HmiBuildConfig.isShowTurnLightView = false } if (DebugConfig.getProductFlavor() == "fPadLenovoOchTaxiPassenger") { diff --git a/app_mogo_magic_ring/src/main/java/com/zhidao/adas/magic/utils/CrashHandler.java b/app_mogo_magic_ring/src/main/java/com/zhidao/adas/magic/utils/CrashHandler.java index a1fbf50402..9424dfa55a 100644 --- a/app_mogo_magic_ring/src/main/java/com/zhidao/adas/magic/utils/CrashHandler.java +++ b/app_mogo_magic_ring/src/main/java/com/zhidao/adas/magic/utils/CrashHandler.java @@ -134,7 +134,7 @@ public class CrashHandler implements UncaughtExceptionHandler { // 获取设备参数信息 getDeviceInfo(mContext); // mLogInfo.put("versionName", String.valueOf(BuildConfig.VERSION_CODE)); -// mLogInfo.put("versionCode", BuildConfig.VERSION_NAME); +// mLogInfo.put("versionCode", BuildConfig.`VERSION_NAME`); // 保存日志文件 String result = saveCrashLogToFile(paramThrowable); mDefaultHandler.uncaughtException(paramThread, paramThrowable); diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoHandAdasMsgManager.java b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoHandAdasMsgManager.java index 32530d996d..aa40c4e56c 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoHandAdasMsgManager.java +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoHandAdasMsgManager.java @@ -1,5 +1,7 @@ package com.mogo.eagle.core.function.autopilot.adapter; +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_DEVA; + import android.content.Context; import android.text.TextUtils; import android.util.Log; @@ -20,6 +22,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotVehicleStateLi import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; 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 org.jetbrains.annotations.NotNull; @@ -96,9 +99,10 @@ public class MoGoHandAdasMsgManager implements @Override public void onAutopilotLightSwitchData(Chassis.LightSwitch lightSwitch) { //can数据转发 转向灯状态 0是正常 1是左转 2是右转 - if (!AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { //小巴不展示 +// if (!AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { //小巴不展示 if (lightSwitch != null) { int state = setTurnLightState(lightSwitch.getNumber()); + CallerLogger.INSTANCE.d(M_DEVA + "TurnLight", "---onAutopilotLightSwitchData ---state = " + state + "---lightSwitch.getNumber() = " + lightSwitch.getNumber()); if (state == 1 || state == 2) { isShowTurnLight = true; CallerHmiManager.INSTANCE.showBrakeLight(0); @@ -107,7 +111,7 @@ public class MoGoHandAdasMsgManager implements } CallerHmiManager.INSTANCE.showTurnLight(state); } - } +// } } @@ -126,7 +130,7 @@ public class MoGoHandAdasMsgManager implements @Override public void onAutopilotCarStateData(@Nullable MessagePad.GnssInfo gnssInfo) { //根据加速度判断 是否刹车 - if (!AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { //小巴不展示 +// if (!AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { //小巴不展示 if (gnssInfo != null) { //设置刹车信息 if (gnssInfo.getAcceleration() < SharedPrefsMgr.getInstance(mContext).getFloat(MoGoConfig.BRAKE_ACCELERATION_THRESHOLD, -2.5F)) { @@ -134,10 +138,11 @@ public class MoGoHandAdasMsgManager implements } else { brakeLight = 0; } + CallerLogger.INSTANCE.d(M_DEVA + "BrakeLight", "---onAutopilotLightSwitchData ---Acceleration = " + gnssInfo.getAcceleration() + "-- brakeLight = " + brakeLight); if (!isShowTurnLight) { CallerHmiManager.INSTANCE.showBrakeLight(brakeLight); } - } +// } } } diff --git a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/BindingcarManager.java b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/BindingcarManager.java deleted file mode 100644 index 775077088e..0000000000 --- a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/BindingcarManager.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.mogo.eagle.core.function.bindingcar; - -import android.content.Context; - -import com.mogo.eagle.core.function.api.bindingcar.BindingcarCallBack; -import com.mogo.eagle.core.function.bindingcar.network.BindingcarNetWorkManager; -import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; - -/** - * @author lixiaopeng - * @description - * @since: 10/27/21 - */ -public class BindingcarManager { - private String TAG = "BindingcarManager"; - private static BindingcarManager mBindingcarManager; - private Context mContext; - - public static synchronized BindingcarManager getInstance() { - synchronized (BindingcarManager.class) { - if (mBindingcarManager == null) { - mBindingcarManager = new BindingcarManager(); - } - } - return mBindingcarManager; - } - - protected void getBindingcarInfo() { - } - - protected void modifyCarInfo(BindingcarCallBack callBack) { - } - - - -} - diff --git a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/BindingcarProvider.java b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/BindingcarProvider.java index 1e61715f12..f484c74f53 100644 --- a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/BindingcarProvider.java +++ b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/BindingcarProvider.java @@ -4,6 +4,7 @@ import android.content.Context; import android.util.Log; import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.config.HmiBuildConfig; import com.mogo.eagle.core.data.constants.MogoServicePaths; @@ -12,9 +13,11 @@ import com.mogo.eagle.core.function.api.bindingcar.IMoGoBindingcarProvider; import com.mogo.eagle.core.function.appupgrade.network.UpgradeAppNetWorkManager; import com.mogo.eagle.core.function.bindingcar.network.BindingcarNetWorkManager; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager; +import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager; import com.mogo.eagle.core.function.ipcupgrade.IPCUpgradeManager; import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; +import com.mogo.eagle.core.utilcode.mogo.toast.TipToast; import org.jetbrains.annotations.NotNull; diff --git a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/network/BindingcarApiService.java b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/network/BindingcarApiService.java index 0dde914f8b..803fc96ee7 100644 --- a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/network/BindingcarApiService.java +++ b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/network/BindingcarApiService.java @@ -31,7 +31,7 @@ public interface BindingcarApiService { * @return {@link ModifyBindingcarInfo} */ @Headers("Content-Type:application/json;charset=UTF-8") - @POST("eagleEye-mis/cmdbapi/pad/updatePadByMac") + @POST("eagleEye-mis/cmdbapi/pad/v2/updatePadByMac") Observable modifyBindingcarInfo(/*@Header("access_token") String access_token,*/ @Body RequestBody requestBody); } diff --git a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/network/BindingcarNetWorkManager.java b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/network/BindingcarNetWorkManager.java index d9c1726171..b687adde48 100644 --- a/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/network/BindingcarNetWorkManager.java +++ b/core/function-impl/mogo-core-function-bindingcar/src/main/java/com/mogo/eagle/core/function/bindingcar/network/BindingcarNetWorkManager.java @@ -1,5 +1,7 @@ package com.mogo.eagle.core.function.bindingcar.network; +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BINDING; + import android.content.Context; import android.util.Log; @@ -7,8 +9,11 @@ import com.mogo.commons.constants.HostConst; import com.mogo.commons.constants.SharedPrefsConstants; import com.mogo.eagle.core.data.bindingcar.BindingcarInfo; import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo; +import com.mogo.eagle.core.data.config.HdMapBuildConfig; import com.mogo.eagle.core.function.api.bindingcar.BindingcarCallBack; +import com.mogo.eagle.core.function.bindingcar.R; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; +import com.mogo.eagle.core.function.call.map.CallerHDMapManager; import com.mogo.eagle.core.network.MoGoRetrofitFactory; import com.mogo.eagle.core.network.utils.GsonUtil; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; @@ -57,9 +62,8 @@ public class BindingcarNetWorkManager { * @param macAddress mac地址 */ public void getBindingcarInfo(Context context, String macAddress, String widevineIDWithMd5, int screenType) { -// String macAddress1 = "48:b0:2d:3a:bc:78"; -// String macAddress1 = "48:b0:2d:4d:b9:63"; -// String sn = "X20202203105S688HZ"; +// String macAddress1 = "48:b0:2d:4d:33:40"; +// String sn = "X2020220417KA94QIN"; BindingcarRequest request = new BindingcarRequest(macAddress, widevineIDWithMd5, screenType); RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request)); @@ -74,36 +78,27 @@ public class BindingcarNetWorkManager { @Override public void onNext(@NonNull BindingcarInfo info) { if (info != null && info.getData() != null) { - CallerLogger.INSTANCE.d(TAG, "getBindingcarInfo onNext info.getData() =" + info.getData().toString()); - Log.d(TAG, "getBindingcarInfo onNext info.getData() =" + info.getData().toString()); - if (info.getData().getCompare().equals("0")) { - CallerHmiManager.INSTANCE.showBindingcarDialog(); - } else if (info.getData().getCompare().equals("3")) { - CallerHmiManager.INSTANCE.showModifyBindingcarDialog(); - } else if (info.getData().getCompare().equals("null")) { - TipToast.shortTip("当前工控机没有入库"); - } - + CallerLogger.INSTANCE.d(M_BINDING + TAG, "getBindingcarInfo onNext info.getData() =" + info.getData().toString()); //根据车辆类型切换不同的车辆模型,只针对红旗做处理 -// if (info.getData().getVendor().equals("一汽红旗")) { //TODO -// CallerHDMapManager.INSTANCE.changeCurrentIcon(R.raw.hq_h9); -// } - -// else if (info.getData().getVendor().equals("东风汽车集团")) { -// CallerHDMapManager.INSTANCE.changeCurrentIcon(R.raw.chuzuche); -// } else if (info.getData().getVendor().equals("金旅星辰")) { -// CallerHDMapManager.INSTANCE.changeCurrentIcon(R.raw.xiaobache); -// } else { -// CallerHDMapManager.INSTANCE.changeCurrentIcon(R.raw.chuzuche); -// } - + updateCarVrIconRes(info.getData().getBrandId()); + switch (info.getData().getCompare()) { + case "0": + CallerHmiManager.INSTANCE.showBindingcarDialog(); + break; + case "3": + CallerHmiManager.INSTANCE.showModifyBindingcarDialog(); + break; + case "null": + TipToast.shortTip("当前工控机没有入库"); + break; + } SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.CAR_INFO, GsonUtils.toJson(info.getData())); } } @Override public void onError(@NonNull Throwable e) { - CallerLogger.INSTANCE.e(TAG, "getBindingcarInfo onError e = " + e.toString() + "---e.getMessage = " + e.getMessage()); + CallerLogger.INSTANCE.e(M_BINDING + TAG, "getBindingcarInfo onError e = " + e.toString() + "---e.getMessage = " + e.getMessage()); } @Override @@ -118,6 +113,8 @@ public class BindingcarNetWorkManager { * mac: 48:b0:2d:3a:9c:19 */ public void modifyBindingcar(String macAddress, String widevineIDWithMd5, BindingcarCallBack callBack, int screenType) { +// String macAddress1 = "48:b0:2d:4d:33:40"; +// String sn = "X2020220417KA94QIN"; BindingcarRequest request = new BindingcarRequest(macAddress, widevineIDWithMd5, screenType); RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request)); mBindingcarApiService.modifyBindingcarInfo(requestBody) @@ -132,14 +129,14 @@ public class BindingcarNetWorkManager { public void onNext(@NonNull ModifyBindingcarInfo info) { if (info != null) { callBack.callBackResult(info); - Log.d(TAG, "modifyBindingcar onNext code = " + info.code + "---msg = " + info.msg + "--info.toString() = " + info.toString()); - CallerLogger.INSTANCE.d(TAG, "modifyBindingcar onNext code = " + info.code + "---msg = " + info.msg + "--info.toString() = " + info.toString()); + CallerLogger.INSTANCE.d(M_BINDING + TAG, "modifyBindingcar onNext code = " + info.code + "---msg = " + info.msg + "--info.toString() = " + info.toString()); + updateCarVrIconRes(info.getData().getBrandId()); } } @Override public void onError(@NonNull Throwable e) { - CallerLogger.INSTANCE.e(TAG, "modifyBindingcar onError e = " + e.toString() + "---e.getMessage = " + e.getMessage()); + CallerLogger.INSTANCE.e(M_BINDING + TAG, "modifyBindingcar onError e = " + e.toString() + "---e.getMessage = " + e.getMessage()); } @Override @@ -149,4 +146,30 @@ public class BindingcarNetWorkManager { } + private void updateCarVrIconRes(String brandId){ + if(brandId == null || brandId.isEmpty()){ + return; + } + CallerLogger.INSTANCE.d(M_BINDING + TAG,"updateCarVrIconRes : " + brandId); + switch (brandId){ + case "1": + CallerHDMapManager.INSTANCE.changeCurrentIcon(R.raw.chuzuche); + HdMapBuildConfig.currentCarVrIconRes =R.raw.chuzuche; + break; + case "2": + CallerHDMapManager.INSTANCE.changeCurrentIcon(R.raw.hq_h9); + HdMapBuildConfig.currentCarVrIconRes =R.raw.hq_h9; + break; + case "3": + CallerHDMapManager.INSTANCE.changeCurrentIcon(R.raw.xiaobache); + HdMapBuildConfig.currentCarVrIconRes =R.raw.xiaobache; + break; + default: + CallerHDMapManager.INSTANCE.changeCurrentIcon(R.raw.chuzuche); + HdMapBuildConfig.currentCarVrIconRes =R.raw.chuzuche; + break; + } + + } + } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/AndroidManifest.xml b/core/function-impl/mogo-core-function-devatools/src/main/AndroidManifest.xml index dc9cf1b26e..b0de6b5f86 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/AndroidManifest.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/AndroidManifest.xml @@ -5,5 +5,7 @@ + + \ 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/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index 2e809bf915..1f8dfe50b6 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 @@ -15,6 +15,7 @@ import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigCenter.Companion.bizConfigCenter import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigImpl import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchManager +import com.zhjt.mogo_core_function_devatools.mofang.MoFangManager import com.zhjt.mogo_core_function_devatools.monitor.MonitorManager import com.zhjt.mogo_core_function_devatools.scene.SceneManager.Companion.sceneManager import com.zhjt.mogo_core_function_devatools.status.* @@ -42,6 +43,7 @@ class DevaToolsProvider : IDevaToolsProvider { bizConfigCenter.init(mContext!!) FuncConfigImpl.init() MogoLogCatchManager.init(mContext!!) + MoFangManager.INSTANCE.init(mContext!!) } override fun startLogCatch() { 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 944cad91bc..5eed6e1651 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 @@ -186,6 +186,7 @@ internal object BadCaseManager : LifecycleEventObserver { override fun onFinish() { passiveBadCaseWindow.hideFloatWindow() + BadCaseConfig.windowNum-- } } countDownTimer.start() 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 cbdaa3df24..9a81e1d609 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 @@ -174,26 +174,28 @@ internal class BadCaseConfigView @JvmOverloads constructor( override fun onAutopilotRecordConfig(config: MessagePad.RecordDataConfig) { super.onAutopilotRecordConfig(config) ThreadUtils.runOnUiThread { - if(BadCaseConfig.dockerVersion!!.contains("2.3.0") - || BadCaseConfig.dockerVersion!!.contains("2.4.0") - || BadCaseConfig.dockerVersion!!.contains("2.5.0") - || BadCaseConfig.dockerVersion!!.contains("2.6.0") - || BadCaseConfig.dockerVersion!!.contains("2.8.0")){ - rvTemplate.visibility = View.GONE - }else{ - config.recordTypesList.iterator().forEach { - if (it.id != 99){ - val topicList = ArrayList() - it.topicsList.iterator().forEach { - topicList.add(TopicEntity(it,true,false)) + if(BadCaseConfig.dockerVersion!=null){ + if(BadCaseConfig.dockerVersion!!.contains("2.3.0") + || BadCaseConfig.dockerVersion!!.contains("2.4.0") + || BadCaseConfig.dockerVersion!!.contains("2.5.0") + || BadCaseConfig.dockerVersion!!.contains("2.6.0") + || BadCaseConfig.dockerVersion!!.contains("2.8.0")){ + rvTemplate.visibility = View.GONE + }else{ + config.recordTypesList.iterator().forEach { + if (it.id != 99){ + val topicList = ArrayList() + it.topicsList.iterator().forEach { + topicList.add(TopicEntity(it,true,false)) + } + recordTypesList.add(RecordTypeEntity(it.id,it.desc,topicList)) } - recordTypesList.add(RecordTypeEntity(it.id,it.desc,topicList)) } - } - if(recordTypesList.size>1){ - rvTemplate.visibility = View.VISIBLE - recordTemplateAdapter?.setData(recordTypesList) - recordTemplateAdapter?.notifyDataSetChanged() + 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/CaseTopicListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java index c9f0686c77..08ad929554 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 @@ -5,9 +5,7 @@ import android.content.Context; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; -import android.util.Log; -import android.view.KeyEvent; -import android.view.View; +import android.view.WindowManager; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; @@ -62,6 +60,10 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_case_topic_list); + WindowManager.LayoutParams params = getWindow().getAttributes(); + params.height = 959; + params.width = 1270; + getWindow().setAttributes(params);//向WindowManager设置属性 setCanceledOnTouchOutside(false); CallerAutopilotRecordListenerManager.INSTANCE.addListener(TAG, this); init(); @@ -185,13 +187,11 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL @Override public void onAutopilotRecordConfig(MessagePad.RecordDataConfig config) { ThreadUtils.runOnUiThread(() -> { - Log.i("houyanli","AllTopicsCount="+config.getAllTopicsCount()); if(config.getAllTopicsCount()>0){ for(int index=0;index { //中间状态 TODO + CallerLogger.d("$M_F${TAG}","bluetoothMonitorReceiver ACTION_STATE_CHANGED action = ${intent.action}") + } + + BluetoothDevice.ACTION_ACL_CONNECTED -> { //蓝牙设备已连接 + if (!isMfConnect) { +// showBondedDevice(mBluetoothAdapter) + updateMfStatusView(TAG, true) + isMfConnect = true + mContext?.let { SharedPrefsMgr.getInstance(it).putBoolean(MfConstants.BLUETOOTH_STATUS, true) } + } + CallerLogger.d("$M_F${TAG}","bluetoothMonitorReceiver ACTION_ACL_CONNECTED ----- isMfConnect = $isMfConnect") + } + + BluetoothDevice.ACTION_ACL_DISCONNECTED -> { //蓝牙设备已断开 主动更新 + CallerLogger.d("$M_F${TAG}","bluetoothMonitorReceiver ACTION_ACL_DISCONNECTED ----- isMfConnect = $isMfConnect ") + if (isMfConnect) { + updateMfStatusView(TAG, false) + isMfConnect = false + mContext?.let { SharedPrefsMgr.getInstance(it).putBoolean(MfConstants.BLUETOOTH_STATUS, false) } + } + } + } + } + } + +} + diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/SyncConfig.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/SyncConfig.kt index a47fe42f12..51ca529e18 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/SyncConfig.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/SyncConfig.kt @@ -13,7 +13,6 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA import com.mogo.eagle.core.utilcode.util.NetworkUtils -import com.mogo.map.MogoMap import com.zhjt.mogo_core_function_devatools.trace.network.StartUpTraceNetWorkModel import com.zhjt.service.chain.ChainLog import com.zhjt.service.chain.TracingConstants @@ -35,9 +34,8 @@ object SyncConfig { AppConfigInfo.mogoToken = MoGoAiCloudClient.getInstance().aiCloudClientConfig.token } AppConfigInfo.netMode = DebugConfig.getNetMode() - if (MogoMap.getInstance().mogoMap != null) { - AppConfigInfo.mapSdkVersion = MogoMap.getInstance().mogoMap.mapVersion - } + AppConfigInfo.mapSdkVersion = DebugConfig.getMapVersion() + AppConfigInfo.mapSdkOptVersion = DebugConfig.getMapOptVersion() AppConfigInfo.isConnectNet = NetworkUtils.isConnected(context) AppConfigInfo.isConnectSocket = MogoStatusManager.getInstance().isSocketOnLine when { @@ -69,7 +67,7 @@ object SyncConfig { startUpTraceModel.report(traceId, { traceId = it }, { - CallerLogger.e("$M_DEVA${"SyncConfig"}","error : $it") + CallerLogger.e("$M_DEVA${"SyncConfig"}", "error : $it") }) } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/dialog_case_topic_list.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/dialog_case_topic_list.xml index ae7db16d2c..d1ef0d14ce 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/dialog_case_topic_list.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/dialog_case_topic_list.xml @@ -2,8 +2,8 @@ @@ -62,18 +62,18 @@ app:layout_constraintRight_toRightOf="parent" android:text="取消" android:textColor="#FFFFFFFF" - android:textSize="52dp" + android:textSize="52px" android:gravity="center" /> @@ -116,7 +116,7 @@ app:layout_constraintRight_toRightOf="@id/clSearchLayout" app:layout_constraintTop_toBottomOf="@id/clSearchLayout" app:layout_constraintBottom_toTopOf="@id/viewHorizontalLine" - android:layout_marginTop="50dp" + android:layout_marginTop="50px" android:layout_marginBottom="20dp" android:scrollbars="vertical" android:fadeScrollbars="false" diff --git a/core/function-impl/mogo-core-function-hmi/build.gradle b/core/function-impl/mogo-core-function-hmi/build.gradle index 6aedc92099..49f06ebcfa 100644 --- a/core/function-impl/mogo-core-function-hmi/build.gradle +++ b/core/function-impl/mogo-core-function-hmi/build.gradle @@ -65,8 +65,8 @@ dependencies { // implementation rootProject.ext.dependencies.crashSdk implementation rootProject.ext.dependencies.boostmultidex - debugImplementation rootProject.ext.dependencies.debugleakcanary - releaseImplementation rootProject.ext.dependencies.releaseleakcanary +// debugImplementation rootProject.ext.dependencies.debugleakcanary +// releaseImplementation rootProject.ext.dependencies.releaseleakcanary implementation rootProject.ext.dependencies.arouter kapt rootProject.ext.dependencies.aroutercompiler diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/receiver/V2XWarningBroadcastReceiver.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/receiver/V2XWarningBroadcastReceiver.kt index 244d170bfa..6207e5eb1b 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/receiver/V2XWarningBroadcastReceiver.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/receiver/V2XWarningBroadcastReceiver.kt @@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.hmi.receiver import android.content.BroadcastReceiver import android.content.Context import android.content.Intent +import android.util.Log import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.hmi.WaringConst import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -77,6 +78,9 @@ class V2XWarningBroadcastReceiver : BroadcastReceiver() { if (EventTypeEnum.TYPE_USECASE_ID_IVP.poiType == v2xType.toString()) { CallerHmiManager.showLimitingVelocity(1) } + if (alertContent.isNullOrEmpty() || ttsContent.isNullOrEmpty()) { + Log.d("MsgBox-V2XWarningBR", "alertContent或ttsContent为空!") + } CallerMsgBoxManager.saveMsgBox( MsgBoxBean( MsgBoxType.V2X, 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 b18902c002..ccf6614c2a 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 @@ -9,6 +9,7 @@ import android.os.Build.VERSION_CODES import android.os.Bundle import android.text.TextUtils import android.transition.* +import android.util.* import android.view.Gravity import android.view.View import android.view.ViewGroup @@ -20,6 +21,7 @@ import androidx.core.view.* import androidx.lifecycle.lifecycleScope import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.android.arouter.launcher.ARouter +import com.mogo.commons.context.ContextHolderUtil import com.mogo.commons.mvp.BaseFragment import com.mogo.commons.mvp.MvpFragment import com.mogo.commons.voice.* @@ -59,11 +61,10 @@ import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager import com.mogo.eagle.core.function.call.check.CallerCheckManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager -import com.mogo.eagle.core.function.call.map.CallerMapDataCollectorManager -import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager +import com.mogo.eagle.core.function.call.map.* +import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.Turning import com.mogo.eagle.core.function.call.monitor.CallerMonitorManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager -import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.notification.WarningFloat import com.mogo.eagle.core.function.hmi.notification.anim.DefaultAnimator @@ -72,7 +73,6 @@ import com.mogo.eagle.core.function.hmi.ui.bindingcar.ToBindingCarDialog import com.mogo.eagle.core.function.hmi.ui.bindingcar.UpgradeAppDialog import com.mogo.eagle.core.function.hmi.ui.camera.CameraListView import com.mogo.eagle.core.function.hmi.ui.camera.RoadVideoDialog -import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxBubbleView import com.mogo.eagle.core.function.hmi.ui.notice.NoticeCheckDialog import com.mogo.eagle.core.function.hmi.ui.notice.NoticeTrafficDialog import com.mogo.eagle.core.function.hmi.ui.setting.DebugSettingView @@ -89,6 +89,7 @@ import com.mogo.eagle.core.function.main.utils.DisplayEffectsHelper import com.mogo.eagle.core.utilcode.kotlin.* import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.* +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr import com.mogo.eagle.core.utilcode.mogo.toast.TipToast @@ -97,8 +98,8 @@ import com.mogo.eagle.core.utilcode.reminder.api.* import com.mogo.eagle.core.utilcode.reminder.api.IReminder.IStateChangeListener import com.mogo.eagle.core.utilcode.reminder.api.impl.* import com.mogo.eagle.core.utilcode.util.* +import com.mogo.eagle.core.utilcode.util.TimeUtils import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String -import com.mogo.map.MogoMap import com.zhidao.support.adas.high.common.MogoReport.Code.Error.EMAP.* import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig import com.zhjt.service_biz.BizConfig @@ -237,7 +238,7 @@ class MoGoHmiFragment : MvpFragment(), if (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().autopilotControlParameters == null) { FunctionBuildConfig.isDemoMode = !FunctionBuildConfig.isDemoMode context?.let { - CallerHmiManager.updateStatusBarRightView( + CallerHmiManager.updateStatusBarLeftView( FunctionBuildConfig.isDemoMode, "demoMode", DemoModeView(it) @@ -455,10 +456,18 @@ class MoGoHmiFragment : MvpFragment(), statusBarView?.updateRightView(insert, tag, viewGroup) } + override fun updateStatusBarLeftView(insert: Boolean, tag: String, viewGroup: ViewGroup) { + statusBarView?.updateLeftView(insert, tag, viewGroup) + } + override fun updateStatusBarDownloadView(insert: Boolean, tag: String, progress: Int) { statusBarView?.updateProgressView(insert, tag, progress) } + override fun updateMfStatus(tag: String, status: Boolean) { + statusBarView?.updateMfStatus(tag, status) + } + override fun updateDriverMsgBoxTipView(show: Boolean) { if(show){ MsgBoxTipView.visibility = View.VISIBLE @@ -1363,32 +1372,49 @@ class MoGoHmiFragment : MvpFragment(), private var isRightLight: Boolean = false private var isDisappare: Boolean = false + @Volatile + private var isVisualAngleChanged = false + /** * 显示转向灯效果 if (HmiBuildConfig.isShowBadCaseView) { */ override fun showTurnLight(light: Int) { + CallerLogger.d("${SceneConstant.M_DEVA}${"TurnLight"}", "---showTurnLight = $light ---isLeftLight = $isLeftLight ---isRightLight = $isRightLight") if (HmiBuildConfig.isShowTurnLightView) { ThreadUtils.runOnUiThread { - if (light == 1) { + if (light == 1 || light == 2) { + if (!isVisualAngleChanged) { + isVisualAngleChanged = true + CallerVisualAngleManager.changeVisualAngle(Turning(true)) + } + } else { + if (isVisualAngleChanged) { + isVisualAngleChanged = false + CallerVisualAngleManager.changeVisualAngle(Turning(false)) + } + } + if (light == 1) { //左转灯 if (!isLeftLight) { isLeftLight = true isRightLight = false isDisappare = false - //TODO + CallerLogger.d("${SceneConstant.M_DEVA}${"TurnLight"}", "---showTurnLight ---light = 1") CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(4, 500) } - } else if (light == 2) { + } else if (light == 2) { //右转灯 if (!isRightLight) { isRightLight = true isLeftLight = false isDisappare = false + CallerLogger.d("${SceneConstant.M_DEVA}${"TurnLight"}", "---showTurnLight ---light = 2") CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(2, 500) } } else { - if (!isDisappare) { + if (!isDisappare) { //默认 不亮灯 isDisappare = true isLeftLight = false isRightLight = false + CallerLogger.d("${SceneConstant.M_DEVA}${"TurnLight"}", "---showTurnLight ---light other") CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(3, 500) } } @@ -1411,11 +1437,13 @@ class MoGoHmiFragment : MvpFragment(), if (light == 1) { //刹车灯亮 if (!isBrake) { isBrake = true + CallerLogger.d("${SceneConstant.M_DEVA}${"BrakeLight"}", " showBrakeLight light = 1 ") CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(0, 500) } } else { - if (isBrake) { + if (isBrake) {//默认 不亮灯 isBrake = false + CallerLogger.d("${SceneConstant.M_DEVA}${"BrakeLight"}", " showBrakeLight light != 1 ") CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(3, 500) } } @@ -1455,11 +1483,13 @@ class MoGoHmiFragment : MvpFragment(), content: String, installType: String ) { - if (upgradeAppDialog == null) { - upgradeAppDialog = context?.let { UpgradeAppDialog(it) } + if (ContextHolderUtil.getContext() != null) { + if (upgradeAppDialog == null) { + upgradeAppDialog = UpgradeAppDialog(ContextHolderUtil.getContext()) + } + upgradeAppDialog!!.setCanceledOnTouchOutside(false) + upgradeAppDialog!!.showUpgradeAppDialog(name, url, title, content, installType) } - upgradeAppDialog!!.setCanceledOnTouchOutside(false) - upgradeAppDialog!!.showUpgradeAppDialog(name, url, title, content, installType) } /** diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxBubbleView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxBubbleView.kt index 766910439f..fb8fabb4a4 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxBubbleView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxBubbleView.kt @@ -3,18 +3,13 @@ package com.mogo.eagle.core.function.hmi.ui.msgbox import android.app.Activity import android.content.Context import android.util.AttributeSet -import android.util.Log import android.view.LayoutInflater import android.view.View -import android.widget.LinearLayout import androidx.constraintlayout.widget.ConstraintLayout -import androidx.core.view.marginTop import androidx.recyclerview.widget.LinearLayoutManager import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.msgbox.MsgBoxBean -import com.mogo.eagle.core.data.msgbox.MsgBoxType import com.mogo.eagle.core.data.msgbox.MsgCategory -import com.mogo.eagle.core.data.msgbox.OperationMsg import com.mogo.eagle.core.function.api.msgbox.IMsgBoxListener import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager @@ -57,7 +52,7 @@ class DriverMsgBoxBubbleView @JvmOverloads constructor( driverMsgBoxBubbleAdapter?.setChangeListener(object : DriverMsgBoxBubbleAdapter.ChangeViewListener{ override fun notifyView() { if(dataList.isEmpty()){ - rvBubbleList.visibility = View.GONE + clMsgBubbleLayout.visibility = View.GONE } } @@ -93,7 +88,7 @@ class DriverMsgBoxBubbleView @JvmOverloads constructor( //弹出被动录包弹窗 CallerDevaToolsManager.onReceiveBadCaseRecord(msgBoxBean,context as Activity,true) }else{ - rvBubbleList.visibility = View.VISIBLE + clMsgBubbleLayout.visibility = View.VISIBLE dataList.add(msgBoxBean) driverMsgBoxBubbleAdapter?.setData(dataList) } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxListView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxListView.kt index 554403778b..2dbaf16312 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxListView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/DriverMsgBoxListView.kt @@ -3,7 +3,6 @@ package com.mogo.eagle.core.function.hmi.ui.msgbox import android.app.Activity import android.content.Context import android.util.AttributeSet -import android.util.Log import android.view.LayoutInflater import android.view.View import androidx.constraintlayout.widget.ConstraintLayout @@ -11,7 +10,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.data.msgbox.MsgCategory -import com.mogo.eagle.core.data.msgbox.OperationMsg import com.mogo.eagle.core.function.api.msgbox.IMsgBoxListener import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxListenerManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager @@ -19,9 +17,11 @@ import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.ui.msgbox.adapter.DriverMsgBoxListAdapter import com.mogo.eagle.core.function.msgbox.MsgBoxConfig import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils -import com.mogo.eagle.core.utilcode.util.TimeUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import kotlinx.android.synthetic.main.layout_driver_msg_box_list.view.* +import org.greenrobot.eventbus.EventBus +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode /** * @author XuXinChao @@ -177,6 +177,7 @@ class DriverMsgBoxListView @JvmOverloads constructor( } MsgCategory.RECORD_BAG -> { badCaseList?.add(0,msgBoxList) + badCaseList?.let { driverMsgBoxListAdapter?.setData(it) } } } } @@ -186,6 +187,7 @@ class DriverMsgBoxListView @JvmOverloads constructor( super.onAttachedToWindow() if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){ CallerMsgBoxListenerManager.addListener(TAG,this) + EventBus.getDefault().register(this) } } @@ -193,8 +195,15 @@ class DriverMsgBoxListView @JvmOverloads constructor( super.onDetachedFromWindow() if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){ CallerMsgBoxListenerManager.removeListener(TAG) + EventBus.getDefault().unregister(this) } } - + @Subscribe(threadMode = ThreadMode.MAIN) + fun notifyList(msgBoxList: MsgBoxBean){ + badCaseList?.let { + driverMsgBoxListAdapter?.notifyItemRemoved(it.indexOf(msgBoxList)) + it.remove(msgBoxList) + } + } } \ 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/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt index 976daf5d2b..ab7bab281e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt @@ -9,6 +9,7 @@ import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.mogo.eagle.core.data.enums.EventTypeEnum +import com.mogo.eagle.core.data.enums.EventTypeEnumNew import com.mogo.eagle.core.data.msgbox.* import com.mogo.eagle.core.data.report.ReportEntity import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager @@ -53,10 +54,10 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_report,parent,false) return BubbleReportHolder(view) }else if(viewType == notice){ - val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_box_notice,parent,false) + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_notice,parent,false) return BubbleNoticeHolder(view) }else{ - val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_box_v2x,parent,false) + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_v2x,parent,false) return BubbleV2XHolder(view) } } @@ -81,7 +82,8 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A } }else if(holder is BubbleNoticeHolder){ data?.let { - val noticeFrCloudMsg = it[position].bean as NoticeFrCloudMsg + val msgBoxBean = it[position].bean + val noticeFrCloudMsg = msgBoxBean as NoticeFrCloudMsg if(noticeFrCloudMsg.type == 0){ val noticeNormalData = noticeFrCloudMsg.noticeNormalData holder.tvNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) @@ -118,10 +120,17 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A } }else if(holder is BubbleV2XHolder){ data?.let { - val v2XMsg = it[position].bean as V2XMsg + val msgBoxBean = it[position] + val v2XMsg = msgBoxBean.bean as V2XMsg holder.tvV2XTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) holder.tvV2XContent.text = v2XMsg.content - holder.ivV2XImage.setImageDrawable(activity.resources.getDrawable(EventTypeEnum.getUpdateIconRes(v2XMsg.type))) + if(msgBoxBean.type == MsgBoxType.OBU){ + holder.ivV2XImage.setImageDrawable(activity.resources.getDrawable( + EventTypeEnumNew.getUpdateIconRes(v2XMsg.type))) + }else{ + holder.ivV2XImage.setImageDrawable(activity.resources.getDrawable( + EventTypeEnum.getUpdateIconRes(v2XMsg.type))) + } } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt index 6b6cd3a740..65a914808d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt @@ -2,9 +2,7 @@ package com.mogo.eagle.core.function.hmi.ui.msgbox.adapter import android.annotation.SuppressLint import android.app.Activity -import android.util.Log import android.view.LayoutInflater -import android.view.MenuItem import android.view.View import android.view.ViewGroup import android.widget.ImageView @@ -12,8 +10,8 @@ import android.widget.TextView import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import com.mogo.eagle.core.data.enums.EventTypeEnum +import com.mogo.eagle.core.data.enums.EventTypeEnumNew import com.mogo.eagle.core.data.msgbox.* -import com.mogo.eagle.core.data.notice.NoticeNormalData import com.mogo.eagle.core.data.report.ReportEntity import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager @@ -24,7 +22,6 @@ import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTran import com.mogo.eagle.core.utilcode.util.ResourceUtils.getDrawable import com.mogo.eagle.core.utilcode.util.TimeUtils import com.mogo.eagle.core.utilcode.util.TimeUtils.getHourMinFormat -import com.mogo.eagle.core.widget.RoundConstraintLayout /** * @author XuXinChao @@ -79,7 +76,6 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : RecyclerView.Ada holder.tvBagReceiveTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) holder.tvBagRecordTime.text = "时间:${TimeUtils.millis2String(it[position].timestamp)}" val msgBoxBean = it[position] -// val recordBagMsg = (it[position].bean as RecordBagMsg) holder.tvRecordCheck.setOnClickListener { //打开被动录包弹窗 CallerDevaToolsManager.onReceiveBadCaseRecord(msgBoxBean,activity,false) @@ -214,10 +210,17 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : RecyclerView.Ada } }else if(holder is MsgBoxV2X){ data?.let { - val v2XMsg = it[position].bean as V2XMsg + val msgBoxBean = it[position] + val v2XMsg = msgBoxBean.bean as V2XMsg holder.tvV2XTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) holder.tvV2XContent.text = v2XMsg.content - holder.ivV2XImage.setImageDrawable(activity.resources.getDrawable(EventTypeEnum.getUpdateIconRes(v2XMsg.type))) + if(msgBoxBean.type == MsgBoxType.OBU){ + holder.ivV2XImage.setImageDrawable(activity.resources.getDrawable( + EventTypeEnumNew.getUpdateIconRes(v2XMsg.type))) + }else{ + holder.ivV2XImage.setImageDrawable(activity.resources.getDrawable( + EventTypeEnum.getUpdateIconRes(v2XMsg.type))) + } } } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/PassengerMsgBoxBubbleAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/PassengerMsgBoxBubbleAdapter.kt index 4f5dab8266..6b0c6750a6 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/PassengerMsgBoxBubbleAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/PassengerMsgBoxBubbleAdapter.kt @@ -9,6 +9,7 @@ import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.mogo.eagle.core.data.enums.EventTypeEnum +import com.mogo.eagle.core.data.enums.EventTypeEnumNew import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.data.msgbox.MsgBoxType import com.mogo.eagle.core.data.msgbox.NoticeFrCloudMsg @@ -91,11 +92,17 @@ class PassengerMsgBoxBubbleAdapter(private val activity: Activity): RecyclerView } }else if(holder is BubbleV2XHolder){ data?.let { - val v2XMsg = it[position].bean as V2XMsg + val msgBoxBean = it[position] + val v2XMsg = msgBoxBean.bean as V2XMsg holder.tvPassengerV2XTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) holder.tvPassengerV2XContent.text = v2XMsg.content - holder.ivPassengerV2XImage.setImageDrawable(activity.resources.getDrawable( - EventTypeEnum.getUpdateIconRes(v2XMsg.type))) + if(msgBoxBean.type == MsgBoxType.OBU){ + holder.ivPassengerV2XImage.setImageDrawable(activity.resources.getDrawable( + EventTypeEnumNew.getUpdateIconRes(v2XMsg.type))) + }else{ + holder.ivPassengerV2XImage.setImageDrawable(activity.resources.getDrawable( + EventTypeEnum.getUpdateIconRes(v2XMsg.type))) + } } } val msgBoxBean: MsgBoxBean = data!![position] diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/PassengerMsgBoxListAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/PassengerMsgBoxListAdapter.kt index 700acc2078..50c635e49c 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/PassengerMsgBoxListAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/PassengerMsgBoxListAdapter.kt @@ -8,6 +8,7 @@ import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.mogo.eagle.core.data.enums.EventTypeEnum +import com.mogo.eagle.core.data.enums.EventTypeEnumNew import com.mogo.eagle.core.data.msgbox.MsgBoxBean import com.mogo.eagle.core.data.msgbox.MsgBoxType import com.mogo.eagle.core.data.msgbox.NoticeFrCloudMsg @@ -83,11 +84,17 @@ class PassengerMsgBoxListAdapter(private val activity: Activity): RecyclerView.A } }else if(holder is ListV2XHolder){ data?.let { - val v2XMsg = it[position].bean as V2XMsg + val msgBoxBean = it[position] + val v2XMsg = msgBoxBean.bean as V2XMsg holder.tvPassengerV2XTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) holder.tvPassengerV2XContent.text = v2XMsg.content - holder.ivPassengerV2XImage.setImageDrawable(activity.resources.getDrawable( - EventTypeEnum.getUpdateIconRes(v2XMsg.type))) + if(msgBoxBean.type == MsgBoxType.OBU){ + holder.ivPassengerV2XImage.setImageDrawable(activity.resources.getDrawable( + EventTypeEnumNew.getUpdateIconRes(v2XMsg.type))) + }else{ + holder.ivPassengerV2XImage.setImageDrawable(activity.resources.getDrawable( + EventTypeEnum.getUpdateIconRes(v2XMsg.type))) + } } } } 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 32207c1d81..c98bbfc1e0 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 @@ -73,19 +73,16 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr import com.mogo.eagle.core.utilcode.mogo.toast.TipToast import com.mogo.eagle.core.utilcode.util.* -import com.mogo.map.MogoMap import com.mogo.map.MogoMapUIController import com.mogo.map.uicontroller.VisualAngleMode import com.mogo.map.uicontroller.VisualAngleMode.* import com.mogo.eagle.core.function.business.routeoverlay.* import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager -import com.mogo.eagle.core.function.v2x.vip.VipCarManager import com.zhidao.easysocket.utils.L import com.zhidao.support.adas.high.other.permission.BackgrounderPermission import com.zhjt.mogo_core_function_devatools.env.* import kotlinx.android.synthetic.main.view_debug_setting.view.* import kotlinx.android.synthetic.main.view_debug_setting.view.tbRouteDynamicEffect -import kotlinx.android.synthetic.main.view_sop_setting.view.* import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg import java.text.SimpleDateFormat @@ -585,15 +582,15 @@ class DebugSettingView @JvmOverloads constructor( tbIsDemoMode.isChecked = FunctionBuildConfig.isDemoMode // 演示模式 - tbIsDemoMode.setOnCheckedChangeListener { _, isChecked -> - CallerHmiManager.updateStatusBarRightView(isChecked, "demoMode", DemoModeView(context)) - CallerAutoPilotManager.setDemoMode(isChecked) - if (!isChecked) { + tbIsDemoMode.setOnCheckedChangeListener { _, _ -> + FunctionBuildConfig.isDemoMode = !FunctionBuildConfig.isDemoMode + CallerHmiManager.updateStatusBarLeftView(FunctionBuildConfig.isDemoMode, "demoMode", DemoModeView(context)) + CallerAutoPilotManager.setDemoMode(FunctionBuildConfig.isDemoMode) + if (!FunctionBuildConfig.isDemoMode) { //关闭美化模式时,通知工控机 - CallerAutoPilotManager.setIPCDemoMode(isChecked) + CallerAutoPilotManager.setIPCDemoMode(FunctionBuildConfig.isDemoMode) } - FunctionBuildConfig.isDemoMode = isChecked - tbIsDrawAutopilotTrajectoryData.isEnabled = !isChecked + tbIsDrawAutopilotTrajectoryData.isEnabled = !FunctionBuildConfig.isDemoMode if (!FunctionBuildConfig.isDemoMode) { tbIsDrawAutopilotTrajectoryData.isChecked = false } @@ -1145,7 +1142,7 @@ class DebugSettingView @JvmOverloads constructor( * 限速数据,优先使用obu,默认打开 */ tbRoadLimitSpeed.setOnCheckedChangeListener { _, isChecked -> - HmiBuildConfig.isShowObuLimitSpeedView = !isChecked + HmiBuildConfig.isShowObuLimitSpeedView = isChecked } /** @@ -1691,8 +1688,8 @@ class DebugSettingView @JvmOverloads constructor( } tvIpcVersionInfo.text = "MAP:${mAutoPilotStatusInfo?.dockVersion}" tvIpcVersionInfoKey.text = "MAP:${mAutoPilotStatusInfo?.dockVersion}" - tvMoGoMapVersion.text = "HD-Map版本:${MogoMap.getInstance().mogoMap.mapVersion}" - tvMoGoMapVersionKey.text = "HD-Map版本:${MogoMap.getInstance().mogoMap.mapVersion}" + tvMoGoMapVersion.text = "HD-Map版本:${DebugConfig.getMapVersion()}" + tvMoGoMapVersionKey.text = "HD-Map版本:${DebugConfig.getMapVersion()}" tvGitBranchInfo.text = "Git分支:${AppConfigInfo.workingBranchName}" tvAppBuildTimeInfo.text = "版本构建时间:${AppConfigInfo.appBuildTime}" @@ -1835,6 +1832,13 @@ class DebugSettingView @JvmOverloads constructor( mUnknownIdentifyDataSize = 0 mTrajectoryInfoSize = 0 mRouteInfoSize = 0 + + if(FunctionBuildConfig.isDemoMode){ + tbIsDemoMode.text = "关闭美化模式" + }else{ + tbIsDemoMode.text = "开启美化模式" + } + } /** 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 8917b830bb..ca74993d5a 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 @@ -2,6 +2,7 @@ package com.mogo.eagle.core.function.hmi.ui.setting import android.content.Context import android.util.AttributeSet +import android.util.Log import android.view.LayoutInflater import android.view.View import androidx.constraintlayout.widget.ConstraintLayout @@ -19,8 +20,11 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.function.business.routeoverlay.RouteStrategy import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView +import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import kotlinx.android.synthetic.main.view_debug_setting.view.* import kotlinx.android.synthetic.main.view_sop_setting.view.* import kotlinx.android.synthetic.main.view_sop_setting.view.tbRouteDynamicEffect +import java.util.* /** * SOP设置窗口 @@ -71,6 +75,61 @@ class SOPSettingView @JvmOverloads constructor( } } + /** + * obu弱势交通控制 + */ + tbObuWeaknessTrafficSop.setOnCheckedChangeListener { _, isChecked -> + if (!isChecked) { //默认开启 + CallerHmiManager.setObuWeaknessTraffic(true) + } else { + CallerHmiManager.setObuWeaknessTraffic(false) + } + } + + /** + * 云端弱势交通控制 + */ + tbCloudWeaknessTrafficSop.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { //默认关闭 + CallerHmiManager.setCloudWeaknessTraffic(true) + } else { + CallerHmiManager.setCloudWeaknessTraffic(false) + } + } + + /** + * 限速数据来源开关 + */ + tbRoadLimitSpeedSop.setOnCheckedChangeListener { _, isChecked -> + //默认关闭 + HmiBuildConfig.isShowObuLimitSpeedView = isChecked + } + + /** + * obu V2V开关 + */ + tbObuV2vView.setOnCheckedChangeListener { _, isChecked -> + //默认关闭 + HmiBuildConfig.isShowObuV2vView = isChecked + } + + /** + * obu V2i开关 + */ + tbObuV2iView.setOnCheckedChangeListener { _, isChecked -> + //默认关闭 + HmiBuildConfig.isShowObuV2iView = isChecked + } + + /** + * obu 数据通过dc 传输V2i事件 开关 TODO pm确定下开关功能 HmiBuildConfig.isShowObuToDcV2iView + */ + tbObuToDcView.setOnCheckedChangeListener { _, isChecked -> + //默认开启 + HmiBuildConfig.isShowObuToDcV2iView = !isChecked +// Log.d("liyz", "HmiBuildConfig.isShowObuToDcV2iView = " + HmiBuildConfig.isShowObuToDcV2iView) + } + //红绿灯标识 tbTrafficLight.isChecked = HmiBuildConfig.isShowTrafficLightView tbTrafficLight.setOnCheckedChangeListener { _, isChecked -> @@ -96,14 +155,14 @@ class SOPSettingView @JvmOverloads constructor( // 演示模式,上一次勾选的数据 tbDemoMode.isChecked = FunctionBuildConfig.isDemoMode // 演示模式 - tbDemoMode.setOnCheckedChangeListener { _, isChecked -> - CallerHmiManager.updateStatusBarRightView(isChecked, "demoMode", DemoModeView(context)) - CallerAutoPilotManager.setDemoMode(isChecked) - if (!isChecked) { + tbDemoMode.setOnCheckedChangeListener { _, _ -> + FunctionBuildConfig.isDemoMode = !FunctionBuildConfig.isDemoMode + CallerHmiManager.updateStatusBarLeftView(FunctionBuildConfig.isDemoMode, "demoMode", DemoModeView(context)) + CallerAutoPilotManager.setDemoMode(FunctionBuildConfig.isDemoMode) + if (!FunctionBuildConfig.isDemoMode) { //关闭美化模式时,通知工控机 - CallerAutoPilotManager.setIPCDemoMode(isChecked) + CallerAutoPilotManager.setIPCDemoMode(FunctionBuildConfig.isDemoMode) } - FunctionBuildConfig.isDemoMode = isChecked } //只在司机端设置美化模式开关功能 if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { @@ -189,12 +248,32 @@ class SOPSettingView @JvmOverloads constructor( CallerDevaToolsFuncConfigListenerManager.registerDevaToolsFuncConfigListener( FuncBizConfig.FOUNDATION, TAG, true, this ) + // 开启定时查询速度 + Timer().schedule(timerTaskRefresh, Date(), 500) } override fun onDetachedFromWindow() { super.onDetachedFromWindow() // 移除 业务配置监听 CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener(FuncBizConfig.FOUNDATION, TAG) + try { + timerTaskRefresh.cancel() + } catch (e: Exception) { + e.printStackTrace() + } + } + + private val timerTaskRefresh = object : TimerTask(){ + override fun run() { + UiThreadHandler.post{ + if(FunctionBuildConfig.isDemoMode){ + tbDemoMode.text = "关闭美化模式" + }else{ + tbDemoMode.text = "开启美化模式" + } + } + } + } override fun updateBizView(type: String, lock: Boolean) { 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 d27fe7fc1a..ae89a8489b 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 @@ -2,12 +2,15 @@ package com.mogo.eagle.core.function.hmi.ui.widget import android.content.Context import android.util.AttributeSet +import android.util.Log import android.view.* import android.widget.* +import com.mogo.eagle.core.data.mofang.MfConstants import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener import com.mogo.eagle.core.function.call.devatools.* import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr 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.* @@ -29,6 +32,7 @@ class StatusBarView @JvmOverloads constructor( } private val rightViewList = CopyOnWriteArrayList() + private val leftViewList = CopyOnWriteArrayList() override fun onAttachedToWindow() { super.onAttachedToWindow() @@ -39,6 +43,11 @@ class StatusBarView @JvmOverloads constructor( // 添加换肤监听 CallerSkinModeListenerManager.addListener(TAG, this) + + var isBluetoothConnect = SharedPrefsMgr.getInstance(context).getBoolean(MfConstants.BLUETOOTH_STATUS, false) + if (isBluetoothConnect) { + updateMfStatus("MoFangManager", true) + } } override fun onSkinModeChange(skinMode: Int) { @@ -70,6 +79,20 @@ class StatusBarView @JvmOverloads constructor( } } + fun updateLeftView(insert: Boolean, tag: String, viewGroup: ViewGroup) { + if (insert) { + leftViewList.add(0, tag) + viewStatusBarLeft.addView(viewGroup, 0) + } else { + leftViewList.forEachIndexed { index, s -> + if (s == tag) { + leftViewList.removeAt(index) + viewStatusBarLeft.removeViewAt(index) + } + } + } + } + fun updateProgressView(insert: Boolean, tag: String, progress: Int) { if (insert) { viewProgressTv.visibility = VISIBLE @@ -81,9 +104,9 @@ class StatusBarView @JvmOverloads constructor( fun updateMfStatus(tag: String, status: Boolean) { if (status) { -// viewMofangStatus.setImageResource(R.drawable.icon_car_red) + viewMofangStatus.setImageResource(R.drawable.icon_bluetooth_p) } else { -// viewMofangStatus.setImageResource(R.drawable.icon_car_red) + viewMofangStatus.setImageResource(R.drawable.blue_tooth) } } 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 94324cc205..0338363c76 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 @@ -3,11 +3,9 @@ package com.mogo.eagle.core.function.main; import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_START_UP; import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_INIT; import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_LOG_CONNECT_STATUS; +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_F; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI; -import android.bluetooth.BluetoothAdapter; -import android.bluetooth.BluetoothDevice; import android.content.Intent; -import android.content.IntentFilter; import android.os.Bundle; import android.os.Handler; import android.os.Process; @@ -17,17 +15,19 @@ import android.view.KeyEvent; import android.widget.FrameLayout; import androidx.annotation.Nullable; + import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.module.intent.IMogoIntentListener; import com.mogo.commons.module.intent.IntentManager; import com.mogo.eagle.core.data.config.FunctionBuildConfig; +import com.mogo.eagle.core.data.mofang.MfConstants; 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; 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; @@ -40,9 +40,7 @@ import com.zhjt.service.chain.TracingConstants; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; -import java.lang.reflect.Method; import java.util.List; -import java.util.Set; import java.util.Timer; import java.util.TimerTask; @@ -63,8 +61,6 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis private Timer timerHorn; private Timer timerAcc; - private BluetoothMonitorReceiver mBluetoothReceiver = null; - private BluetoothAdapter mBluetoothAdapter; private boolean isShowToast = false; //toast 控制 private long startPressTime = 0; //开始按减时间 private boolean isPressEnd = false; //按键是否结束 @@ -91,14 +87,6 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis @Override protected void onResume() { super.onResume(); - - initBluetooth(); - mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); - if (!mBluetoothAdapter.isEnabled()) { - mBluetoothAdapter.enable(); - } - mBluetoothAdapter.startDiscovery(); - showBondedDevice(mBluetoothAdapter); } @Override @@ -126,7 +114,6 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis protected void onPause() { super.onPause(); mIsHomeKeyDown = false; - unregisterReceiver(this.mBluetoothReceiver); } @Override @@ -217,22 +204,22 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis */ @Override public boolean dispatchKeyEvent(KeyEvent event) { -// Log.d(TAG, "dispatchKeyEvent code = " + event.getKeyCode() + "--action = " + event.getAction() + "----" + event); - String bluetoothName = SharedPrefsMgr.getInstance(getContext()).getString("BLUETOOTH"); + CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent code = " + event.getKeyCode() + "--action = " + event.getAction() + "----" + event); + String bluetoothName = SharedPrefsMgr.getInstance(getContext()).getString(MfConstants.BLUETOOTH_NAME); if (!isPressEnd) { - Log.e(TAG, "dispatchKeyEvent bluetoothName = " + bluetoothName); + CallerLogger.INSTANCE.d(M_F + "MoFangManager","dispatchKeyEvent ---1--- bluetoothName = " + bluetoothName); } if (bluetoothName.equals("MINI_KEYBOARD")) { if (!isPressEnd) { isPressEnd = true; startPressTime = System.currentTimeMillis(); } - + CallerLogger.INSTANCE.d(M_F + "MoFangManager","dispatchKeyEvent ---2--- bluetoothName = " + bluetoothName + "--- code = " + event.getKeyCode() + "--action = " + event.getAction()); if (event.getKeyCode() == KeyEvent.KEYCODE_A) { //单击 -1,长按无操作,AB组合-2 if (event.getAction() == KeyEvent.ACTION_DOWN) { pressADownTime = System.currentTimeMillis(); - Log.d(TAG, "dispatchKeyEvent A down pressADownTime = " + pressADownTime + "---" + (pressADownTime - startPressTime) + "----isCombinationKey = " + isCombinationKey + "--pressBDownTime = " + pressBDownTime); - if ((pressADownTime - startPressTime) > 320 && (pressADownTime - startPressTime) < 1300 && pressBDownTime > 0) { + CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent A down pressADownTime = " + pressADownTime + "---" + (pressADownTime - startPressTime) + "----isCombinationKey = " + isCombinationKey + "--pressBDownTime = " + pressBDownTime); + if ((pressADownTime - startPressTime) > 360 && (pressADownTime - startPressTime) < 1300 && pressBDownTime > 0) { if (isShowToast) { ToastUtils.showShort("方块 A 按AB组合 -2 "); } @@ -250,8 +237,8 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis } } else if (event.getAction() == KeyEvent.ACTION_UP) { pressAUpTime = System.currentTimeMillis(); - Log.e(TAG, "dispatchKeyEvent A up pressAUpTime = " + pressAUpTime + "---" + (pressAUpTime - startPressTime) + "--pressBDownTime = " + pressBDownTime); - if ((pressAUpTime - startPressTime) < 300 && isCombinationKey != 3) { + CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent A up pressAUpTime = " + pressAUpTime + "---" + (pressAUpTime - startPressTime) + "--pressBDownTime = " + pressBDownTime); + if ((pressAUpTime - startPressTime) < 350 && isCombinationKey != 3) { isCombinationKey = 1; if (isShowToast) { ToastUtils.showShort("方块 单击A -1 "); @@ -267,13 +254,12 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis } }, 300); } - return true; - } else if (event.getKeyCode() == KeyEvent.KEYCODE_B) {//单击复原,长按+1,AB组合-2 + } else if (event.getKeyCode() == KeyEvent.KEYCODE_B) { //单击复原,长按+1,AB组合-2 if (event.getAction() == KeyEvent.ACTION_DOWN) { pressBDownTime = System.currentTimeMillis(); - Log.d(TAG, "dispatchKeyEvent B down pressBDownTime = " + pressBDownTime + "--差-" + (pressBDownTime - startPressTime) + "---isCombinationKey = " + isCombinationKey + "--pressADownTime = " + pressADownTime); - if ((pressBDownTime - startPressTime) > 320 && (pressBDownTime - startPressTime) < 1300 && pressADownTime > 0) { + CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent B down pressBDownTime = " + pressBDownTime + "--差-" + (pressBDownTime - startPressTime) + "---isCombinationKey = " + isCombinationKey + "--pressADownTime = " + pressADownTime); + if ((pressBDownTime - startPressTime) > 360 && (pressBDownTime - startPressTime) < 1300 && pressADownTime > 0) { if (isShowToast) { ToastUtils.showShort("方块 B 按AB组合 "); } @@ -291,8 +277,8 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis } } else if (event.getAction() == KeyEvent.ACTION_UP) { pressBUpTime = System.currentTimeMillis(); - Log.e(TAG, "dispatchKeyEvent B up pressBUpTime = " + pressBUpTime + "--差-" + (pressBUpTime - startPressTime) + "--pressADownTime = " + pressADownTime); - if ((pressBUpTime - startPressTime) < 300 && isCombinationKey != 3) { + CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent B up pressBUpTime = " + pressBUpTime + "--差-" + (pressBUpTime - startPressTime) + "--pressADownTime = " + pressADownTime); + if ((pressBUpTime - startPressTime) < 350 && isCombinationKey != 3) { if (isShowToast) { ToastUtils.showShort("方块 单击B 0 "); } @@ -309,11 +295,11 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis } }, 300); } - return true; } else if (event.getKeyCode() == KeyEvent.KEYCODE_C) { //单击左变道,长按无操作 if (event.getAction() == KeyEvent.ACTION_DOWN) { pressCDownTime = System.currentTimeMillis(); + CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 长按C 无操作 time dif = " + (pressCDownTime - startPressTime)); if ((pressCDownTime - startPressTime) > 1320) { if (isShowToast) { ToastUtils.showShort("方块 长按C 无操作 "); @@ -322,7 +308,8 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis } else if (event.getAction() == KeyEvent.ACTION_UP) { pressCUpTime = System.currentTimeMillis(); isPressEnd = false; - if ((pressCUpTime - startPressTime) < 300) { + CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 单击C ← 向左变道 time dif = " + (pressCUpTime - startPressTime)); + if ((pressCUpTime - startPressTime) < 350) { if (isShowToast) { ToastUtils.showShort("方块 单击C ← 向左变道 "); } @@ -333,6 +320,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis } else if (event.getKeyCode() == KeyEvent.KEYCODE_D) { //单击向右变道,双击无操作 if (event.getAction() == KeyEvent.ACTION_DOWN) { pressDDownTime = System.currentTimeMillis(); + CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 长按D 无操作 time dif = " + (pressDDownTime - startPressTime)); if ((pressDDownTime - startPressTime) > 1320) { if (isShowToast) { ToastUtils.showShort("方块 长按D 无操作 "); @@ -341,18 +329,19 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis } else if (event.getAction() == KeyEvent.ACTION_UP) { pressDUpTime = System.currentTimeMillis(); isPressEnd = false; - if ((pressDUpTime - startPressTime) < 300) { + CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 单击D → 向右变道 time dif = " + (pressDUpTime - startPressTime)); + if ((pressDUpTime - startPressTime) < 350) { if (isShowToast) { ToastUtils.showShort("方块 单击D → 向右变道 "); } CallerAutoPilotManager.INSTANCE.sendOperatorChangeLaneRight(); } } - return true; } else if (event.getKeyCode() == KeyEvent.KEYCODE_E) { //单击启动自驾,长按鸣笛 if (event.getAction() == KeyEvent.ACTION_DOWN) { pressEDownTime = System.currentTimeMillis(); + CallerLogger.INSTANCE.d(M_F + "MoFangManager", "dispatchKeyEvent 方块 长按E 鸣笛 time dif = " + (pressEDownTime - startPressTime)); if ((pressEDownTime - startPressTime) > 1320) { if (isShowToast) { ToastUtils.showShort("方块 长按E 鸣笛 "); @@ -372,24 +361,22 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis } else if (event.getAction() == KeyEvent.ACTION_UP) { pressEUpTime = System.currentTimeMillis(); isPressEnd = false; - if ((pressEUpTime - startPressTime) < 300) { + CallerLogger.INSTANCE.d(M_F + "MoFangManager", "方块 单击E 开启自动驾驶 time dif = " + (pressEUpTime - startPressTime)); + if ((pressEUpTime - startPressTime) < 350) { if (isShowToast) { ToastUtils.showShort("方块 单击E 开启自动驾驶 "); } CallerAutoPilotManager.INSTANCE.startAutoPilot(CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getAutopilotControlParameters()); } } - return true; } } - return super.dispatchKeyEvent(event); } @Override public void onSkinModeChange(int skinMode) { - } private synchronized void sendAcc(boolean isSend, double acc) { @@ -413,42 +400,4 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis } } - /** - * 初始化蓝牙广播 - */ - private void initBluetooth() { - this.mBluetoothReceiver = new BluetoothMonitorReceiver(); - IntentFilter intentFilter = new IntentFilter(); - // 监视蓝牙关闭和打开的状态 - intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); - - // 监视蓝牙设备与APP连接的状态 - intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED); - intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED); - - // 注册广播 - registerReceiver(this.mBluetoothReceiver, intentFilter); - } - - /** - * 查找蓝牙连接过的蓝牙设备 - */ - private void showBondedDevice(BluetoothAdapter bluetoothAdapter) { - Set deviceList = bluetoothAdapter.getBondedDevices(); - for (BluetoothDevice device : deviceList) { - try { - //使用反射调用获取设备连接状态方法 - Method isConnectedMethod = BluetoothDevice.class.getDeclaredMethod("isConnected", (Class[]) null); - isConnectedMethod.setAccessible(true); -// boolean isConnected = (boolean) isConnectedMethod.invoke(device, (Object[]) null); - Log.d(TAG, "-- device.getName() = " + device.getName()); //device.getAddress() - if (device.getName().equals("MINI_KEYBOARD")) { - SharedPrefsMgr.getInstance(getContext()).putString("BLUETOOTH", device.getName()); - } - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } - } - } - } 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 7e5c962fbd..889febb1a4 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 @@ -43,6 +43,7 @@ import com.zhjt.mogo_core_function_devatools.monitor.db.CpuInfo; import com.zhjt.mogo_core_function_devatools.monitor.db.MemInfo; import com.zhjt.mogo_core_function_devatools.monitor.db.MonitorDb; +import java.io.File; import java.lang.reflect.Field; import java.text.SimpleDateFormat; import java.util.Date; @@ -101,15 +102,25 @@ public abstract class MainMoGoApplication extends AbsMogoApplication { new Thread(() -> { String lastLaunchTimeStr = SPUtils.getInstance().getString("last_launch", ""); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + Date currDate = new Date(System.currentTimeMillis()); + String currTimeStr = format.format(currDate); if (lastLaunchTimeStr != null && !lastLaunchTimeStr.isEmpty()) { - Date currDate = new Date(System.currentTimeMillis()); - String currTimeStr = format.format(currDate); boolean isSameDay = currTimeStr.equals(lastLaunchTimeStr); // 超过一天需要清除消息盒子中的数据,并把时间戳存入SP if (!isSameDay) { - this.deleteDatabase(MsgBoxDb.INTERNAL_DB_NAME); + File file = this.getDatabasePath(MsgBoxDb.INTERNAL_DB_NAME); + if (file != null && file.exists()) { + this.deleteDatabase(MsgBoxDb.INTERNAL_DB_NAME); + } SPUtils.getInstance().put("last_launch", currTimeStr); } + } else { + // 首次使用App或中途仅删除sp文件 + File file = this.getDatabasePath(MsgBoxDb.INTERNAL_DB_NAME); + if (file != null && file.exists()) { + this.deleteDatabase(MsgBoxDb.INTERNAL_DB_NAME); + } + SPUtils.getInstance().put("last_launch", currTimeStr); } }).start(); } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_msg_box.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_msg_box.png index c901f3937b..7bb601b227 100644 Binary files a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_msg_box.png and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_msg_box.png differ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_msg_box_bubble.9.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_msg_box_bubble.9.png new file mode 100644 index 0000000000..0e2c1b34a5 Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_msg_box_bubble.9.png differ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/icon_bluetooth_p.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/icon_bluetooth_p.png new file mode 100644 index 0000000000..8220846079 Binary files /dev/null and b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/icon_bluetooth_p.png differ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_bad_case.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_bad_case.xml index 80c1f6b035..12a226d8e9 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_bad_case.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_bad_case.xml @@ -4,13 +4,13 @@ android:layout_width="804px" android:layout_height="160px" xmlns:app="http://schemas.android.com/apk/res-auto" - android:background="#1A2344" + android:background="#53000000" app:roundLayoutRadius="24px" android:layout_gravity="center_horizontal" android:layout_marginStart="30px" android:layout_marginEnd="30px" - android:layout_marginTop="5px" - android:layout_marginBottom="5px" + android:layout_marginTop="7px" + android:layout_marginBottom="7px" android:clickable="true" > @@ -43,7 +43,6 @@ android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="@id/ivBadCaseImage" app:layout_constraintLeft_toRightOf="@id/ivBadCaseImage" - android:layout_marginBottom="5px" android:layout_marginStart="25px" android:textColor="#B3FFFFFF" android:textSize="30px" @@ -68,12 +67,10 @@ app:layout_constraintTop_toTopOf="@id/tvBagRecordTime" app:layout_constraintBottom_toBottomOf="@id/tvBagRecordTime" android:paddingEnd="25px" - android:paddingTop="10px" - android:paddingBottom="10px" + android:paddingStart="20px" android:text="查看" android:textColor="#FFFFFFFF" android:textSize="30px" /> - \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_ipc_report.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_ipc_report.xml index 24502b6625..2e26a4ebc0 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_ipc_report.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_ipc_report.xml @@ -3,13 +3,13 @@ android:layout_width="804px" android:layout_height="wrap_content" xmlns:app="http://schemas.android.com/apk/res-auto" - android:background="#1A2344" + android:background="#53000000" app:roundLayoutRadius="24px" android:layout_gravity="center_horizontal" android:layout_marginStart="30px" android:layout_marginEnd="30px" - android:layout_marginTop="5px" - android:layout_marginBottom="5px" + android:layout_marginTop="7px" + android:layout_marginBottom="7px" > @@ -45,6 +45,7 @@ android:textColor="#B3FFFFFF" android:textSize="28px" android:layout_marginTop="5px" + android:lineSpacingMultiplier="1.2" /> @@ -126,9 +129,10 @@ android:layout_height="wrap_content" app:layout_constraintTop_toBottomOf="@id/ivReportImageOpen" app:layout_constraintLeft_toLeftOf="@id/ivReportImageOpen" - android:layout_marginTop="5px" + android:layout_marginTop="10px" android:textColor="#B3FFFFFF" android:textSize="28px" + android:lineSpacingMultiplier="1.2" android:visibility="gone" /> @@ -138,9 +142,9 @@ android:layout_height="wrap_content" app:layout_constraintTop_toBottomOf="@id/tvReportTimeOpen" app:layout_constraintLeft_toLeftOf="@id/tvReportTimeOpen" - android:layout_marginTop="5px" android:textColor="#B3FFFFFF" android:textSize="28px" + android:lineSpacingMultiplier="1.2" android:visibility="gone" /> @@ -152,9 +156,9 @@ app:layout_constraintLeft_toLeftOf="@id/tvReportTypeOpen" app:layout_constraintRight_toRightOf="@id/tvStatusSelect" android:gravity="start" - android:layout_marginTop="5px" android:textColor="#B3FFFFFF" android:textSize="28px" + android:lineSpacingMultiplier="1.2" android:visibility="gone" /> @@ -166,10 +170,10 @@ app:layout_constraintLeft_toLeftOf="@id/tvReportReasonOpen" app:layout_constraintRight_toRightOf="@id/tvStatusSelect" app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginTop="5px" - android:layout_marginBottom="10px" + android:layout_marginBottom="15px" android:textColor="#B3FFFFFF" android:textSize="28px" + android:lineSpacingMultiplier="1.2" android:visibility="gone" /> diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_notice.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_notice.xml index 01f7a31bb5..38b8988e07 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_notice.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_notice.xml @@ -3,13 +3,13 @@ android:layout_width="804px" android:layout_height="160px" xmlns:app="http://schemas.android.com/apk/res-auto" - android:background="#1A2344" + android:background="#53000000" app:roundLayoutRadius="24px" android:layout_gravity="center_horizontal" android:layout_marginStart="30px" android:layout_marginEnd="30px" - android:layout_marginTop="5px" - android:layout_marginBottom="5px" + android:layout_marginTop="7px" + android:layout_marginBottom="7px" > @@ -122,6 +124,7 @@ android:gravity="start" android:layout_marginTop="10px" android:layout_marginBottom="15px" + android:lineSpacingMultiplier="1.2" android:textColor="#B3FFFFFF" android:textSize="28px" android:visibility="gone" diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_v2x.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_v2x.xml index 25a3830336..808e8e2396 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_v2x.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_v2x.xml @@ -3,13 +3,13 @@ android:layout_width="804px" android:layout_height="160px" xmlns:app="http://schemas.android.com/apk/res-auto" - android:background="#1A2344" + android:background="#53000000" app:roundLayoutRadius="24px" android:layout_gravity="center_horizontal" android:layout_marginStart="30px" android:layout_marginEnd="30px" - android:layout_marginTop="5px" - android:layout_marginBottom="5px"> + android:layout_marginTop="7px" + android:layout_marginBottom="7px"> + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_operation.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_operation.xml index 9f2c65b5b9..e7e45d6527 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_operation.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_operation.xml @@ -3,13 +3,11 @@ android:layout_width="804px" android:layout_height="160px" xmlns:app="http://schemas.android.com/apk/res-auto" - android:background="#1A2344" + android:background="#53000000" app:roundLayoutRadius="24px" android:layout_gravity="center_horizontal" - android:layout_marginStart="30px" - android:layout_marginEnd="30px" - android:layout_marginTop="5px" - android:layout_marginBottom="5px"> + android:layout_marginTop="7px" + android:layout_marginBottom="7px"> \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_report.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_report.xml index 0b83bbd4c6..ed451de81e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_report.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_report.xml @@ -3,13 +3,11 @@ android:layout_width="804px" android:layout_height="160px" xmlns:app="http://schemas.android.com/apk/res-auto" - android:background="#1A2344" + android:background="#53000000" app:roundLayoutRadius="24px" android:layout_gravity="center_horizontal" - android:layout_marginStart="30px" - android:layout_marginEnd="30px" - android:layout_marginTop="5px" - android:layout_marginBottom="5px" + android:layout_marginTop="7px" + android:layout_marginBottom="7px" > + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_driver_msg_box_bubble.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_driver_msg_box_bubble.xml index c6bc9596fa..ed5d0dab45 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_driver_msg_box_bubble.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_driver_msg_box_bubble.xml @@ -1,18 +1,21 @@ - + android:background="@drawable/bg_msg_box_bubble" + android:id="@+id/clMsgBubbleLayout" + android:visibility="gone" + > - \ No newline at end of file + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index 4ec2b8f47a..7a32567b16 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -1082,8 +1082,8 @@ android:layout_columnWeight="1" android:layout_margin="2dp" android:gravity="center" - android:textOff="关闭路侧限速" - android:textOn="获取路侧限速" + android:textOff="获取路侧限速提醒" + android:textOn="关闭路侧限速提醒" android:textSize="@dimen/dp_24" /> 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 a77286ff33..e9830e19b0 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 @@ -129,6 +129,66 @@ app:layout_constraintTop_toBottomOf="@id/tbRainMode" /> + + + + + + + + + + + + + android:layout_marginStart="@dimen/dp_8" /> + + = 3) { List objQueueList = circleQueue.getLastThreeFrame(); - // 计算平均速度 -// speedAverage = (objQueueList.get(0).getSpeed() + objQueueList.get(1).getSpeed() + objQueueList.get(2).getSpeed()) / 3; // 使用中值滤波 objQueueList.sort(Comparator.comparing(ObjQueue::getSpeed)); speedAverage = objQueueList.get(1).getSpeed(); @@ -101,38 +95,13 @@ public class TrackObj { private void calLoc() { //距离计算,位置修正 if (relativeStatic()) { -// double angle = roadAngle != 0 ? roadAngle : cacheData.getHeading(); -// if (centerLineInfo == null && isFourWheelType()) { -// try { -// centerLineInfo = CallerHDMapManager.INSTANCE.getCenterLineInfo(lon, lat, (float) angle); -// } catch (Exception e) { -// Log.d("hy uuid : " + cacheData.getUuid(), "道路获取异常"); -// } -// if (centerLineInfo != null && centerLineInfo.getPoints() != null && !centerLineInfo.getPoints().isEmpty()) { -// double[] matchedPoint = PointInterpolatorUtil.mergeToRoad(cacheData.getLongitude(), cacheData.getLatitude(), centerLineInfo.getPoints()); -// if (matchedPoint[0] > 0 || matchedPoint[1] > 0) { -// lon = matchedPoint[0]; -// lat = matchedPoint[1]; -// s2LatLng = S2LatLng.fromDegrees(cacheData.getLatitude(), cacheData.getLongitude()); -// s2CellId = S2CellId.fromLatLng(s2LatLng).parent(22); -// } else { -// centerLineInfo = null; -// } -// } else { -// centerLineInfo = null; -// } -// } cacheData = cacheData.toBuilder().setLongitude(lon).setLatitude(lat).build(); } else { -// centerLineInfo = null; //不在阈值内则更新,代表物体移动,使用卡尔曼滤波经纬度数据 - //double[] lonLat = kalmanFilter.filter(cacheData.getLongitude(), cacheData.getLatitude()); lat = cacheData.getLatitude(); lon = cacheData.getLongitude(); s2LatLng = S2LatLng.fromDegrees(cacheData.getLatitude(), cacheData.getLongitude()); s2CellId = S2CellId.fromLatLng(s2LatLng).parent(22); -// Log.d("hy uuid : " + cacheData.getUuid(), " 开始移动 lon : " + lon + " , lat : " + lat); -// cacheData = cacheData.toBuilder().setLongitude(lonLat[0]).setLatitude(lonLat[1]).build(); } } @@ -175,7 +144,6 @@ public class TrackObj { public boolean relativeStatic() { if (speedAverage < LIMIT_SPEED) { -// Log.d("emArrow-Track", "relativeStatic return" + " , uuid : " + cacheData.getUuid()); return true; } else { return isInRange(); @@ -192,7 +160,6 @@ public class TrackObj { return false; } double dis = CoordinateUtils.calculateLineDistance(center[0], center[1], cacheData.getLongitude(), cacheData.getLatitude()); -// Log.d("emArrow-Track", "uuid : " + cacheData.getUuid() + " , type : " + cacheData.getType() + " , list size : " + objQueueList.size() + " , dis : " + dis); if (cacheData.getType() == TrafficTypeEnum.TYPE_TRAFFIC_ID_BUS.getType() || cacheData.getType() == TrafficTypeEnum.TYPE_TRAFFIC_ID_TRUCK.getType()) { return dis <= 0.6; } else { diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/impl/MogoMapService.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/impl/MogoMapService.java index 8bd5018572..671ec4b65e 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/impl/MogoMapService.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/impl/MogoMapService.java @@ -8,7 +8,6 @@ import com.mogo.eagle.core.function.api.map.marker.IMogoMarkerService; import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager; import com.mogo.map.MogoGeoSearch; import com.mogo.map.MogoLocationClient; -import com.mogo.map.MogoMap; import com.mogo.map.MogoMapUIController; import com.mogo.map.MogoMarkerManager; import com.mogo.map.MogoOverlayManager; @@ -79,15 +78,6 @@ public class MogoMapService implements IMogoMapService { return new MogoTrafficSearch(); } - @Override - public String getMapVersion() { - if (MogoMap.getInstance().getMogoMap() != null) { - return MogoMap.getInstance().getMogoMap().getMapVersion(); - } else { - return "0"; - } - } - @Override public void init(Context context) { CallerVisualAngleManager.INSTANCE.init(context); diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/impl/marker/drawer/TrafficMarkerDrawer.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/impl/marker/drawer/TrafficMarkerDrawer.kt index 8b19f33c85..3527a4a31f 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/impl/marker/drawer/TrafficMarkerDrawer.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/impl/marker/drawer/TrafficMarkerDrawer.kt @@ -101,7 +101,6 @@ object TrafficMarkerDrawer { fun updateITrafficThreatLevelInfo(trafficData: TrafficData) { CallerLogger.d(TAG, "trafficData.type = " + trafficData.type + "---trafficData.threatLevel = " + trafficData.threatLevel + "----FunctionBuildConfig.debugTrackerProvider = " + FunctionBuildConfig.debugTrackerProvider) -// Log.e("liyz", "trafficData.type = " + trafficData.type + "---trafficData.threatLevel = " + trafficData.threatLevel + "----FunctionBuildConfig.debugTrackerProvider = " + FunctionBuildConfig.debugTrackerProvider) if (FunctionBuildConfig.debugTrackerProvider != 1) { return } @@ -169,9 +168,6 @@ object TrafficMarkerDrawer { TAG, "drawObuRecognizedDataMarker trafficData.type = " + trafficData.type + "---trafficData.threatLevel = " + trafficData.threatLevel ) -// Log.d("liyz", -// "drawObuRecognizedDataMarker trafficData.type = " + trafficData.type + "---trafficData.threatLevel = " + trafficData.threatLevel -// ) if (trafficData.type != null) { val resId: Int = trafficData.type.traffic3DIconId diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/overview/vm/OverViewModel.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/overview/vm/OverViewModel.kt index 8de6cf1fcc..eb67733969 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/overview/vm/OverViewModel.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/overview/vm/OverViewModel.kt @@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.overview.vm import androidx.lifecycle.* import com.mogo.commons.constants.HostConst import com.mogo.eagle.core.data.map.Infrastructure +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo import com.mogo.eagle.core.function.overview.OverviewDao import com.mogo.eagle.core.function.overview.remote.OverViewServiceApi import com.mogo.eagle.core.function.overview.remote.V2XEvent @@ -74,23 +75,29 @@ class OverViewModel( } } - fun getAllV2XEventsByLineId(lineId: String, sn: String) { + fun getAllV2XEventsByLineId(sn: String) { if (disposable != null && !disposable!!.isDisposed) { disposable!!.dispose() } + // 1分钟查询一次 - disposable = Observable.interval(0, 60000, TimeUnit.MILLISECONDS) + disposable = Observable.interval(2000, 60000, TimeUnit.MILLISECONDS) .flatMap { - MoGoRetrofitFactory.getInstance(HostConst.getHost()) - .create(OverViewServiceApi::class.java) - .queryAllV2XEventsByLineId(lineId, sn) - .map { - if (it.code == 200 || it.code == 0) { - return@map it.result?.v2XEventList - } else { - return@map null + val lineId = getLineId() + if (lineId > 0) { + MoGoRetrofitFactory.getInstance(HostConst.getHost()) + .create(OverViewServiceApi::class.java) + .queryAllV2XEventsByLineId(lineId.toString(), sn) + .map { + if (it.code == 200 || it.code == 0) { + return@map it.result?.v2XEventList + } else { + return@map ArrayList() + } } - } + } else { + Observable.just(ArrayList()) + } } .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -106,4 +113,16 @@ class OverViewModel( fun stopQueryV2XEvents() { disposable?.dispose() } + + private fun getLineId(): Long { + var lineId: Long = -1 + val parameter = getAutoPilotStatusInfo() + .autopilotControlParameters + if (parameter != null) { + if (parameter.autoPilotLine != null) { + lineId = parameter.autoPilotLine!!.lineId + } + } + return lineId + } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/AMapCustomView.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/AMapCustomView.java index a6c8f73d09..e6d7bb9401 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/AMapCustomView.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/AMapCustomView.java @@ -268,9 +268,9 @@ public class AMapCustomView if (center != null) { center.getLon(); MarkerOptions markerOption = new MarkerOptions(); - LatLng latLng = new LatLng(center.getLat(), - center.getLon()); + LatLng latLng = MarkerDrawerManager.INSTANCE.coordinateConverterWgsToGcj(mContext, center.getLat(), center.getLon()); markerOption.position(latLng); + markerOption.anchor(0.13f, 1f); markerOption.icon(BitmapDescriptorFactory.fromBitmap(getV2XBitmap())); markerOptionsList.add(markerOption); } @@ -282,15 +282,6 @@ public class AMapCustomView public void drawV2XMarkers(ArrayList markerOptionsList) { currMarkerList = mAMap.addMarkers(markerOptionsList, false); - mAMap.setOnMarkerClickListener(marker -> { - List infList = posInfMap.get(marker.getPosition()); - // 如果是摄像头 - if (infList != null) { - CallerHmiManager.INSTANCE.showVideoDialog(infList); - return true; - } - return false; - }); } private Bitmap getV2XBitmap() { diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/MarkerDrawerManager.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/MarkerDrawerManager.kt index 0ab43a4063..9ce14cf8ba 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/MarkerDrawerManager.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/MarkerDrawerManager.kt @@ -161,4 +161,19 @@ object MarkerDrawerManager { mCoordinateConverter.coord(LatLng(mogoLatLng.latitude, mogoLatLng.longitude)) return mCoordinateConverter.convert() } + + /** + * wgs84转高德坐标系 + */ + fun coordinateConverterWgsToGcj( + mContext: Context, + lat: Double, + lon: Double + ): LatLng { + val mCoordinateConverter = + CoordinateConverter(mContext) + mCoordinateConverter.from(CoordinateConverter.CoordType.GPS) + mCoordinateConverter.coord(LatLng(lat, lon)) + return mCoordinateConverter.convert() + } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/OverviewMapFragment.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/OverviewMapFragment.java index 12b07a5c10..37ab1567d9 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/OverviewMapFragment.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/smp/OverviewMapFragment.java @@ -2,7 +2,6 @@ package com.mogo.eagle.core.function.smp; import android.content.Context; import android.os.Bundle; -import android.os.Looper; import android.view.View; import androidx.annotation.Nullable; @@ -21,7 +20,6 @@ import com.mogo.eagle.core.function.map.R; import com.mogo.eagle.core.function.overview.InfStructureManager; import com.mogo.eagle.core.function.overview.ViewModelExtKt; import com.mogo.eagle.core.function.overview.vm.OverViewModel; -import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import java.util.List; @@ -81,9 +79,8 @@ public class OverviewMapFragment extends BaseFragment @Override public void startQueryV2XEvents() { if (isAdded()) { - long lineId = getLineId(); - if (lineId > 0 && mViewModel != null) { - mViewModel.getAllV2XEventsByLineId("" + lineId, MoGoAiCloudClientConfig.getInstance().getSn()); + if (mViewModel != null) { + mViewModel.getAllV2XEventsByLineId(MoGoAiCloudClientConfig.getInstance().getSn()); } } } @@ -130,11 +127,7 @@ public class OverviewMapFragment extends BaseFragment mViewModel.getV2XEventLiveData().observe(this.getViewLifecycleOwner(), v2XEvents -> { mAMapCustomView.showV2XEventMarkers(v2XEvents); }); - - long lineId = getLineId(); - if (lineId > 0) { - mViewModel.getAllV2XEventsByLineId("" + lineId, MoGoAiCloudClientConfig.getInstance().getSn()); - } + mViewModel.getAllV2XEventsByLineId(MoGoAiCloudClientConfig.getInstance().getSn()); } /** diff --git a/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoObuConst.java b/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoObuConst.java index d293a3124a..c4aa8f0906 100644 --- a/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoObuConst.java +++ b/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoObuConst.java @@ -12,6 +12,8 @@ public class MogoObuConst { */ public static final String TAG_MOGO_OBU = "MogoObu"; + public static final String TAG_MOGO_NEW_OBU = "MogoNewObu"; + // OBU 场景测试 // 场景类型 public static String BROADCAST_OBU_TYPE_EXTRA_KEY = "obuType"; diff --git a/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuManager.kt b/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuManager.kt index 4c49f58d58..d687259f9d 100644 --- a/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuManager.kt +++ b/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuManager.kt @@ -7,6 +7,7 @@ import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.voice.AIAssist import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.data.config.HmiBuildConfig import com.mogo.eagle.core.data.constants.MogoServicePaths import com.mogo.eagle.core.data.enums.WarningDirectionEnum import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener @@ -232,195 +233,203 @@ class MogoPrivateObuManager private constructor() { // (3) 道路事件预警信息:CVX_RTI_THREAT_IND override fun onCvxRtiThreatIndInfo(info: CvxRtiThreatIndInfo?) { - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "onCvxRtiThreatIndInfo ------> $info" - ) + if (HmiBuildConfig.isShowObuV2iView) { + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "onCvxRtiThreatIndInfo ------> $info" + ) - if (info != null && info.threat_info != null && info.ext_info != null) { - var alertContent = "" - var ttsContent = "" - var appId = info.threat_info.app_id.toString() - val status = info.status - val level = info.threat_info.threat_level - val direction = - getMessageDirection(if (info.ext_info != null) info.ext_info.pos_classification else -1) - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "onCvxRtiThreatIndInfo direction = $direction -- pos_classification = ${info.ext_info.pos_classification}" - ) - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "onCvxRtiThreatIndInfo appId = $appId --status = $status --level = $level -- handleDirection = $direction --rtiType = ${info.ext_info.rti_type} --direction = $direction -- pos_classification = ${info.ext_info.pos_classification} " - ) - when (appId) { - // 道路危险情况预警 - EventTypeEnum.TYPE_USECASE_ID_HLW.poiType, - EventTypeEnum.TYPE_USECASE_ID_IVS.poiType - -> { - when (info.ext_info.rti_type) { - //急转弯 - 0x2 -> { - // 特殊处理左、右方向的 - when (direction) { - WarningDirectionEnum.ALERT_WARNING_LEFT, - WarningDirectionEnum.ALERT_WARNING_TOP_LEFT, - WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT -> { - appId = - EventTypeEnum.TYPE_USECASE_ID_ROAD_TURN_LEFT_SHARP.poiType - } - WarningDirectionEnum.ALERT_WARNING_RIGHT, - WarningDirectionEnum.ALERT_WARNING_TOP_RIGHT, - WarningDirectionEnum.ALERT_WARNING_BOTTOM_RIGHT -> { - appId = - EventTypeEnum.TYPE_USECASE_ID_ROAD_TURN_RIGHT_SHARP.poiType + if (info != null && info.threat_info != null && info.ext_info != null) { + var alertContent = "" + var ttsContent = "" + var appId = info.threat_info.app_id.toString() + val status = info.status + val level = info.threat_info.threat_level + val direction = + getMessageDirection(if (info.ext_info != null) info.ext_info.pos_classification else -1) + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "onCvxRtiThreatIndInfo direction = $direction -- pos_classification = ${info.ext_info.pos_classification}" + ) + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "onCvxRtiThreatIndInfo appId = $appId --status = $status --level = $level -- handleDirection = $direction --rtiType = ${info.ext_info.rti_type} --direction = $direction -- pos_classification = ${info.ext_info.pos_classification} " + ) + when (appId) { + // 道路危险情况预警 + EventTypeEnum.TYPE_USECASE_ID_HLW.poiType, + EventTypeEnum.TYPE_USECASE_ID_IVS.poiType + -> { + when (info.ext_info.rti_type) { + //急转弯 + 0x2 -> { + // 特殊处理左、右方向的 + when (direction) { + WarningDirectionEnum.ALERT_WARNING_LEFT, + WarningDirectionEnum.ALERT_WARNING_TOP_LEFT, + WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT -> { + appId = + EventTypeEnum.TYPE_USECASE_ID_ROAD_TURN_LEFT_SHARP.poiType + } + WarningDirectionEnum.ALERT_WARNING_RIGHT, + WarningDirectionEnum.ALERT_WARNING_TOP_RIGHT, + WarningDirectionEnum.ALERT_WARNING_BOTTOM_RIGHT -> { + appId = + EventTypeEnum.TYPE_USECASE_ID_ROAD_TURN_RIGHT_SHARP.poiType + } } } + //施工 + 0x7 -> { + appId = EventTypeEnum.FOURS_ROAD_WORK.poiType + } + //限速 + 0xA -> { + appId = EventTypeEnum.TYPE_USECASE_ID_SLW.poiType + } + //事故 + 0xC -> { + appId = + EventTypeEnum.TYPE_USECASE_ID_ROAD_COLLISION_WARNING.poiType + } + //拥堵 + 0xD -> { + appId = EventTypeEnum.TYPE_USECASE_ID_TJW.poiType + } + //行人 + 0xF -> { + appId = + EventTypeEnum.TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING.poiType + } + //禁止停车 + 0x13 -> { + appId = EventTypeEnum.TYPE_USECASE_ID_ROAD_NO_PARKING.poiType + } + //学校 + 0x14 -> { + appId = + EventTypeEnum.TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType + } + //桥梁 + 0x17 -> { + appId = EventTypeEnum.TYPE_USECASE_ID_ROAD_HUMP_BRIDGE.poiType + } + //轻轨电车 + 0x18 -> { + appId = EventTypeEnum.TYPE_USECASE_ID_ROAD_TRAMCAR.poiType + } + //人行横道 + 0x19 -> { + appId = + EventTypeEnum.TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING.poiType + } + //减速慢行 + 0x1A -> { + appId = EventTypeEnum.TYPE_USECASE_ID_ROAD_GIVE_WAY.poiType + } + //事故易发路段 + 0x1B -> { + appId = EventTypeEnum.TYPE_USECASE_ID_ROAD_COLLISION_WARNING.poiType + } + //环岛行驶 + 0x1C -> { + appId = EventTypeEnum.TYPE_USECASE_ID_ROAD_ROUNDABOUTPNG.poiType + } + //环岛行驶 + 0x1D -> { + appId = EventTypeEnum.TYPE_USECASE_ID_ROAD_TEST_SECTION.poiType + } + //驼峰桥 + 0x1E -> { + appId = EventTypeEnum.TYPE_USECASE_ID_ROAD_HUMP_BRIDGE.poiType + } } - //施工 - 0x7 -> { - appId = EventTypeEnum.FOURS_ROAD_WORK.poiType - } - //限速 - 0xA -> { - appId = EventTypeEnum.TYPE_USECASE_ID_SLW.poiType - } - //事故 - 0xC -> { - appId = - EventTypeEnum.TYPE_USECASE_ID_ROAD_COLLISION_WARNING.poiType - } - //拥堵 - 0xD -> { - appId = EventTypeEnum.TYPE_USECASE_ID_TJW.poiType - } - //行人 - 0xF -> { - appId = - EventTypeEnum.TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING.poiType - } - //禁止停车 - 0x13 -> { - appId = EventTypeEnum.TYPE_USECASE_ID_ROAD_NO_PARKING.poiType - } - //学校 - 0x14 -> { - appId = - EventTypeEnum.TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType - } - //桥梁 - 0x17 -> { - appId = EventTypeEnum.TYPE_USECASE_ID_ROAD_HUMP_BRIDGE.poiType - } - //轻轨电车 - 0x18 -> { - appId = EventTypeEnum.TYPE_USECASE_ID_ROAD_TRAMCAR.poiType - } - //人行横道 - 0x19 -> { - appId = - EventTypeEnum.TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING.poiType - } - //减速慢行 - 0x1A -> { - appId = EventTypeEnum.TYPE_USECASE_ID_ROAD_GIVE_WAY.poiType - } - //事故易发路段 - 0x1B -> { - appId = EventTypeEnum.TYPE_USECASE_ID_ROAD_COLLISION_WARNING.poiType - } - //环岛行驶 - 0x1C -> { - appId = EventTypeEnum.TYPE_USECASE_ID_ROAD_ROUNDABOUTPNG.poiType - } - //环岛行驶 - 0x1D -> { - appId = EventTypeEnum.TYPE_USECASE_ID_ROAD_TEST_SECTION.poiType - } - //驼峰桥 - 0x1E -> { - appId = EventTypeEnum.TYPE_USECASE_ID_ROAD_HUMP_BRIDGE.poiType - } + alertContent = EventTypeEnum.getWarningContent(appId) + ttsContent = EventTypeEnum.getWarningTts(appId) } - alertContent = EventTypeEnum.getWarningContent(appId) - ttsContent = EventTypeEnum.getWarningTts(appId) - } - // 前方拥堵提醒 - EventTypeEnum.TYPE_USECASE_ID_TJW.poiType -> { - ttsContent = EventTypeEnum.getWarningTts(appId) - if (info.threat_info != null) { + // 前方拥堵提醒 + EventTypeEnum.TYPE_USECASE_ID_TJW.poiType -> { + ttsContent = EventTypeEnum.getWarningTts(appId) + if (info.threat_info != null) { + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "ttsContent = $ttsContent --alertContent = $alertContent ---info.threat_info.distance = ${info.threat_info.distance} " + ) + if (info.threat_info.distance.toInt() != 0) { + alertContent = String.format( + EventTypeEnum.getWarningContent(appId), + info.threat_info.distance.toInt() + ) + } else { + alertContent = "前方拥堵,减速慢行" + } + } + CallerLogger.d( "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "ttsContent = $ttsContent --alertContent = $alertContent ---info.threat_info.distance = ${info.threat_info.distance} " + "ttsContent = $ttsContent --alertContent = $alertContent" ) - if (info.threat_info.distance.toInt() != 0) { - alertContent = String.format( - EventTypeEnum.getWarningContent(appId), - info.threat_info.distance.toInt() + } + } + + when (status) { + // 添加 + ObuConstants.STATUS.ADD -> { + //不显示弹框,其它保留 + CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_OBU}", "old onCvxRtiThreatIndInfo ------> appId = $appId --- alertContent = $alertContent --- ttsContent = $ttsContent ") + if (alertContent.isNullOrEmpty() || ttsContent.isNullOrEmpty()) { + Log.d("MsgBox-PriObuManager4", "alertContent或ttsContent为空!") + } + CallerMsgBoxManager.saveMsgBox( + MsgBoxBean( + MsgBoxType.OBU, + V2XMsg(appId, + alertContent, + ttsContent) ) - } else { - alertContent = "前方拥堵,减速慢行" + ) + CallerHmiManager.warningV2X( + appId, + alertContent, + ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 + (appId + direction.direction).toString(),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 + object : IMoGoWarningStatusListener { + override fun onDismiss() { + // 关闭警告红边 + CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) + } + }, + true, + 5000L + ) + } + + ObuConstants.STATUS.UPDATE -> { + //显示警告红边 TODO 需要确定是什么值 +// CallerHmiManager.showWarning(direction) + + // 更新数据 + TrafficDataConvertUtils.cvxRtiThreatIndInfo2TrafficData(info)?.let { + CallerObuListenerManager.invokeTrackerWarningInfo(it) + CallerMapUIServiceManager.getMarkerService() + ?.updateITrafficThreatLevelInfo(it) } } - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "ttsContent = $ttsContent --alertContent = $alertContent" - ) - } - } - - when (status) { - // 添加 - ObuConstants.STATUS.ADD, - ObuConstants.STATUS.UPDATE// 更新 - -> { - //显示警告红边 TODO 需要确定是什么值 -// CallerHmiManager.showWarning(direction) - - //不显示弹框,其它保留 - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.OBU, - V2XMsg(appId, - alertContent, - ttsContent) - ) - ) - CallerHmiManager.warningV2X( - appId, - alertContent, - ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 - (appId + direction.direction).toString(),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 - object : IMoGoWarningStatusListener { - override fun onDismiss() { - // 关闭警告红边 - CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) - } - }, - true, - 5000L - ) - // 更新数据 - TrafficDataConvertUtils.cvxRtiThreatIndInfo2TrafficData(info)?.let { - CallerObuListenerManager.invokeTrackerWarningInfo(it) - CallerMapUIServiceManager.getMarkerService() - ?.updateITrafficThreatLevelInfo(it) - } - } - // 删除 - ObuConstants.STATUS.DELETE -> { - // 关闭警告红边 - CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) - // 移除顶部弹窗 + // 删除 + ObuConstants.STATUS.DELETE -> { + // 关闭警告红边 + CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) + // 移除顶部弹窗 // CallerHmiManager.disableWarningV2X((appId + direction.direction).toString()) - // 更新数据 - TrafficDataConvertUtils.cvxRtiThreatIndInfo2TrafficData(info)?.let { - CallerObuListenerManager.removeTrackerWarningInfo(it) - // 事件结束,还原车辆颜色 - it.threatLevel = 0x01 - CallerMapUIServiceManager.getMarkerService() - ?.updateITrafficThreatLevelInfo(it) + // 更新数据 + TrafficDataConvertUtils.cvxRtiThreatIndInfo2TrafficData(info)?.let { + CallerObuListenerManager.removeTrackerWarningInfo(it) + // 事件结束,还原车辆颜色 + it.threatLevel = 0x01 + CallerMapUIServiceManager.getMarkerService() + ?.updateITrafficThreatLevelInfo(it) + } } } } @@ -439,37 +448,27 @@ class MogoPrivateObuManager private constructor() { && info.ext_info.lights != null && info.ext_info.lights.isNotEmpty() ) { - //v2i数据传输延迟 -// val hvMillTime = info.threat_info.hv_time.millisecond -// val hvSecondMillTime = (info.threat_info.hv_time.second) * 1000 -// val hvTime = hvMillTime + hvSecondMillTime -// val currentTime = TimeUtils.getNowMills() % 60000 -// val delayTime = currentTime - hvTime - -// CallerObuListenerManager.invokeDelayTime(delayTime) -// CallerLogger.e( -// "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", -// "onCvxIvpThreatIndInfo red ---delayTime---> $delayTime" -// ) - - handlerTrafficLight( - info.threat_info.app_id, - info.status, - info.ext_info.lights, - info.ext_info.index - ) + if (HmiBuildConfig.isShowObuV2iView) { + handlerTrafficLight( + info.threat_info.app_id, + info.status, + info.ext_info.lights, + info.ext_info.index + ) + } } } // (2) 弱势交通参与者预警信息:CVX_PTC_THREAT_IND override fun onCvxPtcThreatIndInfo(info: CvxPtcThreatIndInfo?) { - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "onCvxPtcInfoIndInfo ------> $info" - ) - // 交通参与者类型 0x0:未知 UNKNOWN | 0x1:非机动车 NON_MOTOR | 0x2:行人 PEDESTRIAN 0x3:RSU - if (info != null && (info.ptc_type == 1 || info.ptc_type == 2)) { - //v2i数据传输延迟 + if (HmiBuildConfig.isShowObuV2iView) { + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "onCvxPtcInfoIndInfo ------> $info" + ) + // 交通参与者类型 0x0:未知 UNKNOWN | 0x1:非机动车 NON_MOTOR | 0x2:行人 PEDESTRIAN 0x3:RSU + if (info != null && (info.ptc_type == 1 || info.ptc_type == 2)) { + //v2i数据传输延迟 // val hvMillTime = info.threat_info.hv_time.millisecond // val hvSecondMillTime = (info.threat_info.hv_time.second) * 1000 // val hvTime = hvMillTime + hvSecondMillTime @@ -482,78 +481,85 @@ class MogoPrivateObuManager private constructor() { // "onCvxPtcInfoIndInfo ---delayTime---> $delayTime" // ) - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "onCvxPtcInfoIndInfo ---status---> ${info.status}" - ) - var v2xType = "" - if (info.ptc_type == 1) { //摩托车 - v2xType = EventTypeEnum.TYPE_USECASE_ID_VRUCW_MOTORBIKE.poiType - } else if (info.ptc_type == 2) { //行人 - v2xType = EventTypeEnum.TYPE_USECASE_ID_VRUCW_PERSON.poiType - } - val ttsContent = EventTypeEnum.getWarningTts(v2xType) - val alertContent = EventTypeEnum.getWarningContent(v2xType) - val direction = - getMessageDirection(if (info.ext_info != null) info.ext_info.target_classification else -1) - val level = if (info.threat_info != null) info.threat_info.threat_level else -1 + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "onCvxPtcInfoIndInfo ---status---> ${info.status}" + ) + var v2xType = "" + if (info.ptc_type == 1) { //摩托车 + v2xType = EventTypeEnum.TYPE_USECASE_ID_VRUCW_MOTORBIKE.poiType + } else if (info.ptc_type == 2) { //行人 + v2xType = EventTypeEnum.TYPE_USECASE_ID_VRUCW_PERSON.poiType + } + val ttsContent = EventTypeEnum.getWarningTts(v2xType) + val alertContent = EventTypeEnum.getWarningContent(v2xType) + val direction = + getMessageDirection(if (info.ext_info != null) info.ext_info.target_classification else -1) + val level = if (info.threat_info != null) info.threat_info.threat_level else -1 - when (info.status) { - // 添加 - ObuConstants.STATUS.ADD, - ObuConstants.STATUS.UPDATE// 更新 - -> { -// if (level == 2 || level == 3) { //不考虑level - //显示警告红边 - CallerHmiManager.showWarning(direction) - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.OBU, - V2XMsg(v2xType, - alertContent, - ttsContent) + when (info.status) { + // 添加 + ObuConstants.STATUS.ADD -> { + // if (level == 2 || level == 3) { //不考虑level + //显示警告红边 + CallerHmiManager.showWarning(direction) + CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_OBU}", "old onCvxPtcThreatIndInfo ------> v2xType = $v2xType --- alertContent = $alertContent --- ttsContent = $ttsContent ") + if (alertContent.isNullOrEmpty() || ttsContent.isNullOrEmpty()) { + Log.d("MsgBox-PriObuManager5", "alertContent或ttsContent为空!") + } + CallerMsgBoxManager.saveMsgBox( + MsgBoxBean( + MsgBoxType.OBU, + V2XMsg(v2xType, + alertContent, + ttsContent) + ) + ) + CallerHmiManager.warningV2X( + v2xType, + alertContent, + ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 + (v2xType + direction.direction).toString(),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 + object : IMoGoWarningStatusListener { + override fun onDismiss() { + // 关闭警告红边 + CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) + } + }, + true, + 5000L ) - ) - CallerHmiManager.warningV2X( - v2xType, - alertContent, - ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 - (v2xType + direction.direction).toString(),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 - object : IMoGoWarningStatusListener { - override fun onDismiss() { - // 关闭警告红边 - CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) - } - }, - true, - 5000L - ) // } - // 更新数据 - TrafficDataConvertUtils.cvxPtcThreatIndInfo2TrafficData(info)?.let { - CallerObuListenerManager.invokeTrackerWarningInfo(it) - CallerMapUIServiceManager.getMarkerService() - ?.updateITrafficThreatLevelInfo(it) + + // 更新数据 + TrafficDataConvertUtils.cvxPtcThreatIndInfo2TrafficData(info)?.let { + CallerObuListenerManager.invokeTrackerWarningInfo(it) + CallerMapUIServiceManager.getMarkerService() + ?.updateITrafficThreatLevelInfo(it) + } } - } - // 删除 - ObuConstants.STATUS.DELETE -> { - // 关闭警告红边 - CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) - // 更新数据 - TrafficDataConvertUtils.cvxPtcThreatIndInfo2TrafficData(info)?.let { - CallerObuListenerManager.removeTrackerWarningInfo(it) - // 事件结束,还原交通参与者颜色 - it.threatLevel = 0x01 - CallerMapUIServiceManager.getMarkerService() - ?.updateITrafficThreatLevelInfo(it) + + ObuConstants.STATUS.UPDATE -> { } + + // 删除 + ObuConstants.STATUS.DELETE -> { + // 关闭警告红边 + CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) + // 更新数据 + TrafficDataConvertUtils.cvxPtcThreatIndInfo2TrafficData(info)?.let { + CallerObuListenerManager.removeTrackerWarningInfo(it) + // 事件结束,还原交通参与者颜色 + it.threatLevel = 0x01 + CallerMapUIServiceManager.getMarkerService() + ?.updateITrafficThreatLevelInfo(it) + } // CallerHmiManager.disableWarningV2X(ObuConstants.USE_CASE_ID.VRUCW.toString()) + } } + } - } - } // (5) 限速预警信息:CVX_SLW_THREAT_IND @@ -586,30 +592,32 @@ class MogoPrivateObuManager private constructor() { // (1) V2V预警信息:CVX_V2V_THREAT_IND override fun onCvxV2vThreatIndInfo(info: CvxV2vThreatIndInfo?) { - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "onCvxV2vThreatIndInfo ------> $info" - ) - info?.let { - //预警信息,预警类型 threat_level 2、3 - info.threat_info?.let { - //预警方位 - val direction = - getMessageDirection(if (info.ext_info != null) info.ext_info.target_classification else -1) - //处理预警类型 - val appId = info.threat_info.app_id - val level = info.threat_info.threat_level - val status = info.status - if (info.ext_info != null) { - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "onCvxV2vThreatIndInfo target_classification = ${ - getMessageDirection(info.ext_info.target_classification) - } --- direction = $direction --- appId = $appId ---level = $level -- status = $status" - ) - } + if (HmiBuildConfig.isShowObuV2vView) { + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "onCvxV2vThreatIndInfo ------> $info" + ) + info?.let { + //预警信息,预警类型 threat_level 2、3 + info.threat_info?.let { + //预警方位 + val direction = + getMessageDirection(if (info.ext_info != null) info.ext_info.target_classification else -1) + //处理预警类型 + val appId = info.threat_info.app_id + val level = info.threat_info.threat_level + val status = info.status + if (info.ext_info != null) { + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "onCvxV2vThreatIndInfo target_classification = ${ + getMessageDirection(info.ext_info.target_classification) + } --- direction = $direction --- appId = $appId ---level = $level -- status = $status" + ) + } - handleSdkObu(appId, direction, status, level, info) + handleSdkObu(appId, direction, status, level, info) + } } } } @@ -721,6 +729,10 @@ class MogoPrivateObuManager private constructor() { 0x2 -> {//闯红灯 V2I_RLVW_VIOLATION_TYPE_RUNNING_RED_LIGHT ttsContent = EventTypeEnum.getWarningTts(appId.toString()) alertContent = EventTypeEnum.getWarningContent(appId.toString()) + CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_OBU}", "old changeTrafficLightStatus ------> appId.toString() = ${appId.toString()} --- alertContent = $alertContent --- ttsContent = $ttsContent ") + if (alertContent.isNullOrEmpty() || ttsContent.isNullOrEmpty()) { + Log.d("MsgBox-PriObuManager1", "alertContent或ttsContent为空!") + } CallerMsgBoxManager.saveMsgBox( MsgBoxBean( MsgBoxType.OBU, @@ -794,6 +806,10 @@ class MogoPrivateObuManager private constructor() { val maxSpeed = currentLight.glosa_suggested_speed_max.toInt() if (maxSpeed > 0) { + CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_OBU}", "old changeTrafficLightStatus ------> TYPE_USECASE_ID_IVP_GREEN --- alertContent = $alertContent --- ttsContent = $ttsContent ") + if (alertContent.isNullOrEmpty() || ttsContent.isNullOrEmpty()) { + Log.d("MsgBox-PriObuManager2", "alertContent或ttsContent为空!") + } CallerMsgBoxManager.saveMsgBox( MsgBoxBean( MsgBoxType.OBU, @@ -926,6 +942,12 @@ class MogoPrivateObuManager private constructor() { ) if (level == 2 || level == 3) { //不显示顶部弹框,其它保留 + CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "old handleSdkObu appId2 = $appId --- level = $level ---ttsContent = $ttsContent --- alertContent = $alertContent --- direction = $direction" + ) + if (alertContent.isNullOrEmpty() || ttsContent.isNullOrEmpty()) { + Log.d("MsgBox-PriObuManager3", "alertContent或ttsContent为空!") + } CallerMsgBoxManager.saveMsgBox( MsgBoxBean( MsgBoxType.OBU, diff --git a/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuNewManager.kt b/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuNewManager.kt index 058d3ec7ad..897a9432fe 100644 --- a/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuNewManager.kt +++ b/core/function-impl/mogo-core-function-obu-mogo/src/main/java/com/mogo/eagle/core/function/obu/mogo/MogoPrivateObuNewManager.kt @@ -1,6 +1,7 @@ package com.mogo.eagle.core.function.obu.mogo import android.content.Context +import android.util.Log import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig.isShowObuLimitSpeedView @@ -17,7 +18,6 @@ import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.Defa import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.TooClose import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.function.call.obu.CallerObuListenerManager -import com.mogo.eagle.core.function.obu.mogo.MogoObuConst.TAG_MOGO_OBU import com.mogo.eagle.core.function.obu.mogo.utils.TrafficDataConvertUtilsNew import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OBU @@ -93,7 +93,7 @@ class MogoPrivateObuNewManager private constructor() { */ override fun onConnectStatus(connectStatus: Int) { if (connectStatus == 0) { //断开连接 - CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_OBU}", "onConnectFail ------> ") + CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", "onConnectFail ------> ") mObuStatusInfo.obuStatus = false mObuStatusInfo.obuHvStatus = false mObuStatusInfo.obuRvStatus = false @@ -102,7 +102,7 @@ class MogoPrivateObuNewManager private constructor() { mContext?.let { SharedPrefsMgr.getInstance(it).putBoolean("OBU_HV", false) } mContext?.let { SharedPrefsMgr.getInstance(it).putBoolean("OBU_RV", false) } } else if (connectStatus == 1) { //连接成功 - CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_OBU}", "onConnected ------> ") + CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", "onConnected ------> ") mObuStatusInfo.obuStatus = true CallerObuListenerManager.invokeListener(mObuStatusInfo) mContext?.let { SharedPrefsMgr.getInstance(it).putBoolean("OBU", true) } @@ -125,7 +125,7 @@ class MogoPrivateObuNewManager private constructor() { if (p0 != null && p0.vehBasicsMsg != null) { CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", "onMogoObuHvBasics lon = ${p0.vehBasicsMsg.longitude} --- lat = ${p0.vehBasicsMsg.latitude} ---speed = ${p0.vehBasicsMsg.speed} ---heading = ${p0.vehBasicsMsg.heading} --acceleration = ${p0.vehBasicsMsg.accFourAxes.accLat} --yawRate = ${p0.vehBasicsMsg.accFourAxes.accYaw}" ) val data = JSONObject() @@ -170,46 +170,47 @@ class MogoPrivateObuNewManager private constructor() { */ override fun onMogoObuRvWarning(data: MogoObuRvWarningData) { super.onMogoObuRvWarning(data) - mObuStatusInfo.obuRvStatus = true - CallerObuListenerManager.invokeListener(mObuStatusInfo) - - if (!data.warningMsg.warningData.isNullOrEmpty()) { - // 更新数据,远车数据,之前要匹配uuid - TrafficDataConvertUtilsNew.cvxRvInfoIndInfo2TrafficData(data)?.let { - CallerMapUIServiceManager.getMarkerService()?.updateITrafficLocationInfo(it) - } + if (HmiBuildConfig.isShowObuV2vView) { + mObuStatusInfo.obuRvStatus = true + CallerObuListenerManager.invokeListener(mObuStatusInfo) - CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_OBU}", data.toString()) - data.let { - //预警信息,预警类型 threat_level 2、3 - var status = data.status - data.vehBasicsMsg?.let { - //预警方位 - val direction = getMessageDirection(data.vehBasicsMsg.targetPosition) - //处理预警类型 - var appId = "" - var level = -1 - data.warningMsg?.let { - if (data.warningMsg.warningData != null && data.warningMsg.warningData.size > 0) { - level = data.warningMsg.warningData[0].warningLevel - appId = data.warningMsg.warningData[0].warningType.toString() + if (!data.warningMsg.warningData.isNullOrEmpty()) { + // 更新数据,远车数据,之前要匹配uuid + TrafficDataConvertUtilsNew.cvxRvInfoIndInfo2TrafficData(data)?.let { + CallerMapUIServiceManager.getMarkerService()?.updateITrafficLocationInfo(it) + } + + CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", data.toString()) + data.let { + //预警信息,预警类型 threat_level 2、3 + var status = data.status + data.vehBasicsMsg?.let { + //预警方位 + val direction = getMessageDirection(data.vehBasicsMsg.targetPosition) + //处理预警类型 + var appId = "" + var level = -1 + data.warningMsg?.let { + if (data.warningMsg.warningData != null && data.warningMsg.warningData.size > 0) { + level = data.warningMsg.warningData[0].warningLevel + appId = data.warningMsg.warningData[0].warningType.toString() + } } - } - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "onMogoObuRvWarning target_classification = ${ - getMessageDirection(data.vehBasicsMsg.targetPosition) - } --- direction = $direction --- appId = $appId ---level = $level -- status = $status" - ) - //拼凑数据 - if (appId != null) { - handleSdkObu(appId, direction, status, level, data) + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", + "onMogoObuRvWarning target_classification = ${ + getMessageDirection(data.vehBasicsMsg.targetPosition) + } --- direction = $direction --- appId = $appId ---level = $level -- status = $status" + ) + //拼凑数据 + if (appId != null) { + handleSdkObu(appId, direction, status, level, data) + } } } } } - } /** @@ -219,11 +220,13 @@ class MogoPrivateObuNewManager private constructor() { super.onMogoObuSpatWarning(data) if (data?.lights != null && data.lights.isNotEmpty() ) { - handlerTrafficLight( - data.warningType, - data.status, - data.lights - ) + if (HmiBuildConfig.isShowObuV2iView) { + handlerTrafficLight( + data.warningType, + data.status, + data.lights + ) + } } } @@ -232,233 +235,239 @@ class MogoPrivateObuNewManager private constructor() { */ override fun onMogoObuRsiWarning(data: MogoObuRsiWarningData) { super.onMogoObuRsiWarning(data) - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "onMogoObuRsiWarning ------> $data" - ) - if (data != null && data.warningMsg != null && data.warningMsg.size > 0) { - var alertContent = "" - var ttsContent = "" - var appId = data.warningMsg[0].sceneType.toString() - val status = data.status - val level = data.warningMsg[0].warningLevel - val direction = getMessageDirection(data.warningMsg[0].targetPosition) + if (HmiBuildConfig.isShowObuV2iView) { CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "onCvxRtiThreatIndInfo appId = $appId --status = $status --level = $level -- eventSerialNum = ${data.warningMsg[0].eventSerialNum} ---signSerialNum = ${data.warningMsg[0].signSerialNum} --- direction = $direction -- targetPosition = ${data.warningMsg[0].targetPosition}" + "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", + "onMogoObuRsiWarning ------> $data" ) + if (data != null && data.warningMsg != null && data.warningMsg.size > 0) { + var alertContent = "" + var ttsContent = "" + var appId = data.warningMsg[0].sceneType.toString() + val status = data.status + val level = data.warningMsg[0].warningLevel + val direction = getMessageDirection(data.warningMsg[0].targetPosition) + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", + "onCvxRtiThreatIndInfo appId = $appId --status = $status --level = $level -- eventSerialNum = ${data.warningMsg[0].eventSerialNum} ---signSerialNum = ${data.warningMsg[0].signSerialNum} --- direction = $direction -- targetPosition = ${data.warningMsg[0].targetPosition}" + ) - when (appId) { - // 道路危险情况预警 - MogoObuConstants.RSI_SCENE_TYPE.HLW.toString() -> { - when (data.warningMsg[0].eventSerialNum) { - MogoObuConstants.RTE.RTI_TYPE_BREAKDOWN -> {//车辆故障 - appId = V2iEventTypeEnum.TYPE_USECASE_ID_BREAKDOWN_WARNING.poiType - } - MogoObuConstants.RTE.RTI_TYPE_ROAD_WATER -> { //道路积水 - appId = V2iEventTypeEnum.FOURS_PONDING.poiType - } - MogoObuConstants.RTE.RTI_TYPE_PARKING_VIOLATION -> { //异常停车 - appId = V2iEventTypeEnum.TYPE_USECASE_ID_ROAD_PARKING.poiType - } + when (appId) { + // 道路危险情况预警 + MogoObuConstants.RSI_SCENE_TYPE.HLW.toString() -> { + when (data.warningMsg[0].eventSerialNum) { + MogoObuConstants.RTE.RTI_TYPE_BREAKDOWN -> {//车辆故障 + appId = EventTypeEnumNew.TYPE_USECASE_ID_BREAKDOWN_WARNING.poiType + } + MogoObuConstants.RTE.RTI_TYPE_ROAD_WATER -> { //道路积水 + appId = EventTypeEnumNew.FOURS_PONDING.poiType + } + MogoObuConstants.RTE.RTI_TYPE_PARKING_VIOLATION -> { //异常停车 + appId = EventTypeEnumNew.TYPE_USECASE_ID_ROAD_PARKING.poiType + } // MogoObuConstants.RTE.RTI_TYPE_CONSTRUCTION_RTE -> { //施工占道,和标牌重复 -// appId = V2iEventTypeEnum.FOURS_ROAD_WORK.poiType +// appId = EventTypeEnumNew.FOURS_ROAD_WORK.poiType // } - MogoObuConstants.RTE.RTI_TYPE_SPEEDING -> { //超速行驶 - appId = V2iEventTypeEnum.TYPE_USECASE_ID_SLW.poiType - } - MogoObuConstants.RTE.RTI_TYPE_RETRIGRADE -> { //车辆逆行 - appId = - V2iEventTypeEnum.TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.poiType + MogoObuConstants.RTE.RTI_TYPE_SPEEDING -> { //超速行驶 + appId = EventTypeEnumNew.TYPE_USECASE_ID_SLW.poiType + } + MogoObuConstants.RTE.RTI_TYPE_RETRIGRADE -> { //车辆逆行 + appId = + EventTypeEnumNew.TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.poiType + } } + alertContent = EventTypeEnumNew.getWarningContent(appId) + ttsContent = EventTypeEnumNew.getWarningTts(appId) + alertContent = String.format( //事件才有影响范围 + alertContent, + Math.round(data.warningMsg[0].distance).toString(), + Math.round(data.warningMsg[0].eventRadius).toString() + ) + ttsContent = String.format( + ttsContent, + Math.round(data.warningMsg[0].distance).toString(), + Math.round(data.warningMsg[0].eventRadius).toString() + ) } - alertContent = V2iEventTypeEnum.getWarningContent(appId) - ttsContent = V2iEventTypeEnum.getWarningTts(appId) - alertContent = String.format( //事件才有影响范围 - alertContent, - Math.round(data.warningMsg[0].distance).toString(), - Math.round(data.warningMsg[0].eventRadius).toString() - ) - ttsContent = String.format( - ttsContent, - Math.round(data.warningMsg[0].distance).toString(), - Math.round(data.warningMsg[0].eventRadius).toString() - ) - } - //车内标牌 - MogoObuConstants.RSI_SCENE_TYPE.IVS.toString() -> { - when (data.warningMsg[0].signSerialNum) { + //车内标牌 + MogoObuConstants.RSI_SCENE_TYPE.IVS.toString() -> { + when (data.warningMsg[0].signSerialNum) { // MogoObuConstants.RTS.RTI_TYPE_INTERSECTION -> { //十字路口 -// appId = V2iEventTypeEnum.TYPE_ID_NTERSECTION.poiType +// appId = EventTypeEnumNew.TYPE_ID_NTERSECTION.poiType // } - MogoObuConstants.RTS.RTI_TYPE_SHAPR_TURNS -> { //急转弯 - appId = V2iEventTypeEnum.TYPE_ID_SHAPR_TURNS.poiType - } - MogoObuConstants.RTS.RTI_TYPE_BRIDGE -> { //桥梁 - appId = V2iEventTypeEnum.TYPE_ID_BRIDGE.poiType - } - MogoObuConstants.RTS.RTI_TYPE_PEDESTRIAN -> { //行人 - appId = V2iEventTypeEnum.TYPE_ID_PEDESTRIAN.poiType - } - MogoObuConstants.RTS.RTI_TYPE_SLIPPERY_ROAD -> { //路滑 - appId = V2iEventTypeEnum.TYPE_ID_SLIPPERY_ROAD.poiType - } - MogoObuConstants.RTS.RTI_TYPE_TUNNEL -> { //隧道 - appId = V2iEventTypeEnum.TYPE_ID_TUNNEL.poiType - } - MogoObuConstants.RTS.RTI_TYPE_FERRY -> { //渡轮 - appId = V2iEventTypeEnum.TYPE_ID_FERRY.poiType - } - MogoObuConstants.RTS.RTI_TYPE_UNEVEN_ROAD -> { //路面不平 - appId = V2iEventTypeEnum.TYPE_ID_UNEVEN_ROAD.poiType - } - MogoObuConstants.RTS.RTI_TYPE_NON_MOTOR_VEHICLE -> { //非机动车 - appId = V2iEventTypeEnum.TYPE_ID_NON_MOTOR_VEHICLE.poiType - } - MogoObuConstants.RTS.RTI_TYPE_OBSTACLE -> { //障碍 - appId = V2iEventTypeEnum.TYPE_ID_OBSTACLE.poiType - } - MogoObuConstants.RTS.RTI_TYPE_CONSTRUCTION -> { //施工 - appId = V2iEventTypeEnum.TYPE_FOURS_ROAD_WORK.poiType - } - MogoObuConstants.RTS.RTI_TYPE_VEHICLE_QUEUE -> { //车队 - appId = V2iEventTypeEnum.TYPE_VEHICLE_QUEUE.poiType - } - MogoObuConstants.RTS.RTI_TYPE_NO_PASSING -> { //不通 - appId = V2iEventTypeEnum.TYPE_NO_PASSING.poiType - } - MogoObuConstants.RTS.RTI_TYPE_NO_TURNING_AROUND -> { //禁止掉头 - appId = V2iEventTypeEnum.TYPE_NO_TURNING_AROUND.poiType - } - MogoObuConstants.RTS.RTI_TYPE_NO_STOPPING -> { //禁止停车 - appId = V2iEventTypeEnum.TYPE_USECASE_ID_ROAD_NO_PARKING.poiType - } - MogoObuConstants.RTS.RTI_TYPE_NO_TOOTING -> { //禁止鸣笛 - appId = V2iEventTypeEnum.TYPE_USECASE_ID_ROAD_NO_TOOTING.poiType - } - MogoObuConstants.RTS.RTI_TYPE_SPEED_LIMIT -> { //限速 - appId = V2iEventTypeEnum.TYPE_USECASE_ID_ROAD_SPEED_LIMIT.poiType - } + MogoObuConstants.RTS.RTI_TYPE_SHAPR_TURNS -> { //急转弯 + appId = EventTypeEnumNew.TYPE_ID_SHAPR_TURNS.poiType + } + MogoObuConstants.RTS.RTI_TYPE_BRIDGE -> { //桥梁 + appId = EventTypeEnumNew.TYPE_ID_BRIDGE.poiType + } + MogoObuConstants.RTS.RTI_TYPE_PEDESTRIAN -> { //行人 + appId = EventTypeEnumNew.TYPE_ID_PEDESTRIAN.poiType + } + MogoObuConstants.RTS.RTI_TYPE_SLIPPERY_ROAD -> { //路滑 + appId = EventTypeEnumNew.TYPE_ID_SLIPPERY_ROAD.poiType + } + MogoObuConstants.RTS.RTI_TYPE_TUNNEL -> { //隧道 + appId = EventTypeEnumNew.TYPE_ID_TUNNEL.poiType + } + MogoObuConstants.RTS.RTI_TYPE_FERRY -> { //渡轮 + appId = EventTypeEnumNew.TYPE_ID_FERRY.poiType + } + MogoObuConstants.RTS.RTI_TYPE_UNEVEN_ROAD -> { //路面不平 + appId = EventTypeEnumNew.TYPE_ID_UNEVEN_ROAD.poiType + } + MogoObuConstants.RTS.RTI_TYPE_NON_MOTOR_VEHICLE -> { //非机动车 + appId = EventTypeEnumNew.TYPE_ID_NON_MOTOR_VEHICLE.poiType + } + MogoObuConstants.RTS.RTI_TYPE_OBSTACLE -> { //障碍 + appId = EventTypeEnumNew.TYPE_ID_OBSTACLE.poiType + } + MogoObuConstants.RTS.RTI_TYPE_CONSTRUCTION -> { //施工 + appId = EventTypeEnumNew.TYPE_FOURS_ROAD_WORK.poiType + } + MogoObuConstants.RTS.RTI_TYPE_VEHICLE_QUEUE -> { //车队 + appId = EventTypeEnumNew.TYPE_VEHICLE_QUEUE.poiType + } + MogoObuConstants.RTS.RTI_TYPE_NO_PASSING -> { //不通 + appId = EventTypeEnumNew.TYPE_NO_PASSING.poiType + } + MogoObuConstants.RTS.RTI_TYPE_NO_TURNING_AROUND -> { //禁止掉头 + appId = EventTypeEnumNew.TYPE_NO_TURNING_AROUND.poiType + } + MogoObuConstants.RTS.RTI_TYPE_NO_STOPPING -> { //禁止停车 + appId = EventTypeEnumNew.TYPE_USECASE_ID_ROAD_NO_PARKING.poiType + } + MogoObuConstants.RTS.RTI_TYPE_NO_TOOTING -> { //禁止鸣笛 + appId = EventTypeEnumNew.TYPE_USECASE_ID_ROAD_NO_TOOTING.poiType + } + MogoObuConstants.RTS.RTI_TYPE_SPEED_LIMIT -> { //限速 + appId = EventTypeEnumNew.TYPE_USECASE_ID_ROAD_SPEED_LIMIT.poiType + } // MogoObuConstants.RTS.RTI_TYPE_GO_STRAIGHT_TURN_RIGHT -> { //直行或右转 // appId = -// V2iEventTypeEnum.TYPE_USECASE_ID_GO_STRAIGHT_TURN_RIGHT.poiType +// EventTypeEnumNew.TYPE_USECASE_ID_GO_STRAIGHT_TURN_RIGHT.poiType // } - MogoObuConstants.RTS.RTI_TYPE_BUS_WARNING -> { //公交提醒 - appId = V2iEventTypeEnum.TYPE_USECASE_ID_BUS_WARNING.poiType - } - MogoObuConstants.RTS.RTI_TYPE_NARROW_RIGHT -> { //右侧变窄/车道数减少 - appId = V2iEventTypeEnum.TYPE_USECASE_ID_NARROW_RIGHT.poiType - } - MogoObuConstants.RTS.RTI_TYPE_GAS_STATION -> { //加油站 - appId = V2iEventTypeEnum.TYPE_USECASE_ID_GAS_STATION.poiType - } - MogoObuConstants.RTS.RTI_TYPE_SCHOOL -> { //学校 - appId = - V2iEventTypeEnum.TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType - } - MogoObuConstants.RTS.RTI_TYPE_ACCIDENT -> { //事故 - appId = V2iEventTypeEnum.TYPE_USECASE_ID_ACCIDENT.poiType + MogoObuConstants.RTS.RTI_TYPE_BUS_WARNING -> { //公交提醒 + appId = EventTypeEnumNew.TYPE_USECASE_ID_BUS_WARNING.poiType + } + MogoObuConstants.RTS.RTI_TYPE_NARROW_RIGHT -> { //右侧变窄/车道数减少 + appId = EventTypeEnumNew.TYPE_USECASE_ID_NARROW_RIGHT.poiType + } + MogoObuConstants.RTS.RTI_TYPE_GAS_STATION -> { //加油站 + appId = EventTypeEnumNew.TYPE_USECASE_ID_GAS_STATION.poiType + } + MogoObuConstants.RTS.RTI_TYPE_SCHOOL -> { //学校 + appId = + EventTypeEnumNew.TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType + } + MogoObuConstants.RTS.RTI_TYPE_ACCIDENT -> { //事故 + appId = EventTypeEnumNew.TYPE_USECASE_ID_ACCIDENT.poiType + } } + + alertContent = EventTypeEnumNew.getWarningContent(appId) + ttsContent = EventTypeEnumNew.getWarningTts(appId) + alertContent = String.format( //标牌是没有影响范围的 + alertContent, + Math.round(data.warningMsg[0].distance).toString() + ) + ttsContent = String.format( + ttsContent, + Math.round(data.warningMsg[0].distance).toString() + ) } - alertContent = V2iEventTypeEnum.getWarningContent(appId) - ttsContent = V2iEventTypeEnum.getWarningTts(appId) - alertContent = String.format( //标牌是没有影响范围的 - alertContent, - Math.round(data.warningMsg[0].distance).toString() - ) - ttsContent = String.format( - ttsContent, - Math.round(data.warningMsg[0].distance).toString() - ) - } + // 拥堵 + MogoObuConstants.RSI_SCENE_TYPE.TJW.toString() -> { + appId = EventTypeEnumNew.TYPE_USECASE_ID_TJW.poiType - // 拥堵 - MogoObuConstants.RSI_SCENE_TYPE.TJW.toString() -> { - appId = V2iEventTypeEnum.TYPE_USECASE_ID_TJW.poiType - - alertContent = V2iEventTypeEnum.getWarningContent(appId) - ttsContent = V2iEventTypeEnum.getWarningTts(appId) - alertContent = String.format( //事件才有影响范围 - alertContent, - Math.round(data.warningMsg[0].distance).toString(), + alertContent = EventTypeEnumNew.getWarningContent(appId) + ttsContent = EventTypeEnumNew.getWarningTts(appId) + alertContent = String.format( //事件才有影响范围 + alertContent, + Math.round(data.warningMsg[0].distance).toString(), Math.round(data.warningMsg[0].eventRadius).toString() - ) - ttsContent = String.format( - ttsContent, - Math.round(data.warningMsg[0].distance).toString(), - Math.round(data.warningMsg[0].eventRadius).toString() - ) + ) + ttsContent = String.format( + ttsContent, + Math.round(data.warningMsg[0].distance).toString(), + Math.round(data.warningMsg[0].eventRadius).toString() + ) + } + + //限速预警, ADD处理一次 + MogoObuConstants.RSI_SCENE_TYPE.SLW.toString() -> { + alertContent = EventTypeEnumNew.getWarningContent(appId) + ttsContent = EventTypeEnumNew.getWarningTts(appId) + } } - //限速预警, ADD处理一次 - MogoObuConstants.RSI_SCENE_TYPE.SLW.toString() -> { - alertContent = V2iEventTypeEnum.getWarningContent(appId) - ttsContent = V2iEventTypeEnum.getWarningTts(appId) - } - } - - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "ttsContent = $ttsContent --alertContent = $alertContent --appId = $appId ---direction = ${direction.direction} --distance = ${Math.round(data.warningMsg[0].distance)} ---eventRadius = ${Math.round(data.warningMsg[0].eventRadius)} --speedMaxLimit = ${data.warningMsg[0].speedMaxLimit.toInt()}" - ) - when (status) { - MogoObuConstants.STATUS.ADD -> { // 添加 - //显示警告红边 + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", + "new onMogoObuRsiWarning ttsContent = $ttsContent --alertContent = $alertContent --appId = $appId ---direction = ${direction.direction} --distance = ${Math.round(data.warningMsg[0].distance)} ---eventRadius = ${Math.round(data.warningMsg[0].eventRadius)} --speedMaxLimit = ${data.warningMsg[0].speedMaxLimit.toInt()}" + ) + when (status) { + MogoObuConstants.STATUS.ADD -> { // 添加 + //显示警告红边 // CallerHmiManager.showWarning(direction) - //不显示弹框,语音提示,数据在消息盒子里面展示,此处不在处理弹框 - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.OBU, - V2XMsg( - appId, - alertContent, - ttsContent + //不显示弹框,语音提示,数据在消息盒子里面展示,此处不在处理弹框 + if (alertContent.isNullOrEmpty() || ttsContent.isNullOrEmpty()) { + Log.d("MsgBox-PriObuNewMana1", "alertContent或ttsContent为空!") + } + CallerMsgBoxManager.saveMsgBox( + MsgBoxBean( + MsgBoxType.OBU, + V2XMsg( + appId, + alertContent, + ttsContent + ) ) ) - ) - CallerHmiManager.warningV2X( - appId, - alertContent, - ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 - (appId + direction.direction),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 - object : IMoGoWarningStatusListener { - override fun onDismiss() { - // 关闭警告红边 - CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) - } - }, - true, - 3000L - ) + CallerHmiManager.warningV2X( + appId, + alertContent, + ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 + (appId + direction.direction),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 + object : IMoGoWarningStatusListener { + override fun onDismiss() { + // 关闭警告红边 + CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) + } + }, + true, + 3000L + ) - // 更新数据 - TrafficDataConvertUtilsNew.cvxRtiThreatIndInfo2TrafficData(data)?.let { + // 更新数据 + TrafficDataConvertUtilsNew.cvxRtiThreatIndInfo2TrafficData(data)?.let { CallerMapUIServiceManager.getMarkerService() ?.updateITrafficThreatLevelInfo(it) } - } + } - MogoObuConstants.STATUS.UPDATE -> { // 更新 - } + MogoObuConstants.STATUS.UPDATE -> { // 更新 + } - MogoObuConstants.STATUS.DELETE -> { // 删除 - // 关闭警告红边 + MogoObuConstants.STATUS.DELETE -> { // 删除 + // 关闭警告红边 // CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) - // 移除顶部弹窗 + // 移除顶部弹窗 // CallerHmiManager.disableWarningV2X((appId + direction.direction)) - // 更新数据 - TrafficDataConvertUtilsNew.cvxRtiThreatIndInfo2TrafficData(data) - ?.let { - // 事件结束,还原车辆颜色 - it.threatLevel = 0x01 - CallerMapUIServiceManager.getMarkerService() - ?.updateITrafficInfo(it) - } + // 更新数据 + TrafficDataConvertUtilsNew.cvxRtiThreatIndInfo2TrafficData(data) + ?.let { + // 事件结束,还原车辆颜色 + it.threatLevel = 0x01 + CallerMapUIServiceManager.getMarkerService() + ?.updateITrafficInfo(it) + } + } } } } + } /** @@ -474,96 +483,101 @@ class MogoPrivateObuNewManager private constructor() { data: MogoObuRsmWarningData? ) { super.onMogoObuRsmWarning(data) - if (HmiBuildConfig.isShowObuWeaknessTrafficView) { - CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "onMogoObuRsmWarning ------> ${data.toString()}" - ) - // 交通参与者类型 0x0:未知 UNKNOWN | 1机动车 2:非机动车 NON_MOTOR | 3:行人 PEDESTRIAN 4:obu - if (data != null && data.participant != null) { - var v2xType = "" - if (data.participant.ptcType == 1) { //机动车 - v2xType = - EventTypeEnumWeaknessTraffic.TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.poiType - } else if (data.participant.ptcType == 2) { //非机动车 - v2xType = - EventTypeEnumWeaknessTraffic.TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiType - } else if (data.participant.ptcType == 3) { //行人 - v2xType = - EventTypeEnumWeaknessTraffic.TYPE_USECASE_ID_VRUCW_PERSON.poiType - } else { //未知 - v2xType = EventTypeEnumWeaknessTraffic.TYPE_ERROR.poiType - } - val ttsContent = EventTypeEnumWeaknessTraffic.getWarningTts(v2xType) - val alertContent = - EventTypeEnumWeaknessTraffic.getWarningContent(v2xType) - var level = -1 - val direction = getMessageDirection(data.participant.targetPosition) - if (data.warningMsg != null && data.warningMsg.warningData != null && data.warningMsg.warningData.size > 0) { - level = data.warningMsg.warningData[0].warningLevel //默认是1个 - CallerLogger.d("$M_OBU${TAG_MOGO_OBU}", - "onMogoObuRsmWarning ---status---> ${data.status} ---data.warningMsg.warningData[0].status = ${data.warningMsg.warningData[0].status}" - ) + if (HmiBuildConfig.isShowObuV2iView) { + if (HmiBuildConfig.isShowObuWeaknessTrafficView) { + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", + "onMogoObuRsmWarning ------> ${data.toString()}" + ) + // 交通参与者类型 0x0:未知 UNKNOWN | 1机动车 2:非机动车 NON_MOTOR | 3:行人 PEDESTRIAN 4:obu + if (data != null && data.participant != null) { + var v2xType = "" + if (data.participant.ptcType == 1) { //机动车 + v2xType = + EventTypeEnumNew.TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.poiType + } else if (data.participant.ptcType == 2) { //非机动车 + v2xType = + EventTypeEnumNew.TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiType + } else if (data.participant.ptcType == 3) { //行人 + v2xType = + EventTypeEnumNew.TYPE_USECASE_ID_VRUCW_PERSON.poiType + } else { //未知 + v2xType = EventTypeEnumNew.TYPE_ERROR.poiType + } + val ttsContent = EventTypeEnumNew.getWarningTts(v2xType) + val alertContent = + EventTypeEnumNew.getWarningContent(v2xType) + var level = -1 + val direction = getMessageDirection(data.participant.targetPosition) + if (data.warningMsg != null && data.warningMsg.warningData != null && data.warningMsg.warningData.size > 0) { + level = data.warningMsg.warningData[0].warningLevel //默认是1个 + CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", + "new onMogoObuRsmWarning ---status---> ${data.status} ---data.warningMsg.warningData[0].status = ${data.warningMsg.warningData[0].status} ---v2xType = $v2xType ---alertContent = $alertContent ---ttsContent = $ttsContent " + ) - when (data.warningMsg.warningData[0].status) { - MogoObuConstants.STATUS.ADD -> { // 添加 + when (data.warningMsg.warningData[0].status) { + MogoObuConstants.STATUS.ADD -> { // 添加 // if (level == 2 || level == 3) { //不考虑level - //显示警告红边 - CallerHmiManager.showWarning(direction) - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.OBU, - V2XMsg( - v2xType, - alertContent, - ttsContent + //显示警告红边 + CallerHmiManager.showWarning(direction) + if (alertContent.isNullOrEmpty() || ttsContent.isNullOrEmpty()) { + Log.d("MsgBox-PriObuNewMana2", "alertContent或ttsContent为空!") + } + CallerMsgBoxManager.saveMsgBox( + MsgBoxBean( + MsgBoxType.OBU, + V2XMsg( + v2xType, + alertContent, + ttsContent + ) ) ) - ) - CallerHmiManager.warningV2X( - v2xType, - alertContent, - ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 - (v2xType + direction.direction),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 - object : IMoGoWarningStatusListener { - override fun onDismiss() { - // 关闭警告红边 - CallerHmiManager.showWarning( - WarningDirectionEnum.ALERT_WARNING_NON - ) - } - }, - true, - 5000L - ) + CallerHmiManager.warningV2X( + v2xType, + alertContent, + ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 + (v2xType + direction.direction),//使用当前事件类型+方向记录tag,当发生变化的时候关闭当前弹出新的 + object : IMoGoWarningStatusListener { + override fun onDismiss() { + // 关闭警告红边 + CallerHmiManager.showWarning( + WarningDirectionEnum.ALERT_WARNING_NON + ) + } + }, + true, + 5000L + ) // } - // 更新数据 - TrafficDataConvertUtilsNew.cvxPtcThreatIndInfo2TrafficData(data)?.let { - CallerLogger.d("$M_OBU${TAG_MOGO_OBU}", "add cvxPtcThreatIndInfo2TrafficData ---it---> $it") - CallerMapUIServiceManager.getMarkerService() - ?.updateITrafficThreatLevelInfo(it) - } - } - - MogoObuConstants.STATUS.UPDATE -> {// 更新 - } - - // 删除 - MogoObuConstants.STATUS.DELETE -> { - // 关闭警告红边 - CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) - // 更新数据 TODO 删除原来的,改变颜色,删除marker。不影响别的模型添加 - TrafficDataConvertUtilsNew.cvxPtcThreatIndInfo2TrafficData(data) - ?.let { - // 事件结束,还原交通参与者颜色 - it.threatLevel = 0x01 + // 更新数据 + TrafficDataConvertUtilsNew.cvxPtcThreatIndInfo2TrafficData(data)?.let { + CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", "add cvxPtcThreatIndInfo2TrafficData ---it---> $it") CallerMapUIServiceManager.getMarkerService() ?.updateITrafficThreatLevelInfo(it) } + } - //删除弱势交通元素 - CallerMapUIServiceManager.getMarkerService()?.removeCvxRvInfoIndInfo(data.participant.ptcId.toString()) + MogoObuConstants.STATUS.UPDATE -> {// 更新 + } + + // 删除 + MogoObuConstants.STATUS.DELETE -> { + // 关闭警告红边 + CallerHmiManager.showWarning(WarningDirectionEnum.ALERT_WARNING_NON) + // 更新数据 TODO 删除原来的,改变颜色,删除marker。不影响别的模型添加 + TrafficDataConvertUtilsNew.cvxPtcThreatIndInfo2TrafficData(data) + ?.let { + // 事件结束,还原交通参与者颜色 + it.threatLevel = 0x01 + CallerMapUIServiceManager.getMarkerService() + ?.updateITrafficThreatLevelInfo(it) + } + + //删除弱势交通元素 + CallerMapUIServiceManager.getMarkerService()?.removeCvxRvInfoIndInfo(data.participant.ptcId.toString()) + } } } } @@ -576,10 +590,10 @@ class MogoPrivateObuNewManager private constructor() { */ override fun onMogoObuMapMath(data: MogoObuMapMathData?) { super.onMogoObuMapMath(data) - if(isShowObuLimitSpeedView) { //默认显示obu的限速 + if(isShowObuLimitSpeedView) { if (data != null) { CallerLogger.d( - "$M_OBU${TAG_MOGO_OBU}", + "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", "onMogoObuMapMathstatus = ${data.status} --speedMaxLimit = ${Math.round((data.speedMaxLimit*3.6))}") when (data.status) { MogoObuConstants.STATUS.ADD -> { // 添加 @@ -610,7 +624,7 @@ class MogoPrivateObuNewManager private constructor() { * 获取消息的方位 车辆相关 */ private fun getMessageDirection(targetClassification: Int): WarningDirectionEnum { -// CallerLogger.d("$M_OBU${TAG_MOGO_OBU}", "预警红边:预警方向->$targetClassification") +// CallerLogger.d("$M_OBU${TAG_MOGO_NEW_OBU}", "预警红边:预警方向->$targetClassification") return when (targetClassification) { MogoObuConstants.VEH_TARGET_POSITION.AHEAD_IN_LANE, MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_IN_LANE -> WarningDirectionEnum.ALERT_WARNING_TOP //正前方 @@ -656,7 +670,7 @@ class MogoPrivateObuNewManager private constructor() { ) { // 这里排除需要特殊定制的语音及文案外,其余的都可以使用 EventTypeEnumNew 提供的 CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", "handleSdkObu appId = $appId --- handleDirection = $direction ---level = $level ---status = $status" ) @@ -735,10 +749,13 @@ class MogoPrivateObuNewManager private constructor() { MogoObuConstants.STATUS.ADD, MogoObuConstants.STATUS.UPDATE -> { CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", - "appId2 = $appId --- level = $level ---ttsContent = $ttsContent --- alertContent = $alertContent --- direction = $direction" + "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", + "new handleSdkObu appId2 = $appId --- level = $level ---ttsContent = $ttsContent --- alertContent = $alertContent --- direction = $direction" ) if (level == 2 || level == 3) { + if (alertContent.isNullOrEmpty() || ttsContent.isNullOrEmpty()) { + Log.d("MsgBox-PriObuNewManager2", "alertContent或ttsContent为空!") + } //不显示弹框,其它保留 CallerMsgBoxManager.saveMsgBox( MsgBoxBean( @@ -804,7 +821,7 @@ class MogoPrivateObuNewManager private constructor() { */ private fun handlerTrafficLight(appId: Int, status: Int, lights: List) { CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_OBU}", + "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", "handlerTrafficLight --- status = $status ---lights.size = ${lights.size} ---lights = $lights ---appId = $appId" ) when (status) { @@ -819,12 +836,16 @@ class MogoPrivateObuNewManager private constructor() { // 移除顶部弹窗 CallerHmiManager.disableWarningTrafficLight() CallerHmiManager.disableWarningV2X(appId.toString()) + isShowGreenWave = false + isShowRunRedLight = false } } } private var isRedLight = false private var isGreenLight = false + private var isShowGreenWave = false + private var isShowRunRedLight = false /** * 修改红绿灯 @@ -839,7 +860,7 @@ class MogoPrivateObuNewManager private constructor() { //这里需要根据真实数据确定 index 取值方式 val currentLight = lights[0] CallerLogger.d( - "$M_OBU${TAG_MOGO_OBU}", + "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", "currentLight = $currentLight ---currentLight.phase = ${currentLight.phaseId} ---appId = $appId" ) // 闯红灯预警,绿波通行和闯红灯是互斥的 @@ -847,60 +868,69 @@ class MogoPrivateObuNewManager private constructor() { 0x0 -> {//不可用 V2I_RLVW_VIOLATION_TYPE_UNAVAILABLE 无效 } - 0x1 -> {//闯红灯 V2I_RLVW_VIOLATION_TYPE_RUNNING_RED_LIGHT TODO 需要约束一个红灯周期只显示一次 -// CallerHmiManager.disableWarningV2X(0x2.toString()) -// CallerLogger.d("$M_OBU${TAG_MOGO_OBU}","changeTrafficLightStatus 闯红灯 --------> ") -// ttsContent = EventTypeEnumTrafficLight.getWarningTts(appId.toString()) -// alertContent = EventTypeEnumTrafficLight.getWarningContent(appId.toString()) -// CallerHmiManager.warningV2X( -// appId.toString(), alertContent, ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 -// appId.toString(), null, true, 5000L) + 0x1 -> {//闯红灯 V2I_RLVW_VIOLATION_TYPE_RUNNING_RED_LIGHT 一个红灯周期只显示一次 + if (!isShowRunRedLight) { + isShowRunRedLight = true + CallerHmiManager.disableWarningV2X(0x2.toString()) + CallerLogger.d("$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}","changeTrafficLightStatus 闯红灯 --------> ") + ttsContent = EventTypeEnumNew.getWarningTts(appId.toString()) + alertContent = EventTypeEnumNew.getWarningContent(appId.toString()) + CallerHmiManager.warningV2X( + appId.toString(), alertContent, ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 + appId.toString(), null, true, 5000L) + } } - 0x2 -> { //绿波通行引导 V2I_RLVW_VIOLATION_TYPE_NO_VIOLATION TODO 需要约束一个绿灯周期只显示一次 -// CallerHmiManager.disableWarningV2X(0x1.toString()) -// CallerLogger.d( -// "$M_OBU${TAG_MOGO_OBU}", -// "speed_min = ${currentLight.suggestMinSpeed} --speed_max = ${currentLight.suggestMaxSpeed}" -// ) -// val adviceSpeed = -// "${currentLight.suggestMinSpeed} - ${currentLight.suggestMaxSpeed}" -// val adviceSpeedTts = -// "${currentLight.suggestMinSpeed}到${currentLight.suggestMaxSpeed}" -// ttsContent = -// String.format( -// EventTypeEnumTrafficLight.getWarningTts(appId.toString()), -// adviceSpeedTts -// ) -// alertContent = -// String.format( -// EventTypeEnumTrafficLight.getWarningContent(appId.toString()), -// adviceSpeed -// ) -// -// val maxSpeed = currentLight.suggestMaxSpeed -// if (maxSpeed > 0) { -// CallerMsgBoxManager.saveMsgBox( -// MsgBoxBean( -// MsgBoxType.OBU, -// V2XMsg( -// EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, -// alertContent, -// ttsContent -// ) -// ) -// ) -// -// CallerHmiManager.warningV2X( -// EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, -// alertContent, -// ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 -// appId.toString(), -// null, -// true, -// 5000L -// ) -// } + 0x2 -> { //绿波通行引导 V2I_RLVW_VIOLATION_TYPE_NO_VIOLATION 一个绿灯周期只显示一次 100m的时候 + if (!isShowGreenWave) { + isShowGreenWave = true + CallerHmiManager.disableWarningV2X(0x1.toString()) + CallerLogger.d( + "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", + "new changeTrafficLightStatus speed_min = ${currentLight.suggestMinSpeed} --speed_max = ${currentLight.suggestMaxSpeed} --TYPE_USECASE_ID_IVP_GREEN ---alertContent = $alertContent ---ttsContent = $ttsContent" + ) + val adviceSpeed = + "${currentLight.suggestMinSpeed} - ${currentLight.suggestMaxSpeed}" + val adviceSpeedTts = + "${currentLight.suggestMinSpeed}到${currentLight.suggestMaxSpeed}" + ttsContent = + String.format( + EventTypeEnumNew.getWarningTts(appId.toString()), + adviceSpeedTts + ) + alertContent = + String.format( + EventTypeEnumNew.getWarningContent(appId.toString()), + adviceSpeed + ) + + val maxSpeed = currentLight.suggestMaxSpeed + if (maxSpeed > 0) { + if (alertContent.isNullOrEmpty() || ttsContent.isNullOrEmpty()) { + Log.d("MsgBox-PriObuNewManager1", "alertContent或ttsContent为空!") + } + CallerMsgBoxManager.saveMsgBox( + MsgBoxBean( + MsgBoxType.OBU, + V2XMsg( + EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, + alertContent, + ttsContent + ) + ) + ) + + CallerHmiManager.warningV2X( + EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, + alertContent, + ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 + appId.toString(), + null, + true, + 5000L + ) + } + } } } 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 759be5b25f..86c0e3b634 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 @@ -557,7 +557,7 @@ object V2XEventManager : IMoGoMapLocationListener, IMoGoTokenCallback, IV2XCallb tempContent = EventTypeEnum.TYPE_USECASE_ID_IVP.content } 2001 -> { - // 最优车道 + // 最优车道100061 EventTypeHelper.getOptLine{ appId, tts, content -> tempAppId = appId tempTts = tts @@ -574,6 +574,9 @@ object V2XEventManager : IMoGoMapLocationListener, IMoGoTokenCallback, IV2XCallb } } // 不显示弹框,其它保留 + if (tempContent.isNullOrEmpty() || tempTts.isNullOrEmpty()) { + Log.d("MsgBox-V2XEventManager", "alertContent或ttsContent为空!") + } CallerMsgBoxManager.saveMsgBox( MsgBoxBean( MsgBoxType.V2X, diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventScenario.java index 8d1031e440..cf448413a1 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventScenario.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventScenario.java @@ -2,6 +2,8 @@ package com.mogo.eagle.core.function.v2x.events.scenario.scene.road; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_V2X; +import android.util.Log; + import com.mogo.commons.analytics.AnalyticsUtils; import com.mogo.eagle.core.data.enums.WarningDirectionEnum; import com.mogo.eagle.core.data.map.entity.MarkerExploreWay; @@ -72,7 +74,7 @@ public class V2XRoadEventScenario extends AbsV2XScenario imp boolean onlyShow = getV2XMessageEntity().isOnlyShow(); if (!onlyShow) { // 设置TTS - getV2XMessageEntity().getContent().getTts(); + getV2XMessageEntity().getContent().getTts(false); } showWindow(); String poiType = getV2XMessageEntity().getContent().getPoiType(); @@ -98,6 +100,10 @@ public class V2XRoadEventScenario extends AbsV2XScenario imp V2XRoadEventEntity content = entity != null ? entity.getContent() : null; if (content != null) { // //显示警告红边 + if (content.getAlarmContent() == null || content.getAlarmContent().isEmpty() + || content.getTts() == null || content.getTts().isEmpty()) { + Log.d("MsgBox-V2XRoadScenario", "alertContent或ttsContent为空!"); + } CallerMsgBoxManager.INSTANCE.saveMsgBox( new MsgBoxBean( MsgBoxType.V2X, diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XFrontWarningScenario.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XFrontWarningScenario.java index b53b27f6ea..c4d1d6f357 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XFrontWarningScenario.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XFrontWarningScenario.java @@ -6,6 +6,8 @@ import android.graphics.Color; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.style.ForegroundColorSpan; +import android.util.Log; + import androidx.annotation.Nullable; import com.mogo.eagle.core.data.enums.WarningDirectionEnum; import com.mogo.eagle.core.data.map.MogoLocation; @@ -63,6 +65,11 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMoGoMapL int v2xType = getV2XTypeForFrontWarning(mMarkerEntity); V2XMessageEntity entity = getV2XMessageEntity(); if (v2xType != 0) { + if (getAlertContentForFrontWarning(mMarkerEntity).toString() == null + || getAlertContentForFrontWarning(mMarkerEntity).toString().isEmpty() + || mMarkerEntity.getTts() == null || mMarkerEntity.getTts().isEmpty()) { + Log.d("MsgBox-FrontWarScenario", "alertContent或ttsContent为空!"); + } CallerMsgBoxManager.INSTANCE.saveMsgBox( new MsgBoxBean( MsgBoxType.V2X, diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/redlightwarning/RedLightWarningManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/redlightwarning/RedLightWarningManager.kt index 40c412f93e..49004bae3e 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/redlightwarning/RedLightWarningManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/redlightwarning/RedLightWarningManager.kt @@ -1,5 +1,6 @@ package com.mogo.eagle.core.function.v2x.redlightwarning +import android.util.Log import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_IVP import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_IVP_GREEN import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.V2I @@ -239,6 +240,9 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener, EventTypeEnum.getWarningTts(EventTypeEnum.TYPE_USECASE_ID_IVP_GREEN.poiType), speed ) + if (content.isNullOrEmpty() || tts.isNullOrEmpty()) { + Log.d("MsgBox-RedLightWarManaG", "alertContent或ttsContent为空!") + } CallerMsgBoxManager.saveMsgBox( MsgBoxBean( MsgBoxType.V2X, 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 af653fec0b..f8b0e2d4ef 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 @@ -1,6 +1,5 @@ package com.mogo.eagle.core.function.v2x.trafficlight.network -import com.google.gson.Gson import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.BaseResponse import com.mogo.eagle.core.data.trafficlight.* @@ -9,6 +8,7 @@ import com.mogo.eagle.core.network.apiCall import com.mogo.eagle.core.network.cancel import com.mogo.eagle.core.network.request import com.mogo.commons.constants.HostConst.CITY_HOST +import com.mogo.eagle.core.utilcode.util.GsonUtils class TrafficLightNetWorkModel { @@ -30,7 +30,7 @@ class TrafficLightNetWorkModel { start { val roadIDRequestData = RoadIDRequestData(tileID, lat, lon, bearing) map["sn"] = MoGoAiCloudClientConfig.getInstance().sn - map["data"] = Gson().toJson(roadIDRequestData) + map["data"] = GsonUtils.toJson(roadIDRequestData) } loader { apiCall { @@ -76,7 +76,7 @@ class TrafficLightNetWorkModel { } val trafficLightRequestData = TrafficLightRequestData(lat, lon, bearing, roadId) map["sn"] = MoGoAiCloudClientConfig.getInstance().sn - map["data"] = Gson().toJson(trafficLightRequestData) + map["data"] = GsonUtils.toJson(trafficLightRequestData) } loader { apiCall { @@ -116,7 +116,7 @@ class TrafficLightNetWorkModel { val trafficLightRequestData = ChangeLightRequestData(lightId, crossingNo, heading, controlTime) map["sn"] = MoGoAiCloudClientConfig.getInstance().sn - map["data"] = Gson().toJson(trafficLightRequestData) + map["data"] = GsonUtils.toJson(trafficLightRequestData) } loader { apiCall { diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt index f4659f54ab..61bd434cb7 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt @@ -4,6 +4,7 @@ import android.content.Context import android.os.Handler import android.os.Looper import android.os.Message +import android.util.Log import com.mogo.aicloud.services.socket.IMogoOnMessageListener import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager import com.mogo.cloud.passport.MoGoAiCloudClientConfig @@ -275,6 +276,9 @@ class VipCarManager : IMogoOnMessageListener, IMoGoTrafficLightListe ttsContent: String, tag: String ) { + if (alertContent.toString().isNullOrEmpty() || ttsContent.isNullOrEmpty()) { + Log.d("MsgBox-VipCarManager", "alertContent或ttsContent为空!") + } CallerMsgBoxManager.saveMsgBox( MsgBoxBean(MsgBoxType.V2X, V2XMsg(v2xType, alertContent.toString(), ttsContent)) ) diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/app/AppConfigInfo.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/app/AppConfigInfo.kt index 3daf32d036..1a43eab9b8 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/app/AppConfigInfo.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/app/AppConfigInfo.kt @@ -28,6 +28,8 @@ object AppConfigInfo { // 高精地图版本 var mapSdkVersion: String? = null + // 高精地图采集版本 + var mapSdkOptVersion: String? = null var adasSdkVersion: String? = null var obuSdkVersion: String? = null @@ -92,6 +94,7 @@ object AppConfigInfo { "Git分支HASH:${workingBranchHash}
" + "------------------依赖信息---------------------
" + "MAP-SDK版本:${mapSdkVersion}
" + + "MAP-OPT-SDK版本:${mapSdkOptVersion}
" + "ADAS-SDK版本:${adasSdkVersion}
" + "OBU-SDK版本:${obuSdkVersion}
" + "------------------鉴权信息---------------------
" + @@ -187,6 +190,7 @@ fun AppConfigInfo.toConfigUpload():ConfigUpload{ configUpload.isConnectSocket = isConnectSocket configUpload.isConnectedNetty = isConnectedNetty configUpload.mapSdkVersion = mapSdkVersion + configUpload.mapSdkOptVersion = mapSdkOptVersion configUpload.mogoSN = mogoSN configUpload.mogoToken = mogoToken configUpload.netMode = netMode diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/app/ConfigUpload.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/app/ConfigUpload.kt index 508e4e2e58..04870277a0 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/app/ConfigUpload.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/app/ConfigUpload.kt @@ -14,6 +14,7 @@ class ConfigUpload( var uniqueDeviceId: String? = null, var widevineIDMd5: String? = null, var mapSdkVersion: String? = null, + var mapSdkOptVersion: String? = null, var adasSdkVersion: String? = null, var obuSdkVersion: String? = null, var mogoToken: String? = null, diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/bindingcar/CarInfo.java b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/bindingcar/CarInfo.java index b4a5b2201d..e7f11b187e 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/bindingcar/CarInfo.java +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/bindingcar/CarInfo.java @@ -21,6 +21,7 @@ public class CarInfo implements Serializable { private String model; //款式 private String new_version; private String brand; //品牌 + private String brandId; //品牌 private String energy_type; //驱动类型 private List passenger; //乘客数量 private String number_plate; //车牌号 @@ -105,6 +106,14 @@ public class CarInfo implements Serializable { this.number_plate = number_plate; } + public String getBrandId() { + return brandId; + } + + public void setBrandId(String brandId) { + this.brandId = brandId; + } + @Override public String toString() { return "CarInfo{" + @@ -115,6 +124,7 @@ public class CarInfo implements Serializable { ", model='" + model + '\'' + ", new_version='" + new_version + '\'' + ", brand='" + brand + '\'' + + ", brandId='" + brandId + '\'' + ", energy_type='" + energy_type + '\'' + ", passenger=" + passenger + ", number_plate='" + number_plate + '\'' + diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/bindingcar/ModifyBindingcarInfo.java b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/bindingcar/ModifyBindingcarInfo.java index 768abc35aa..564d3bf959 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/bindingcar/ModifyBindingcarInfo.java +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/bindingcar/ModifyBindingcarInfo.java @@ -8,20 +8,61 @@ import com.mogo.eagle.core.data.BaseData; * @since: 3/16/22 */ public class ModifyBindingcarInfo extends BaseData { - public String data; - public String getData() { + private BindMsg data; + + public BindMsg getData() { return data; } - public void setData(String data) { + public void setData(BindMsg data) { this.data = data; } @Override public String toString() { return "ModifyBindingcarInfo{" + - "data='" + data + '\'' + + "data=" + data + '}'; } + + public class BindMsg { + private String result; + private String brand; //品牌 + private String brandId; + + public String getResult() { + return result; + } + + public void setResult(String result) { + this.result = result; + } + + public String getBrand() { + return brand; + } + + public void setBrand(String brand) { + this.brand = brand; + } + + public String getBrandId() { + return brandId; + } + + public void setBrandId(String brandId) { + this.brandId = brandId; + } + + @Override + public String toString() { + return "BindMsg{" + + "result='" + result + '\'' + + ", brand='" + brand + '\'' + + ", brandId='" + brandId + '\'' + + '}'; + } + + } } diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HdMapBuildConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HdMapBuildConfig.kt index cd0ac043de..e6937704fb 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HdMapBuildConfig.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HdMapBuildConfig.kt @@ -13,7 +13,7 @@ object HdMapBuildConfig { * 可以指定,R.raw.chuzuche,R.raw.xiaobache,R.raw.hongqi */ @JvmField - var currentCarVrIconRes = R.raw.chuzuche + var currentCarVrIconRes = R.raw.hq_h9 /** * 地图是否加载成功 diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HmiBuildConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HmiBuildConfig.kt index b626dab4b5..f156f8b981 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HmiBuildConfig.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HmiBuildConfig.kt @@ -98,6 +98,28 @@ object HmiBuildConfig { */ @JvmField @Volatile - var isShowObuLimitSpeedView = true + var isShowObuLimitSpeedView = false + + /** + * 是否展示obu的v2v + */ + @JvmField + @Volatile + var isShowObuV2vView = false + + /** + * 是否展示obu的v2i + */ + @JvmField + @Volatile + var isShowObuV2iView = false + + /** + * 是否展示obu通过工控机展示的v2i + */ + @JvmField + @Volatile + var isShowObuToDcV2iView = true + } \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt index 901bb2aae1..748b847aef 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt @@ -5,7 +5,8 @@ import com.mogo.eagle.core.data.config.CloudPoiManager /** - * OBU、V2N事件类型枚举类 + * OBU、V2N事件类型枚举类, 自研sdk版本的OBU + * */ enum class EventTypeEnumNew( val poiType: String, val poiTypeStr: String = "", @@ -132,110 +133,116 @@ enum class EventTypeEnumNew( // 违章停车 ALERT_ILLEGAL_PARK("99992"), - TYPE_USECASE_ID_EBW( - 6.toString(), - "紧急制动预警", - poiTypeSrcVr = R.drawable.icon_warning_v2x_emergency_brake, - content = "前车急刹车", - tts = "前车急刹车" - ), + //-------------v2n start ------------> TYPE_USECASE_ID_FCW( - 0.toString(), + 2000.toString(), "前向碰撞预警", poiTypeSrcVr = R.drawable.icon_warning_v2x_collision_warning, content = "前车碰撞预警", tts = "小心前车" ), -// TYPE_USECASE_ID_ICW( -// 1.toString(), -// "交叉路口碰撞预警", -// poiTypeSrcVr = R.drawable.icon_warning_v2x_collision_warning, -// content = "交叉路口碰撞预警", -// tts = "注意交叉路口车辆" -// ), - TYPE_USECASE_ID_AVW( - 7.toString(), - "异常车辆提醒", - poiTypeSrcVr = R.drawable.icon_warning_v2x_abnormal_vehicle, - content = "%s车异常", - tts = "小心%s异常车辆" + // TYPE_USECASE_ID_ICW( + // 1.toString(), + // "交叉路口碰撞预警", + // poiTypeSrcVr = R.drawable.icon_warning_v2x_collision_warning, + // content = "交叉路口碰撞预警", + // tts = "注意交叉路口车辆" + // ), + TYPE_USECASE_ID_LTA( + 2001.toString(), + "左转辅助", + poiTypeSrcVr = R.drawable.icon_warning_v2x_collision_warning, + content = "左转碰撞预警", + tts = "注意路口对向来车" ), TYPE_USECASE_ID_BSW( - 3.toString(), + 2002.toString(), "盲区预警", poiTypeSrcVr = R.drawable.icon_warning_v2x_blind_area_collision, content = "%s后盲区预警", tts = "注意%s后车辆" ), TYPE_USECASE_ID_LCW( - 4.toString(), + 2003.toString(), "变道预警", poiTypeSrcVr = R.drawable.icon_warning_v2x_reverse_overtaking, content = "%s向变道预警", tts = "注意%s后车辆" ),//注意左后车辆/注意右后车辆 - - TYPE_USECASE_ID_EVW( - 9.toString(), - "紧急车辆提醒", - poiTypeSrcVr = R.drawable.icon_warning_v2x_special_vehicle_access, - content = "注意特种车辆通行", - tts = "请避让特种车辆" - ), - TYPE_USECASE_ID_CLW( - 8.toString(), - "车辆失控预警", - poiTypeSrcVr = R.drawable.icon_warning_v2x_vehicle_control, - content = "前%s失控预警", - tts = "小心%s失控车辆" - ), TYPE_USECASE_ID_DNPW( - 5.toString(), + 2004.toString(), "逆向超车预警", poiTypeSrcVr = R.drawable.icon_warning_v2x_reverse_overtaking, content = "逆向超车预警", tts = "注意对向来车" ), - TYPE_USECASE_ID_ROAD_GIVE_WAY( - 0x2C11.toString(), - "减速慢行", - poiTypeSrcVr = R.drawable.icon_warning_v2x_give_way, - content = "注意路况复杂,减速慢行", - tts = "路况复杂,减速慢行" - ), - TYPE_USECASE_ID_ROAD_TURN_RIGHT_SHARP( - 0x2C03.toString(), - "前方右转急弯", - poiTypeSrcVr = R.drawable.icon_warning_v2x_turn_right_sharp, - content = "注意前方右转急弯", - tts = "前方路口右转急弯,减速慢行" - ), - TYPE_USECASE_ID_ROAD_TURN_LEFT_SHARP( - 0x2C02.toString(), - "前方左转急弯", - poiTypeSrcVr = R.drawable.icon_warning_v2x_turn_left_sharp, - content = "注意前方左转急弯", - tts = "前方路口左转急弯,减速慢行", + TYPE_USECASE_ID_EBW( + 2005.toString(), + "紧急制动预警", + poiTypeSrcVr = R.drawable.icon_warning_v2x_emergency_brake, + content = "前车急刹车", + tts = "前车急刹车" ), - TYPE_USECASE_ID_LTA( - 2.toString(), - "左转辅助", - poiTypeSrcVr = R.drawable.icon_warning_v2x_collision_warning, - content = "左转碰撞预警", - tts = "注意路口对向来车" + TYPE_USECASE_ID_AVW( + 2006.toString(), + "异常车辆提醒", + poiTypeSrcVr = R.drawable.icon_warning_v2x_abnormal_vehicle, + content = "%s车异常", + tts = "小心%s异常车辆" ), - - TYPE_USECASE_ID_TJW( //TODO - 4.toString(), - "前方拥堵提醒", - poiTypeSrcVr = R.drawable.icon_warning_v2x_congestion, - content = "前方%d米道路拥堵", - tts = "前方拥堵,减速慢行" + TYPE_USECASE_ID_CLW( + 2007.toString(), + "车辆失控预警", + poiTypeSrcVr = R.drawable.icon_warning_v2x_vehicle_control, + content = "前%s失控预警", + tts = "小心%s失控车辆" ), + TYPE_USECASE_ID_EVW( + 2008.toString(), + "紧急车辆提醒", + poiTypeSrcVr = R.drawable.icon_warning_v2x_special_vehicle_access, + content = "注意特种车辆通行", + tts = "请避让特种车辆" + ), + //-------------v2n end ------------> - TYPE_USECASE_ID_IVP( - 0x1.toString(), + + //---------弱势交通参与者 start ------> + TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES( + 1001.toString(), + "弱势交通参与者碰撞预警", + poiTypeSrcVr = R.drawable.icon_warning_v2x_motorcycle_collision, + content = "注意机动车", + tts = "注意机动车" + ), + TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES( + 1002.toString(), + "弱势交通参与者碰撞预警", + poiTypeSrcVr = R.drawable.icon_warning_v2x_motobike, + content = "注意非机动车", + tts = "注意非机动车" + ), + TYPE_USECASE_ID_VRUCW_PERSON( + 1003.toString(), + "弱势交通参与者碰撞预警", + poiTypeSrcVr = R.drawable.icon_warning_v2x_pedestrian_crossing, + content = "注意行人", + tts = "注意行人" + ), + TYPE_ERROR_WEAKNESS( + 1006.toString(), + "未知/错误/异常", + poiTypeSrcVr = R.drawable.icon_warning_v2x_abnormal_vehicle, + content = "前方有未知障碍物", + tts = "前方有未知障碍物" + ), + //---------弱势交通参与者 end --------> + + + //--------------红绿灯 start -------> TODO 修改重复 + TYPE_USECASE_ID_IVP_RED( + 1666.toString(), "闯红灯预警", poiTypeSrcVr = R.drawable.icon_warning_v2x_traffic_lights_red, content = "路口红灯,禁止通行", @@ -243,52 +250,210 @@ enum class EventTypeEnumNew( ), TYPE_USECASE_ID_IVP_GREEN( - 0x2.toString(), + 1667.toString(), "绿波通行", poiTypeSrcVr = R.drawable.icon_warning_v2x_traffic_lights_green, content = "建议车速 %s KM/H", tts = "建议车速 %s KM/H" ), + //-------------红绿灯 end ----------> - //6种智行杯的场景需添加 - TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE( - 904.toString(), - "注意逆行车辆", - poiTypeSrcVr = R.drawable.icon_warning_v2x_school, - content = "注意逆行车辆", - tts = "注意逆行车辆" + //-----------道路危险情况预警 start ---------------> + TYPE_USECASE_ID_BREAKDOWN_WARNING( //故障车辆 + 101.toString(), + "车辆故障", + poiTypeSrcVr = R.drawable.icon_warning_v2x_collision_warning, + content = "前方%s米有故障车辆,影响路段%s米", + tts = "前方%s米有故障车辆,影响路段%s米" ), - - TYPE_USECASE_ID_SLW( + TYPE_FOURS_PONDING( //积水 + 407.toString(), + "道路积水", + poiTypeSrcVr = R.drawable.v2x_icon_jishui_vr, + content = "前方%s米道路积水,影响路段%s米", + tts ="前方%s米道路积水,影响路段%s米" + ), + TYPE_USECASE_ID_ROAD_PARKING( //异常停车 + 412.toString(), + "异常停车", + poiTypeSrcVr = R.drawable.icon_warning_v2x_no_parking, + content = "前方%s米异常停车,影响路段%s米", + tts = "前方%s米异常停车,影响路段%s米" + ), + TYPE_USECASE_ID_TJW( //%d + 707.toString(), + "拥堵", + poiTypeSrcVr = R.drawable.icon_warning_v2x_congestion, + content = "前方%s米拥堵,影响路段%s米", + tts = "前方%s米拥堵,影响路段%s米" + ), + TYPE_USECASE_ID_SLW( //超速行驶 901.toString(), - "注意超速车辆", + "超速行驶", poiTypeSrcVr = R.drawable.icon_warning_v2x_over_speed, - content = "注意超速车辆", - tts = "注意超速车辆" + content = "前方%s米超速行驶,影响路段%s米", + tts = "前方%s米超速行驶,影响路段%s米" ), - - TYPE_USECASE_ID_ROAD_TRAMCAR( - 0x2C01.toString(), - "前方有轨电车提醒", - poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "注意前方有轨电车", - tts = "注意前方有轨电车驶过" + TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE( //车辆逆行 + 904.toString(), + "逆行车辆", + poiTypeSrcVr = R.drawable.icon_default, + content = "前方%s米逆行车辆,影响路段%s米", + tts = "前方%s米逆行车辆,影响路段%s米" ), + TYPE_USECASE_ID_ROAD_SPEED_LIMIT( //--> + 6666.toString(), + "超速", + poiTypeSrcVr = R.drawable.icon_warning_v2x_over_speed, + content = "您已超速,请减速行驶", + tts = "您已超速,请减速行驶" + ), + //------------道路危险情况预警 end -----------> - TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING( - 0x2C04.toString(), - "人行横道", + + //------------车内标牌 start --------------> + TYPE_ID_SHAPR_TURNS( + 2.toString(), + "急转弯", + poiTypeSrcVr = R.drawable.icon_warning_v2x_turn_left_sharp, + content = "前方%s米急转弯", + tts = "前方%s米急转弯" + ), + TYPE_ID_BRIDGE( + 8.toString(), + "桥梁", + poiTypeSrcVr = R.drawable.icon_warning_v2x_hump_bridge, + content = "前方%s米桥梁", + tts = "前方%s米桥梁" + ), + TYPE_ID_PEDESTRIAN( + 10.toString(), + "行人", poiTypeSrcVr = R.drawable.icon_warning_v2x_pedestrian_crossing, - content = "注意前方人行横道", - tts = "前方人行横道,减速慢行" + content = "前方%s米行人", + tts = "前方%s米行人" + ), + TYPE_ID_SLIPPERY_ROAD( + 17.toString(), + "路滑", + poiTypeSrcVr = R.drawable.v2x_icon_jiebing_vr, + content = "前方%s米路滑", + tts = "前方%s米路滑" + ), + TYPE_ID_TUNNEL( + 21.toString(), + "隧道", + poiTypeSrcVr = R.drawable.icon_default, + content = "前方%s米隧道", + tts = "前方%s米隧道" + ), + TYPE_ID_FERRY( + 22.toString(), + "渡轮", + poiTypeSrcVr = R.drawable.icon_default, + content = "前方%s米渡轮", + tts = "前方%s米渡轮" + ), + TYPE_ID_UNEVEN_ROAD( + 24.toString(), + "路面不平", + poiTypeSrcVr = R.drawable.icon_warning_road_hollow, + content = "前方%s米路面不平", + tts = "前方%s米路面不平" + ), + TYPE_ID_NON_MOTOR_VEHICLE( + 32.toString(), + "非机动车", + poiTypeSrcVr = R.drawable.icon_warning_v2x_motobike, + content = "前方%s米有非机动车", + tts = "前方%s米有非机动车" + ), + TYPE_ID_OBSTACLE( + 36.toString(), + "障碍", + poiTypeSrcVr = R.drawable.icon_default, + content = "前方%s米障碍", + tts = "前方%s米障碍" + ), + TYPE_FOURS_ROAD_WORK( + 38.toString(), + "施工", + poiTypeSrcVr = R.drawable.icon_warning_v2x_road_construction, + content = "前方%s米施工", + tts = "前方%s米施工" + ), + TYPE_VEHICLE_QUEUE( + 47.toString(), + "车队", + poiTypeSrcVr = R.drawable.icon_default, + content = "前方%s米车队", + tts = "前方%s米车队" + ), + TYPE_NO_PASSING( + 51.toString(), + "不通", + poiTypeSrcVr = R.drawable.v2x_icon_fenglu_vr, + content = "前方%s米不通", + tts = "前方%s米不通" + ), + TYPE_NO_TURNING_AROUND( + 75.toString(), + "禁止掉头", + poiTypeSrcVr = R.drawable.icon_default, + content = "前方%s米禁止掉头", + tts = "前方%s米禁止掉头" ), TYPE_USECASE_ID_ROAD_NO_PARKING( - 0x2C10.toString(), + 78.toString(), "禁止停车", poiTypeSrcVr = R.drawable.icon_warning_v2x_no_parking, - content = "注意当前路段禁止停车", - tts = "当前路段,禁止停车" + content = "前方%s米禁止停车", + tts = "前方%s米禁止停车" ), + TYPE_USECASE_ID_ROAD_NO_TOOTING( + 80.toString(), + "禁止鸣笛", + poiTypeSrcVr = R.drawable.icon_warning_v2x_no_tooting, + content = "前方%s米禁止鸣笛", + tts = "前方%s米禁止鸣笛" + ), + TYPE_USECASE_ID_BUS_WARNING( + 123.toString(), + "公交提醒", + poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, + content = "前方%s米公交提醒", + tts = "前方%s米公交提醒" + ), + TYPE_USECASE_ID_NARROW_RIGHT( + 163.toString(), + "右侧变窄/车道数减少", + poiTypeSrcVr = R.drawable.icon_default, + content = "前方%s米右侧变窄/车道数减少", + tts = "前方%s米右侧变窄/车道数减少" + ), + TYPE_USECASE_ID_GAS_STATION( + 201.toString(), + "加油站", + poiTypeSrcVr = R.drawable.icon_warning_gas_station, + content = "前方%s米加油站", + tts = "前方%s米加油站" + ), + TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL( + 242.toString(), + "学校", + poiTypeSrcVr = R.drawable.icon_warning_v2x_school, + content = "前方%s米学校", + tts = "前方%s米学校" + ), + TYPE_USECASE_ID_ACCIDENT( + 244.toString(), + "事故", + poiTypeSrcVr = R.drawable.v2x_icon_jiaotongshigu_vr, + content = "前方%s米事故", + tts = "前方%s米事故" + ), + //------------车内标牌 end --------------> + TYPE_ERROR( 0.toString(), @@ -640,12 +805,68 @@ enum class EventTypeEnumNew( ALERT_CAR_TROUBLE_WARNING.poiType -> { R.drawable.icon_car_red } - else -> 0 + + //闯红灯预警 + TYPE_USECASE_ID_IVP_RED.poiType -> { + R.drawable.icon_warning_v2x_traffic_lights_red + } + //绿波通行 + TYPE_USECASE_ID_IVP_GREEN.poiType -> { + R.drawable.icon_warning_v2x_traffic_lights_green + } + + //机动车 + TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.poiType -> { + R.drawable.icon_warning_v2x_motorcycle_collision + } + TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiType -> { + R.drawable.icon_warning_v2x_motobike + } + TYPE_USECASE_ID_VRUCW_PERSON.poiType -> { + R.drawable.icon_warning_v2x_pedestrian_crossing + } + TYPE_ERROR_WEAKNESS.poiType -> { + R.drawable.icon_warning_v2x_abnormal_vehicle + } + + TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiTypeSrcVr + TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.poiTypeSrcVr + TYPE_USECASE_ID_SLW.poiType -> TYPE_USECASE_ID_SLW.poiTypeSrcVr + TYPE_USECASE_ID_TJW.poiType -> TYPE_USECASE_ID_TJW.poiTypeSrcVr + TYPE_USECASE_ID_BREAKDOWN_WARNING.poiType -> TYPE_USECASE_ID_BREAKDOWN_WARNING.poiTypeSrcVr + FOURS_PONDING.poiType -> FOURS_PONDING.poiTypeSrcVr + TYPE_USECASE_ID_ROAD_PARKING.poiType -> TYPE_USECASE_ID_ROAD_PARKING.poiTypeSrcVr + TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.poiType -> TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.poiTypeSrcVr + TYPE_ID_SHAPR_TURNS.poiType -> TYPE_ID_SHAPR_TURNS.poiTypeSrcVr + TYPE_ID_BRIDGE.poiType -> TYPE_ID_BRIDGE.poiTypeSrcVr + TYPE_ID_PEDESTRIAN.poiType -> TYPE_ID_PEDESTRIAN.poiTypeSrcVr + TYPE_ID_SLIPPERY_ROAD.poiType -> TYPE_ID_SLIPPERY_ROAD.poiTypeSrcVr + TYPE_ID_TUNNEL.poiType -> TYPE_ID_TUNNEL.poiTypeSrcVr + TYPE_ID_FERRY.poiType -> TYPE_ID_FERRY.poiTypeSrcVr + TYPE_ID_UNEVEN_ROAD.poiType -> TYPE_ID_UNEVEN_ROAD.poiTypeSrcVr + TYPE_ID_NON_MOTOR_VEHICLE.poiType -> TYPE_ID_NON_MOTOR_VEHICLE.poiTypeSrcVr + TYPE_ID_OBSTACLE.poiType -> TYPE_ID_OBSTACLE.poiTypeSrcVr + TYPE_FOURS_ROAD_WORK.poiType -> TYPE_FOURS_ROAD_WORK.poiTypeSrcVr + TYPE_VEHICLE_QUEUE.poiType -> TYPE_VEHICLE_QUEUE.poiTypeSrcVr + TYPE_NO_PASSING.poiType -> TYPE_NO_PASSING.poiTypeSrcVr + TYPE_NO_TURNING_AROUND.poiType -> TYPE_NO_TURNING_AROUND.poiTypeSrcVr + TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.poiTypeSrcVr + TYPE_USECASE_ID_ROAD_NO_TOOTING.poiType -> TYPE_USECASE_ID_ROAD_NO_TOOTING.poiTypeSrcVr + TYPE_USECASE_ID_ROAD_SPEED_LIMIT.poiType -> TYPE_USECASE_ID_ROAD_SPEED_LIMIT.poiTypeSrcVr + TYPE_USECASE_ID_BUS_WARNING.poiType -> TYPE_USECASE_ID_BUS_WARNING.poiTypeSrcVr + TYPE_USECASE_ID_NARROW_RIGHT.poiType -> TYPE_USECASE_ID_NARROW_RIGHT.poiTypeSrcVr + TYPE_USECASE_ID_GAS_STATION.poiType -> TYPE_USECASE_ID_GAS_STATION.poiTypeSrcVr + TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiTypeSrcVr + TYPE_USECASE_ID_ACCIDENT.poiType -> TYPE_USECASE_ID_ACCIDENT.poiTypeSrcVr + + else -> { + R.drawable.icon_default + } } } - //===================告警类事件=================== + //===================告警类事件=================== @JvmStatic fun getWarningIcon(poiType: String?): Int { return when (poiType) { @@ -658,22 +879,51 @@ enum class EventTypeEnumNew( TYPE_USECASE_ID_BSW.poiType -> TYPE_USECASE_ID_BSW.poiTypeSrcVr TYPE_USECASE_ID_LCW.poiType -> TYPE_USECASE_ID_LCW.poiTypeSrcVr TYPE_USECASE_ID_EVW.poiType -> TYPE_USECASE_ID_EVW.poiTypeSrcVr - TYPE_USECASE_ID_SLW.poiType -> TYPE_USECASE_ID_SLW.poiTypeSrcVr TYPE_USECASE_ID_LTA.poiType -> TYPE_USECASE_ID_LTA.poiTypeSrcVr - TYPE_USECASE_ID_TJW.poiType -> TYPE_USECASE_ID_TJW.poiTypeSrcVr - TYPE_USECASE_ID_IVP.poiType -> TYPE_USECASE_ID_IVP.poiTypeSrcVr - TYPE_USECASE_ID_IVP_GREEN.poiType -> TYPE_USECASE_ID_IVP_GREEN.poiTypeSrcVr - TYPE_USECASE_ID_ROAD_TRAMCAR.poiType -> TYPE_USECASE_ID_ROAD_TRAMCAR.poiTypeSrcVr - TYPE_USECASE_ID_ROAD_TURN_LEFT_SHARP.poiType -> TYPE_USECASE_ID_ROAD_TURN_LEFT_SHARP.poiTypeSrcVr - TYPE_USECASE_ID_ROAD_TURN_RIGHT_SHARP.poiType -> TYPE_USECASE_ID_ROAD_TURN_RIGHT_SHARP.poiTypeSrcVr - TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING.poiTypeSrcVr - TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.poiTypeSrcVr - TYPE_USECASE_ID_ROAD_GIVE_WAY.poiType -> TYPE_USECASE_ID_ROAD_GIVE_WAY.poiTypeSrcVr TYPE_VIP_IDENTIFICATION.poiType -> TYPE_VIP_IDENTIFICATION.poiTypeSrcVr TYPE_ERROR.poiType -> TYPE_ERROR.poiTypeSrcVr TYPE_OPTIMAL_ROUTE_RECOMMEND.poiType -> TYPE_OPTIMAL_ROUTE_RECOMMEND.poiTypeSrcVr GHOST_PROBE.poiType -> GHOST_PROBE.poiTypeSrcVr AI_ROAD_WORK.poiType -> AI_ROAD_WORK.poiTypeSrcVr + + TYPE_USECASE_ID_IVP_RED.poiType -> TYPE_USECASE_ID_IVP_RED.poiTypeSrcVr + TYPE_USECASE_ID_IVP_GREEN.poiType -> TYPE_USECASE_ID_IVP_GREEN.poiTypeSrcVr + + TYPE_USECASE_ID_VRUCW_PERSON.poiType -> TYPE_USECASE_ID_VRUCW_PERSON.poiTypeSrcVr + TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiType -> TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiTypeSrcVr + TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiType -> TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiTypeSrcVr + TYPE_ERROR_WEAKNESS.poiType -> TYPE_ERROR_WEAKNESS.poiTypeSrcVr + + TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiTypeSrcVr + TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.poiTypeSrcVr + TYPE_USECASE_ID_SLW.poiType -> TYPE_USECASE_ID_SLW.poiTypeSrcVr + TYPE_USECASE_ID_TJW.poiType -> TYPE_USECASE_ID_TJW.poiTypeSrcVr + TYPE_USECASE_ID_BREAKDOWN_WARNING.poiType -> TYPE_USECASE_ID_BREAKDOWN_WARNING.poiTypeSrcVr + FOURS_PONDING.poiType -> FOURS_PONDING.poiTypeSrcVr + TYPE_USECASE_ID_ROAD_PARKING.poiType -> TYPE_USECASE_ID_ROAD_PARKING.poiTypeSrcVr + TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.poiType -> TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.poiTypeSrcVr + TYPE_ID_SHAPR_TURNS.poiType -> TYPE_ID_SHAPR_TURNS.poiTypeSrcVr + TYPE_ID_BRIDGE.poiType -> TYPE_ID_BRIDGE.poiTypeSrcVr + TYPE_ID_PEDESTRIAN.poiType -> TYPE_ID_PEDESTRIAN.poiTypeSrcVr + TYPE_ID_SLIPPERY_ROAD.poiType -> TYPE_ID_SLIPPERY_ROAD.poiTypeSrcVr + TYPE_ID_TUNNEL.poiType -> TYPE_ID_TUNNEL.poiTypeSrcVr + TYPE_ID_FERRY.poiType -> TYPE_ID_FERRY.poiTypeSrcVr + TYPE_ID_UNEVEN_ROAD.poiType -> TYPE_ID_UNEVEN_ROAD.poiTypeSrcVr + TYPE_ID_NON_MOTOR_VEHICLE.poiType -> TYPE_ID_NON_MOTOR_VEHICLE.poiTypeSrcVr + TYPE_ID_OBSTACLE.poiType -> TYPE_ID_OBSTACLE.poiTypeSrcVr + TYPE_FOURS_ROAD_WORK.poiType -> TYPE_FOURS_ROAD_WORK.poiTypeSrcVr + TYPE_VEHICLE_QUEUE.poiType -> TYPE_VEHICLE_QUEUE.poiTypeSrcVr + TYPE_NO_PASSING.poiType -> TYPE_NO_PASSING.poiTypeSrcVr + TYPE_NO_TURNING_AROUND.poiType -> TYPE_NO_TURNING_AROUND.poiTypeSrcVr + TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.poiTypeSrcVr + TYPE_USECASE_ID_ROAD_NO_TOOTING.poiType -> TYPE_USECASE_ID_ROAD_NO_TOOTING.poiTypeSrcVr + TYPE_USECASE_ID_ROAD_SPEED_LIMIT.poiType -> TYPE_USECASE_ID_ROAD_SPEED_LIMIT.poiTypeSrcVr + TYPE_USECASE_ID_BUS_WARNING.poiType -> TYPE_USECASE_ID_BUS_WARNING.poiTypeSrcVr + TYPE_USECASE_ID_NARROW_RIGHT.poiType -> TYPE_USECASE_ID_NARROW_RIGHT.poiTypeSrcVr + TYPE_USECASE_ID_GAS_STATION.poiType -> TYPE_USECASE_ID_GAS_STATION.poiTypeSrcVr + TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiTypeSrcVr + TYPE_USECASE_ID_ACCIDENT.poiType -> TYPE_USECASE_ID_ACCIDENT.poiTypeSrcVr + else -> TYPE_ERROR.poiTypeSrcVr } } @@ -690,23 +940,53 @@ enum class EventTypeEnumNew( TYPE_USECASE_ID_BSW.poiType -> TYPE_USECASE_ID_BSW.content TYPE_USECASE_ID_LCW.poiType -> TYPE_USECASE_ID_LCW.content TYPE_USECASE_ID_EVW.poiType -> TYPE_USECASE_ID_EVW.content - TYPE_USECASE_ID_SLW.poiType -> TYPE_USECASE_ID_SLW.content TYPE_USECASE_ID_LTA.poiType -> TYPE_USECASE_ID_LTA.content - TYPE_USECASE_ID_TJW.poiType -> TYPE_USECASE_ID_TJW.content - TYPE_USECASE_ID_IVP.poiType -> TYPE_USECASE_ID_IVP.content - TYPE_USECASE_ID_IVP_GREEN.poiType -> TYPE_USECASE_ID_IVP_GREEN.content - TYPE_USECASE_ID_ROAD_TRAMCAR.poiType -> TYPE_USECASE_ID_ROAD_TRAMCAR.content - TYPE_USECASE_ID_ROAD_TURN_LEFT_SHARP.poiType -> TYPE_USECASE_ID_ROAD_TURN_LEFT_SHARP.content - TYPE_USECASE_ID_ROAD_TURN_RIGHT_SHARP.poiType -> TYPE_USECASE_ID_ROAD_TURN_RIGHT_SHARP.content - TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING.content - TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.content - TYPE_USECASE_ID_ROAD_GIVE_WAY.poiType -> TYPE_USECASE_ID_ROAD_GIVE_WAY.content TYPE_VIP_IDENTIFICATION.poiType -> TYPE_VIP_IDENTIFICATION.content FOURS_ROAD_WORK.poiType -> FOURS_ROAD_WORK.content AI_ROAD_WORK.poiType -> AI_ROAD_WORK.content TYPE_ERROR.poiType -> TYPE_ERROR.content TYPE_OPTIMAL_ROUTE_RECOMMEND.poiType -> TYPE_OPTIMAL_ROUTE_RECOMMEND.content GHOST_PROBE.poiType -> GHOST_PROBE.content + + TYPE_USECASE_ID_IVP_RED.poiType -> TYPE_USECASE_ID_IVP_RED.content + TYPE_USECASE_ID_IVP_GREEN.poiType -> TYPE_USECASE_ID_IVP_GREEN.content + + TYPE_USECASE_ID_VRUCW_PERSON.poiType -> TYPE_USECASE_ID_VRUCW_PERSON.content + TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.poiType -> TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.content + TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiType -> TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.content + TYPE_ERROR_WEAKNESS.poiType -> TYPE_ERROR_WEAKNESS.content + + TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.content + TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.content + TYPE_FOURS_ROAD_WORK.poiType -> TYPE_FOURS_ROAD_WORK.content + TYPE_USECASE_ID_SLW.poiType -> TYPE_USECASE_ID_SLW.content + TYPE_USECASE_ID_TJW.poiType -> TYPE_USECASE_ID_TJW.content + TYPE_USECASE_ID_BREAKDOWN_WARNING.poiType -> TYPE_USECASE_ID_BREAKDOWN_WARNING.content + FOURS_PONDING.poiType -> FOURS_PONDING.content + TYPE_USECASE_ID_ROAD_PARKING.poiType -> TYPE_USECASE_ID_ROAD_PARKING.content + TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.poiType -> TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.content + TYPE_ID_SHAPR_TURNS.poiType -> TYPE_ID_SHAPR_TURNS.content + TYPE_ID_BRIDGE.poiType -> TYPE_ID_BRIDGE.content + TYPE_ID_PEDESTRIAN.poiType -> TYPE_ID_PEDESTRIAN.content + TYPE_ID_SLIPPERY_ROAD.poiType -> TYPE_ID_SLIPPERY_ROAD.content + TYPE_ID_TUNNEL.poiType -> TYPE_ID_TUNNEL.content + TYPE_ID_FERRY.poiType -> TYPE_ID_FERRY.content + TYPE_ID_UNEVEN_ROAD.poiType -> TYPE_ID_UNEVEN_ROAD.content + TYPE_ID_NON_MOTOR_VEHICLE.poiType -> TYPE_ID_NON_MOTOR_VEHICLE.content + TYPE_ID_OBSTACLE.poiType -> TYPE_ID_OBSTACLE.content + TYPE_FOURS_ROAD_WORK.poiType -> TYPE_FOURS_ROAD_WORK.content + TYPE_VEHICLE_QUEUE.poiType -> TYPE_VEHICLE_QUEUE.content + TYPE_NO_PASSING.poiType -> TYPE_NO_PASSING.content + TYPE_NO_TURNING_AROUND.poiType -> TYPE_NO_TURNING_AROUND.content + TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.content + TYPE_USECASE_ID_ROAD_NO_TOOTING.poiType -> TYPE_USECASE_ID_ROAD_NO_TOOTING.content + TYPE_USECASE_ID_ROAD_SPEED_LIMIT.poiType -> TYPE_USECASE_ID_ROAD_SPEED_LIMIT.content + TYPE_USECASE_ID_BUS_WARNING.poiType -> TYPE_USECASE_ID_BUS_WARNING.content + TYPE_USECASE_ID_NARROW_RIGHT.poiType -> TYPE_USECASE_ID_NARROW_RIGHT.content + TYPE_USECASE_ID_GAS_STATION.poiType -> TYPE_USECASE_ID_GAS_STATION.content + TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.content + TYPE_USECASE_ID_ACCIDENT.poiType -> TYPE_USECASE_ID_ACCIDENT.content + else -> TYPE_ERROR.content } } @@ -723,23 +1003,53 @@ enum class EventTypeEnumNew( TYPE_USECASE_ID_BSW.poiType -> TYPE_USECASE_ID_BSW.tts TYPE_USECASE_ID_LCW.poiType -> TYPE_USECASE_ID_LCW.tts TYPE_USECASE_ID_EVW.poiType -> TYPE_USECASE_ID_EVW.tts - TYPE_USECASE_ID_SLW.poiType -> TYPE_USECASE_ID_SLW.tts TYPE_USECASE_ID_LTA.poiType -> TYPE_USECASE_ID_LTA.tts - TYPE_USECASE_ID_TJW.poiType -> TYPE_USECASE_ID_TJW.tts - TYPE_USECASE_ID_IVP.poiType -> TYPE_USECASE_ID_IVP.tts - TYPE_USECASE_ID_IVP_GREEN.poiType -> TYPE_USECASE_ID_IVP_GREEN.tts - TYPE_USECASE_ID_ROAD_TRAMCAR.poiType -> TYPE_USECASE_ID_ROAD_TRAMCAR.tts - TYPE_USECASE_ID_ROAD_TURN_LEFT_SHARP.poiType -> TYPE_USECASE_ID_ROAD_TURN_LEFT_SHARP.tts - TYPE_USECASE_ID_ROAD_TURN_RIGHT_SHARP.poiType -> TYPE_USECASE_ID_ROAD_TURN_RIGHT_SHARP.tts - TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING.tts - TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.tts - TYPE_USECASE_ID_ROAD_GIVE_WAY.poiType -> TYPE_USECASE_ID_ROAD_GIVE_WAY.tts TYPE_VIP_IDENTIFICATION.poiType -> TYPE_VIP_IDENTIFICATION.tts FOURS_ROAD_WORK.poiType -> FOURS_ROAD_WORK.tts AI_ROAD_WORK.poiType -> AI_ROAD_WORK.tts TYPE_ERROR.poiType -> TYPE_ERROR.tts TYPE_OPTIMAL_ROUTE_RECOMMEND.poiType -> TYPE_OPTIMAL_ROUTE_RECOMMEND.tts GHOST_PROBE.poiType -> GHOST_PROBE.tts + + TYPE_USECASE_ID_IVP_RED.poiType -> TYPE_USECASE_ID_IVP_RED.tts + TYPE_USECASE_ID_IVP_GREEN.poiType -> TYPE_USECASE_ID_IVP_GREEN.tts + + TYPE_USECASE_ID_VRUCW_PERSON.poiType -> TYPE_USECASE_ID_VRUCW_PERSON.tts + TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.poiType -> TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.tts + TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiType -> TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.tts + TYPE_ERROR_WEAKNESS.poiType -> TYPE_ERROR_WEAKNESS.tts + + TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.tts + TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.tts + TYPE_FOURS_ROAD_WORK.poiType -> TYPE_FOURS_ROAD_WORK.tts + TYPE_USECASE_ID_SLW.poiType -> TYPE_USECASE_ID_SLW.tts + TYPE_USECASE_ID_TJW.poiType -> TYPE_USECASE_ID_TJW.tts + TYPE_USECASE_ID_BREAKDOWN_WARNING.poiType -> TYPE_USECASE_ID_BREAKDOWN_WARNING.tts + FOURS_PONDING.poiType -> FOURS_PONDING.tts + TYPE_USECASE_ID_ROAD_PARKING.poiType -> TYPE_USECASE_ID_ROAD_PARKING.tts + TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.poiType -> TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.tts + TYPE_ID_SHAPR_TURNS.poiType -> TYPE_ID_SHAPR_TURNS.tts + TYPE_ID_BRIDGE.poiType -> TYPE_ID_BRIDGE.tts + TYPE_ID_PEDESTRIAN.poiType -> TYPE_ID_PEDESTRIAN.tts + TYPE_ID_SLIPPERY_ROAD.poiType -> TYPE_ID_SLIPPERY_ROAD.tts + TYPE_ID_TUNNEL.poiType -> TYPE_ID_TUNNEL.tts + TYPE_ID_FERRY.poiType -> TYPE_ID_FERRY.tts + TYPE_ID_UNEVEN_ROAD.poiType -> TYPE_ID_UNEVEN_ROAD.tts + TYPE_ID_NON_MOTOR_VEHICLE.poiType -> TYPE_ID_NON_MOTOR_VEHICLE.tts + TYPE_ID_OBSTACLE.poiType -> TYPE_ID_OBSTACLE.tts + TYPE_FOURS_ROAD_WORK.poiType -> TYPE_FOURS_ROAD_WORK.tts + TYPE_VEHICLE_QUEUE.poiType -> TYPE_VEHICLE_QUEUE.tts + TYPE_NO_PASSING.poiType -> TYPE_NO_PASSING.tts + TYPE_NO_TURNING_AROUND.poiType -> TYPE_NO_TURNING_AROUND.tts + TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.tts + TYPE_USECASE_ID_ROAD_NO_TOOTING.poiType -> TYPE_USECASE_ID_ROAD_NO_TOOTING.tts + TYPE_USECASE_ID_ROAD_SPEED_LIMIT.poiType -> TYPE_USECASE_ID_ROAD_SPEED_LIMIT.tts + TYPE_USECASE_ID_BUS_WARNING.poiType -> TYPE_USECASE_ID_BUS_WARNING.tts + TYPE_USECASE_ID_NARROW_RIGHT.poiType -> TYPE_USECASE_ID_NARROW_RIGHT.tts + TYPE_USECASE_ID_GAS_STATION.poiType -> TYPE_USECASE_ID_GAS_STATION.tts + TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.tts + TYPE_USECASE_ID_ACCIDENT.poiType -> TYPE_USECASE_ID_ACCIDENT.tts + else -> TYPE_ERROR.tts } } diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumTrafficLight.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumTrafficLight.kt deleted file mode 100644 index 4b3af24b5d..0000000000 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumTrafficLight.kt +++ /dev/null @@ -1,71 +0,0 @@ -package com.mogo.eagle.core.data.enums - -import com.mogo.eagle.core.data.R - - -/** - * 交通信号灯 - */ -enum class EventTypeEnumTrafficLight( - val poiType: String, val poiTypeStr: String = "", - val poiTypeStrVr: String = "", - val poiTypeSrcVr: Int = R.drawable.v2x_icon_live_logo, - val content: String = "", val tts: String = "" -) { - - TYPE_USECASE_ID_IVP_RED( - 0x1.toString(), - "闯红灯预警", - poiTypeSrcVr = R.drawable.icon_warning_v2x_traffic_lights_red, - content = "路口红灯,禁止通行", - tts = "路口红灯,禁止通行" - ), - TYPE_USECASE_ID_IVP_GREEN( - 0x2.toString(), - "绿波通行", - poiTypeSrcVr = R.drawable.icon_warning_v2x_traffic_lights_green, - content = "建议车速 %s KM/H", - tts = "建议车速 %s KM/H" - ), - - TYPE_ERROR( - 0.toString(), - "未知/错误/异常", - poiTypeSrcVr = R.drawable.icon_warning_v2x_abnormal_vehicle, - content = "", - tts = "" - ); - - - companion object { - @JvmStatic - fun getWarningIcon(poiType: String?): Int { - return when (poiType) { - TYPE_USECASE_ID_IVP_RED.poiType -> TYPE_USECASE_ID_IVP_RED.poiTypeSrcVr - TYPE_USECASE_ID_IVP_GREEN.poiType -> TYPE_USECASE_ID_IVP_GREEN.poiTypeSrcVr - - else -> TYPE_ERROR.poiTypeSrcVr - } - } - - @JvmStatic - fun getWarningContent(poiType: String?): String { - return when (poiType) { - TYPE_USECASE_ID_IVP_RED.poiType -> TYPE_USECASE_ID_IVP_RED.content - TYPE_USECASE_ID_IVP_GREEN.poiType -> TYPE_USECASE_ID_IVP_GREEN.content - - else -> TYPE_ERROR.content - } - } - - @JvmStatic - fun getWarningTts(poiType: String?): String { - return when (poiType) { - TYPE_USECASE_ID_IVP_RED.poiType -> TYPE_USECASE_ID_IVP_RED.tts - TYPE_USECASE_ID_IVP_GREEN.poiType -> TYPE_USECASE_ID_IVP_GREEN.tts - else -> TYPE_ERROR.tts - } - } - } - -} \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumWeaknessTraffic.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumWeaknessTraffic.kt deleted file mode 100644 index 8ca4806dc1..0000000000 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumWeaknessTraffic.kt +++ /dev/null @@ -1,80 +0,0 @@ -package com.mogo.eagle.core.data.enums - -import com.mogo.eagle.core.data.R - - -/** - * 弱势交通分类 - */ -enum class EventTypeEnumWeaknessTraffic( - val poiType: String, val poiTypeStr: String = "", - val poiTypeStrVr: String = "", - val poiTypeSrcVr: Int = R.drawable.v2x_icon_live_logo, - val content: String = "", val tts: String = "" -) { - - TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES( - 1.toString(), - "弱势交通参与者碰撞预警", - poiTypeSrcVr = R.drawable.icon_warning_v2x_motorcycle_collision, - content = "注意机动车", - tts = "注意机动车" - ), - TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES( - 2.toString(), - "弱势交通参与者碰撞预警", - poiTypeSrcVr = R.drawable.icon_warning_v2x_motobike, - content = "注意非机动车", - tts = "注意非机动车" - ), - TYPE_USECASE_ID_VRUCW_PERSON( - 3.toString(), - "弱势交通参与者碰撞预警", - poiTypeSrcVr = R.drawable.icon_warning_v2x_pedestrian_crossing, - content = "注意行人", - tts = "注意行人" - ), - - TYPE_ERROR( - 0.toString(), - "未知/错误/异常", - poiTypeSrcVr = R.drawable.icon_warning_v2x_abnormal_vehicle, - content = "前方有未知障碍物", - tts = "前方有未知障碍物" - ); - - - companion object { - @JvmStatic - fun getWarningIcon(poiType: String?): Int { - return when (poiType) { - TYPE_USECASE_ID_VRUCW_PERSON.poiType -> TYPE_USECASE_ID_VRUCW_PERSON.poiTypeSrcVr - TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiType -> TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiTypeSrcVr - TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiType -> TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiTypeSrcVr - - else -> TYPE_ERROR.poiTypeSrcVr - } - } - - @JvmStatic - fun getWarningContent(poiType: String?): String { - return when (poiType) { - TYPE_USECASE_ID_VRUCW_PERSON.poiType -> TYPE_USECASE_ID_VRUCW_PERSON.content - TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.poiType -> TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.content - TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiType -> TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.content - else -> TYPE_ERROR.content - } - } - - @JvmStatic - fun getWarningTts(poiType: String?): String { - return when (poiType) { - TYPE_USECASE_ID_VRUCW_PERSON.poiType -> TYPE_USECASE_ID_VRUCW_PERSON.tts - TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.poiType -> TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.tts - TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.poiType -> TYPE_USECASE_ID_VRUCW_NOT_MOTOR_VEHICLES.tts - else -> TYPE_ERROR.tts - } - } - } - -} \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/V2iEventTypeEnum.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/V2iEventTypeEnum.kt deleted file mode 100644 index a08eb1494d..0000000000 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/V2iEventTypeEnum.kt +++ /dev/null @@ -1,410 +0,0 @@ -package com.mogo.eagle.core.data.enums - -import com.mogo.eagle.core.data.R - -/** - * OBU、V2i事件类型枚举类 - */ -enum class V2iEventTypeEnum( - val poiType: String, val poiTypeStr: String = "", - val poiTypeStrVr: String = "", - val poiTypeSrcVr: Int = R.drawable.v2x_icon_live_logo, - val content: String = "", val tts: String = "" -) { - - //-----------道路危险情况预警 start ---------------> - TYPE_USECASE_ID_BREAKDOWN_WARNING( //故障车辆 - 101.toString(), - "车辆故障", - poiTypeSrcVr = R.drawable.icon_warning_v2x_collision_warning, - content = "前方%s米有故障车辆,影响路段%s米", - tts = "前方%s米有故障车辆,影响路段%s米" - ), - FOURS_PONDING( //积水 - 407.toString(), - "道路积水", - poiTypeSrcVr = R.drawable.v2x_icon_jishui_vr, - content = "前方%s米道路积水,影响路段%s米", - tts ="前方%s米道路积水,影响路段%s米" - ), - TYPE_USECASE_ID_ROAD_PARKING( //异常停车 - 412.toString(), - "异常停车", - poiTypeSrcVr = R.drawable.icon_warning_v2x_no_parking, - content = "前方%s米异常停车,影响路段%s米", - tts = "前方%s米异常停车,影响路段%s米" - ), - TYPE_USECASE_ID_TJW( //%d - 707.toString(), - "拥堵", - poiTypeSrcVr = R.drawable.icon_warning_v2x_congestion, - content = "前方%s米拥堵,影响路段%s米", - tts = "前方%s米拥堵,影响路段%s米" - ), - TYPE_USECASE_ID_SLW( //超速行驶 - 901.toString(), - "超速行驶", - poiTypeSrcVr = R.drawable.icon_warning_v2x_over_speed, - content = "前方%s米超速行驶,影响路段%s米", - tts = "前方%s米超速行驶,影响路段%s米" - ), - TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE( //车辆逆行 - 904.toString(), - "逆行车辆", - poiTypeSrcVr = R.drawable.icon_warning_v2x_school, - content = "前方%s米逆行车辆,影响路段%s米", - tts = "前方%s米逆行车辆,影响路段%s米" - ), - TYPE_USECASE_ID_ROAD_SPEED_LIMIT( - 1.toString(), - "超速", - poiTypeSrcVr = R.drawable.icon_warning_v2x_over_speed, - content = "您已超速,请减速行驶", - tts = "您已超速,请减速行驶" - ), - - //------------道路危险情况预警 end -----------> - - //------------车内标牌 start --------------> -// TYPE_ID_NTERSECTION( -// 1.toString(), -// "十字路口", -// poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, -// content = "前方%s米十字路口,影响路段%s米", -// tts = "前方%s米十字路口,影响路段%s米" -// ), - TYPE_ID_SHAPR_TURNS( - 2.toString(), - "急转弯", - poiTypeSrcVr = R.drawable.icon_warning_v2x_turn_left_sharp, - content = "前方%s米急转弯", - tts = "前方%s米急转弯" - ), - TYPE_ID_BRIDGE( - 8.toString(), - "桥梁", - poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "前方%s米桥梁", - tts = "前方%s米桥梁" - ), - TYPE_ID_PEDESTRIAN( - 10.toString(), - "行人", - poiTypeSrcVr = R.drawable.icon_warning_v2x_pedestrian_crossing, - content = "前方%s米行人", - tts = "前方%s米行人" - ), - TYPE_ID_SLIPPERY_ROAD( - 17.toString(), - "路滑", - poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "前方%s米路滑", - tts = "前方%s米路滑" - ), - TYPE_ID_TUNNEL( - 21.toString(), - "隧道", - poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "前方%s米隧道", - tts = "前方%s米隧道" - ), - TYPE_ID_FERRY( - 22.toString(), - "渡轮", - poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "前方%s米渡轮", - tts = "前方%s米渡轮" - ), - TYPE_ID_UNEVEN_ROAD( - 24.toString(), - "路面不平", - poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "前方%s米路面不平", - tts = "前方%s米路面不平" - ), - TYPE_ID_NON_MOTOR_VEHICLE( - 32.toString(), - "非机动车", - poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "前方%s米有非机动车", - tts = "前方%s米有非机动车" - ), - TYPE_ID_OBSTACLE( - 36.toString(), - "障碍", - poiTypeSrcVr = R.drawable.icon_warning_v2x_tramcar, - content = "前方%s米障碍", - tts = "前方%s米障碍" - ), - TYPE_FOURS_ROAD_WORK( - 38.toString(), - "施工", - poiTypeSrcVr = R.drawable.icon_warning_v2x_road_construction, - content = "前方%s米施工", - tts = "前方%s米施工" - ), - TYPE_VEHICLE_QUEUE( - 47.toString(), - "车队", - poiTypeSrcVr = R.drawable.icon_warning_v2x_road_construction, - content = "前方%s米车队", - tts = "前方%s米车队" - ), - TYPE_NO_PASSING( - 51.toString(), - "不通", - poiTypeSrcVr = R.drawable.icon_warning_v2x_road_construction, - content = "前方%s米不通", - tts = "前方%s米不通" - ), - TYPE_NO_TURNING_AROUND( - 75.toString(), - "禁止掉头", - poiTypeSrcVr = R.drawable.icon_warning_v2x_road_construction, - content = "前方%s米禁止掉头", - tts = "前方%s米禁止掉头" - ), - TYPE_USECASE_ID_ROAD_NO_PARKING( - 78.toString(), - "禁止停车", - poiTypeSrcVr = R.drawable.icon_warning_v2x_no_parking, - content = "前方%s米禁止停车", - tts = "前方%s米禁止停车" - ), - TYPE_USECASE_ID_ROAD_NO_TOOTING( - 80.toString(), - "禁止鸣笛", - poiTypeSrcVr = R.drawable.icon_warning_v2x_no_parking, - content = "前方%s米禁止鸣笛", - tts = "前方%s米禁止鸣笛" - ), - -// TYPE_USECASE_ID_GO_STRAIGHT_TURN_RIGHT( -// 100.toString(), -// "直行或右转", -// poiTypeSrcVr = R.drawable.icon_warning_v2x_no_parking, -// content = "前方%s米直行或右转", -// tts = "前方%s米直行或右转" -// ), - TYPE_USECASE_ID_BUS_WARNING( - 123.toString(), - "公交提醒", - poiTypeSrcVr = R.drawable.icon_warning_v2x_no_parking, - content = "前方%s米公交提醒", - tts = "前方%s米公交提醒" - ), - TYPE_USECASE_ID_NARROW_RIGHT( - 163.toString(), - "右侧变窄/车道数减少", - poiTypeSrcVr = R.drawable.icon_warning_v2x_no_parking, - content = "前方%s米右侧变窄/车道数减少", - tts = "前方%s米右侧变窄/车道数减少" - ), - TYPE_USECASE_ID_GAS_STATION( - 201.toString(), - "加油站", - poiTypeSrcVr = R.drawable.icon_warning_v2x_no_parking, - content = "前方%s米加油站", - tts = "前方%s米加油站" - ), - TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL( - 242.toString(), - "学校", - poiTypeSrcVr = R.drawable.icon_warning_v2x_school, - content = "前方%s米学校", - tts = "前方%s米学校" - ), - - TYPE_USECASE_ID_ACCIDENT( - 244.toString(), - "事故", - poiTypeSrcVr = R.drawable.icon_warning_v2x_school, - content = "前方%s米事故", - tts = "前方%s米事故" - ), - - //------------车内标牌 end --------------> - - TYPE_USECASE_ID_IVP( - 0x2.toString(), - "闯红灯预警", - poiTypeSrcVr = R.drawable.icon_warning_v2x_traffic_lights_red, - content = "路口红灯,禁止通行", - tts = "路口红灯,禁止通行" - ), - TYPE_USECASE_ID_IVP_GREEN( - 0x2B091.toString(), - "绿波通行", - poiTypeSrcVr = R.drawable.icon_warning_v2x_traffic_lights_green, - content = "建议车速 %s KM/H", - tts = "建议车速 %s KM/H" - ), - - TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING( - 0x2C04.toString(), - "人行横道", - poiTypeSrcVr = R.drawable.icon_warning_v2x_pedestrian_crossing, - content = "注意前方人行横道", - tts = "前方人行横道,减速慢行" - ), - - TYPE_ERROR( - 0.toString(), - "未知/错误/异常", - poiTypeSrcVr = R.drawable.icon_warning_v2x_abnormal_vehicle, - content = "", - tts = "" - ), - - TYPE_VIP_IDENTIFICATION("10022", "", "", R.drawable.icon_warning_v2x_vip_turn_light, "VIP车辆优先通行", "已为您变灯,请优先通行"), - TYPE_OPTIMAL_ROUTE_RECOMMEND("2000", "", "", R.drawable.icon_warning_v2x_optimal_route, "为您推荐最优路线", "已为您选择最优路线"); - - - companion object { - //===================告警类事件=================== - - @JvmStatic - fun getTts(poiType: String?): String { - return when (poiType) { - TYPE_FOURS_ROAD_WORK.poiType -> TYPE_FOURS_ROAD_WORK.tts - else -> "道路事件" - } - } - - @JvmStatic - fun getWarningIcon(poiType: String?): Int { - return when (poiType) { - TYPE_USECASE_ID_SLW.poiType -> TYPE_USECASE_ID_SLW.poiTypeSrcVr - TYPE_USECASE_ID_TJW.poiType -> TYPE_USECASE_ID_TJW.poiTypeSrcVr - TYPE_USECASE_ID_IVP.poiType -> TYPE_USECASE_ID_IVP.poiTypeSrcVr - TYPE_USECASE_ID_IVP_GREEN.poiType -> TYPE_USECASE_ID_IVP_GREEN.poiTypeSrcVr - TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING.poiTypeSrcVr - TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiTypeSrcVr - TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.poiTypeSrcVr - TYPE_VIP_IDENTIFICATION.poiType -> TYPE_VIP_IDENTIFICATION.poiTypeSrcVr - TYPE_ERROR.poiType -> TYPE_ERROR.poiTypeSrcVr - TYPE_OPTIMAL_ROUTE_RECOMMEND.poiType -> TYPE_OPTIMAL_ROUTE_RECOMMEND.poiTypeSrcVr - TYPE_USECASE_ID_BREAKDOWN_WARNING.poiType -> TYPE_USECASE_ID_BREAKDOWN_WARNING.poiTypeSrcVr - FOURS_PONDING.poiType -> FOURS_PONDING.poiTypeSrcVr - TYPE_USECASE_ID_ROAD_PARKING.poiType -> TYPE_USECASE_ID_ROAD_PARKING.poiTypeSrcVr - TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.poiType -> TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.poiTypeSrcVr -// TYPE_ID_NTERSECTION.poiType -> TYPE_ID_NTERSECTION.poiTypeSrcVr - TYPE_ID_SHAPR_TURNS.poiType -> TYPE_ID_SHAPR_TURNS.poiTypeSrcVr - TYPE_ID_BRIDGE.poiType -> TYPE_ID_BRIDGE.poiTypeSrcVr - TYPE_ID_PEDESTRIAN.poiType -> TYPE_ID_PEDESTRIAN.poiTypeSrcVr - TYPE_ID_SLIPPERY_ROAD.poiType -> TYPE_ID_SLIPPERY_ROAD.poiTypeSrcVr - TYPE_ID_TUNNEL.poiType -> TYPE_ID_TUNNEL.poiTypeSrcVr - TYPE_ID_FERRY.poiType -> TYPE_ID_FERRY.poiTypeSrcVr - TYPE_ID_UNEVEN_ROAD.poiType -> TYPE_ID_UNEVEN_ROAD.poiTypeSrcVr - TYPE_ID_NON_MOTOR_VEHICLE.poiType -> TYPE_ID_NON_MOTOR_VEHICLE.poiTypeSrcVr - TYPE_ID_OBSTACLE.poiType -> TYPE_ID_OBSTACLE.poiTypeSrcVr - TYPE_FOURS_ROAD_WORK.poiType -> TYPE_FOURS_ROAD_WORK.poiTypeSrcVr - TYPE_VEHICLE_QUEUE.poiType -> TYPE_VEHICLE_QUEUE.poiTypeSrcVr - TYPE_NO_PASSING.poiType -> TYPE_NO_PASSING.poiTypeSrcVr - TYPE_NO_TURNING_AROUND.poiType -> TYPE_NO_TURNING_AROUND.poiTypeSrcVr - TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.poiTypeSrcVr - TYPE_USECASE_ID_ROAD_NO_TOOTING.poiType -> TYPE_USECASE_ID_ROAD_NO_TOOTING.poiTypeSrcVr - TYPE_USECASE_ID_ROAD_SPEED_LIMIT.poiType -> TYPE_USECASE_ID_ROAD_SPEED_LIMIT.poiTypeSrcVr -// TYPE_USECASE_ID_GO_STRAIGHT_TURN_RIGHT.poiType -> TYPE_USECASE_ID_GO_STRAIGHT_TURN_RIGHT.poiTypeSrcVr - TYPE_USECASE_ID_BUS_WARNING.poiType -> TYPE_USECASE_ID_BUS_WARNING.poiTypeSrcVr - TYPE_USECASE_ID_NARROW_RIGHT.poiType -> TYPE_USECASE_ID_NARROW_RIGHT.poiTypeSrcVr - TYPE_USECASE_ID_GAS_STATION.poiType -> TYPE_USECASE_ID_GAS_STATION.poiTypeSrcVr - TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiTypeSrcVr - TYPE_USECASE_ID_ACCIDENT.poiType -> TYPE_USECASE_ID_ACCIDENT.poiTypeSrcVr - else -> TYPE_ERROR.poiTypeSrcVr - } - } - - @JvmStatic - fun getWarningContent(poiType: String?): String { - return when (poiType) { - TYPE_USECASE_ID_SLW.poiType -> TYPE_USECASE_ID_SLW.content - TYPE_USECASE_ID_TJW.poiType -> TYPE_USECASE_ID_TJW.content - TYPE_USECASE_ID_IVP.poiType -> TYPE_USECASE_ID_IVP.content - TYPE_USECASE_ID_IVP_GREEN.poiType -> TYPE_USECASE_ID_IVP_GREEN.content - TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING.content - TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.content - TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.content - TYPE_VIP_IDENTIFICATION.poiType -> TYPE_VIP_IDENTIFICATION.content - TYPE_ERROR.poiType -> TYPE_ERROR.content - TYPE_FOURS_ROAD_WORK.poiType -> TYPE_FOURS_ROAD_WORK.content - TYPE_OPTIMAL_ROUTE_RECOMMEND.poiType -> TYPE_OPTIMAL_ROUTE_RECOMMEND.content - TYPE_USECASE_ID_BREAKDOWN_WARNING.poiType -> TYPE_USECASE_ID_BREAKDOWN_WARNING.content - FOURS_PONDING.poiType -> FOURS_PONDING.content - TYPE_USECASE_ID_ROAD_PARKING.poiType -> TYPE_USECASE_ID_ROAD_PARKING.content - TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.poiType -> TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.content -// TYPE_ID_NTERSECTION.poiType -> TYPE_ID_NTERSECTION.content - TYPE_ID_SHAPR_TURNS.poiType -> TYPE_ID_SHAPR_TURNS.content - TYPE_ID_BRIDGE.poiType -> TYPE_ID_BRIDGE.content - TYPE_ID_PEDESTRIAN.poiType -> TYPE_ID_PEDESTRIAN.content - TYPE_ID_SLIPPERY_ROAD.poiType -> TYPE_ID_SLIPPERY_ROAD.content - TYPE_ID_TUNNEL.poiType -> TYPE_ID_TUNNEL.content - TYPE_ID_FERRY.poiType -> TYPE_ID_FERRY.content - TYPE_ID_UNEVEN_ROAD.poiType -> TYPE_ID_UNEVEN_ROAD.content - TYPE_ID_NON_MOTOR_VEHICLE.poiType -> TYPE_ID_NON_MOTOR_VEHICLE.content - TYPE_ID_OBSTACLE.poiType -> TYPE_ID_OBSTACLE.content - TYPE_FOURS_ROAD_WORK.poiType -> TYPE_FOURS_ROAD_WORK.content - TYPE_VEHICLE_QUEUE.poiType -> TYPE_VEHICLE_QUEUE.content - TYPE_NO_PASSING.poiType -> TYPE_NO_PASSING.content - TYPE_NO_TURNING_AROUND.poiType -> TYPE_NO_TURNING_AROUND.content - TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.content - TYPE_USECASE_ID_ROAD_NO_TOOTING.poiType -> TYPE_USECASE_ID_ROAD_NO_TOOTING.content - TYPE_USECASE_ID_ROAD_SPEED_LIMIT.poiType -> TYPE_USECASE_ID_ROAD_SPEED_LIMIT.content -// TYPE_USECASE_ID_GO_STRAIGHT_TURN_RIGHT.poiType -> TYPE_USECASE_ID_GO_STRAIGHT_TURN_RIGHT.content - TYPE_USECASE_ID_BUS_WARNING.poiType -> TYPE_USECASE_ID_BUS_WARNING.content - TYPE_USECASE_ID_NARROW_RIGHT.poiType -> TYPE_USECASE_ID_NARROW_RIGHT.content - TYPE_USECASE_ID_GAS_STATION.poiType -> TYPE_USECASE_ID_GAS_STATION.content - TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.content - TYPE_USECASE_ID_ACCIDENT.poiType -> TYPE_USECASE_ID_ACCIDENT.content - - else -> TYPE_ERROR.content - } - } - - @JvmStatic - fun getWarningTts(poiType: String?): String { - return when (poiType) { - TYPE_USECASE_ID_SLW.poiType -> TYPE_USECASE_ID_SLW.tts - TYPE_USECASE_ID_TJW.poiType -> TYPE_USECASE_ID_TJW.tts - TYPE_USECASE_ID_IVP.poiType -> TYPE_USECASE_ID_IVP.tts - TYPE_USECASE_ID_IVP_GREEN.poiType -> TYPE_USECASE_ID_IVP_GREEN.tts - TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_CROSSING.tts - TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.tts - TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.tts - TYPE_VIP_IDENTIFICATION.poiType -> TYPE_VIP_IDENTIFICATION.tts - TYPE_ERROR.poiType -> TYPE_ERROR.tts - TYPE_FOURS_ROAD_WORK.poiType -> TYPE_FOURS_ROAD_WORK.tts - TYPE_OPTIMAL_ROUTE_RECOMMEND.poiType -> TYPE_OPTIMAL_ROUTE_RECOMMEND.tts - TYPE_USECASE_ID_BREAKDOWN_WARNING.poiType -> TYPE_USECASE_ID_BREAKDOWN_WARNING.tts - FOURS_PONDING.poiType -> FOURS_PONDING.tts - TYPE_USECASE_ID_ROAD_PARKING.poiType -> TYPE_USECASE_ID_ROAD_PARKING.tts - TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.poiType -> TYPE_USECASE_ID_ROAD_VEHICLE_RETROGRADE.tts -// TYPE_ID_NTERSECTION.poiType -> TYPE_ID_NTERSECTION.tts - TYPE_ID_SHAPR_TURNS.poiType -> TYPE_ID_SHAPR_TURNS.tts - TYPE_ID_BRIDGE.poiType -> TYPE_ID_BRIDGE.tts - TYPE_ID_PEDESTRIAN.poiType -> TYPE_ID_PEDESTRIAN.tts - TYPE_ID_SLIPPERY_ROAD.poiType -> TYPE_ID_SLIPPERY_ROAD.tts - TYPE_ID_TUNNEL.poiType -> TYPE_ID_TUNNEL.tts - TYPE_ID_FERRY.poiType -> TYPE_ID_FERRY.tts - TYPE_ID_UNEVEN_ROAD.poiType -> TYPE_ID_UNEVEN_ROAD.tts - TYPE_ID_NON_MOTOR_VEHICLE.poiType -> TYPE_ID_NON_MOTOR_VEHICLE.tts - TYPE_ID_OBSTACLE.poiType -> TYPE_ID_OBSTACLE.tts - TYPE_FOURS_ROAD_WORK.poiType -> TYPE_FOURS_ROAD_WORK.tts - TYPE_VEHICLE_QUEUE.poiType -> TYPE_VEHICLE_QUEUE.tts - TYPE_NO_PASSING.poiType -> TYPE_NO_PASSING.tts - TYPE_NO_TURNING_AROUND.poiType -> TYPE_NO_TURNING_AROUND.tts - TYPE_USECASE_ID_ROAD_NO_PARKING.poiType -> TYPE_USECASE_ID_ROAD_NO_PARKING.tts - TYPE_USECASE_ID_ROAD_NO_TOOTING.poiType -> TYPE_USECASE_ID_ROAD_NO_TOOTING.tts - TYPE_USECASE_ID_ROAD_SPEED_LIMIT.poiType -> TYPE_USECASE_ID_ROAD_SPEED_LIMIT.tts -// TYPE_USECASE_ID_GO_STRAIGHT_TURN_RIGHT.poiType -> TYPE_USECASE_ID_GO_STRAIGHT_TURN_RIGHT.tts - TYPE_USECASE_ID_BUS_WARNING.poiType -> TYPE_USECASE_ID_BUS_WARNING.tts - TYPE_USECASE_ID_NARROW_RIGHT.poiType -> TYPE_USECASE_ID_NARROW_RIGHT.tts - TYPE_USECASE_ID_GAS_STATION.poiType -> TYPE_USECASE_ID_GAS_STATION.tts - TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.poiType -> TYPE_USECASE_ID_ROAD_PEDESTRIAN_SCHOOL.tts - TYPE_USECASE_ID_ACCIDENT.poiType -> TYPE_USECASE_ID_ACCIDENT.tts - else -> TYPE_ERROR.tts - } - } - } - -} \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/map/entity/V2XRoadEventEntity.java b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/map/entity/V2XRoadEventEntity.java index b6ea46986b..eea9b6b93e 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/map/entity/V2XRoadEventEntity.java +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/map/entity/V2XRoadEventEntity.java @@ -3,6 +3,8 @@ package com.mogo.eagle.core.data.map.entity; import android.text.TextUtils; +import com.mogo.eagle.core.data.enums.EventTypeEnum; + import java.io.Serializable; import java.util.Objects; @@ -54,6 +56,33 @@ public class V2XRoadEventEntity implements Serializable { this.poiType = poiType; } + public String getTts(boolean haveLiveCar) { + if (EventTypeEnum.GHOST_PROBE.getPoiType().equals(poiType)) { + tts = EventTypeEnum.GHOST_PROBE.getTts(); + return tts; + } + tts = "前方#" + (int) getDistance() + "米#"; + tts += EventTypeEnum.getTts(getPoiType()); + if (haveLiveCar) { + tts += ",查看实况请说确定。"; + setShowEventButton(true); + } else { + tts += ",请注意躲避。"; + setShowEventButton(false); + } + return tts; + } + + /** + * 检测到附近#道路施工#,确认该信息是否正确?您可以说“正确”或“错误”帮助其他车友。 + */ + public String getTtsWithFeedback() { + tts = "检测到附近"; + tts += EventTypeEnum.getTtsWithFeedback(getPoiType()); + tts += ",确认该信息是否正确?您可以说“正确”或“错误”帮助其他车友。"; + return tts; + } + public String getTts() { return tts; } @@ -70,7 +99,8 @@ public class V2XRoadEventEntity implements Serializable { isShowEventButton = showEventButton; } - public String getAlarmContent(){ //todo 缺少 + public String getAlarmContent() { + alarmContent = EventTypeEnum.getAlarmContent(getPoiType()); return alarmContent; } diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/mofang/MfConstants.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/mofang/MfConstants.kt new file mode 100644 index 0000000000..d2c4bb0ef0 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/mofang/MfConstants.kt @@ -0,0 +1,19 @@ +package com.mogo.eagle.core.data.mofang + +/** + * @author lixiaopeng + * @date 2021/12/7 + * + */ +object MfConstants { + // 蓝牙名称 + const val BLUETOOTH_NAME = "BLUETOOTH_NAME" + + // 蓝牙 ADDRESS + const val BLUETOOTH_ADDRESS = "BLUETOOTH_ADDRESS" + + //蓝牙连接状态 + const val BLUETOOTH_STATUS = "BLUETOOTH_STATUS" + + +} \ No newline at end of file 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 a2ee096f68..c56983d24c 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 @@ -296,6 +296,11 @@ interface IMoGoWaringProvider : IMoGoHmiViewProxy { */ fun updateStatusBarRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) + /** + * 更新(添加/删除)状态栏左侧元素 + */ + fun updateStatusBarLeftView(insert: Boolean, tag: String, viewGroup: ViewGroup) + /** * 设置司机端消息盒子是否展示 */ @@ -310,4 +315,10 @@ interface IMoGoWaringProvider : IMoGoHmiViewProxy { * 更新(添加/删除)下载进度 */ fun updateStatusBarDownloadView(insert: Boolean, tag: String, progress: Int) + + /** + * 更新魔方的连接状态 + */ + fun updateMfStatus(tag: String, status: Boolean) + } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/IMogoMapService.java b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/IMogoMapService.java index d760fbeec0..f677a42147 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/IMogoMapService.java +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/IMogoMapService.java @@ -90,9 +90,4 @@ public interface IMogoMapService extends IProvider { */ IMogoTrafficSearch getTrafficSearchApi(); - /** - * 获取地图版本号 - * @return - */ - String getMapVersion(); } diff --git a/core/mogo-core-function-call/build.gradle b/core/mogo-core-function-call/build.gradle index 2b20e901f8..621360e062 100644 --- a/core/mogo-core-function-call/build.gradle +++ b/core/mogo-core-function-call/build.gradle @@ -50,17 +50,21 @@ dependencies { // MoGo 数据埋点工具 implementation rootProject.ext.dependencies.analytics + compileOnly rootProject.ext.dependencies.mogocustommap + if (Boolean.valueOf(USE_MAVEN_PACKAGE)) { implementation rootProject.ext.dependencies.mogo_core_data implementation rootProject.ext.dependencies.mogo_core_utils implementation rootProject.ext.dependencies.mogo_core_function_api implementation rootProject.ext.dependencies.mogoserviceapi + implementation rootProject.ext.dependencies.mogocommons } else { implementation project(':libraries:mogo-adas') implementation project(':core:mogo-core-data') implementation project(':core:mogo-core-utils') implementation project(':core:mogo-core-function-api') implementation project(':services:mogo-service-api') + implementation project(':foudations:mogo-commons') } } 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 68054d3207..93429c52c0 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 @@ -475,6 +475,13 @@ object CallerHmiManager : CallerBase() { waringProviderApi?.updateStatusBarRightView(insert, tag, viewGroup) } + /** + * 更新(添加/删除)状态栏左侧元素 + */ + fun updateStatusBarLeftView(insert: Boolean, tag: String, viewGroup: ViewGroup) { + waringProviderApi?.updateStatusBarLeftView(insert, tag, viewGroup) + } + /** * 设置司机端消息盒子是否展示 */ @@ -488,6 +495,7 @@ object CallerHmiManager : CallerBase() { fun updatePassengerMsgBoxTipView(show: Boolean = false){ waringProviderApi?.updatePassengerMsgBoxTipView(show) } + /** * 更新(添加/删除)状态栏右侧元素 */ @@ -495,5 +503,13 @@ object CallerHmiManager : CallerBase() { waringProviderApi?.updateStatusBarDownloadView(insert, tag, progress) } + /** + * 更新魔方的链接状态 + */ + fun updateMfStatusView(tag: String, status: Boolean) { + waringProviderApi?.updateMfStatus(tag, status) + } + + } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt index d6709a65ff..c01e0b89d7 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt @@ -4,26 +4,30 @@ import android.content.Context import android.os.Handler import android.os.Looper import android.os.SystemClock +import android.util.* import androidx.lifecycle.Lifecycle.Event import androidx.lifecycle.Lifecycle.Event.ON_DESTROY import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.LifecycleOwner import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.data.map.* import com.mogo.eagle.core.data.map.MapRoadInfo.StopLine import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager.OnRoadListener import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.Scene.* import com.mogo.eagle.core.utilcode.kotlin.lifeCycleOwner import com.mogo.eagle.core.utilcode.kotlin.safeCancel import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA import com.mogo.map.uicontroller.VisualAngleMode +import com.zhidaoauto.map.sdk.open.tools.MapTools import kotlinx.coroutines.* import kotlinx.coroutines.android.asCoroutineDispatcher import kotlinx.coroutines.internal.synchronized import java.util.* import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit.SECONDS +import java.util.concurrent.atomic.* +import kotlin.math.* /** * 高精地图视角管理类 @@ -59,22 +63,53 @@ object CallerVisualAngleManager { val displayThreshold: Long //最大展示时长 > 0; 表示最长展示多长时间, -1 表示,一直展示,直到触发默认视角, 0: 默认视角专用值, } + private val triggerLocation = AtomicReference() + + private val distanceOfCarToStopLine = AtomicReference(0.0) + + private val travelled by lazy { AtomicReference(0.0) } + private val listener = object : OnRoadListener { - private var roadId = "" + private val roadId = AtomicReference() + private val triggerRoadId = AtomicReference() + override fun onRoadIdInfo(roadId: String) { - val oldRoadId = this.roadId - if (oldRoadId != roadId) { - if (hasCrossRoad) { + this.roadId.set(roadId) + Log.d(TAG, "-- onRoadIdInfo --: prev: ${this.triggerRoadId.get()} -> curr: $roadId") + val loc = CallerMapLocationListenerManager.getCurrentLocation() + var triggerClose = false + val distance = distanceOfCarToStopLine.get() + 5 + if (hasCrossRoad && distance > 0) { + val prev = triggerLocation.get() + if (prev != null && loc != null) { + travelled.set(MapTools.distance(loc.longitude, loc.latitude, prev.longitude, prev.latitude) + travelled.get()) + triggerLocation.set(loc) + } + val oldRoadId = triggerRoadId.get() + Log.d(TAG, "-- onRoadIdInfo --: travelled --: ${travelled.get()}") + if ((travelled.get() > distance) && oldRoadId != null && oldRoadId != roadId) { + distanceOfCarToStopLine.set(0.0) hasCrossRoad = false - changeVisualAngle(CrossRoad(false)) + triggerRoadId.set(null) + travelled.set(0.0) + triggerLocation.set(null) + Log.d(TAG, "-- onRoadIdInfo --: trigger close --") + triggerClose = true } } - this.roadId = roadId + if (triggerClose) { + changeVisualAngle(CrossRoad(false)) + } } + override fun onStopLineInfo(info: StopLine) { + Log.d(TAG, "-- onStopLineInfo --: ${info.distanceOfCarToStopLine}") if (!hasCrossRoad && info.distanceOfCarToStopLine <= 30.0) { hasCrossRoad = true + triggerRoadId.set(this.roadId.get()) + distanceOfCarToStopLine.set(info.distanceOfCarToStopLine) + triggerLocation.set(CallerMapLocationListenerManager.getCurrentLocation()) changeVisualAngle(CrossRoad(true)) } } @@ -133,6 +168,10 @@ object CallerVisualAngleManager { override val displayThreshold: Long get() = -1 + + override fun toString(): String { + return "Turning(open: ${open}, priority=$priority, displayThreshold: $displayThreshold, priority=$priority)" + } } /** @@ -146,6 +185,10 @@ object CallerVisualAngleManager { override val displayThreshold: Long get() = SECONDS.toMillis(8) + + override fun toString(): String { + return "TooClose(priority=$priority, displayThreshold: $displayThreshold, priority=$priority)" + } } /** @@ -159,6 +202,10 @@ object CallerVisualAngleManager { override val displayThreshold: Long get() = SECONDS.toMillis(8) + + override fun toString(): String { + return "RoadEvent(priority=${priority}, displayThreshold: ${displayThreshold}, priority=${priority})" + } } @@ -170,6 +217,10 @@ object CallerVisualAngleManager { override val priority: Int = 4 override val displayThreshold: Long get() = -1 + + override fun toString(): String { + return "CrossRoad(open: ${open}, priority=${priority}, displayThreshold: ${displayThreshold}, priority=${priority})" + } } } @@ -187,92 +238,124 @@ object CallerVisualAngleManager { } } - private val heap by lazy { + private val queue by lazy { PriorityQueue() } - @OptIn(InternalCoroutinesApi::class) - fun changeVisualAngle(scene: Scene) { + fun changeVisualAngle(current: Scene) { val appIdentityMode = FunctionBuildConfig.appIdentityMode if (AppIdentityModeUtils.isBus(appIdentityMode) && AppIdentityModeUtils.isPassenger(appIdentityMode)) { return } val triggerTime = SystemClock.elapsedRealtime() scope.launch { - CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 1 ---") + Log.d("${M_DEVA}${TAG}", "--- 1 ---") val displayed = getDisplayed() if (displayed == null) { - CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 2 ---") - val top = getTop() //堆顶 - if (top != null) { - if (top.target.priority >= scene.priority) { - CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 3 ---") - top.triggerTime = triggerTime - doChangeAngle(top) - synchronized(heap){ - heap += Record(scene, triggerTime = -1) - } - } else { - CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 4 ---") - doChangeAngle(Record(scene, triggerTime = triggerTime)) + Log.d("${M_DEVA}${TAG}", "--- 2 ---") + if (current is Turning) { + if (!current.open) { + changeVisualAngle(Default()) + return@launch } - } else { - CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 4 ---") - doChangeAngle(Record(scene, triggerTime = triggerTime)) } + if (current is CrossRoad) { + if (!current.open) { + changeVisualAngle(Default()) + return@launch + } + } + doRealVisualAngleChange(triggerTime, current, null) } else { - if (scene.javaClass == displayed.target.javaClass) { - CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 5 ---") - defaultDelayJob?.safeCancel() + val prev = displayed.target + Log.d("${M_DEVA}${TAG}", "--- 3 --- old: $prev -> cur: $current") + val prevTriggerTime = displayed.triggerTime + if (current !is Default && prev.priority > current.priority && (prev is RoadEvent || prev is TooClose)) { + val displayDuration = triggerTime - prevTriggerTime + Log.d("${M_DEVA}${TAG}", "--- 4 ---:场景[$prev], 已展示时长: duration: $displayDuration") + if (displayDuration < prev.displayThreshold) { + Log.d("${M_DEVA}${TAG}", "--- 5 --- 场景[$prev]:仍在保护展示时长内,直接return") + return@launch + } else { + Log.d("${M_DEVA}${TAG}", "--- 6 --- 场景[$prev]:已过保护展示时长,从展示的队列中移除,显示默认视角") + queue -= displayed + changeVisualAngle(Default()) + return@launch + } + } + if (prev is Turning && current is Turning) { + val isOpen = current.open + if (!isOpen) { + Log.d("${M_DEVA}${TAG}", "--- 7 --- 场景[$current], 收到关闭通知") + queue -= displayed + changeVisualAngle(Default()) + return@launch + } + } + if (prev is CrossRoad && current is CrossRoad) { + val isOpen = current.open + if (!isOpen) { + Log.d("${M_DEVA}${TAG}", "--- 8 --- old: $prev -> cur: $current") + queue -= displayed + changeVisualAngle(Default()) + return@launch + } + } + + if (prev.priority > current.priority && prev.displayThreshold < 0) { + Log.d("${M_DEVA}${TAG}", "--- 6 --- 场景[$prev]正在展示,尚未收到关闭,场景,依然展示当前场景,直接return") return@launch } - val prev = displayed.target - val prevTriggerTime = displayed.triggerTime - if (scene is Turning) { - val isOpen = scene.open - if (!isOpen) { + doRealVisualAngleChange(triggerTime, current, displayed) + } + } + } + + private fun CoroutineScope.doRealVisualAngleChange(triggerTime: Long, target: Scene, displayed: Record? = null) { + if (target is Default) { + Log.d("${M_DEVA}${TAG}", "--- doRealVisualAngleChange --- 1 ---") + displayed?.also { + queue -= it + } + defaultDelayJob?.safeCancel() + launch { + val delay = target.unit.toMillis(target.delay) + Log.d("${M_DEVA}${TAG}", "--- doRealVisualAngleChange --- 2 ---") + delay(delay) + Log.d("${M_DEVA}${TAG}", "--- doRealVisualAngleChange --- 3 ---") + doChangeAngle(Record(target, triggerTime = triggerTime)) + }.also { itx -> + itx.invokeOnCompletion { + if (it is CancellationException) { + Log.d("${M_DEVA}${TAG}", "--- doRealVisualAngleChange --- 4 ---") + } + } + defaultDelayJob = itx + } + } else { + Log.d("${M_DEVA}${TAG}", "--- doRealVisualAngleChange --- 5 ---") + defaultDelayJob?.safeCancel() + if (displayed == null || displayed.target.priority <= target.priority) { + Log.d("${M_DEVA}${TAG}", "--- doRealVisualAngleChange --- 6 ---") + displayed?.also { + queue -= it + } + if (target is Turning) { + if (!target.open) { + Log.d("${M_DEVA}${TAG}", "--- doRealVisualAngleChange --- 7 ---") changeVisualAngle(Default()) - return@launch + return } } - if (scene is CrossRoad) { - val isOpen = scene.open - if (!isOpen) { + if (target is CrossRoad) { + if (!target.open) { + Log.d("${M_DEVA}${TAG}", "--- doRealVisualAngleChange --- 8 ---") changeVisualAngle(Default()) - return@launch - } - } - if (prev.priority >= scene.priority && (prev is RoadEvent || prev is TooClose)) { - val displayDuration = triggerTime - prevTriggerTime - if (displayDuration < prev.displayThreshold) { - return@launch - } - } - if (scene is Default) { - CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 6 ---") - defaultDelayJob?.safeCancel() - launch { - val delay = scene.unit.toMillis(scene.delay) - CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 7 ---") - delay(delay) - CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 8 ---") - doChangeAngle(Record(scene, triggerTime = triggerTime)) - heap -= displayed - }.also { itx -> - itx.invokeOnCompletion { - if (it is CancellationException) { - CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 9 ---") - } - } - defaultDelayJob = itx - } - } else { - CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${scene} --- 10 ---") - defaultDelayJob?.safeCancel() - if (displayed.target.priority < scene.priority) { - doChangeAngle(Record(scene, triggerTime = triggerTime)) + return } } + Log.d("${M_DEVA}${TAG}", "--- doRealVisualAngleChange --- 10 ---") + doChangeAngle(Record(target, triggerTime = triggerTime)) } } } @@ -281,14 +364,13 @@ object CallerVisualAngleManager { private fun doChangeAngle(record: Record) { val angle = record.target.angle CallerMapUIServiceManager.getMapUIController()?.also { - CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${record.target} --- 13 ---") + Log.d("${M_DEVA}${TAG}", "--- doChangeAngle ---: ${record.target}") if (record.target !is Default) { record.isDisplay = true - synchronized(heap) { - heap += record + synchronized(queue) { + queue += record } } - CallerLogger.d("${M_DEVA}${TAG}", "触发场景:${record.target} --- 15 ---> angle: $angle") it.changeMapVisualAngle(angle, null) } } @@ -297,8 +379,6 @@ object CallerVisualAngleManager { * 是否有正在展示的 */ @Synchronized - private fun getDisplayed() = heap.find { it.isDisplay } + private fun getDisplayed() = queue.firstOrNull() - @Synchronized - private fun getTop() = heap.firstOrNull() } \ No newline at end of file diff --git a/core/mogo-core-res/src/main/function-hmi-res/drawable-xhdpi/icon_warning_gas_station.png b/core/mogo-core-res/src/main/function-hmi-res/drawable-xhdpi/icon_warning_gas_station.png new file mode 100755 index 0000000000..ca5494879d Binary files /dev/null and b/core/mogo-core-res/src/main/function-hmi-res/drawable-xhdpi/icon_warning_gas_station.png differ diff --git a/core/mogo-core-res/src/main/function-hmi-res/drawable-xhdpi/icon_warning_road_hollow.png b/core/mogo-core-res/src/main/function-hmi-res/drawable-xhdpi/icon_warning_road_hollow.png new file mode 100755 index 0000000000..9cb6f7b9ac Binary files /dev/null and b/core/mogo-core-res/src/main/function-hmi-res/drawable-xhdpi/icon_warning_road_hollow.png differ diff --git a/core/mogo-core-res/src/main/function-hmi-res/drawable-xhdpi/icon_warning_v2x_no_tooting.png b/core/mogo-core-res/src/main/function-hmi-res/drawable-xhdpi/icon_warning_v2x_no_tooting.png new file mode 100755 index 0000000000..32c0216294 Binary files /dev/null and b/core/mogo-core-res/src/main/function-hmi-res/drawable-xhdpi/icon_warning_v2x_no_tooting.png differ diff --git a/core/mogo-core-res/src/main/res/raw/xiaobache.nt3d b/core/mogo-core-res/src/main/res/raw/xiaobache.nt3d index baec2168db..909f474514 100644 Binary files a/core/mogo-core-res/src/main/res/raw/xiaobache.nt3d and b/core/mogo-core-res/src/main/res/raw/xiaobache.nt3d differ diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/logger/scene/SceneConstant.kt b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/logger/scene/SceneConstant.kt index 74cf076347..eea493fc91 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/logger/scene/SceneConstant.kt +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/mogo/logger/scene/SceneConstant.kt @@ -24,6 +24,7 @@ class SceneConstant { const val M_NOTICE = "M_NOTICE-" const val M_OBU = "M_OBU-" const val M_V2X = "M_V2X-" + const val M_F = "M_F-" //旧module const val M_OLD_ROUTE = "M_OLD_ROUTE-" diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/PermissionUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/PermissionUtils.java index 229b6dd5f8..5998a82b72 100755 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/PermissionUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/PermissionUtils.java @@ -499,10 +499,7 @@ public final class PermissionUtils { } else if (type == TYPE_DRAW_OVERLAYS) { currentRequestCode = TYPE_DRAW_OVERLAYS; startOverlayPermissionActivity(activity, TYPE_DRAW_OVERLAYS); - } else if (type == TYPE_ACCESS_FINE_LOCATION) { - currentRequestCode = TYPE_ACCESS_FINE_LOCATION; - startOverlayPermissionActivity(activity, TYPE_ACCESS_FINE_LOCATION); - } else { + } else { activity.finish(); Log.e("PermissionUtils", "type is wrong."); } diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java index 3ccc96c83c..86cb3a727c 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java @@ -148,6 +148,26 @@ public class DebugConfig { return sSocketAppId; } + private static String mapVersion; + + public static void setMapVersion(String mapVersion) { + DebugConfig.mapVersion = mapVersion; + } + + public static String getMapVersion() { + return mapVersion; + } + + private static String mapOptVersion; + + public static void setMapOptVersion(String mapOptVersion) { + DebugConfig.mapOptVersion = mapOptVersion; + } + + public static String getMapOptVersion() { + return mapOptVersion; + } + /** * 是否需要实时上报坐标位置 */ diff --git a/gradle.properties b/gradle.properties index d83654b400..a700ede798 100644 --- a/gradle.properties +++ b/gradle.properties @@ -85,8 +85,8 @@ MOGO_LOCATION_VERSION=1.4.3.27 MOGO_TELEMATIC_VERSION=1.4.3.27 ######## MogoAiCloudSDK Version ######## # 自研地图 -MAP_SDK_VERSION=2.7.0.10 -MAP_SDK_OPERATION_VERSION=1.1.3.5 +MAP_SDK_VERSION=2.8.0.11 +MAP_SDK_OPERATION_VERSION=1.1.4.1 # websocket WEBSOCKET_VERSION=1.1.7 ## 产品库必备配置,产品库自动对versionCode和versionName版本进行升级 diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMap.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMap.java index 9f3713f8fa..baec754e0c 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMap.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/IMogoMap.java @@ -171,12 +171,6 @@ public interface IMogoMap { */ IMogoPolyline addPolyline( MogoPolylineOptions options ); - /** - * 获取地图版本 - * @return - */ - String getMapVersion(); - /** * 获取行驶方向一定长度的中心线 * @param lon 经度 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 e94abde8ee..b063d1edee 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 @@ -19,7 +19,6 @@ import android.location.Location; import android.os.Bundle; import android.os.Handler; import android.os.Looper; -import android.os.SystemClock; import android.os.Trace; import android.text.TextUtils; import android.util.Log; @@ -45,7 +44,6 @@ import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; import com.mogo.eagle.core.utilcode.mogo.toast.TipToast; -import com.mogo.eagle.core.utilcode.util.GsonUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.listener.MogoMapListenerHandler; import com.mogo.map.navi.MogoCarLocationChangedListenerRegister; @@ -651,8 +649,8 @@ public class AMapViewWrapper implements IMogoMapView, /** * 设置转向灯和刹车灯 * - * @param type :车尾灯类型 time: 闪烁时间 最小500ms 小于500ms 默认为500ms - * @param time + * @param type :车尾灯类型 + * @param time 闪烁时间 最小500ms 小于500ms 默认为500ms */ @Override public void setCarLightsType(int type, int time) { 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 f71f453a74..d2a1c9ab79 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 @@ -302,11 +302,6 @@ public class AMapWrapper implements IMogoMap { return null; } - @Override - public String getMapVersion() { - return MapAutoApi.INSTANCE.getSDKVersion(); - } - private boolean checkAMap() { mAMap = mMapView.getMapAutoViewHelper(); sAMap = mAMap; diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/CustomMapApiBuilder.java b/libraries/mogo-map/src/main/java/com/mogo/map/CustomMapApiBuilder.java index b7f5d84f1e..16cea92e99 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/CustomMapApiBuilder.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/CustomMapApiBuilder.java @@ -5,6 +5,7 @@ import android.util.Log; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.eagle.core.data.config.FunctionBuildConfig; +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.map.location.ALocationClient; import com.mogo.map.location.IMogoLocationClient; @@ -81,6 +82,10 @@ public class CustomMapApiBuilder implements IMogoMapApiBuilder { //.setPointToCenter(0.5f, 0.5f) // 根据 FunctionBuildConfig 配置的皮肤样式设置题图的样式 .setStyleMode(FunctionBuildConfig.skinMode == 0 ? MapParams.MAP_STYLE_NIGHT_VR : MapParams.MAP_STYLE_DAY_VR); + //todo 临时放在这 + if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)&& AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)){ + mapParams.setShadowEnable(false); + } MapAutoApi.INSTANCE.init(context, mapParams); MapAutoView mapAutoView = new MapAutoView(context); diff --git a/test/crashreport-apmbyte/src/main/java/com/mogo/test/crashreport/apm/ApmCrashReportProvider.java b/test/crashreport-apmbyte/src/main/java/com/mogo/test/crashreport/apm/ApmCrashReportProvider.java index 3ccd681638..cf168eaea4 100644 --- a/test/crashreport-apmbyte/src/main/java/com/mogo/test/crashreport/apm/ApmCrashReportProvider.java +++ b/test/crashreport-apmbyte/src/main/java/com/mogo/test/crashreport/apm/ApmCrashReportProvider.java @@ -68,7 +68,7 @@ public class ApmCrashReportProvider implements ITestCrashReportProvider { mCityCode = SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.LOCATION_CITY_CODE); mLat = SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.LOCATION_LATITUDE); mLogt = SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.LOCATION_LONGITUDE); -// Log.d("liyz", "cityCode = " + mCityCode + " --lat = " +mLat + " --logt = " + mLogt); +// Log.d(TAG, "cityCode = " + mCityCode + " --lat = " +mLat + " --logt = " + mLogt); //地图版本 String mapSDKVersion = AppUtils.getCustomMapSDKVersion(context); map.put("MAP_SDK_VERSION", mapSDKVersion);