This commit is contained in:
wangcongtao
2020-03-09 11:48:39 +08:00
parent 640b519fd5
commit eaa12ba5d2
39 changed files with 1239 additions and 423 deletions

View File

@@ -12,7 +12,6 @@ import androidx.annotation.Nullable;
import androidx.viewpager.widget.ViewPager;
import com.alibaba.android.arouter.launcher.ARouter;
import com.google.gson.JsonObject;
import com.mogo.commons.mvp.MvpActivity;
import com.mogo.commons.voice.AIAssist;
import com.mogo.map.location.IMogoLocationClient;
@@ -33,6 +32,7 @@ import com.mogo.module.main.cards.VerticalStackTransformer;
import com.mogo.module.main.constants.VoiceConstants;
import com.mogo.module.main.windowview.WindowViewHandler;
import com.mogo.module.service.ServiceConst;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
@@ -42,22 +42,24 @@ import com.mogo.service.map.IMogoMapService;
import com.mogo.service.module.IMogoModuleProvider;
import com.mogo.utils.logger.Logger;
import java.util.List;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.List;
/**
* @author congtaowang
* @since 2019-12-23
* <p>
* 描述:加载各个模块
*/
public class MainActivity extends MvpActivity<MainView, MainPresenter> implements MainView,
IMogoLocationListener,
IMogoMarkerClickListener, IMogoIntentListener {
public class MainActivity extends MvpActivity< MainView, MainPresenter > implements MainView,
IMogoLocationListener,
IMogoMarkerClickListener, IMogoIntentListener {
private static final String TAG = "MainActivity";
private IMogoServiceApis mServiceApis;
private IMogoMapService mMogoMapService;
private IMogoMapUIController mMogoMapUIController;
private MogoModulesHandler mMogoModuleHandler;
@@ -95,110 +97,110 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
@Override
protected void initViews() {
mCardsContainer = findViewById(R.id.module_main_id_cards_container);
mCardsContainer.setOrientation(OrientedViewPager.Orientation.VERTICAL);
mTransformer = new VerticalStackTransformer(this);
mCardsContainer = findViewById( R.id.module_main_id_cards_container );
mCardsContainer.setOrientation( OrientedViewPager.Orientation.VERTICAL );
mTransformer = new VerticalStackTransformer( this );
mCardsContainer.setOnPageChangeListener(
mOnPageChangeListener = new OnPageChangeListenerAdapter() {
private boolean mIsLast = true;
private boolean mCardFlipStatus = false;
mOnPageChangeListener = new OnPageChangeListenerAdapter() {
private boolean mIsLast = true;
private boolean mCardFlipStatus = false;
@Override
public void onPageSelected(int position) {
final long start = System.currentTimeMillis();
try {
IMogoModuleProvider provider =
mCardModulesAdapter.getProvider(mCurrentPosition);
mPresenter.postTrackLastCardShowEvent(provider);
mCurrentPosition = position;
provider = mCardModulesAdapter.getProvider(mCurrentPosition);
mMogoModuleHandler.setModuleEnable(provider.getModuleName());
mMogoCardManager.invoke(position,
mMogoModuleHandler.getCurrentModuleName());
} catch (Exception e) {
e.printStackTrace();
}
Logger.i(TAG,
"onPageSelected cost " + (System.currentTimeMillis() - start) + "ms");
}
@Override
public void onPageScrollStateChanged(int state) {
final long start = System.currentTimeMillis();
super.onPageScrollStateChanged(state);
if (state == ViewPager.SCROLL_STATE_DRAGGING) {
if (!mCardFlipStatus) {
mCardFlipStatus = true;
final IMogoModuleProvider provider =
mCardModulesAdapter.getProvider(mCurrentPosition);
mPresenter.postTrackCardFlipEvent(provider);
@Override
public void onPageSelected( int position ) {
final long start = System.currentTimeMillis();
try {
IMogoModuleProvider provider =
mCardModulesAdapter.getProvider( mCurrentPosition );
mPresenter.postTrackLastCardShowEvent( provider );
mCurrentPosition = position;
provider = mCardModulesAdapter.getProvider( mCurrentPosition );
mMogoModuleHandler.setModuleEnable( provider.getModuleName() );
mMogoCardManager.invoke( position,
mMogoModuleHandler.getCurrentModuleName() );
} catch ( Exception e ) {
e.printStackTrace();
}
} else if (state == ViewPager.SCROLL_STATE_IDLE) {
mCardFlipStatus = false;
mTransformer.resetOffsetScroll();
Logger.i( TAG,
"onPageSelected cost " + ( System.currentTimeMillis() - start ) + "ms" );
}
int cardSize = mCardModulesAdapter.getCount();
if (state == ViewPager.SCROLL_STATE_SETTLING) {
mIsLast = false;
} else if (state == ViewPager.SCROLL_STATE_IDLE && mIsLast) {
//此处为你需要的情况,再加入当前页码判断可知道是第一页还是最后一页
if (cardSize != 1 && mCurrentPosition == (cardSize - 1)) {
mCardsContainer.setCurrentItem(0, false);
} else if (cardSize != 1 && mCurrentPosition == 0) {
mCardsContainer.setCurrentItem(cardSize - 1, false);
@Override
public void onPageScrollStateChanged( int state ) {
final long start = System.currentTimeMillis();
super.onPageScrollStateChanged( state );
if ( state == ViewPager.SCROLL_STATE_DRAGGING ) {
if ( !mCardFlipStatus ) {
mCardFlipStatus = true;
final IMogoModuleProvider provider =
mCardModulesAdapter.getProvider( mCurrentPosition );
mPresenter.postTrackCardFlipEvent( provider );
}
} else if ( state == ViewPager.SCROLL_STATE_IDLE ) {
mCardFlipStatus = false;
mTransformer.resetOffsetScroll();
}
} else {
mIsLast = true;
int cardSize = mCardModulesAdapter.getCount();
if ( state == ViewPager.SCROLL_STATE_SETTLING ) {
mIsLast = false;
} else if ( state == ViewPager.SCROLL_STATE_IDLE && mIsLast ) {
//此处为你需要的情况,再加入当前页码判断可知道是第一页还是最后一页
if ( cardSize != 1 && mCurrentPosition == ( cardSize - 1 ) ) {
mCardsContainer.setCurrentItem( 0, false );
} else if ( cardSize != 1 && mCurrentPosition == 0 ) {
mCardsContainer.setCurrentItem( cardSize - 1, false );
}
} else {
mIsLast = true;
}
Logger.i( TAG, "onPageScrollStateChanged cost "
+ ( System.currentTimeMillis() - start )
+ "ms" );
}
Logger.i(TAG, "onPageScrollStateChanged cost "
+ (System.currentTimeMillis() - start)
+ "ms");
}
@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
Logger.d(TAG, "pageScrolled : offset --- " + positionOffset);
mTransformer.offsetScrollChanged(positionOffset);
}
});
@Override
public void onPageScrolled( int position, float positionOffset,
int positionOffsetPixels ) {
super.onPageScrolled( position, positionOffset, positionOffsetPixels );
Logger.d( TAG, "pageScrolled : offset --- " + positionOffset );
mTransformer.offsetScrollChanged( positionOffset );
}
} );
mHeader = findViewById(R.id.module_main_id_header_fragment_container);
mCards = findViewById(R.id.module_main_id_cards_container);
mApps = findViewById(R.id.module_main_id_apps_fragment_container);
mEntrance = findViewById(R.id.module_main_id_entrance_fragment_container);
mFloatingLayout = findViewById(R.id.module_main_id_floating_view);
mLeftShadowFrame = findViewById(R.id.module_main_id_map_left_shadow_frame);
mTopShadowFrame = findViewById(R.id.module_main_id_map_top_shadow_frame);
mCoverUpLayout = findViewById(R.id.module_main_id_cover_up);
mCardCoverUpBottomLayout = findViewById(R.id.module_main_id_card_cover_up_bottom);
mHeader = findViewById( R.id.module_main_id_header_fragment_container );
mCards = findViewById( R.id.module_main_id_cards_container );
mApps = findViewById( R.id.module_main_id_apps_fragment_container );
mEntrance = findViewById( R.id.module_main_id_entrance_fragment_container );
mFloatingLayout = findViewById( R.id.module_main_id_floating_view );
mLeftShadowFrame = findViewById( R.id.module_main_id_map_left_shadow_frame );
mTopShadowFrame = findViewById( R.id.module_main_id_map_top_shadow_frame );
mCoverUpLayout = findViewById( R.id.module_main_id_cover_up );
mCardCoverUpBottomLayout = findViewById( R.id.module_main_id_card_cover_up_bottom );
WindowViewHandler.init(mFloatingLayout);
WindowViewHandler.init( mFloatingLayout );
}
// 隐藏布局
private void hideLayout() {
mHeader.setVisibility(View.GONE);
mCards.setVisibility(View.GONE);
mApps.setVisibility(View.GONE);
mEntrance.setVisibility(View.GONE);
mFloatingLayout.setVisibility(View.GONE);
mLeftShadowFrame.setVisibility(View.GONE);
mCardCoverUpBottomLayout.setVisibility(View.GONE);
mHeader.setVisibility( View.GONE );
mCards.setVisibility( View.GONE );
mApps.setVisibility( View.GONE );
mEntrance.setVisibility( View.GONE );
mFloatingLayout.setVisibility( View.GONE );
mLeftShadowFrame.setVisibility( View.GONE );
mCardCoverUpBottomLayout.setVisibility( View.GONE );
}
// 显示布局
private void showLayout() {
mHeader.setVisibility(View.VISIBLE);
mCards.setVisibility(View.VISIBLE);
mApps.setVisibility(View.VISIBLE);
mEntrance.setVisibility(View.VISIBLE);
mFloatingLayout.setVisibility(View.VISIBLE);
mLeftShadowFrame.setVisibility(View.VISIBLE);
mCardCoverUpBottomLayout.setVisibility(View.VISIBLE);
mHeader.setVisibility( View.VISIBLE );
mCards.setVisibility( View.VISIBLE );
mApps.setVisibility( View.VISIBLE );
mEntrance.setVisibility( View.VISIBLE );
mFloatingLayout.setVisibility( View.VISIBLE );
mLeftShadowFrame.setVisibility( View.VISIBLE );
mCardCoverUpBottomLayout.setVisibility( View.VISIBLE );
}
@Override
@@ -211,158 +213,157 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
public void loadModules() {
final long start = System.currentTimeMillis();
getWindow().setBackgroundDrawable( null );
mServiceApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation();
MogoModulePaths.addModule( new MogoModule( ServiceConst.PATH_REFRESH_STRATEGY, ServiceConst.PATH_REFRESH_STRATEGY ) );
mMogoModuleHandler = new MogoModulesManager( this );
mMogoMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation();
mMogoMapService = mServiceApis.getMapServiceApi();
if ( mMogoMapService != null ) {
mMogoMapService.getHostListenerRegister().registerHostMapListener( mMogoModuleHandler );
mMogoMapService.getHostListenerRegister().registerHostNaviListener( mMogoModuleHandler );
mMogoMapService.getHostListenerRegister().registerHostAimlessModeListener( mMogoModuleHandler );
mMogoMapService.getHostListenerRegister().registerMarkerClickListener( this );
}
mMogoModuleHandler.setMapLoadedCallback(() -> {
Logger.d(TAG, "map loaded." + Thread.currentThread().getName());
mMogoModuleHandler.setMapLoadedCallback( () -> {
Logger.d( TAG, "map loaded." + Thread.currentThread().getName() );
// 加载地图,触发地图加载完毕回调,在初始化其他卡片模块,保证卡片模块可以正确获取地图相关服务。
loadContainerModules();
mMogoModuleHandler.loadModules();
mPresenter.delayOperations();
// 显示左边遮罩
mLeftShadowFrame.setVisibility(View.VISIBLE);
mTopShadowFrame.setVisibility(View.VISIBLE);
mLeftShadowFrame.setVisibility( View.VISIBLE );
mTopShadowFrame.setVisibility( View.VISIBLE );
// 右移地图中心点
mMogoMapUIController = mMogoMapService.getMapUIController();
mMogoMapUIController.setPointToCenter(0.66145, 0.590688);
mMogoMapUIController.setPointToCenter( 0.66145, 0.590688 );
// 开启定位
startLocation();
});
mMogoModuleHandler.loadMapModule(R.id.module_main_id_map_fragment_container);
} );
mMogoModuleHandler.loadMapModule( R.id.module_main_id_map_fragment_container );
mMogoCardManager = (IMogoCardManager) ARouter.getInstance()
.build(MogoServicePaths.PATH_CARD_MANAGER)
.navigation(this);
mMogoCardManager = mServiceApis.getCardManagerApi();
mMogoFragmentManager = (IMogoFragmentManager) ARouter.getInstance()
.build(MogoServicePaths.PATH_FRAGMENT_MANAGER)
.navigation(this);
mMogoFragmentManager.init(this, R.id.module_main_id_search_fragment);
mMogoFragmentManager.registerMainFragmentStackTransactionListener((size) -> {
if (size == 0) {
mMogoFragmentManager = mServiceApis.getFragmentManagerApi();
mMogoFragmentManager.init( this, R.id.module_main_id_search_fragment );
mMogoFragmentManager.registerMainFragmentStackTransactionListener( ( size ) -> {
if ( size == 0 ) {
showLayout();
} else if (size == 1) {
} else if ( size == 1 ) {
hideLayout();
}
});
} );
mMogoIntentManager = (IMogoIntentManager) ARouter.getInstance()
.build(MogoServicePaths.PATH_INTENT_MANAGER)
.navigation(getContext());
mMogoIntentManager = mServiceApis.getIntentManagerApi();
registerVoiceCmd();
Log.i("timer", "cost " + (System.currentTimeMillis() - start) + "ms");
Log.i( "timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" );
}
private void registerVoiceCmd() {
for (String cmd : VoiceConstants.sCmds) {
mMogoIntentManager.registerIntentListener(cmd, this);
for ( String cmd : VoiceConstants.sCmds ) {
mMogoIntentManager.registerIntentListener( cmd, this );
}
}
private void startLocation() {
mLocationClient = mMogoMapService.getSingletonLocationClient(getApplicationContext());
mLocationClient.addLocationListener(this);
mLocationClient.start(2_000L);
mLocationClient = mMogoMapService.getSingletonLocationClient( getApplicationContext() );
mLocationClient.addLocationListener( this );
mLocationClient.start( 2_000L );
}
private void loadContainerModules() {
mMogoModuleHandler.loadAppsListModule(R.id.module_main_id_apps_fragment_container);
mMogoModuleHandler.loadExtensionsModule(R.id.module_main_id_header_fragment_container);
mMogoModuleHandler.loadEntrancesModule(R.id.module_main_id_entrance_fragment_container);
mMogoModuleHandler.loadAppsListModule( R.id.module_main_id_apps_fragment_container );
mMogoModuleHandler.loadExtensionsModule( R.id.module_main_id_header_fragment_container );
mMogoModuleHandler.loadEntrancesModule( R.id.module_main_id_entrance_fragment_container );
}
@Override
public void postPickFirstCardEvent() {
if (mOnPageChangeListener != null) {
if ( mOnPageChangeListener != null ) {
// 默认触发第一个卡片
mOnPageChangeListener.onPageSelected(0);
mOnPageChangeListener.onPageSelected( 0 );
}
}
@Override
public void hideCoverUpLayout() {
mCoverUpLayout.setVisibility(View.GONE);
mCoverUpLayout.setVisibility( View.GONE );
}
@Override
public void loadCardModules() {
List<IMogoModuleProvider> providers = mMogoModuleHandler.loadCardsModule();
mCardModulesAdapter = new CardModulesAdapter(this, providers);
mCardsContainer.setOffscreenPageLimit(providers.size());
mCardsContainer.setPageTransformer(true, mTransformer);
mCardsContainer.setAdapter(mCardModulesAdapter);
List< IMogoModuleProvider > providers = mMogoModuleHandler.loadCardsModule();
mCardModulesAdapter = new CardModulesAdapter( this, providers );
mCardsContainer.setOffscreenPageLimit( providers.size() );
mCardsContainer.setPageTransformer( true, mTransformer );
mCardsContainer.setAdapter( mCardModulesAdapter );
mCardCoverUpBottomLayout.setVisibility(View.VISIBLE);
mCardCoverUpBottomLayout.setVisibility( View.VISIBLE );
}
@NonNull
@Override
protected MainPresenter createPresenter() {
return new MainPresenter(this);
return new MainPresenter( this );
}
@Override
public void onLocationChanged(MogoLocation location) {
if (mMogoModuleHandler != null) {
mMogoModuleHandler.onLocationChanged(location);
public void onLocationChanged( MogoLocation location ) {
if ( mMogoModuleHandler != null ) {
mMogoModuleHandler.onLocationChanged( location );
}
}
@Override
public boolean onMarkerClicked(IMogoMarker marker) {
switch2Card(marker.getOwner());
if (mMogoModuleHandler != null) {
mMogoModuleHandler.onMarkerClicked(marker);
public boolean onMarkerClicked( IMogoMarker marker ) {
switch2Card( marker.getOwner() );
if ( mMogoModuleHandler != null ) {
mMogoModuleHandler.onMarkerClicked( marker );
}
return false;
}
@Override
public void switch2Card(String cardType) {
if (mCardModulesAdapter != null) {
public void switch2Card( String cardType ) {
if ( mCardModulesAdapter != null ) {
int position = mCardModulesAdapter.getProviderPosition(cardType);
if (position != -1) {
int lastFactPosition = mCardModulesAdapter.getFactPosition(mCurrentPosition);
mCardsContainer.setCurrentItem(mCurrentPosition + position - lastFactPosition,
Math.abs(lastFactPosition - position) == 1);
int position = mCardModulesAdapter.getProviderPosition( cardType );
if ( position != -1 ) {
int lastFactPosition = mCardModulesAdapter.getFactPosition( mCurrentPosition );
mCardsContainer.setCurrentItem( mCurrentPosition + position - lastFactPosition,
Math.abs( lastFactPosition - position ) == 1 );
} else {
Logger.e(TAG, "Can't find type of %s's position", cardType);
Logger.e( TAG, "Can't find type of %s's position", cardType );
}
}
}
@Override
protected void onResume() {
MapBroadCastHelper.getInstance(this).mapFrount();
MapBroadCastHelper.getInstance( this ).mapFrount();
super.onResume();
}
@Override
protected void onPause() {
MapBroadCastHelper.getInstance(this).mapBackground();
MapBroadCastHelper.getInstance( this ).mapBackground();
super.onPause();
}
@Override
public void onBackPressed() {
if (mMogoFragmentManager.getStackSize() == 0) {
if ( mMogoFragmentManager.getStackSize() == 0 ) {
return;
}
if (mMogoFragmentManager != null) {
if ( mMogoFragmentManager != null ) {
mMogoFragmentManager.pop();
}
}
@@ -370,12 +371,12 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
@Override
protected void onDestroy() {
super.onDestroy();
if (mLocationClient != null) {
mLocationClient.removeLocationListener(this);
if ( mLocationClient != null ) {
mLocationClient.removeLocationListener( this );
mLocationClient.destroy();
}
mLocationClient = null;
if (mMogoModuleHandler != null) {
if ( mMogoModuleHandler != null ) {
mMogoModuleHandler.destroy();
}
mMogoModuleHandler = null;
@@ -383,38 +384,39 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
mMogoMapUIController = null;
mMogoCardManager = null;
mMogoFragmentManager = null;
AIAssist.getInstance(this).release();
AIAssist.getInstance( this ).release();
}
@Override public void onIntentReceived(String intentStr, Intent intent) {
if (TextUtils.isEmpty(intentStr)) {
@Override
public void onIntentReceived( String intentStr, Intent intent ) {
if ( TextUtils.isEmpty( intentStr ) ) {
return;
}
int currentItem = mCardsContainer.getCurrentItem();
int cardSize = mCardModulesAdapter.getCount();
switch (intentStr) {
switch ( intentStr ) {
case VoiceConstants.COMMAND_ZHIDAO_SWITCHCARD:
String data = intent.getStringExtra("data");
String data = intent.getStringExtra( "data" );
try {
JSONObject jsonObject = new JSONObject(data);
JSONObject jsonObject = new JSONObject( data );
String card = jsonObject.getString("card");
String card = jsonObject.getString( "card" );
if (TextUtils.equals("多媒体",card)) {
mCardsContainer.setCurrentItem(1);
if ( TextUtils.equals( "多媒体", card ) ) {
mCardsContainer.setCurrentItem( 1 );
}else if (TextUtils.equals("探路",card)){
mCardsContainer.setCurrentItem(3);
} else if ( TextUtils.equals( "探路", card ) ) {
mCardsContainer.setCurrentItem( 3 );
}else if (TextUtils.equals("在线车辆",card)){
mCardsContainer.setCurrentItem(5);
} else if ( TextUtils.equals( "在线车辆", card ) ) {
mCardsContainer.setCurrentItem( 5 );
}
} catch (JSONException e) {
} catch ( JSONException e ) {
e.printStackTrace();
}
@@ -422,16 +424,16 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
case VoiceConstants.COMMAND_ZHIDAO_SWITCHCARD_NEXT:
currentItem++;
mCardsContainer.setCurrentItem(currentItem / cardSize);
mCardsContainer.setCurrentItem( currentItem / cardSize );
break;
case VoiceConstants.COMMAND_ZHIDAO_SWITCHCARD_PREVIOUS:
currentItem--;
if (currentItem < 0) {
if ( currentItem < 0 ) {
currentItem += cardSize;
}
mCardsContainer.setCurrentItem(currentItem / cardSize);
mCardsContainer.setCurrentItem( currentItem / cardSize );
break;
default:

View File

@@ -5,6 +5,7 @@ import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.navi.IMogoAimlessModeListener;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.service.module.IMogoModuleProvider;
@@ -22,7 +23,8 @@ import javax.security.auth.callback.Callback;
public interface MogoModulesHandler extends IMogoMapListener,
IMogoNaviListener,
IMogoLocationListener,
IMogoMarkerClickListener {
IMogoMarkerClickListener,
IMogoAimlessModeListener {
/**
* 地图加载完成回调

View File

@@ -16,7 +16,9 @@ import com.mogo.map.location.MogoLocation;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.model.MogoPoi;
import com.mogo.map.navi.IMogoAimlessModeListener;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.map.navi.MogoCongestionInfo;
import com.mogo.map.navi.MogoNaviInfo;
import com.mogo.map.navi.MogoTraffic;
import com.mogo.map.uicontroller.EnumMapUI;
@@ -530,20 +532,7 @@ public class MogoModulesManager implements MogoModulesHandler,
@Override
public void onUpdateTraffic( MogoTraffic traffic ) {
Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
IMogoNaviListener listener = iterator.next();
if ( listener != null ) {
try {
listener.onUpdateTraffic( traffic );
} catch ( Exception e ) {
Logger.e( TAG, e, "error." );
}
}
}
Logger.e( TAG, "error. call deprecated method, use onUpdateTraffic2 instead." );
}
@Override
@@ -601,7 +590,7 @@ public class MogoModulesManager implements MogoModulesHandler,
public void destroy() {
if ( mMogoIntentManager != null ) {
mMogoIntentManager.unregisterIntentListener( Intent.ACTION_POWER_CONNECTED, this );
mMogoIntentManager.unregisterIntentListener( Intent.ACTION_POWER_DISCONNECTED,this );
mMogoIntentManager.unregisterIntentListener( Intent.ACTION_POWER_DISCONNECTED, this );
mMogoIntentManager.unregisterIntentListener( MogoReceiver.ACTION_NWD_ACC, this );
}
mActivity = null;
@@ -626,6 +615,34 @@ public class MogoModulesManager implements MogoModulesHandler,
return false;
}
@Override
public void onUpdateTraffic2( MogoTraffic traffic ) {
Iterator< IMogoAimlessModeListener > iterator = MogoRegisterCenterHandler.getInstance().getAimlessModeListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
IMogoAimlessModeListener listener = iterator.next();
if ( listener == null ) {
listener.onUpdateTraffic2( traffic );
}
}
}
@Override
public void onUpdateCongestion( MogoCongestionInfo info ) {
Iterator< IMogoAimlessModeListener > iterator = MogoRegisterCenterHandler.getInstance().getAimlessModeListeners();
if ( iterator == null ) {
return;
}
while ( iterator.hasNext() ) {
IMogoAimlessModeListener listener = iterator.next();
if ( listener == null ) {
listener.onUpdateCongestion( info );
}
}
}
@Override
public String getCurrentModuleName() {
return mEnableModuleName;

View File

@@ -6,6 +6,7 @@ import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.navi.IMogoAimlessModeListener;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.module.IMogoModuleLifecycle;
@@ -71,7 +72,16 @@ public class MogoRegisterCenter implements IMogoRegisterCenter {
}
@Override
public void init( Context context ) {
public void registerMogoAimlessModeListener( String tag, IMogoAimlessModeListener listener ) {
}
@Override
public void unregisterMogoAimlessModeListener( String tag ) {
}
@Override
public void init( Context context ) {
}
}

View File

@@ -5,6 +5,7 @@ import android.content.Context;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.navi.IMogoAimlessModeListener;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoRegisterCenter;
@@ -22,13 +23,13 @@ import java.util.Map;
public class MogoRegisterCenterHandler implements IMogoRegisterCenter {
private static volatile MogoRegisterCenterHandler sInstance;
private Context mContext;
private Map< String, IMogoModuleLifecycle > mLifecycle = new HashMap<>();
private Map< String, IMogoMapListener > mMap = new HashMap<>();
private Map< String, IMogoNaviListener > mNavi = new HashMap<>();
private Map< String, IMogoLocationListener > mLocation = new HashMap<>();
private Map< String, IMogoMarkerClickListener > mMarker = new HashMap<>();
private Map< String, IMogoAimlessModeListener > mAimless = new HashMap<>();
private MogoRegisterCenterHandler() {
}
@@ -99,11 +100,18 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter {
mMarker.remove( tag );
}
@Override
public void registerMogoAimlessModeListener( String tag, IMogoAimlessModeListener listener ) {
mAimless.put( tag, listener );
}
@Override
public void unregisterMogoAimlessModeListener( String tag ) {
mAimless.remove( tag );
}
@Override
public void init( Context context ) {
if ( mContext == null && context != null ) {
mContext = context.getApplicationContext();
}
}
public IMogoModuleLifecycle getLifecycleListener( String tag ) {
@@ -145,4 +153,8 @@ public class MogoRegisterCenterHandler implements IMogoRegisterCenter {
public Iterator< IMogoMarkerClickListener > getMarkerListeners() {
return mMarker.values().iterator();
}
public Iterator< IMogoAimlessModeListener > getAimlessModeListeners() {
return mAimless.values().iterator();
}
}