diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java index 7c2e398fc1..2d1ad1fcd4 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java @@ -454,6 +454,8 @@ public class AMapNaviViewWrapper implements IMogoMapView, IMogoMapUIController, @Override public void onCameraChangeFinish( CameraPosition cameraPosition ) { - + if ( cameraPosition != null ) { + MogoMapListenerHandler.getInstance().onMapChanged( ObjectUtils.fromAMap( cameraPosition.target ), cameraPosition.zoom, cameraPosition.tilt, cameraPosition.bearing ); + } } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoLatLng.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoLatLng.java index cfa48c3326..6506a710d6 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoLatLng.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/MogoLatLng.java @@ -46,4 +46,12 @@ public class MogoLatLng implements Parcelable { return new MogoLatLng[size]; } }; + + @Override + public String toString() { + return "MogoLatLng{" + + "lat=" + lat + + ", lng=" + lng + + '}'; + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/IMogoMapListener.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/IMogoMapListener.java index 179b61a236..13f5e3ac4a 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/IMogoMapListener.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/IMogoMapListener.java @@ -3,6 +3,7 @@ package com.mogo.map.listener; import android.view.MotionEvent; import com.mogo.map.MogoLatLng; +import com.mogo.map.location.MogoLocation; import com.mogo.map.model.MogoPoi; import com.mogo.map.uicontroller.EnumMapUI; @@ -53,4 +54,12 @@ public interface IMogoMapListener { * @param ui */ void onMapModeChanged( EnumMapUI ui ); + + /** + * @param latLng 中点的经纬度 + * @param zoom 缩放大小 + * @param tilt 倾斜度 + * @param bearing 旋转角度 + */ + void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing ); } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/MogoMapListenerHandler.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/MogoMapListenerHandler.java index 01de8f6d06..5c90b7de00 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/MogoMapListenerHandler.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/listener/MogoMapListenerHandler.java @@ -3,6 +3,7 @@ package com.mogo.map.listener; import android.view.MotionEvent; import com.mogo.map.MogoLatLng; +import com.mogo.map.location.MogoLocation; import com.mogo.map.model.MogoPoi; import com.mogo.map.navi.MogoNaviInfo; import com.mogo.map.uicontroller.EnumMapUI; @@ -103,4 +104,13 @@ public class MogoMapListenerHandler implements IMogoMapListener, IMogoMapListene } } } + + @Override + public void onMapChanged( MogoLatLng location, float zoom, float tilt, float bearing ) { + if ( mDelegateListener != null ) { + synchronized ( mDelegateListener ) { + mDelegateListener.onMapChanged( location, zoom, tilt, bearing ); + } + } + } } diff --git a/modules/mogo-module-main/build.gradle b/modules/mogo-module-main/build.gradle index 94a1bc9cce..a71f6f86bd 100644 --- a/modules/mogo-module-main/build.gradle +++ b/modules/mogo-module-main/build.gradle @@ -42,6 +42,7 @@ dependencies { implementation rootProject.ext.dependencies.modulemap implementation rootProject.ext.dependencies.mogoserviceapi implementation rootProject.ext.dependencies.mogoservice + implementation rootProject.ext.dependencies.moduleservice implementation rootProject.ext.dependencies.moduleapps implementation rootProject.ext.dependencies.mogoconnection } else { @@ -49,6 +50,7 @@ dependencies { implementation project(":foudations:mogo-commons") implementation project(':modules:mogo-module-common') implementation project(':modules:mogo-module-map') + implementation project(':modules:mogo-module-service') implementation project(':services:mogo-service-api') implementation project(':services:mogo-service') implementation project(':modules:mogo-module-apps') 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 033bd5ad8a..2b1d9e1788 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 @@ -125,7 +125,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme mLocationClient.addLocationListener( this ); mLocationClient.start(); - mMogoModuleHandler.loadPushService(); + mMogoModuleHandler.loadService(); mMogoModuleHandler.loadAppsList( R.id.module_main_id_fragment_container ); } 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 b031e12a7f..3af3371447 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 @@ -67,9 +67,9 @@ public interface MogoModulesHandler extends IMogoMapListener, void setEnable( String module ); /** - * 加载 push 服务 + * 加载服务 */ - void loadPushService(); + void loadService(); /** * 销毁 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 36035d868b..87b110ef7b 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 @@ -22,6 +22,7 @@ import com.mogo.module.common.MogoModule; import com.mogo.module.common.MogoModulePaths; import com.mogo.module.main.MainActivity; import com.mogo.module.main.receiver.MogoReceiver; +import com.mogo.module.service.ServiceConst; import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.service.module.IMogoModuleProvider; import com.mogo.utils.ResourcesHelper; @@ -47,9 +48,13 @@ public class MogoModulesManager implements MogoModulesHandler, private static final String TAG = "MogoModulesManager"; private MainActivity mActivity; + private final Map< String, IMogoModuleProvider > mCardProviders = new HashMap<>(); private IMogoModuleProvider mMapProvider; private IMogoModuleProvider mAppsListProvider; + private IMogoModuleProvider mPushProvider; + private IMogoModuleProvider mRefreshStrategyProvider; + private String mEnableModuleName = null; private Runnable mMapLoadedCallback; @@ -136,13 +141,9 @@ public class MogoModulesManager implements MogoModulesHandler, } @Override - public void loadPushService() { - IMogoModuleProvider provider = ( IMogoModuleProvider ) ARouter.getInstance().build( "/push/ui" ).navigation( mActivity.getApplicationContext() ); - if ( provider != null ) { - if ( provider.getType() == IMogoModuleProvider.TYPE_SERVICE ) { - - } - } + public void loadService() { + mPushProvider = ( IMogoModuleProvider ) ARouter.getInstance().build( "/push/ui" ).navigation( mActivity.getApplicationContext() ); + mRefreshStrategyProvider = ( IMogoModuleProvider ) ARouter.getInstance().build( ServiceConst.PATH_REFRESH_STRATEGY ).navigation( mActivity.getApplicationContext() ); } @Override @@ -180,6 +181,12 @@ public class MogoModulesManager implements MogoModulesHandler, provider.getMapListener().onMapLoaded(); } } + + if ( mRefreshStrategyProvider != null ) { + if ( mRefreshStrategyProvider.getMapListener() != null ) { + mRefreshStrategyProvider.getMapListener().onMapLoaded(); + } + } } @Override @@ -190,6 +197,11 @@ public class MogoModulesManager implements MogoModulesHandler, provider.getMapListener().onTouch( motionEvent ); } } + if ( mRefreshStrategyProvider != null ) { + if ( mRefreshStrategyProvider.getMapListener() != null ) { + mRefreshStrategyProvider.getMapListener().onTouch( motionEvent ); + } + } } @Override @@ -200,6 +212,12 @@ public class MogoModulesManager implements MogoModulesHandler, provider.getMapListener().onPOIClick( poi ); } } + + if ( mRefreshStrategyProvider != null ) { + if ( mRefreshStrategyProvider.getMapListener() != null ) { + mRefreshStrategyProvider.getMapListener().onPOIClick( poi ); + } + } } @Override @@ -210,6 +228,12 @@ public class MogoModulesManager implements MogoModulesHandler, provider.getMapListener().onMapClick( latLng ); } } + + if ( mRefreshStrategyProvider != null ) { + if ( mRefreshStrategyProvider.getMapListener() != null ) { + mRefreshStrategyProvider.getMapListener().onMapClick( latLng ); + } + } } @Override @@ -220,6 +244,12 @@ public class MogoModulesManager implements MogoModulesHandler, provider.getMapListener().onLockMap( isLock ); } } + + if ( mRefreshStrategyProvider != null ) { + if ( mRefreshStrategyProvider.getMapListener() != null ) { + mRefreshStrategyProvider.getMapListener().onLockMap( isLock ); + } + } } @Override @@ -230,6 +260,21 @@ public class MogoModulesManager implements MogoModulesHandler, provider.getMapListener().onMapModeChanged( ui ); } } + + if ( mRefreshStrategyProvider != null ) { + if ( mRefreshStrategyProvider.getMapListener() != null ) { + mRefreshStrategyProvider.getMapListener().onMapModeChanged( ui ); + } + } + } + + @Override + public void onMapChanged( MogoLatLng location, float zoom, float tilt, float bearing ) { + if ( mRefreshStrategyProvider != null ) { + if ( mRefreshStrategyProvider.getMapListener() != null ) { + mRefreshStrategyProvider.getMapListener().onMapChanged( location, zoom, tilt, bearing ); + } + } } @Override @@ -240,6 +285,12 @@ public class MogoModulesManager implements MogoModulesHandler, provider.getNaviListener().onInitNaviFailure(); } } + + if ( mRefreshStrategyProvider != null ) { + if ( mRefreshStrategyProvider.getNaviListener() != null ) { + mRefreshStrategyProvider.getNaviListener().onInitNaviFailure(); + } + } } @Override @@ -250,6 +301,12 @@ public class MogoModulesManager implements MogoModulesHandler, provider.getNaviListener().onInitNaviSuccess(); } } + + if ( mRefreshStrategyProvider != null ) { + if ( mRefreshStrategyProvider.getNaviListener() != null ) { + mRefreshStrategyProvider.getNaviListener().onInitNaviSuccess(); + } + } } @Override @@ -260,6 +317,12 @@ public class MogoModulesManager implements MogoModulesHandler, provider.getNaviListener().onNaviInfoUpdate( naviinfo ); } } + + if ( mRefreshStrategyProvider != null ) { + if ( mRefreshStrategyProvider.getNaviListener() != null ) { + mRefreshStrategyProvider.getNaviListener().onNaviInfoUpdate( naviinfo ); + } + } } @Override @@ -271,6 +334,12 @@ public class MogoModulesManager implements MogoModulesHandler, provider.getNaviListener().onStartNavi(); } } + + if ( mRefreshStrategyProvider != null ) { + if ( mRefreshStrategyProvider.getNaviListener() != null ) { + mRefreshStrategyProvider.getNaviListener().onStartNavi(); + } + } } @Override @@ -282,6 +351,12 @@ public class MogoModulesManager implements MogoModulesHandler, provider.getNaviListener().onStopNavi(); } } + + if ( mRefreshStrategyProvider != null ) { + if ( mRefreshStrategyProvider.getNaviListener() != null ) { + mRefreshStrategyProvider.getNaviListener().onStopNavi(); + } + } } @Override @@ -292,6 +367,12 @@ public class MogoModulesManager implements MogoModulesHandler, provider.getLocationListener().onLocationChanged( location ); } } + + if ( mRefreshStrategyProvider != null ) { + if ( mRefreshStrategyProvider.getLocationListener() != null ) { + mRefreshStrategyProvider.getLocationListener().onLocationChanged( location ); + } + } } public void registerReceiver() { diff --git a/modules/mogo-module-service/build.gradle b/modules/mogo-module-service/build.gradle index cbeefd1b89..c399d844da 100644 --- a/modules/mogo-module-service/build.gradle +++ b/modules/mogo-module-service/build.gradle @@ -12,6 +12,13 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' + + javaCompileOptions { + annotationProcessorOptions { + arguments = [AROUTER_MODULE_NAME: project.getName()] + } + } + } buildTypes { diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoRefreshStrategyProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoRefreshStrategyProvider.java new file mode 100644 index 0000000000..7bbf4a167c --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoRefreshStrategyProvider.java @@ -0,0 +1,148 @@ +package com.mogo.module.service; + + +import android.app.Service; +import android.content.Context; +import android.os.Bundle; +import android.view.MotionEvent; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; + +import com.alibaba.android.arouter.facade.annotation.Route; +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.model.MogoPoi; +import com.mogo.map.navi.IMogoNaviListener; +import com.mogo.map.navi.MogoNaviInfo; +import com.mogo.map.uicontroller.EnumMapUI; +import com.mogo.service.module.IMogoModuleLifecycle; +import com.mogo.service.module.IMogoModuleProvider; +import com.mogo.utils.logger.Logger; + +/** + * @author congtaowang + * @since 2020-01-03 + *

+ * 数据刷新策略 + */ +@Route( path = ServiceConst.PATH_REFRESH_STRATEGY ) +public class MogoRefreshStrategyProvider implements IMogoModuleProvider, IMogoMapListener, IMogoLocationListener, IMogoNaviListener { + + private static final String TAG = "MogoRefreshStrategyProvider"; + + @Override + public final Fragment createFragment( Context context, Bundle data ) { + return null; + } + + @Override + public final View createView( Context context ) { + return null; + } + + @Override + public final IMogoModuleLifecycle getCardLifecycle() { + return null; + } + + @Override + public IMogoMapListener getMapListener() { + return this; + } + + @Override + public int getType() { + return TYPE_SERVICE; + } + + @Override + public IMogoNaviListener getNaviListener() { + return this; + } + + @Override + public IMogoLocationListener getLocationListener() { + return this; + } + + @NonNull + @Override + public String getModuleName() { + return ServiceConst.PATH_REFRESH_STRATEGY; + } + + @Override + public void init( Context context ) { + + } + + + @Override + public void onMapLoaded() { + + } + + @Override + public void onTouch( MotionEvent motionEvent ) { + + } + + @Override + public void onPOIClick( MogoPoi poi ) { + + } + + @Override + public void onMapClick( MogoLatLng latLng ) { + + } + + @Override + public void onLockMap( boolean isLock ) { + + } + + @Override + public void onMapModeChanged( EnumMapUI ui ) { + + } + + @Override + public void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing ) { + Logger.d( TAG, "current map status: %s, zoom = %f, tilt = %f, bearing = %f", latLng, zoom, tilt, bearing ); + } + + @Override + public void onLocationChanged( MogoLocation location ) { + + } + + @Override + public void onInitNaviFailure() { + + } + + @Override + public void onInitNaviSuccess() { + + } + + @Override + public void onNaviInfoUpdate( MogoNaviInfo naviinfo ) { + + } + + @Override + public void onStartNavi() { + + } + + @Override + public void onStopNavi() { + + } +} diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java deleted file mode 100644 index 46e93190ce..0000000000 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.mogo.module.service; - - -import android.app.Service; -import android.content.Context; -import android.os.Bundle; -import android.view.View; - -import androidx.fragment.app.Fragment; - -import com.mogo.map.listener.IMogoMapListener; -import com.mogo.map.location.IMogoLocationListener; -import com.mogo.map.navi.IMogoNaviListener; -import com.mogo.service.module.IMogoModuleLifecycle; -import com.mogo.service.module.IMogoModuleProvider; - -/** - * @author congtaowang - * @since 2020-01-03 - *

- * service 服务:负责数据上传策略 - */ -public abstract class MogoServiceProvider extends Service implements IMogoModuleProvider { - - @Override - public final Fragment createFragment( Context context, Bundle data ) { - return null; - } - - @Override - public final View createView( Context context ) { - return null; - } - - @Override - public final IMogoModuleLifecycle getCardLifecycle() { - return null; - } - - @Override - public IMogoMapListener getMapListener() { - return null; - } - - @Override - public int getType() { - return TYPE_SERVICE; - } - - @Override - public IMogoNaviListener getNaviListener() { - return null; - } - - @Override - public IMogoLocationListener getLocationListener() { - return null; - } -} diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java new file mode 100644 index 0000000000..639a087433 --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java @@ -0,0 +1,15 @@ +package com.mogo.module.service; + +/** + * @author congtaowang + * @since 2020-01-03 + *

+ * 描述 + */ +public class ServiceConst { + + /** + * 刷新策略模块地址 + */ + public static final String PATH_REFRESH_STRATEGY = "/strategy/refresh"; +} diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluCardViewFragment.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluCardViewFragment.java index 0574686539..26d424d0c1 100644 --- a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluCardViewFragment.java +++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/TanluCardViewFragment.java @@ -278,6 +278,11 @@ public class TanluCardViewFragment extends MvpFragment> Logger.d(TAG, ui.name()); } + @Override + public void onMapChanged( MogoLatLng location, float zoom, float tilt, float bearing ) { + + } + @Override public void onDestroyView() { Logger.w(TAG, "onDestroyView position=" + position); diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluCardViewFragment.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluCardViewFragment.java index 021cd4bfe6..4b216aeea4 100644 --- a/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluCardViewFragment.java +++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/tanlu/fragment/TanluCardViewFragment.java @@ -59,8 +59,6 @@ public class TanluCardViewFragment extends MvpFragment> private Bitmap mClickedMarkerIcon; private TextView mLocInfo; private TextView mLoc; - private Button m2D3D; - private CheckBox mNaviMode; private IMogoMarker mLastClickedMarker; private TanluInfoWindowAdapter mDemoInfoWindowAdapter; @@ -142,16 +140,6 @@ public class TanluCardViewFragment extends MvpFragment> } }); - m2D3D.setOnClickListener(new View.OnClickListener() { - private EnumMapUI ui = EnumMapUI.NorthUP_2D; - - @Override - public void onClick(View v) { - TanluServiceHandler.getMapUIController().changeMapMode(ui = ui.next()); - m2D3D.setText(ui.toString()); - } - }); - findViewById(R.id.demo_module_id_current).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -283,6 +271,11 @@ public class TanluCardViewFragment extends MvpFragment> Logger.d(TAG, ui.name()); } + @Override + public void onMapChanged( MogoLatLng location, float zoom, float tilt, float bearing ) { + + } + @Override public void onDestroyView() { Logger.w(TAG, "onDestroyView position=" + position);