diff --git a/app/build.gradle b/app/build.gradle index eeda922930..fdd5d4df4c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ android { minSdkVersion rootProject.ext.android.minSdkVersion targetSdkVersion rootProject.ext.android.targetSdkVersion versionCode rootProject.ext.android.versionCode - versionName "${rootProject.ext.android.versionName}" + versionName "${rootProject.ext.android.versionName}.${getMonthAndDay()}" applicationId rootProject.ext.android.applicationId testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -141,6 +141,12 @@ android.applicationVariants.all { variant -> } } + +def getMonthAndDay(){ + SimpleDateFormat sdf = new SimpleDateFormat("MMddHH") + return sdf.format(new Date()) +} + def getCurrentDate() { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss") return sdf.format(new Date()) diff --git a/config.gradle b/config.gradle index 0720e94562..f9bf8a5958 100644 --- a/config.gradle +++ b/config.gradle @@ -5,7 +5,7 @@ ext { buildToolsVersion: "29.0.2", minSdkVersion : 19, targetSdkVersion : 22, - versionCode : 2, + versionCode : 3, versionName : "1.0.2", ] diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/WorkThreadHandler.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/WorkThreadHandler.java new file mode 100644 index 0000000000..cb4f6a2c86 --- /dev/null +++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/WorkThreadHandler.java @@ -0,0 +1,65 @@ +package com.mogo.utils; + +import android.os.Handler; +import android.os.HandlerThread; + +/** + * @author congtaowang + * @since 2020-03-23 + *
+ * 描述
+ */
+public class WorkThreadHandler {
+
+ private Handler mHandler;
+ private HandlerThread mThread;
+
+ private WorkThreadHandler() {
+ // private constructor
+ mThread = new HandlerThread( "work-thread-handler" );
+ mThread.start();
+ mHandler = new Handler( mThread.getLooper() );
+ }
+
+ private static final class InstanceHolder {
+ private static final WorkThreadHandler INSTANCE = new WorkThreadHandler();
+ }
+
+ public static WorkThreadHandler getInstance() {
+ return InstanceHolder.INSTANCE;
+ }
+
+ private Object readResolve() {
+ // 阻止反序列化,必须实现 Serializable 接口
+ return InstanceHolder.INSTANCE;
+ }
+
+ private Object sToken = new Object();
+
+ public boolean post( Runnable r ) {
+ return mHandler != null && mHandler.post( r );
+ }
+
+ public boolean postDelayed(Runnable r, long delayMillis ) {
+ return mHandler != null && mHandler.postDelayed( r, delayMillis );
+ }
+
+ public Handler getWorkThreadHandler() {
+ return mHandler;
+ }
+
+ public boolean postOnceDelayed(Runnable r, long delayMillis ) {
+ if ( mHandler == null ) {
+ return false;
+ } else {
+ mHandler.removeCallbacks( r, sToken );
+ return mHandler.postDelayed( r, delayMillis );
+ }
+ }
+
+ public void removeCallbacks( Runnable runnable ) {
+ if ( mHandler != null ) {
+ mHandler.removeCallbacks( runnable );
+ }
+ }
+}
diff --git a/gradle.properties b/gradle.properties
index fdd55bcad7..4298f080fe 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -58,7 +58,7 @@ CARCHATTINGPROVIDER_VERSION=1.0.2.3-SNAPSHOT
# 在线车辆F
MOGO_MODULE_ONLINECAR_VERSION=1.0.1-SNAPSHOT
# v2x
-MOGO_MODULE_V2X_VERSION=1.0.2-SNAPSHOT
+MOGO_MODULE_V2X_VERSION=1.0.3-SNAPSHOT
# 媒体卡片
MOGO_MODULE_MEDIA_VERSION=1.0.1-SNAPSHOT
# 推送
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java
index abaa885203..e6cb446a23 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java
@@ -9,6 +9,7 @@ import android.location.Location;
import android.os.Bundle;
import android.os.SystemClock;
import android.os.Trace;
+import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Interpolator;
@@ -33,6 +34,7 @@ import com.amap.api.navi.AMapNaviViewOptions;
import com.amap.api.navi.enums.AMapNaviViewShowMode;
import com.amap.api.navi.enums.AimLessMode;
import com.amap.api.navi.model.NaviInfo;
+import com.mogo.commons.debug.DebugConfig;
import com.mogo.map.IMogoMap;
import com.mogo.map.IMogoMapView;
import com.mogo.map.MogoLatLng;
@@ -93,70 +95,71 @@ public class AMapNaviViewWrapper implements IMogoMapView,
}
private void initMapView() {
- if ( mMapView != null ) {
- AMapNaviViewOptions options = mMapView.getViewOptions();
- if ( options != null ) {
- // 设置是否开启自动黑夜模式切换,默认为false,不自动切换
- options.setAutoNaviViewNightMode( false );
- // 设置6秒后是否自动锁车
- options.setAutoLockCar( false );
- // 设置路线上的摄像头气泡是否显示
- options.setCameraBubbleShow( true );
- // 设置路线相关的配置属性,如:路线的路况颜色,路线上是否显示摄像头气泡等。
- // options.setRouteOverlayOptions( MapStyleUtils.getRouteOverlayOptions() );
- // 设置自车的图片对象
- options.setCarBitmap( BitmapFactory.decodeResource( getContext().getResources(),
- R.drawable.ic_amap_navi_cursor ) );
- // 设置指南针图标否在导航界面显示,默认显示。true,显示;false,隐藏。
- options.setCompassEnabled( false );
- // 黑夜模式
- options.setNaviNight( true );
- //设置路况光柱条是否显示(只适用于驾车导航,需要联网)。
- options.setTrafficBarEnabled( false );
- // 设置[实时交通图层开关按钮]是否显示(只适用于驾车导航,需要联网)。
- options.setTrafficLayerEnabled( false );
- // 设置导航界面是否显示路线全览按钮。
- options.setRouteListButtonShow( false );
- // 设置导航状态下屏幕是否一直开启。
- options.setScreenAlwaysBright( true );
- // 设置交通播报是否打开(只适用于驾车导航,需要联网)。
- options.setTrafficInfoUpdateEnabled( true );
- // 设置摄像头播报是否打开(只适用于驾车导航)。
- options.setCameraInfoUpdateEnabled( true );
- // 设置菜单按钮是否在导航界面显示。
- options.setSettingMenuEnabled( false );
- // 设置是否绘制显示交通路况的线路(彩虹线),拥堵-红色,畅通-绿色,缓慢-黄色,未知-蓝色。默认不绘制彩虹线。
- options.setTrafficLine( true );
- // 设置是否绘制牵引线(当前位置到目的地的指引线)。默认不绘制牵引线。
- options.setLeaderLineEnabled( -1 );
- // 设置导航界面UI是否显示。
- options.setLayoutVisible( false );
- // 设置是否自动画路
- options.setAutoDrawRoute( false );
- // 设置是否显示路口放大图(实景图)
- options.setRealCrossDisplayShow( false );
- // 设置是否显示路口放大图(路口模型图)
- options.setModeCrossDisplayShow( false );
- // 设置是否显示道路信息view
- options.setLaneInfoShow( false );
- // 设置是否自动改变缩放等级
- options.setAutoChangeZoom( true );
- // 设置是否自动全览模式,即在算路成功后自动进入全览模式
- options.setAutoDisplayOverview( false );
- // 设置路线转向箭头隐藏和显示
- options.setNaviArrowVisible( false );
- // 通过路线是否自动置灰,仅支持驾车导航
- options.setAfterRouteAutoGray( true );
- options.setZoom( 16 );
- options.setPointToCenter( 0.5D, 0.5D );
- // 2D模式
- options.setTilt( 0 );
- mMapView.setViewOptions( options );
- }
- mMapView.setRouteOverlayVisible( false );
- mMapView.setCarOverlayVisible( false );
- setUIMode( EnumMapUI.CarUp_2D, null );
+ if ( mMapView == null ) {
+ return;
}
+ AMapNaviViewOptions options = mMapView.getViewOptions();
+ if ( options != null ) {
+ // 设置是否开启自动黑夜模式切换,默认为false,不自动切换
+ options.setAutoNaviViewNightMode( false );
+ // 设置6秒后是否自动锁车
+ options.setAutoLockCar( false );
+ // 设置路线上的摄像头气泡是否显示
+ options.setCameraBubbleShow( true );
+ // 设置路线相关的配置属性,如:路线的路况颜色,路线上是否显示摄像头气泡等。
+ // options.setRouteOverlayOptions( MapStyleUtils.getRouteOverlayOptions() );
+ // 设置自车的图片对象
+ options.setCarBitmap( BitmapFactory.decodeResource( getContext().getResources(),
+ R.drawable.ic_amap_navi_cursor ) );
+ // 设置指南针图标否在导航界面显示,默认显示。true,显示;false,隐藏。
+ options.setCompassEnabled( false );
+ // 黑夜模式
+ options.setNaviNight( true );
+ //设置路况光柱条是否显示(只适用于驾车导航,需要联网)。
+ options.setTrafficBarEnabled( false );
+ // 设置[实时交通图层开关按钮]是否显示(只适用于驾车导航,需要联网)。
+ options.setTrafficLayerEnabled( false );
+ // 设置导航界面是否显示路线全览按钮。
+ options.setRouteListButtonShow( false );
+ // 设置导航状态下屏幕是否一直开启。
+ options.setScreenAlwaysBright( true );
+ // 设置交通播报是否打开(只适用于驾车导航,需要联网)。
+ options.setTrafficInfoUpdateEnabled( true );
+ // 设置摄像头播报是否打开(只适用于驾车导航)。
+ options.setCameraInfoUpdateEnabled( true );
+ // 设置菜单按钮是否在导航界面显示。
+ options.setSettingMenuEnabled( false );
+ // 设置是否绘制显示交通路况的线路(彩虹线),拥堵-红色,畅通-绿色,缓慢-黄色,未知-蓝色。默认不绘制彩虹线。
+ options.setTrafficLine( true );
+ // 设置是否绘制牵引线(当前位置到目的地的指引线)。默认不绘制牵引线。
+ options.setLeaderLineEnabled( -1 );
+ // 设置导航界面UI是否显示。
+ options.setLayoutVisible( false );
+ // 设置是否自动画路
+ options.setAutoDrawRoute( false );
+ // 设置是否显示路口放大图(实景图)
+ options.setRealCrossDisplayShow( false );
+ // 设置是否显示路口放大图(路口模型图)
+ options.setModeCrossDisplayShow( false );
+ // 设置是否显示道路信息view
+ options.setLaneInfoShow( false );
+ // 设置是否自动改变缩放等级
+ options.setAutoChangeZoom( false );
+ // 设置是否自动全览模式,即在算路成功后自动进入全览模式
+ options.setAutoDisplayOverview( false );
+ // 设置路线转向箭头隐藏和显示
+ options.setNaviArrowVisible( false );
+ // 通过路线是否自动置灰,仅支持驾车导航
+ options.setAfterRouteAutoGray( true );
+ options.setZoom( 16 );
+ options.setPointToCenter( 0.5D, 0.5D );
+ // 2D模式
+ options.setTilt( 0 );
+ mMapView.setViewOptions( options );
+ }
+ mMapView.setRouteOverlayVisible( false );
+ mMapView.setCarOverlayVisible( false );
+ setUIMode( EnumMapUI.CarUp_2D, null );
}
private void initListeners() {
@@ -389,6 +392,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void changeZoom( float zoom ) {
Logger.d( TAG, "changeZoom %s", zoom );
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
getMap().changeZoom( zoom );
}
@@ -429,11 +435,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
case CarUp_2D:
case CarUp_3D:
mMapView.setNaviMode( AMapNaviView.CAR_UP_MODE );
- // TODO: 2020-03-16 车头朝上,需要固定车标
break;
case NorthUP_2D:
mMapView.setNaviMode( AMapNaviView.NORTH_UP_MODE );
- // TODO: 2020-03-16 北朝上,需要动态改变车头车标
break;
}
if ( options == null ) {
@@ -465,6 +469,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
Logger.e( TAG, "latlng = null or is illegal" );
return;
}
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
loseLockMode();
mMapView.getMap().moveCamera( CameraUpdateFactory.newLatLng( new LatLng( latLng.lat, latLng.lng ) ) );
}
@@ -475,6 +482,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
if ( visible && NaviClient.getInstance( getContext() ).isNaviing() ) {
return;
}
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
if ( checkAMapView() ) {
MyLocationStyle style = mMapView.getMap().getMyLocationStyle();
style.showMyLocation( visible );
@@ -491,6 +501,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
if ( NaviClient.getInstance( getContext() ).isNaviing() ) {
return;
}
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
if ( checkAMapView() ) {
MyLocationStyle style = mMapView.getMap().getMyLocationStyle();
style.showMyLocation( true );
@@ -532,6 +545,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void recoverLockMode() {
if ( checkAMapView() ) {
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
Logger.d( TAG, "锁车" );
mMapView.recoverLockMode();
}
@@ -539,6 +555,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void loseLockMode() {
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
mockTouchEvent();
}
@@ -558,6 +577,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void setLockZoom( int var1 ) {
if ( checkAMapView() ) {
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
Logger.d( TAG, "锁定锁车比例尺" );
mMapView.setLockZoom( var1 );
}
@@ -595,7 +617,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
if ( checkAMapView() ) {
mMapView.setCarOverlayVisible( false );
showMyLocation( true );
- NaviClient.getInstance( getContext() ).startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED );
+ NaviClient.getInstance( getContext() ).startAimlessMode();
}
}
@@ -654,6 +676,10 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void setPointToCenter( double mapCenterX, double mapCenterY ) {
if ( checkAMapView() ) {
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
+ Logger.d( TAG, "setPointToCenter(%s, %s)", mapCenterX, mapCenterY );
AMapNaviViewOptions options = mMapView.getViewOptions();
options.setPointToCenter( mapCenterX, mapCenterY );
mMapView.setViewOptions( options );
@@ -729,6 +755,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
return;
}
try {
+ if ( DebugConfig.isDebug() ) {
+ Logger.d( TAG, Log.getStackTraceString( new Throwable() ) );
+ }
LatLngBounds latLngBounds = MogoMapUtils.getLatLngBounds( carPosition, lonLats, lockCarPosition );
if ( !lockCarPosition ) {
loseLockMode();
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 b08789023d..6983bd6b5c 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
@@ -75,7 +75,7 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer {
mMogoMarkerOptions = null;
}
if ( mMarker != null ) {
- mMarker.destroy();
+ mMarker.remove();
mMarker.setObject( null );
mMarker = null;
}
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 e24f8944e7..5385e50fbf 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
@@ -6,6 +6,7 @@ import android.location.Location;
import com.amap.api.maps.model.Polyline;
import com.amap.api.navi.AMapNavi;
+import com.amap.api.navi.enums.AimLessMode;
import com.amap.api.navi.enums.NaviType;
import com.amap.api.navi.model.NaviLatLng;
import com.mogo.map.MogoLatLng;
@@ -263,12 +264,13 @@ public class NaviClient implements IMogoNavi {
}
}
- public void startAimlessMode( int cameraAndSpecialroadDetected ) {
- mAMapNavi.startAimlessMode( cameraAndSpecialroadDetected );
+ @Override
+ public void startAimlessMode() {
+ mAMapNavi.startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED );
}
+ @Override
public void stopAimlessMode() {
mAMapNavi.stopAimlessMode();
-
}
}
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 2b14bd0485..106fd6a073 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
@@ -93,10 +93,30 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
return;
}
addEndPoints();
- showPathsBound( mCalculatePathItems.get( 0 ).getPath().getBoundsForPath() );
+ showPathsBound( getBounds() );
renderPathOverlay( mCalculatePathItems );
}
+ private LatLngBounds getBounds(){
+ if ( mCalculatePathItems == null ) {
+ return null;
+ }
+ LatLngBounds.Builder builder = new LatLngBounds.Builder();
+ for ( CalculatePathItem calculatePathItem : mCalculatePathItems ) {
+ if ( calculatePathItem == null ) {
+ continue;
+ }
+ try {
+ LatLngBounds bounds = calculatePathItem.getPath().getBoundsForPath();
+ builder.include( bounds.northeast );
+ builder.include( bounds.southwest );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ }
+ return builder.build();
+ }
+
/**
* 按pathId升序排序
*
@@ -148,6 +168,9 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
* 将规划好的路径显示在视野内
*/
private void showPathsBound( LatLngBounds bounds ) {
+ if ( bounds == null ) {
+ return;
+ }
checkAMapInstance();
mAMap.animateCamera(
CameraUpdateFactory.newLatLngBoundsRect( bounds, mBoundRect.left, mBoundRect.right,
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/overlay/RouteOverLayWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/overlay/RouteOverLayWrapper.java
index 04313edf32..c5a6857603 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/overlay/RouteOverLayWrapper.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/overlay/RouteOverLayWrapper.java
@@ -2,17 +2,22 @@ package com.mogo.map.impl.amap.overlay;
import android.content.Context;
import android.graphics.BitmapFactory;
+import android.graphics.Color;
import android.util.Log;
import com.amap.api.maps.AMap;
+import com.amap.api.maps.model.NavigateArrowOptions;
import com.amap.api.maps.model.Polyline;
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.RouteOverlayOptions;
import com.amap.api.navi.view.RouteOverLay;
import com.mogo.map.impl.amap.utils.MapStyleUtils;
+import com.mogo.utils.logger.Logger;
import java.lang.ref.WeakReference;
+import java.lang.reflect.Field;
/**
* @author congtaowang
@@ -36,6 +41,8 @@ public class RouteOverLayWrapper {
private int mEndBitmapResId = 0;
private int mZIndex = 0;
+ private static RouteOverlayOptions sOptions;
+
public RouteOverLayWrapper( Context context,
AMap mAMap,
AMapNaviPath mPath ) {
@@ -49,7 +56,10 @@ public class RouteOverLayWrapper {
return;
}
mRouteOverLay = new RouteOverLay( mAMap, mPath, mContextRef.get() );
- mRouteOverLay.setRouteOverlayOptions( MapStyleUtils.getRouteOverlayOptions() );
+ if ( sOptions == null ) {
+ sOptions = MapStyleUtils.getRouteOverlayOptions();
+ }
+ mRouteOverLay.setRouteOverlayOptions( sOptions );
mRouteOverLay.setTrafficLine( true );
mRouteOverLay.setRouteOverlayVisible( true );
mRouteOverLay.setTrafficLightsVisible( true );
@@ -58,6 +68,7 @@ public class RouteOverLayWrapper {
mRouteOverLay.setNaviArrowVisible( true );
mRouteOverLay.setLightsVisible( true );
mRouteOverLay.setTrafficLightsVisible( mIsTrafficLightsVisible );
+ hookRouteArrow();
if ( mStartBitmapResId != 0 ) {
try {
@@ -166,6 +177,19 @@ public class RouteOverLayWrapper {
}
}
+ private void hookRouteArrow() {
+ if ( mRouteOverLay != null && sOptions != null ) {
+ try {
+ Field field = mRouteOverLay.getClass().getDeclaredField( "naviArrow" );
+ field.setAccessible( true );
+ field.set( mRouteOverLay, mAMap.addNavigateArrow( new NavigateArrowOptions().topColor( sOptions.getArrowColor() ).width( sOptions.getLineWidth() ).sideColor( sOptions.getArrowSideColor() ) ) );
+ Logger.d( TAG, "hook 成功。" );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ }
+ }
+
public Polyline getTrafficColorfulPolyline() {
if ( mRouteOverLay != null ) {
return mRouteOverLay.mTrafficColorfulPolyline;
diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/MapStyleUtils.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/MapStyleUtils.java
index 3e46637f0f..e91cd51b88 100644
--- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/MapStyleUtils.java
+++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/utils/MapStyleUtils.java
@@ -60,6 +60,8 @@ public class MapStyleUtils {
options.setPassRoute( colorToBitmap( ColorEnum.light_gray.getColor() ) );
// 设置路线虚线纹理
options.setFairWayRes( colorToBitmap( ColorEnum.route_overlay_line_normal.getColor() ) );
+ options.setArrowColor( Color.WHITE ); // 高德地图内部配置颜色
+ options.setArrowSideColor( 1990523135 ); // 高德地图内部配置颜色
return options;
}
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 88f00f47d8..7ce05a83bc 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
@@ -148,4 +148,14 @@ public interface IMogoNavi {
* @param listener
*/
void registerCarLocationChangedListener( IMogoCarLocationChangedListener listener );
+
+ /**
+ * 打开巡航模式
+ */
+ void startAimlessMode();
+
+ /**
+ * 关闭巡航模式
+ */
+ void stopAimlessMode();
}
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 9b2cc00d8d..b74c5288b4 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
@@ -180,4 +180,18 @@ public class MogoNavi implements IMogoNavi {
mDelegate.registerCarLocationChangedListener( listener );
}
}
+
+ @Override
+ public void startAimlessMode() {
+ if ( mDelegate != null ) {
+ mDelegate.startAimlessMode();
+ }
+ }
+
+ @Override
+ public void stopAimlessMode() {
+ if ( mDelegate != null ) {
+ mDelegate.stopAimlessMode();
+ }
+ }
}
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCarInfo.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCarInfo.java
index 47041c1f5e..da1934a703 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCarInfo.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerCarInfo.java
@@ -52,7 +52,7 @@ public class MarkerCarInfo implements Serializable {
this.carLiveInfo = carLiveInfo;
}
- class CarLiveInfo implements Serializable {
+ public static class CarLiveInfo implements Serializable {
//rtmp视频直播地址rtmp://
private String videoUrl;
//直播频道【直播心跳接口参数】C_1
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java
index 6a735f6973..3581fa2353 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsPresenter.java
@@ -23,6 +23,8 @@ import com.mogo.service.statusmanager.IMogoMsgCenterListener;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.statusmanager.StatusDescriptor;
+import com.mogo.utils.UiThreadHandler;
+import com.mogo.utils.WorkThreadHandler;
import com.mogo.utils.logger.Logger;
import java.util.ArrayDeque;
@@ -87,7 +89,9 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
@Override
public void onReceive( Context context, Intent intent ) {
try {
- refreshTimeAndDate();
+ WorkThreadHandler.getInstance().post( () -> {
+ refreshTimeAndDate();
+ } );
} catch ( Exception e ) {
Logger.e( TAG, e, "error. " );
}
@@ -164,7 +168,14 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
String timeStr = getContext().getResources().getString( R.string.module_ext_str_time_format, hour, minute > 9 ? String.valueOf( minute ) : "0" + minute );
String dateStr = getContext().getResources().getString( R.string.module_ext_str_date_format, month + 1, day, mWeeks[week - 1] );
- mView.renderTime( dateStr, timeStr );
+
+ UiThreadHandler.post( () -> {
+ try {
+ mView.renderTime( dateStr, timeStr );
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ }
+ } );
}
@Override
@@ -208,7 +219,7 @@ public class ExtensionsPresenter extends Presenter< ExtensionsView > implements
changeAutoSwitchVoiceTipsWordsStatus( true );
}
- private void changeAutoSwitchVoiceTipsWordsStatus(boolean autoChange){
+ private void changeAutoSwitchVoiceTipsWordsStatus( boolean autoChange ) {
if ( !mHasTipWords ) {
return;
}
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 324fb644b0..796410862b 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
@@ -195,6 +195,8 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mCoverUpLayout = findViewById( R.id.module_main_id_cover_up );
mCardCoverUpBottomLayout = findViewById( R.id.module_main_id_card_cover_up_bottom );
+ // 避免事件穿透导致地图被滑动
+ mLeftShadowFrame.setOnClickListener( view -> {} );
WindowViewHandler.init( mFloatingLayout );
}
@@ -281,12 +283,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
if ( size == 0 ) {
showLayout();
} else if ( size == 1 ) {
- UiThreadHandler.postDelayed( new Runnable() {
- @Override
- public void run() {
- mMogoMapUIController.setPointToCenter( 0.5, 0.5 );
- }
- }, 1000 );
hideLayout();
}
} );
diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/HorizentalStackTransformer.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/HorizentalStackTransformer.java
index 16f7ea21f6..bec1449b7c 100644
--- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/HorizentalStackTransformer.java
+++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/HorizentalStackTransformer.java
@@ -56,8 +56,8 @@ public class HorizentalStackTransformer extends HorizentalBaseTransformer {
page.setTranslationX( -page.getHeight() * position + ( page.getHeight() * 0.5f ) * ( 1 - scale ) + spaceBetweenFirAndSecHeight * position );
}else{
float currentPage;
- if(offsetScroll > 0.2f){
- currentPage = 0.2f;
+ if(offsetScroll > 0.1f){
+ currentPage = 0.1f;
}else{
currentPage = offsetScroll;
}
diff --git a/modules/mogo-module-main/src/main/res/drawable/module_main_dw_top_frame_bkg.xml b/modules/mogo-module-main/src/main/res/drawable/module_main_dw_top_frame_bkg.xml
index 5f95c7f50f..f9f2d1743c 100644
--- a/modules/mogo-module-main/src/main/res/drawable/module_main_dw_top_frame_bkg.xml
+++ b/modules/mogo-module-main/src/main/res/drawable/module_main_dw_top_frame_bkg.xml
@@ -2,7 +2,7 @@