diff --git a/app/build.gradle b/app/build.gradle index e90b27d6bf..f7fac3e35b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,10 +21,10 @@ android { multiDexEnabled true externalNativeBuild { -// ndk { -// // 设置支持的SO库架构 -// abiFilters 'armeabi-v7a' -// } + ndk { + // 设置支持的SO库架构 + abiFilters 'armeabi-v7a' + } } } signingConfigs { diff --git a/config.gradle b/config.gradle index cb393debf5..498afc9c99 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-commons/src/main/java/com/mogo/commons/voice/AIAssist.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java index 107c7770c8..f3f83666ce 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java @@ -312,8 +312,9 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack { } mHasFlush = true; Logger.d( TAG, "flush cache voice command when voice service ready." ); - for ( String cmd : mCacheUnWakeupCommands.keySet() ) { - registerUnWakeupCommand( cmd, mCacheUnWakeupCommands.get( cmd ) ); + final Map< String, String[] > tmp = new HashMap<>( mCacheUnWakeupCommands ); + for ( String cmd : tmp.keySet() ) { + registerUnWakeupCommand( cmd, tmp.get( cmd ) ); } } 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/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 b163ede5f4..d758bc0bb3 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 @@ -16,6 +16,7 @@ import android.view.animation.Interpolator; import com.amap.api.maps.AMap; import com.amap.api.maps.AMapUtils; import com.amap.api.maps.CameraUpdateFactory; +import com.amap.api.maps.LocationSource; import com.amap.api.maps.model.BitmapDescriptorFactory; import com.amap.api.maps.model.CameraPosition; import com.amap.api.maps.model.LatLng; @@ -78,6 +79,9 @@ public class AMapNaviViewWrapper implements IMogoMapView, private AMapMarkerClickHandler mMarkerClickHandler; private EnumMapUI mCurrentUIMode; + // 自定义定位源的回调信息,前瞻线 + private LocationSource.OnLocationChangedListener mOnLocationChangedListener; + public AMapNaviViewWrapper( AMapNaviView mapView ) { this.mMapView = mapView; this.mIMap = new AMapWrapper( mMapView.getMap(), mMapView, this ); @@ -89,70 +93,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( 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 ); } private void initListeners() { @@ -197,6 +202,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, initMapView(); initListeners(); initMyLocation(); +// initLocationSource(); } } @@ -445,7 +451,6 @@ public class AMapNaviViewWrapper implements IMogoMapView, } } - private boolean checkAMapView() { if ( mMapView == null ) { Logger.e( TAG, "高德mapView实例为空,请检查" ); @@ -462,12 +467,15 @@ public class AMapNaviViewWrapper implements IMogoMapView, return; } loseLockMode(); - mMapView.getMap() - .moveCamera( CameraUpdateFactory.newLatLng( new LatLng( latLng.lat, latLng.lng ) ) ); + mMapView.getMap().moveCamera( CameraUpdateFactory.newLatLng( new LatLng( latLng.lat, latLng.lng ) ) ); } @Override public void showMyLocation( boolean visible ) { + Logger.d( TAG, "showMyLocation1 %s", visible ); + if ( visible && NaviClient.getInstance( getContext() ).isNaviing() ) { + return; + } if ( checkAMapView() ) { MyLocationStyle style = mMapView.getMap().getMyLocationStyle(); style.showMyLocation( visible ); @@ -479,16 +487,15 @@ public class AMapNaviViewWrapper implements IMogoMapView, } } - private View mCursorView; - @Override - public void showMyLocation( float degree ) { + public void showMyLocation( View view ) { + if ( NaviClient.getInstance( getContext() ).isNaviing() ) { + return; + } if ( checkAMapView() ) { - mCursorView = View.inflate( getContext(), R.layout.map_amap_cursor, null ); - mCursorView.setRotation( degree ); MyLocationStyle style = mMapView.getMap().getMyLocationStyle(); style.showMyLocation( true ); - style.myLocationIcon( BitmapDescriptorFactory.fromView( mCursorView ) ); + style.myLocationIcon( BitmapDescriptorFactory.fromView( view ) ); mMapView.getMap().setMyLocationStyle( style ); } } @@ -507,6 +514,22 @@ public class AMapNaviViewWrapper implements IMogoMapView, } } + private void initLocationSource() { + if ( checkAMapView() ) { + mMapView.getMap().setLocationSource( new LocationSource() { + @Override + public void activate( OnLocationChangedListener onLocationChangedListener ) { + AMapNaviViewWrapper.this.mOnLocationChangedListener = onLocationChangedListener; + } + + @Override + public void deactivate() { + + } + } ); + } + } + @Override public void recoverLockMode() { if ( checkAMapView() ) { @@ -632,6 +655,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, @Override public void setPointToCenter( double mapCenterX, double mapCenterY ) { if ( checkAMapView() ) { + Logger.d( TAG, "setPointToCenter(%s, %s)", mapCenterX, mapCenterY ); AMapNaviViewOptions options = mMapView.getViewOptions(); options.setPointToCenter( mapCenterX, mapCenterY ); mMapView.setViewOptions( options ); @@ -741,4 +765,11 @@ public class AMapNaviViewWrapper implements IMogoMapView, public EnumMapUI getCurrentUiMode() { return mCurrentUIMode; } + + @Override + public void changeMyLocation( Location location ) { + if ( mOnLocationChangedListener != null ) { + mOnLocationChangedListener.onLocationChanged( location ); + } + } } diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java index 6372fcd37f..2632beced8 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapWrapper.java @@ -4,6 +4,7 @@ import android.content.Context; import com.amap.api.maps.AMap; import com.amap.api.maps.CameraUpdateFactory; +import com.amap.api.maps.LocationSource; import com.amap.api.maps.model.Marker; import com.amap.api.maps.model.MarkerOptions; import com.amap.api.maps.model.Polyline; diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AMapNaviListenerAdapter.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AMapNaviListenerAdapter.java index 8584b96289..b851ca258c 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AMapNaviListenerAdapter.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AMapNaviListenerAdapter.java @@ -28,6 +28,7 @@ import java.util.List; public abstract class AMapNaviListenerAdapter implements AMapNaviListener { private static final String TAG = "AMapNaviListenerAdapter"; + protected String mLastSpeakWord; @Override public void onInitNaviFailure() { @@ -61,7 +62,8 @@ public abstract class AMapNaviListenerAdapter implements AMapNaviListener { @Override public void onGetNavigationText( String s ) { - + mLastSpeakWord = s; + Logger.d( TAG, s ); } @Override 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 279a4b5afa..e24f8944e7 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 @@ -51,7 +51,7 @@ public class NaviClient implements IMogoNavi { private NaviClient( Context context ) { mAMapNavi = AMapNavi.getInstance( context ); mAMapNavi.setEmulatorNaviSpeed( 120 ); - mAMapNavi.setUseInnerVoice( true ); + mAMapNavi.setUseInnerVoice( true, true ); mAMapNaviListener = new NaviListenerAdapter( context, mAMapNavi, this ); mAimlessModeListener = new AimlessModeListenerAdapter() { }; diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java index bf95e060c4..b89eca72b5 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java @@ -3,6 +3,7 @@ package com.mogo.map.impl.amap.navi; import android.content.Context; import android.graphics.Rect; import android.os.Trace; +import android.text.TextUtils; import com.amap.api.maps.model.Polyline; import com.amap.api.navi.AMapNavi; @@ -16,6 +17,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.commons.voice.AIAssist; import com.mogo.map.MogoLatLng; import com.mogo.map.impl.amap.AMapWrapper; import com.mogo.map.impl.amap.message.AMapMessageManager; @@ -182,6 +184,10 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { */ private void stopNaviDelay() { UiThreadHandler.postDelayed( () -> { + if ( TextUtils.isEmpty( mLastSpeakWord ) || !mLastSpeakWord.contains( "结束" ) ) { + AIAssist.getInstance( mContext ).speakTTSVoice( "到达目的地附近,本次导航结束" ); + } + mLastSpeakWord = ""; stopNavi(); }, 5_000L ); } 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 5359900ed7..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 @@ -8,7 +8,12 @@ import android.text.TextUtils; import com.amap.api.maps.AMap; import com.amap.api.maps.CameraUpdateFactory; +import com.amap.api.maps.model.BitmapDescriptorFactory; +import com.amap.api.maps.model.LatLng; import com.amap.api.maps.model.LatLngBounds; +import com.amap.api.maps.model.Marker; +import com.amap.api.maps.model.MarkerOptions; +import com.amap.api.maps.model.MarkerOptionsCreator; import com.amap.api.maps.model.Polyline; import com.amap.api.navi.AMapNavi; import com.amap.api.navi.model.AMapNaviLocation; @@ -66,6 +71,11 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { private CalculatePathItem mSelectedCalculatePathItem; private OnCalculatePathItemClickInteraction mLineClickInteraction; + /** + * 起点终点marker + */ + private List< Marker > mMarkers = new ArrayList<>(); + public NaviOverlayHelper( AMapNavi mAMapNavi, AMap mAMap, Context mContext ) { this.mAMapNavi = mAMapNavi; this.mAMap = mAMap; @@ -83,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升序排序 * @@ -138,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, @@ -182,9 +215,9 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { Bitmap bitmap = BitmapFactory.decodeResource( mContext.getResources(), R.drawable.ic_endpoint ); Bitmap startBitmap = BitmapFactory.decodeResource( mContext.getResources(), R.drawable.ic_navi_start ); Bitmap endBitmap = BitmapFactory.decodeResource( mContext.getResources(), R.drawable.ic_navi_target ); - MogoMarkerOptions options = new MogoMarkerOptions().icon( bitmap ).zIndex( 0 ).anchor( 0.5f, 0.5f ); - MogoMarkerOptions startOptions = new MogoMarkerOptions().icon( startBitmap ).zIndex( 0 ).anchor( 0.5f, 1 ); - MogoMarkerOptions endOptions = new MogoMarkerOptions().icon( endBitmap ).zIndex( 0 ).anchor( 0.5f, 1 ); + MarkerOptions options = new MarkerOptions().icon( BitmapDescriptorFactory.fromBitmap( bitmap ) ).zIndex( 0 ).anchor( 0.5f, 0.5f ); + MarkerOptions startOptions = new MarkerOptions().icon( BitmapDescriptorFactory.fromBitmap( startBitmap ) ).zIndex( 0 ).anchor( 0.5f, 1 ); + MarkerOptions endOptions = new MarkerOptions().icon( BitmapDescriptorFactory.fromBitmap( endBitmap ) ).zIndex( 0 ).anchor( 0.5f, 1 ); for ( CalculatePathItem path : mCalculatePathItems ) { List< MogoLatLng > points = path.getCoordList(); if ( points == null || points.isEmpty() ) { @@ -195,10 +228,10 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { if ( startPoint == null || endPoint == null ) { continue; } - MogoMap.getInstance().getMogoMap().addMarker( TAG, options.latitude( startPoint.lat ).longitude( startPoint.lng ) ); - MogoMap.getInstance().getMogoMap().addMarker( TAG, options.latitude( endPoint.lat ).longitude( endPoint.lng ) ); - MogoMap.getInstance().getMogoMap().addMarker( TAG, startOptions.latitude( startPoint.lat ).longitude( startPoint.lng ) ); - MogoMap.getInstance().getMogoMap().addMarker( TAG, endOptions.latitude( endPoint.lat ).longitude( endPoint.lng ) ); + mMarkers.add( mAMap.addMarker( options.position( new LatLng( startPoint.lat, startPoint.lng ) ) ) ); + mMarkers.add( mAMap.addMarker( options.position( new LatLng( endPoint.lat, endPoint.lng ) ) ) ); + mMarkers.add( mAMap.addMarker( startOptions.position( new LatLng( startPoint.lat, startPoint.lng ) ) ) ); + mMarkers.add( mAMap.addMarker( endOptions.position( new LatLng( endPoint.lat, endPoint.lng ) ) ) ); break; } @@ -221,6 +254,19 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { if ( mPaths != null ) { mPaths.clear(); } + if ( !mMarkers.isEmpty() ) { + for ( Marker mMarker : mMarkers ) { + if ( mMarker == null ) { + continue; + } + try { + mMarker.remove(); + mMarker.destroy(); + } catch ( Exception e ) { + + } + } + } MogoMarkersHandler.getInstance().remove( TAG ); } 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/uicontroller/AMapUIController.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java index e935f49f8b..2509ae321e 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java @@ -2,6 +2,7 @@ package com.mogo.map.impl.amap.uicontroller; import android.graphics.Point; import android.graphics.Rect; +import android.location.Location; import android.view.View; import android.view.animation.Interpolator; @@ -93,9 +94,9 @@ public class AMapUIController implements IMogoMapUIController { } @Override - public void showMyLocation( float degree ) { + public void showMyLocation( View view ) { if ( mClient != null ) { - mClient.showMyLocation( degree ); + mClient.showMyLocation( view ); } } @@ -233,4 +234,11 @@ public class AMapUIController implements IMogoMapUIController { } return null; } + + @Override + public void changeMyLocation( Location location ) { + if ( mClient != null ) { + mClient.changeMyLocation( location ); + } + } } 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/uicontroller/IMogoMapUIController.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java index 3e946b4acd..bd2d6aeef6 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java @@ -2,6 +2,7 @@ package com.mogo.map.uicontroller; import android.graphics.Point; import android.graphics.Rect; +import android.location.Location; import android.view.View; import android.view.animation.Interpolator; @@ -55,9 +56,17 @@ public interface IMogoMapUIController { void showMyLocation( boolean visible ); /** - * @param degree 车标方向 + * + * @param view */ - void showMyLocation( float degree ); + void showMyLocation( View view ); + + /** + * 以外部定位的方式改变当前位置 + * + * @param location + */ + void changeMyLocation( Location location ); /** * 锁车 diff --git a/libraries/mogo-map-api/src/main/res/drawable-ldpi/map_api_ic_current_location.png b/libraries/mogo-map-api/src/main/res/drawable-ldpi/map_api_ic_current_location.png deleted file mode 100755 index 70be2a654c..0000000000 Binary files a/libraries/mogo-map-api/src/main/res/drawable-ldpi/map_api_ic_current_location.png and /dev/null differ diff --git a/libraries/mogo-map-api/src/main/res/drawable-ldpi/map_api_ic_current_location2.png b/libraries/mogo-map-api/src/main/res/drawable-ldpi/map_api_ic_current_location2.png index e7914a741e..5219b2f620 100644 Binary files a/libraries/mogo-map-api/src/main/res/drawable-ldpi/map_api_ic_current_location2.png and b/libraries/mogo-map-api/src/main/res/drawable-ldpi/map_api_ic_current_location2.png differ diff --git a/libraries/mogo-map-api/src/main/res/drawable-xhdpi/map_api_ic_current_location.png b/libraries/mogo-map-api/src/main/res/drawable-xhdpi/map_api_ic_current_location.png deleted file mode 100644 index 65cecf9af2..0000000000 Binary files a/libraries/mogo-map-api/src/main/res/drawable-xhdpi/map_api_ic_current_location.png and /dev/null differ diff --git a/libraries/mogo-map-api/src/main/res/drawable-xhdpi/map_api_ic_current_location2.png b/libraries/mogo-map-api/src/main/res/drawable-xhdpi/map_api_ic_current_location2.png index 8f8e62bae4..a4486144b2 100644 Binary files a/libraries/mogo-map-api/src/main/res/drawable-xhdpi/map_api_ic_current_location2.png and b/libraries/mogo-map-api/src/main/res/drawable-xhdpi/map_api_ic_current_location2.png differ diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java index 45e7b8abb5..83d2d655a8 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java @@ -2,6 +2,7 @@ package com.mogo.map; import android.graphics.Point; import android.graphics.Rect; +import android.location.Location; import android.view.View; import android.view.animation.Interpolator; @@ -87,9 +88,9 @@ public class MogoMapUIController implements IMogoMapUIController { } @Override - public void showMyLocation( float degree ) { + public void showMyLocation( View view ) { if ( mDelegate != null ) { - mDelegate.showMyLocation( degree ); + mDelegate.showMyLocation( view ); } } @@ -226,4 +227,11 @@ public class MogoMapUIController implements IMogoMapUIController { } return null; } + + @Override + public void changeMyLocation( Location location ) { + if ( mDelegate != null ) { + mDelegate.changeMyLocation( location ); + } + } } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java index d3f3549d29..6fae9abca7 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java @@ -177,10 +177,6 @@ public class AppNavigatorFragment extends MvpFragment * 描述 */ -public class AppNavigatorPresenter extends Presenter< AppNavigatorView > implements IMogoIntentListener { +public class AppNavigatorPresenter extends Presenter< AppNavigatorView > implements IMogoIntentListener, IMogoVoiceCmdCallBack { private static final String TAG = "AppNavigatorPresenter"; @@ -41,12 +43,14 @@ public class AppNavigatorPresenter extends Presenter< AppNavigatorView > impleme mIntentManager = ( IMogoIntentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_INTENT_MANAGER ).navigation( getContext() ); mMogoStatusManager = ( IMogoStatusManager ) ARouter.getInstance().build( MogoServicePaths.PATH_STATUS_MANAGER ).navigation( getContext() ); // 预加载应用列表,空间换时间 - AppsModel.getInstance(getContext()).load( null ); + AppsModel.getInstance( getContext() ).load( null ); } @Override public void onResume( @NonNull LifecycleOwner owner ) { super.onResume( owner ); + AIAssist.getInstance( getContext() ).registerUnWakeupCommand( AppsConst.CMD_UN_WAKE_OPEN_APP_LIST, AppsConst.CMD_UN_WAKE_WORDS_OPEN_APP_LIST, this ); + AIAssist.getInstance( getContext() ).registerUnWakeupCommand( AppsConst.CMD_UN_WAKE_OPEN_CAR_SETTINGS, AppsConst.CMD_UN_WAKE_WORDS_OPEN_CAR_SETTINGS, this ); mIntentManager.registerIntentListener( AppsConst.COMMAND_OPERATION, this ); } @@ -54,6 +58,8 @@ public class AppNavigatorPresenter extends Presenter< AppNavigatorView > impleme public void onPause( @NonNull LifecycleOwner owner ) { super.onPause( owner ); mIntentManager.unregisterIntentListener( AppsConst.COMMAND_OPERATION, this ); + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( AppsConst.CMD_UN_WAKE_OPEN_APP_LIST ); + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( AppsConst.CMD_UN_WAKE_OPEN_CAR_SETTINGS ); } @Override @@ -83,6 +89,42 @@ public class AppNavigatorPresenter extends Presenter< AppNavigatorView > impleme } } + @Override + public void onCmdSelected( String cmd ) { + switch ( cmd ) { + case AppsConst.CMD_UN_WAKE_OPEN_APP_LIST: + mView.openAppsPanel(); + break; + case AppsConst.CMD_UN_WAKE_OPEN_CAR_SETTINGS: + try { + LaunchUtils.launchByPkg( getContext(), AppsConst.APP_PKG_CAR_SETTINGS ); + } catch ( Exception e ) { + TipToast.shortTip( R.string.module_apps_str_no_app ); + } + break; + } + } + + @Override + public void onCmdAction( String speakText ) { + + } + + @Override + public void onCmdCancel( String speakText ) { + + } + + @Override + public void onSpeakEnd( String speakText ) { + + } + + @Override + public void onSpeakSelectTimeOut( String speakText ) { + + } + @Override public void onDestroy( @NonNull LifecycleOwner owner ) { if ( mIntentManager != null ) { diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorView.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorView.java index 52ca2e2fe0..00e75e1009 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorView.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorView.java @@ -15,9 +15,4 @@ public interface AppNavigatorView extends IView { * 打开全部应用 */ void openAppsPanel(); - - /** - * 关闭全部应用 - */ - void closeAppsPanel(); } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsConst.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsConst.java index 142822b9d5..5809924c22 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsConst.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsConst.java @@ -18,10 +18,6 @@ public class AppsConst { */ public static final int TOTAL_SIZE_EACH_PAGE = 12; - /** - * 媒体跳转 - */ - public static final String APP_PKG_MUSIC = "com.pvetec.musics"; /** * 车辆设置跳转 */ @@ -32,5 +28,13 @@ public class AppsConst { public static final String OPERATION_OPEN = "打开"; public static final String OPERATION_CLOSE = "关闭"; + public static final String CMD_UN_WAKE_OPEN_APP_LIST = "CMD_UN_WAKE_OPEN_APP_LIST"; + public static final String[] CMD_UN_WAKE_WORDS_OPEN_APP_LIST = new String[]{"打开全部应用"}; + + public static final String CMD_UN_WAKE_CLOSE_APP_LIST = "CMD_UN_WAKE_CLOSE_APP_LIST"; + public static final String[] CMD_UN_WAKE_WORDS_CLOSE_APP_LIST = new String[]{"关闭全部应用"}; + + public static final String CMD_UN_WAKE_OPEN_CAR_SETTINGS = "CMD_UN_WAKE_OPEN_CAR_SETTINGS"; + public static final String[] CMD_UN_WAKE_WORDS_OPEN_CAR_SETTINGS = new String[]{"打开快捷设置"}; } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListPresenter.java index 130081f148..560156e4d2 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListPresenter.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListPresenter.java @@ -1,12 +1,15 @@ package com.mogo.module.apps; import android.content.Intent; +import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.lifecycle.LifecycleOwner; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.mvp.Presenter; +import com.mogo.commons.voice.AIAssist; +import com.mogo.commons.voice.IMogoVoiceCmdCallBack; import com.mogo.module.apps.utils.LaunchUtils; import com.mogo.service.MogoServicePaths; import com.mogo.service.intent.IMogoIntentListener; @@ -22,7 +25,7 @@ import org.json.JSONObject; *

* 描述 */ -public class AppsListPresenter extends Presenter< AppsListView > implements IMogoIntentListener { +public class AppsListPresenter extends Presenter< AppsListView > implements IMogoIntentListener, IMogoVoiceCmdCallBack { private static final String TAG = "AppsListPresenter"; @@ -37,30 +40,58 @@ public class AppsListPresenter extends Presenter< AppsListView > implements IMog super.onCreate( owner ); mIntentManager = ( IMogoIntentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_INTENT_MANAGER ).navigation( getContext() ); mIntentManager.registerIntentListener( AppsConst.COMMAND_OPERATION, this ); + AIAssist.getInstance( getContext() ).registerUnWakeupCommand( AppsConst.CMD_UN_WAKE_CLOSE_APP_LIST, AppsConst.CMD_UN_WAKE_WORDS_CLOSE_APP_LIST, this ); } @Override public void onIntentReceived( String intentStr, Intent intent ) { - if ( !AppsConst.COMMAND_OPERATION.equals( intentStr ) ) { - return; - } - try { - JSONObject object = new JSONObject( intent.getStringExtra( "data" ) ); - String app = object.optString( "object" ); - String operation = object.optString( "operation" ); - if ( AppsConst.OBJECT_ALL_APPS.equals( app ) ) { - if ( AppsConst.OPERATION_CLOSE.equals( operation ) ) { - mView.closeAppsPanel(); + if ( AppsConst.COMMAND_OPERATION.equals( intentStr ) ) { + try { + JSONObject object = new JSONObject( intent.getStringExtra( "data" ) ); + String app = object.optString( "object" ); + String operation = object.optString( "operation" ); + if ( AppsConst.OBJECT_ALL_APPS.equals( app ) ) { + if ( AppsConst.OPERATION_CLOSE.equals( operation ) ) { + mView.closeAppsPanel(); + } } + } catch ( JSONException e ) { + e.printStackTrace(); } - } catch ( JSONException e ) { - e.printStackTrace(); } } + @Override + public void onCmdSelected( String cmd ) { + if ( TextUtils.equals( AppsConst.CMD_UN_WAKE_CLOSE_APP_LIST, cmd ) ) { + mView.closeAppsPanel(); + } + } + + @Override + public void onCmdAction( String speakText ) { + + } + + @Override + public void onCmdCancel( String speakText ) { + + } + + @Override + public void onSpeakEnd( String speakText ) { + + } + + @Override + public void onSpeakSelectTimeOut( String speakText ) { + + } + @Override public void onDestroy( @NonNull LifecycleOwner owner ) { super.onDestroy( owner ); mIntentManager.unregisterIntentListener( AppsConst.COMMAND_OPERATION, this ); + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( AppsConst.CMD_UN_WAKE_CLOSE_APP_LIST ); } } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index e7984a154e..9578f5079f 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -131,16 +131,22 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent .tag( MogoModulePaths.PATH_FRAGMENT_SEARCH ) .notifyMainModule( true ) .build() ); + + mApis.getAdasControllerApi().closeADAS(); } ); mHome = findViewById( R.id.module_entrance_id_home ); mHome.setOnClickListener( view -> { mMogoAddressManager.goHome(); + mApis.getAdasControllerApi().closeADAS(); + } ); mCompany = findViewById( R.id.module_entrance_id_company ); mCompany.setOnClickListener( view -> { mMogoAddressManager.goCompany(); + mApis.getAdasControllerApi().closeADAS(); + } ); mUploadRoadCondition = findViewById( R.id.module_entrance_id_upload_road_condition ); 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 be9d8f248c..55c93e14dd 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 @@ -14,6 +14,7 @@ import androidx.viewpager.widget.ViewPager; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.mvp.MvpActivity; import com.mogo.commons.voice.AIAssist; +import com.mogo.commons.voice.IMogoVoiceCmdCallBack; import com.mogo.map.location.IMogoLocationClient; import com.mogo.map.location.IMogoLocationListener; import com.mogo.map.location.MogoLocation; @@ -95,6 +96,13 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme private ViewPager.OnPageChangeListener mOnPageChangeListener; + /** + * 手势切换卡片必须为true + *

+ * 业务切换则由业务控制 + */ + private boolean mLockCarStatus = true; + @Override protected int getLayoutId() { return R.layout.module_main_activity_main; @@ -114,15 +122,21 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme final long start = System.currentTimeMillis(); try { IMogoModuleProvider provider = mCardModulesAdapter.getProvider( mCurrentPosition ); - mPresenter.postTrackLastCardShowEvent( provider ); + if ( mCurrentPosition != position ) { + mPresenter.postTrackLastCardShowEvent( provider ); + } mCurrentPosition = position; provider = mCardModulesAdapter.getProvider( mCurrentPosition ); mMogoModuleHandler.setModuleEnable( provider.getModuleName() ); mMogoCardManager.invoke( position, mMogoModuleHandler.getCurrentModuleName() ); - mMogoStatusManager.setUserInteractionStatus( TAG, true, false ); - mMogoMapUIController.setLockZoom( 16 ); - mMogoMapUIController.recoverLockMode(); + if ( mLockCarStatus ) { + mMogoStatusManager.setUserInteractionStatus( TAG, true, false ); + mMogoMapUIController.setLockZoom( 16 ); + mMogoMapUIController.recoverLockMode(); + } + mLockCarStatus = true; + } catch ( Exception e ) { e.printStackTrace(); } @@ -267,12 +281,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(); } } ); @@ -344,20 +352,14 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme if ( mCardModulesAdapter == null ) { return; } - + mLockCarStatus = lockCar; int position = mCardModulesAdapter.getProviderPosition( cardType ); if ( position != -1 ) { int lastFactPosition = mCardModulesAdapter.getFactPosition( mCurrentPosition ); - mCardsContainer.setCurrentItem( mCurrentPosition + position - lastFactPosition, - Math.abs( lastFactPosition - position ) == 1 ); + mCardsContainer.setCurrentItem( mCurrentPosition + position - lastFactPosition, Math.abs( lastFactPosition - position ) == 1 ); } else { Logger.e( TAG, "Can't find type of %s's position", cardType ); } - - if ( lockCar ) { - mMogoStatusManager.setUserInteractionStatus( TAG, true, false ); - mMogoMapUIController.recoverLockMode(); - } } @Override diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java index 12db43890c..7979fa545e 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java @@ -64,6 +64,7 @@ public class MainPresenter extends Presenter< MainView > { public MainPresenter( MainView view ) { super( view ); + mCardStartShowTime = System.currentTimeMillis(); } @Override @@ -76,7 +77,6 @@ public class MainPresenter extends Presenter< MainView > { mView.switch2Card( cardInfo.mCardName, cardInfo.mLockCar ); } ); mAnalytics = ( IMogoAnalytics ) ARouter.getInstance().build( MogoServicePaths.PATH_UTILS_ANALYTICS ).navigation( getContext() ); - mCardStartShowTime = System.currentTimeMillis(); } /** 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-ldpi/module_apps_bg_card.png b/modules/mogo-module-main/src/main/res/drawable-ldpi/module_apps_bg_card.png index 50943aa8c9..de1e81e0d9 100644 Binary files a/modules/mogo-module-main/src/main/res/drawable-ldpi/module_apps_bg_card.png and b/modules/mogo-module-main/src/main/res/drawable-ldpi/module_apps_bg_card.png differ diff --git a/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_apps_bg_card.png b/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_apps_bg_card.png index d2b6a05cb6..a82b29541a 100644 Binary files a/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_apps_bg_card.png and b/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_apps_bg_card.png differ 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..71014b83f0 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 @@ -82,12 +82,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); } } @@ -252,7 +251,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-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt index 91ef365590..2ddfb4a538 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt @@ -7,6 +7,7 @@ import com.mogo.module.navi.bean.EntityConvertUtils import com.mogo.module.navi.bean.SearchPoi import com.mogo.module.navi.constants.DataConstants import com.mogo.module.navi.constants.SearchServiceHolder +import com.mogo.module.navi.cp.AddressHelper import com.mogo.module.navi.dao.SearchPoiDao import com.mogo.module.navi.database.AppDataBase import com.mogo.module.navi.ui.search.ChoosePathFragment @@ -114,20 +115,28 @@ object AddressManager { } } - fun deleteHome(){ + fun deleteHome(context: Context){ Observable.create( ObservableOnSubscribe { poiDao.delete(homeAddress) + homeAddress?.name="" + AddressHelper.notifyAddressChanged(context, homeAddress!!) + homeAddress=null }) .subscribeOn(Schedulers.io()) .subscribe() + + } - fun deleteCompany(){ + fun deleteCompany(context: Context){ Observable.create( ObservableOnSubscribe { poiDao.delete(companyAddress) + companyAddress?.name="" + AddressHelper.notifyAddressChanged(context, companyAddress!!) + companyAddress=null }) .subscribeOn(Schedulers.io()) diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt index 4be59aa3a1..91b293b75e 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt @@ -10,6 +10,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.mogo.commons.voice.AIAssist import com.mogo.commons.voice.IMogoVoiceCmdCallBack import com.mogo.map.marker.IMogoMarker +import com.mogo.map.marker.IMogoMarkerClickListener import com.mogo.map.marker.MogoMarkerOptions import com.mogo.map.search.geo.MogoPoiItem import com.mogo.map.search.inputtips.MogoTip @@ -32,7 +33,13 @@ import kotlinx.android.synthetic.main.fragment_search_category.tv_navi_navi * @author zyz * 2020-01-09. */ -class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBack { +class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBack + { +// override fun onMarkerClicked(marker: IMogoMarker?): Boolean { +// +// return true +// } + override fun onCmdSelected(cmd: String?) { if (cmd?.startsWith("position") == true) { var index = cmd.substring(8) @@ -83,6 +90,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa .icon(createWaterMask) .latitude(datums[index].point?.lat ?: 0.0) .owner("CategorySearchFragment") + .`object`(index) // .anchor(0.5f, 1f) .longitude(datums[index].point?.lng ?: 0.0) arrayList.add(options) @@ -98,6 +106,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa addMarkers = SearchServiceHolder.getMarkerManger() .addMarkers(TAG, arrayList, true) moveMapToRight() + addClick() } private fun registerVoice() { @@ -118,11 +127,30 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa addMarkers = SearchServiceHolder.getMarkerManger() .addMarkers(TAG, arrayList, true) registerVoice() + addClick() + } else { unRegisterVoice() } } + private fun addClick(){ + if (addMarkers != null) { + for (item in addMarkers!!){ + item.setOnMarkerClickListener { + + var index = it.mogoMarkerOptions.`object` as Int + mAdapter.current=index + rv_search_result.smoothScrollToPosition(index) + updateMarker() + true + } + + } + } + + } + private lateinit var mAdapter: SearchCategoryAdapter private lateinit var mSearchPresenter: CategoryPresenter @@ -185,8 +213,9 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa addMarkers?.get(mAdapter.lastPosition) ?.setIcon(getMarkerIcon(mAdapter.lastPosition)) - addMarkers?.get(mAdapter.current) - ?.setIcon(getMarkerIcon(mAdapter.current)) + var current = addMarkers?.get(mAdapter.current) + current?.setIcon(getMarkerIcon(mAdapter.current)) + current?.setToTop() arrayList.get(mAdapter.lastPosition) .icon(getMarkerIcon(mAdapter.lastPosition)) arrayList.get(mAdapter.current) diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java index a2b25b8e8b..2ce8b818e3 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java @@ -177,9 +177,7 @@ public class SearchFragment extends BaseSearchFragment } }); - AIAssist.getInstance(getContext()) - .registerUnWakeupCommand(BACK_CMD, new String[] { "关闭", "返回" }, this); - registerVoidCmd(); + registerVoidCmd(); } private void goResult(MogoTip tag) { @@ -217,7 +215,6 @@ public class SearchFragment extends BaseSearchFragment private static final String WASH_CMD = "wash"; private static final String NAVI_SETTING_CMD = "setting"; private static final String CLEAN_CMD = "clean"; - private static final String BACK_CMD = "back"; private void registerVoidCmd() { @@ -522,7 +519,6 @@ public class SearchFragment extends BaseSearchFragment SearchServiceHolder.INSTANCE.getMapUIController().showMyLocation(true); moveMapToRight(); unRegisterVoice(); - AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(BACK_CMD); } private void unRegisterVoice() { @@ -595,12 +591,10 @@ public class SearchFragment extends BaseSearchFragment mSearchPresenter.deleteAllCachedPoi(); AIAssist.getInstance(getContext()) .speakQAndACmd(getString(R.string.notice_clean_history), - new String[] { "确定" }, new String[] { "取消" }, this); + new String[] { "确定","立即清空" }, new String[] { "取消" }, this); break; - case BACK_CMD: - SearchServiceHolder.INSTANCE.getFragmentManager().clearAll(); - break; + case GAS_CMD: goCategory(getString(R.string.navi_gas)); @@ -642,8 +636,8 @@ public class SearchFragment extends BaseSearchFragment @Override public void onCmdAction(String speakText) { - mSearchPresenter.deleteAllCachedPoi(); mSearchPresenter.hideDialog(); + mSearchPresenter.deleteAllCachedPoiImpl(); } @Override public void onCmdCancel(String speakText) { diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt index 896ce04f38..e538b23ddd 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt @@ -197,12 +197,12 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { tv_navi_clear_home_address.setOnClickListener { - AddressManager.deleteHome() + AddressManager.deleteHome(context!!) clearHome() } tv_navi_clear_company_address.setOnClickListener { - AddressManager.deleteCompany() + AddressManager.deleteCompany(context!!) clearCompany() } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt index cbffb47abd..f5575960c9 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt @@ -2,6 +2,7 @@ package com.mogo.module.navi.ui.setting import android.graphics.BitmapFactory import android.os.Bundle +import android.text.TextUtils import android.view.View import android.widget.Toast import androidx.fragment.app.Fragment @@ -43,8 +44,15 @@ import kotlinx.android.synthetic.main.fragment_setting_address.tv_set_as_home class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { override fun onRegeocodeSearched(regeocodeResult: MogoRegeocodeResult?) { et_navi_search.setText(regeocodeResult?.regeocodeAddress?.formatAddress) - selectPoi?.address=regeocodeResult?.regeocodeAddress?.formatAddress - selectPoi?.name=regeocodeResult?.regeocodeAddress?.building + var formatAddress = regeocodeResult?.regeocodeAddress?.formatAddress + selectPoi?.address = formatAddress + + var neighborhood = regeocodeResult?.regeocodeAddress?.neighborhood + if (!TextUtils.isEmpty(neighborhood)) { + selectPoi?.name = neighborhood + }else{ + selectPoi?.name = formatAddress + } } override fun onGeocodeSearched(geocodeResult: MogoGeocodeResult?) { @@ -55,7 +63,7 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { private var style: Int = DataConstants.TYPE_HOME_ADDRESS var addMarker: IMogoMarker? = null - private var selectPoi: SearchPoi?=null + private var selectPoi: SearchPoi? = null private var mapListener: IMogoMapListener = object : MogoMapListenerAdapter() { override fun onMapChanged( latLng: MogoLatLng?, @@ -64,20 +72,23 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { bearing: Float ) { super.onMapChanged(latLng, zoom, tilt, bearing) - selectPoi=EntityConvertUtils.geoToPoi(latLng?.lat?:0.0,latLng?.lng?:0.0,style) + selectPoi = EntityConvertUtils.geoToPoi(latLng?.lat ?: 0.0, latLng?.lng ?: 0.0, style) var mogoRegeocodeQuery = MogoRegeocodeQuery() mogoRegeocodeQuery.point = latLng - SearchServiceHolder.getGeoSearcher().getFromLocationAsyn(mogoRegeocodeQuery) + SearchServiceHolder.getGeoSearcher() + .getFromLocationAsyn(mogoRegeocodeQuery) addMarker?.apply { - SearchServiceHolder.getMapUIController().startJumpAnimation(this, - 150f,{input -> - if (input <= 0.5) { - (0.5f - 2.0 * (0.5 - input) * (0.5 - input)).toFloat() - } else { - (0.5f - Math.sqrt(((input - 0.5f) * (1.5f - input)).toDouble())).toFloat() - } - }, 600) + SearchServiceHolder.getMapUIController() + .startJumpAnimation(this, + 150f, { input -> + if (input <= 0.5) { + (0.5f - 2.0 * (0.5 - input) * (0.5 - input)).toFloat() + } else { + (0.5f - Math.sqrt(((input - 0.5f) * (1.5f - input)).toDouble())).toFloat() + } + }, 600 + ) } } } @@ -96,9 +107,11 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { .setGeoSearchListener(this) SearchServiceHolder.statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, true) + MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, true + ) - SearchServiceHolder.getMarkerManger().removeMarkers() + SearchServiceHolder.getMarkerManger() + .removeMarkers() } override fun getLayoutId(): Int { @@ -131,7 +144,8 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { } tv_set_as_home.setOnClickListener { if (selectPoi == null) { - Toast.makeText(context,"请选择",Toast.LENGTH_SHORT).show() + Toast.makeText(context, "请选择", Toast.LENGTH_SHORT) + .show() return@setOnClickListener } insert(selectPoi!!) @@ -146,16 +160,16 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { UiThreadHandler.postDelayed({ var decodeResource = BitmapFactory.decodeResource(resources, R.mipmap.icon_choose_position2) val options = MogoMarkerOptions() - .icon(decodeResource) - .latitude(location?.lat ?: 0.0) - .owner(TAG) - .anchor(0.5f, 1f) - .longitude(location?.lng ?: 0.0) + .icon(decodeResource) + .latitude(location?.lat ?: 0.0) + .owner(TAG) + .anchor(0.5f, 1f) + .longitude(location?.lng ?: 0.0) addMarker = SearchServiceHolder.getMarkerManger() - .addMarker(MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, options) + .addMarker(MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, options) var locationPointInScreen = SearchServiceHolder.getMapUIController() - .getLocationPointInScreen(location) + .getLocationPointInScreen(location) addMarker?.setPositionByPixels(locationPointInScreen) }, 500L) } @@ -173,7 +187,7 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { .subscribe() - AddressHelper.notifyAddressChanged(context,searchPoi) + AddressHelper.notifyAddressChanged(context, searchPoi) } @@ -188,12 +202,14 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { addMarker?.destroy() SearchServiceHolder.statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, false) + MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, false + ) - if (SearchServiceHolder.fragmentManager.stackSize == 0) { - moveMapToRight() - SearchServiceHolder.getMapUIController().showMyLocation(true) - } + if (SearchServiceHolder.fragmentManager.stackSize == 0) { + moveMapToRight() + SearchServiceHolder.getMapUIController() + .showMyLocation(true) + } // moveMapToRight() } 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 46e7b631fa..0062376c10 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 @@ -6,6 +6,8 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.location.Location; +import android.location.LocationManager; import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; @@ -13,6 +15,7 @@ import android.os.Message; import android.os.Trace; import android.text.TextUtils; import android.view.MotionEvent; +import android.view.View; import androidx.annotation.NonNull; @@ -46,6 +49,7 @@ import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; import com.mogo.service.adas.IMogoADASController; import com.mogo.service.cardmanager.IMogoCardManager; +import com.mogo.service.fragmentmanager.FragmentStackTransactionListener; import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.intent.IMogoIntentManager; @@ -83,7 +87,8 @@ public class MogoServices implements IMogoMapListener, IMogoStatusChangedListener, IMogoIntentListener, IMogoAimlessModeListener, - IMogoVoiceCmdCallBack { + IMogoVoiceCmdCallBack, + FragmentStackTransactionListener { private boolean mInternalUnWakeupRegisterStatus = false; @@ -299,14 +304,18 @@ public class MogoServices implements IMogoMapListener, mIntentManager.registerIntentListener( ServiceConst.COMMAND_NEXT, this ); mIntentManager.registerIntentListener( ServiceConst.COMMAND_PREVIOUS, this ); mIntentManager.registerIntentListener( ServiceConst.COMMAND_SWITCH_CARD, this ); + mIntentManager.registerIntentListener( ServiceConst.COMMAND_MY_LOCATION, this ); 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(); + + mFragmentManager.addMainFragmentStackTransactionListener( this ); initWorkThread(); } @@ -364,6 +373,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." ); @@ -609,7 +619,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 ) { @@ -630,17 +640,9 @@ public class MogoServices implements IMogoMapListener, case ADAS_UI: try { if ( isTrue ) { - // ADAS 时,不在自动刷新打点策略 - stopAutoRefreshStrategy(); - // 清除所有的打点信息记录 - MarkerServiceHandler.getMapMarkerManager().alreadySmallMarker.clear(); + onAdasOn(); } else { - // 主动刷新 - refreshStrategy(); - // ADAS关闭后,打开打点策略 - if ( mAutoRefreshCallback != null ) { - mAutoRefreshCallback.onSuccess(); - } + onAdasClosed(); } } catch ( Exception e ) { e.printStackTrace(); @@ -656,6 +658,21 @@ public class MogoServices implements IMogoMapListener, } } + private void onAdasOn() { + // ADAS 时,不在自动刷新打点策略 + stopAutoRefreshStrategy(); + // 清除所有的打点信息记录 + MarkerServiceHandler.getMapMarkerManager().alreadySmallMarker.clear(); + } + + private void onAdasClosed() { + refreshStrategy(); + // ADAS关闭后,打开打点策略 + if ( mAutoRefreshCallback != null ) { + mAutoRefreshCallback.onSuccess(); + } + } + public void restartAutoRefreshAtTime( int time ) { if ( time < 0 ) { Logger.w( TAG, "ignore refresh request case time < 0" ); @@ -723,10 +740,13 @@ public class MogoServices implements IMogoMapListener, } int status = intent.getIntExtra( MogoReceiver.PARAM_ADAS_STATUS, 0 ); mStatusManager.setADASUIShow( ServiceConst.TYPE, status == 1 ); - if ( status != 1 ) { + if ( status != 1 ) { // adas 关闭 mUiController.setLockZoom( ServiceConst.DEFAULT_LOCK_CAR_ZOOM_LEVEL ); + // 延时两秒执行是为了让其它事物完成 + UiThreadHandler.postDelayed( () -> { + mUiController.showMyLocation( true ); + }, 2_000L ); } - mUiController.showMyLocation( true ); } else if ( Intent.ACTION_POWER_CONNECTED.equals( command ) ) { mStatusManager.setAccStatus( ServiceConst.TYPE, true ); } else if ( Intent.ACTION_POWER_DISCONNECTED.equals( command ) ) { @@ -774,6 +794,7 @@ public class MogoServices implements IMogoMapListener, CarStateInfo stateInfo = GsonUtil.objectFromJson( msg, CarStateInfo.class ); if ( stateInfo != null ) { changeCarHeadstockDirection( stateInfo.getValues().getHeading() ); +// changeMyLocation( stateInfo.getValues() ); } } else if ( ServiceConst.COMMAND_OPERATION.equals( command ) ) { try { @@ -788,8 +809,22 @@ public class MogoServices implements IMogoMapListener, } catch ( JSONException e ) { e.printStackTrace(); } - } else if( MogoReceiver.ACTION_VOICE_READY.equals( command ) ){ + } else if ( MogoReceiver.ACTION_VOICE_READY.equals( command ) ) { AIAssist.getInstance( mContext ).flush(); + } else if ( ServiceConst.COMMAND_MY_LOCATION.equals( command ) ) { + if ( mStatusManager.isSearchUIShow() ) { + return; + } + 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; + } } } @@ -828,7 +863,7 @@ public class MogoServices implements IMogoMapListener, return false; } - private void changeCarHeadstockDirection( double degree ) { + private void changeCarHeadstockDirection( final double degree ) { if ( mNavi.isNaviing() ) { return; } @@ -841,7 +876,26 @@ public class MogoServices implements IMogoMapListener, if ( mUiController.getCurrentUiMode() != EnumMapUI.NorthUP_2D ) { return; } - mUiController.showMyLocation( ( ( float ) degree ) ); + UiThreadHandler.post( () -> { + + mUiController.showMyLocation( inflateCursorView( degree ) ); + } ); + } + + private View inflateCursorView( double degree ) { + View view = View.inflate( mContext, R.layout.map_amap_cursor, null ); + view.setRotation( ( float ) degree ); + return view; + } + + private void changeMyLocation( CarStateInfo.ValuesBean valuesBean ) { + if ( valuesBean == null ) { + return; + } + Location location = new Location( LocationManager.GPS_PROVIDER ); + location.setAltitude( valuesBean.getAlt() ); + location.setLatitude( valuesBean.getLat() ); + location.setLongitude( valuesBean.getLon() ); } /** @@ -854,6 +908,7 @@ public class MogoServices implements IMogoMapListener, mInternalUnWakeupRegisterStatus = true; AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_UN_WAKE_PREV, ServiceConst.CMD_UN_WAKE_PREV_UN_WAKE_WORDS, this ); AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_UN_WAKE_NEXT, ServiceConst.CMD_UN_WAKE_NEXT_UN_WAKE_WORDS, this ); + AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, ServiceConst.CMD_UN_WAKEUP_WORDS_MY_LOCATION, this ); } /** @@ -866,6 +921,7 @@ public class MogoServices implements IMogoMapListener, mInternalUnWakeupRegisterStatus = false; AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKE_PREV, this ); AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKE_NEXT, this ); + AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, this ); } @Override @@ -874,6 +930,12 @@ public class MogoServices implements IMogoMapListener, mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(), MogoAction.Prev ); } else if ( TextUtils.equals( ServiceConst.CMD_UN_WAKE_NEXT, cmd ) ) { mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(), MogoAction.Next ); + } else if ( TextUtils.equals( ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, cmd ) ) { + if ( mStatusManager.isMainPageOnResume() ) { + mUiController.recoverLockMode(); + } + } else if ( TextUtils.equals( ServiceConst.CMD_BACK, cmd ) ) { + mFragmentManager.clearAll(); } } @@ -896,4 +958,16 @@ public class MogoServices implements IMogoMapListener, public void onSpeakSelectTimeOut( String speakText ) { } + + @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/ServiceConst.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java index 3de1f52fd9..bc53a71cae 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java @@ -137,5 +137,20 @@ public class ServiceConst { */ public static final String COMMAND_OPERATION = "system.application.operation"; + /** + * 回到自车 + */ + public static final String COMMAND_MY_LOCATION = "com.zhidao.desk.backToMyLocation"; + + public static final String CMD_UN_WAKEUP_MY_LOCATION = "CMD_UN_WAKEUP_MY_LOCATION"; + public static final String[] CMD_UN_WAKEUP_WORDS_MY_LOCATION = new String[]{ + "回到我的位置", + "返回我的位置", + "定位我的位置" + }; + + public static final String CMD_BACK = "back"; + public static final String[] CMD_BACK_WORDS = new String[]{"关闭", "返回"}; + } 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 3ed681feac..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 @@ -151,6 +151,26 @@ public class MapMarkerInfoView extends MapMarkerBaseView { clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_dark_green_info); ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_dark_green); break; + case MarkerPoiTypeEnum.FOURS_FOG: + ivIcon.setImageResource(R.drawable.module_service_ic_rc_dark_frog2); + 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); + clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_blue_info); + ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_blue); + break; + case MarkerPoiTypeEnum.FOURS_PARKING: + ivIcon.setImageResource(R.drawable.module_service_ic_rc_parking2); + 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_red_info); + ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_red); + break; default: ivIcon.setImageResource(R.drawable.icon_map_marker_shear_news); clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_dark_blue_info); 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 e3ff2c1362..9ea9784bac 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 @@ -340,6 +340,10 @@ public class MapMarkerManager implements IMogoMarkerClickListener, return; } + if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) { + return; + } + // 解析不同的Marker类型,然后对应的进行绘制 mLastDataResult = response.getResult(); @@ -392,6 +396,10 @@ public class MapMarkerManager implements IMogoMarkerClickListener, return; } + if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) { + return; + } + if ( TextUtils.isEmpty( mCurrentModuleName ) ) { // 默认大而全 mCurrentModuleName = ServiceConst.CARD_TYPE_BUSINESS_OPERATION; diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java index b3033663d6..5e0539fb57 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java @@ -130,6 +130,18 @@ public class MapMarkerView extends MapMarkerBaseView { ivIcon.setImageResource(R.drawable.icon_map_marker_shop); ivBg.setImageResource(R.drawable.bg_map_marker_green_dark); break; + case MarkerPoiTypeEnum.FOURS_FOG: + ivBg.setImageResource(R.drawable.module_service_ic_rc_dark_frog); + break; + case MarkerPoiTypeEnum.FOURS_ICE: + ivBg.setImageResource(R.drawable.module_service_ic_rc_freeze); + break; + case MarkerPoiTypeEnum.FOURS_PARKING: + ivBg.setImageResource(R.drawable.module_service_ic_rc_parking); + break; + case MarkerPoiTypeEnum.FOURS_ACCIDENT: + ivBg.setImageResource(R.drawable.module_service_ic_rc_accident); + break; default: ivIcon.setImageResource(R.drawable.icon_map_marker_shear_news); ivBg.setImageResource(R.drawable.bg_map_marker_blue_dark); 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_book.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_book.png new file mode 100755 index 0000000000..f081765bbe Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_book.png differ 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 new file mode 100755 index 0000000000..4813a5df5d Binary files /dev/null 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-ldpi/icon_map_marker_location_blue.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_location_blue.png new file mode 100644 index 0000000000..34823616ee Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_location_blue.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_misic.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_misic.png new file mode 100755 index 0000000000..8d61bc6155 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_misic.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_news.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_news.png new file mode 100755 index 0000000000..24fa29d739 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_news.png differ diff --git a/libraries/mogo-map-api/src/main/res/drawable-ldpi/map_api_ic_current_location2_cursor.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/map_api_ic_current_location2_cursor.png similarity index 100% rename from libraries/mogo-map-api/src/main/res/drawable-ldpi/map_api_ic_current_location2_cursor.png rename to modules/mogo-module-service/src/main/res/drawable-ldpi/map_api_ic_current_location2_cursor.png diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_accident.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_accident.png new file mode 100644 index 0000000000..3d93b45561 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_accident.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_accident2.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_accident2.png new file mode 100644 index 0000000000..aff3481105 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_accident2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog.png new file mode 100644 index 0000000000..f546fb08de Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog2.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog2.png new file mode 100644 index 0000000000..ad2cfca0c4 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_dark_frog2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze.png new file mode 100644 index 0000000000..b42cf90efe Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze2.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze2.png new file mode 100644 index 0000000000..e9befa363b Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_freeze2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_parking.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_parking.png new file mode 100644 index 0000000000..84057231a5 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_parking.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_parking2.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_parking2.png new file mode 100644 index 0000000000..41eca665ca Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_rc_parking2.png differ diff --git a/libraries/mogo-map-api/src/main/res/drawable-xhdpi/map_api_ic_current_location2_cursor.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/map_api_ic_current_location2_cursor.png similarity index 100% rename from libraries/mogo-map-api/src/main/res/drawable-xhdpi/map_api_ic_current_location2_cursor.png rename to modules/mogo-module-service/src/main/res/drawable-xhdpi/map_api_ic_current_location2_cursor.png diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_accident.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_accident.png new file mode 100644 index 0000000000..8dd43b20a7 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_accident.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_accident2.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_accident2.png new file mode 100644 index 0000000000..1e61298d35 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_accident2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog.png new file mode 100644 index 0000000000..61296d59d2 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog2.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog2.png new file mode 100644 index 0000000000..107ac5bce6 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_dark_frog2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze.png new file mode 100644 index 0000000000..ea07251424 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze2.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze2.png new file mode 100644 index 0000000000..c7f02cd852 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_freeze2.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_parking.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_parking.png new file mode 100644 index 0000000000..33cb8fd3ce Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_parking.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_parking2.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_parking2.png new file mode 100644 index 0000000000..8026654bdf Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_rc_parking2.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/libraries/map-amap/src/main/res/layout/map_amap_cursor.xml b/modules/mogo-module-service/src/main/res/layout/map_amap_cursor.xml similarity index 100% rename from libraries/map-amap/src/main/res/layout/map_amap_cursor.xml rename to modules/mogo-module-service/src/main/res/layout/map_amap_cursor.xml diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java index a988dc8a80..9969338db9 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java @@ -6,8 +6,13 @@ import android.content.Intent; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.commons.AbsMogoApplication; +import com.mogo.map.MogoOverlayManager; import com.mogo.service.MogoServicePaths; import com.mogo.service.adas.IMogoADASController; +import com.mogo.service.impl.MogoServiceApis; +import com.mogo.service.impl.singleton.SingletonsHolder; +import com.mogo.service.impl.statusmanager.MogoStatusManager; +import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.utils.logger.Logger; import org.json.JSONObject; @@ -33,8 +38,15 @@ public class MogoADASController implements IMogoADASController { public static final String VAL_OPEN = "打开"; public static final String VAL_CLOSE = "关闭"; + private MogoStatusManager mStatusManager = SingletonsHolder.get( IMogoStatusManager.class ); + @Override public void openADAS() { + + if ( mStatusManager.isADASShow() ) { + return; + } + Intent intent = new Intent( ACTION ); intent.putExtra( PARAM_COMMAND, VAL_COMMAND ); JSONObject object = new JSONObject(); @@ -50,6 +62,11 @@ public class MogoADASController implements IMogoADASController { @Override public void closeADAS() { + + if ( !mStatusManager.isADASShow() ) { + return; + } + Intent intent = new Intent( ACTION ); intent.putExtra( PARAM_COMMAND, VAL_COMMAND ); JSONObject object = new JSONObject();