From fea6d0bc613a998b3860653a904d82e5c8269e79 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Tue, 24 Dec 2019 15:49:57 +0800 Subject: [PATCH] dev --- .idea/misc.xml | 2 +- .idea/vcs.xml | 6 + app/build.gradle | 37 +- app/src/main/AndroidManifest.xml | 4 + .../com/mogo/launcher/MogoApplication.java | 4 +- build.gradle | 2 +- config.gradle | 6 + demo/demo-module-map/.gitignore | 1 + demo/demo-module-map/build.gradle | 46 + demo/demo-module-map/consumer-rules.pro | 0 demo/demo-module-map/proguard-rules.pro | 21 + .../src/main/AndroidManifest.xml | 2 + .../demo/module/map/DemoCardViewFragment.java | 226 +++++ .../demo/module/map/DemoCardViewProvider.java | 63 ++ .../src/main/res/drawable/ic_launcher.png | Bin 0 -> 2963 bytes .../main/res/drawable/ic_launcher_round.png | Bin 0 -> 2783 bytes .../main/res/layout/demo_module_card_view.xml | 37 + .../src/main/res/values/strings.xml | 3 + foudations/mogo-commons/build.gradle | 11 + .../com/mogo/commons/AbsMogoApplication.java | 33 +- .../commons/analytics/AnalyticsUtils.java | 26 + .../com/mogo/commons/debug/DebugConfig.java | 20 + .../main/java/com/mogo/commons/mvp/IView.java | 14 + .../com/mogo/commons/mvp/MvpActivity.java | 65 ++ .../com/mogo/commons/mvp/MvpFragment.java | 96 ++ .../java/com/mogo/commons/mvp/Presenter.java | 52 + .../com/mogo/commons/network/ParamUtils.java | 16 + .../java/com/mogo/utils/ResourcesHelper.java | 67 +- .../com/mogo/utils/SoftKeyBoardJobber.java | 121 +++ .../com/mogo/utils/SoftKeyboardUtils.java | 33 - .../utils/storage/lrucache/CacheUtil.java | 77 ++ .../storage/lrucache/DiskCacheManager.java | 374 +++++++ .../utils/storage/lrucache/DiskLruCache.java | 947 ++++++++++++++++++ .../utils/storage/lrucache/SecretUtil.java | 34 + .../storage/lrucache/StrictLineReader.java | 196 ++++ keystore/car_launcher.jks | Bin 0 -> 2058 bytes libraries/mogo-map/build.gradle | 1 - .../java/com/mogo/map/MogoBaseMapView.java | 3 +- .../mogo/map/amap/AMapMarkerClickHandler.java | 27 + .../mogo/map/amap/AMapNaviViewWrapper.java | 63 +- .../java/com/mogo/map/amap/AMapWrapper.java | 6 +- .../map/amap/marker/AMapMarkerWrapper.java | 35 +- .../map/amap/search/GeocodeSearchClient.java | 12 +- .../mogo/map/amap/search/InputtipsSearch.java | 8 +- .../mogo/map/amap/search/PoiSearchClient.java | 122 +++ .../com/mogo/map/amap/utils/ObjectUtils.java | 164 ++- .../mogo/map/listener/IMogoMapListener.java | 33 + .../listener/IMogoMapListenerRegister.java | 24 + .../map/listener/MogoMapListenerHandler.java | 76 ++ .../java/com/mogo/map/marker/IMogoMarker.java | 27 + .../map/marker/IMogoMarkerClickListener.java | 18 + .../main/java/com/mogo/map/model/MogoPoi.java | 76 ++ .../map/search/{ => geo}/IMogoGeoSearch.java | 6 +- .../{ => geo}/IMogoGeoSearchListener.java | 2 +- .../map/search/{ => geo}/MogoAoiItem.java | 2 +- .../search/{ => geo}/MogoBusinessArea.java | 2 +- .../map/search/{ => geo}/MogoCrossroad.java | 2 +- .../map/search/{ => geo}/MogoGeoSearch.java | 6 +- .../search/{ => geo}/MogoGeocodeAddress.java | 2 +- .../search/{ => geo}/MogoGeocodeResult.java | 2 +- .../map/search/{ => geo}/MogoIndoorData.java | 2 +- .../mogo/map/search/{ => geo}/MogoPhoto.java | 2 +- .../map/search/{ => geo}/MogoPoiItem.java | 2 +- .../{ => geo}/MogoPoiItemExtension.java | 2 +- .../{ => geo}/MogoRegeocodeAddress.java | 2 +- .../search/{ => geo}/MogoRegeocodeResult.java | 2 +- .../search/{ => geo}/MogoRegeocodeRoad.java | 2 +- .../search/{ => geo}/MogoStreetNumber.java | 2 +- .../map/search/{ => geo}/MogoSubPoiItem.java | 2 +- .../{ => geo}/query/MogoGeocodeQuery.java | 2 +- .../{ => geo}/query/MogoRegeocodeQuery.java | 2 +- .../IMogoInputtipsListener.java | 2 +- .../{ => inputtips}/IMogoInputtipsSearch.java | 4 +- .../{ => inputtips}/MogoInputtipsSearch.java | 4 +- .../map/search/{ => inputtips}/MogoTip.java | 2 +- .../query/MogoInputtipsQuery.java | 2 +- .../map/search/poisearch/IMogoPoiSearch.java | 57 ++ .../poisearch/IMogoPoiSearchListener.java | 22 + .../map/search/poisearch/MogoPoiResult.java | 24 + .../map/search/poisearch/MogoPoiSearch.java | 74 ++ .../map/search/poisearch/MogoSearchBound.java | 142 +++ .../poisearch/query/MogoPoiSearchQuery.java | 159 +++ modules/mogo-module-common/.gitignore | 1 + modules/mogo-module-common/build.gradle | 34 + modules/mogo-module-common/consumer-rules.pro | 0 modules/mogo-module-common/proguard-rules.pro | 21 + .../common/ExampleInstrumentedTest.java | 27 + .../src/main/AndroidManifest.xml | 2 + .../mogo/module/common/MogoModulePaths.java | 20 + .../src/main/res/values/strings.xml | 3 + .../mogo/module/common/ExampleUnitTest.java | 17 + modules/mogo-module-main/.gitignore | 1 + modules/mogo-module-main/build.gradle | 47 + modules/mogo-module-main/consumer-rules.pro | 0 modules/mogo-module-main/proguard-rules.pro | 21 + .../module/main}/ExampleInstrumentedTest.java | 4 +- .../src/main/AndroidManifest.xml | 27 + .../com/mogo/module/main/MainActivity.java | 68 ++ .../com/mogo/module/main/MainPresenter.java | 16 + .../java/com/mogo/module/main/MainView.java | 12 + .../module/main/cards/MogoModulesHandler.java | 50 + .../module/main/cards/MogoModulesManager.java | 138 +++ .../res/layout/module_main_activity_main.xml | 11 + .../src/main/res/values/strings.xml | 3 + .../mogo/module/main}/ExampleUnitTest.java | 2 +- modules/mogo-module-map/.gitignore | 1 + modules/mogo-module-map/build.gradle | 46 + modules/mogo-module-map/consumer-rules.pro | 0 modules/mogo-module-map/proguard-rules.pro | 21 + .../src/main/AndroidManifest.xml | 2 + .../java/com/mogo/module/map/MapFragment.java | 98 ++ .../mogo/module/map/MapFragmentProvider.java | 65 ++ .../com/mogo/module/map/MapPresenter.java | 18 + .../java/com/mogo/module/map/MapView.java | 12 + .../res/layout/module_map_fragment_map.xml | 10 + .../src/main/res/values/strings.xml | 3 + services/mogo-service-api/build.gradle | 16 +- .../com/mogo/service/MogoServicePaths.java | 17 +- .../service/analytics/IMogoAnalytics.java | 26 + .../imageloader/IMogoImageLoaderListener.java | 9 +- .../service/imageloader/IMogoImageloader.java | 10 + .../service/imageloader/MogoImageView.java | 28 +- .../com/mogo/service/map/IMogoMapService.java | 34 +- .../service/module/IMogoModuleLifecycle.java | 20 + .../service/module/IMogoModuleProvider.java | 78 ++ .../src/main/res/values/attrs.xml | 26 +- services/mogo-service/build.gradle | 12 +- .../service/impl/analytics/MogoAnalytics.java | 34 + .../analytics/impl/MogoAnalyticsImpl.java | 47 + .../impl/imageloader/MogoImageLoader.java | 2 +- .../imageloader/glide/GlideImageLoader.java | 1 - .../mogo/service/impl/map/MogoMapService.java | 32 +- settings.gradle | 4 + 133 files changed, 4878 insertions(+), 194 deletions(-) create mode 100644 .idea/vcs.xml create mode 100644 demo/demo-module-map/.gitignore create mode 100644 demo/demo-module-map/build.gradle create mode 100644 demo/demo-module-map/consumer-rules.pro create mode 100644 demo/demo-module-map/proguard-rules.pro create mode 100644 demo/demo-module-map/src/main/AndroidManifest.xml create mode 100644 demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java create mode 100644 demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java create mode 100644 demo/demo-module-map/src/main/res/drawable/ic_launcher.png create mode 100644 demo/demo-module-map/src/main/res/drawable/ic_launcher_round.png create mode 100644 demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml create mode 100644 demo/demo-module-map/src/main/res/values/strings.xml create mode 100644 foudations/mogo-commons/src/main/java/com/mogo/commons/analytics/AnalyticsUtils.java create mode 100644 foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java create mode 100644 foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/IView.java create mode 100644 foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpActivity.java create mode 100644 foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpFragment.java create mode 100644 foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/Presenter.java create mode 100644 foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamUtils.java create mode 100644 foudations/mogo-utils/src/main/java/com/mogo/utils/SoftKeyBoardJobber.java delete mode 100644 foudations/mogo-utils/src/main/java/com/mogo/utils/SoftKeyboardUtils.java create mode 100644 foudations/mogo-utils/src/main/java/com/mogo/utils/storage/lrucache/CacheUtil.java create mode 100644 foudations/mogo-utils/src/main/java/com/mogo/utils/storage/lrucache/DiskCacheManager.java create mode 100644 foudations/mogo-utils/src/main/java/com/mogo/utils/storage/lrucache/DiskLruCache.java create mode 100644 foudations/mogo-utils/src/main/java/com/mogo/utils/storage/lrucache/SecretUtil.java create mode 100644 foudations/mogo-utils/src/main/java/com/mogo/utils/storage/lrucache/StrictLineReader.java create mode 100644 keystore/car_launcher.jks create mode 100644 libraries/mogo-map/src/main/java/com/mogo/map/amap/AMapMarkerClickHandler.java create mode 100644 libraries/mogo-map/src/main/java/com/mogo/map/amap/search/PoiSearchClient.java create mode 100644 libraries/mogo-map/src/main/java/com/mogo/map/listener/IMogoMapListener.java create mode 100644 libraries/mogo-map/src/main/java/com/mogo/map/listener/IMogoMapListenerRegister.java create mode 100644 libraries/mogo-map/src/main/java/com/mogo/map/listener/MogoMapListenerHandler.java create mode 100644 libraries/mogo-map/src/main/java/com/mogo/map/marker/IMogoMarkerClickListener.java create mode 100644 libraries/mogo-map/src/main/java/com/mogo/map/model/MogoPoi.java rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/IMogoGeoSearch.java (88%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/IMogoGeoSearchListener.java (94%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/MogoAoiItem.java (98%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/MogoBusinessArea.java (97%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/MogoCrossroad.java (98%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/MogoGeoSearch.java (91%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/MogoGeocodeAddress.java (98%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/MogoGeocodeResult.java (93%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/MogoIndoorData.java (97%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/MogoPhoto.java (97%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/MogoPoiItem.java (99%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/MogoPoiItemExtension.java (97%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/MogoRegeocodeAddress.java (99%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/MogoRegeocodeResult.java (97%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/MogoRegeocodeRoad.java (98%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/MogoStreetNumber.java (98%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/MogoSubPoiItem.java (98%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/query/MogoGeocodeQuery.java (97%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => geo}/query/MogoRegeocodeQuery.java (98%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => inputtips}/IMogoInputtipsListener.java (83%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => inputtips}/IMogoInputtipsSearch.java (79%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => inputtips}/MogoInputtipsSearch.java (92%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => inputtips}/MogoTip.java (98%) rename libraries/mogo-map/src/main/java/com/mogo/map/search/{ => inputtips}/query/MogoInputtipsQuery.java (95%) create mode 100644 libraries/mogo-map/src/main/java/com/mogo/map/search/poisearch/IMogoPoiSearch.java create mode 100644 libraries/mogo-map/src/main/java/com/mogo/map/search/poisearch/IMogoPoiSearchListener.java create mode 100644 libraries/mogo-map/src/main/java/com/mogo/map/search/poisearch/MogoPoiResult.java create mode 100644 libraries/mogo-map/src/main/java/com/mogo/map/search/poisearch/MogoPoiSearch.java create mode 100644 libraries/mogo-map/src/main/java/com/mogo/map/search/poisearch/MogoSearchBound.java create mode 100644 libraries/mogo-map/src/main/java/com/mogo/map/search/poisearch/query/MogoPoiSearchQuery.java create mode 100644 modules/mogo-module-common/.gitignore create mode 100644 modules/mogo-module-common/build.gradle create mode 100644 modules/mogo-module-common/consumer-rules.pro create mode 100644 modules/mogo-module-common/proguard-rules.pro create mode 100644 modules/mogo-module-common/src/androidTest/java/com/mogo/module/common/ExampleInstrumentedTest.java create mode 100644 modules/mogo-module-common/src/main/AndroidManifest.xml create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/MogoModulePaths.java create mode 100644 modules/mogo-module-common/src/main/res/values/strings.xml create mode 100644 modules/mogo-module-common/src/test/java/com/mogo/module/common/ExampleUnitTest.java create mode 100644 modules/mogo-module-main/.gitignore create mode 100644 modules/mogo-module-main/build.gradle create mode 100644 modules/mogo-module-main/consumer-rules.pro create mode 100644 modules/mogo-module-main/proguard-rules.pro rename {services/mogo-service-api/src/androidTest/java/com/mogo/service/map => modules/mogo-module-main/src/androidTest/java/com/mogo/module/main}/ExampleInstrumentedTest.java (85%) create mode 100644 modules/mogo-module-main/src/main/AndroidManifest.xml create mode 100644 modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java create mode 100644 modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java create mode 100644 modules/mogo-module-main/src/main/java/com/mogo/module/main/MainView.java create mode 100644 modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java create mode 100644 modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java create mode 100644 modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml create mode 100644 modules/mogo-module-main/src/main/res/values/strings.xml rename {services/mogo-service-api/src/test/java/com/mogo/service/map => modules/mogo-module-main/src/test/java/com/mogo/module/main}/ExampleUnitTest.java (92%) create mode 100644 modules/mogo-module-map/.gitignore create mode 100644 modules/mogo-module-map/build.gradle create mode 100644 modules/mogo-module-map/consumer-rules.pro create mode 100644 modules/mogo-module-map/proguard-rules.pro create mode 100644 modules/mogo-module-map/src/main/AndroidManifest.xml create mode 100644 modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java create mode 100644 modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragmentProvider.java create mode 100644 modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java create mode 100644 modules/mogo-module-map/src/main/java/com/mogo/module/map/MapView.java create mode 100644 modules/mogo-module-map/src/main/res/layout/module_map_fragment_map.xml create mode 100644 modules/mogo-module-map/src/main/res/values/strings.xml create mode 100644 services/mogo-service-api/src/main/java/com/mogo/service/analytics/IMogoAnalytics.java create mode 100644 services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleLifecycle.java create mode 100644 services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoModuleProvider.java create mode 100644 services/mogo-service/src/main/java/com/mogo/service/impl/analytics/MogoAnalytics.java create mode 100644 services/mogo-service/src/main/java/com/mogo/service/impl/analytics/impl/MogoAnalyticsImpl.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 29bb4c57c1..8a8f75bfe2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -5,7 +5,7 @@ - + diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000000..94a25f7f4c --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index f266ec223b..4f152b1faa 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,10 +10,35 @@ android { versionCode rootProject.ext.android.versionCode versionName rootProject.ext.android.versionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + + javaCompileOptions { + annotationProcessorOptions { + arguments = [AROUTER_MODULE_NAME: project.getName()] + } + } + externalNativeBuild { + ndk { + // 设置支持的SO库架构 + abiFilters 'armeabi' + } + } + } + signingConfigs { + release { + keyAlias = 'CarLauncher' + storeFile file('../keystore/car_launcher.jks') + storePassword 'ZDauto123456' + keyPassword 'ZDauto123456' + } } buildTypes { + debug { + signingConfig signingConfigs.release + debuggable = true + } release { minifyEnabled false + signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } @@ -21,9 +46,11 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation rootProject.ext.dependencies.androidxappcompat - implementation rootProject.ext.dependencies.androidxconstraintlayout - testImplementation rootProject.ext.dependencies.junit - androidTestImplementation rootProject.ext.dependencies.androidxjunit - androidTestImplementation rootProject.ext.dependencies.androidxespressocore + + api rootProject.ext.dependencies.androidxappcompat + debugImplementation rootProject.ext.dependencies.leakcanary + testImplementation rootProject.ext.dependencies.leakcanary + releaseImplementation rootProject.ext.dependencies.leakcanarynoop + implementation project(':modules:mogo-module-main') + implementation project(':foudations:mogo-commons') } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a1d4aa5c1c..1c3cce9e33 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,6 +11,10 @@ android:supportsRtl="true" android:theme="@style/AppTheme.App"> + + \ No newline at end of file diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 7a7ac48037..b079298cf4 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -2,13 +2,15 @@ package com.mogo.launcher; import android.app.Application; +import com.mogo.commons.AbsMogoApplication; + /** * @author congtaowang * @since 2019-12-18 *

* Launcher application */ -public class MogoApplication extends Application { +public class MogoApplication extends AbsMogoApplication { @Override public void onCreate() { diff --git a/build.gradle b/build.gradle index 53d9475dce..9d1ce53a72 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.5.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - + classpath "com.alibaba:arouter-register:1.0.2" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/config.gradle b/config.gradle index 5d361f9b3d..0fffb1fc4e 100644 --- a/config.gradle +++ b/config.gradle @@ -43,11 +43,17 @@ ext { 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", + + // leakcanary + leakcanary : 'com.squareup.leakcanary:leakcanary-android:1.5.4', + leakcanarynoop : 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.4', ] } \ No newline at end of file diff --git a/demo/demo-module-map/.gitignore b/demo/demo-module-map/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/demo/demo-module-map/.gitignore @@ -0,0 +1 @@ +/build diff --git a/demo/demo-module-map/build.gradle b/demo/demo-module-map/build.gradle new file mode 100644 index 0000000000..0290a16845 --- /dev/null +++ b/demo/demo-module-map/build.gradle @@ -0,0 +1,46 @@ +apply plugin: 'com.android.library' +apply plugin: 'com.alibaba.arouter' + +android { + compileSdkVersion 29 + buildToolsVersion "29.0.2" + + + defaultConfig { + minSdkVersion 19 + targetSdkVersion 29 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles 'consumer-rules.pro' + + javaCompileOptions { + annotationProcessorOptions { + arguments = [AROUTER_MODULE_NAME: project.getName()] + } + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + +} + +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') + implementation rootProject.ext.dependencies.androidxappcompat + implementation rootProject.ext.dependencies.androidxconstraintlayout + implementation rootProject.ext.dependencies.arouter + annotationProcessor rootProject.ext.dependencies.aroutercompiler +} diff --git a/demo/demo-module-map/consumer-rules.pro b/demo/demo-module-map/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/demo/demo-module-map/proguard-rules.pro b/demo/demo-module-map/proguard-rules.pro new file mode 100644 index 0000000000..f1b424510d --- /dev/null +++ b/demo/demo-module-map/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/demo/demo-module-map/src/main/AndroidManifest.xml b/demo/demo-module-map/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..b4ca7f3c79 --- /dev/null +++ b/demo/demo-module-map/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + 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 new file mode 100644 index 0000000000..e98266846c --- /dev/null +++ b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewFragment.java @@ -0,0 +1,226 @@ +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.view.MotionEvent; +import android.view.View; +import android.widget.Button; +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.listener.IMogoMapListener; +import com.mogo.map.location.ILocationListener; +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.MogoMarkerOptions; +import com.mogo.map.model.MogoPoi; +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.service.MogoServicePaths; +import com.mogo.service.module.IMogoModuleLifecycle; +import com.mogo.service.map.IMogoMapService; +import com.mogo.utils.TipToast; +import com.mogo.utils.logger.Logger; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Random; + +/** + * @author congtaowang + * @since 2019-12-24 + *

+ * 描述 + */ + +public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > > + implements IView, + IMogoMarkerClickListener, + IMogoModuleLifecycle, + IMogoMapListener, + IMogoPoiSearchListener, + ILocationListener { + + private static final String TAG = "demo.DemoCardViewProvider"; + + private Button mAddMarker; + private Button mAddMarkers; + + private Bitmap mMarkerIcon; + private Bitmap mClickedMarkerIcon; + private TextView mLoc; + + private IMogoMarker mLastClickedMarker; + + private IMogoMapService mMapService; + private IMogoPoiSearch mPoiSearch; + private IMogoLocationClient mLocationClient; + + @Override + protected int getLayoutId() { + return R.layout.demo_module_card_view; + } + + @Override + protected void initViews() { + + 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 ); + mLocationClient.start( 1_000L ); + + mLoc = findViewById( R.id.demo_module_id_loc ); + + mMarkerIcon = BitmapFactory.decodeResource( getResources(), R.drawable.ic_launcher ); + mClickedMarkerIcon = BitmapFactory.decodeResource( getResources(), R.drawable.ic_launcher_round ); + mAddMarker = findViewById( R.id.demo_module_id_add_marker ); + mAddMarker.setOnClickListener( new View.OnClickListener() { + @Override + public void onClick( View v ) { + IMogoMapService ims = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation(); + MogoMarkerOptions options = new MogoMarkerOptions() + .icon( mMarkerIcon ) + .latitude( 39.974525d ) + .longitude( 116.41733d ); + IMogoMarker marker = ims.addMarker( options ); + marker.setOnMarkerClickListener( DemoCardViewFragment.this ); + } + } ); + mAddMarkers = findViewById( R.id.demo_module_id_add_markers ); + mAddMarkers.setOnClickListener( new View.OnClickListener() { + @Override + public void onClick( View v ) { + IMogoMapService ims = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation(); + + for ( int i = 0; i < 10; i++ ) { + MogoMarkerOptions options = new MogoMarkerOptions() + .icon( mMarkerIcon ) + .latitude( 39.974525d + new Random().nextDouble() ) + .longitude( 116.41733d + new Random().nextDouble() ); + List< IMogoMarker > iMogoMarkers = ims.addMarkers( new ArrayList<>( Arrays.asList( options ) ), true ); + for ( IMogoMarker iMogoMarker : iMogoMarkers ) { + iMogoMarker.setOnMarkerClickListener( DemoCardViewFragment.this ); + } + } + + } + } ); + + } + + @Override + public void onActivityCreated( @Nullable Bundle savedInstanceState ) { + super.onActivityCreated( savedInstanceState ); + getViewLifecycleOwner().getLifecycle().addObserver( mPresenter ); + } + + @Override + public boolean onMarkerClicked( IMogoMarker marker ) { + if ( mLastClickedMarker != null ) { + mLastClickedMarker.setIcon( this.mMarkerIcon ); + } + marker.setIcon( mClickedMarkerIcon ); + mLastClickedMarker = marker; + return true; + } + + @NonNull + @Override + protected Presenter createPresenter() { + return new Presenter( this ) { + }; + } + + @Override + public void onPerform() { + TipToast.shortTip( "卡片有效" ); + } + + @Override + public void onDisable() { + TipToast.shortTip( "卡片无效" ); + } + + + @Override + public void onMapLoaded() { + Logger.d( TAG, "地图加载事件" ); + } + + @Override + public void onTouch( MotionEvent motionEvent ) { + Logger.d( TAG, "地图触摸事件" ); + } + + @Override + public void onPOIClick( MogoPoi poi ) { + if ( poi != null ) { + TipToast.shortTip( poi.getName() ); + } + mPoiSearch.searchPOIIdAsyn( poi.getPoiId() ); + } + + @Override + public void onPoiSearched( MogoPoiResult result, int errorCode ) { + + } + + @Override + public void onPoiItemSearched( MogoPoiItem item, int errorCode ) { + if ( item == null ) { + return; + } + new AlertDialog.Builder( getContext() ) + .setTitle( item.getTitle() ) + .setMessage( + new StringBuilder() + .append( "adCode:" ).append( item.getAdCode() ).append( "\n" ) + .append( "cityCode:" ).append( item.getCityCode() ).append( "\n" ) + .append( "email:" ).append( item.getEmail() ).append( "\n" ) + .append( "tel:" ).append( item.getTel() ).append( "\n" ) + ) + .setNegativeButton( "知道了", new DialogInterface.OnClickListener() { + @Override + public void onClick( DialogInterface dialog, int which ) { + dialog.dismiss(); + } + } ) + .show(); + } + + @Override + public void onLocationChanged( MogoLocation location ) { + Logger.i( TAG, location.toString() ); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + getViewLifecycleOwner().getLifecycle().removeObserver( mPresenter ); + mLocationClient.removeLocationListener( this ); + if ( mLastClickedMarker != null ) { + mLastClickedMarker.destroy(); + mLastClickedMarker = null; + } + mMapService = null; + mPoiSearch = null; + mLocationClient = null; + } +} 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 new file mode 100644 index 0000000000..a9cc98d857 --- /dev/null +++ b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java @@ -0,0 +1,63 @@ +package com.mogo.demo.module.map; + +import android.content.Context; +import android.os.Bundle; +import android.view.View; + +import androidx.fragment.app.Fragment; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.map.listener.IMogoMapListener; +import com.mogo.module.common.MogoModulePaths; +import com.mogo.service.module.IMogoModuleLifecycle; +import com.mogo.service.module.IMogoModuleProvider; + +/** + * @author congtaowang + * @since 2019-12-24 + *

+ * 描述 + */ +@Route( path = MogoModulePaths.PATH_MODULE_DEMO ) +public class DemoCardViewProvider implements IMogoModuleProvider { + + private DemoCardViewFragment fragment; + + @Override + public Fragment createFragment( Context context, Bundle data ) { + fragment = new DemoCardViewFragment(); + fragment.setArguments( data ); + return fragment; + } + + @Override + public void init( Context context ) { + + } + + @Override + public String getModuleName() { + return MogoModulePaths.PATH_MODULE_DEMO; + } + + @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; + } +} diff --git a/demo/demo-module-map/src/main/res/drawable/ic_launcher.png b/demo/demo-module-map/src/main/res/drawable/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..898f3ed59ac9f3248734a00e5902736c9367d455 GIT binary patch literal 2963 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 JPDHLkV1g@XpTGbB literal 0 HcmV?d00001 diff --git a/demo/demo-module-map/src/main/res/drawable/ic_launcher_round.png b/demo/demo-module-map/src/main/res/drawable/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..dae5e082342fcdeee5db8a6e0b27028e2d2808f5 GIT binary patch literal 2783 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 lV%Z2*hu); + + + + +