diff --git a/.idea/misc.xml b/.idea/misc.xml index 707ee6e613..2dc54c489f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 17af85cb83..67294d7307 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -71,6 +71,7 @@ dependencies { implementation rootProject.ext.dependencies.carcallprovider implementation rootProject.ext.dependencies.carcall implementation rootProject.ext.dependencies.modulemedia + implementation rootProject.ext.dependencies.modulefreshnews implementation rootProject.ext.dependencies.modulepush,{ exclude group:'com.mogo.module',module:'module-common' diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 7a2288b8b8..35d776198c 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -8,6 +8,8 @@ import com.alibaba.android.arouter.launcher.ARouter; import com.auto.zhidao.logsdk.CrashSystem; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.debug.DebugConfig; +import com.mogo.launcher.news.FreshNewsConstants; +import com.mogo.module.adcard.AdCardConstants; import com.mogo.module.back.BackToMainHomeManager; import com.mogo.module.carchatting.card.CallChatConstant; import com.mogo.module.common.MogoModule; @@ -43,14 +45,15 @@ public class MogoApplication extends AbsMogoApplication { // MogoModulePaths.addModule( new MogoModule( Demo2Constants.TAG, "CARD_DEMO2" ) ); DebugConfig.setNetMode(BuildConfig.NET_ENV); //运营位卡片,需要默认显示,放在第一个加载 -// MogoModulePaths.addModule(new MogoModule(AdCardConstants.TAG, AdCardConstants.MODULE_NAME)); + MogoModulePaths.addModule(new MogoModule(AdCardConstants.TAG, AdCardConstants.MODULE_NAME)); MogoModulePaths.addModule(new MogoModule(OnLineCarConstants.TAG, OnLineCarConstants.MODULE_NAME)); MogoModulePaths.addModule(new MogoModule(V2XConst.PATH_V2X_UI, V2XConst.PATH_V2X_UI)); MogoModulePaths.addModule(new MogoModule(TanluConstants.TAG, TanluConstants.MODEL_NAME)); MogoModulePaths.addModule(new MogoModule(CallChatConstant.PROVIDER, CallChatConstant.MODULE_NAME)); MogoModulePaths.addModule(new MogoModule(MediaConstants.TAG, MediaConstants.MODULE_TYPE)); + MogoModulePaths.addModule(new MogoModule( FreshNewsConstants.TAG, FreshNewsConstants.MODULE_NAME)); MogoModulePaths.addModule(new MogoModule(PushUIConstants.TAG, PushUIConstants.TAG)); - // BackToMainHomeManager.addMainHomeView(); + // BackToMainHomeManager.addMainHomeView(); } @Override diff --git a/config.gradle b/config.gradle index 27008acf01..322d7a1834 100644 --- a/config.gradle +++ b/config.gradle @@ -107,6 +107,7 @@ ext { modulepush : "com.mogo.module:module-push:${MOGO_MODULE_PUSH_VERSION}", //运营位卡片 moduleadcard : "com.mogo.module:module-adcard:${MOGO_MODULE_AD_CARD_VERSION}", + modulefreshnews : "com.mogo.module:module-freshnews:${MOGO_MODULE_FRESH_NEWS_VERSION}", //统一返回键 mogomoduleback : "com.mogo.module:module-back:${MOGO_MODULE_BACK_VERSION}", // 长链 diff --git a/gradle.properties b/gradle.properties index 299457c03c..0bc7e428f7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -53,6 +53,7 @@ MOGO_MODULE_MEDIA_VERSION=1.0.0-SNAPSHOT MOGO_MODULE_PUSH_VERSION=1.0.0-SNAPSHOT MOGO_MODULE_SEARCH_VERSION=1.0.0-SNAPSHOT MOGO_MODULE_AD_CARD_VERSION=1.0.0-SNAPSHOT +MOGO_MODULE_FRESH_NEWS_VERSION=1.0.0-SNAPSHOT MOGO_MODULE_BACK_VERSION=1.0.0-SNAPSHOT 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 86f4c2eb39..e56f375244 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 @@ -297,4 +297,8 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer { public Marker getMarker() { return mMarker; } + + public MogoMarkerOptions getMogoMarkerOptions() { + return mMogoMarkerOptions; + } } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AMapNaviListenerAdapter.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AMapNaviListenerAdapter.java index f870148573..8584b96289 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AMapNaviListenerAdapter.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AMapNaviListenerAdapter.java @@ -15,7 +15,9 @@ import com.amap.api.navi.model.AimLessModeCongestionInfo; import com.amap.api.navi.model.AimLessModeStat; import com.amap.api.navi.model.NaviInfo; import com.autonavi.tbt.TrafficFacilityInfo; +import com.mogo.map.MogoLatLng; import com.mogo.utils.logger.Logger; +import java.util.List; /** * @author congtaowang @@ -229,4 +231,6 @@ public abstract class AMapNaviListenerAdapter implements AMapNaviListener { public void onNaviRouteNotify( AMapNaviRouteNotifyData aMapNaviRouteNotifyData ) { } + + } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/CalculatePathItem.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/CalculatePathItem.java index a89996465e..262aab4e5b 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/CalculatePathItem.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/CalculatePathItem.java @@ -6,8 +6,11 @@ import android.text.TextUtils; import com.amap.api.maps.AMap; import com.amap.api.navi.model.AMapNaviPath; import com.amap.api.navi.model.AMapNaviStep; +import com.amap.api.navi.model.NaviLatLng; +import com.mogo.map.MogoLatLng; import com.mogo.map.impl.amap.overlay.RouteOverLayWrapper; +import java.util.ArrayList; import java.util.List; /** @@ -33,14 +36,14 @@ public class CalculatePathItem { return mPath; } - public RouteOverLayWrapper getOverLazWrapper( boolean createIfNull ) { - if ( mOverLazWrapper == null && createIfNull ) { - mOverLazWrapper = new RouteOverLayWrapper( mContext, mAMap, mPath ); + public RouteOverLayWrapper getOverLazWrapper(boolean createIfNull) { + if (mOverLazWrapper == null && createIfNull) { + mOverLazWrapper = new RouteOverLayWrapper(mContext, mAMap, mPath); } return mOverLazWrapper; } - public CalculatePathItem( Context context, AMap amap, int id, AMapNaviPath path ) { + public CalculatePathItem(Context context, AMap amap, int id, AMapNaviPath path) { mContext = context; mAMap = amap; this.mId = id; @@ -52,41 +55,41 @@ public class CalculatePathItem { } public String getTime() { - if ( mTimeBuilder == null ) { + if (mTimeBuilder == null) { final int time = mPath.getAllTime(); mTimeBuilder = new StringBuilder(); - fillFormatTime( time, mTimeBuilder ); + fillFormatTime(time, mTimeBuilder); } return mTimeBuilder.toString(); } private StringBuilder mTimeBuilder; - private void fillFormatTime( int seconds, StringBuilder builder ) { -// int days = seconds / ( 24 * 60 * 60 ); -// if ( days > 0 ) { -// builder.append( days ).append( "天" ); -// } -// seconds -= days * 24 * 60 * 60; - int hours = seconds / ( 60 * 60 ); - if ( hours > 0 ) { - builder.append( hours ).append( "小时" ); + private void fillFormatTime(int seconds, StringBuilder builder) { + // int days = seconds / ( 24 * 60 * 60 ); + // if ( days > 0 ) { + // builder.append( days ).append( "天" ); + // } + // seconds -= days * 24 * 60 * 60; + int hours = seconds / (60 * 60); + if (hours > 0) { + builder.append(hours).append("小时"); } seconds -= hours * 60 * 60; int min = seconds / 60; - builder.append( min > 1 ? min : 1 ).append( "分钟" ); + builder.append(min > 1 ? min : 1).append("分钟"); } private String mDistanceCacheStr = ""; public String getDistance() { - if ( TextUtils.isEmpty( mDistanceCacheStr ) ) { + if (TextUtils.isEmpty(mDistanceCacheStr)) { int distance = mPath.getAllLength(); - if ( distance == -1 ) { + if (distance == -1) { mDistanceCacheStr = "路程总程未获取"; } - if ( distance >= 1000 ) { - mDistanceCacheStr = String.format( "%.1f公里", ( float ) distance / 1000 ); + if (distance >= 1000) { + mDistanceCacheStr = String.format("%.1f公里", (float) distance / 1000); } else { mDistanceCacheStr = distance + "米"; } @@ -97,14 +100,14 @@ public class CalculatePathItem { private StringBuilder mDescBuilder = null; public String getDesc() { - if ( mDescBuilder == null ) { + if (mDescBuilder == null) { mDescBuilder = new StringBuilder(); int lightsSize = getTrafficNumber(); - if ( lightsSize > 0 ) { - mDescBuilder.append( "红绿灯" ).append( lightsSize ).append( "个" ); + if (lightsSize > 0) { + mDescBuilder.append("红绿灯").append(lightsSize).append("个"); } - mDescBuilder.append( " " ); - mDescBuilder.append( "收费" ).append( mPath.getTollCost() ).append( "元" ); + mDescBuilder.append(" "); + mDescBuilder.append("收费").append(mPath.getTollCost()).append("元"); } return mDescBuilder.toString(); @@ -112,11 +115,11 @@ public class CalculatePathItem { public int getTrafficNumber() { int trafficLightNumber = 0; - if ( mPath == null ) { + if (mPath == null) { return trafficLightNumber; } - List< AMapNaviStep > steps = mPath.getSteps(); - for ( AMapNaviStep step : steps ) { + List steps = mPath.getSteps(); + for (AMapNaviStep step : steps) { trafficLightNumber += step.getTrafficLightNumber(); } return trafficLightNumber; @@ -126,9 +129,21 @@ public class CalculatePathItem { mContext = null; mAMap = null; mPath = null; - if ( mOverLazWrapper != null ) { + if (mOverLazWrapper != null) { mOverLazWrapper.destroy(); } mOverLazWrapper = null; } + + public List getCoordList() { + + ArrayList mogoLatLngs = new ArrayList<>(); + for (NaviLatLng latlng : mPath.getCoordList() + ) { + MogoLatLng mogoLatLng = + new MogoLatLng(latlng.getLatitude(), latlng.getLongitude()); + mogoLatLngs.add(mogoLatLng); + } + return mogoLatLngs; + } } \ No newline at end of file diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java index 52d98b5d51..04ae2cb8c0 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java @@ -162,6 +162,13 @@ public class NaviClient implements IMogoNavi { return null; } + @Override public List getCalculatedPathPos() { + if ( mAMapNaviListener != null ) { + return mAMapNaviListener.getCalculatedPathPos(); + } + return null; + } + @Override public OnCalculatePathItemClickInteraction getItemClickInteraction() { if ( mAMapNaviListener != null ) { diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java index 572380b7d1..58178239a4 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java @@ -15,6 +15,7 @@ import com.amap.api.navi.model.AMapNaviCameraInfo; import com.amap.api.navi.model.AMapNaviInfo; import com.amap.api.navi.model.AMapNaviLocation; import com.amap.api.navi.model.NaviInfo; +import com.mogo.map.MogoLatLng; import com.mogo.map.impl.amap.AMapWrapper; import com.mogo.map.impl.amap.message.AMapMessageManager; import com.mogo.map.impl.amap.utils.ObjectUtils; @@ -231,6 +232,16 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { return null; } + public List getCalculatedPathPos() { + if ( mNaviOverlayHelper != null ) { + return mNaviOverlayHelper.getCalculatedPathPos(); + } + return null; + } + + + + public OnCalculatePathItemClickInteraction getItemClickInteraction() { if ( mNaviOverlayHelper != null ) { return mNaviOverlayHelper.getItemClickInteraction(); diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java index a8ef6433d6..62b15c5f59 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java @@ -12,6 +12,8 @@ import com.amap.api.navi.AMapNavi; import com.amap.api.navi.model.AMapNaviLocation; import com.amap.api.navi.model.AMapNaviPath; import com.amap.api.navi.model.NaviInfo; +import com.amap.api.navi.model.NaviLatLng; +import com.mogo.map.MogoLatLng; import com.mogo.map.impl.amap.AMapWrapper; import com.mogo.map.impl.amap.R; import com.mogo.map.impl.amap.overlay.RouteOverLayWrapper; @@ -53,14 +55,14 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { // 规划的路线显示边距 private Rect mBoundRect = null; - private List< CalculatePathItem > mCalculatePathItems; - private List< MogoCalculatePath > mPaths = new ArrayList<>(); + private List mCalculatePathItems; + private List mPaths = new ArrayList<>(); private int mSelectedPathId; private CalculatePathItem mSelectedCalculatePathItem; private OnCalculatePathItemClickInteraction mLineClickInteraction; - public NaviOverlayHelper( AMapNavi mAMapNavi, AMap mAMap, Context mContext ) { + public NaviOverlayHelper(AMapNavi mAMapNavi, AMap mAMap, Context mContext) { this.mAMapNavi = mAMapNavi; this.mAMap = mAMap; this.mContext = mContext; @@ -73,11 +75,11 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { public void showCalculatedPaths() { clearCalculatedOverlay(); mCalculatePathItems = getSortedPaths(); - if ( mCalculatePathItems == null || mCalculatePathItems.isEmpty() ) { + if (mCalculatePathItems == null || mCalculatePathItems.isEmpty()) { return; } - showPathsBound( mCalculatePathItems.get( 0 ).getPath().getBoundsForPath() ); - renderPathOverlay( mCalculatePathItems ); + showPathsBound(mCalculatePathItems.get(0).getPath().getBoundsForPath()); + renderPathOverlay(mCalculatePathItems); } /** @@ -85,40 +87,41 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { * * @return 排序好的路径规划列表 */ - private List< CalculatePathItem > getSortedPaths() { + private List getSortedPaths() { checkAMapInstance(); - final Map< Integer, AMapNaviPath > pathMap = mAMapNavi.getNaviPaths(); - if ( pathMap == null || pathMap.isEmpty() ) { + final Map pathMap = mAMapNavi.getNaviPaths(); + if (pathMap == null || pathMap.isEmpty()) { return null; } - TreeMap< Integer, AMapNaviPath > sortedMap = new TreeMap< Integer, AMapNaviPath >( new Comparator< Integer >() { - @Override - public int compare( Integer obj1, Integer obj2 ) { - if ( obj1 != null ) { - return obj1.compareTo( obj2 ); + TreeMap sortedMap = + new TreeMap(new Comparator() { + @Override + public int compare(Integer obj1, Integer obj2) { + if (obj1 != null) { + return obj1.compareTo(obj2); + } + if (obj2 != null) { + return obj2.compareTo(obj1); + } + return 0; } - if ( obj2 != null ) { - return obj2.compareTo( obj1 ); - } - return 0; - } - } ); - sortedMap.putAll( pathMap ); + }); + sortedMap.putAll(pathMap); - final List< CalculatePathItem > items = new ArrayList<>(); - for ( Map.Entry< Integer, AMapNaviPath > entry : sortedMap.entrySet() ) { - if ( entry == null || entry.getKey() == null || entry.getValue() == null ) { + final List items = new ArrayList<>(); + for (Map.Entry entry : sortedMap.entrySet()) { + if (entry == null || entry.getKey() == null || entry.getValue() == null) { continue; } - items.add( new CalculatePathItem( mContext, mAMap, entry.getKey(), entry.getValue() ) ); + items.add(new CalculatePathItem(mContext, mAMap, entry.getKey(), entry.getValue())); } return items; } private void calculateBoundArea() { - if ( mBoundRect == null ) { + if (mBoundRect == null) { mBoundRect = new Rect(); - final int padding = WindowUtils.dip2px( mContext, 80 ); + final int padding = WindowUtils.dip2px(mContext, 80); mBoundRect.left = padding; mBoundRect.right = padding; mBoundRect.top = padding; @@ -128,57 +131,59 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { /** * 将规划好的路径显示在视野内 - * - * @param bounds */ - private void showPathsBound( LatLngBounds bounds ) { + private void showPathsBound(LatLngBounds bounds) { checkAMapInstance(); - mAMap.animateCamera( CameraUpdateFactory.newLatLngBoundsRect( bounds, mBoundRect.left, mBoundRect.right, mBoundRect.top, mBoundRect.bottom ) ); + mAMap.animateCamera( + CameraUpdateFactory.newLatLngBoundsRect(bounds, mBoundRect.left, mBoundRect.right, + mBoundRect.top, mBoundRect.bottom)); } private void checkAMapInstance() { - if ( mAMap == null ) { + if (mAMap == null) { mAMap = AMapWrapper.getAMap(); } } - public void renderPathOverlay( List< CalculatePathItem > paths ) { - if ( paths == null || paths.size() == 0 ) { + public void renderPathOverlay(List paths) { + if (paths == null || paths.size() == 0) { return; } - for ( int i = 0; i < paths.size(); i++ ) { - final CalculatePathItem item = paths.get( i ); - if ( item == null || item.getPath() == null ) { + for (int i = 0; i < paths.size(); i++) { + final CalculatePathItem item = paths.get(i); + if (item == null || item.getPath() == null) { continue; } - RouteOverLayWrapper wrapper = item.getOverLazWrapper( true ); - wrapper.setTrafficLightsVisible( false ); + RouteOverLayWrapper wrapper = item.getOverLazWrapper(true); + wrapper.setTrafficLightsVisible(false); // 默认选中第一个 - if ( i == 0 ) { + if (i == 0) { mSelectedPathId = item.getId(); mSelectedCalculatePathItem = item; - wrapper.setStartBitmap( R.drawable.ic_navi_start ).setEndBitmap( R.drawable.ic_navi_target ); - mAMapNavi.selectRouteId( item.getId() ); + wrapper.setStartBitmap(R.drawable.ic_navi_start) + .setEndBitmap(R.drawable.ic_navi_target); + mAMapNavi.selectRouteId(item.getId()); } wrapper.addToMap(); - wrapper.setTransparency( i == 0 ? AMAP_ROUTE_OVERLAY_TRANSPARENCY_SELECTED : AMAP_ROUTE_OVERLAY_TRANSPARENCY_UNSELECTED ); + wrapper.setTransparency(i == 0 ? AMAP_ROUTE_OVERLAY_TRANSPARENCY_SELECTED + : AMAP_ROUTE_OVERLAY_TRANSPARENCY_UNSELECTED); } } public void clearCalculatedOverlay() { - if ( mCalculatePathItems != null && !mCalculatePathItems.isEmpty() ) { - for ( CalculatePathItem calculatePathItem : mCalculatePathItems ) { - if ( calculatePathItem == null ) { + if (mCalculatePathItems != null && !mCalculatePathItems.isEmpty()) { + for (CalculatePathItem calculatePathItem : mCalculatePathItems) { + if (calculatePathItem == null) { continue; } - RouteOverLayWrapper wrapper = calculatePathItem.getOverLazWrapper( false ); - if ( wrapper != null ) { + RouteOverLayWrapper wrapper = calculatePathItem.getOverLazWrapper(false); + if (wrapper != null) { wrapper.destroy(); } } mCalculatePathItems.clear(); } - if ( mPaths != null ) { + if (mPaths != null) { mPaths.clear(); } } @@ -187,68 +192,67 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { * 是否切换成功 * * @param polyline 选中的线 - * @return */ - public boolean handleClickedPolyline( Polyline polyline, boolean isNaviing ) { - if ( polyline == null ) { + public boolean handleClickedPolyline(Polyline polyline, boolean isNaviing) { + if (polyline == null) { return false; } - if ( mPaths != null && !mPaths.isEmpty() ) { - for ( MogoCalculatePath path : mPaths ) { - if ( TextUtils.equals( path.getTagId(), polyline.getId() ) ) { - if ( mLineClickInteraction != null ) { - mLineClickInteraction.onItemClicked( path.getTagId() ); + if (mPaths != null && !mPaths.isEmpty()) { + for (MogoCalculatePath path : mPaths) { + if (TextUtils.equals(path.getTagId(), polyline.getId())) { + if (mLineClickInteraction != null) { + mLineClickInteraction.onItemClicked(path.getTagId()); break; } } } } - return handleClickedPolyline( polyline.getId() ); + return handleClickedPolyline(polyline.getId()); } - private boolean handleClickedPolyline( String id ) { - if ( id == null ) { + private boolean handleClickedPolyline(String id) { + if (id == null) { return false; } - Logger.i( TAG, "polyline id = " + id ); - mSelectedCalculatePathItem = isCalculatePolyline( id ); - if ( mSelectedCalculatePathItem == null ) { + Logger.i(TAG, "polyline id = " + id); + mSelectedCalculatePathItem = isCalculatePolyline(id); + if (mSelectedCalculatePathItem == null) { return false; } mSelectedPathId = mSelectedCalculatePathItem.getId(); - if ( mCalculatePathItems != null ) { - for ( CalculatePathItem item : mCalculatePathItems ) { - final RouteOverLayWrapper wrapper = item.getOverLazWrapper( false ); - if ( wrapper == null ) { + if (mCalculatePathItems != null) { + for (CalculatePathItem item : mCalculatePathItems) { + final RouteOverLayWrapper wrapper = item.getOverLazWrapper(false); + if (wrapper == null) { continue; } wrapper.setTransparency( - item == mSelectedCalculatePathItem - ? AMAP_ROUTE_OVERLAY_TRANSPARENCY_SELECTED - : AMAP_ROUTE_OVERLAY_TRANSPARENCY_UNSELECTED + item == mSelectedCalculatePathItem + ? AMAP_ROUTE_OVERLAY_TRANSPARENCY_SELECTED + : AMAP_ROUTE_OVERLAY_TRANSPARENCY_UNSELECTED ); } } return true; } - private CalculatePathItem isCalculatePolyline( String id ) { + private CalculatePathItem isCalculatePolyline(String id) { CalculatePathItem result = null; - if ( mCalculatePathItems == null || mCalculatePathItems.isEmpty() ) { + if (mCalculatePathItems == null || mCalculatePathItems.isEmpty()) { return result; } - for ( CalculatePathItem calculatePathItem : mCalculatePathItems ) { - if ( calculatePathItem == null ) { + for (CalculatePathItem calculatePathItem : mCalculatePathItems) { + if (calculatePathItem == null) { continue; } - final RouteOverLayWrapper wrapper = calculatePathItem.getOverLazWrapper( false ); - if ( wrapper == null ) { + final RouteOverLayWrapper wrapper = calculatePathItem.getOverLazWrapper(false); + if (wrapper == null) { continue; } - if ( wrapper.getTrafficColorfulPolyline() == null ) { + if (wrapper.getTrafficColorfulPolyline() == null) { continue; } - if ( TextUtils.equals( wrapper.getTrafficColorfulPolyline().getId(), id ) ) { + if (TextUtils.equals(wrapper.getTrafficColorfulPolyline().getId(), id)) { result = calculatePathItem; } } @@ -261,67 +265,85 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { /** * 车辆拐弯时绘制转向箭头 - * - * @param naviInfo */ - public void handleNaviInfoUpdate( NaviInfo naviInfo ) { - if ( mSelectedCalculatePathItem != null ) { - RouteOverLayWrapper wrapper = mSelectedCalculatePathItem.getOverLazWrapper( false ); - if ( wrapper != null ) { - wrapper.drawArrow( naviInfo ); + public void handleNaviInfoUpdate(NaviInfo naviInfo) { + if (mSelectedCalculatePathItem != null) { + RouteOverLayWrapper wrapper = mSelectedCalculatePathItem.getOverLazWrapper(false); + if (wrapper != null) { + wrapper.drawArrow(naviInfo); } } } - public void handlePassedLocation( AMapNaviLocation location ) { - if ( mSelectedCalculatePathItem != null ) { - RouteOverLayWrapper wrapper = mSelectedCalculatePathItem.getOverLazWrapper( false ); - if ( wrapper != null ) { - wrapper.updatePolyline( location ); + public void handlePassedLocation(AMapNaviLocation location) { + if (mSelectedCalculatePathItem != null) { + RouteOverLayWrapper wrapper = mSelectedCalculatePathItem.getOverLazWrapper(false); + if (wrapper != null) { + wrapper.updatePolyline(location); } } } - - public List< MogoCalculatePath > getCalculateStrategies() { - if ( mCalculatePathItems != null && !mCalculatePathItems.isEmpty() ) { - for ( CalculatePathItem calculatePathItem : mCalculatePathItems ) { + public List getCalculateStrategies() { + if (mCalculatePathItems != null && !mCalculatePathItems.isEmpty()) { + for (CalculatePathItem calculatePathItem : mCalculatePathItems) { MogoCalculatePath path = new MogoCalculatePath(); - path.setDistance( calculatePathItem.getDistance() ); - path.setPathId( calculatePathItem.getId() ); - path.setStrategyName( calculatePathItem.getStrategyName() ); - path.setTime( calculatePathItem.getTime() ); - path.setTrafficLights( calculatePathItem.getTrafficNumber() ); - mPaths.add( path ); - final RouteOverLayWrapper wrapper = calculatePathItem.getOverLazWrapper( true ); - if ( wrapper == null ) { + path.setDistance(calculatePathItem.getDistance()); + path.setPathId(calculatePathItem.getId()); + path.setStrategyName(calculatePathItem.getStrategyName()); + path.setTime(calculatePathItem.getTime()); + List coordList = calculatePathItem.getPath().getCoordList(); + ArrayList mogoLatLngs = new ArrayList<>(); + for (NaviLatLng latlng : coordList + ) { + MogoLatLng mogoLatLng = + new MogoLatLng(latlng.getLatitude(), latlng.getLongitude()); + mogoLatLngs.add(mogoLatLng); + } + path.setCoordList(mogoLatLngs); + path.setTrafficLights(calculatePathItem.getTrafficNumber()); + mPaths.add(path); + final RouteOverLayWrapper wrapper = calculatePathItem.getOverLazWrapper(true); + if (wrapper == null) { continue; } - if ( wrapper.getTrafficColorfulPolyline() == null ) { + if (wrapper.getTrafficColorfulPolyline() == null) { continue; } - path.setTagId( wrapper.getTrafficColorfulPolyline().getId() ); + path.setTagId(wrapper.getTrafficColorfulPolyline().getId()); } } + return mPaths; } + public List getCalculatedPathPos() { + + if (mSelectedCalculatePathItem != null) { + return mSelectedCalculatePathItem.getCoordList(); + } + //if (mPaths != null && !mPaths.isEmpty()) { + // return mPaths.get(0).getCoordList(); + //} + return null; + } + @Override - public void onItemClicked( String tagId ) { - handleClickedPolyline( tagId ); - mAMapNavi.selectRouteId( getSelectedPathId() ); + public void onItemClicked(String tagId) { + handleClickedPolyline(tagId); + mAMapNavi.selectRouteId(getSelectedPathId()); } public OnCalculatePathItemClickInteraction getItemClickInteraction() { return this; } - public void setLineClickInteraction( OnCalculatePathItemClickInteraction lineClickInteraction ) { + public void setLineClickInteraction(OnCalculatePathItemClickInteraction lineClickInteraction) { mLineClickInteraction = lineClickInteraction; } - public void setCalculatePathDisplayBounds( Rect bounds ) { - if ( bounds != null ) { + public void setCalculatePathDisplayBounds(Rect bounds) { + if (bounds != null) { mBoundRect = bounds; } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java index ed0d6819fc..005f123135 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java @@ -79,6 +79,17 @@ public interface IMogoNavi { */ List< MogoCalculatePath > getCalculatedStrategies(); + + + /** + * 获取路线坐标点 + * + * @return 规划的路线上所有的坐标点 + */ + List< MogoLatLng > getCalculatedPathPos(); + + + /** * 获取列表Item点击回调 * diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoCalculatePath.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoCalculatePath.java index 5c26ec925b..e3d8b3be98 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoCalculatePath.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoCalculatePath.java @@ -1,5 +1,8 @@ package com.mogo.map.navi; +import com.mogo.map.MogoLatLng; +import java.util.List; + /** * @author congtaowang * @since 2020-01-08 @@ -38,6 +41,17 @@ public class MogoCalculatePath { */ private int mPathId; + + private List coordList; + + public List getCoordList() { + return coordList; + } + + public void setCoordList(List coordList) { + this.coordList = coordList; + } + public MogoCalculatePath() { } diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java index 97664d9dcd..8aaac07801 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java @@ -107,6 +107,13 @@ public class MogoNavi implements IMogoNavi { return null; } + @Override public List getCalculatedPathPos() { + if (mDelegate != null) { + return mDelegate.getCalculatedPathPos(); + } + return null; + } + @Override public OnCalculatePathItemClickInteraction getItemClickInteraction() { if (mDelegate != null) { diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java index c4a2495369..244745cff1 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsFragment.java @@ -108,6 +108,13 @@ public class AppsFragment extends MvpFragment< AppsView, AppsPresenter > impleme mLoadingView.setVisibility( View.GONE ); } + @Override + public void exit() { + if ( mExit != null ) { + mExit.performClick(); + } + } + @Override public Animation onCreateAnimation( int transit, boolean enter, int nextAnim ) { TranslateAnimation animation = null; diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java index eada7ed782..8a640f2ab7 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsPresenter.java @@ -1,19 +1,19 @@ package com.mogo.module.apps; -import android.content.Intent; - import androidx.annotation.NonNull; import androidx.lifecycle.LifecycleOwner; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.mvp.Presenter; +import com.mogo.module.apps.applaunch.AppLaunchFilter; +import com.mogo.module.apps.applaunch.AppLauncher; +import com.mogo.module.apps.applaunch.CardAppLauncher; import com.mogo.module.apps.model.AppInfo; import com.mogo.module.apps.model.AppsModel; -import com.mogo.module.apps.utils.LaunchUtils; import com.mogo.service.MogoServicePaths; import com.mogo.service.analytics.IMogoAnalytics; +import com.mogo.service.cardmanager.IMogoCardManager; import com.mogo.utils.ThreadPoolService; -import com.mogo.utils.TipToast; import com.mogo.utils.UiThreadHandler; import java.util.HashMap; @@ -30,9 +30,16 @@ public class AppsPresenter extends Presenter< AppsView > { private static final String TAG = "AppsPresenter"; private IMogoAnalytics mAnalytics; + private AppLaunchFilter mLauncher; + + private IMogoCardManager mCardManager; public AppsPresenter( AppsView view ) { super( view ); + mCardManager = ( IMogoCardManager ) ARouter.getInstance().build( MogoServicePaths.PATH_CARD_MANAGER ).navigation( getContext() ); + CardAppLauncher cardAppLauncher = new CardAppLauncher( this, mCardManager ); + cardAppLauncher.setNext( new AppLauncher() ); + mLauncher = cardAppLauncher; } @Override @@ -68,9 +75,9 @@ public class AppsPresenter extends Presenter< AppsView > { trackAppClicked( appInfo ); try { - LaunchUtils.launchByPkg( getContext(), appInfo.getPackageName() ); + mLauncher.launch( getContext(), appInfo ); } catch ( Exception e ) { - TipToast.shortTip( R.string.module_apps_str_no_app ); + } } @@ -92,5 +99,12 @@ public class AppsPresenter extends Presenter< AppsView > { super.onDestroy( owner ); AppsListChangedLiveData.getInstance().release(); mView = null; + mLauncher.destroy(); + } + + public void exit() { + if ( mView != null ) { + mView.exit(); + } } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsView.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsView.java index 03ca995a0b..8539b2e7be 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsView.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsView.java @@ -20,4 +20,9 @@ public interface AppsView extends IView { * @param appInfos */ void renderApps( Map< Integer, List< AppInfo > > appInfos ); + + /** + * 退出列表页面 + */ + void exit(); } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLaunchFilter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLaunchFilter.java new file mode 100644 index 0000000000..a934c9895a --- /dev/null +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLaunchFilter.java @@ -0,0 +1,18 @@ +package com.mogo.module.apps.applaunch; + +import android.content.Context; + +import com.mogo.module.apps.model.AppInfo; + +/** + * @author congtaowang + * @since 2020-02-09 + *

+ * 按指定方式启动指定的app + */ +public interface AppLaunchFilter { + + void launch( Context context, AppInfo appInfo ); + + void destroy(); +} diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLauncher.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLauncher.java new file mode 100644 index 0000000000..0ce9ae3b23 --- /dev/null +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/AppLauncher.java @@ -0,0 +1,38 @@ +package com.mogo.module.apps.applaunch; + +import android.content.Context; + +import com.mogo.module.apps.R; +import com.mogo.module.apps.model.AppInfo; +import com.mogo.module.apps.utils.LaunchUtils; +import com.mogo.utils.TipToast; +import com.mogo.utils.logger.Logger; + +/** + * @author congtaowang + * @since 2020-02-09 + *

+ * 描述 + */ +public class AppLauncher extends BaseAppLauncher { + + private static final String TAG = "AppLauncher"; + + @Override + public void launch( Context context, AppInfo appInfo ) { + try { + LaunchUtils.launchByPkg( context, appInfo.getPackageName() ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + TipToast.shortTip( R.string.module_apps_str_no_app ); + } + } + + @Override + public void destroy() { + if ( getNext() != null ) { + getNext().destroy(); + setNext( null ); + } + } +} diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/BaseAppLauncher.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/BaseAppLauncher.java new file mode 100644 index 0000000000..7b6cadd640 --- /dev/null +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/BaseAppLauncher.java @@ -0,0 +1,20 @@ +package com.mogo.module.apps.applaunch; + +/** + * @author congtaowang + * @since 2020-02-09 + *

+ * 描述 + */ +public abstract class BaseAppLauncher implements AppLaunchFilter { + + private AppLaunchFilter mNext; + + public AppLaunchFilter getNext() { + return mNext; + } + + public void setNext( AppLaunchFilter next ) { + this.mNext = next; + } +} diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/CardAppLauncher.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/CardAppLauncher.java new file mode 100644 index 0000000000..fb0906f4c4 --- /dev/null +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/applaunch/CardAppLauncher.java @@ -0,0 +1,57 @@ +package com.mogo.module.apps.applaunch; + +import android.content.Context; + +import com.mogo.module.apps.AppsPresenter; +import com.mogo.module.apps.model.AppInfo; +import com.mogo.service.cardmanager.IMogoCardManager; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author congtaowang + * @since 2020-02-09 + *

+ * 描述 + */ +public class CardAppLauncher extends BaseAppLauncher { + + private static Map< String, String > sCardApps = new HashMap<>(); + + static { + sCardApps.put( "com.zhidao.roadcondition.split", "CARD_TYPE_ROAD_CONDITION" ); + sCardApps.put( "com.zhidao.roadcondition", "CARD_TYPE_ROAD_CONDITION" ); + sCardApps.put( "com.zhidao.imdemo", "CARD_TYPE_CARS_CHATTING" ); + } + + private AppsPresenter mAppsPresenter; + private IMogoCardManager mCardManager; + + public CardAppLauncher( AppsPresenter mAppsPresenter, IMogoCardManager mCardManager ) { + this.mAppsPresenter = mAppsPresenter; + this.mCardManager = mCardManager; + } + + @Override + public void launch( Context context, AppInfo appInfo ) { + if ( sCardApps.containsKey( appInfo.getPackageName() ) ) { + mCardManager.switch2( sCardApps.get( appInfo.getPackageName() ) ); + mAppsPresenter.exit(); + } else { + if ( getNext() != null ) { + getNext().launch( context, appInfo ); + } + } + } + + @Override + public void destroy() { + mAppsPresenter = null; + mCardManager = null; + if ( getNext() != null ) { + getNext().destroy(); + setNext( null ); + } + } +} diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/CardAppInfo.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/CardAppInfo.java new file mode 100644 index 0000000000..50a5fa55f6 --- /dev/null +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/CardAppInfo.java @@ -0,0 +1,17 @@ +package com.mogo.module.apps.model; + +/** + * @author congtaowang + * @since 2020-02-09 + *

+ * 描述 + */ +public class CardAppInfo extends AppInfo { + + private String mCardType; + + public CardAppInfo( AppInfo app, String cardType ) { + super( app.getName(), app.getPackageName(), app.getVersionName(), app.getVersionCode(), app.getIcon() ); + this.mCardType = cardType; + } +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerNoveltyInfo.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerNoveltyInfo.java index a09010b15f..84157f6a84 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerNoveltyInfo.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerNoveltyInfo.java @@ -6,6 +6,7 @@ package com.mogo.module.common.entity; */ public class MarkerNoveltyInfo { private String type; + private String sn; private MarkerLocation location; /** * @see MarkerPoiTypeEnum @@ -45,6 +46,13 @@ public class MarkerNoveltyInfo { this.type = type; } + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } public class ContentData { private String content; @@ -53,6 +61,7 @@ public class MarkerNoveltyInfo { private String infoId; private long likeNum; private String title; + private String gasPrices; private boolean displayNavigation; private String styleType; @@ -120,6 +129,14 @@ public class MarkerNoveltyInfo { this.styleType = styleType; } + public String getGasPrices() { + return gasPrices; + } + + public void setGasPrices(String gasPrices) { + this.gasPrices = gasPrices; + } + @Override public String toString() { return "ContentData{" + @@ -129,6 +146,7 @@ public class MarkerNoveltyInfo { ", infoId='" + infoId + '\'' + ", likeNum=" + likeNum + ", title='" + title + '\'' + + ", gasPrices='" + gasPrices + '\'' + ", displayNavigation=" + displayNavigation + ", styleType='" + styleType + '\'' + '}'; @@ -139,6 +157,7 @@ public class MarkerNoveltyInfo { public String toString() { return "MarkerNoveltyInfo{" + "type='" + type + '\'' + + ", sn='" + sn + '\'' + ", location=" + location + ", poiType='" + poiType + '\'' + ", contentData=" + contentData + diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index 077f7c1a62..02e0ffbcfe 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -123,8 +123,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mUploadRoadCondition = findViewById( R.id.module_entrance_id_upload_road_condition ); mUploadRoadCondition.setOnClickListener( view -> { - ShareControl shareControl = new ShareControl(); - shareControl.showDialog( getActivity() ); + ShareControl.getInstance(getActivity()).showDialog(); } ); mVRMode = findViewById( R.id.module_entrance_id_vr_mode ); diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index db8a39c780..44a29e9d19 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -1,6 +1,7 @@ package com.mogo.module.main; import android.os.Bundle; +import android.os.Handler; import android.view.View; import android.widget.FrameLayout; @@ -234,7 +235,7 @@ public class MainActivity extends MvpActivity implement // 加载地图,触发地图加载完毕回调,在初始化其他卡片模块,保证卡片模块可以正确获取地图相关服务。 mMogoModuleHandler.loadModules(); loadContainerModules(); - loadCardModules(); + new Handler().postDelayed(() -> loadCardModules(), 5000); // 显示左边遮罩 mLeftShadowFrame.setVisibility(View.VISIBLE); diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt index 169aefc806..8657696fd6 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt @@ -45,7 +45,6 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener { override fun onCalculateSuccess() { var calculatedStrategies = SearchServiceHolder.getNavi() .calculatedStrategies - if (calculatedStrategies != null && calculatedStrategies.size > 0) { mAdapter.setDatas(calculatedStrategies) mAdapter.selectTag = calculatedStrategies[0].tagId diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java index 11b2d0f32f..e9f5c31658 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java @@ -406,6 +406,8 @@ public class MogoServiceProvider implements IMogoModuleProvider, // 部分非用户操作导致地图视图变化:绘线、圈点等不触发用户刷新 // 消费状态 if ( mStatusManager.isUserInteracted() ) { + mLastCustomRefreshCenterLocation = latLng; + mLastZoomLevel = zoom; return; } diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/IShareControl.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/IShareControl.java index 76d27221e9..0224679a7e 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/IShareControl.java +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/IShareControl.java @@ -15,7 +15,7 @@ public interface IShareControl { * 显示对话框 */ @Keep - void showDialog(Context context); + void showDialog(/*Context context*/); /** * 对话框消失 diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java index 63cbde8c1e..43ce0868aa 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java @@ -1,6 +1,9 @@ package com.mogo.module.share; import android.content.Context; + +import com.mogo.map.MogoNavi; +import com.mogo.map.impl.amap.navi.NaviClient; import com.mogo.module.share.dialog.LaucherShareDialog; /** @@ -9,15 +12,36 @@ import com.mogo.module.share.dialog.LaucherShareDialog; * @since 2020-01-10 */ public class ShareControl implements IShareControl { + + private static volatile ShareControl sInstance; + private Context mContext; + + private ShareControl(Context context) { + mContext = context; + } + + public static ShareControl getInstance(Context context) { + if (sInstance == null) { + synchronized (ShareControl.class) { + if (sInstance == null) { + sInstance = new ShareControl(context); + } + } + } + return sInstance; + } + + @Override - public void showDialog(Context context) { - LaucherShareDialog shareDialog = new LaucherShareDialog(context); + public void showDialog() { + LaucherShareDialog shareDialog = new LaucherShareDialog(mContext); shareDialog.setCanceledOnTouchOutside(true); shareDialog.show(); } @Override public void dismissDialog() { - + LaucherShareDialog shareDialog = new LaucherShareDialog(mContext); + shareDialog.dismiss(); } } diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java index dda05a1b52..b351b8936d 100644 --- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java +++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java @@ -329,7 +329,6 @@ public class TanluCardViewFragment extends MvpFragment> @Override public void onStartNavi() { //开始导航 - Logger.d(TAG, "onStartNavi -------> "); initModelData(); getNavigationData(); } @@ -441,6 +440,7 @@ public class TanluCardViewFragment extends MvpFragment> sendShareReceiver("1"); Logger.d(TAG, "mogoIntentListener 上报路况 ----> "); traceTypeData("1"); + ShareControl.getInstance(getActivity()).dismissDialog(); } else if (intentStr.equals(TanluConstants.SHARE_ROAD_CLOSURE)) { //分享封路(封路了) --ok traceData("2"); sendShareReceiver("3"); @@ -452,8 +452,7 @@ public class TanluCardViewFragment extends MvpFragment> Logger.d(TAG, "mogoIntentListener 分享交通检查 ----> "); traceTypeData("3"); } else if (intentStr.equals(TanluConstants.GO_TO_SHARE)) { //我要分享 --ok - ShareControl shareControl = new ShareControl(); - shareControl.showDialog(getActivity()); + ShareControl.getInstance(getActivity()).showDialog(); Logger.d(TAG, "mogoIntentListener 我要分享 ----> "); } } @@ -906,7 +905,7 @@ public class TanluCardViewFragment extends MvpFragment> /** - * 上报分享信息 TODO + * 上报分享信息 */ private void uploadShareInfo(String poiType, String poiImgUrl, String nickname, String headImgUrl) { double lat = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLatitude(); @@ -951,7 +950,7 @@ public class TanluCardViewFragment extends MvpFragment> /** - * 导航路线数据事件 TODO + * 导航路线数据事件 */ public void getNavigationData() { // Double lat = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLatitude(); @@ -969,11 +968,16 @@ public class TanluCardViewFragment extends MvpFragment> // } // }); - mTanluModelData.getNaviInformation(new NaviCallback() { + mTanluModelData.getNaviInformation(mMogoMapService.getNavi(getContext()).getCalculatedPathPos(), + new NaviCallback() { @Override public void onSuccess(NaviResult data) { - Log.d(TAG, "getNavigationData onSuccess ----->"); List informationList = data.getResult().getInformations(); + Log.d(TAG, "getNavigationData onSuccess informationList =" + informationList); + if (informationList == null || (informationList != null && informationList.size() == 0)) { + return; + } + //清除探路之前的数据 mMarkerManager.removeMarkers(TanluConstants.MODEL_NAME); @@ -999,7 +1003,6 @@ public class TanluCardViewFragment extends MvpFragment> .longitude(informationList.get(i).lon); optionList.add(options); - Log.d(TAG, "lat =" + informationList.get(i).lat + ">>>lon =" + informationList.get(i).lon); } Logger.d(TAG, "getNavigationData optionList.size() = " + optionList.size()); mMarkerManager.addMarkers(TanluConstants.MODEL_NAME, optionList, true); @@ -1117,6 +1120,11 @@ public class TanluCardViewFragment extends MvpFragment> speakSuccessVoice(o.getResult().getInformations(), discription == null ? "" : discription); List informationList = o.getResult().getInformations(); + Log.d(TAG, "getVoiceControlRoadData onSuccess informationList =" + informationList); + if (informationList == null || (informationList != null && informationList.size() == 0)) { + return; + } + //清除探路之前的数据 mMarkerManager.removeMarkers(TanluConstants.MODEL_NAME); //添加埋点数据 diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/NaviRoadRequest.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/NaviRoadRequest.java index 456fc5225b..f62763b6b2 100644 --- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/NaviRoadRequest.java +++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/NaviRoadRequest.java @@ -8,10 +8,10 @@ import java.util.List; * @since 2020-02-03 */ public class NaviRoadRequest { - public List coordinates; + public List coordinates; public int limit; - public NaviRoadRequest(List coordinates, int limit) { + public NaviRoadRequest(List coordinates, int limit) { this.coordinates = coordinates; this.limit = limit; } diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/TanluModelData.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/TanluModelData.java index e460cdc528..24e6d147a6 100644 --- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/TanluModelData.java +++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/TanluModelData.java @@ -10,6 +10,7 @@ import com.mogo.commons.debug.DebugConfig; import com.mogo.commons.network.ParamsProvider; import com.mogo.commons.network.SubscribeImpl; import com.mogo.commons.network.Utils; +import com.mogo.map.MogoLatLng; import com.mogo.module.tanlu.callback.AlongTheWayCallback; import com.mogo.module.tanlu.callback.NaviCallback; import com.mogo.module.tanlu.callback.RoadLineCallback; @@ -287,14 +288,34 @@ public class TanluModelData { } /** - * 获取导航沿途情报 TODO + * 组装需要的请求list + * + * @return */ - public void getNaviInformation(final NaviCallback callback) { - Gson gson = new Gson(); + private List getLatLngRequest(List latLnglist) { + List resultList = new ArrayList<>(); + for (int i = 0; i < latLnglist.size(); i++) { + resultList.add(latLnglist.get(i).lng + "," + latLnglist.get(i).lat); + } + return resultList; + } + + /** + * 获取导航沿途情报 + */ + public void getNaviInformation(List mogoLatLnglist, final NaviCallback callback) { + Gson gson = new Gson(); + if (mogoLatLnglist == null) { + return; + } + + NaviRoadRequest naviRoadRequest = new NaviRoadRequest(getLatLngRequest(mogoLatLnglist), 10); + String naviStr = gson.toJson(naviRoadRequest); + Log.d(TAG, "getNaviInformation naviStr = " + naviStr); final Map params = new ParamsProvider.Builder(mContext) .append("sn", Utils.getSn()) -// .append("data", uploadShareStr) + .append("data", naviStr) .build(); mTanluApiService.getNaviInformation(params) diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/video/SimpleCoverVideoPlayer.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/video/SimpleCoverVideoPlayer.kt index e0239d7ee5..02f0674e68 100644 --- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/video/SimpleCoverVideoPlayer.kt +++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/video/SimpleCoverVideoPlayer.kt @@ -2,6 +2,7 @@ package com.mogo.module.tanlu.video import android.content.Context import android.util.AttributeSet +import android.util.Log import android.view.Surface import android.view.View import android.widget.ImageView @@ -77,6 +78,33 @@ class SimpleCoverVideoPlayer : StandardGSYVideoPlayer { override fun changeUiToCompleteShow() { super.changeUiToCompleteShow() // setViewShowState(mBottomContainer, View.INVISIBLE) + Log.d("liyz", "changeUiToCompleteShow ------------>") + } + + override fun hideAllWidget() { + super.hideAllWidget() + Log.d("liyz", "hideAllWidget ------------>") + mBottomContainer.visibility = View.VISIBLE + } + + override fun changeUiToPrepareingClear() { + super.changeUiToPrepareingClear() + mBottomContainer.visibility = View.VISIBLE + } + + override fun changeUiToPlayingBufferingClear() { + super.changeUiToPlayingBufferingClear() + mBottomContainer.visibility = View.VISIBLE + } + + override fun changeUiToClear() { + super.changeUiToClear() + mBottomContainer.visibility = View.VISIBLE + } + + override fun changeUiToCompleteClear() { + super.changeUiToCompleteClear() + mBottomContainer.visibility = View.INVISIBLE } override fun onAutoCompletion() { diff --git a/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_media_recycler.xml b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_media_recycler.xml index 40a085df42..fcb133f346 100644 --- a/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_media_recycler.xml +++ b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_media_recycler.xml @@ -66,7 +66,8 @@ android:layout_below="@+id/layout_top_view" android:layout_marginLeft="@dimen/tanlu_module_card_margin_left" android:layout_marginRight="@dimen/tanlu_module_card_margin_left" - android:background="@drawable/shape_bg_222533_9px"> + > + 96px 90px 700px - 10px + 5px 72px 25px diff --git a/modules/mogo-module-tanlu/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-tanlu/src/main/res/values-xhdpi/dimens.xml index 08d5243a1f..57993dcf50 100644 --- a/modules/mogo-module-tanlu/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-tanlu/src/main/res/values-xhdpi/dimens.xml @@ -15,7 +15,7 @@ 96px 100px 700px - 10px + 5px 135px 50px diff --git a/modules/mogo-module-tanlu/src/main/res/values/dimens.xml b/modules/mogo-module-tanlu/src/main/res/values/dimens.xml index 131282c5a1..a2953cf57c 100644 --- a/modules/mogo-module-tanlu/src/main/res/values/dimens.xml +++ b/modules/mogo-module-tanlu/src/main/res/values/dimens.xml @@ -15,7 +15,7 @@ 96px 144px 760px - 10px + 5px 135px 50px