This commit is contained in:
wangcongtao
2020-01-14 17:44:39 +08:00
parent 147bc5dc7d
commit 6acdfa3772
12 changed files with 93 additions and 18 deletions

6
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
</project>

View File

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

View File

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

View File

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

View File

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

View File

@@ -77,7 +77,15 @@ public interface MogoModulesHandler extends IMogoMapListener,
/**
* 卡片接收到Marker传入数据
*
* @param marker marker
*/
void onMarkerReceive(IMogoMarker marker);
void onMarkerReceive( IMogoMarker marker );
/**
* 当前卡片名称
*
* @return
*/
String getCurrentModuleName();
}

View File

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

View File

@@ -0,0 +1,12 @@
package com.mogo.service.cardmanager;
/**
* @author congtaowang
* @since 2020-01-14
* <p>
* 卡片切换监听
*/
public interface IMogoCardChangedListener {
void onSwitched( int position, String moduleName );
}

View File

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

View File

@@ -1,7 +1,5 @@
package com.mogo.service.voice;
import android.content.Intent;
import com.mogo.service.intent.IMogoIntentListener;
/**

View File

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

View File

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