This commit is contained in:
wangcongtao
2020-04-24 14:39:55 +08:00
parent 63972cb92e
commit bda37ac3b6
6 changed files with 542 additions and 520 deletions

View File

@@ -6,7 +6,7 @@ ext {
buildToolsVersion : "29.0.2",
minSdkVersion : 19,
targetSdkVersion : 22,
versionName : "8.0.4",
versionName : "8.0.5",
]
dependencies = [

View File

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

View File

@@ -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
* <p>
* 事件回调分发中心
*/
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." );
}
}
}
}
}

View File

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

View File

@@ -22,19 +22,7 @@ import javax.security.auth.callback.Callback;
* <p>
* 卡片管理
*/
public interface MogoModulesHandler extends IMogoMapListener,
IMogoNaviListener,
IMogoLocationListener,
IMogoMarkerClickListener,
IMogoAimlessModeListener,
IMogoCarLocationChangedListener2 {
/**
* 地图加载完成回调
*
* @param callback
*/
void setMapLoadedCallback( Runnable callback );
public interface MogoModulesHandler {
/**
* 加载模块

View File

@@ -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;
* <p>
* 卡片加载
*/
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;