diff --git a/app/build.gradle b/app/build.gradle index 4d3fc0e9b1..afb298b173 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,11 +4,11 @@ android { compileSdkVersion rootProject.ext.android.compileSdkVersion buildToolsVersion rootProject.ext.android.buildToolsVersion defaultConfig { - applicationId rootProject.ext.android.applicationId minSdkVersion rootProject.ext.android.minSdkVersion targetSdkVersion rootProject.ext.android.targetSdkVersion versionCode rootProject.ext.android.versionCode versionName rootProject.ext.android.versionName + applicationId rootProject.ext.android.applicationId testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" javaCompileOptions { @@ -54,6 +54,18 @@ dependencies { testImplementation rootProject.ext.dependencies.leakcanary releaseImplementation rootProject.ext.dependencies.leakcanarynoop releaseImplementation rootProject.ext.dependencies.androidxmultidex - implementation project(':modules:mogo-module-main') - implementation project(':foudations:mogo-commons') + + if (Boolean.valueOf(RELEASE)) { + api rootProject.ext.dependencies.modulemain + api rootProject.ext.dependencies.mogocommons + implementation rootProject.ext.dependencies.moduledemo + implementation rootProject.ext.dependencies.moduledemo2 + implementation rootProject.ext.dependencies.modulecommon + } else { + implementation project(':modules:mogo-module-main') + implementation project(':foudations:mogo-commons') + implementation project(':modules:mogo-module-common') + implementation project(':demo:demo-module-map') + implementation project(':demo:demo-module-map2') + } } diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 906b5259e6..2754e27346 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -1,11 +1,13 @@ package com.mogo.launcher; -import android.app.Application; import android.content.Context; import androidx.multidex.MultiDex; import com.mogo.commons.AbsMogoApplication; +import com.mogo.demo.module.map.DemoConstants; +import com.mogo.demo.module.map2.Demo2Constants; +import com.mogo.module.common.MogoModulePaths; /** * @author congtaowang @@ -24,5 +26,7 @@ public class MogoApplication extends AbsMogoApplication { protected void attachBaseContext( Context base ) { super.attachBaseContext( base ); MultiDex.install( base ); + MogoModulePaths.addModule( DemoConstants.TAG ); + MogoModulePaths.addModule( Demo2Constants.TAG ); } } diff --git a/build.gradle b/build.gradle index f672c71300..51e13205f9 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,6 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. apply from: "config.gradle" +apply from: "javadoc.gradle" buildscript { ext.kotlin_version = '1.3.61+' repositories { @@ -38,14 +39,51 @@ allprojects { google() jcenter() // flatDir { - // 由于Library module中引用了 youkuplayer 库的 aar,在多 module 的情况下, - // 其他的module编译会报错,所以需要在所有工程的repositories - // 下把Library module中的libs目录添加到依赖关系中 + // 由于Library module中引用了 youkuplayer 库的 aar,在多 module 的情况下, + // 其他的module编译会报错,所以需要在所有工程的repositories + // 下把Library module中的libs目录添加到依赖关系中 // dirs project(':libraries:map-baidu').file('libs') // } } + } task clean(type: Delete) { delete rootProject.buildDir } + +def getValueFromRootProperties(String key) { + File file = rootProject.file('gradle.properties') + String value = ""; + if (file.exists()) { + //加载资源 + InputStream inputStream = file.newDataInputStream(); + Properties properties = new Properties() + properties.load(inputStream) + + if (properties.containsKey(key)) { + value = properties.getProperty(key) + } + } + return value +} + +afterEvaluate { + rootProject.subprojects { project -> + project.afterEvaluate { + dependencies{ + components { + all { ComponentMetadataDetails details -> + if (details.toString().endsWith("-SNAPSHOT")) { + details.changing = true + } + } + } + } + it.configurations.all { + resolutionStrategy.cacheChangingModulesFor 0, 'minutes' + } + + } + } +} \ No newline at end of file diff --git a/config.gradle b/config.gradle index 1282f4dd36..0bffaa2dd2 100644 --- a/config.gradle +++ b/config.gradle @@ -1,57 +1,57 @@ ext { - android = [ - applicationId: "com.mogo.launcher", - compileSdkVersion: 29, - buildToolsVersion: "29.0.2", - minSdkVersion: 19, - targetSdkVersion: 22, - versionCode: 1, - versionName: "1.0.0", - ] + android = [ + applicationId : "com.mogo.launcher", + compileSdkVersion: 29, + buildToolsVersion: "29.0.2", + minSdkVersion : 19, + targetSdkVersion : 22, + versionCode : 1, + versionName : "1.0.0", + ] - dependencies = [ - // androidx - androidxappcompat: "androidx.appcompat:appcompat:1.0.2", - androidxconstraintlayout: "androidx.constraintlayout:constraintlayout:1.1.3", - androidxmultidex: "androidx.multidex:multidex:2.0.1", - // 测试 - junit: "junit:junit:4.12", - androidxjunit: "androidx.test.ext:junit:1.1.0", - androidxespressocore: "androidx.test.espresso:espresso-core:3.1.1", - // 地图 - amapnavi3dmap: "com.amap.api:navi-3dmap:latest.integration", - amapsearch: "com.amap.api:search:latest.integration", - amaplocation: "com.amap.api:location:latest.integration", - // json 转换 - gson: "com.google.code.gson:gson:2.8.4", - // 内存泄漏检测 - debugleakcanary: "com.squareup.leakcanary:leakcanary-android:1.6.1", - releaseleakcanary: "com.squareup.leakcanary:leakcanary-android-no-op:1.6.1", - testleakcanary: "com.squareup.leakcanary:leakcanary-android-no-op:1.6.1", - //rxJava - rxjava: "io.reactivex.rxjava2:rxjava:2.2.2", - rxandroid: "io.reactivex.rxjava2:rxandroid:2.1.0", - // arouter - arouter: "com.alibaba:arouter-api:1.5.0", - aroutercompiler: "com.alibaba:arouter-compiler:1.2.2", - // glide - glide: 'com.github.bumptech.glide:glide:4.8.0', - glideokhttp3: 'com.github.bumptech.glide:okhttp3-integration:4.8.0', - glideanno: 'com.github.bumptech.glide:annotations:4.8.0', - glidecompiler: 'com.github.bumptech.glide:compiler:4.8.0', - supportannos: "com.android.support:support-annotations:28.0.0", - // fresco - fresco: 'com.facebook.fresco:fresco:1.1.0', - // 公司服务 - 语音 - aiassist: "com.zhidaoauto.common:service:1.0.4", - // 公司服务 - 埋点 - analytics: "com.elegant.analytics:analytics:1.1.19", + dependencies = [ + // androidx + androidxappcompat : "androidx.appcompat:appcompat:1.0.2", + androidxconstraintlayout: "androidx.constraintlayout:constraintlayout:1.1.3", + androidxmultidex : "androidx.multidex:multidex:2.0.1", + // 测试 + junit : "junit:junit:4.12", + androidxjunit : "androidx.test.ext:junit:1.1.0", + androidxespressocore : "androidx.test.espresso:espresso-core:3.1.1", + // 地图 + amapnavi3dmap : "com.amap.api:navi-3dmap:latest.integration", + amapsearch : "com.amap.api:search:latest.integration", + amaplocation : "com.amap.api:location:latest.integration", + // json 转换 + gson : "com.google.code.gson:gson:2.8.4", + // 内存泄漏检测 + debugleakcanary : "com.squareup.leakcanary:leakcanary-android:1.6.1", + releaseleakcanary : "com.squareup.leakcanary:leakcanary-android-no-op:1.6.1", + testleakcanary : "com.squareup.leakcanary:leakcanary-android-no-op:1.6.1", + //rxJava + rxjava : "io.reactivex.rxjava2:rxjava:2.2.2", + rxandroid : "io.reactivex.rxjava2:rxandroid:2.1.0", + // arouter + arouter : "com.alibaba:arouter-api:1.5.0", + aroutercompiler : "com.alibaba:arouter-compiler:1.2.2", + // glide + glide : 'com.github.bumptech.glide:glide:4.8.0', + glideokhttp3 : 'com.github.bumptech.glide:okhttp3-integration:4.8.0', + glideanno : 'com.github.bumptech.glide:annotations:4.8.0', + glidecompiler : 'com.github.bumptech.glide:compiler:4.8.0', + supportannos : "com.android.support:support-annotations:28.0.0", + // fresco + fresco : 'com.facebook.fresco:fresco:1.1.0', + // 公司服务 - 语音 + aiassist : "com.zhidaoauto.common:service:1.0.4", + // 公司服务 - 埋点 + analytics : "com.elegant.analytics:analytics:1.1.19", - // retrofit - retrofit: "com.squareup.retrofit2:retrofit:2.3.0", - retrofitadapter: "com.squareup.retrofit2:adapter-rxjava:2.1.0", - retrofitconvertergson: "com.squareup.retrofit2:converter-gson:2.3.0", - retrofitconverterscalars: "com.squareup.retrofit2:converter-scalars:2.1.0", + // retrofit + retrofit : "com.squareup.retrofit2:retrofit:2.3.0", + retrofitadapter : "com.squareup.retrofit2:adapter-rxjava:2.1.0", + retrofitconvertergson : "com.squareup.retrofit2:converter-gson:2.3.0", + retrofitconverterscalars: "com.squareup.retrofit2:converter-scalars:2.1.0", // leakcanary leakcanary: 'com.squareup.leakcanary:leakcanary-android:1.5.4', @@ -62,7 +62,30 @@ ext { roomAnnotationProcessor: 'android.arch.persistence.room:compiler:1.1.1', // rxjava2 with room - roomRxjava: "android.arch.persistence.room:rxjava2:1.1.1" + roomRxjava: "android.arch.persistence.room:rxjava2:1.1.1", - ] + + // leakcanary + leakcanary : 'com.squareup.leakcanary:leakcanary-android:1.5.4', + leakcanarynoop : 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4', + + // material + material : 'com.google.android.material:material:1.0.0', + + + // modules + moduledemo : "com.mogo.module:module-demo:${DEMO_MODULE_MAP_VERSION}", + moduledemo2 : "com.mogo.module:module-demo2:${DEMO_MODULE_MAP2_VERSION}", + mogocommons : "com.mogo.commons:mogo-commons:${MOGO_COMMONS_VERSION}", + mogoutils : "com.mogo.commons:mogo-utils:${MOGO_UTILS_VERSION}", + mapamap : "com.mogo.map:map-amap:${MAP_AMAP_VERSION}", + mogomap : "com.mogo.map:mogo-map:${MOGO_MAP_VERSION}", + mogomapapi : "com.mogo.map:mogo-map-api:${MOGO_MAP_API_VERSION}", + modulecommon : "com.mogo.module:module-common:${MOGO_MODULE_COMMON_VERSION}", + modulemain : "com.mogo.module:module-main:${MOGO_MODULE_MAIN_VERSION}", + modulemap : "com.mogo.module:module-map:${MOGO_MODULE_MAP_VERSION}", + mogoservice : "com.mogo.service:mogo-service:${MOGO_SERVICE_VERSION}", + mogoserviceapi : "com.mogo.service:mogo-service-api:${MOGO_SERVICE_API_VERSION}", + moduleapps : "com.mogo.module:module-apps:${MOGO_MODULE_APPS_VERSION}", + ] } \ No newline at end of file diff --git a/demo/demo-module-map/build.gradle b/demo/demo-module-map/build.gradle index 0290a16845..4cdc37ad48 100644 --- a/demo/demo-module-map/build.gradle +++ b/demo/demo-module-map/build.gradle @@ -2,15 +2,13 @@ apply plugin: 'com.android.library' apply plugin: 'com.alibaba.arouter' android { - compileSdkVersion 29 - buildToolsVersion "29.0.2" - - + compileSdkVersion rootProject.ext.android.compileSdkVersion + buildToolsVersion rootProject.ext.android.buildToolsVersion defaultConfig { - minSdkVersion 19 - targetSdkVersion 29 - versionCode 1 - versionName "1.0" + minSdkVersion rootProject.ext.android.minSdkVersion + targetSdkVersion rootProject.ext.android.targetSdkVersion + versionCode Integer.valueOf(VERSION_CODE) + versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION") testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' @@ -34,13 +32,22 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation project(":libraries:mogo-map") - implementation project(":foudations:mogo-utils") - api project(":foudations:mogo-commons") - implementation project(':services:mogo-service-api') - implementation project(':modules:mogo-module-common') + if (Boolean.valueOf(RELEASE)) { + implementation rootProject.ext.dependencies.mogomap + implementation rootProject.ext.dependencies.mogoutils + implementation rootProject.ext.dependencies.mogocommons + implementation rootProject.ext.dependencies.mogoserviceapi + implementation rootProject.ext.dependencies.modulecommon + } else { + implementation project(":libraries:mogo-map") + implementation project(":foudations:mogo-utils") + api project(":foudations:mogo-commons") + implementation project(':services:mogo-service-api') + implementation project(':modules:mogo-module-common') + } implementation rootProject.ext.dependencies.androidxappcompat implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.arouter annotationProcessor rootProject.ext.dependencies.aroutercompiler } +apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString() diff --git a/demo/demo-module-map/gradle.properties b/demo/demo-module-map/gradle.properties new file mode 100644 index 0000000000..cc80da2676 --- /dev/null +++ b/demo/demo-module-map/gradle.properties @@ -0,0 +1,3 @@ +GROUP=com.mogo.module +POM_ARTIFACT_ID=module-demo +VERSION_CODE=1 diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java index 5845a754b9..9f9da9fd52 100644 --- a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java +++ b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java @@ -1,11 +1,8 @@ package com.mogo.demo.module.map; -import android.app.AlertDialog; -import android.content.DialogInterface; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; -import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.widget.Button; @@ -15,30 +12,21 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.mvp.IView; import com.mogo.commons.mvp.MvpFragment; import com.mogo.commons.mvp.Presenter; import com.mogo.map.MogoLatLng; import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.location.IMogoLocationListener; -import com.mogo.map.location.IMogoLocationClient; 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.model.MogoPoi; -import com.mogo.map.navi.IMogoNavi; import com.mogo.map.search.geo.MogoPoiItem; -import com.mogo.map.search.poisearch.IMogoPoiSearch; import com.mogo.map.search.poisearch.IMogoPoiSearchListener; import com.mogo.map.search.poisearch.MogoPoiResult; -import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery; import com.mogo.map.uicontroller.EnumMapUI; -import com.mogo.map.uicontroller.IMogoMapUIController; -import com.mogo.service.MogoServicePaths; -import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.utils.TipToast; import com.mogo.utils.logger.Logger; @@ -67,6 +55,8 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > private Button mAddMarker; private Button mAddMarkers; + private static IMogoMarker mLastClickedMarker; + private Bitmap mMarkerIcon; private Bitmap mClickedMarkerIcon; private TextView mLocInfo; @@ -74,16 +64,10 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > private Button m2D3D; private CheckBox mNaviMode; - private IMogoMarker mLastClickedMarker; - - private IMogoMapService mMapService; - private IMogoPoiSearch mPoiSearch; - private IMogoLocationClient mLocationClient; - private IMogoMarkerManager mMarkerManager; - private IMogoNavi mNavi; - private IMogoMapUIController mMapUIController; - private DemoInfoWindowAdapter mDemoInfoWindowAdapter; + private MogoLocation mLocation; + + private int position = -1; @Override protected int getLayoutId() { @@ -93,17 +77,12 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override protected void initViews() { + position = getArguments().getInt( "position" ); + mNaviMode = findViewById( R.id.demo_module_id_navi_mode ); - mMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( getContext() ); - mPoiSearch = mMapService.getPoiSearch( getContext(), new MogoPoiSearchQuery() ); - mPoiSearch.setPoiSearchListener( this ); - mLocationClient = mMapService.getSingletonLocationClient( getContext() ); - mLocationClient.addLocationListener( this ); - mMarkerManager = mMapService.getMarkerManager( getContext() ); - mNavi = mMapService.getNavi( getContext() ); - mMapUIController = mMapService.getMapUIController(); - + ServiceHandler.getPoiSearch().setPoiSearchListener( this ); + mLocation = ServiceHandler.getLocationClient().getLastKnowLocation(); m2D3D = findViewById( R.id.demo_module_id_2d3d ); mLocInfo = findViewById( R.id.demo_module_id_loc_info ); @@ -112,12 +91,12 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > new View.OnClickListener() { @Override public void onClick( View v ) { - mLocationClient.start( 1_000L ); + ServiceHandler.getLocationClient().start( 4_000L ); } } ); - mDemoInfoWindowAdapter = new DemoInfoWindowAdapter( getContext(), mNavi ); + mDemoInfoWindowAdapter = new DemoInfoWindowAdapter( getContext(), ServiceHandler.getNavi(), ServiceHandler.getImageloader() ); mMarkerIcon = BitmapFactory.decodeResource( getResources(), R.drawable.ic_search_poi_location ); mClickedMarkerIcon = BitmapFactory.decodeResource( getResources(), R.drawable.ic_search_choice_point ); @@ -128,8 +107,9 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > MogoMarkerOptions options = new MogoMarkerOptions() .icon( mMarkerIcon ) .latitude( 39.974525d ) + .owner( DemoConstants.TAG ) .longitude( 116.41733d ); - IMogoMarker marker = mMarkerManager.addMarker( DemoConstants.TAG, options ); + IMogoMarker marker = ServiceHandler.getMarkerManager().addMarker( DemoConstants.TAG, options ); marker.setInfoWindowAdapter( mDemoInfoWindowAdapter ); marker.setOnMarkerClickListener( DemoCardViewFragment.this ); } @@ -142,12 +122,17 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > ArrayList< MogoMarkerOptions > optionsList = new ArrayList<>(); for ( int i = 0; i < 10; i++ ) { MogoMarkerOptions options = new MogoMarkerOptions() - .icon( mMarkerIcon ) + .owner( DemoConstants.TAG ) .latitude( 39.974525d + new Random().nextDouble() ) .longitude( 116.41733d + new Random().nextDouble() ); + if ( i % 2 == 0 ) { + options.icon( mMarkerIcon ); + } else { + options.icon( mDemoInfoWindowAdapter.getMarkerView( options ) ); + } optionsList.add( options ); } - List< IMogoMarker > iMogoMarkers = mMarkerManager.addMarkers( DemoConstants.TAG, optionsList, true ); + List< IMogoMarker > iMogoMarkers = ServiceHandler.getMarkerManager().addMarkers( DemoConstants.TAG, optionsList, true ); for ( IMogoMarker iMogoMarker : iMogoMarkers ) { iMogoMarker.setInfoWindowAdapter( mDemoInfoWindowAdapter ); iMogoMarker.setOnMarkerClickListener( DemoCardViewFragment.this ); @@ -158,7 +143,7 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > findViewById( R.id.demo_module_id_clear ).setOnClickListener( new View.OnClickListener() { @Override public void onClick( View v ) { - mMarkerManager.removeMarkers( DemoConstants.TAG ); + ServiceHandler.getMarkerManager().removeMarkers( DemoConstants.TAG ); } } ); @@ -168,7 +153,7 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public void onClick( View v ) { - mMapUIController.changeMapMode( ui = ui.next() ); + ServiceHandler.getMapUIController().changeMapMode( ui = ui.next() ); m2D3D.setText( ui.toString() ); } } ); @@ -176,21 +161,21 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > findViewById( R.id.demo_module_id_current ).setOnClickListener( new View.OnClickListener() { @Override public void onClick( View v ) { - mMapUIController.moveToCurrentLocation(); + ServiceHandler.getMapUIController().moveToCenter( new MogoLatLng( mLocation.getLatitude(), mLocation.getLongitude() ) ); } } ); findViewById( R.id.demo_module_id_start_navi ).setOnClickListener( new View.OnClickListener() { @Override public void onClick( View v ) { - mNavi.startNavi( !mNaviMode.isChecked() ); + ServiceHandler.getNavi().startNavi( !mNaviMode.isChecked() ); } } ); findViewById( R.id.demo_module_id_stop_navi ).setOnClickListener( new View.OnClickListener() { @Override public void onClick( View v ) { - mNavi.stopNavi(); + ServiceHandler.getNavi().stopNavi(); } } ); @@ -200,7 +185,7 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public void onClick( View v ) { - mMapUIController.setTrafficEnabled( enable = !enable ); + ServiceHandler.getMapUIController().setTrafficEnabled( enable = !enable ); } } ); @@ -208,7 +193,7 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public void onClick( View v ) { - mMapUIController.changeZoom( true ); + ServiceHandler.getMapUIController().changeZoom( true ); } } ); @@ -216,7 +201,7 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public void onClick( View v ) { - mMapUIController.changeZoom( false ); + ServiceHandler.getMapUIController().changeZoom( false ); } } ); @@ -224,7 +209,7 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public void onClick( View v ) { - mMapUIController.changeMapMode( EnumMapUI.Type_Light ); + ServiceHandler.getMapUIController().changeMapMode( EnumMapUI.Type_Light ); } } ); @@ -232,7 +217,7 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public void onClick( View v ) { - mMapUIController.changeMapMode( EnumMapUI.Type_Night ); + ServiceHandler.getMapUIController().changeMapMode( EnumMapUI.Type_Night ); } } ); @@ -240,7 +225,7 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public void onClick( View v ) { - mMapUIController.displayOverview(); + ServiceHandler.getMapUIController().displayOverview(); } } ); @@ -248,7 +233,15 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public void onClick( View v ) { - mMapUIController.recoverLockMode(); + ServiceHandler.getMapUIController().recoverLockMode(); + } + } ); + + ServiceHandler.getLocationClient().addLocationListener( new IMogoLocationListener() { + @Override + public void onLocationChanged( MogoLocation location ) { + mLocation = location; + Logger.d( TAG, "demo模块定位,定位间隔4s" ); } } ); } @@ -261,13 +254,13 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public boolean onMarkerClicked( IMogoMarker marker ) { - if ( mLastClickedMarker != null ) { - mLastClickedMarker.setIcon( this.mMarkerIcon ); - } - marker.setIcon( mClickedMarkerIcon ); - mLastClickedMarker = marker; +// if ( mLastClickedMarker != null ) { +// mLastClickedMarker.setIcon( this.mMarkerIcon ); +// } +// marker.setIcon( mClickedMarkerIcon ); +// mLastClickedMarker = marker; - marker.showInfoWindow(); +// marker.showInfoWindow(); return true; } @@ -280,12 +273,12 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public void onPerform() { - TipToast.shortTip( "卡片有效" ); + Logger.d( TAG, "卡片demo有效" ); } @Override public void onDisable() { - TipToast.shortTip( "卡片无效" ); + Logger.d( TAG, "卡片demo无效" ); } @@ -304,7 +297,7 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > if ( poi != null ) { TipToast.shortTip( poi.getName() ); } - mPoiSearch.searchPOIIdAsyn( poi.getPoiId() ); + ServiceHandler.getPoiSearch().searchPOIIdAsyn( poi.getPoiId() ); } @Override @@ -322,7 +315,7 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > if ( mPoiMarker != null ) { mPoiMarker.destroy(); } - mPoiMarker = mMarkerManager.addMarker( DemoConstants.TAG, new MogoMarkerOptions() + mPoiMarker = ServiceHandler.getMarkerManager().addMarker( DemoConstants.TAG, new MogoMarkerOptions() .longitude( item.getPoint().lng ) .latitude( item.getPoint().lat ) .icon( mMarkerIcon ) ); @@ -335,8 +328,8 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public void onLocationChanged( MogoLocation location ) { - mLocationClient.stop(); - Logger.i( TAG, location.toString() ); + mLocation = location; + Logger.i( TAG, "接受到的地图模块定位信息" ); if ( mLocInfo != null ) { if ( location.getErrCode() == 0 ) { mLocInfo.setText( "当前位置:" + location.getAddress() ); @@ -363,18 +356,9 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public void onDestroyView() { + Logger.w( TAG, "onDestroyView position=" + position ); super.onDestroyView(); getViewLifecycleOwner().getLifecycle().removeObserver( mPresenter ); - mLocationClient.removeLocationListener( this ); - if ( mLastClickedMarker != null ) { - mLastClickedMarker.destroy(); - mLastClickedMarker = null; - } - if ( mPoiSearch != null ) { - mPoiSearch.destroy(); - } - mMapService = null; - mPoiSearch = null; - mLocationClient = null; + ServiceHandler.getLocationClient().removeLocationListener( this ); } } diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java index 4c6f0c0c55..12f06d2fea 100644 --- a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java +++ b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java @@ -2,16 +2,28 @@ package com.mogo.demo.module.map; import android.content.Context; import android.os.Bundle; +import android.view.MotionEvent; import android.view.View; 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.marker.IMogoMarker; +import com.mogo.map.marker.IMogoMarkerClickListener; +import com.mogo.map.model.MogoPoi; import com.mogo.map.navi.IMogoNaviListener; +import com.mogo.map.search.geo.MogoPoiItem; +import com.mogo.map.search.poisearch.IMogoPoiSearchListener; +import com.mogo.map.search.poisearch.MogoPoiResult; +import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.module.common.MogoModulePaths; import com.mogo.service.module.IMogoModuleLifecycle; import com.mogo.service.module.IMogoModuleProvider; +import com.mogo.utils.logger.Logger; /** * @author congtaowang @@ -19,21 +31,24 @@ import com.mogo.service.module.IMogoModuleProvider; *

* 描述 */ -@Route( path = MogoModulePaths.PATH_MODULE_DEMO ) +@Route( path = DemoConstants.TAG ) public class DemoCardViewProvider implements IMogoModuleProvider { + private static final String TAG = "DemoCardViewProvider"; + private DemoCardViewFragment fragment; @Override public Fragment createFragment( Context context, Bundle data ) { fragment = new DemoCardViewFragment(); fragment.setArguments( data ); + Logger.i( TAG, "createFragment" ); return fragment; } @Override public void init( Context context ) { - + ServiceHandler.init( context ); } @Override @@ -41,22 +56,12 @@ public class DemoCardViewProvider implements IMogoModuleProvider { return DemoConstants.TAG; } - @Override - public IMogoModuleLifecycle getCardLifecycle() { - return fragment; - } - @Override public View createView( Context context ) { // don't return null; } - @Override - public IMogoMapListener getMapListener() { - return fragment; - } - @Override public int getType() { return IMogoModuleProvider.TYPE_FRAGMENT; @@ -66,4 +71,20 @@ public class DemoCardViewProvider implements IMogoModuleProvider { public IMogoNaviListener getNaviListener() { return null; } + + + @Override + public IMogoModuleLifecycle getCardLifecycle() { + return fragment; + } + + @Override + public IMogoMapListener getMapListener() { + return fragment; + } + + @Override + public IMogoLocationListener getLocationListener() { + return fragment; + } } diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoConstants.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoConstants.java index ab82c11c7f..3178029fde 100644 --- a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoConstants.java +++ b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoConstants.java @@ -10,5 +10,5 @@ import com.mogo.module.common.MogoModulePaths; */ public class DemoConstants { - public static final String TAG = MogoModulePaths.PATH_MODULE_DEMO; + public static final String TAG = "/demo/ui"; } diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java index f0fb866a28..e5e0dc8043 100644 --- a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java +++ b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java @@ -1,6 +1,7 @@ package com.mogo.demo.module.map; import android.content.Context; +import android.graphics.Bitmap; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; @@ -8,9 +9,16 @@ import android.widget.TextView; import com.mogo.map.marker.IMogoInfoWindowAdapter; import com.mogo.map.marker.IMogoMarker; +import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.map.navi.IMogoNavi; import com.mogo.map.navi.MogoNaviConfig; import com.mogo.map.search.geo.MogoPoiItem; +import com.mogo.service.imageloader.IMogoImageLoaderListener; +import com.mogo.service.imageloader.IMogoImageloader; +import com.mogo.service.imageloader.MogoImageView; +import com.mogo.utils.WindowUtils; +import com.mogo.utils.logger.Logger; +import com.mogo.utils.network.utils.Util; import java.text.SimpleDateFormat; import java.util.Date; @@ -23,12 +31,16 @@ import java.util.Date; */ public class DemoInfoWindowAdapter implements IMogoInfoWindowAdapter { + private static final String TAG = "DemoInfoWindowAdapter"; + private Context mContext; private IMogoNavi mNavi; + private IMogoImageloader mImageloader; - public DemoInfoWindowAdapter( Context mContext, IMogoNavi mNavi ) { + public DemoInfoWindowAdapter( Context mContext, IMogoNavi mNavi, IMogoImageloader iMogoImageloader ) { this.mContext = mContext; this.mNavi = mNavi; + this.mImageloader = iMogoImageloader; } @Override @@ -90,5 +102,31 @@ public class DemoInfoWindowAdapter implements IMogoInfoWindowAdapter { } } ); } + + public View getMarkerView( final MogoMarkerOptions options ) { + final View view = LayoutInflater.from( mContext ).inflate( R.layout.demo_module_demo_bubble_marker, null ); + final MogoImageView icon = view.findViewById( R.id.icon ); + mImageloader.displayImage( "http://imgnews.gmw.cn/attachement/jpg/site2/20191229/00d86176ed0b1f71f4580f.jpg", icon, WindowUtils.dip2px( mContext, 50 ), WindowUtils.dip2px( mContext, 50 ), + new IMogoImageLoaderListener() { + @Override + public void onStart() { + + } + + @Override + public void onCompleted( Bitmap bitmap ) { + // 刷新图标 + Logger.d( TAG, "loaded." ); + options.icon( view ); + options.notifyObservers(); + } + + @Override + public void onFailure( Exception e ) { + + } + } ); + return view; + } } diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/ServiceHandler.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/ServiceHandler.java new file mode 100644 index 0000000000..3eff1914fb --- /dev/null +++ b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/ServiceHandler.java @@ -0,0 +1,73 @@ +package com.mogo.demo.module.map; + +import android.content.Context; + +import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.map.location.IMogoLocationClient; +import com.mogo.map.marker.IMogoMarker; +import com.mogo.map.marker.IMogoMarkerManager; +import com.mogo.map.navi.IMogoNavi; +import com.mogo.map.search.poisearch.IMogoPoiSearch; +import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery; +import com.mogo.map.uicontroller.IMogoMapUIController; +import com.mogo.service.MogoServicePaths; +import com.mogo.service.imageloader.IMogoImageloader; +import com.mogo.service.map.IMogoMapService; + +/** + * @author congtaowang + * @since 2019-12-30 + *

+ * 持有服务接口实例 + */ +public class ServiceHandler { + + private static IMogoMapService mMapService; + + private static IMogoPoiSearch mPoiSearch; + private static IMogoLocationClient mLocationClient; + private static IMogoMarkerManager mMarkerManager; + private static IMogoNavi mNavi; + private static IMogoMapUIController mMapUIController; + + private static IMogoImageloader mImageloader; + + public static void init( Context context ) { + mMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( context ); + mMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( context ); + mImageloader = ( IMogoImageloader ) ARouter.getInstance().build( MogoServicePaths.PATH_UTILS_IMAGE_LOADER ).navigation( context ); + mPoiSearch = mMapService.getPoiSearch( context, new MogoPoiSearchQuery() ); + mLocationClient = mMapService.getLocationClient( context ); + mMarkerManager = mMapService.getMarkerManager( context ); + mNavi = mMapService.getNavi( context ); + mMapUIController = mMapService.getMapUIController(); + } + + public static IMogoMapService getMapService() { + return mMapService; + } + + public static IMogoPoiSearch getPoiSearch() { + return mPoiSearch; + } + + public static IMogoLocationClient getLocationClient() { + return mLocationClient; + } + + public static IMogoMarkerManager getMarkerManager() { + return mMarkerManager; + } + + public static IMogoNavi getNavi() { + return mNavi; + } + + public static IMogoMapUIController getMapUIController() { + return mMapUIController; + } + + public static IMogoImageloader getImageloader() { + return mImageloader; + } +} diff --git a/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml b/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml index 75efba6ac9..3a5cf150c4 100644 --- a/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml +++ b/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml @@ -1,159 +1,152 @@ - + + + + - - - - - -