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