拆分换肤逻辑

This commit is contained in:
wangcongtao
2020-08-31 14:55:02 +08:00
parent 722919edec
commit 97ce18650b
22 changed files with 363 additions and 88 deletions

View File

@@ -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

View File

@@ -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')

View File

@@ -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

View File

@@ -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",

View File

@@ -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 ) );
}

View File

@@ -186,17 +186,19 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
mMove2CurrentLocation.setOnClickListener(view -> {
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 );
}
});

View File

@@ -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

View File

@@ -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" );
}
}
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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<String, IMogoObuDataChangedListener> 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<IMogoObuDataChangedListener> 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<IMogoADASControlStatusChangedListener > getAdasControlStatusChangedListeners(){
return mADAS.values().iterator();
}
}

View File

@@ -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() {

View File

@@ -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")
}
}

View File

@@ -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();
}

View File

@@ -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 ) {
}
}

View File

@@ -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 导航车头/正北朝向、黑夜白天模式
* <p>
* 导航车头仅支持 NorthUP_2D 和 车头朝上2D
*/
void changeAdasControlMode( EnumMapUI ui );
/**
* 反向设置 adas 对可见性的控制
*
* @param visible
*/
void changeAdasControlVisibleMode( boolean visible );
/**
* 获取当前皮肤状态
*
* @return
*/
EnumMapUI getCurrentSkinMode();
}

View File

@@ -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<IMogoADASControlStatusChangedListener> getAdasControlStatusChangedListeners();
}

View File

@@ -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

View File

@@ -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 ) {

View File

@@ -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;

View File

@@ -6,4 +6,8 @@
2. 按照现有模块,定义 src/main/module-模块名称-res 资源包,以区分不同模块
3. 资源名称按照 module_模块名称_功能名称_light 结构定义
3. 资源名称按照 module_模块名称_功能名称_light 结构定义
## 注意事项
1. 没必要添加原模块所有的资源,哪个元素需要白天模式,就定义对应的白天模式资源就行了

View File

@@ -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