From 6661db0e8372f8f0d7313d25c29256ad0a7a73c3 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Mon, 4 Jan 2021 14:37:39 +0800 Subject: [PATCH] opt --- libraries/map-custom/build.gradle | 2 +- .../mogo/map/impl/custom/AMapViewWrapper.java | 61 ++++++++++++++----- .../drawer/AdasRecognizedResultDrawer.java | 8 ++- .../common/drawer/SnapshotSetDataDrawer.java | 27 +++----- .../common/map/MapCenterPointStrategy.java | 1 - .../extensions/entrance/EntranceFragment.java | 13 ++-- .../module/service/MogoServiceProvider.java | 2 +- .../com/mogo/module/service/MogoServices.java | 3 +- 8 files changed, 73 insertions(+), 44 deletions(-) diff --git a/libraries/map-custom/build.gradle b/libraries/map-custom/build.gradle index b7408bfcc7..7d2a5d509e 100644 --- a/libraries/map-custom/build.gradle +++ b/libraries/map-custom/build.gradle @@ -67,7 +67,7 @@ dependencies { implementation project(':foudations:mogo-commons') } - implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.5.7' + implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.6.0' // implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.4.5-log-1' } diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java index e8672f9503..f6c63fb767 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java @@ -70,7 +70,7 @@ public class AMapViewWrapper implements IMogoMapView, private IMogoMap mIMap; private AMapMarkerClickHandler mMarkerClickHandler; - private EnumMapUI mCurrentUIMode; + private EnumMapUI mCurrentCarUIMode; private boolean mIsCarLocked = false; private int mLockZoom = 16; @@ -87,6 +87,8 @@ public class AMapViewWrapper implements IMogoMapView, private EnumMapUI mCurrentUI; private boolean mIsLightStyle = false; private boolean mMapLoaded = false; + private boolean mIsFirstLocated = true; + private boolean mIsDelayed = false; public AMapViewWrapper( MapAutoView mMapView ) { startTime = System.currentTimeMillis(); @@ -218,8 +220,6 @@ public class AMapViewWrapper implements IMogoMapView, if ( mMapView != null ) { mMapView.onCreate( bundle ); Logger.d( TAG, "map onCreate" ); - initMapView(); - initMyLocation(); } } @@ -243,6 +243,12 @@ public class AMapViewWrapper implements IMogoMapView, public void onDestroy() { if ( mMapView != null ) { mMapView.onDestroy(); + mMapView.setOnMarkClickListener( null ); + mMapView.setOnMapLoadedListener( null ); + mMapView.setOnMapTouchListener( null ); + mMapView.setOnMapClickListener( null ); + mMapView.getLocationClient().unRegisterListener( this ); + mMapView.setMOnCameraChangeListener( null ); Logger.d( TAG, "map onDestroy" ); } } @@ -315,6 +321,7 @@ public class AMapViewWrapper implements IMogoMapView, if ( ui == null ) { return; } + Logger.d( TAG, "设置的样式 = %s", ui ); if ( checkAMapView() ) { switch ( ui ) { case CarUp_2D: @@ -349,7 +356,7 @@ public class AMapViewWrapper implements IMogoMapView, } private void setUIMode( EnumMapUI ui ) { - this.mCurrentUIMode = ui; + this.mCurrentCarUIMode = ui; if ( mMapView.getMapAutoViewHelper() != null ) { switch ( ui ) { case CarUp_2D: @@ -614,7 +621,7 @@ public class AMapViewWrapper implements IMogoMapView, @Override public EnumMapUI getCurrentUiMode() { - return mCurrentUIMode; + return mCurrentCarUIMode; } @Override @@ -699,10 +706,21 @@ public class AMapViewWrapper implements IMogoMapView, NaviClient.getInstance( getContext() ).syncCarLocation( sysLocation ); if ( checkAMapView() && mMapLoaded ) { - // 避免设置之后被其他初始化给重置为其他模式 - UiThreadHandler.postDelayed( () -> { + // 地图初始化完成后,每隔5s自动判断当前地图的模式 + if ( mIsFirstLocated ) { + if ( !mIsDelayed ) { + mIsDelayed = true; + UiThreadHandler.postDelayed( () -> { + Logger.d( TAG, "倒计时结束" ); + mIsFirstLocated = false; + }, 5_000L ); + } + } else { + mIsFirstLocated = true; + mIsDelayed = false; + Logger.d( TAG, "同步定位" ); MapStyleController.getInstance().onLocationChanged( location, this ); - }, 5_000L ); + } } } @@ -728,6 +746,8 @@ public class AMapViewWrapper implements IMogoMapView, cameraPosition.getBearing() ); Trace.endSection(); } + initMapView(); + initMyLocation(); } @Override @@ -748,17 +768,17 @@ public class AMapViewWrapper implements IMogoMapView, @Override public void onMapStatusChanged( int type, int value ) { - Logger.i( TAG, "mapop--onMapStatusChanged-: " + type + "," + value ); +// Logger.i( TAG, "mapop--onMapStatusChanged-: " + type + "," + value ); } @Override public void onCameraChange( int type, int value ) { - Logger.i( TAG, "mapop--onCameraChange-: " + type + "," + value ); +// Logger.i( TAG, "mapop--onCameraChange-: " + type + "," + value ); } @Override public void onCameraChangeFinish( @Nullable CameraPosition cameraPosition ) { - Logger.i( TAG, "mapop--onCameraChangeFinish-: " + cameraPosition + "cost:" + ( System.currentTimeMillis() - startTime ) ); +// Logger.i( TAG, "mapop--onCameraChangeFinish-: " + cameraPosition + "cost:" + ( System.currentTimeMillis() - startTime ) ); if ( cameraPosition != null ) { Trace.beginSection( "timer.onCameraChangeFinish" ); MogoMapListenerHandler.getInstance().onMapChanged( ObjectUtils.fromAMap( cameraPosition.getTarget() ), @@ -784,6 +804,9 @@ public class AMapViewWrapper implements IMogoMapView, } + //目前切换完vr之后,会立即回调其他样式,这里做一个判断 + private boolean mVrModeAutoChangedFlag = false; + @Override public void onChangeMapStyle( int i ) { @@ -803,13 +826,22 @@ public class AMapViewWrapper implements IMogoMapView, mCurrentUI = EnumMapUI.CarUp_3D; } + if ( last == mCurrentUI ) { + return; + } + // vr 模式切换到普通模式下,保持之前的白天模式 wtf. if ( last == EnumMapUI.Type_VR && mCurrentUI != last ) { if ( mIsLightStyle ) { changeMapMode( EnumMapUI.Type_Light ); return; } + if ( mVrModeAutoChangedFlag ) { + mVrModeAutoChangedFlag = false; + return; + } } + Logger.d( TAG, Log.getStackTraceString( new Throwable() ) ); if ( mCurrentUI != null ) { UiThreadHandler.post( () -> { try { @@ -831,19 +863,18 @@ public class AMapViewWrapper implements IMogoMapView, public void onStyleAutoChanged( boolean isVrMode ) { if ( isVrMode ) { if ( mCurrentUI != EnumMapUI.Type_VR ) { - changeZoom( 20 ); - changeMapMode( EnumMapUI.Type_VR ); Logger.d( TAG, "自动切换为vr模式" ); + mVrModeAutoChangedFlag = true; + changeMapMode( EnumMapUI.Type_VR ); } } else { if ( mCurrentUI == EnumMapUI.Type_VR ) { - changeZoom( 16 ); + Logger.d( TAG, "自动切换为2D模式" ); if ( mIsLightStyle ) { changeMapMode( EnumMapUI.Type_Light ); } else { changeMapMode( EnumMapUI.Type_Night ); } - Logger.d( TAG, "自动切换为2D模式" ); } } } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java index 2026a34c70..9b06caa126 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java @@ -104,8 +104,10 @@ class AdasRecognizedResultDrawer extends BaseDrawer { if ( mIsVrMode != MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { mIsVrMode = MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode(); if ( mIsVrMode ) { + marker.getMogoMarkerOptions().set3DMode( true ); marker.use3DResource( getVrModel() ); } else { + marker.getMogoMarkerOptions().set3DMode( false ); marker.setIcon( ViewUtils.fromView( inflateView( recognizedListResult, machineVision, 0 ) ) ); } } @@ -200,8 +202,10 @@ class AdasRecognizedResultDrawer extends BaseDrawer { .position( new MogoLatLng( recognizedListResult.latLonList.get( 0 ).lat, recognizedListResult.latLonList.get( 0 ).lon ) ); if ( mIsVrMode = MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { + options.set3DMode( true ); options.icon3DRes( getVrModel() ); } else { + options.set3DMode( false ); options.icon( inflateView( recognizedListResult, machineVision, curSpeed ) ); } @@ -209,7 +213,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { } private int getVrModel() { - return R.raw.taxi; + return R.raw.carred; } private View inflateView( ADASRecognizedListResult data, boolean machineVision, double curSpeed ) { @@ -225,7 +229,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { // safeType // ) ); - iv.setImageResource( R.drawable.icon_map_marker_car_type_taxi ); + iv.setImageResource( R.drawable.icon_map_marker_car_gray ); return rootView; } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java index c3e9f0b981..a5df8de53a 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java @@ -71,8 +71,6 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen // 云端 marker 缓存 private Map< String, IMogoMarker > mCloudSnapshotMarkersCaches = new ConcurrentHashMap<>(); - private int mPurseCounter = 0; - private Map< String, MogoLatLng > mLastPositions = new ConcurrentHashMap<>(); private boolean mIsVrMode = false; @@ -95,17 +93,6 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen filterData( data.getAllList() ); List< CloudRoadData > allDatumsList = new ArrayList<>(); allDatumsList.addAll( data.getAllList() ); -// allDatumsList.addAll( data.getNearList() ); -// if ( machineVision ) { -// allDatumsList.addAll( data.getAllList() ); -// allDatumsList.addAll( data.getNearList() ); -// } else { -// allDatumsList.addAll( data.getAllList() ); -// } - mPurseCounter++; - if ( mPurseCounter >= 100 ) { - mPurseCounter = 0; - } purgeCloudSnapshotData( allDatumsList ); for ( CloudRoadData cloudRoadData : allDatumsList ) { if ( cloudRoadData == null ) { @@ -119,7 +106,6 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen } } - IMogoMarker marker = null; String uniqueKey = cloudRoadData.getUniqueKey(); if ( TextUtils.isEmpty( uniqueKey ) ) { @@ -142,6 +128,7 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen if ( mIsVrMode != MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { mIsVrMode = MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode(); if ( mIsVrMode ) { + marker.getMogoMarkerOptions().set3DMode( true ); marker.use3DResource( getVrModel( cloudRoadData ) ); } else { marker.getMogoMarkerOptions().set3DMode( false ); @@ -159,7 +146,7 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen List< MogoLatLng > points = new ArrayList<>(); points.add( new MogoLatLng( lastPosition.lat, lastPosition.lon ) ); points.add( new MogoLatLng( target.lat, target.lon ) ); - marker.startSmoothInMs( points, SystemClock.elapsedRealtime() - mLastReceiveTime ); + marker.startSmoothInMs( points, 1000 ); } } else { marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() ); @@ -257,8 +244,10 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen // .position( new MogoLatLng( coor[POS_LAT], coor[POS_LON] ) ); .position( new MogoLatLng( data.getLat(), data.getLon() ) ); if ( mIsVrMode = MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { + options.set3DMode( true ); options.icon3DRes( getVrModel( data ) ); } else { + options.set3DMode( false ); options.icon( inflateView( data, machineVision, curSpeed ) ); } return MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( mContext ).addMarker( DataTypes.TYPE_MARKER_CLOUD_DATA, options ); @@ -267,9 +256,9 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen private int getVrModel( CloudRoadData data ) { switch ( data.getFromType() ) { case CloudRoadData.FROM_ADAS: - return R.raw.taxi; +// return R.raw.taxi; case CloudRoadData.FROM_ROAD_UNIT: - return R.raw.bus; +// return R.raw.bus; case CloudRoadData.FROM_MY_LOCATION: default: return R.raw.carred; @@ -296,9 +285,9 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen private int get2DModel( CloudRoadData data ) { switch ( data.getFromType() ) { case CloudRoadData.FROM_ADAS: - return R.drawable.icon_map_marker_car_type_taxi; +// return R.drawable.icon_map_marker_car_type_taxi; case CloudRoadData.FROM_ROAD_UNIT: - return R.drawable.icon_map_marker_car_type_bus; +// return R.drawable.icon_map_marker_car_type_bus; case CloudRoadData.FROM_MY_LOCATION: default: return R.drawable.icon_map_marker_car_gray; diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java index 4e86f84941..022550f286 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java @@ -274,7 +274,6 @@ public class MapCenterPointStrategy { Logger.w( TAG, "vr 模式下忽略该设置" ); return; } - Logger.e( TAG, "scene"+scene ); Map< Integer, Map< String, MapCenterPoint > > strategies = sCommonStrategies; if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { strategies = sVrStrategies; 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 850cef0236..0a604bf00c 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 @@ -839,11 +839,16 @@ public class EntranceFragment extends MvpFragment seekHelpGroup.setVisibility(View.GONE)); } } else if (descriptor == StatusDescriptor.VR_MODE) { - if (isTrue) { - enterVrMode(); - } else { - exitVrMode(); + try { + if (isTrue) { + enterVrMode(); + } else { + exitVrMode(); + } + } catch( Exception e ){ + e.printStackTrace(); } + } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java index b1402fee9b..fd8276d2da 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java @@ -103,8 +103,8 @@ public class MogoServiceProvider implements IMogoModuleProvider { MogoRTKLocation.getInstance().init(); } MogoServices.getInstance().preInit( context ); + MogoServices.getInstance().init( AbsMogoApplication.getApp() ); UiThreadHandler.postDelayed( () -> { - MogoServices.getInstance().init( AbsMogoApplication.getApp() ); }, 5_000L ); } 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 dcb08560b4..4070427fd0 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 @@ -326,6 +326,7 @@ public class MogoServices implements IMogoMapListener, mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.TOP_VIEW, statusChangedListener ); mStatusManager.registerStatusChangedListener( ServiceConst.TYPE, StatusDescriptor.MAIN_PAGE_IS_BACKGROUND, statusChangedListener ); mStatusManager.setAIAssistReady( TAG, AIAssist.getInstance( mContext ).hasFlush() ); + } public void init( Context context ) { @@ -337,9 +338,9 @@ public class MogoServices implements IMogoMapListener, registerInternalUnWakeupWords(); mRegisterCenter = MarkerServiceHandler.getRegisterCenter(); + mRegisterCenter.registerMogoMapListener( ServiceConst.TYPE, this ); mRegisterCenter.registerMogoLocationListener( ServiceConst.TYPE, this ); mRegisterCenter.registerMogoNaviListener( ServiceConst.TYPE, this ); - mRegisterCenter.registerMogoMapListener( ServiceConst.TYPE, this ); mRegisterCenter.registerMogoAimlessModeListener( ServiceConst.TYPE, this ); mRegisterCenter.registerCarLocationChangedListener( ServiceConst.TYPE, this );