From 97ce18650b3d497fbef2658a1269d5491d5681c6 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Mon, 31 Aug 2020 14:55:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=86=E5=88=86=E6=8D=A2=E8=82=A4=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 3 +- app/functions/skin.gradle | 4 - .../com/mogo/launcher/MogoApplication.java | 41 +------ config.gradle | 1 + .../mogo/map/impl/amap/AMapViewWrapper.java | 1 - .../extensions/entrance/EntranceFragment.java | 12 +- modules/mogo-module-main/build.gradle | 2 + .../mogo/module/main/EventDispatchCenter.java | 103 +++++++++++++++++- .../com/mogo/module/main/MainActivity.java | 40 +++++-- .../registercenter/MogoRegisterCenter.java | 26 ++++- .../MogoRegisterCenterHandler.java | 29 ++++- .../com/mogo/module/map/MapPresenter.java | 37 +++++-- services/mogo-service-api/build.gradle | 4 +- .../com/mogo/service/IMogoServiceApis.java | 7 ++ ...IMogoADASControlStatusChangedListener.java | 29 +++++ .../service/adas/IMogoADASController.java | 22 ++++ .../service/module/IMogoRegisterCenter.java | 22 ++++ services/mogo-service/build.gradle | 3 +- .../mogo/service/impl/MogoServiceApis.java | 10 +- .../service/impl/adas/MogoADASController.java | 47 ++++++++ skin/mogo-skin-light/README.md | 6 +- skin/mogo-skin-support-impl/build.gradle | 2 - 22 files changed, 363 insertions(+), 88 deletions(-) create mode 100644 services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASControlStatusChangedListener.java diff --git a/app/build.gradle b/app/build.gradle index 96dae5d2ef..58c19346ce 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -283,7 +283,8 @@ dependencies { implementation rootProject.ext.dependencies.carcall implementation rootProject.ext.dependencies.mogologlib - implementation "com.zhidao.adasconfig:adasconfig:1.0.5" + compileOnly rootProject.ext.dependencies.adasapi + compileOnly rootProject.ext.dependencies.adasconfigapi if (Boolean.valueOf(RELEASE)) { implementation rootProject.ext.dependencies.mogocommons diff --git a/app/functions/skin.gradle b/app/functions/skin.gradle index 6a6f93a4d9..15fbbad2c8 100644 --- a/app/functions/skin.gradle +++ b/app/functions/skin.gradle @@ -1,8 +1,6 @@ project.dependencies { if (Boolean.valueOf(RELEASE)) { - implementation rootProject.ext.dependencies.skinsupport - bydautoImplementation rootProject.ext.dependencies.skinsupportnoop f8xxImplementation rootProject.ext.dependencies.skinsupportimpl @@ -25,8 +23,6 @@ project.dependencies { d80xImplementation rootProject.ext.dependencies.skinsupportlight em3Implementation rootProject.ext.dependencies.skinsupportlight } else { - implementation project(":skin:mogo-skin-support") - bydautoImplementation project(':skin:mogo-skin-support-noop') f8xxImplementation project(':skin:mogo-skin-support-impl') diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 4342fec2a1..75868656df 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -27,15 +27,9 @@ import com.mogo.module.widgets.MogoWidgetsProvider; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; import com.mogo.service.passport.IMogoTicketCallback; -import com.mogo.skin.support.MogoSkinManager; -import com.mogo.skin.support.SkinMode; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.LogLevel; import com.mogo.utils.logger.Logger; -import com.zhidao.adasconfig.api.AdasConfigApiController; -import com.zhidao.adasconfig.common.config.EnumCarChatIncognitoMode; -import com.zhidao.adasconfig.listener.IAdasSettingUIListener; -import com.zhidao.adasconfig.listener.IAdasSkinStyleListener; import com.zhidao.boot.persistent.lib.PersistentManager; import com.zhidao.mogo.module.left.panel.LeftPanelConst; import com.zhidao.mogo.tanlu.api.TanluApiConst; @@ -92,7 +86,6 @@ public class MogoApplication extends AbsMogoApplication { Intent intent = new Intent( this, MogoMainService.class ); startService( intent ); } - listenerADASConfigChanged( this ); Log.i( "timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" ); } @@ -125,8 +118,8 @@ public class MogoApplication extends AbsMogoApplication { * 基础服务:passport、location、socket */ private void prepareBaseService( long delay ) { + final IMogoServiceApis apis = ARouter.getInstance().navigation( IMogoServiceApis.class ); UiThreadHandler.postDelayed( () -> { - final IMogoServiceApis apis = ARouter.getInstance().navigation( IMogoServiceApis.class ); // 第三方平台的sn是服务端生成的,所以必须在返回后才能开启 if ( TextUtils.isEmpty( Utils.getSn() ) ) { preparePassportEnvironment( apis, () -> { @@ -137,6 +130,7 @@ public class MogoApplication extends AbsMogoApplication { prepareSocketAndLocationServices( apis ); } }, delay ); + installSkinManager( this, apis ); } private void preparePassportEnvironment( IMogoServiceApis apis, Runnable after ) { @@ -168,35 +162,8 @@ public class MogoApplication extends AbsMogoApplication { } ); } - private void listenerADASConfigChanged( Application application ) { - MogoSkinManager.getInstance().getInstaller().install( application ); - AdasConfigApiController.getInstance().registerAdasSettingUiListener( new IAdasSettingUIListener() { - - @Override - public void northModel() { - } - - @Override - public void carHeadUp() { - } - - @Override - public void switchCarChat( EnumCarChatIncognitoMode enumCarChatIncognitoMode ) { - - } - } ); - AdasConfigApiController.getInstance().registerAdasSettingSkinModelListener( new IAdasSkinStyleListener() { - @Override - public void whiteModel() { - MogoSkinManager.getInstance().getInstaller().loadSkin( SkinMode.Light ); - } - - @Override - public void blackModel() { - MogoSkinManager.getInstance().getInstaller().loadSkin( SkinMode.Night ); - } - } ); - AdasConfigApiController.getInstance().init( application ); + private void installSkinManager( Application application, IMogoServiceApis apis ) { + apis.getSkinSupportInstallerApi().install( application ); } @Override diff --git a/config.gradle b/config.gradle index 7355c28022..bb579c5726 100644 --- a/config.gradle +++ b/config.gradle @@ -160,6 +160,7 @@ targetSdkVersion : 22, gpssimulatornoop : "com.mogo.module:module-gps-simulator-noop:${MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION}", adasapi : "com.zhidao.autopilot.support:adas:1.0.1", + adasconfigapi : "com.zhidao.adasconfig:adasconfig:1.0.5", // 个人中心的SDK personalsdk : "com.zhidaoauto.person.info:data:1.0.1", diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewWrapper.java index af09eeaa52..b84a513112 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapViewWrapper.java @@ -162,7 +162,6 @@ public class AMapViewWrapper implements IMogoMapView, // mMapView.setRouteOverlayVisible( false ); // mMapView.setCarOverlayVisible( false ); changeMapMode( EnumMapUI.CarUp_2D ); - changeMapMode( EnumMapUI.Type_Night ); setTrafficEnabled( true ); mMapView.getMap().moveCamera( CameraUpdateFactory.zoomTo( mDefaultZoomLevel ) ); } 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 e518ca04e2..ae73cfac78 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 @@ -186,17 +186,19 @@ public class EntranceFragment extends MvpFragment { final MogoLocation location = mMogoLocationClient.getLastKnowLocation(); if (location != null) { - if (!mStatusManager.isV2XShow()) { - mStatusManager.setUserInteractionStatus(TAG, true, false); - mMApUIController.setLockZoom(16); - mMApUIController.changeZoom(16.0f); - } if (mStatusManager.isDisplayOverview()) { mStatusManager.setDisplayOverview(TAG, false); UiThreadHandler.removeCallbacks(mLockCarRunnable); } mStatusManager.setUserInteractionStatus(TAG, true, false); mMApUIController.recoverLockMode(); + UiThreadHandler.postDelayed( ()->{ + if (!mStatusManager.isV2XShow()) { + mStatusManager.setUserInteractionStatus(TAG, true, false); + mMApUIController.setLockZoom(16); + mMApUIController.changeZoom(16.0f); + } + }, 1_000L ); } }); diff --git a/modules/mogo-module-main/build.gradle b/modules/mogo-module-main/build.gradle index f900dbe293..f02e1cfff6 100644 --- a/modules/mogo-module-main/build.gradle +++ b/modules/mogo-module-main/build.gradle @@ -40,6 +40,8 @@ dependencies { implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.arouter annotationProcessor rootProject.ext.dependencies.aroutercompiler + compileOnly rootProject.ext.dependencies.adasapi + compileOnly rootProject.ext.dependencies.adasconfigapi if (Boolean.valueOf(RELEASE)) { api rootProject.ext.dependencies.mogoutils api rootProject.ext.dependencies.mogocommons diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java index 61c20a0d37..1b7de74777 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java @@ -20,8 +20,12 @@ import com.mogo.map.navi.MogoNaviInfo; import com.mogo.map.navi.MogoTraffic; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.module.main.registercenter.MogoRegisterCenterHandler; +import com.mogo.service.adas.IMogoADASControlStatusChangedListener; import com.mogo.service.obu.IMogoObuDataChangedListener; import com.mogo.utils.logger.Logger; +import com.zhidao.adasconfig.common.config.EnumCarChatIncognitoMode; +import com.zhidao.adasconfig.listener.IAdasSettingUIListener; +import com.zhidao.adasconfig.listener.IAdasSkinStyleListener; import com.zhidao.smartv2x.model.obu.CarEventInfo; import com.zhidao.smartv2x.model.obu.CarLocationInfo; import com.zhidao.smartv2x.model.obu.TrafficLightInfo; @@ -42,7 +46,9 @@ public class EventDispatchCenter implements IMogoMapListener, IMogoNaviListener2, IMogoLocationListener, - IMogoObuDataChangedListener { + IMogoObuDataChangedListener, + IAdasSettingUIListener, + IAdasSkinStyleListener { private static volatile EventDispatchCenter sInstance; @@ -523,4 +529,99 @@ public class EventDispatchCenter implements iterator.next().showCarEventInfo( info ); } } + + @Override + public void northModel() { + Iterator< IMogoADASControlStatusChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getAdasControlStatusChangedListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoADASControlStatusChangedListener listener = iterator.next(); + if ( listener == null ) { + continue; + } + try { + listener.onMapUiModeChanged( EnumMapUI.NorthUP_2D ); + } catch ( Exception e ) { + Logger.e( TAG, e, "onMapUiModeChanged" ); + } + } + } + + @Override + public void carHeadUp() { + Iterator< IMogoADASControlStatusChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getAdasControlStatusChangedListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoADASControlStatusChangedListener listener = iterator.next(); + if ( listener == null ) { + continue; + } + try { + listener.onMapUiModeChanged( EnumMapUI.CarUp_2D ); + } catch ( Exception e ) { + Logger.e( TAG, e, "onMapUiModeChanged" ); + } + } + } + + @Override + public void switchCarChat( EnumCarChatIncognitoMode enumCarChatIncognitoMode ) { + Iterator< IMogoADASControlStatusChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getAdasControlStatusChangedListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoADASControlStatusChangedListener listener = iterator.next(); + if ( listener == null ) { + continue; + } + try { + listener.onCarStatusChanged( enumCarChatIncognitoMode == EnumCarChatIncognitoMode.OPEN ); + } catch ( Exception e ) { + Logger.e( TAG, e, "onMapUiModeChanged" ); + } + } + } + + @Override + public void whiteModel() { + Iterator< IMogoADASControlStatusChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getAdasControlStatusChangedListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoADASControlStatusChangedListener listener = iterator.next(); + if ( listener == null ) { + continue; + } + try { + listener.onMapUiModeChanged( EnumMapUI.Type_Light ); + } catch ( Exception e ) { + Logger.e( TAG, e, "onMapUiModeChanged" ); + } + } + } + + @Override + public void blackModel() { + Iterator< IMogoADASControlStatusChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getAdasControlStatusChangedListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoADASControlStatusChangedListener listener = iterator.next(); + if ( listener == null ) { + continue; + } + try { + listener.onMapUiModeChanged( EnumMapUI.Type_Night ); + } catch ( Exception e ) { + Logger.e( TAG, e, "onMapUiModeChanged" ); + } + } + } } 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 0c97508d87..1870c90b65 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 @@ -2,7 +2,6 @@ package com.mogo.module.main; import android.content.Intent; import android.os.Bundle; -import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.FrameLayout; @@ -18,22 +17,23 @@ import com.mogo.map.location.IMogoLocationListener; import com.mogo.map.location.MogoLocation; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.IMogoMarkerClickListener; +import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.module.common.map.MapCenterPointStrategy; import com.mogo.module.common.map.Scene; -import com.mogo.module.common.utils.CarSeries; import com.mogo.module.main.cards.MogoModulesManager; import com.mogo.module.main.service.MogoMainService; import com.mogo.module.main.windowview.FloatingViewHandler; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; +import com.mogo.service.adas.IMogoADASControlStatusChangedListener; import com.mogo.service.fragmentmanager.IMogoFragmentManager; -import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoModuleProvider; -import com.mogo.service.monitor.IMogoMonitorProvider; import com.mogo.service.statusmanager.IMogoStatusManager; +import com.mogo.skin.support.SkinMode; import com.mogo.utils.logger.Logger; +import com.zhidao.adasconfig.api.AdasConfigApiController; import com.zhidao.autopilot.support.api.AutopilotServiceManage; import java.util.List; @@ -46,7 +46,8 @@ import java.util.List; */ public class MainActivity extends MvpActivity< MainView, MainPresenter > implements MainView, IMogoLocationListener, - IMogoMarkerClickListener { + IMogoMarkerClickListener, + IMogoADASControlStatusChangedListener { protected static final String TAG = MainActivity.class.getSimpleName(); @@ -176,7 +177,15 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme // 初始化MonitorModule // IMogoMonitorProvider monitorProvider = (IMogoMonitorProvider) ARouter.getInstance().build(MogoServicePaths.PATH_MOGO_MONITOR).navigation(this); // monitorProvider.resetActivityContext(this); - mServiceApis.getMogoMonitorApi().resetActivityContext(this); + mServiceApis.getMogoMonitorApi().resetActivityContext( this ); + initAdasControlStatusListener(); + } + + private void initAdasControlStatusListener() { + mServiceApis.getRegisterCenterApi().registerADASControlStatusChangedListener( TAG, this ); + AdasConfigApiController.getInstance().registerAdasSettingUiListener( EventDispatchCenter.getInstance() ); + AdasConfigApiController.getInstance().registerAdasSettingSkinModelListener( EventDispatchCenter.getInstance() ); + AdasConfigApiController.getInstance().init( getApplicationContext() ); } private void startBaseService() { @@ -199,12 +208,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme @Override public void loadCardModules() { - List< IMogoModuleProvider > providers = MogoModulesManager.getInstance().loadCardsModule(); -// mCardModulesAdapter = new CardModulesAdapter( this, providers ); -// mCardsContainer.setOffscreenPageLimit( providers.size() ); -// mCardsContainer.setPageTransformer( true, mTransformer ); -// mCardsContainer.setAdapter( mCardModulesAdapter ); } @Override @@ -229,6 +233,18 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme return false; } + @Override + public void onMapUiModeChanged( EnumMapUI mapUI ) { + switch ( mapUI ) { + case Type_Night: + mServiceApis.getSkinSupportInstallerApi().loadSkin( SkinMode.Night ); + break; + case Type_Light: + mServiceApis.getSkinSupportInstallerApi().loadSkin( SkinMode.Light ); + break; + } + } + @Override protected void onResume() { super.onResume(); @@ -250,7 +266,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme } } - protected boolean shouldCloseADASPanelWhenPause(){ + protected boolean shouldCloseADASPanelWhenPause() { // m4 系列因为按home键会造成页面pause后resume,造成adas panel 闪烁 // f 系列加上上滑返回桌面后会走 mIsHomeKeyDown = true,但是不会造成页面pause // 独立 app 任何情况下都需要隐藏 adas diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenter.java index 34be3beb93..ec029d7bac 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenter.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenter.java @@ -10,6 +10,7 @@ import com.mogo.map.navi.IMogoAimlessModeListener; import com.mogo.map.navi.IMogoCarLocationChangedListener; import com.mogo.map.navi.IMogoNaviListener; import com.mogo.service.MogoServicePaths; +import com.mogo.service.adas.IMogoADASControlStatusChangedListener; import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.obu.IMogoObuDataChangedListener; @@ -92,7 +93,7 @@ public class MogoRegisterCenter implements IMogoRegisterCenter { @Override public void registerCarLocationChangedListener( String tag, IMogoCarLocationChangedListener listener ) { - MogoRegisterCenterHandler.getInstance().registerCarLocationChangedListener( tag, listener); + MogoRegisterCenterHandler.getInstance().registerCarLocationChangedListener( tag, listener ); } @Override @@ -101,13 +102,28 @@ public class MogoRegisterCenter implements IMogoRegisterCenter { } @Override - public void registerObuDataListener(String tag, IMogoObuDataChangedListener listener) { - MogoRegisterCenterHandler.getInstance().registerObuDataListener(tag, listener); + public void registerObuDataListener( String tag, IMogoObuDataChangedListener listener ) { + MogoRegisterCenterHandler.getInstance().registerObuDataListener( tag, listener ); } @Override - public void unregisterObuDataListener(String tag) { - MogoRegisterCenterHandler.getInstance().unregisterObuDataListener(tag); + public void unregisterObuDataListener( String tag ) { + MogoRegisterCenterHandler.getInstance().unregisterObuDataListener( tag ); + } + + @Override + public void registerADASControlStatusChangedListener( String tag, IMogoADASControlStatusChangedListener listener ) { + MogoRegisterCenterHandler.getInstance().registerADASControlStatusChangedListener( tag, listener ); + } + + @Override + public void unregisterADASControlStatusChangedListener( String tag ) { + MogoRegisterCenterHandler.getInstance().unregisterADASControlStatusChangedListener( tag ); + } + + @Override + public Iterator< IMogoADASControlStatusChangedListener > getAdasControlStatusChangedListeners() { + return MogoRegisterCenterHandler.getInstance().getAdasControlStatusChangedListeners(); } @Override diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenterHandler.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenterHandler.java index cc9148a3e5..060bfe8d67 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenterHandler.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/registercenter/MogoRegisterCenterHandler.java @@ -8,6 +8,7 @@ import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.navi.IMogoAimlessModeListener; import com.mogo.map.navi.IMogoCarLocationChangedListener; import com.mogo.map.navi.IMogoNaviListener; +import com.mogo.service.adas.IMogoADASControlStatusChangedListener; import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.obu.IMogoObuDataChangedListener; @@ -33,7 +34,8 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter { private Map< String, IMogoMarkerClickListener > mMarker = new HashMap<>(); private Map< String, IMogoAimlessModeListener > mAimless = new HashMap<>(); private Map< String, IMogoCarLocationChangedListener > mCarLocations = new HashMap<>(); - private Map mObus = new HashMap<>(); + private Map< String, IMogoObuDataChangedListener > mObus = new HashMap<>(); + private Map< String, IMogoADASControlStatusChangedListener > mADAS = new HashMap<>(); private MogoRegisterCenterHandler() { } @@ -125,13 +127,23 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter { } @Override - public void registerObuDataListener(String tag, IMogoObuDataChangedListener listener) { - mObus.put(tag, listener); + public void registerObuDataListener( String tag, IMogoObuDataChangedListener listener ) { + mObus.put( tag, listener ); } @Override - public void unregisterObuDataListener(String tag) { - mObus.remove(tag); + public void unregisterObuDataListener( String tag ) { + mObus.remove( tag ); + } + + @Override + public void registerADASControlStatusChangedListener( String tag, IMogoADASControlStatusChangedListener listener ) { + mADAS.put( tag, listener ); + } + + @Override + public void unregisterADASControlStatusChangedListener( String tag ) { + mADAS.remove( tag ); } @Override @@ -170,9 +182,10 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter { return mNavi.values().iterator(); } - public Iterator getObuDataChangedListeners(){ + public Iterator< IMogoObuDataChangedListener > getObuDataChangedListeners() { return mObus.values().iterator(); } + @Override public Iterator< IMogoLocationListener > getLocationListeners() { return mLocation.values().iterator(); @@ -191,4 +204,8 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter { return mCarLocations.values().iterator(); } + @Override + public Iterator getAdasControlStatusChangedListeners(){ + return mADAS.values().iterator(); + } } 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 a45306c822..2085349e18 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 @@ -24,6 +24,7 @@ import com.mogo.map.uicontroller.MapControlResult; import com.mogo.module.common.map.CustomNaviInterrupter; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; +import com.mogo.service.adas.IMogoADASControlStatusChangedListener; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.intent.IMogoIntentManager; import com.mogo.service.launcher.IMogoLauncher; @@ -50,9 +51,11 @@ public class MapPresenter extends Presenter< MapView > implements IMogoIntentListener, IMogoVoiceCmdCallBack, IMogoNaviListener2, - OnMapControlCallback { + OnMapControlCallback, + IMogoADASControlStatusChangedListener { private static final String TAG = "MapPresenter"; + private IMogoServiceApis mApis; private IMogoMapService mMogoMapService; private IMogoIntentManager mMogoIntentManager; private IMogoSearchManager mSearchManager; @@ -79,6 +82,7 @@ public class MapPresenter extends Presenter< MapView > implements public MapPresenter( MapView view ) { super( view ); + } @Override @@ -89,11 +93,18 @@ public class MapPresenter extends Presenter< MapView > implements @Override public void onCameraModeChanged( EnumMapUI mode ) { mView.getUIController().changeMapMode( mode ); + mApis.getAdasControllerApi().changeAdasControlMode( mode ); } @Override public void onDayNightModeChanged( EnumMapUI mode ) { mView.getUIController().changeMapMode( mode ); + mApis.getAdasControllerApi().changeAdasControlMode( mode ); + } + + @Override + public void onMapUiModeChanged( EnumMapUI mapUI ) { + mView.getUIController().changeMapMode( mapUI ); } @Override @@ -237,16 +248,16 @@ public class MapPresenter extends Presenter< MapView > implements public void onCreate( @NonNull LifecycleOwner owner ) { super.onCreate( owner ); - IMogoServiceApis apis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( getContext() ); - mMogoMapService = apis.getMapServiceApi(); - mMogoIntentManager = apis.getIntentManagerApi(); - mSearchManager = apis.getSearchManagerApi(); - mRefreshStrategyController = apis.getRefreshStrategyControllerApi(); - mStatusManager = apis.getStatusManagerApi(); - mRegisterCenter = apis.getRegisterCenterApi(); + mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( getContext() ); + mMogoMapService = mApis.getMapServiceApi(); + mMogoIntentManager = mApis.getIntentManagerApi(); + mSearchManager = mApis.getSearchManagerApi(); + mRefreshStrategyController = mApis.getRefreshStrategyControllerApi(); + mStatusManager = mApis.getStatusManagerApi(); + mRegisterCenter = mApis.getRegisterCenterApi(); mRegisterCenter.registerMogoNaviListener( TAG, this ); - mLauncher = apis.getLauncherApi(); - mMogoSearchManager = apis.getSearchManagerApi(); + mLauncher = mApis.getLauncherApi(); + mMogoSearchManager = mApis.getSearchManagerApi(); IMogoNavi mogoNavi = mMogoMapService.getNavi( getContext() ); mogoNavi.setCalculatePathDisplayBounds( new Rect( @@ -270,6 +281,10 @@ public class MapPresenter extends Presenter< MapView > implements initBroadcast(); mCustomVoiceCommandHandler = new MapControlCommandHandler(); mCustomVoiceCommandHandler.setCallback( this ); + mRegisterCenter.registerADASControlStatusChangedListener( TAG, this ); + + final EnumMapUI mapUI = mApis.getAdasControllerApi().getCurrentSkinMode(); + mMogoMapService.getMapUIController().changeMapMode( mapUI ); } private void initBroadcast() { @@ -296,6 +311,8 @@ public class MapPresenter extends Presenter< MapView > implements if ( mAutoNaviReceiver != null ) { mAutoNaviReceiver.unregister( mMogoIntentManager ); } + mRegisterCenter.unregisterMogoNaviListener( TAG ); + mRegisterCenter.unregisterADASControlStatusChangedListener( TAG ); } private void registerVoiceCmd() { diff --git a/services/mogo-service-api/build.gradle b/services/mogo-service-api/build.gradle index 2f30b30043..321acd18a9 100644 --- a/services/mogo-service-api/build.gradle +++ b/services/mogo-service-api/build.gradle @@ -43,9 +43,11 @@ dependencies { api rootProject.ext.dependencies.fresco api rootProject.ext.dependencies.obusdk if (Boolean.valueOf(RELEASE)) { - implementation rootProject.ext.dependencies.mogomapapi + api rootProject.ext.dependencies.mogomapapi + api rootProject.ext.dependencies.skinsupport } else { api project(":libraries:mogo-map-api") + api project(":skin:mogo-skin-support") } } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java index a1f549ff81..66aecbd070 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java @@ -35,6 +35,7 @@ import com.mogo.service.tanlu.IMogoTanluProvider; import com.mogo.service.tanlu.IMogoTanluUiProvider; import com.mogo.service.windowview.IMogoTopViewManager; import com.mogo.service.windowview.IMogoWindowManager; +import com.mogo.skin.support.IMogoSkinSupportInstaller; /** * @author congtaowang @@ -263,4 +264,10 @@ public interface IMogoServiceApis extends IProvider { * @return */ IMogoTanluUiProvider getTanluUiApi(); + + /** + * 皮肤管理接口 + * @return + */ + IMogoSkinSupportInstaller getSkinSupportInstallerApi(); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASControlStatusChangedListener.java b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASControlStatusChangedListener.java new file mode 100644 index 0000000000..bf2fec6e36 --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASControlStatusChangedListener.java @@ -0,0 +1,29 @@ +package com.mogo.service.adas; + +import com.mogo.map.uicontroller.EnumMapUI; + +public +/** + * @author congtaowang + * @since 2020/8/31 + * + * adas 控制状态变化监听 + */ +interface IMogoADASControlStatusChangedListener { + + /** + * 地图模式切换 + * + * @param mapUI + */ + default void onMapUiModeChanged( EnumMapUI mapUI ) { + } + + /** + * 隐身模式设置 + * + * @param visible true 可见、false 不可见 + */ + default void onCarStatusChanged( boolean visible ) { + } +} diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java index c6b6553840..0af6686b91 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java @@ -1,6 +1,7 @@ package com.mogo.service.adas; import com.alibaba.android.arouter.facade.template.IProvider; +import com.mogo.map.uicontroller.EnumMapUI; /** * @author congtaowang @@ -46,4 +47,25 @@ public interface IMogoADASController extends IProvider { void setUseAlgorithm( boolean open ); void release(); + + /** + * 反向设置 adas 导航车头/正北朝向、黑夜白天模式 + *

+ * 导航车头仅支持 NorthUP_2D 和 车头朝上2D + */ + void changeAdasControlMode( EnumMapUI ui ); + + /** + * 反向设置 adas 对可见性的控制 + * + * @param visible + */ + void changeAdasControlVisibleMode( boolean visible ); + + /** + * 获取当前皮肤状态 + * + * @return + */ + EnumMapUI getCurrentSkinMode(); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoRegisterCenter.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoRegisterCenter.java index d2c0bc5a81..2f9700cdc5 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoRegisterCenter.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoRegisterCenter.java @@ -7,6 +7,7 @@ import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.navi.IMogoAimlessModeListener; import com.mogo.map.navi.IMogoCarLocationChangedListener; import com.mogo.map.navi.IMogoNaviListener; +import com.mogo.service.adas.IMogoADASControlStatusChangedListener; import com.mogo.service.obu.IMogoObuDataChangedListener; import java.util.Iterator; @@ -149,4 +150,25 @@ public interface IMogoRegisterCenter extends IProvider { * @param tag 传入与注册时相同的tag */ void unregisterObuDataListener(String tag); + + /** + * adas 控制状态变更监听 + * @param tag + * @param listener + */ + void registerADASControlStatusChangedListener( String tag, IMogoADASControlStatusChangedListener listener ); + + + /** + * 注销 adas 控制状态变更监听 + * @param tag + */ + void unregisterADASControlStatusChangedListener( String tag ); + + /** + * 获取adas控制状态监听 + * @return + */ + Iterator getAdasControlStatusChangedListeners(); + } diff --git a/services/mogo-service/build.gradle b/services/mogo-service/build.gradle index 55f3c6cb1a..6da98cf88e 100644 --- a/services/mogo-service/build.gradle +++ b/services/mogo-service/build.gradle @@ -40,7 +40,8 @@ dependencies { implementation rootProject.ext.dependencies.arouter annotationProcessor rootProject.ext.dependencies.aroutercompiler - api rootProject.ext.dependencies.adasapi + implementation rootProject.ext.dependencies.adasapi + implementation rootProject.ext.dependencies.adasconfigapi if (Boolean.valueOf(RELEASE)) { api rootProject.ext.dependencies.mogomap implementation rootProject.ext.dependencies.mogomapapi diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java index 223df257fa..add6d7a185 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java @@ -43,6 +43,9 @@ import com.mogo.service.tanlu.IMogoTanluProvider; import com.mogo.service.tanlu.IMogoTanluUiProvider; import com.mogo.service.windowview.IMogoTopViewManager; import com.mogo.service.windowview.IMogoWindowManager; +import com.mogo.skin.support.IMogoSkinSupportInstaller; +import com.mogo.skin.support.MogoSkinManager; +import com.mogo.skin.support.SkinSupportInstallerConstants; import com.mogo.utils.logger.Logger; /** @@ -224,7 +227,12 @@ public class MogoServiceApis implements IMogoServiceApis { return getApiInstance(IMogoTanluUiProvider.class, MogoServicePaths.PATH_TANLU_UI_API); } - private static < T extends IProvider > T getApiInstance(Class< T > clazz, String path ) { + @Override + public IMogoSkinSupportInstaller getSkinSupportInstallerApi() { + return getApiInstance( IMogoSkinSupportInstaller.class, SkinSupportInstallerConstants.PATH); + } + + private static < T extends IProvider > T getApiInstance( Class< T > clazz, String path ) { T inst = SingletonsHolder.get( clazz ); if ( inst == null ) { synchronized ( sLock ) { 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 6709acfc16..f82160a8ae 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 @@ -11,6 +11,7 @@ import android.util.Log; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.commons.AbsMogoApplication; import com.mogo.map.MogoOverlayManager; +import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.module.common.utils.CarSeries; import com.mogo.service.MogoServicePaths; import com.mogo.service.adas.IMogoADASController; @@ -18,8 +19,13 @@ 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.skin.support.SkinMode; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.Logger; +import com.zhidao.adasconfig.api.AdasConfigApiController; +import com.zhidao.adasconfig.common.config.EnumCarChatIncognitoMode; +import com.zhidao.adasconfig.common.config.EnumCarHeading; +import com.zhidao.adasconfig.common.config.EnumSkinStyle; import com.zhidao.autopilot.support.api.AutopilotServiceManage; import com.zhidao.autopilot.support.api.IAutopilotServiceStatusListener; @@ -197,6 +203,47 @@ public class MogoADASController implements IMogoADASController { AutopilotServiceManage.getInstance().setUseAlgorithm( open ); } + @Override + public void changeAdasControlMode( EnumMapUI ui ) { + + Logger.d( TAG, "new Mode: " + ui.name() ); + switch ( ui ) { + case CarUp_2D: + case CarUp_3D: + AdasConfigApiController.getInstance().setUserCarHeading( EnumCarHeading.CAR_HEADING_UP ); + break; + case NorthUP_2D: + AdasConfigApiController.getInstance().setUserCarHeading( EnumCarHeading.NORTH_UP ); + break; + case Type_Light: + AdasConfigApiController.getInstance().setUserSkinModel( EnumSkinStyle.WHITE ); + break; + case Type_Night: + AdasConfigApiController.getInstance().setUserSkinModel( EnumSkinStyle.BLACK ); + break; + case Type_AUTO_LIGHT_Night: + AdasConfigApiController.getInstance().setUserSkinModel( EnumSkinStyle.AUTO ); + break; + } + } + + @Override + public void changeAdasControlVisibleMode( boolean visible ) { + Logger.d( TAG, "new visibility: " + visible ); + AdasConfigApiController.getInstance().setUserCarChatIncognitoModel( visible ? EnumCarChatIncognitoMode.OPEN : EnumCarChatIncognitoMode.CLOSE ); + } + + @Override + public EnumMapUI getCurrentSkinMode() { + EnumSkinStyle skinStyle = AdasConfigApiController.getInstance().getUserSkinModel(); + if ( skinStyle == EnumSkinStyle.BLACK ) { + return EnumMapUI.Type_Night; + } else if ( skinStyle == EnumSkinStyle.WHITE ) { + return EnumMapUI.Type_Light; + } + return EnumMapUI.Type_AUTO_LIGHT_Night; + } + @Override public void release() { mIsReleased = true; diff --git a/skin/mogo-skin-light/README.md b/skin/mogo-skin-light/README.md index 4ebf9b3367..bcd5a769fb 100644 --- a/skin/mogo-skin-light/README.md +++ b/skin/mogo-skin-light/README.md @@ -6,4 +6,8 @@ 2. 按照现有模块,定义 src/main/module-模块名称-res 资源包,以区分不同模块 -3. 资源名称按照 module_模块名称_功能名称_light 结构定义 \ No newline at end of file +3. 资源名称按照 module_模块名称_功能名称_light 结构定义 + +## 注意事项 + +1. 没必要添加原模块所有的资源,哪个元素需要白天模式,就定义对应的白天模式资源就行了 \ No newline at end of file diff --git a/skin/mogo-skin-support-impl/build.gradle b/skin/mogo-skin-support-impl/build.gradle index b7a1df52d0..db1712d513 100644 --- a/skin/mogo-skin-support-impl/build.gradle +++ b/skin/mogo-skin-support-impl/build.gradle @@ -46,8 +46,6 @@ dependencies { implementation 'skin.support:skin-support-cardview:4.0.5' // skin-support-cardview CardView 控件支持[可选] implementation 'skin.support:skin-support-constraint-layout:4.0.5' // skin-support-constraint-layout ConstraintLayout 控件支持[可选] - implementation "com.zhidao.adasconfig:adasconfig:1.0.1" - if( Boolean.valueOf(RELEASE) ){ implementation rootProject.ext.dependencies.skinsupport compileOnly rootProject.ext.dependencies.modulecommon