From bda37ac3b6793c090bbcd056559bc8581026a0f2 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Fri, 24 Apr 2020 14:39:55 +0800 Subject: [PATCH] opt --- config.gradle | 2 +- .../extensions/entrance/EntranceFragment.java | 1 + .../mogo/module/main/EventDispatchCenter.java | 529 ++++++++++++++++++ .../com/mogo/module/main/MainActivity.java | 18 +- .../module/main/cards/MogoModulesHandler.java | 14 +- .../module/main/cards/MogoModulesManager.java | 498 +---------------- 6 files changed, 542 insertions(+), 520 deletions(-) create mode 100644 modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java diff --git a/config.gradle b/config.gradle index 2419f9593d..ef9a8aae9b 100644 --- a/config.gradle +++ b/config.gradle @@ -6,7 +6,7 @@ ext { buildToolsVersion : "29.0.2", minSdkVersion : 19, targetSdkVersion : 22, - versionName : "8.0.4", + versionName : "8.0.5", ] dependencies = [ diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index 93a8a6d4ed..2141290f83 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -378,6 +378,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent MapCenterPointStrategy.setMapCenterPointBySceneAndDelay( mMApUIController, Scene.NAVI, 500, () -> { return !mMogoNavi.isNaviing(); } ); + mApis.getAnalyticsApi().track( "Navigation_begin", new HashMap<>() ); } @Override diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java new file mode 100644 index 0000000000..89a2f42f41 --- /dev/null +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/EventDispatchCenter.java @@ -0,0 +1,529 @@ +package com.mogo.module.main; + +import android.content.Intent; +import android.location.Location; +import android.text.TextUtils; +import android.view.MotionEvent; + +import com.mogo.map.MogoLatLng; +import com.mogo.map.listener.IMogoMapListener; +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.model.MogoPoi; +import com.mogo.map.navi.IMogoAimlessModeListener; +import com.mogo.map.navi.IMogoCarLocationChangedListener; +import com.mogo.map.navi.IMogoCarLocationChangedListener2; +import com.mogo.map.navi.IMogoNaviListener; +import com.mogo.map.navi.IMogoNaviListener2; +import com.mogo.map.navi.MogoCongestionInfo; +import com.mogo.map.navi.MogoNaviInfo; +import com.mogo.map.navi.MogoTraffic; +import com.mogo.map.uicontroller.EnumMapUI; +import com.mogo.module.common.entity.MarkerNoveltyInfo; +import com.mogo.module.common.entity.MarkerShareMusic; +import com.mogo.module.common.entity.MarkerShowEntity; +import com.mogo.module.main.registercenter.MogoRegisterCenterHandler; +import com.mogo.module.service.MarkerServiceHandler; +import com.mogo.module.service.receiver.MogoReceiver; +import com.mogo.service.intent.IMogoIntentListener; +import com.mogo.service.intent.IMogoIntentManager; +import com.mogo.service.module.IMogoModuleLifecycle; +import com.mogo.utils.logger.Logger; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +/** + * @author congtaowang + * @since 2020-04-24 + *

+ * 事件回调分发中心 + */ +public class EventDispatchCenter implements + IMogoNaviListener, + IMogoMarkerClickListener, + IMogoAimlessModeListener, + IMogoCarLocationChangedListener2, + IMogoMapListener, + IMogoNaviListener2, + IMogoLocationListener, + IMogoIntentListener { + + + private static volatile EventDispatchCenter sInstance; + private Runnable mMapLoadedCallback; + + private EventDispatchCenter() { + } + + public static EventDispatchCenter getInstance() { + if ( sInstance == null ) { + synchronized ( EventDispatchCenter.class ) { + if ( sInstance == null ) { + sInstance = new EventDispatchCenter(); + } + } + } + return sInstance; + } + + private static final String TAG = "DispatchCenter"; + + public void registerReceiver( IMogoIntentManager intentManager ) { + intentManager.registerIntentListener( Intent.ACTION_POWER_CONNECTED, this ); + intentManager.registerIntentListener( Intent.ACTION_POWER_DISCONNECTED, this ); + intentManager.registerIntentListener( MogoReceiver.ACTION_NWD_ACC, this ); + } + + @Override + public boolean onMarkerClicked( IMogoMarker marker ) { + IMogoMarkerClickListener listener = MogoRegisterCenterHandler.getInstance().getMarkerListener( marker.getOwner() ); + if ( listener != null ) { + try { + trackMarkerClickEvent( marker ); + return listener.onMarkerClicked( marker ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + return false; + } + + /** + * marker 点击埋点 + * + * @param marker + */ + private void trackMarkerClickEvent( IMogoMarker marker ) { + if ( marker == null || TextUtils.isEmpty( marker.getOwner() ) ) { + return; + } + // 数据统计代码 + final Map< String, Object > properties = new HashMap<>(); + properties.put( "poitype", marker.getOwner() ); + MarkerShowEntity showEntity = ( MarkerShowEntity ) marker.getObject(); + Object bindObj = showEntity.getBindObj(); + if ( bindObj instanceof MarkerNoveltyInfo ) { + properties.put( "contenttype", ( ( MarkerNoveltyInfo ) bindObj ).getPoiType() ); + } else if ( bindObj instanceof MarkerShareMusic ) { + properties.put( "contenttype", ( ( MarkerShareMusic ) bindObj ).getShareType() + "" ); + } + MarkerServiceHandler.getMogoAnalytics().track( "Launcher_Icon_Click", properties ); + } + + @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 ) { + try { + listener.onUpdateTraffic2( traffic ); + } catch ( Exception e ) { + e.printStackTrace(); + } + } + } + } + + @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 ) { + try { + listener.onUpdateCongestion( info ); + } catch ( Exception e ) { + e.printStackTrace(); + } + } + } + } + + @Override + public void onCarLocationChanged( MogoLatLng latLng ) { + // do nothing. + } + + @Override + public void onCarLocationChanged2( Location latLng ) { + Iterator< IMogoCarLocationChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getCarLocationChangedListener(); + if ( iterator == null ) { + return; + } + MogoLatLng target = null; + while ( iterator.hasNext() ) { + IMogoCarLocationChangedListener listener = iterator.next(); + if ( listener instanceof IMogoCarLocationChangedListener2 ) { + try { + ( ( IMogoCarLocationChangedListener2 ) listener ).onCarLocationChanged2( latLng ); + } catch ( Exception e ) { + e.printStackTrace(); + } + } else { + try { + if ( target == null ) { + target = new MogoLatLng( latLng.getLatitude(), latLng.getLongitude() ); + } + listener.onCarLocationChanged( target ); + } catch ( Exception e ) { + e.printStackTrace(); + } + } + } + } + + /** + * 地图加载完成回调 + * + * @param callback + */ + void setMapLoadedCallback( Runnable callback ){ + this.mMapLoadedCallback = callback; + } + + @Override + public void onMapLoaded() { + if ( mMapLoadedCallback != null ) { + mMapLoadedCallback.run(); + mMapLoadedCallback = null; + } + } + + @Override + public void onTouch( MotionEvent motionEvent ) { + Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoMapListener listener = iterator.next(); + if ( listener != null ) { + try { + listener.onTouch( motionEvent ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } + + @Override + public void onPOIClick( MogoPoi poi ) { + Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoMapListener listener = iterator.next(); + if ( listener != null ) { + try { + listener.onPOIClick( poi ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } + + @Override + public void onMapClick( MogoLatLng latLng ) { + Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoMapListener listener = iterator.next(); + if ( listener != null ) { + try { + listener.onMapClick( latLng ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } + + @Override + public void onLockMap( boolean isLock ) { + Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoMapListener listener = iterator.next(); + if ( listener != null ) { + try { + listener.onLockMap( isLock ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } + + @Override + public void onMapModeChanged( EnumMapUI ui ) { + Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoMapListener listener = iterator.next(); + if ( listener != null ) { + try { + listener.onMapModeChanged( ui ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } + + @Override + public void onMapChanged( MogoLatLng location, float zoom, float tilt, float bearing ) { + + final long start = System.currentTimeMillis(); + Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoMapListener listener = iterator.next(); + if ( listener != null ) { + try { + listener.onMapChanged( location, zoom, tilt, bearing ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + Logger.i( TAG, "onMapChanged event cost " + ( System.currentTimeMillis() - start ) + "ms" ); + } + + @Override + public void onInitNaviFailure() { + Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoNaviListener listener = iterator.next(); + if ( listener != null ) { + try { + listener.onInitNaviFailure(); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } + + @Override + public void onInitNaviSuccess() { + Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoNaviListener listener = iterator.next(); + if ( listener != null ) { + try { + listener.onInitNaviSuccess(); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } + + @Override + public void onNaviInfoUpdate( MogoNaviInfo naviinfo ) { + Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); + + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoNaviListener listener = iterator.next(); + if ( listener != null ) { + try { + listener.onNaviInfoUpdate( naviinfo ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } + + @Override + public void onStartNavi() { + Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); + + + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoNaviListener listener = iterator.next(); + if ( listener != null ) { + try { + listener.onStartNavi(); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } + + @Override + public void onStopNavi() { + Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoNaviListener listener = iterator.next(); + if ( listener != null ) { + try { + listener.onStopNavi(); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } + + @Override + public void onCalculateSuccess() { + Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoNaviListener listener = iterator.next(); + if ( listener != null ) { + try { + listener.onCalculateSuccess(); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } + + @Override + public void onoCalculateFailed() { + Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoNaviListener listener = iterator.next(); + if ( listener != null ) { + try { + listener.onoCalculateFailed(); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } + + @Override + public void onUpdateTraffic( MogoTraffic traffic ) { + Logger.e( TAG, "error. call deprecated method, use onUpdateTraffic2 instead." ); + } + + @Override + public void onLocationChanged( MogoLocation location ) { + final long start = System.currentTimeMillis(); + Iterator< IMogoLocationListener > iterator = MogoRegisterCenterHandler.getInstance().getLocationListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoLocationListener listener = iterator.next(); + if ( listener != null ) { + try { + listener.onLocationChanged( location ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + Logger.i( TAG, "onLocationChanged event cost " + ( System.currentTimeMillis() - start ) + "ms" ); + } + + @Override + public void onIntentReceived( String intentStr, Intent intent ) { + + Iterator< IMogoModuleLifecycle > iterator = MogoRegisterCenterHandler.getInstance().getLifecycleListeners(); + if ( Intent.ACTION_POWER_CONNECTED.equals( intentStr ) ) { + while ( iterator.hasNext() ) { + IMogoModuleLifecycle lifecycle = iterator.next(); + if ( lifecycle != null ) { + lifecycle.accOn(); + } + } + } else if ( Intent.ACTION_POWER_DISCONNECTED.equals( intentStr ) ) { + } else if ( MogoReceiver.ACTION_NWD_ACC.equals( intentStr ) ) { + int state = intent.getByteExtra( MogoReceiver.PARAM_ACC_STATUS, ( byte ) 0 ); + if ( state == 1 ) { + while ( iterator.hasNext() ) { + IMogoModuleLifecycle lifecycle = iterator.next(); + if ( lifecycle != null ) { + lifecycle.accOn(); + } + } + } + } + } + + + @Override + public void onArriveDestination() { + Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoNaviListener listener = iterator.next(); + if ( listener instanceof IMogoNaviListener2 ) { + try { + ( ( IMogoNaviListener2 ) listener ).onArriveDestination(); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } + + @Override + public void onEndEmulatorNavi() { + Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoNaviListener listener = iterator.next(); + if ( listener instanceof IMogoNaviListener2 ) { + try { + ( ( IMogoNaviListener2 ) listener ).onEndEmulatorNavi(); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } +} 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 3fdf129c93..5f2fcef0ba 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 @@ -244,14 +244,14 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme mMogoModuleHandler = new MogoModulesManager( this ); mMogoMapService = mServiceApis.getMapServiceApi(); if ( mMogoMapService != null ) { - mMogoMapService.getHostListenerRegister().registerHostMapListener( mMogoModuleHandler ); - mMogoMapService.getHostListenerRegister().registerHostNaviListener( mMogoModuleHandler ); - mMogoMapService.getHostListenerRegister().registerHostAimlessModeListener( mMogoModuleHandler ); + mMogoMapService.getHostListenerRegister().registerHostMapListener( EventDispatchCenter.getInstance() ); + mMogoMapService.getHostListenerRegister().registerHostNaviListener( EventDispatchCenter.getInstance() ); + mMogoMapService.getHostListenerRegister().registerHostAimlessModeListener( EventDispatchCenter.getInstance() ); mMogoMapService.getHostListenerRegister().registerMarkerClickListener( this ); - mMogoMapService.getNavi( this ).registerCarLocationChangedListener( mMogoModuleHandler ); + mMogoMapService.getNavi( this ).registerCarLocationChangedListener( EventDispatchCenter.getInstance() ); } - mMogoModuleHandler.setMapLoadedCallback( () -> { + EventDispatchCenter.getInstance().setMapLoadedCallback( () -> { Logger.d( TAG, "map loaded." + Thread.currentThread().getName() ); // 加载地图,触发地图加载完毕回调,在初始化其他卡片模块,保证卡片模块可以正确获取地图相关服务。 loadContainerModules(); @@ -332,16 +332,12 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme @Override public void onLocationChanged( MogoLocation location ) { - if ( mMogoModuleHandler != null ) { - mMogoModuleHandler.onLocationChanged( location ); - } + EventDispatchCenter.getInstance().onLocationChanged( location ); } @Override public boolean onMarkerClicked( IMogoMarker marker ) { - if ( mMogoModuleHandler != null ) { - mMogoModuleHandler.onMarkerClicked( marker ); - } + EventDispatchCenter.getInstance().onMarkerClicked( marker ); switch2Card( marker.getOwner(), false ); return false; } 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 08c8f4417e..b42e719706 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 @@ -22,19 +22,7 @@ import javax.security.auth.callback.Callback; *

* 卡片管理 */ -public interface MogoModulesHandler extends IMogoMapListener, - IMogoNaviListener, - IMogoLocationListener, - IMogoMarkerClickListener, - IMogoAimlessModeListener, - IMogoCarLocationChangedListener2 { - - /** - * 地图加载完成回调 - * - * @param callback - */ - void setMapLoadedCallback( Runnable callback ); +public interface MogoModulesHandler { /** * 加载模块 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 8f6efe901c..24e24bb457 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 @@ -1,44 +1,19 @@ package com.mogo.module.main.cards; import android.content.Context; -import android.content.Intent; -import android.location.Location; import android.text.TextUtils; -import android.view.MotionEvent; import androidx.fragment.app.Fragment; import com.alibaba.android.arouter.launcher.ARouter; -import com.mogo.map.MogoLatLng; -import com.mogo.map.listener.IMogoMapListener; -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.model.MogoPoi; -import com.mogo.map.navi.IMogoAimlessModeListener; -import com.mogo.map.navi.IMogoCarLocationChangedListener; -import com.mogo.map.navi.IMogoCarLocationChangedListener2; -import com.mogo.map.navi.IMogoNaviListener; -import com.mogo.map.navi.IMogoNaviListener2; -import com.mogo.map.navi.MogoCongestionInfo; -import com.mogo.map.navi.MogoNaviInfo; -import com.mogo.map.navi.MogoTraffic; -import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.module.common.MogoModule; import com.mogo.module.common.MogoModulePaths; -import com.mogo.module.common.entity.MarkerNoveltyInfo; -import com.mogo.module.common.entity.MarkerShareMusic; -import com.mogo.module.common.entity.MarkerShowEntity; import com.mogo.module.extensions.ExtensionsModuleConst; +import com.mogo.module.main.EventDispatchCenter; import com.mogo.module.main.MainActivity; import com.mogo.module.main.registercenter.MogoRegisterCenterHandler; -import com.mogo.module.service.MarkerServiceHandler; -import com.mogo.module.service.receiver.MogoReceiver; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; -import com.mogo.service.analytics.IMogoAnalytics; -import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.intent.IMogoIntentManager; import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.service.module.IMogoModuleProvider; @@ -63,26 +38,17 @@ import java.util.Map; *

* 卡片加载 */ -public class MogoModulesManager implements MogoModulesHandler, - IMogoMapListener, - IMogoNaviListener2, - IMogoLocationListener, - IMogoIntentListener { +public class MogoModulesManager implements MogoModulesHandler{ private static final String TAG = "MogoModulesManager"; - - private String mBroadcastConfigKey; - private MainActivity mActivity; private Map< MogoModule, IMogoModuleProvider > mModuleProviders = new HashMap<>(); // 空间换效率 private Map< String, IMogoModuleProvider > mModuleNameProviders = new HashMap<>(); - private IMogoAnalytics mTrackManager; private String mEnableModuleName = null; - private Runnable mMapLoadedCallback; public static final String KEY_SORTED_CARD_MODULES = "sortedCards"; private List< String > mSortedCards = new ArrayList<>(); @@ -95,10 +61,9 @@ public class MogoModulesManager implements MogoModulesHandler, } this.mActivity = activity; IMogoServiceApis apis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation(); - mTrackManager = apis.getAnalyticsApi(); mMogoIntentManager = apis.getIntentManagerApi(); - registerReceiver(); + EventDispatchCenter.getInstance().registerReceiver(mMogoIntentManager); CardIntroduceConfigs.init( getContext(), apis.getStatusManagerApi() ); } @@ -125,11 +90,6 @@ public class MogoModulesManager implements MogoModulesHandler, } } - @Override - public void setMapLoadedCallback( Runnable callback ) { - mMapLoadedCallback = callback; - } - @Override public List< IMogoModuleProvider > loadCardsModule() { @@ -289,468 +249,16 @@ public class MogoModulesManager implements MogoModulesHandler, CardIntroduceConfigs.broadcastCardIntroduce( mActivity, mEnableModuleName ); } - @Override - public void onMapLoaded() { - if ( mMapLoadedCallback != null ) { - mMapLoadedCallback.run(); - mMapLoadedCallback = null; - } - } - - @Override - public void onTouch( MotionEvent motionEvent ) { - Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners(); - if ( iterator == null ) { - return; - } - while ( iterator.hasNext() ) { - IMogoMapListener listener = iterator.next(); - if ( listener != null ) { - try { - listener.onTouch( motionEvent ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - } - - @Override - public void onPOIClick( MogoPoi poi ) { - Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners(); - if ( iterator == null ) { - return; - } - while ( iterator.hasNext() ) { - IMogoMapListener listener = iterator.next(); - if ( listener != null ) { - try { - listener.onPOIClick( poi ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - } - - @Override - public void onMapClick( MogoLatLng latLng ) { - Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners(); - if ( iterator == null ) { - return; - } - while ( iterator.hasNext() ) { - IMogoMapListener listener = iterator.next(); - if ( listener != null ) { - try { - listener.onMapClick( latLng ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - } - - @Override - public void onLockMap( boolean isLock ) { - Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners(); - if ( iterator == null ) { - return; - } - while ( iterator.hasNext() ) { - IMogoMapListener listener = iterator.next(); - if ( listener != null ) { - try { - listener.onLockMap( isLock ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - } - - @Override - public void onMapModeChanged( EnumMapUI ui ) { - Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners(); - if ( iterator == null ) { - return; - } - while ( iterator.hasNext() ) { - IMogoMapListener listener = iterator.next(); - if ( listener != null ) { - try { - listener.onMapModeChanged( ui ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - } - - @Override - public void onMapChanged( MogoLatLng location, float zoom, float tilt, float bearing ) { - - final long start = System.currentTimeMillis(); - Iterator< IMogoMapListener > iterator = MogoRegisterCenterHandler.getInstance().getMapListeners(); - if ( iterator == null ) { - return; - } - while ( iterator.hasNext() ) { - IMogoMapListener listener = iterator.next(); - if ( listener != null ) { - try { - listener.onMapChanged( location, zoom, tilt, bearing ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - Logger.i( TAG, "onMapChanged event cost " + ( System.currentTimeMillis() - start ) + "ms" ); - } - - @Override - public void onInitNaviFailure() { - Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); - if ( iterator == null ) { - return; - } - while ( iterator.hasNext() ) { - IMogoNaviListener listener = iterator.next(); - if ( listener != null ) { - try { - listener.onInitNaviFailure(); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - } - - @Override - public void onInitNaviSuccess() { - Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); - if ( iterator == null ) { - return; - } - while ( iterator.hasNext() ) { - IMogoNaviListener listener = iterator.next(); - if ( listener != null ) { - try { - listener.onInitNaviSuccess(); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - } - - @Override - public void onNaviInfoUpdate( MogoNaviInfo naviinfo ) { - Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); - - if ( iterator == null ) { - return; - } - while ( iterator.hasNext() ) { - IMogoNaviListener listener = iterator.next(); - if ( listener != null ) { - try { - listener.onNaviInfoUpdate( naviinfo ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - } - - @Override - public void onStartNavi() { - Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); - mTrackManager.track( "Navigation_begin", new HashMap<>() ); - - if ( iterator == null ) { - return; - } - while ( iterator.hasNext() ) { - IMogoNaviListener listener = iterator.next(); - if ( listener != null ) { - try { - listener.onStartNavi(); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - } - - @Override - public void onStopNavi() { - mTrackManager.track( "Navigation_end", new HashMap<>() ); - Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); - if ( iterator == null ) { - return; - } - while ( iterator.hasNext() ) { - IMogoNaviListener listener = iterator.next(); - if ( listener != null ) { - try { - listener.onStopNavi(); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - } - - @Override - public void onCalculateSuccess() { - Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); - if ( iterator == null ) { - return; - } - while ( iterator.hasNext() ) { - IMogoNaviListener listener = iterator.next(); - if ( listener != null ) { - try { - listener.onCalculateSuccess(); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - } - - @Override - public void onoCalculateFailed() { - Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); - if ( iterator == null ) { - return; - } - while ( iterator.hasNext() ) { - IMogoNaviListener listener = iterator.next(); - if ( listener != null ) { - try { - listener.onoCalculateFailed(); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - } - - @Override - public void onUpdateTraffic( MogoTraffic traffic ) { - Logger.e( TAG, "error. call deprecated method, use onUpdateTraffic2 instead." ); - } - - @Override - public void onLocationChanged( MogoLocation location ) { - final long start = System.currentTimeMillis(); - Iterator< IMogoLocationListener > iterator = MogoRegisterCenterHandler.getInstance().getLocationListeners(); - if ( iterator == null ) { - return; - } - while ( iterator.hasNext() ) { - IMogoLocationListener listener = iterator.next(); - if ( listener != null ) { - try { - listener.onLocationChanged( location ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - Logger.i( TAG, "onLocationChanged event cost " + ( System.currentTimeMillis() - start ) + "ms" ); - } - - public void registerReceiver() { - mMogoIntentManager.registerIntentListener( Intent.ACTION_POWER_CONNECTED, this ); - mMogoIntentManager.registerIntentListener( Intent.ACTION_POWER_DISCONNECTED, this ); - mMogoIntentManager.registerIntentListener( MogoReceiver.ACTION_NWD_ACC, this ); - } - - @Override - public void onIntentReceived( String intentStr, Intent intent ) { - - Iterator< IMogoModuleLifecycle > iterator = MogoRegisterCenterHandler.getInstance().getLifecycleListeners(); - if ( Intent.ACTION_POWER_CONNECTED.equals( intentStr ) ) { - while ( iterator.hasNext() ) { - IMogoModuleLifecycle lifecycle = iterator.next(); - if ( lifecycle != null ) { - lifecycle.accOn(); - } - } - } else if ( Intent.ACTION_POWER_DISCONNECTED.equals( intentStr ) ) { - } else if ( MogoReceiver.ACTION_NWD_ACC.equals( intentStr ) ) { - int state = intent.getByteExtra( MogoReceiver.PARAM_ACC_STATUS, ( byte ) 0 ); - if ( state == 1 ) { - while ( iterator.hasNext() ) { - IMogoModuleLifecycle lifecycle = iterator.next(); - if ( lifecycle != null ) { - lifecycle.accOn(); - } - } - } - } - } - @Override public void destroy() { - if ( mMogoIntentManager != null ) { - mMogoIntentManager.unregisterIntentListener( Intent.ACTION_POWER_CONNECTED, this ); - mMogoIntentManager.unregisterIntentListener( Intent.ACTION_POWER_DISCONNECTED, this ); - mMogoIntentManager.unregisterIntentListener( MogoReceiver.ACTION_NWD_ACC, this ); - } mActivity = null; if ( mModuleProviders != null ) { mModuleProviders.clear(); } mModuleProviders = null; - mMapLoadedCallback = null; mEnableModuleName = null; } - @Override - public boolean onMarkerClicked( IMogoMarker marker ) { - IMogoMarkerClickListener listener = MogoRegisterCenterHandler.getInstance().getMarkerListener( marker.getOwner() ); - if ( listener != null ) { - try { - trackMarkerClickEvent( marker ); - return listener.onMarkerClicked( marker ); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - return false; - } - - /** - * marker 点击埋点 - * - * @param marker - */ - private void trackMarkerClickEvent( IMogoMarker marker ) { - if ( marker == null || TextUtils.isEmpty( marker.getOwner() )) { - return; - } - // 数据统计代码 - final Map< String, Object > properties = new HashMap<>(); - properties.put( "poitype", marker.getOwner() ); - MarkerShowEntity showEntity = ( MarkerShowEntity ) marker.getObject(); - Object bindObj = showEntity.getBindObj(); - if ( bindObj instanceof MarkerNoveltyInfo ) { - properties.put( "contenttype", ( ( MarkerNoveltyInfo ) bindObj ).getPoiType() ); - } else if( bindObj instanceof MarkerShareMusic ){ - properties.put( "contenttype", ( ( MarkerShareMusic ) bindObj ).getShareType()+"" ); - } - MarkerServiceHandler.getMogoAnalytics().track( "Launcher_Icon_Click", properties ); - } - - @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 ) { - try { - listener.onUpdateTraffic2( traffic ); - } catch ( Exception e ) { - e.printStackTrace(); - } - } - } - } - - @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 ) { - try { - listener.onUpdateCongestion( info ); - } catch ( Exception e ) { - e.printStackTrace(); - } - } - } - } - - @Override - public void onCarLocationChanged( MogoLatLng latLng ) { - // do nothing. - } - - @Override - public void onCarLocationChanged2( Location latLng ) { - Iterator< IMogoCarLocationChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getCarLocationChangedListener(); - if ( iterator == null ) { - return; - } - MogoLatLng target = null; - while ( iterator.hasNext() ) { - IMogoCarLocationChangedListener listener = iterator.next(); - if ( listener instanceof IMogoCarLocationChangedListener2 ) { - try { - ( ( IMogoCarLocationChangedListener2 ) listener ).onCarLocationChanged2( latLng ); - } catch ( Exception e ) { - e.printStackTrace(); - } - } else { - try { - if ( target == null ) { - target = new MogoLatLng( latLng.getLatitude(), latLng.getLongitude() ); - } - listener.onCarLocationChanged( target ); - } catch ( Exception e ) { - e.printStackTrace(); - } - } - } - } - - @Override - public void onArriveDestination() { - Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); - if ( iterator == null ) { - return; - } - while ( iterator.hasNext() ) { - IMogoNaviListener listener = iterator.next(); - if ( listener instanceof IMogoNaviListener2 ) { - try { - ( ( IMogoNaviListener2 ) listener ).onArriveDestination(); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - } - - @Override - public void onEndEmulatorNavi() { - Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); - if ( iterator == null ) { - return; - } - while ( iterator.hasNext() ) { - IMogoNaviListener listener = iterator.next(); - if ( listener instanceof IMogoNaviListener2 ) { - try { - ( ( IMogoNaviListener2 ) listener ).onEndEmulatorNavi(); - } catch ( Exception e ) { - Logger.e( TAG, e, "error." ); - } - } - } - } - @Override public String getCurrentModuleName() { return mEnableModuleName;