Merge branch 'feature/v1.0.0' of gitlab.zhidaoauto.com:ecos/yycp-service/Launcher into feature/v1.0.0
# Conflicts: # app/src/main/java/com/mogo/launcher/MogoApplication.java # config.gradle # gradle.properties
This commit is contained in:
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="JDK" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}",
|
||||
// 长链
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -297,4 +297,8 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer {
|
||||
public Marker getMarker() {
|
||||
return mMarker;
|
||||
}
|
||||
|
||||
public MogoMarkerOptions getMogoMarkerOptions() {
|
||||
return mMogoMarkerOptions;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 ) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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<AMapNaviStep> 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<MogoLatLng> getCoordList() {
|
||||
|
||||
ArrayList<MogoLatLng> mogoLatLngs = new ArrayList<>();
|
||||
for (NaviLatLng latlng : mPath.getCoordList()
|
||||
) {
|
||||
MogoLatLng mogoLatLng =
|
||||
new MogoLatLng(latlng.getLatitude(), latlng.getLongitude());
|
||||
mogoLatLngs.add(mogoLatLng);
|
||||
}
|
||||
return mogoLatLngs;
|
||||
}
|
||||
}
|
||||
@@ -162,6 +162,13 @@ public class NaviClient implements IMogoNavi {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override public List<MogoLatLng> getCalculatedPathPos() {
|
||||
if ( mAMapNaviListener != null ) {
|
||||
return mAMapNaviListener.getCalculatedPathPos();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OnCalculatePathItemClickInteraction getItemClickInteraction() {
|
||||
if ( mAMapNaviListener != null ) {
|
||||
|
||||
@@ -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<MogoLatLng> getCalculatedPathPos() {
|
||||
if ( mNaviOverlayHelper != null ) {
|
||||
return mNaviOverlayHelper.getCalculatedPathPos();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public OnCalculatePathItemClickInteraction getItemClickInteraction() {
|
||||
if ( mNaviOverlayHelper != null ) {
|
||||
return mNaviOverlayHelper.getItemClickInteraction();
|
||||
|
||||
@@ -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<CalculatePathItem> mCalculatePathItems;
|
||||
private List<MogoCalculatePath> 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<CalculatePathItem> getSortedPaths() {
|
||||
checkAMapInstance();
|
||||
final Map< Integer, AMapNaviPath > pathMap = mAMapNavi.getNaviPaths();
|
||||
if ( pathMap == null || pathMap.isEmpty() ) {
|
||||
final Map<Integer, AMapNaviPath> 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<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);
|
||||
}
|
||||
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<CalculatePathItem> items = new ArrayList<>();
|
||||
for (Map.Entry<Integer, AMapNaviPath> 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<CalculatePathItem> 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<MogoCalculatePath> 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<NaviLatLng> coordList = calculatePathItem.getPath().getCoordList();
|
||||
ArrayList<MogoLatLng> 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<MogoLatLng> 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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,6 +79,17 @@ public interface IMogoNavi {
|
||||
*/
|
||||
List< MogoCalculatePath > getCalculatedStrategies();
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取路线坐标点
|
||||
*
|
||||
* @return 规划的路线上所有的坐标点
|
||||
*/
|
||||
List< MogoLatLng > getCalculatedPathPos();
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取列表Item点击回调
|
||||
*
|
||||
|
||||
@@ -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<MogoLatLng> coordList;
|
||||
|
||||
public List<MogoLatLng> getCoordList() {
|
||||
return coordList;
|
||||
}
|
||||
|
||||
public void setCoordList(List<MogoLatLng> coordList) {
|
||||
this.coordList = coordList;
|
||||
}
|
||||
|
||||
public MogoCalculatePath() {
|
||||
}
|
||||
|
||||
|
||||
@@ -107,6 +107,13 @@ public class MogoNavi implements IMogoNavi {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override public List<MogoLatLng> getCalculatedPathPos() {
|
||||
if (mDelegate != null) {
|
||||
return mDelegate.getCalculatedPathPos();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OnCalculatePathItemClickInteraction getItemClickInteraction() {
|
||||
if (mDelegate != null) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,4 +20,9 @@ public interface AppsView extends IView {
|
||||
* @param appInfos
|
||||
*/
|
||||
void renderApps( Map< Integer, List< AppInfo > > appInfos );
|
||||
|
||||
/**
|
||||
* 退出列表页面
|
||||
*/
|
||||
void exit();
|
||||
}
|
||||
|
||||
@@ -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
|
||||
* <p>
|
||||
* 按指定方式启动指定的app
|
||||
*/
|
||||
public interface AppLaunchFilter {
|
||||
|
||||
void launch( Context context, AppInfo appInfo );
|
||||
|
||||
void destroy();
|
||||
}
|
||||
@@ -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
|
||||
* <p>
|
||||
* 描述
|
||||
*/
|
||||
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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.mogo.module.apps.applaunch;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
* @since 2020-02-09
|
||||
* <p>
|
||||
* 描述
|
||||
*/
|
||||
public abstract class BaseAppLauncher implements AppLaunchFilter {
|
||||
|
||||
private AppLaunchFilter mNext;
|
||||
|
||||
public AppLaunchFilter getNext() {
|
||||
return mNext;
|
||||
}
|
||||
|
||||
public void setNext( AppLaunchFilter next ) {
|
||||
this.mNext = next;
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
* <p>
|
||||
* 描述
|
||||
*/
|
||||
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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.mogo.module.apps.model;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
* @since 2020-02-09
|
||||
* <p>
|
||||
* 描述
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -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 +
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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<MainView, MainPresenter> implement
|
||||
// 加载地图,触发地图加载完毕回调,在初始化其他卡片模块,保证卡片模块可以正确获取地图相关服务。
|
||||
mMogoModuleHandler.loadModules();
|
||||
loadContainerModules();
|
||||
loadCardModules();
|
||||
new Handler().postDelayed(() -> loadCardModules(), 5000);
|
||||
|
||||
// 显示左边遮罩
|
||||
mLeftShadowFrame.setVisibility(View.VISIBLE);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -406,6 +406,8 @@ public class MogoServiceProvider implements IMogoModuleProvider,
|
||||
// 部分非用户操作导致地图视图变化:绘线、圈点等不触发用户刷新
|
||||
// 消费状态
|
||||
if ( mStatusManager.isUserInteracted() ) {
|
||||
mLastCustomRefreshCenterLocation = latLng;
|
||||
mLastZoomLevel = zoom;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ public interface IShareControl {
|
||||
* 显示对话框
|
||||
*/
|
||||
@Keep
|
||||
void showDialog(Context context);
|
||||
void showDialog(/*Context context*/);
|
||||
|
||||
/**
|
||||
* 对话框消失
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -329,7 +329,6 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
|
||||
|
||||
@Override
|
||||
public void onStartNavi() { //开始导航
|
||||
Logger.d(TAG, "onStartNavi -------> ");
|
||||
initModelData();
|
||||
getNavigationData();
|
||||
}
|
||||
@@ -441,6 +440,7 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
|
||||
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<IView, Presenter<IView>>
|
||||
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<IView, Presenter<IView>>
|
||||
|
||||
|
||||
/**
|
||||
* 上报分享信息 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<IView, Presenter<IView>>
|
||||
|
||||
|
||||
/**
|
||||
* 导航路线数据事件 TODO
|
||||
* 导航路线数据事件
|
||||
*/
|
||||
public void getNavigationData() {
|
||||
// Double lat = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLatitude();
|
||||
@@ -969,11 +968,16 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
|
||||
// }
|
||||
// });
|
||||
|
||||
mTanluModelData.getNaviInformation(new NaviCallback() {
|
||||
mTanluModelData.getNaviInformation(mMogoMapService.getNavi(getContext()).getCalculatedPathPos(),
|
||||
new NaviCallback() {
|
||||
@Override
|
||||
public void onSuccess(NaviResult data) {
|
||||
Log.d(TAG, "getNavigationData onSuccess ----->");
|
||||
List<Information> 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<IView, Presenter<IView>>
|
||||
.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<IView, Presenter<IView>>
|
||||
speakSuccessVoice(o.getResult().getInformations(), discription == null ? "" : discription);
|
||||
|
||||
List<Information> 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);
|
||||
//添加埋点数据
|
||||
|
||||
@@ -8,10 +8,10 @@ import java.util.List;
|
||||
* @since 2020-02-03
|
||||
*/
|
||||
public class NaviRoadRequest {
|
||||
public List<Double> coordinates;
|
||||
public List<String> coordinates;
|
||||
public int limit;
|
||||
|
||||
public NaviRoadRequest(List<Double> coordinates, int limit) {
|
||||
public NaviRoadRequest(List<String> coordinates, int limit) {
|
||||
this.coordinates = coordinates;
|
||||
this.limit = limit;
|
||||
}
|
||||
|
||||
@@ -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<String> getLatLngRequest(List<MogoLatLng> latLnglist) {
|
||||
List<String> 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<MogoLatLng> 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<String, Object> params = new ParamsProvider.Builder(mContext)
|
||||
.append("sn", Utils.getSn())
|
||||
// .append("data", uploadShareStr)
|
||||
.append("data", naviStr)
|
||||
.build();
|
||||
|
||||
mTanluApiService.getNaviInformation(params)
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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">
|
||||
>
|
||||
<!-- android:background="@drawable/shape_bg_222533_9px"-->
|
||||
|
||||
<com.mogo.module.tanlu.video.SimpleCoverVideoPlayer
|
||||
android:id="@+id/video_player_main"
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<dimen name="tanlu_module_full_loading_height">96px</dimen>
|
||||
<dimen name="tanlu_module_full_bottom_height">90px</dimen>
|
||||
<dimen name="tanlu_module_full_bottom_width">700px</dimen>
|
||||
<dimen name="tanlu_module_full_bottom_margin">10px</dimen>
|
||||
<dimen name="tanlu_module_full_bottom_margin">5px</dimen>
|
||||
|
||||
<dimen name="tanlu_module_full_top_height">72px</dimen>
|
||||
<dimen name="tanlu_module_full_back_width">25px</dimen>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<dimen name="tanlu_module_full_loading_height">96px</dimen>
|
||||
<dimen name="tanlu_module_full_bottom_height">100px</dimen>
|
||||
<dimen name="tanlu_module_full_bottom_width">700px</dimen>
|
||||
<dimen name="tanlu_module_full_bottom_margin">10px</dimen>
|
||||
<dimen name="tanlu_module_full_bottom_margin">5px</dimen>
|
||||
|
||||
<dimen name="tanlu_module_full_top_height">135px</dimen>
|
||||
<dimen name="tanlu_module_full_back_width">50px</dimen>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<dimen name="tanlu_module_full_loading_height">96px</dimen>
|
||||
<dimen name="tanlu_module_full_bottom_height">144px</dimen>
|
||||
<dimen name="tanlu_module_full_bottom_width">760px</dimen>
|
||||
<dimen name="tanlu_module_full_bottom_margin">10px</dimen>
|
||||
<dimen name="tanlu_module_full_bottom_margin">5px</dimen>
|
||||
|
||||
<dimen name="tanlu_module_full_top_height">135px</dimen>
|
||||
<dimen name="tanlu_module_full_back_width">50px</dimen>
|
||||
|
||||
Reference in New Issue
Block a user