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 @@ - + \ No newline at end of file diff --git a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml index 0d8eeb964d..6be848e190 100644 --- a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml +++ b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml @@ -64,7 +64,7 @@ android:id="@+id/module_main_id_card_cover_up_bottom" android:layout_width="match_parent" android:layout_height="@dimen/dp_26" - android:layout_marginTop="@dimen/cards_container_dp_600" + android:layout_marginTop="@dimen/cards_container_shadow_dp_margin_top" android:layout_marginLeft="@dimen/dp_64" android:layout_marginRight="@dimen/dp_64" android:visibility="invisible" diff --git a/modules/mogo-module-main/src/main/res/values-ldpi/dimens.xml b/modules/mogo-module-main/src/main/res/values-ldpi/dimens.xml index aaf70a0598..f94f83a779 100644 --- a/modules/mogo-module-main/src/main/res/values-ldpi/dimens.xml +++ b/modules/mogo-module-main/src/main/res/values-ldpi/dimens.xml @@ -14,5 +14,6 @@ 352px 320px + 319px \ No newline at end of file diff --git a/modules/mogo-module-main/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-main/src/main/res/values-xhdpi/dimens.xml index 420c9126b7..05f521641d 100644 --- a/modules/mogo-module-main/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-main/src/main/res/values-xhdpi/dimens.xml @@ -13,5 +13,6 @@ 270px 660px 600px + 599px \ No newline at end of file diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java index a10e28ec59..f5f51f3a35 100644 --- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java +++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java @@ -17,6 +17,7 @@ import com.mogo.commons.voice.IMogoVoiceCmdCallBack; import com.mogo.map.navi.IMogoNavi; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.module.common.MogoModulePaths; +import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.intent.IMogoIntentManager; @@ -82,12 +83,11 @@ public class MapPresenter extends Presenter implements mView.getUIController().changeMapMode(EnumMapUI.CarUp_2D); } else if (opera_type == 1) { mView.getUIController().changeMapMode(EnumMapUI.NorthUP_2D); - AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); + //AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); } else if (opera_type == 2) { mView.getUIController().changeMapMode(EnumMapUI.CarUp_3D); - AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); - + //AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); } } @@ -156,24 +156,18 @@ public class MapPresenter extends Presenter implements @Override public void onCreate(@NonNull LifecycleOwner owner) { super.onCreate(owner); - mMogoMapService = (IMogoMapService) ARouter.getInstance() - .build(MogoServicePaths.PATH_SERVICES_MAP) - .navigation(getContext()); - mMogoIntentManager = (IMogoIntentManager) ARouter.getInstance() - .build(MogoServicePaths.PATH_INTENT_MANAGER) - .navigation(getContext()); - mSearchManager = (IMogoSearchManager) ARouter.getInstance() - .build(MogoServicePaths.PATH_SEARCH_MANAGER) - .navigation(getContext()); + + IMogoServiceApis apis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( getContext() ); + mMogoMapService = apis.getMapServiceApi(); + mMogoIntentManager = apis.getIntentManagerApi(); + mSearchManager = apis.getSearchManagerApi(); IMogoNavi mogoNavi = mMogoMapService.getNavi(getContext()); mogoNavi.setCalculatePathDisplayBounds(new Rect( - ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.dp_730) - + WindowUtils.dip2px(getContext(), 80), - ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.dp_120) - + WindowUtils.dip2px(getContext(), 80), - WindowUtils.dip2px(getContext(), 80), - WindowUtils.dip2px(getContext(), 80) + ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.module_map_display_overview_left_margin), + ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.module_map_display_overview_top_margin), + ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.module_map_display_overview_right_margin), + ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.module_map_display_overview_bottom_margin) )); } @@ -252,7 +246,7 @@ public class MapPresenter extends Presenter implements AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); case VoiceConstants.CMD_MAP_NORTH_UP_MODE: mView.getUIController().changeMapMode(EnumMapUI.NorthUP_2D); - AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); + //AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); break; case VoiceConstants.CMD_MAP_3D_UN_WAKEUP: diff --git a/modules/mogo-module-map/src/main/res/values-ldpi/dimens.xml b/modules/mogo-module-map/src/main/res/values-ldpi/dimens.xml new file mode 100644 index 0000000000..7f51191319 --- /dev/null +++ b/modules/mogo-module-map/src/main/res/values-ldpi/dimens.xml @@ -0,0 +1,7 @@ + + + 558px + 174px + 32px + 80px + \ No newline at end of file diff --git a/modules/mogo-module-map/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-map/src/main/res/values-xhdpi/dimens.xml new file mode 100644 index 0000000000..275b7ffcd1 --- /dev/null +++ b/modules/mogo-module-map/src/main/res/values-xhdpi/dimens.xml @@ -0,0 +1,7 @@ + + + 977px + 249px + 61px + 80px + \ No newline at end of file diff --git a/modules/mogo-module-map/src/main/res/values/dimens.xml b/modules/mogo-module-map/src/main/res/values/dimens.xml new file mode 100644 index 0000000000..275b7ffcd1 --- /dev/null +++ b/modules/mogo-module-map/src/main/res/values/dimens.xml @@ -0,0 +1,7 @@ + + + 977px + 249px + 61px + 80px + \ No newline at end of file diff --git a/modules/mogo-module-service/build.gradle b/modules/mogo-module-service/build.gradle index 4ccbff8bf0..57f5a280c7 100644 --- a/modules/mogo-module-service/build.gradle +++ b/modules/mogo-module-service/build.gradle @@ -45,7 +45,6 @@ dependencies { annotationProcessor rootProject.ext.dependencies.aroutercompiler implementation rootProject.ext.dependencies.rxjava implementation rootProject.ext.dependencies.rxandroid -// implementation rootProject.ext.dependencies.moduleonlinecar if (Boolean.valueOf(RELEASE)) { api rootProject.ext.dependencies.mogomap diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java index 338c1b121d..7d843891ca 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java @@ -12,10 +12,15 @@ import com.mogo.module.common.entity.MarkerShowEntity; import com.mogo.module.service.marker.MapMarkerManager; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; +import com.mogo.service.adas.IMogoADASController; import com.mogo.service.analytics.IMogoAnalytics; import com.mogo.service.cardmanager.IMogoCardManager; import com.mogo.service.connection.IMogoSocketManager; +import com.mogo.service.datamanager.IMogoDataManager; +import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.imageloader.IMogoImageloader; +import com.mogo.service.intent.IMogoIntentManager; +import com.mogo.service.launcher.IMogoLauncher; import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoActionManager; import com.mogo.service.module.IMogoRegisterCenter; @@ -45,6 +50,11 @@ public class MarkerServiceHandler { private static IMogoAnalytics mMogoAnalytics; private static IMogoRegisterCenter mRegisterCenter; private static IMogoActionManager mActionManager; + private static IMogoDataManager mDataManager; + private static IMogoIntentManager mIntentManager; + private static IMogoADASController mADASController; + private static IMogoLauncher mLauncher; + private static IMogoFragmentManager mFragmentManager; private static MapMarkerManager mMapMarkerManager; @@ -62,6 +72,11 @@ public class MarkerServiceHandler { mLocationClient = mMapService.getSingletonLocationClient( context ); mRegisterCenter = mApis.getRegisterCenterApi(); mActionManager = mApis.getActionManagerApi(); + mDataManager = mApis.getDataManagerApi(); + mIntentManager = mApis.getIntentManagerApi(); + mADASController = mApis.getAdasControllerApi(); + mLauncher = mApis.getLauncherApi(); + mFragmentManager = mApis.getFragmentManagerApi(); mMapMarkerManager = MapMarkerManager.getInstance(); mMapMarkerManager.init( context ); @@ -119,6 +134,26 @@ public class MarkerServiceHandler { return mActionManager; } + public static IMogoIntentManager getIntentManager() { + return mIntentManager; + } + + public static IMogoADASController getADASController() { + return mADASController; + } + + public static IMogoLauncher getLauncher() { + return mLauncher; + } + + public static IMogoFragmentManager getFragmentManager() { + return mFragmentManager; + } + + public static IMogoDataManager getDataManager() { + return mDataManager; + } + //TODO -------------以下方法是临时过度使用的,后面统一使用,getMapMarkerManager进行调用 /** diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index 3e2e904551..2112206b1c 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -152,6 +152,8 @@ public class MogoServices implements IMogoMapListener, private IMogoFragmentManager mFragmentManager; private IMogoNavi mNavi; + private IMogoRegisterCenter mRegisterCenter; + /** * 地图视图初始化 */ @@ -272,30 +274,30 @@ public class MogoServices implements IMogoMapListener, public void init( Context context ) { mContext = context; + + MarkerServiceHandler.init( mContext ); mRefreshModel = new RefreshModel( context ); - IMogoServiceApis apis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation(); - mMogoMapService = apis.getMapServiceApi(); + mMogoMapService = MarkerServiceHandler.getMapService(); mUiController = mMogoMapService.getMapUIController(); mNavi = mMogoMapService.getNavi( context ); - mStatusManager = apis.getStatusManagerApi(); + mStatusManager = MarkerServiceHandler.getMogoStatusManager(); mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.USER_INTERACTED, this ); mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.SEARCH_UI, this ); mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.ADAS_UI, this ); mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.MAIN_PAGE_RESUME, this ); - MarkerServiceHandler.init( mContext ); registerMogoReceiver( context ); registerInternalUnWakeupWords(); - IMogoRegisterCenter registerCenter = apis.getRegisterCenterApi(); - registerCenter.registerMogoLocationListener( ServiceConst.TYPE, this ); - registerCenter.registerMogoNaviListener( ServiceConst.TYPE, this ); - registerCenter.registerMogoMapListener( ServiceConst.TYPE, this ); - registerCenter.registerMogoAimlessModeListener( ServiceConst.TYPE, this ); + mRegisterCenter = MarkerServiceHandler.getRegisterCenter(); + mRegisterCenter.registerMogoLocationListener( ServiceConst.TYPE, this ); + mRegisterCenter.registerMogoNaviListener( ServiceConst.TYPE, this ); + mRegisterCenter.registerMogoMapListener( ServiceConst.TYPE, this ); + mRegisterCenter.registerMogoAimlessModeListener( ServiceConst.TYPE, this ); - mActionManager = apis.getActionManagerApi(); + mActionManager = MarkerServiceHandler.getActionManager(); - mIntentManager = apis.getIntentManagerApi(); + mIntentManager = MarkerServiceHandler.getIntentManager(); mIntentManager.registerIntentListener( MogoReceiver.ACTIION_ADAS, this ); mIntentManager.registerIntentListener( Intent.ACTION_POWER_CONNECTED, this ); mIntentManager.registerIntentListener( Intent.ACTION_POWER_DISCONNECTED, this ); @@ -308,11 +310,12 @@ public class MogoServices implements IMogoMapListener, mIntentManager.registerIntentListener( MogoReceiver.ACTION_ADAS_STATUS, this ); mIntentManager.registerIntentListener( ServiceConst.COMMAND_OPERATION, this ); mIntentManager.registerIntentListener( MogoReceiver.ACTION_VOICE_READY, this ); + mIntentManager.registerIntentListener( MogoReceiver.ACTION_MOCK, this ); - mADASController = apis.getAdasControllerApi(); - mLauncher = apis.getLauncherApi(); - mFragmentManager = apis.getFragmentManagerApi(); - mCardManager = apis.getCardManagerApi(); + mADASController = MarkerServiceHandler.getADASController(); + mLauncher = MarkerServiceHandler.getLauncher(); + mFragmentManager = MarkerServiceHandler.getFragmentManager(); + mCardManager = MarkerServiceHandler.getMogoCardManager(); mFragmentManager.addMainFragmentStackTransactionListener( this ); initWorkThread(); @@ -372,6 +375,7 @@ public class MogoServices implements IMogoMapListener, filter.addAction( MogoReceiver.ACTION_VOICE_UI ); filter.addAction( MogoReceiver.ACTION_ADAS_STATUS ); filter.addAction( MogoReceiver.ACTION_VOICE_READY ); + filter.addAction( MogoReceiver.ACTION_MOCK ); try { context.getApplicationContext().registerReceiver( mAIAssistReceiver, filter ); Logger.i( TAG, "register voice receiver." ); @@ -436,6 +440,7 @@ public class MogoServices implements IMogoMapListener, } break; case MotionEvent.ACTION_UP: + mStatusManager.setUserInteractionStatus( TAG, true, true ); break; } } @@ -617,7 +622,7 @@ public class MogoServices implements IMogoMapListener, @Override public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) { - Logger.d( TAG, "状态发生改变---descriptor---" + descriptor + "----isTrue---" + isTrue ); + //Logger.d( TAG, "状态发生改变---descriptor---" + descriptor + "----isTrue---" + isTrue ); switch ( descriptor ) { case USER_INTERACTED: if ( isTrue ) { @@ -656,14 +661,14 @@ public class MogoServices implements IMogoMapListener, } } - private void onAdasOn(){ + private void onAdasOn() { // ADAS 时,不在自动刷新打点策略 stopAutoRefreshStrategy(); // 清除所有的打点信息记录 MarkerServiceHandler.getMapMarkerManager().alreadySmallMarker.clear(); } - private void onAdasClosed(){ + private void onAdasClosed() { refreshStrategy(); // ADAS关闭后,打开打点策略 if ( mAutoRefreshCallback != null ) { @@ -816,6 +821,13 @@ public class MogoServices implements IMogoMapListener, if ( mStatusManager.isMainPageOnResume() ) { mUiController.recoverLockMode(); } + } else if ( MogoReceiver.ACTION_MOCK.equals( command ) ) { + final int oper = intent.getIntExtra( "oper", -1 ); + switch ( oper ) { + case 1: + mUiController.showMyLocation( true ); + break; + } } } @@ -953,9 +965,12 @@ public class MogoServices implements IMogoMapListener, @Override public void onTransaction( int size ) { if ( size == 0 ) { + mUiController.setPointToCenter( 0.66145, 0.661094 ); + AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ServiceConst.CMD_BACK ); } else { AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_BACK, ServiceConst.CMD_BACK_WORDS, this ); + mUiController.setPointToCenter( 0.5, 0.5 ); } } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/datamanager/MogoDataHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/datamanager/MogoDataHandler.java index 5df430623a..d6d78298c5 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/datamanager/MogoDataHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/datamanager/MogoDataHandler.java @@ -98,20 +98,26 @@ public class MogoDataHandler implements IMogoDataManager { } - public void invoke( String tag, Object data ) { - if ( tag == null || mListeners.get( tag ) == null ) { + @Override + public void syncData( String module, Object object ) { + if ( module == null || mListeners.get( module ) == null ) { return; } try { - Iterator< IMogoDataChangedListener > iterator = mListeners.get( tag ).iterator(); + Iterator< IMogoDataChangedListener > iterator = mListeners.get( module ).iterator(); while ( iterator.hasNext() ) { IMogoDataChangedListener listener = iterator.next(); if ( listener != null ) { - listener.onDataSetChanged( data ); + listener.onDataSetChanged( object ); } } } catch ( Exception e ) { Logger.e( TAG, e, "error." ); } } + + @Deprecated + public void invoke( String tag, Object data ) { + syncData( tag, data ); + } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/datamanager/MogoDataManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/datamanager/MogoDataManager.java index 5466194947..8b3f7dd5c9 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/datamanager/MogoDataManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/datamanager/MogoDataManager.java @@ -36,6 +36,11 @@ public class MogoDataManager implements IMogoDataManager { MogoDataHandler.getInstance().removeDataFrom( module, object ); } + @Override + public void syncData( String module, Object object ) { + MogoDataHandler.getInstance().syncData( module, object ); + } + @Override public void init( Context context ) { MogoDataHandler.getInstance().init( context ); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java index 00762b3751..7e59c35e56 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java @@ -153,8 +153,8 @@ public class MapMarkerInfoView extends MapMarkerBaseView { break; case MarkerPoiTypeEnum.FOURS_FOG: ivIcon.setImageResource(R.drawable.module_service_ic_rc_dark_frog2); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_blue_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_blue); + clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_grey_info); + ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_grey); break; case MarkerPoiTypeEnum.FOURS_ICE: ivIcon.setImageResource(R.drawable.module_service_ic_rc_freeze2); @@ -163,13 +163,13 @@ public class MapMarkerInfoView extends MapMarkerBaseView { break; case MarkerPoiTypeEnum.FOURS_PARKING: ivIcon.setImageResource(R.drawable.module_service_ic_rc_parking2); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_blue_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_blue); + clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_dark_blue_info); + ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_dark_blue); break; case MarkerPoiTypeEnum.FOURS_ACCIDENT: ivIcon.setImageResource(R.drawable.module_service_ic_rc_accident2); - clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_blue_info); - ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_blue); + clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_red_info); + ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_red); break; default: ivIcon.setImageResource(R.drawable.icon_map_marker_shear_news); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index 9ea9784bac..6dd1001e38 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -24,7 +24,6 @@ import com.mogo.module.common.entity.MarkerShowEntity; import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.ServiceConst; import com.mogo.module.service.Utils; -import com.mogo.module.service.datamanager.MogoDataHandler; import com.mogo.module.service.utils.ViewUtils; import com.mogo.service.cardmanager.IMogoCardChangedListener; import com.mogo.service.connection.IMogoOnMessageListener; @@ -697,7 +696,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } try { Logger.d( TAG, "dispatch data to %s", biz ); - MogoDataHandler.getInstance().invoke( biz, object ); + MarkerServiceHandler.getDataManager().syncData( biz, object ); } catch ( Exception e ) { e.printStackTrace(); } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java index 7fe7f86535..1faa275105 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/receiver/MogoReceiver.java @@ -55,6 +55,8 @@ public class MogoReceiver extends BroadcastReceiver { */ public static final String ACTION_VOICE_READY = "com.zhidao.auto.AIAssist.ready"; + public static final String ACTION_MOCK = "com.mogo.mock"; + private IMogoIntentManager mMogoIntentManager; public MogoReceiver( Context context ) { diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_car_gray.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_car_gray.png old mode 100755 new mode 100644 index 4813a5df5d..ed4058f51a Binary files a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_car_gray.png and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_car_gray.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_car_gray.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_car_gray.png index eed1fca00c..d4266a6bc5 100644 Binary files a/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_car_gray.png and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/icon_map_marker_car_gray.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable/bg_map_marker_grey_info.xml b/modules/mogo-module-service/src/main/res/drawable/bg_map_marker_grey_info.xml new file mode 100644 index 0000000000..12bf9d1551 --- /dev/null +++ b/modules/mogo-module-service/src/main/res/drawable/bg_map_marker_grey_info.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-service/src/main/res/drawable/bg_shape_reverse_triangle_grey.xml b/modules/mogo-module-service/src/main/res/drawable/bg_shape_reverse_triangle_grey.xml new file mode 100644 index 0000000000..67f37a98a6 --- /dev/null +++ b/modules/mogo-module-service/src/main/res/drawable/bg_shape_reverse_triangle_grey.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + diff --git a/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml b/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml index dd210ad9b9..b37be6dc5d 100644 --- a/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml +++ b/modules/mogo-module-service/src/main/res/layout/view_map_marker.xml @@ -55,8 +55,8 @@ 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 522389a88e..d100a6e95b 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 @@ -3,7 +3,11 @@ package com.mogo.module.share; import android.content.Context; import android.util.Log; +import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.module.share.dialog.LaucherShareDialog; +import com.mogo.service.IMogoServiceApis; +import com.mogo.service.MogoServicePaths; +import com.mogo.utils.logger.Logger; /** * @author lixiaopeng @@ -16,8 +20,12 @@ public class ShareControl implements IShareControl { private Context mContext; private LaucherShareDialog mShareDialog; + private IMogoServiceApis mogoServiceApis; + private ShareControl(Context context) { mContext = context; + mogoServiceApis = + (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context); } public static ShareControl getInstance(Context context) { @@ -34,6 +42,13 @@ public class ShareControl implements IShareControl { @Override public void showDialog() { + + boolean isAdasShow = mogoServiceApis.getStatusManagerApi().isADASShow(); + Logger.d("ShareControl", "showDialog 判断adas是否展示: " + isAdasShow); + if (isAdasShow) { + mogoServiceApis.getAdasControllerApi().closeADAS(); + } + mShareDialog = new LaucherShareDialog(mContext); mShareDialog.setCanceledOnTouchOutside(true); mShareDialog.show(); diff --git a/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share.xml b/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share.xml index 25151ea2a7..e38447d88a 100644 --- a/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share.xml +++ b/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share.xml @@ -29,7 +29,8 @@ android:id="@+id/btn_block_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/share_module_first_margin_left"> + android:layout_marginEnd="@dimen/share_module_margin_left" + android:layout_toLeftOf="@+id/traffic_check_layout"> @@ -80,8 +82,7 @@ android:id="@+id/traffic_check_layout" android:layout_width="@dimen/share_module_image_width_second" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/share_module_margin_left" - android:layout_toRightOf="@+id/oil_price_layout"> + android:layout_centerHorizontal="true"> diff --git a/modules/mogo-module-share/src/main/res/values-ldpi/dimens.xml b/modules/mogo-module-share/src/main/res/values-ldpi/dimens.xml index dda7550e62..d28bf549bd 100644 --- a/modules/mogo-module-share/src/main/res/values-ldpi/dimens.xml +++ b/modules/mogo-module-share/src/main/res/values-ldpi/dimens.xml @@ -5,8 +5,8 @@ 320px 34px 43px - 80px - 64px + 100px + 118px 15px 85px 110px diff --git a/modules/mogo-module-share/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-share/src/main/res/values-xhdpi/dimens.xml index 1e9163fec3..ba3a919930 100644 --- a/modules/mogo-module-share/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-share/src/main/res/values-xhdpi/dimens.xml @@ -4,8 +4,8 @@ 600px 64px 80px - 150px - 120px + 200px + 210px 30px 160px 198px diff --git a/modules/mogo-module-share/src/main/res/values/dimens.xml b/modules/mogo-module-share/src/main/res/values/dimens.xml index 1e9163fec3..ba3a919930 100644 --- a/modules/mogo-module-share/src/main/res/values/dimens.xml +++ b/modules/mogo-module-share/src/main/res/values/dimens.xml @@ -4,8 +4,8 @@ 600px 64px 80px - 150px - 120px + 200px + 210px 30px 160px 198px diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/datamanager/IMogoDataManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/datamanager/IMogoDataManager.java index b6fd635ccf..de17e718d8 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/datamanager/IMogoDataManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/datamanager/IMogoDataManager.java @@ -40,4 +40,12 @@ public interface IMogoDataManager extends IProvider { * @param object 数据 */ void removeDataFrom( String module, Object object ); + + /** + * 向固定模块透传数据 + * + * @param module + * @param object + */ + void syncData( String module, Object object ); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/strategy/IMogoRefreshStrategyController.java b/services/mogo-service-api/src/main/java/com/mogo/service/strategy/IMogoRefreshStrategyController.java index 72356ea315..7c3f6f89ca 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/strategy/IMogoRefreshStrategyController.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/strategy/IMogoRefreshStrategyController.java @@ -17,4 +17,6 @@ public interface IMogoRefreshStrategyController extends IProvider { */ void restartAutoRefreshAtTime( int delay ); + + } \ No newline at end of file