diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000000..2dc54c489f --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index ae283a0d23..0fc019f84b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,7 +24,7 @@ SNAPSHOT_REPOSITORY_URL=http://nexus.zhidaoauto.com/repository/maven-snapshots/ USERNAME=xintai PASSWORD=xintai2018 # 编译模式: false - 依赖本地版本, true - 依赖 maven 版本 -RELEASE=true +RELEASE=false # 模块版本 DEMO_MODULE_MAP_VERSION=1.0.0-SNAPSHOT DEMO_MODULE_MAP2_VERSION=1.0.0-SNAPSHOT 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 9c760baf55..d3e97d01d1 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 @@ -30,6 +30,7 @@ import com.mogo.module.main.windowview.WindowViewHandler; import com.mogo.module.map.VoiceConstants; import com.mogo.module.service.ServiceConst; import com.mogo.service.MogoServicePaths; +import com.mogo.service.cardmanager.IMogoCardManager; import com.mogo.service.connection.IMogoSocketManager; import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoModuleProvider; @@ -52,6 +53,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme private IMogoMapService mMogoMapService; private IMogoMapUIController mMogoMapUIController; private MogoModulesHandler mMogoModuleHandler; + private IMogoCardManager mMogoCardManager; private OrientedViewPager mCardsContainer; private CardModulesAdapter mCardModulesAdapter; @@ -171,6 +173,8 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme mLocationClient = mMogoMapService.getSingletonLocationClient( getApplicationContext() ); mLocationClient.addLocationListener( this ); mLocationClient.start(); + + mMogoCardManager = ( IMogoCardManager ) ARouter.getInstance().build( MogoServicePaths.PATH_CARD_MANAGER ).navigation( this ); } private void loadModules() { @@ -212,6 +216,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme int position = mCardModulesAdapter.getProviderPosition( cardType ); if ( position != -1 ) { mCardsContainer.setCurrentItem( position, Math.abs( mCurrentPosition - position ) == 1 ); + mMogoCardManager.invoke( position, mMogoModuleHandler.getCurrentModuleName() ); } else { Logger.e( TAG, "Can't find type of %s's position", cardType ); } 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 905d597035..fe0d3db3d4 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 @@ -24,14 +24,11 @@ public class MainPresenter extends Presenter< MainView > { @Override public void onCreate( @NonNull LifecycleOwner owner ) { super.onCreate( owner ); - CardSwitchLiveData.getInstance().observeForever( new Observer< String >() { - @Override - public void onChanged( String s ) { - if ( TextUtils.isEmpty( s ) ) { - return; - } - mView.switch2( s ); + CardSwitchLiveData.getInstance().observeForever( to -> { + if ( TextUtils.isEmpty( to ) ) { + return; } + mView.switch2( to ); } ); } } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MogoCardManager.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MogoCardManager.java index 5fcd499113..b34f781b5a 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MogoCardManager.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MogoCardManager.java @@ -5,8 +5,13 @@ import android.content.Context; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.module.main.livedata.CardSwitchLiveData; import com.mogo.service.MogoServicePaths; +import com.mogo.service.cardmanager.IMogoCardChangedListener; import com.mogo.service.cardmanager.IMogoCardManager; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + /** * @author congtaowang * @since 2020-01-06 @@ -16,11 +21,36 @@ import com.mogo.service.cardmanager.IMogoCardManager; @Route( path = MogoServicePaths.PATH_CARD_MANAGER ) public class MogoCardManager implements IMogoCardManager { + private static final Map< String, IMogoCardChangedListener > sListeners = new HashMap<>(); + @Override public void switch2( String cardType ) { CardSwitchLiveData.getInstance().postValue( cardType ); } + @Override + public void registerCardChangedListener( String tag, IMogoCardChangedListener listener ) { + sListeners.put( tag, listener ); + } + + @Override + public void unregisterCardChangedListener( String tag ) { + sListeners.remove( tag ); + } + + @Override + public void invoke( int position, String moduleName ) { + if ( sListeners != null && !sListeners.isEmpty() ) { + Iterator< IMogoCardChangedListener > iterator = sListeners.values().iterator(); + while ( iterator.hasNext() ) { + IMogoCardChangedListener listener = iterator.next(); + if ( listener != null ) { + listener.onSwitched( position, moduleName ); + } + } + } + } + @Override public void init( Context context ) { diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java index 7b58e433e1..1ca561946f 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java @@ -77,7 +77,15 @@ public interface MogoModulesHandler extends IMogoMapListener, /** * 卡片接收到Marker传入数据 + * * @param marker marker */ - void onMarkerReceive(IMogoMarker marker); + void onMarkerReceive( IMogoMarker marker ); + + /** + * 当前卡片名称 + * + * @return + */ + String getCurrentModuleName(); } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java index a6a4ed7bf1..02d40b7a4c 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java @@ -100,6 +100,9 @@ public class MogoModulesManager implements MogoModulesHandler, for ( MogoModule module : modules ) { IMogoModuleProvider provider = mModuleProviders.get( module ); if ( provider.getType() == ModuleType.TYPE_CARD_FRAGMENT ) { + if ( mEnableModuleName == null ) { + mEnableModuleName = provider.getModuleName(); + } providers.add( provider ); } } @@ -374,4 +377,9 @@ public class MogoModulesManager implements MogoModulesHandler, listener.onMarkerClicked( marker ); } } + + @Override + public String getCurrentModuleName() { + return mEnableModuleName; + } } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/cardmanager/IMogoCardChangedListener.java b/services/mogo-service-api/src/main/java/com/mogo/service/cardmanager/IMogoCardChangedListener.java new file mode 100644 index 0000000000..acc829f05d --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/cardmanager/IMogoCardChangedListener.java @@ -0,0 +1,12 @@ +package com.mogo.service.cardmanager; + +/** + * @author congtaowang + * @since 2020-01-14 + *

+ * 卡片切换监听 + */ +public interface IMogoCardChangedListener { + + void onSwitched( int position, String moduleName ); +} diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/cardmanager/IMogoCardManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/cardmanager/IMogoCardManager.java index 2d68cfbe26..30c0ed5f17 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/cardmanager/IMogoCardManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/cardmanager/IMogoCardManager.java @@ -16,4 +16,22 @@ public interface IMogoCardManager extends IProvider { * @param cardType */ void switch2( String cardType ); + + /** + * 注册卡片切换监听 + */ + void registerCardChangedListener( String tag, IMogoCardChangedListener listener ); + + /** + * 注销卡片监听 + */ + void unregisterCardChangedListener( String tag ); + + /** + * 回调 + * + * @param position 卡片位置 + * @param moduleName 卡片名称 + */ + void invoke( int position, String moduleName ); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/voice/IMogoVoiceListener.java b/services/mogo-service-api/src/main/java/com/mogo/service/voice/IMogoVoiceListener.java index 1bb1ae30c8..af8ebc6e3e 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/voice/IMogoVoiceListener.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/voice/IMogoVoiceListener.java @@ -1,7 +1,5 @@ package com.mogo.service.voice; -import android.content.Intent; - import com.mogo.service.intent.IMogoIntentListener; /** diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/voice/IMogoVoiceManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/voice/IMogoVoiceManager.java index 6fc50fc84e..4a7538d320 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/voice/IMogoVoiceManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/voice/IMogoVoiceManager.java @@ -1,8 +1,5 @@ package com.mogo.service.voice; -import android.content.Intent; - -import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.intent.IMogoIntentManager; /** diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/intent/MogoVoiceManager.java b/services/mogo-service/src/main/java/com/mogo/service/impl/intent/MogoVoiceManager.java index 1115692e91..3aa8e3643c 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/intent/MogoVoiceManager.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/intent/MogoVoiceManager.java @@ -20,21 +20,17 @@ public class MogoVoiceManager implements IMogoVoiceManager { @Override public void unregisterIntentListener( String command ) { - IntentManager.getInstance().unregisterIntentListener( command ); } @Override public void invoke( String command, Intent intent ) { - IntentManager.getInstance().invoke( command, intent ); } @Override public void registerIntentListener( String intent, IMogoIntentListener listener ) { - IntentManager.getInstance().registerIntentListener( intent, listener ); } @Override public void init( Context context ) { - IntentManager.getInstance().init( context ); } }