From 217556721d4e7afc07e2a30e78a4c223db74c7a0 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 21 Apr 2022 11:01:58 +0800 Subject: [PATCH 1/6] remove test class --- .../function/map/IdentifyDataDrawerTest.java | 212 ------------------ 1 file changed, 212 deletions(-) delete mode 100644 core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/IdentifyDataDrawerTest.java diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/IdentifyDataDrawerTest.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/IdentifyDataDrawerTest.java deleted file mode 100644 index a5f40d4a71..0000000000 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/map/IdentifyDataDrawerTest.java +++ /dev/null @@ -1,212 +0,0 @@ -package com.mogo.eagle.core.function.map; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI; - -import android.annotation.SuppressLint; -import android.content.Context; - -import com.mogo.commons.AbsMogoApplication; -import com.mogo.eagle.core.data.config.FunctionBuildConfig; -import com.mogo.eagle.core.data.enums.TrafficTypeEnum; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.eagle.core.utilcode.util.UiThreadHandler; -import com.mogo.map.MogoMap; -import com.mogo.map.MogoMarkerManager; -import com.mogo.module.common.MogoApisHandler; -import com.mogo.module.common.constants.AdasRecognizedType; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ConcurrentHashMap; - -import mogo.telematics.pad.MessagePad; - -/** - * @author xiaoyuzhou - * @date 2021/10/19 10:45 上午 - * 域控制器识别信息绘制 - */ -public class IdentifyDataDrawerTest { - private static final String TAG = "IdentifyDataDrawer"; - - protected final Context mContext; - private static volatile IdentifyDataDrawerTest sInstance; - - /** - * 上一帧数据的缓存 - */ - private static final ConcurrentHashMap mMarkersCaches = new ConcurrentHashMap<>(); - - private static final ConcurrentHashMap algoCache = new ConcurrentHashMap<>(); - - /** - * 记录每次实际绘制的交通元素UUID - */ - private final ArrayList trafficDataUuidList = new ArrayList<>(); - /** - * 过滤后的数据集合 - */ - private final ArrayList mFilterTrafficData = new ArrayList<>(); - - private IdentifyDataDrawerTest() { - mContext = AbsMogoApplication.getApp(); - addPreVehicleModel(); - } - - public static IdentifyDataDrawerTest getInstance() { - if (sInstance == null) { - synchronized (IdentifyDataDrawerTest.class) { - if (sInstance == null) { - sInstance = new IdentifyDataDrawerTest(); - } - } - } - return sInstance; - } - - public synchronized void release() { - sInstance = null; - } - - /** - * 渲染 adas 识别的数据 - * - * @param resultList adas感知融合数据 - */ - @SuppressLint("NewApi") - public void renderAdasRecognizedResult(List resultList) { - if (resultList == null || resultList.isEmpty()) { - clearOldMarker(); - CallerLogger.INSTANCE.w(TAG, "感知数据为空无需渲染……"); - return; - } - - if (!MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { - clearOldMarker(); - CallerLogger.INSTANCE.w(TAG, "渲染 adas 识别的数据 当前不是VR模式"); - return; - } - - //清除缓存 - for (MessagePad.TrackedObject data : resultList) { - if (trafficDataUuidList.size() > 0 && trafficDataUuidList.contains("" + data.getUuid())) { - trafficDataUuidList.remove("" + data.getUuid()); - } - } - trafficDataUuidList.forEach(uuid -> { - mMarkersCaches.remove(uuid); - algoCache.remove(uuid); - }); - - ArrayList filterList = filterTrafficData(resultList); - if (filterList.size() > 0) { - // 绘制新数据 - MogoMarkerManager.getInstance(mContext) - .updateBatchMarkerPosition(filterList); - } - } - - /** - * 数据过滤器 - * - * @return 过滤后的数据集合 - */ - private ArrayList filterTrafficData(List trafficData) { - mFilterTrafficData.clear(); - trafficDataUuidList.clear(); - for (MessagePad.TrackedObject data : trafficData) { - // 过滤掉未知感知数据 - if (!FunctionBuildConfig.isDrawUnknownIdentifyData && data.getType() == TrafficTypeEnum.TYPE_TRAFFIC_ID_WEI_ZHI.getType()) { - //CallerLogger.INSTANCE.w(TAG, "未知感知类型数据,丢弃,不渲染"); - continue; - } - - MessagePad.TrackedObject cacheData = mMarkersCaches.get("" + data.getUuid()); - double heading = MogoMap.getInstance().getMogoMap().getUIController().getAngle(cacheData.getLongitude(), cacheData.getLatitude(), data.getLongitude(), data.getLatitude()); - CallerLogger.INSTANCE.d(M_HMI + "arrow47", " uuid : " + data.getUuid() + " , origin heading : " + data.getHeading() + " , correct heading : " + heading + " ---- " + (data.getHeading() - heading)); - -// double heading = kalmanFilter(data); - MessagePad.TrackedObject correctData = data.toBuilder().setHeading(heading).build(); - mFilterTrafficData.add(correctData); - //更新已存在的感知物体数据 - mMarkersCaches.put("" + correctData.getUuid(), correctData); - trafficDataUuidList.add("" + correctData.getUuid()); - } - return mFilterTrafficData; - } - - private double kalmanFilter(MessagePad.TrackedObject data) { - String uuid = "" + data.getUuid(); - if (algoCache.containsKey(uuid)) { - Object o = algoCache.get(uuid); - KalmanFilter kf = (KalmanFilter) o; - assert kf != null; - double[] lonLat = kf.filter(data.getLongitude(), data.getLatitude()); - algoCache.put(uuid, kf); - MessagePad.TrackedObject cacheTrackObj = mMarkersCaches.get(uuid); - assert cacheTrackObj != null; - double heading = MogoMap.getInstance().getMogoMap().getUIController().getAngle(cacheTrackObj.getLongitude(), cacheTrackObj.getLatitude(), lonLat[0], lonLat[1]); - CallerLogger.INSTANCE.d(M_HMI + "arrow47", " uuid : " + uuid + " , origin heading : " + data.getHeading() + " , correct heading : " + heading + " ---- " + (data.getHeading() - heading)); - return heading; - } else { - double r = 0.00005; - if (AdasRecognizedType.valueFrom(data.getType()) == AdasRecognizedType.classIdTrafficBus || AdasRecognizedType.valueFrom(data.getType()) == AdasRecognizedType.classIdTrafficTruck) { - r = 0.0001; - } - algoCache.put(uuid, new KalmanFilter(data.getLongitude(), data.getLatitude(), r)); - return data.getHeading(); - } - } - - /** - * 清除旧的 marker 数据 - */ - public void clearOldMarker() { - for (String uuid : trafficDataUuidList) { - MogoMarkerManager.getInstance(mContext) - .removeMarker(uuid); - } - trafficDataUuidList.clear(); - } - - private void addPreVehicleModel() { - CallerLogger.INSTANCE.d(TAG, "添加感知模型到地图中……"); - addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_WEI_ZHI, "添加感知模型到地图中……preVehicleStrWeiZhi="); - - addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_PEOPLE, "添加感知模型到地图中……preVehicleStrPeople="); - - addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_BICYCLE, "添加感知模型到地图中……preVehicleStrBicycle="); - - addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_TA_CHE, "添加感知模型到地图中……preVehicleStrTaChe="); - - addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_MOTO, "添加感知模型到地图中……preVehicleStrMoto="); - - addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_BUS, "添加感知模型到地图中……preVehicleStrBus="); - - addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_TRUCK, "添加感知模型到地图中……preVehicleStrTruck="); - } - - /** - * 添加模型到地图中 - * - * @param typeTrafficIdWeiZhi - * @param s - */ - private void addPreVehicleModelWeiZhi(TrafficTypeEnum typeTrafficIdWeiZhi, String s) { - String preVehicleStrWeiZhi = MogoMarkerManager.getInstance(mContext) - .addPreVehicleModel(typeTrafficIdWeiZhi.getType(), - typeTrafficIdWeiZhi.getTraffic3DIconId()); - CallerLogger.INSTANCE.d(TAG, s + preVehicleStrWeiZhi); - - if (preVehicleStrWeiZhi == null) { - UiThreadHandler.postDelayed(new Runnable() { - @Override - public void run() { - CallerLogger.INSTANCE.w(TAG, "添加感知模型到地图中失败,尝试重复添加……"); - addPreVehicleModelWeiZhi(typeTrafficIdWeiZhi, s); - } - }, 1000L); - } - } - -} From 724f7a57400ca81dffa432c10f1b25c8cee1c276 Mon Sep 17 00:00:00 2001 From: renwj Date: Thu, 21 Apr 2022 13:59:12 +0800 Subject: [PATCH 2/6] =?UTF-8?q?[RoutingOpt]=E5=88=87=E6=8D=A2=E5=88=B0Call?= =?UTF-8?q?erLogger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../routeoverlay/MogoRouteOverlayManager.java | 20 ++---- .../routeoverlay/RouteOverlayDrawer.java | 68 ++++--------------- 2 files changed, 18 insertions(+), 70 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java index 10adc65e6a..2a9f94dcec 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/MogoRouteOverlayManager.java @@ -4,14 +4,10 @@ import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_OLD import android.content.Context; import android.os.SystemClock; -import android.util.Log; - import androidx.annotation.NonNull; - import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.deva.scene.SceneModule; -import com.mogo.eagle.core.data.map.MogoLatLng; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningListener; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; @@ -22,18 +18,12 @@ import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant; -import com.mogo.module.common.utils.DrivingDirectionUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; - -import java.util.ArrayList; -import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicReference; - import mogo.telematics.pad.MessagePad; import mogo_msg.MogoReportMsg; @@ -119,13 +109,13 @@ public class MogoRouteOverlayManager implements trajectoryMsg.append(lat).append(","); } trajectoryMsg.append("}"); - Log.d(M_OLD_ROUTE + TAG, "receive router data:" + items.size()); - Log.d(M_OLD_ROUTE + TAG, trajectoryMsg.toString()); + CallerLogger.INSTANCE.d(M_OLD_ROUTE + TAG, "receive router data:" + items.size()); + CallerLogger.INSTANCE.d(M_OLD_ROUTE + TAG, trajectoryMsg.toString()); } else { - Log.d(M_OLD_ROUTE + TAG, "receive router data:" + items.size()); + CallerLogger.INSTANCE.d(M_OLD_ROUTE + TAG, "receive router data:" + items.size()); } } finally { - Log.d(M_OLD_ROUTE + TAG, "--- onAutopilotTrajectory -- cost:" + (SystemClock.elapsedRealtime() - start) + " ms"); + CallerLogger.INSTANCE.d(M_OLD_ROUTE + TAG, "--- onAutopilotTrajectory -- cost:" + (SystemClock.elapsedRealtime() - start) + " ms"); } } @@ -211,7 +201,7 @@ public class MogoRouteOverlayManager implements if (isExcept) { RouteOverlayDrawer.getInstance(mContext).setVisible(false); } - Log.d(M_OLD_ROUTE + TAG, "--- onLocationChanged -- cost:" + (SystemClock.elapsedRealtime() - start) + " ms"); + CallerLogger.INSTANCE.d(M_OLD_ROUTE + TAG, "--- onLocationChanged -- cost:" + (SystemClock.elapsedRealtime() - start) + " ms"); } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/RouteOverlayDrawer.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/RouteOverlayDrawer.java index 3d30ab7cba..b54dbb29c6 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/RouteOverlayDrawer.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/routeoverlay/RouteOverlayDrawer.java @@ -9,7 +9,6 @@ import android.graphics.Color; import android.os.Handler; import android.os.HandlerThread; import android.os.SystemClock; -import android.util.Log; import androidx.core.util.Pools; import com.mogo.eagle.core.data.map.MogoLatLng; import com.mogo.eagle.core.data.map.MogoLocation; @@ -159,15 +158,16 @@ public class RouteOverlayDrawer { public void run() { LinkedList points = this.points; points.clear(); + boolean isExcept = false; try { long drawStart = SystemClock.elapsedRealtime(); List routes = this.routeList; - if (routes == null || routes.size() < 2) { - setVisible(false); + int total; + if (routes == null || (total = routes.size()) < 2) { + isExcept = true; return; } - int total = routes.size(); - for (int i = 0; i < total ; i++) { + for (int i = 0; i < total; i++) { MessagePad.TrajectoryPoint route = null; try { route = routes.get(i); @@ -175,7 +175,7 @@ public class RouteOverlayDrawer { continue; } } catch (Throwable t) { - Log.d(M_OLD_ROUTE + TAG, "render-error:" + t.getMessage()); + CallerLogger.INSTANCE.d(M_OLD_ROUTE + TAG, "render-error:" + t.getMessage()); } if (route == null) { //数组越界了,结束循环 @@ -196,13 +196,13 @@ public class RouteOverlayDrawer { double lon = CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lon(); double lat = CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lat(); if (lon == 0.0 || lat == 0.0) { + isExcept = true; return; } if (location != null && points.size() > 0) { int i = 0; int max = Math.min(20, points.size() / 2); MogoLatLng top = null; - int remove = 0; long angle; while (i++ < max) { MogoLatLng first = points.peek(); @@ -214,53 +214,10 @@ public class RouteOverlayDrawer { } angle = isPointOnCarFront(lon, lat, location.getBearing(), first.lon, first.lat); if (angle >= 90) { - Log.d(M_OLD_ROUTE + TAG, "render - removeCount:" + (++remove)); points.poll(); } top = first; } - //distance -// if (top != null) { -// double distance = DrivingDirectionUtils.distance(top.lon, top.lat, lon, lat) * 10_0000; -// angle = isPointOnCarFront(lon, lat, location.getBearing(), top.lon, top.lat); -// Log.d(M_OLD_ROUTE + TAG, "render - distance:" + distance + ",angle:" + angle); -// if (distance > 4.0 && angle >= 80) { -// float bearing = location.getBearing(); -// Pair p_car_f = DrivingDirectionUtils.calculateNewPoint(lon, lat, bearing, 5); -// Pair p_rout_f = DrivingDirectionUtils.calculateNewPoint(top.lon, top.lat, bearing, 5); -// if (p_car_f != null && p_rout_f != null) { -// Stack stack = new Stack<>(); -// stack.add(new MogoLatLng(p_car_f.second, p_car_f.first)); -// double new_bear = bearing + 90; -// while (distance > 0.1) { -// distance /= 2; -// Pair p = DrivingDirectionUtils.calculateNewPoint(p_car_f.first, p_car_f.second, new_bear, distance); -// if (p == null) { -// break; -// } -// stack.push(new MogoLatLng(p.second, p.first)); -// } -// Log.d("XXXX", "----stack:" + stack.size()); -// long newAngle = DrivingDirectionUtils.getDegreeOfCar2Poi2(p_rout_f.first, p_rout_f.second, top.lon, top.lat, bearing); -// Log.d("XXXX", "----newAngle:" + newAngle); -// while (newAngle > 90) { -// Log.d("XXXX", "----newAngle:" + newAngle); -// points.poll(); -// MogoLatLng peek = points.peek(); -// if (peek == null) { -// points.poll(); -// continue; -// } -// newAngle = DrivingDirectionUtils.getDegreeOfCar2Poi2(p_rout_f.first, p_rout_f.second, peek.lon, peek.lat, bearing); -// } -// while (!stack.isEmpty()) { -// MogoLatLng pop = stack.pop(); -// points.addFirst(pop); -// } -// } -// } -// } - MogoLatLng self = pools.acquire(); if (self == null) { self = new MogoLatLng(lat, lon); @@ -280,15 +237,16 @@ public class RouteOverlayDrawer { mMoGoPolyline.setVisible(true); } } else { - if(mMoGoPolyline != null) { - mMoGoPolyline.setVisible(false); - } + isExcept = true; } long drawEnd = SystemClock.elapsedRealtime(); - Log.d(M_OLD_ROUTE + TAG, "drawTrajectoryList cost : " + (drawEnd - drawStart)); + CallerLogger.INSTANCE.d(M_OLD_ROUTE + TAG, "drawTrajectoryList cost : " + (drawEnd - drawStart) + "ms and isExcept:" + isExcept); } catch (Throwable t) { - Log.d(M_OLD_ROUTE + TAG, "drawTrajectoryList error : " + t); + CallerLogger.INSTANCE.d(M_OLD_ROUTE + TAG, "drawTrajectoryList error (isExcept: "+isExcept+") : " + t); } finally { + if (isExcept) { + setVisible(false); + } if (points.size() > 0) { for (int i = 0; i < points.size(); i++) { MogoLatLng latLng = points.get(i); From d49748648863a6872208832a8438021d4ef50697 Mon Sep 17 00:00:00 2001 From: donghongyu Date: Thu, 21 Apr 2022 15:04:36 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E3=80=8CChange=E3=80=8D=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=BA=86=E5=9C=B0=E5=9B=BE=E9=BB=98=E8=AE=A4=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: donghongyu --- .../main/java/com/mogo/map/AMapViewWrapper.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) 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 c31be32fd2..0526d3a9ec 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 @@ -126,25 +126,28 @@ public class AMapViewWrapper implements IMogoMapView, private void initViews() { // 初始化首次地图进入的时候的样式, MapAutoApi.INSTANCE.init(context, mapParams);将影响这里的数据 int mapStyle = MapAutoApi.INSTANCE.getMapParams().getStyleMode(); + CallerLogger.INSTANCE.e(M_MAP + TAG, "默认配置地图模式:mapStyle=" + mapStyle); switch (mapStyle) { case MapAutoApi.MAP_STYLE_DAY: mCurrentUI = EnumMapUI.MAP_STYLE_DAY; break; - case MapAutoApi.MAP_STYLE_DAY_VR: - mCurrentUI = EnumMapUI.MAP_STYLE_DAY_VR; - break; case MapAutoApi.MAP_STYLE_DAY_NAV: mCurrentUI = EnumMapUI.MAP_STYLE_DAY_NAV; break; case MapAutoApi.MAP_STYLE_NIGHT: mCurrentUI = EnumMapUI.MAP_STYLE_NIGHT; break; - case MapAutoApi.MAP_STYLE_NIGHT_VR: - mCurrentUI = EnumMapUI.MAP_STYLE_NIGHT_VR; - break; case MapAutoApi.MAP_STYLE_NIGHT_NAV: mCurrentUI = EnumMapUI.MAP_STYLE_NIGHT_NAV; break; + case MapAutoApi.MAP_STYLE_DAY_VR: + mCurrentUI = EnumMapUI.MAP_STYLE_DAY_VR; + break; + case MapAutoApi.MAP_STYLE_NIGHT_VR: + mCurrentUI = EnumMapUI.MAP_STYLE_NIGHT_VR; + break; + default: + CallerLogger.INSTANCE.e(M_MAP + TAG, "暂不支持此地图模式,默认使用VR夜间模式"); } } From 8018a20afaefc18779e2f87d553ed6d8e9d9a853 Mon Sep 17 00:00:00 2001 From: pangfan Date: Thu, 21 Apr 2022 17:50:02 +0800 Subject: [PATCH 4/6] =?UTF-8?q?[Bus/Taxi=20d=20v2.6.5]MAP=20sdk->2.1.0.6?= =?UTF-8?q?=EF=BC=88=E4=BF=AE=E6=94=B9=E5=9C=B0=E5=9B=BEvr=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E5=88=87=E6=8D=A2=E9=97=AE=E9=A2=98=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c832355151..239495d895 100644 --- a/gradle.properties +++ b/gradle.properties @@ -82,7 +82,7 @@ MOGO_LOCATION_VERSION=1.3.55 MOGO_TELEMATIC_VERSION=1.3.55 ######## MogoAiCloudSDK Version ######## # 自研地图 -MAP_SDK_VERSION=2.1.0.5 +MAP_SDK_VERSION=2.1.0.6 MAP_SDK_OPERATION_VERSION=1.0.12 # websocket WEBSOCKET_VERSION=1.1.7 From b6ad890fe94626241da706b7863255c80cc07707 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Thu, 21 Apr 2022 19:58:19 +0800 Subject: [PATCH 5/6] =?UTF-8?q?[driver=20passenger=20]=20taxi=E4=B9=98?= =?UTF-8?q?=E5=AE=A2=E5=B1=8F=E4=BC=98=E5=8C=96=E5=B0=8F=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OCH/mogo-och-taxi-passenger/build.gradle | 1 + .../IOCHTaxiPassengerNaviChangedCallback.java | 1 - .../TaxiPassengerGeocodeSearchModel.java | 120 +++++++ .../passenger/model/TaxiPassengerModel.java | 22 +- .../TaxiPassengerNaviToDestinationModel.java | 335 ------------------ .../presenter/BaseTaxiPassengerPresenter.java | 6 +- .../TaxiPassengerServingOrderPresenter.java | 2 + .../ui/TaxiPassengerMapDirectionView.java | 9 +- .../ui/TaxiPassengerServingOrderFragment.java | 23 +- .../com/mogo/och/taxi/ui/TaxiFragment.java | 2 +- 10 files changed, 150 insertions(+), 371 deletions(-) create mode 100644 OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerGeocodeSearchModel.java delete mode 100644 OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerNaviToDestinationModel.java diff --git a/OCH/mogo-och-taxi-passenger/build.gradle b/OCH/mogo-och-taxi-passenger/build.gradle index b38804a63d..07c786beb2 100644 --- a/OCH/mogo-och-taxi-passenger/build.gradle +++ b/OCH/mogo-och-taxi-passenger/build.gradle @@ -53,6 +53,7 @@ dependencies { implementation rootProject.ext.dependencies.rxandroid implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.amapnavi3dmap + implementation rootProject.ext.dependencies.amapsearch if (Boolean.valueOf(USE_MAVEN_PACKAGE)) { implementation rootProject.ext.dependencies.mogoutils implementation rootProject.ext.dependencies.mogocommons diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerNaviChangedCallback.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerNaviChangedCallback.java index c7060e2aaf..e30e544db8 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerNaviChangedCallback.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerNaviChangedCallback.java @@ -7,5 +7,4 @@ package com.mogo.och.taxi.passenger.callback; public interface IOCHTaxiPassengerNaviChangedCallback { // 当前位置距离上车点的距离(米)、预估时间(秒) 、当前路的名称 void onCurrentRoadName(String currentRoadName); - void reInitNaviAmap(boolean isPlay,boolean isRestart); } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerGeocodeSearchModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerGeocodeSearchModel.java new file mode 100644 index 0000000000..1543ad8da0 --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerGeocodeSearchModel.java @@ -0,0 +1,120 @@ +package com.mogo.och.taxi.passenger.model; + +import android.content.Context; + +import com.amap.api.services.core.LatLonPoint; +import com.amap.api.services.geocoder.GeocodeResult; +import com.amap.api.services.geocoder.GeocodeSearch; +import com.amap.api.services.geocoder.RegeocodeQuery; +import com.amap.api.services.geocoder.RegeocodeResult; +import com.amap.api.services.geocoder.RegeocodeRoad; +import com.mogo.eagle.core.network.utils.GsonUtil; +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerNaviChangedCallback; + +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P; + +/** + * @author: wangmingjun + * @date: 2021/12/6 + */ +public class TaxiPassengerGeocodeSearchModel implements GeocodeSearch.OnGeocodeSearchListener { + + private final String TAG = TaxiPassengerGeocodeSearchModel.class.getSimpleName(); + + private static Context mContext; + + private IOCHTaxiPassengerNaviChangedCallback mNaviChangedCallback; + + GeocodeSearch mGeocodeSearch = null; + + private String roadName = ""; + + private Timer timer ; + + TimerTask timerTask; + + public static TaxiPassengerGeocodeSearchModel getInstance(Context context) { + mContext = context; + return SingletonHolder.INSTANCE; + } + + private static final class SingletonHolder { + private static final TaxiPassengerGeocodeSearchModel INSTANCE = new TaxiPassengerGeocodeSearchModel(); + } + + private TaxiPassengerGeocodeSearchModel(){ + } + + public void initGeocodeSearch(){ + //通过经纬度逆地理编码得到位置 + mGeocodeSearch = new GeocodeSearch(mContext); + mGeocodeSearch.setOnGeocodeSearchListener(this); + timer = new Timer(); + timerTask = new TimerTask() { + @Override + public void run() { + if (mNaviChangedCallback != null){ + CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "roadName道路名称: " + roadName); + mNaviChangedCallback.onCurrentRoadName(roadName); + } + } + }; + try{ + timer.schedule(timerTask,500,2000); + }catch (Exception e){ + e.printStackTrace(); + } + } + + public void searchLocationInfo(double lat, double lon){ + if (null != mGeocodeSearch){ + LatLonPoint latLng = new LatLonPoint(lat, lon); + //第一个参数表示一个Latlng,第二参数表示范围多少米,第三个参数表示是火系坐标系还是GPS原生坐标系 + RegeocodeQuery query = new RegeocodeQuery(latLng, 200, GeocodeSearch.AMAP); + mGeocodeSearch.getFromLocationAsyn(query); + } + } + + public void destroyGeocodeSearch(){ + CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "destroyGeocodeSearch"); + if (mGeocodeSearch != null){ + mGeocodeSearch = null; + } + if (mNaviChangedCallback != null){ + mNaviChangedCallback = null; + } + if (null != timer){ + timer.cancel(); + } + if (null != timerTask){ + timerTask = null; + } + roadName = ""; + } + + public void setOCHTaciNaviChangedCallback(IOCHTaxiPassengerNaviChangedCallback callback){ + this.mNaviChangedCallback = callback; + } + + @Override + public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {//更新频率几十 ms, 暂定更新UI为2s一次 + if (regeocodeResult != null) { + List roads = regeocodeResult.getRegeocodeAddress().getRoads(); + CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "位置roads:" + GsonUtil.jsonFromObject(roads)); + if (roads != null && roads.size() > 0){ + roadName = roads.get(0).getName();//当前路的名字 +// mNaviChangedCallback.onCurrentRoadName(roads.get(0).getName()); + } + } + } + + @Override + public void onGeocodeSearched(GeocodeResult geocodeResult, int i) { + + } +} 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 e5302b0006..cdcaf0cd1f 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 @@ -10,7 +10,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.amap.api.maps.model.LatLng; -import com.amap.api.navi.model.NaviLatLng; import com.elegant.network.utils.GsonUtil; import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager; import com.mogo.cloud.commons.utils.CoordinateUtils; @@ -53,7 +52,6 @@ import com.mogo.service.statusmanager.StatusDescriptor; import org.jetbrains.annotations.NotNull; import java.io.IOException; -import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @@ -471,6 +469,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback } mLongitude = location.getLongitude(); mLatitude = location.getLatitude(); + CallerLogger.INSTANCE.e(M_TAXI_P + TAG,"mLongitude = "+mLongitude+", mLatitude = "+mLatitude); for (IOCHTaxiPassengerControllerStatusCallback callback :mControllerStatusCallbackMap.values()){ callback.onCarLocationChanged(location); } @@ -592,16 +591,17 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback /** * 导航订单起点到终点 获得剩余时间,里程,预计到达时间 */ - public void naviOrderStartToEnd() { - TaxiPassengerNaviToDestinationModel.getInstance(mContext).destroyAmaNavi(); + public void initGeocodeSearch() { if (mCurrentOCHOrder != null){ - NaviLatLng startNaviLatLng = new NaviLatLng(mLatitude,mLongitude); - NaviLatLng endNaviLatLng = new NaviLatLng(mCurrentOCHOrder.endSiteGcjPoint.get(1),mCurrentOCHOrder.endSiteGcjPoint.get(0)); - TaxiPassengerNaviToDestinationModel.getInstance(mContext).initAMapNavi(startNaviLatLng, endNaviLatLng); - TaxiPassengerNaviToDestinationModel.getInstance(mContext).setOCHTaciNaviChangedCallback(this); + TaxiPassengerGeocodeSearchModel.getInstance(mContext).initGeocodeSearch(); + TaxiPassengerGeocodeSearchModel.getInstance(mContext).setOCHTaciNaviChangedCallback(this); } } + public void destoryGeocodeSearch(){ + TaxiPassengerGeocodeSearchModel.getInstance(mContext).destroyGeocodeSearch(); + } + public void startOrStopQueryOrderRemaining(boolean isStart){ if (isStart){ TaxiPassengerModelLoopManager.getInstance().startQueryOrderRemainingtLoop(); @@ -661,17 +661,11 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback } } - @Override - public void reInitNaviAmap(boolean isPlay, boolean isRestart) { - naviOrderStartToEnd(); - } - /** * 订单结束或者取消的时候, 刷新导航标识位以及缓存的数据 */ public void recoverNaviInfo(){ SharedPrefsMgr.getInstance(mContext).remove(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS); - TaxiPassengerNaviToDestinationModel.getInstance(mContext).setFirstcalculateDriveRoute(0); } public void calculateRouteLineSum(List points){ diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerNaviToDestinationModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerNaviToDestinationModel.java deleted file mode 100644 index 3f7367b404..0000000000 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerNaviToDestinationModel.java +++ /dev/null @@ -1,335 +0,0 @@ -package com.mogo.och.taxi.passenger.model; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P; - -import android.Manifest; -import android.content.Context; -import android.widget.Toast; - -import com.amap.api.navi.AMapNavi; -import com.amap.api.navi.AMapNaviListener; -import com.amap.api.navi.enums.NaviType; -import com.amap.api.navi.model.AMapCalcRouteResult; -import com.amap.api.navi.model.AMapLaneInfo; -import com.amap.api.navi.model.AMapModelCross; -import com.amap.api.navi.model.AMapNaviCameraInfo; -import com.amap.api.navi.model.AMapNaviCross; -import com.amap.api.navi.model.AMapNaviInfo; -import com.amap.api.navi.model.AMapNaviLocation; -import com.amap.api.navi.model.AMapNaviRouteNotifyData; -import com.amap.api.navi.model.AMapNaviTrafficFacilityInfo; -import com.amap.api.navi.model.AMapServiceAreaInfo; -import com.amap.api.navi.model.AimLessModeCongestionInfo; -import com.amap.api.navi.model.AimLessModeStat; -import com.amap.api.navi.model.NaviInfo; -import com.amap.api.navi.model.NaviLatLng; -import com.autonavi.tbt.TrafficFacilityInfo; -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.och.taxi.passenger.callback.IOCHTaxiPassengerNaviChangedCallback; -import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; -import com.mogo.och.taxi.passenger.utils.PermissionUtil; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; - -/** - * @author: wangmingjun - * @date: 2021/12/6 - */ -public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener { - - private final String TAG = TaxiPassengerNaviToDestinationModel.class.getSimpleName(); - - private static Context mContext; - private AMapNavi mAMapNavi = null; - protected final List sList = new ArrayList(); - protected final List eList = new ArrayList(); - protected List mWayPointList = new ArrayList(); - private IOCHTaxiPassengerNaviChangedCallback mNaviChangedCallback; -// private AtomicInteger errorCount = new AtomicInteger(0); //只要订单在 如果算错就重新算,不再有次数限制 - private boolean isPlay; - - private volatile int mFirstcalculateDriveRoute = 0; - public void setFirstcalculateDriveRoute(int firstcalculateDriveRoute) { - this.mFirstcalculateDriveRoute = firstcalculateDriveRoute; - } - - - public static TaxiPassengerNaviToDestinationModel getInstance(Context context) { - mContext = context; - return SingletonHolder.INSTANCE; - } - - private static final class SingletonHolder { - private static final TaxiPassengerNaviToDestinationModel INSTANCE = new TaxiPassengerNaviToDestinationModel(); - } - private TaxiPassengerNaviToDestinationModel(){ - } - public void initAMapNavi(NaviLatLng startLatLng,NaviLatLng endLatLng) { - try { - mAMapNavi = AMapNavi.getInstance(mContext); - mAMapNavi.addAMapNaviListener(this); - mAMapNavi.setUseInnerVoice(true, true); - mAMapNavi.stopSpeak(); - sList.add(startLatLng); - eList.add(endLatLng); - int strategy = 0; - try { - //再次强调,最后一个参数为true时代表多路径,否则代表单路径 - strategy = mAMapNavi.strategyConvert(true, false, false, false, false); - } catch (Exception e) { - e.printStackTrace(); - } - mAMapNavi.calculateDriveRoute(sList, eList, mWayPointList, strategy); - }catch (Exception e) { - e.printStackTrace(); - } - } - public void setVoiceIsMute(boolean isPlay){ - if (mAMapNavi == null) return; - this.isPlay = isPlay; - if (isPlay){ - mAMapNavi.startSpeak(); - }else { - mAMapNavi.stopSpeak(); - } - } - - public void destroyAmaNavi(){ - if (mAMapNavi != null){ - isPlay = false; - mAMapNavi.stopNavi(); - mAMapNavi.destroy(); - mAMapNavi = null; - mNaviChangedCallback = null; - sList.clear(); - eList.clear(); - } - } - - public void setOCHTaciNaviChangedCallback(IOCHTaxiPassengerNaviChangedCallback callback){ - this.mNaviChangedCallback = callback; - } - @Override - public void onInitNaviFailure() { - Toast.makeText(mContext, "init navi Failed", Toast.LENGTH_SHORT).show(); - } - - @Override - public void onInitNaviSuccess() { - //初始化成功 - } - @Override - public void onCalculateRouteSuccess(int[] ints) { - //多路径算路成功回调 - CallerLogger.INSTANCE.d(M_TAXI_P + TAG,"onCalculateRouteSuccess"); - mAMapNavi.startNavi(NaviType.GPS); - } - - @Override - public void onNaviInfoUpdate(NaviInfo naviinfo) { - //导航过程中的信息更新,请看NaviInfo的具体说明 - CallerLogger.INSTANCE.d(M_TAXI_P + TAG,"naviinfo = "+naviinfo.getPathRetainDistance()+" ,"+naviinfo.getPathRetainTime() - +" ,"+naviinfo.getCurrentRoadName()); - - if (mFirstcalculateDriveRoute == 0 && SharedPrefsMgr.getInstance(mContext).getInt(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS,0) == 0){ - mFirstcalculateDriveRoute = 1; - SharedPrefsMgr.getInstance(mContext).putInt(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS,naviinfo.getPathRetainDistance()); - } - if (null != mNaviChangedCallback){ - mNaviChangedCallback.onCurrentRoadName(naviinfo.getCurrentRoadName());//当前路的名字 - } - } - - @Override - public void onCalculateRouteSuccess(AMapCalcRouteResult aMapCalcRouteResult) { -// errorCount.set(0); - } - - @Override - public void onCalculateRouteFailure(AMapCalcRouteResult result) { - //路线计算失败 - //多路径算路成功回调 -// if (errorCount.get() < 20){ -// errorCount.getAndIncrement(); - if (mNaviChangedCallback != null){ - mNaviChangedCallback.reInitNaviAmap(isPlay,true); - } -// } - if (!NetworkUtils.isConnected(mContext) || result.getErrorCode() == 2){ - if (mNaviChangedCallback != null){ - mNaviChangedCallback.reInitNaviAmap(isPlay,false); - } - return; - } - if (!PermissionUtil.isLocServiceEnable(mContext) || !PermissionUtil.checkPermission(mContext,new String[]{Manifest.permission.ACCESS_FINE_LOCATION})){ - if (mNaviChangedCallback != null){ - mNaviChangedCallback.reInitNaviAmap(isPlay,false); - } - return; - } -// if (result.getErrorCode() == 3){ -// TipToast.longTip("车辆当前坐标错误"); -// }else if (result.getErrorCode() == 6){ -// TipToast.longTip("终点坐标错误"); -// } - CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "路线计算失败:错误码=" + result.getErrorCode() + ",Error Message= " + result.getErrorDetail()); - CallerLogger.INSTANCE.i(M_TAXI_P + TAG, "错误码详细链接见:http://lbs.amap.com/api/android-navi-sdk/guide/tools/errorcode/"); - } - @Override - public void onStartNavi(int type) { - //开始导航回调 - } - - @Override - public void onTrafficStatusUpdate() { - // - } - - @Override - public void onLocationChange(AMapNaviLocation location) { - //当前位置回调 - } - - @Override - public void onGetNavigationText(int type, String text) { - //播报类型和播报文字回调 - } - - @Override - public void onGetNavigationText(String s) { - - } - - @Override - public void onEndEmulatorNavi() { - //结束模拟导航 - } - - @Override - public void onArriveDestination() { - //到达目的地 - } - - @Override - public void onCalculateRouteFailure(int errorInfo) { - - } - - @Override - public void onReCalculateRouteForYaw() { - //偏航后重新计算路线回调 - } - - @Override - public void onReCalculateRouteForTrafficJam() { - //拥堵后重新计算路线回调 - } - - @Override - public void onArrivedWayPoint(int wayID) { - //到达途径点 - } - - @Override - public void onGpsOpenStatus(boolean enabled) { - //GPS开关状态回调 - } - @Override - public void showModeCross(AMapModelCross aMapModelCross) { - } - - @Override - public void hideModeCross() { - - } - - @Override - public void updateIntervalCameraInfo(AMapNaviCameraInfo aMapNaviCameraInfo, AMapNaviCameraInfo aMapNaviCameraInfo1, int i) { - - } - - @Override - public void showLaneInfo(AMapLaneInfo aMapLaneInfo) { - //显示车道信息 - } - - @Override - public void onNaviRouteNotify(AMapNaviRouteNotifyData aMapNaviRouteNotifyData) { - - } - - @Override - public void updateCameraInfo(AMapNaviCameraInfo[] aMapCameraInfos) { - - } - - @Override - public void onServiceAreaUpdate(AMapServiceAreaInfo[] amapServiceAreaInfos) { - - } - - @Override - public void onNaviInfoUpdated(AMapNaviInfo aMapNaviInfo) { - - } - - @Override - public void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo aMapNaviTrafficFacilityInfo) { - //已过时 - } - - @Override - public void OnUpdateTrafficFacility(TrafficFacilityInfo trafficFacilityInfo) { - - } - - @Override - public void showCross(AMapNaviCross aMapNaviCross) { - //显示放大图回调 - } - - @Override - public void hideCross() { - //隐藏放大图回调 - } - - @Override - public void showLaneInfo(AMapLaneInfo[] laneInfos, byte[] laneBackgroundInfo, byte[] laneRecommendedInfo) { - //过时 - } - - @Override - public void hideLaneInfo() { - //隐藏车道信息 - } - - @Override - public void notifyParallelRoad(int i) { - } - - @Override - public void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo[] aMapNaviTrafficFacilityInfos) { - //更新交通设施信息 - } - - @Override - public void updateAimlessModeStatistics(AimLessModeStat aimLessModeStat) { - //更新巡航模式的统计信息 - } - - - @Override - public void updateAimlessModeCongestionInfo(AimLessModeCongestionInfo aimLessModeCongestionInfo) { - //更新巡航模式的拥堵信息 - } - - @Override - public void onPlayRing(int i) { - - } - -} diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java index 92f9623830..fd1d8ef13a 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java @@ -19,8 +19,8 @@ import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerADASStatusCallback; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCallback; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback; import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum; +import com.mogo.och.taxi.passenger.model.TaxiPassengerGeocodeSearchModel; import com.mogo.och.taxi.passenger.model.TaxiPassengerModel; -import com.mogo.och.taxi.passenger.model.TaxiPassengerNaviToDestinationModel; import com.mogo.och.taxi.passenger.ui.TaxiPassengerBaseFragment; /** @@ -146,6 +146,7 @@ public class BaseTaxiPassengerPresenter extends Presenter mView.showOrHideServingOrderFragment(false)); TaxiPassengerModel.getInstance().recoverNaviInfo(); + TaxiPassengerGeocodeSearchModel.getInstance(getContext()).destroyGeocodeSearch(); return; } if (TaxiPassengerOrderStatusEnum.ArriveAtStart.getCode() == order.orderStatus @@ -155,7 +156,7 @@ public class BaseTaxiPassengerPresenter extends Presenter { mView.showOrHideServingOrderFragment(false); mView.showOrHideArrivedEndLayout(true, order.endSiteAddr); @@ -167,6 +168,7 @@ public class BaseTaxiPassengerPresenter extends Presenter mView.onCarLocationChanged(location)); + TaxiPassengerGeocodeSearchModel.getInstance(getContext()).searchLocationInfo(location.getLatitude(),location.getLongitude()); } } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.java index 4565a45ab7..de4c0fcb2a 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.java @@ -173,7 +173,6 @@ public class TaxiPassengerMapDirectionView @Override public void onLocationChanged(@org.jetbrains.annotations.Nullable MogoLocation location, int from) { - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "onCarLocationChanged2 :" + location.getLatitude()+":"+location.getLongitude()); if (location == null){ return; } @@ -187,19 +186,21 @@ public class TaxiPassengerMapDirectionView boundsBuilder.include(currentLatLng); boundsBuilder.include(endLatLng); //第二个参数为四周留空宽度 - mAMap.animateCamera(CameraUpdateFactory.newLatLngBoundsRect(boundsBuilder.build(), 100,100,100,100)); + mAMap.moveCamera(CameraUpdateFactory.newLatLngBoundsRect(boundsBuilder.build(), 100,100,100,100)); + CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "onCarLocationChanged2--moveCamera :" + location.getLatitude()+", "+location.getLongitude()); } else { //设置希望展示的地图缩放级别 CameraPosition cameraPosition = new CameraPosition.Builder() .target(mCarMarker.getPosition()).tilt(0).bearing(location.getBearing()).zoom(zoomLevel).build(); - mAMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); + mAMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); } //更新车辆位置 if (mCarMarker != null) { - CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "location.getBearing() = " + location.getBearing()); +// CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "location.getBearing() = " + location.getBearing()); mCarMarker.setRotateAngle(360 - location.getBearing()); mCarMarker.setPosition(currentLatLng); +// CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "onCarLocationChanged2--loacation :" + location.getLatitude()+", "+location.getLongitude()); mCarMarker.setToTop(); } } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerServingOrderFragment.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerServingOrderFragment.java index faf1b78ea0..20f6b833e4 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerServingOrderFragment.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerServingOrderFragment.java @@ -28,21 +28,13 @@ import com.mogo.och.taxi.passenger.callback.ITaxiPassengerMapViewCallback; import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum; import com.mogo.och.taxi.passenger.model.TaxiPassengerModel; -import com.mogo.och.taxi.passenger.model.TaxiPassengerNaviToDestinationModel; import com.mogo.och.taxi.passenger.presenter.TaxiPassengerServingOrderPresenter; import com.mogo.och.taxi.passenger.utils.TPRouteDataTestUtils; import com.mogo.och.taxi.passenger.utils.TaxiPassengerUtils; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.util.ArrayList; import java.util.Calendar; import java.util.List; -import mogo.telematics.pad.MessagePad; - /** * @author: wangmingjun * @date: 2022/3/8 @@ -168,7 +160,9 @@ public class TaxiPassengerServingOrderFragment extends } private void updateDriveRoadName(String currentRoadName){ - mProgessDes.setText(currentRoadName); + if (mProgessDes != null){ + mProgessDes.setText(currentRoadName); + } } @Override @@ -177,18 +171,19 @@ public class TaxiPassengerServingOrderFragment extends if (mMapDirectionView != null) { mMapDirectionView.onResume(); } - TaxiPassengerModel.getInstance().naviOrderStartToEnd(); + TaxiPassengerModel.getInstance().initGeocodeSearch(); } @Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); - if (hidden){//fragment 隐藏, 导航取消 + if (hidden){//fragment 隐藏, 导航取消c clearPolyline(); - TaxiPassengerNaviToDestinationModel.getInstance(getContext()).destroyAmaNavi(); + TaxiPassengerModel.getInstance().destoryGeocodeSearch(); }else { //fragment 显示, 导航开始 - TaxiPassengerModel.getInstance().naviOrderStartToEnd(); + CallerLogger.INSTANCE.e(M_TAXI_P +"TaxiPassengerNaviTo","initGeocodeSearch"); + TaxiPassengerModel.getInstance().initGeocodeSearch(); } } @@ -207,7 +202,7 @@ public class TaxiPassengerServingOrderFragment extends if (mMapDirectionView != null) { mMapDirectionView.onDestroy(); } - TaxiPassengerNaviToDestinationModel.getInstance(getContext()).destroyAmaNavi(); + TaxiPassengerModel.getInstance().destoryGeocodeSearch(); } public void routeResult(List latLngList) { diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java index 0a9bdcb5dc..f3e222a540 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java @@ -348,7 +348,7 @@ public class TaxiFragment extends BaseTaxiTabFragment { showNotice("自动驾驶已启动,请系好安全带"); TaxiModel.getInstance().setOnTheWayToEndStation(); - testRouteInfoUpload(); +// testRouteInfoUpload(); }); } From 5956825cea05e97aac500a4d065046b7f4fe8bb3 Mon Sep 17 00:00:00 2001 From: renwj Date: Fri, 22 Apr 2022 17:34:26 +0800 Subject: [PATCH 6/6] =?UTF-8?q?[V2X]=E4=B9=98=E5=AE=A2=E5=B1=8F=E4=B8=8D?= =?UTF-8?q?=E6=92=AD=E6=94=BE=E8=AF=AD=E9=9F=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [V2X]乘客屏不播放语音 --- .../com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt | 3 ++- .../v2x/events/scenario/scene/road/V2XRoadEventScenario.java | 5 +---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index ee7d9ab73f..62fe6d6e0d 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 @@ -453,6 +453,7 @@ class MoGoHmiFragment : MvpFragment(), playTts: Boolean, expireTime: Long ) { + val playTTS = playTts && !AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode) lifecycleScope.launchWhenResumed { activity?.let { val floatWindow = mWarningFloat @@ -489,7 +490,7 @@ class MoGoHmiFragment : MvpFragment(), "$M_HMI$TAG", "mWarningFloat = $mWarningFloat---ttsContent = $ttsContent" ) - if (mWarningFloat != null && !TextUtils.isEmpty(ttsContent) && playTts) { + if (mWarningFloat != null && !TextUtils.isEmpty(ttsContent) && playTTS) { CallerLogger.d("$M_HMI$TAG", "---> ttsContent = $ttsContent") AIAssist.getInstance(activity) .speakTTSVoice(ttsContent) 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 f6569ed240..72dbae0235 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,12 +2,10 @@ 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 com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.enums.WarningDirectionEnum; import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager; -import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; import com.mogo.eagle.core.function.v2x.events.consts.V2XConst; @@ -100,8 +98,7 @@ public class V2XRoadEventScenario extends AbsV2XScenario imp V2XRoadEventEntity content = entity != null ? entity.getContent() : null; if (content != null) { //显示警告红边 - boolean playTts = !entity.isOnlyShow() && !AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode); - CallerHmiManager.INSTANCE.showWarningV2X(entity.getType(), content.getAlarmContent(), content.getTts(), TAG, this, playTts, TimeUnit.SECONDS.toMillis(5)); + CallerHmiManager.INSTANCE.showWarningV2X(entity.getType(), content.getAlarmContent(), content.getTts(), TAG, this, !entity.isOnlyShow(), TimeUnit.SECONDS.toMillis(5)); } }