diff --git a/gradle.properties b/gradle.properties index c511005017..9baaf57a30 100644 --- a/gradle.properties +++ b/gradle.properties @@ -64,7 +64,4 @@ MOGO_MODULE_PUSH_VERSION=1.0.0-SNAPSHOT # 广告资源位 MOGO_MODULE_AD_CARD_VERSION=1.0.0-SNAPSHOT # 新鲜水 -MOGO_MODULE_FRESH_NEWS_VERSION=1.0.2-SNAPSHOT - -# 卡片效果 -CARD_LIBRARY_VERSION=1.0.0-SNAPSHOT \ No newline at end of file +MOGO_MODULE_FRESH_NEWS_VERSION=1.0.2-SNAPSHOT \ No newline at end of file diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java index 79e0163162..7750973c1e 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/marker/AMapMarkerWrapper.java @@ -164,9 +164,7 @@ public class AMapMarkerWrapper implements IMogoMarker, Observer { } if ( mMarker != null ) { mMarker.setMarkerOptions( options ); - if ( mMarker.getObject() instanceof IMogoMarker ) { - ( ( IMogoMarker ) mMarker.getObject() ).setObject( opt.getObject() ); - } + setObject( opt.getObject() ); } } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerShowEntity.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerShowEntity.java index 067330a211..69b2df5411 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerShowEntity.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerShowEntity.java @@ -2,6 +2,9 @@ package com.mogo.module.common.entity; import android.text.TextUtils; +import com.mogo.map.marker.IMogoMarker; + +import java.lang.ref.WeakReference; import java.util.Objects; /** @@ -27,6 +30,7 @@ public class MarkerShowEntity { private Object bindObj; //Marker 经纬度位置信息 private MarkerLocation markerLocation; + private IMogoMarker mMarker; public boolean isChecked() { return isChecked; @@ -99,6 +103,14 @@ public class MarkerShowEntity { Objects.equals(markerLocation, that.markerLocation); } + public void setMarker( IMogoMarker marker ) { + this.mMarker = marker; + } + + public IMogoMarker getMarker() { + return mMarker; + } + @Override public int hashCode() { return Objects.hash(iconUrl, textContent, markerType, bindObj, markerLocation); 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 f5307f0292..1b576b3f47 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 @@ -1,6 +1,5 @@ package com.mogo.module.extensions.entrance; -import android.graphics.Rect; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; @@ -30,6 +29,7 @@ import com.mogo.module.extensions.R; import com.mogo.module.extensions.dialog.NaviNoticeDialog; import com.mogo.module.extensions.navi.NaviInfoView; import com.mogo.module.share.ShareControl; +import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; import com.mogo.service.analytics.IMogoAnalytics; import com.mogo.service.fragmentmanager.FragmentDescriptor; @@ -40,7 +40,6 @@ import com.mogo.service.module.IMogoModuleProvider; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.statusmanager.IMogoStatusManager; -import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -74,6 +73,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent private TextView mSpeedLimitValue; private View mSpeedLimitUnit; + private IMogoServiceApis mApis; private IMogoMapService mService; private IMogoMapUIController mMApUIController; private IMogoLocationClient mMogoLocationClient; @@ -100,12 +100,11 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent @Override protected void initViews() { - mMogoFragmentManager = ( IMogoFragmentManager ) ARouter.getInstance() - .build( MogoServicePaths.PATH_FRAGMENT_MANAGER ) - .navigation(); - mMogoAddressManager = ( IMogoAddressManager ) ARouter.getInstance() - .build( MogoServicePaths.PATH_ADDRESS_MANAGER ) - .navigation(); + + mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( getContext() ); + + mMogoFragmentManager = mApis.getFragmentManagerApi(); + mMogoAddressManager = mApis.getAddressManagerApi(); mCommonAddress = findViewById( R.id.module_entrance_id_common_address ); @@ -197,21 +196,13 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent @Override public void onActivityCreated( @Nullable Bundle savedInstanceState ) { super.onActivityCreated( savedInstanceState ); - mService = ( IMogoMapService ) ARouter.getInstance() - .build( MogoServicePaths.PATH_SERVICES_MAP ) - .navigation( getContext() ); - mMogoRegisterCenter = ( IMogoRegisterCenter ) ARouter.getInstance() - .build( MogoServicePaths.PATH_REGISTER_CENTER ) - .navigation( getContext() ); + mService = mApis.getMapServiceApi(); + mMogoRegisterCenter = mApis.getRegisterCenterApi(); mMApUIController = mService.getMapUIController(); mMogoLocationClient = mService.getSingletonLocationClient( getContext() ); mMogoNavi = mService.getNavi( getContext() ); - mAnalytics = ( IMogoAnalytics ) ARouter.getInstance() - .build( MogoServicePaths.PATH_UTILS_ANALYTICS ) - .navigation( getContext() ); - mMogoStatusManager = ( IMogoStatusManager ) ARouter.getInstance() - .build( MogoServicePaths.PATH_STATUS_MANAGER ) - .navigation( getContext() ); + mAnalytics = mApis.getAnalyticsApi(); + mMogoStatusManager = mApis.getStatusManagerApi(); mMogoRegisterCenter.registerMogoNaviListener( ExtensionsModuleConst.TYPE_ENTRANCE, this ); mMogoRegisterCenter.registerMogoMapListener( ExtensionsModuleConst.TYPE_ENTRANCE, this ); 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 c35c364661..0b5c5734dd 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 @@ -314,7 +314,6 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme @Override public boolean onMarkerClicked( IMogoMarker marker ) { - switch2Card( marker.getOwner(), false ); if ( mMogoModuleHandler != null ) { mMogoModuleHandler.onMarkerClicked( marker ); } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java index 5117d35f27..e498d26f28 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java @@ -73,7 +73,7 @@ public class MainPresenter extends Presenter< MainView > { if ( TextUtils.isEmpty( cardInfo.mCardName ) ) { return; } - mView.switch2Card( cardInfo.mCardName, true ); + mView.switch2Card( cardInfo.mCardName, cardInfo.mLockCar ); } ); mAnalytics = ( IMogoAnalytics ) ARouter.getInstance().build( MogoServicePaths.PATH_UTILS_ANALYTICS ).navigation( getContext() ); mCardStartShowTime = System.currentTimeMillis(); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java index 3c0e0baaf8..338c1b121d 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java @@ -17,6 +17,7 @@ import com.mogo.service.cardmanager.IMogoCardManager; import com.mogo.service.connection.IMogoSocketManager; import com.mogo.service.imageloader.IMogoImageloader; import com.mogo.service.map.IMogoMapService; +import com.mogo.service.module.IMogoActionManager; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.statusmanager.IMogoStatusManager; @@ -36,15 +37,14 @@ public class MarkerServiceHandler { private static IMogoMarkerManager mMarkerManager; private static IMogoNavi mNavi; private static IMogoMapUIController mMapUIController; - private static IMogoLocationClient mLocationClient; - private static IMogoStatusManager mMogoStatusManager; private static IMogoImageloader mImageloader; private static IMogoSocketManager mMogoSocketManager; private static IMogoCardManager mMogoCardManager; private static IMogoAnalytics mMogoAnalytics; private static IMogoRegisterCenter mRegisterCenter; + private static IMogoActionManager mActionManager; private static MapMarkerManager mMapMarkerManager; @@ -56,12 +56,12 @@ public class MarkerServiceHandler { mMogoSocketManager = mApis.getSocketManagerApi( context ); mMogoCardManager = mApis.getCardManagerApi(); mMogoAnalytics = mApis.getAnalyticsApi(); - mMarkerManager = mMapService.getMarkerManager( context ); mNavi = mMapService.getNavi( context ); mMapUIController = mMapService.getMapUIController(); mLocationClient = mMapService.getSingletonLocationClient( context ); mRegisterCenter = mApis.getRegisterCenterApi(); + mActionManager = mApis.getActionManagerApi(); mMapMarkerManager = MapMarkerManager.getInstance(); mMapMarkerManager.init( context ); @@ -115,6 +115,10 @@ public class MarkerServiceHandler { return mRegisterCenter; } + public static IMogoActionManager getActionManager() { + return mActionManager; + } + //TODO -------------以下方法是临时过度使用的,后面统一使用,getMapMarkerManager进行调用 /** diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/actionmanager/MogoActionHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/actionmanager/MogoActionHandler.java index 18f11f37dc..71d13ecbe1 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/actionmanager/MogoActionHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/actionmanager/MogoActionHandler.java @@ -3,6 +3,7 @@ package com.mogo.module.service.actionmanager; import android.content.Context; import android.text.TextUtils; +import com.mogo.service.module.IMogoBizActionDoneListener; import com.mogo.service.module.MogoAction; import com.mogo.service.module.IMogoActionListener; import com.mogo.service.module.IMogoActionManager; @@ -43,6 +44,8 @@ public class MogoActionHandler implements IMogoActionManager { private Map< String, List< IMogoActionListener > > mListeners = new ConcurrentHashMap<>(); + private IMogoBizActionDoneListener mBizActionDoneListener; + @Override public void registerActionListener( String biz, IMogoActionListener listener ) { if ( TextUtils.isEmpty( biz ) || listener == null ) { @@ -90,4 +93,21 @@ public class MogoActionHandler implements IMogoActionManager { } } } + + @Override + public void registerBizActionDoneListener( IMogoBizActionDoneListener listener ) { + mBizActionDoneListener = listener; + } + + @Override + public void unregisterBizActionDoneListener() { + mBizActionDoneListener = null; + } + + @Override + public void bizInvoke( String biz, int position, Object data ) { + if ( mBizActionDoneListener != null ) { + mBizActionDoneListener.onBizActionDone( biz, position, data ); + } + } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/actionmanager/MogoActionManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/actionmanager/MogoActionManager.java index 69e7cca49c..58d1a9110a 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/actionmanager/MogoActionManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/actionmanager/MogoActionManager.java @@ -3,7 +3,9 @@ package com.mogo.module.service.actionmanager; import android.content.Context; import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.map.MogoOverlayManager; import com.mogo.service.MogoServicePaths; +import com.mogo.service.module.IMogoBizActionDoneListener; import com.mogo.service.module.MogoAction; import com.mogo.service.module.IMogoActionListener; import com.mogo.service.module.IMogoActionManager; @@ -32,6 +34,21 @@ public class MogoActionManager implements IMogoActionManager { MogoActionHandler.getInstance().invoke( biz, action ); } + @Override + public void registerBizActionDoneListener( IMogoBizActionDoneListener listener ) { + MogoActionHandler.getInstance().registerBizActionDoneListener( listener ); + } + + @Override + public void unregisterBizActionDoneListener() { + MogoActionHandler.getInstance().unregisterBizActionDoneListener(); + } + + @Override + public void bizInvoke( String biz, int position, Object data ) { + MogoActionHandler.getInstance().bizInvoke( biz, position, data ); + } + @Override public void init( Context context ) { MogoActionHandler.getInstance().init( context ); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index ecaac0e88b..a97c161bc3 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -9,6 +9,7 @@ import com.mogo.map.MogoLatLng; import com.mogo.map.location.MogoLocation; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.IMogoMarkerClickListener; +import com.mogo.map.marker.IMogoMarkerManager; import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.map.marker.MogoMarkersHandler; import com.mogo.module.common.entity.MarkerCardResult; @@ -27,6 +28,7 @@ import com.mogo.module.service.datamanager.MogoDataHandler; import com.mogo.module.service.utils.ViewUtils; import com.mogo.service.cardmanager.IMogoCardChangedListener; import com.mogo.service.connection.IMogoOnMessageListener; +import com.mogo.service.module.IMogoBizActionDoneListener; import com.mogo.utils.ThreadPoolService; import com.mogo.utils.logger.Logger; @@ -48,7 +50,8 @@ import java.util.Map; */ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessageListener< MarkerResponse >, - IMogoCardChangedListener { + IMogoCardChangedListener, + IMogoBizActionDoneListener { private static final String TAG = "MapMarkerManager"; // 是否选中在线卡片及气泡,语音搜索触发 private boolean mIsAISearchOnlineData = false; @@ -91,6 +94,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, // 长连接 MarkerServiceHandler.getMogoSocketManager().registerOnMessageListener( 401001, this ); MarkerServiceHandler.getMogoCardManager().registerCardChangedListener( "LAUNCHER_MARKER_MODULE", this ); + MarkerServiceHandler.getActionManager().registerBizActionDoneListener( this ); } // ACC ON 的时候重置为true,ACC OFF 设置为 false @@ -728,6 +732,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, markers.add( marker ); setMarkersSmall( markers ); } + markerShowEntity.setMarker( marker ); return marker; } @@ -763,4 +768,26 @@ public class MapMarkerManager implements IMogoMarkerClickListener, public String getCurrentModuleName() { return mCurrentModuleName; } + + @Override + public void onBizActionDone( String biz, int position, Object data ) { + Logger.d( TAG, "biz = %s, position = %s", biz, position ); + if ( !( data instanceof MarkerShowEntity ) ) { + return; + } + if ( ( ( MarkerShowEntity ) data ).getMarker() != null ) { + onMarkerClicked( ( ( MarkerShowEntity ) data ).getMarker() ); + } else { + IMogoMarkerManager markerManager = MarkerServiceHandler.getMarkerManager(); + List< IMogoMarker > markers = markerManager.getMarkers( biz ); + if ( markers != null ) { + for ( IMogoMarker marker : markers ) { + if ( marker.getObject() == data ) { + onMarkerClicked( marker ); + break; + } + } + } + } + } } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java index 49bdc2a625..c113db6fa8 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java @@ -13,6 +13,7 @@ import com.mogo.service.imageloader.IMogoImageloader; import com.mogo.service.intent.IMogoIntentManager; import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoActionManager; +import com.mogo.service.module.IMogoAddressManager; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.module.IMogoSearchManager; import com.mogo.service.module.IMogoSettingManager; @@ -154,4 +155,10 @@ public interface IMogoServiceApis extends IProvider { * @return */ IMogoRefreshStrategyController getRefreshStrategyControllerApi(); + + /** + * 地址操作 + * @return + */ + IMogoAddressManager getAddressManagerApi(); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoActionManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoActionManager.java index efb6a8a9a8..a2d70f818c 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoActionManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoActionManager.java @@ -33,4 +33,25 @@ public interface IMogoActionManager extends IProvider { * @param action 动作 */ void invoke( String biz, MogoAction action ); + + /** + * 主模块注册业务回调 + * + * @param listener + */ + void registerBizActionDoneListener( IMogoBizActionDoneListener listener ); + + /** + * 主模块注销业务回调 + */ + void unregisterBizActionDoneListener(); + + /** + * 业务回调信息到主模块 + * + * @param biz + * @param position + * @param data + */ + void bizInvoke( String biz, int position, Object data ); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoBizActionDoneListener.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoBizActionDoneListener.java new file mode 100644 index 0000000000..c4a349df8e --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoBizActionDoneListener.java @@ -0,0 +1,17 @@ +package com.mogo.service.module; + +/** + * @author congtaowang + * @since 2020-03-12 + *
+ * 业务回调各自的当前动作 + */ +public interface IMogoBizActionDoneListener { + + /** + * @param biz 业务 + * @param position 位置 + * @param data 数据 + */ + void onBizActionDone( String biz, int position, Object data ); +} diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java index 62f0fd3466..8edffef86e 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java @@ -22,6 +22,7 @@ import com.mogo.service.impl.singleton.SingletonsHolder; import com.mogo.service.intent.IMogoIntentManager; import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoActionManager; +import com.mogo.service.module.IMogoAddressManager; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.module.IMogoSearchManager; import com.mogo.service.module.IMogoSettingManager; @@ -141,6 +142,11 @@ public class MogoServiceApis implements IMogoServiceApis { return getApiInstance( IMogoRefreshStrategyController.class, MogoServicePaths.PATH_REFRESH_STRATEGY_API ); } + @Override + public IMogoAddressManager getAddressManagerApi() { + return getApiInstance( IMogoAddressManager.class, MogoServicePaths.PATH_ADDRESS_MANAGER ); + } + private static < T extends IProvider > T getApiInstance( Class< T > clazz, String path ) { T inst = SingletonsHolder.get( clazz ); if ( inst == null ) {