diff --git a/gradle.properties b/gradle.properties index c12c099553..54fa4c0895 100644 --- a/gradle.properties +++ b/gradle.properties @@ -155,19 +155,19 @@ LOGLIB_VERSION = 1.0.4 ######## MogoAiCloudSDK Version # 网络请求 -MOGO_NETWORK_VERSION=1.0.74 +MOGO_NETWORK_VERSION=1.0.84 # 鉴权 -MOGO_PASSPORT_VERSION=1.0.74 +MOGO_PASSPORT_VERSION=1.0.84 # 常链接 -MOGO_SOCKET_VERSION=1.0.74 +MOGO_SOCKET_VERSION=1.0.84 # 数据采集 -MOGO_REALTIME_VERSION=1.0.74 +MOGO_REALTIME_VERSION=1.0.84 # 探路,道路事件发布,获取 -MOGO_TANLU_VERSION=1.0.74 +MOGO_TANLU_VERSION=1.0.84 # 直播推流 -MOGO_LIVE_VERSION=1.0.74 +MOGO_LIVE_VERSION=1.0.84 # 直播拉流 -MOGO_TRAFFICLIVE_VERSION=1.0.74 +MOGO_TRAFFICLIVE_VERSION=1.0.84 ######## Foundation MogoAiCloud Module # mogoAiCloud apk services diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java index b47d6ef3af..fb1443b279 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java @@ -267,6 +267,11 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer { } } + @Override + public String getMarkerAssInfo() { + return null; + } + @Override public void setOnMarkerClickListener( IMogoMarkerClickListener listener ) { mMogoMarkerClickListener = listener; diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapMarkerClickHandler.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapMarkerClickHandler.java index 74ab766cd3..b1a4d787f3 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapMarkerClickHandler.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapMarkerClickHandler.java @@ -1,16 +1,18 @@ package com.mogo.map.impl.custom; -import android.util.Log; - +import com.mogo.map.impl.custom.marker.AMapMarkerWrapper; import com.mogo.map.impl.custom.marker.MarkerWrapperClickHelper; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.IMogoMarkerClickListener; +import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.map.marker.MogoMarkersHandler; import com.mogo.utils.logger.Logger; import com.zhidaoauto.map.sdk.open.marker.Marker; import java.util.Map; +import static com.mogo.map.marker.MarkerType.MAP_STATIC; + /** * @author congtaowang * @since 2019-12-24 @@ -25,9 +27,9 @@ public class AMapMarkerClickHandler { } public static AMapMarkerClickHandler getInstance() { - if ( sInstance == null ) { - synchronized ( AMapMarkerClickHandler.class ) { - if ( sInstance == null ) { + if (sInstance == null) { + synchronized (AMapMarkerClickHandler.class) { + if (sInstance == null) { sInstance = new AMapMarkerClickHandler(); } } @@ -44,23 +46,32 @@ public class AMapMarkerClickHandler { return sInstance; } - public boolean handleMarkerClicked( Marker marker ) { - if ( marker == null ) { + public boolean handleMarkerClicked(Marker marker) { + if (marker == null) { return false; } - Map< String, IMogoMarker > mogoMarkerMap = MarkerWrapperClickHelper.getInstance().getMogoMarkerMap(); - if ( mogoMarkerMap.containsKey( marker.getId() ) ) { - IMogoMarker mogoMarker = mogoMarkerMap.get( marker.getId() ); + //地图道路上静态数,暂时只过滤traffic类型下发点击事件 + if (MarkerWrapperClickHelper.getInstance().isStaticMarker(marker.getId())){ + IMogoMarker iMogoMarker = new AMapMarkerWrapper(marker,new MogoMarkerOptions()); + iMogoMarker.setOwner(MAP_STATIC); //TODO 后续可能由于类型比较多,需要owner匹配机制,以及控制owner细粒度 + Logger.d("AMapMarkerWrapper", "traffic marker 点击回调"); + return MogoMarkersHandler.getInstance().onStaticMarkerClicked(iMogoMarker); + } + + Map mogoMarkerMap = MarkerWrapperClickHelper.getInstance().getMogoMarkerMap(); + if (mogoMarkerMap.containsKey(marker.getId())) { + IMogoMarker mogoMarker = mogoMarkerMap.get(marker.getId()); final IMogoMarkerClickListener listener = mogoMarker.getOnMarkerClickListener(); - Logger.d( "AMapMarkerWrapper", "marker 点击回调:%s -> %s", mogoMarker, marker ); - if ( listener != null ) { - boolean result = listener.onMarkerClicked( mogoMarker ); - if ( result ) { + Logger.d("AMapMarkerWrapper", "marker 点击回调:%s -> %s", mogoMarker, marker); + if (listener != null) { + boolean result = listener.onMarkerClicked(mogoMarker); + if (result) { return true; } } - return MogoMarkersHandler.getInstance().onMarkerClicked( mogoMarker ); + return MogoMarkersHandler.getInstance().onMarkerClicked(mogoMarker); } return false; } + } diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java index 8b0023dcf1..797ebdbf4e 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java @@ -1115,7 +1115,7 @@ public class AMapViewWrapper implements IMogoMapView, if (roadCache == null || roadCache == noCache) { SinglePointRoadInfo singlePointRoadInfo = MapDataApi.INSTANCE.getSinglePointMatchRoad(((float) wgs[0]), ((float) wgs[1]), ((float) angle), isGpsLocation, isRTK); if (singlePointRoadInfo != null && singlePointRoadInfo.getCoords() != null && !singlePointRoadInfo.getCoords().isEmpty()) { - Log.i("timer-matchRoad-4", "cost " + (System.currentTimeMillis() - start) + "ms roadId: " + singlePointRoadInfo.getRoadId()); +// Log.i("timer-matchRoad-4", "cost " + (System.currentTimeMillis() - start) + "ms roadId: " + singlePointRoadInfo.getRoadId()); roadCache = new RoadCacheWrapper(singlePointRoadInfo.getCoords()); roadCache.setLaneWidth(singlePointRoadInfo.getLaneWidth()); // 在地图上画点的测试方法 @@ -1141,7 +1141,7 @@ public class AMapViewWrapper implements IMogoMapView, } } - Log.i("timer-matchRoad-1", "cost " + (System.currentTimeMillis() - start) + "ms"); +// Log.i("timer-matchRoad-1", "cost " + (System.currentTimeMillis() - start) + "ms"); if (roadCache != null && roadCache.getRoad() != null && !roadCache.getRoad().isEmpty()) { @@ -1153,16 +1153,16 @@ public class AMapViewWrapper implements IMogoMapView, if (matchThreshold > 0 && matchedPoint[2] > 0 && matchedPoint[2] <= matchThreshold) { // 目标车在阈值范围内 roadCacheMap.put(id, roadCache); - Log.i("timer-matchRoad-3", "cost " + (System.currentTimeMillis() - start) + "ms"); +// Logger.i("timer-matchRoad-3", "cost " + (System.currentTimeMillis() - start) + "ms"); return matchedPoint; -// Log.i("timer-matchRoad-2", "cost " + (System.currentTimeMillis() - start) + "ms roadId: "+roadCache.getLastLat()); +// Logger.i("timer-matchRoad-2", "cost " + (System.currentTimeMillis() - start) + "ms roadId: "+roadCache.getLastLat()); } else if (matchedPoint[2] > matchThreshold && matchedPoint[2] < 1.5) { // 目标车在阈值范围外,也就是说距离道路中心线太远了,就不吸附了 return null; } else { // 目标车到道路中心线的映射点不在道路上,也就是已经使出了缓存的那条道路,需要重新获取一条道路,用useCache这个参数来避免重复递归 roadCacheMap.put(id, noCache); - Log.i("timer-matchRoad-2", "cost " + (System.currentTimeMillis() - start) + "ms roadId: " + roadCache.getLastLat()); +// Logger.i("timer-matchRoad-2", "cost " + (System.currentTimeMillis() - start) + "ms roadId: " + roadCache.getLastLat()); if (usdCache) { return matchRoad(id, lon, lat, angle, isGpsLocation, isRTK, false); } else { diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/AMapMarkerWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/AMapMarkerWrapper.java index 72baaebf08..376618d1a3 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/AMapMarkerWrapper.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/AMapMarkerWrapper.java @@ -264,6 +264,14 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer { } } + @Override + public String getMarkerAssInfo() { + if ( mMarker != null ) { + return mMarker.getMarkeOptions().getAssInfo(); + } + return null; + } + @Override public void setOnMarkerClickListener( IMogoMarkerClickListener listener ) { mMogoMarkerClickListener = listener; diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/MarkerWrapperClickHelper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/MarkerWrapperClickHelper.java index 4f45d44088..ff2c1bbff4 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/MarkerWrapperClickHelper.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/marker/MarkerWrapperClickHelper.java @@ -1,5 +1,6 @@ package com.mogo.map.impl.custom.marker; +import com.mogo.map.impl.custom.AMapMarkerClickHandler; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.IMogoMarkerClickListener; @@ -10,9 +11,16 @@ public class MarkerWrapperClickHelper { private volatile static MarkerWrapperClickHelper markerWrapperClickHelper; - private Map mogoMarkerMap = new HashMap<>(); + private final Map mogoMarkerMap = new HashMap<>(); + + private MarkerWrapperClickHelper(){ + + } public void setMogoMarkerMap(String id,IMogoMarker iMogoMarker){ + if(isStaticMarker(id)){ + return; + } this.mogoMarkerMap.put(id,iMogoMarker); } @@ -30,4 +38,8 @@ public class MarkerWrapperClickHelper { } return markerWrapperClickHelper; } + + public boolean isStaticMarker(String id){ + return id.contains("traffic"); + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java index ea7fc5a290..d1605deb43 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarker.java @@ -167,6 +167,12 @@ public interface IMogoMarker { */ void showInfoWindow(); + /** + * Marker对象 AssInfo + * @return marker对象assInfo + */ + String getMarkerAssInfo(); + /** * 设置点击事件 * diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarkerClickListener.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarkerClickListener.java index 520afe9932..0298c65686 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarkerClickListener.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/IMogoMarkerClickListener.java @@ -14,5 +14,16 @@ public interface IMogoMarkerClickListener { * @param marker * @return true - 事件已经处理完毕不继续往下传,否则继续往下传 */ - boolean onMarkerClicked( IMogoMarker marker ); + default boolean onMarkerClicked(IMogoMarker marker){ + return false; + }; + + /** + * 地图上静态Marker点击事件传递 + * @param marker + * @return true - 事件已经处理完毕不继续往下传,否则继续往下传 + */ + default boolean onStaticMarkerClicked(IMogoMarker marker){ + return false; + }; } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MarkerType.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MarkerType.java new file mode 100644 index 0000000000..9f57a444f2 --- /dev/null +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MarkerType.java @@ -0,0 +1,7 @@ +package com.mogo.map.marker; + +public class MarkerType { + + public static final String MAP_STATIC = "mapStatic"; + public static final String MAP_STATIC_TRAFFIC = "trafficcamera"; +} diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkersHandler.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkersHandler.java index a6e5f8f14c..2530bb1f29 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkersHandler.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkersHandler.java @@ -34,7 +34,7 @@ public class MogoMarkersHandler implements IMogoMarkerClickListener, IMogoMarker return sInstance; } - private Map< String, List< IMogoMarker > > mServicesMarkers = new ConcurrentHashMap<>(); + private final Map< String, List< IMogoMarker > > mServicesMarkers = new ConcurrentHashMap<>(); private MogoMarkersHandler() { } @@ -121,6 +121,14 @@ public class MogoMarkersHandler implements IMogoMarkerClickListener, IMogoMarker return false; } + @Override + public boolean onStaticMarkerClicked(IMogoMarker marker) { + if ( mDelegate != null ) { + return mDelegate.onStaticMarkerClicked( marker ); + } + return false; + } + /** * @param tag 需要保留的类型 */ diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java index 7f21efb15f..dcbfcd4d1d 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java @@ -199,7 +199,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { recognizedListResult.lat = matchLonLat[1]; mLastPositions.put( uniqueKey, recognizedListResult ); - Logger.d( "matchRoad", "cost = %s", System.currentTimeMillis() - start ); +// Logger.d( "matchRoad", "cost = %s", System.currentTimeMillis() - start ); newAdasRecognizedMarkersCaches.put( uniqueKey, marker ); if ( lastPosition != null ) { diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java index 14bbb3da15..517b3a0326 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/CameraLiveNoticeHelper.java @@ -8,6 +8,7 @@ import android.util.Log; import com.mogo.commons.AbsMogoApplication; import com.mogo.map.marker.IMogoMarker; +import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.extensions.R; @@ -40,16 +41,18 @@ public class CameraLiveNoticeHelper implements IMogoCloudOnMsgListener { mContext = context; MoGoAiCloudRealTime.registerOnMsgListener(this); - MogoApisHandler.getInstance().getApis().getRegisterCenterApi().registerMogoMarkerClickListener(PushDataType.TYPE_PUSH_CAMERA_DATA, marker -> { - //点击的marker的具体数据 - if (mCloudRoadData != null && !TextUtils.isEmpty(mCloudRoadData.getRtmpUrl())) { - CameraLiveManager.getInstance().init(mCloudRoadData); - } else { - Logger.e(TAG, " onMarkerClicked mCloudRoadData == null "); - TipToast.shortTip("直播流地址为空"); + MogoApisHandler.getInstance().getApis().getRegisterCenterApi().registerMogoMarkerClickListener(PushDataType.TYPE_PUSH_CAMERA_DATA, new IMogoMarkerClickListener() { + @Override + public boolean onMarkerClicked(IMogoMarker marker) { + //点击的marker的具体数据 + if (mCloudRoadData != null && !TextUtils.isEmpty(mCloudRoadData.getRtmpUrl())) { + CameraLiveManager.getInstance().init(mCloudRoadData); + } else { + Logger.e(TAG, " onMarkerClicked mCloudRoadData == null "); + TipToast.shortTip("直播流地址为空"); + } + return false; } - - return false; }); // loadMarker(false); diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java index 9f2b9ccc07..f13c5d27d0 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java @@ -1,7 +1,6 @@ package com.mogo.module.main; import android.location.Location; -import android.util.Log; import android.view.MotionEvent; import com.mogo.map.MogoLatLng; @@ -20,7 +19,6 @@ import com.mogo.map.navi.MogoCongestionInfo; import com.mogo.map.navi.MogoNaviInfo; import com.mogo.map.navi.MogoTraffic; import com.mogo.map.uicontroller.EnumMapUI; -import com.mogo.module.common.MogoApisHandler; import com.mogo.module.main.registercenter.MogoRegisterCenterHandler; import com.mogo.service.adas.IMogoADASControlStatusChangedListener; import com.mogo.utils.logger.Logger; @@ -28,6 +26,7 @@ import com.zhidao.adasconfig.common.config.EnumCarChatIncognitoMode; import com.zhidao.adasconfig.listener.IAdasSettingUIListener; import com.zhidao.adasconfig.listener.IAdasSkinStyleListener; +import java.util.ArrayList; import java.util.Iterator; /** @@ -80,6 +79,22 @@ public class EventDispatchCenter implements return false; } + @Override + public boolean onStaticMarkerClicked(IMogoMarker marker) { + ArrayList list = MogoRegisterCenterHandler.getInstance().getStaticMarkerListener( marker.getOwner() ); + if(list == null){ + return false; + } + try { + for (IMogoMarkerClickListener listener : list) { + return listener.onStaticMarkerClicked( marker ); + } + } catch ( Exception e){ + Logger.e( TAG, e, "error." ); + } + return false; + } + @Override public void onUpdateTraffic2( MogoTraffic traffic ) { Iterator< IMogoAimlessModeListener > iterator = MogoRegisterCenterHandler.getInstance().getAimlessModeListeners(); diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenter.java index 447b3005cc..a44091a55d 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenter.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenter.java @@ -22,100 +22,110 @@ import java.util.Iterator; *

* 描述 */ -@Route( path = MogoServicePaths.PATH_REGISTER_CENTER ) +@Route(path = MogoServicePaths.PATH_REGISTER_CENTER) public class MogoRegisterCenter implements IMogoRegisterCenter { @Override - public void registerMogoModuleLifecycle( String moduleName, IMogoModuleLifecycle lifecycle ) { - MogoRegisterCenterHandler.getInstance().registerMogoModuleLifecycle( moduleName, lifecycle ); + public void registerMogoModuleLifecycle(String moduleName, IMogoModuleLifecycle lifecycle) { + MogoRegisterCenterHandler.getInstance().registerMogoModuleLifecycle(moduleName, lifecycle); } @Override - public void unregisterMogoModuleLifecycle( String moduleName ) { - MogoRegisterCenterHandler.getInstance().unregisterMogoModuleLifecycle( moduleName ); + public void unregisterMogoModuleLifecycle(String moduleName) { + MogoRegisterCenterHandler.getInstance().unregisterMogoModuleLifecycle(moduleName); } @Override - public void registerMogoMapListener( String moduleName, IMogoMapListener listener ) { - MogoRegisterCenterHandler.getInstance().registerMogoMapListener( moduleName, listener ); + public void registerMogoMapListener(String moduleName, IMogoMapListener listener) { + MogoRegisterCenterHandler.getInstance().registerMogoMapListener(moduleName, listener); } @Override - public void unregisterMogoMapListener( String moduleName ) { - MogoRegisterCenterHandler.getInstance().unregisterMogoMapListener( moduleName ); + public void unregisterMogoMapListener(String moduleName) { + MogoRegisterCenterHandler.getInstance().unregisterMogoMapListener(moduleName); } @Override - public void registerMogoNaviListener( String moduleName, IMogoNaviListener listener ) { - MogoRegisterCenterHandler.getInstance().registerMogoNaviListener( moduleName, listener ); + public void registerMogoNaviListener(String moduleName, IMogoNaviListener listener) { + MogoRegisterCenterHandler.getInstance().registerMogoNaviListener(moduleName, listener); } @Override - public void unregisterMogoNaviListener( String moduleName ) { - MogoRegisterCenterHandler.getInstance().unregisterMogoNaviListener( moduleName ); + public void unregisterMogoNaviListener(String moduleName) { + MogoRegisterCenterHandler.getInstance().unregisterMogoNaviListener(moduleName); } @Override - public void registerMogoLocationListener( String moduleName, IMogoLocationListener listener ) { - MogoRegisterCenterHandler.getInstance().registerMogoLocationListener( moduleName, listener ); + public void registerMogoLocationListener(String moduleName, IMogoLocationListener listener) { + MogoRegisterCenterHandler.getInstance().registerMogoLocationListener(moduleName, listener); } @Override - public Iterator< IMogoLocationListener > getLocationListeners() { + public Iterator getLocationListeners() { return MogoRegisterCenterHandler.getInstance().getLocationListeners(); } @Override - public void unregisterMogoLocationListener( String moduleName ) { - MogoRegisterCenterHandler.getInstance().unregisterMogoLocationListener( moduleName ); + public void unregisterMogoLocationListener(String moduleName) { + MogoRegisterCenterHandler.getInstance().unregisterMogoLocationListener(moduleName); } @Override - public void registerMogoMarkerClickListener( String moduleName, IMogoMarkerClickListener listener ) { - MogoRegisterCenterHandler.getInstance().registerMogoMarkerClickListener( moduleName, listener ); + public void registerMogoMarkerClickListener(String moduleName, IMogoMarkerClickListener listener) { + MogoRegisterCenterHandler.getInstance().registerMogoMarkerClickListener(moduleName, listener); } @Override - public void unregisterMogoMarkerClickListener( String moduleName ) { - MogoRegisterCenterHandler.getInstance().unregisterMogoMarkerClickListener( moduleName ); + public void unregisterMogoMarkerClickListener(String moduleName) { + MogoRegisterCenterHandler.getInstance().unregisterMogoMarkerClickListener(moduleName); } @Override - public void registerMogoAimlessModeListener( String tag, IMogoAimlessModeListener listener ) { - MogoRegisterCenterHandler.getInstance().registerMogoAimlessModeListener( tag, listener ); + public void registerMogoStaticMarkerClickListener(String tag, IMogoMarkerClickListener listener) { + MogoRegisterCenterHandler.getInstance().registerMogoStaticMarkerClickListener(tag, listener); } @Override - public void unregisterMogoAimlessModeListener( String tag ) { - MogoRegisterCenterHandler.getInstance().unregisterMogoAimlessModeListener( tag ); + public void unregisterMogoStaticMarkerClickListener(String tag, IMogoMarkerClickListener listener ) { + MogoRegisterCenterHandler.getInstance().unregisterMogoStaticMarkerClickListener(tag, listener); } @Override - public void registerCarLocationChangedListener( String tag, IMogoCarLocationChangedListener listener ) { - MogoRegisterCenterHandler.getInstance().registerCarLocationChangedListener( tag, listener ); + public void registerMogoAimlessModeListener(String tag, IMogoAimlessModeListener listener) { + MogoRegisterCenterHandler.getInstance().registerMogoAimlessModeListener(tag, listener); } @Override - public void unregisterCarLocationChangedListener( String tag, IMogoCarLocationChangedListener listener ) { - MogoRegisterCenterHandler.getInstance().unregisterCarLocationChangedListener( tag, listener ); + public void unregisterMogoAimlessModeListener(String tag) { + MogoRegisterCenterHandler.getInstance().unregisterMogoAimlessModeListener(tag); } @Override - public void registerADASControlStatusChangedListener( String tag, IMogoADASControlStatusChangedListener listener ) { - MogoRegisterCenterHandler.getInstance().registerADASControlStatusChangedListener( tag, listener ); + public void registerCarLocationChangedListener(String tag, IMogoCarLocationChangedListener listener) { + MogoRegisterCenterHandler.getInstance().registerCarLocationChangedListener(tag, listener); } @Override - public void unregisterADASControlStatusChangedListener( String tag ) { - MogoRegisterCenterHandler.getInstance().unregisterADASControlStatusChangedListener( tag ); + public void unregisterCarLocationChangedListener(String tag, IMogoCarLocationChangedListener listener) { + MogoRegisterCenterHandler.getInstance().unregisterCarLocationChangedListener(tag, listener); } @Override - public Iterator< IMogoADASControlStatusChangedListener > getAdasControlStatusChangedListeners() { + public void registerADASControlStatusChangedListener(String tag, IMogoADASControlStatusChangedListener listener) { + MogoRegisterCenterHandler.getInstance().registerADASControlStatusChangedListener(tag, listener); + } + + @Override + public void unregisterADASControlStatusChangedListener(String tag) { + MogoRegisterCenterHandler.getInstance().unregisterADASControlStatusChangedListener(tag); + } + + @Override + public Iterator getAdasControlStatusChangedListeners() { return MogoRegisterCenterHandler.getInstance().getAdasControlStatusChangedListeners(); } @Override - public void init( Context context ) { + public void init(Context context) { } } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenterHandler.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenterHandler.java index facba033cc..ce38e2d2c1 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenterHandler.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenterHandler.java @@ -12,6 +12,7 @@ import com.mogo.service.adas.IMogoADASControlStatusChangedListener; import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.service.module.IMogoRegisterCenter; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -27,22 +28,23 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter { private static volatile MogoRegisterCenterHandler sInstance; - private Map< String, IMogoModuleLifecycle > mLifecycle = new HashMap<>(); - private Map< String, IMogoMapListener > mMap = new HashMap<>(); - private Map< String, IMogoNaviListener > mNavi = new ConcurrentHashMap<>(); - private Map< String, IMogoLocationListener > mLocation = new HashMap<>(); - private Map< String, IMogoMarkerClickListener > mMarker = new HashMap<>(); - private Map< String, IMogoAimlessModeListener > mAimless = new HashMap<>(); - private Map< String, IMogoCarLocationChangedListener > mCarLocations = new ConcurrentHashMap<>(); - private Map< String, IMogoADASControlStatusChangedListener > mADAS = new HashMap<>(); + private final Map mLifecycle = new HashMap<>(); + private final Map mMap = new HashMap<>(); + private final Map mNavi = new ConcurrentHashMap<>(); + private final Map mLocation = new HashMap<>(); + private final Map mMarker = new HashMap<>(); + private final Map> mStaticMarker = new HashMap<>(); + private final Map mAimless = new HashMap<>(); + private final Map mCarLocations = new ConcurrentHashMap<>(); + private final Map mADAS = new HashMap<>(); private MogoRegisterCenterHandler() { } public static MogoRegisterCenterHandler getInstance() { - if ( sInstance == null ) { - synchronized ( MogoRegisterCenterHandler.class ) { - if ( sInstance == null ) { + if (sInstance == null) { + synchronized (MogoRegisterCenterHandler.class) { + if (sInstance == null) { sInstance = new MogoRegisterCenterHandler(); } } @@ -56,141 +58,166 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter { @Override - public void registerMogoModuleLifecycle( String tag, IMogoModuleLifecycle lifecycle ) { - mLifecycle.put( tag, lifecycle ); + public void registerMogoModuleLifecycle(String tag, IMogoModuleLifecycle lifecycle) { + mLifecycle.put(tag, lifecycle); } @Override - public void unregisterMogoModuleLifecycle( String tag ) { - mLifecycle.remove( tag ); + public void unregisterMogoModuleLifecycle(String tag) { + mLifecycle.remove(tag); } @Override - public void registerMogoMapListener( String tag, IMogoMapListener listener ) { - mMap.put( tag, listener ); + public void registerMogoMapListener(String tag, IMogoMapListener listener) { + mMap.put(tag, listener); } @Override - public void unregisterMogoMapListener( String tag ) { - mMap.remove( tag ); + public void unregisterMogoMapListener(String tag) { + mMap.remove(tag); } @Override - public void registerMogoNaviListener( String tag, IMogoNaviListener listener ) { - mNavi.put( tag, listener ); + public void registerMogoNaviListener(String tag, IMogoNaviListener listener) { + mNavi.put(tag, listener); } @Override - public void unregisterMogoNaviListener( String tag ) { - mNavi.remove( tag ); + public void unregisterMogoNaviListener(String tag) { + mNavi.remove(tag); } @Override - public void registerMogoLocationListener( String tag, IMogoLocationListener listener ) { - mLocation.put( tag, listener ); + public void registerMogoLocationListener(String tag, IMogoLocationListener listener) { + mLocation.put(tag, listener); } @Override - public void unregisterMogoLocationListener( String tag ) { - mLocation.remove( tag ); + public void unregisterMogoLocationListener(String tag) { + mLocation.remove(tag); } @Override - public void registerMogoMarkerClickListener( String tag, IMogoMarkerClickListener listener ) { - mMarker.put( tag, listener ); + public void registerMogoMarkerClickListener(String tag, IMogoMarkerClickListener listener) { + mMarker.put(tag, listener); } @Override - public void unregisterMogoMarkerClickListener( String tag ) { - mMarker.remove( tag ); + public void unregisterMogoMarkerClickListener(String tag) { + mMarker.remove(tag); } @Override - public void registerMogoAimlessModeListener( String tag, IMogoAimlessModeListener listener ) { - mAimless.put( tag, listener ); + public void registerMogoStaticMarkerClickListener(String tag, IMogoMarkerClickListener listener) { + ArrayList list = mStaticMarker.get(tag); + if (list == null) { + list = new ArrayList<>(); + list.add(listener); + mStaticMarker.put(tag, list); + } + list.add(listener); + mStaticMarker.put(tag, list); } @Override - public void unregisterMogoAimlessModeListener( String tag ) { - mAimless.remove( tag ); + public void unregisterMogoStaticMarkerClickListener(String tag, IMogoMarkerClickListener listener) { + ArrayList list = mStaticMarker.get(tag); + if (list == null) { + return; + } + list.remove(listener); } @Override - public void registerCarLocationChangedListener( String tag, IMogoCarLocationChangedListener listener ) { - mCarLocations.put( tag, listener ); + public void registerMogoAimlessModeListener(String tag, IMogoAimlessModeListener listener) { + mAimless.put(tag, listener); } @Override - public void unregisterCarLocationChangedListener( String tag, IMogoCarLocationChangedListener listener ) { - mCarLocations.remove( tag ); + public void unregisterMogoAimlessModeListener(String tag) { + mAimless.remove(tag); } @Override - public void registerADASControlStatusChangedListener( String tag, IMogoADASControlStatusChangedListener listener ) { - mADAS.put( tag, listener ); + public void registerCarLocationChangedListener(String tag, IMogoCarLocationChangedListener listener) { + mCarLocations.put(tag, listener); } @Override - public void unregisterADASControlStatusChangedListener( String tag ) { - mADAS.remove( tag ); + public void unregisterCarLocationChangedListener(String tag, IMogoCarLocationChangedListener listener) { + mCarLocations.remove(tag); } @Override - public void init( Context context ) { + public void registerADASControlStatusChangedListener(String tag, IMogoADASControlStatusChangedListener listener) { + mADAS.put(tag, listener); } - public IMogoModuleLifecycle getLifecycleListener( String tag ) { - return mLifecycle.get( tag ); + @Override + public void unregisterADASControlStatusChangedListener(String tag) { + mADAS.remove(tag); } - public IMogoMapListener getMapListener( String tag ) { - return mMap.get( tag ); + @Override + public void init(Context context) { } - public IMogoNaviListener getNaviListener( String tag ) { - return mNavi.get( tag ); + public IMogoModuleLifecycle getLifecycleListener(String tag) { + return mLifecycle.get(tag); } - public IMogoLocationListener getLocationListener( String tag ) { - return mLocation.get( tag ); + public IMogoMapListener getMapListener(String tag) { + return mMap.get(tag); } - public IMogoMarkerClickListener getMarkerListener( String tag ) { - return mMarker.get( tag ); + public IMogoNaviListener getNaviListener(String tag) { + return mNavi.get(tag); } - public Iterator< IMogoModuleLifecycle > getLifecycleListeners() { + public IMogoLocationListener getLocationListener(String tag) { + return mLocation.get(tag); + } + + public IMogoMarkerClickListener getMarkerListener(String tag) { + return mMarker.get(tag); + } + + public ArrayList getStaticMarkerListener(String tag){ + return mStaticMarker.get(tag); + } + + public Iterator getLifecycleListeners() { return mLifecycle.values().iterator(); } - public Iterator< IMogoMapListener > getMapListeners() { + public Iterator getMapListeners() { return mMap.values().iterator(); } - public Iterator< IMogoNaviListener > getNaviListeners() { + public Iterator getNaviListeners() { return mNavi.values().iterator(); } @Override - public Iterator< IMogoLocationListener > getLocationListeners() { + public Iterator getLocationListeners() { return mLocation.values().iterator(); } - public Iterator< IMogoMarkerClickListener > getMarkerListeners() { + public Iterator getMarkerListeners() { return mMarker.values().iterator(); } - public Iterator< IMogoAimlessModeListener > getAimlessModeListeners() { + public Iterator getAimlessModeListeners() { return mAimless.values().iterator(); } - public Iterator< IMogoCarLocationChangedListener > getCarLocationChangedListener() { + public Iterator getCarLocationChangedListener() { return mCarLocations.values().iterator(); } @Override - public Iterator< IMogoADASControlStatusChangedListener > getAdasControlStatusChangedListeners() { + public Iterator getAdasControlStatusChangedListeners() { return mADAS.values().iterator(); } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java index 2e3dd68156..f027999a6a 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XModuleProvider.java @@ -276,25 +276,26 @@ public class V2XModuleProvider implements } }); - // 响应违章停车的POI点击 V2XServiceManager .getMogoRegisterCenter() - .registerMogoMarkerClickListener(V2XConst.MODULE_NAME, - marker -> { - try { - MarkerExploreWay markerExploreWay = - (MarkerExploreWay) ((MarkerShowEntity) marker.getObject()).getBindObj(); - Logger.d(V2XConst.MODULE_NAME, - "V2X===违章停车:onMarkerClicked=" + markerExploreWay); + .registerMogoMarkerClickListener(V2XConst.MODULE_NAME, new IMogoMarkerClickListener() { + @Override + public boolean onMarkerClicked(IMogoMarker marker) { + try { + MarkerExploreWay markerExploreWay = + (MarkerExploreWay) ((MarkerShowEntity) marker.getObject()).getBindObj(); + Logger.d(V2XConst.MODULE_NAME, + "V2X===违章停车:onMarkerClicked=" + markerExploreWay); - //直接展示弹窗 - V2XIllegalParkWindow parkScenario = new V2XIllegalParkWindow(); - parkScenario.show(markerExploreWay, false); - } catch (Exception e) { - e.printStackTrace(); + //直接展示弹窗 + V2XIllegalParkWindow parkScenario = new V2XIllegalParkWindow(); + parkScenario.show(markerExploreWay, false); + } catch (Exception e) { + e.printStackTrace(); + } + return true; } - return true; }); // 注册V2X场景Socket @@ -429,4 +430,9 @@ public class V2XModuleProvider implements public void onMapChanged(MogoLatLng latLng, float zoom, float tilt, float bearing) { } + + @Override + public void onDestroy() { + + } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveBiz.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveBiz.java index 63c863fd84..6fa7ab80fa 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveBiz.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/livecar/V2XVoiceCallLiveBiz.java @@ -2,6 +2,7 @@ package com.mogo.module.v2x.scenario.scene.livecar; import android.content.Context; import android.text.TextUtils; +import android.util.Log; import com.mogo.cloud.live.manager.LiveStreamManagerImpl; import com.mogo.cloud.passport.MoGoAiCloudClientConfig; @@ -10,6 +11,9 @@ import com.mogo.cloud.trafficlive.api.MoGoAiCloudTrafficLive; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.voice.AIAssist; import com.mogo.map.location.MogoLocation; +import com.mogo.map.marker.IMogoMarker; +import com.mogo.map.marker.IMogoMarkerClickListener; +import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.common.entity.V2XPushMessageEntity; import com.mogo.module.v2x.R; @@ -20,6 +24,8 @@ import com.mogo.module.v2x.voice.V2XVoiceManager; import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.logger.Logger; +import static com.mogo.map.marker.MarkerType.MAP_STATIC; +import static com.mogo.map.marker.MarkerType.MAP_STATIC_TRAFFIC; import static com.mogo.module.v2x.V2XConst.MODULE_NAME; import static com.mogo.module.v2x.voice.V2XVoiceConstants.COMMAND_ZHIDAO_V2X_AHEAD_LIVE; import static com.mogo.module.v2x.voice.V2XVoiceConstants.COMMAND_ZHIDAO_V2X_CALL_FRONT_CAR_DEMO_UN_WAKEUP; @@ -31,9 +37,9 @@ import static com.mogo.service.statusmanager.StatusDescriptor.MAIN_PAGE_RESUME; * author : unknown * desc : 语音呼叫查看直播车辆 或者 路口实况 业务模块 */ -public class V2XVoiceCallLiveBiz { +public class V2XVoiceCallLiveBiz implements IMogoMarkerClickListener{ - private static final String REGISTER_LIFECYCLE_TAG = V2XVoiceCallLiveBiz.class.getSimpleName(); + private static final String REGISTER_LIFECYCLE_TAG = "V2XVoiceCallLiveBiz"; private V2XVoiceCallLiveBiz() { @@ -72,6 +78,25 @@ public class V2XVoiceCallLiveBiz { this.mContext = context; registerLifecycleChange(); registerVoice(); + registerMarkerClick(); + } + + private void registerMarkerClick() { + MogoApisHandler.getInstance().getApis().getRegisterCenterApi().registerMogoStaticMarkerClickListener(MAP_STATIC, this); + } + + @Override + public boolean onStaticMarkerClicked(IMogoMarker marker) { + Log.d(REGISTER_LIFECYCLE_TAG,"onStaticMarkerClicked marker"); + String assInfo = marker.getMarkerAssInfo(); + Log.d(REGISTER_LIFECYCLE_TAG,"onStaticMarkerClicked marker assInfo : " + assInfo); + if (TextUtils.isEmpty(assInfo) || !assInfo.contains(MAP_STATIC_TRAFFIC)) { + return false; + } else { + //点击地图上marker返回assInfo,得到路口摄像头Id,获取直播 + getSpecifiedOpenCameraLive(assInfo); + return true; + } } private void registerLifecycleChange() { @@ -136,6 +161,28 @@ public class V2XVoiceCallLiveBiz { }); } + private void getSpecifiedOpenCameraLive(String assInfo) { + MoGoAiCloudTrafficLive.viewDesignativeIntersectionLive(assInfo, new ITrafficIntersectionLiveCallBack() { + @Override + public void liveUrlResult(String liveUrl) { + if (!TextUtils.isEmpty(liveUrl)) { + V2XMessageEntity v2XMessageEntity = buildCallLiveParams(null, liveUrl); + V2XPushLiveCarScenario pushLiveCarScenario = new V2XPushLiveCarScenario(); + pushLiveCarScenario.init(v2XMessageEntity); + } else { + Logger.d(MODULE_NAME, "getOpenRoadCameraLive 路口实况直播地址为空"); + ToastUtils.showShort(R.string.v2x_specific_live_url_null); + } + } + + @Override + public void onError(String errorMsg) { + Logger.d(MODULE_NAME, "getSpecifiedOpenCameraLive : " + errorMsg); + ToastUtils.showShort(R.string.v2x_specific_live_url_null); + } + }); + } + /** * 构建直播参数 * @@ -156,4 +203,7 @@ public class V2XVoiceCallLiveBiz { return v2XMessageEntity; } + public void onDestroy(){ + MogoApisHandler.getInstance().getApis().getRegisterCenterApi().unregisterMogoStaticMarkerClickListener(MAP_STATIC, this); + } } diff --git a/modules/mogo-module-v2x/src/main/res/values/strings.xml b/modules/mogo-module-v2x/src/main/res/values/strings.xml index f2c31b1fe4..7939eedeac 100644 --- a/modules/mogo-module-v2x/src/main/res/values/strings.xml +++ b/modules/mogo-module-v2x/src/main/res/values/strings.xml @@ -17,5 +17,6 @@ 线路推荐 26px 前方路口暂无直播 + 此摄像头暂无直播 diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoRegisterCenter.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoRegisterCenter.java index ce78bdb253..d32f681734 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoRegisterCenter.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoRegisterCenter.java @@ -105,6 +105,22 @@ public interface IMogoRegisterCenter extends IProvider { */ void unregisterMogoMarkerClickListener( String tag ); + /** + * 注册地图上静态marker点击监听函数 + * + * @param tag + * @param listener + * @return + */ + void registerMogoStaticMarkerClickListener( String tag, IMogoMarkerClickListener listener ); + + /** + * 注销定位监听函数 + * + * @param tag + */ + void unregisterMogoStaticMarkerClickListener( String tag, IMogoMarkerClickListener listener ); + /** * 注册巡航监听 *