From e817744433bd5de5458346b200b9547f993e0ec1 Mon Sep 17 00:00:00 2001 From: jaydroid1024 Date: Tue, 16 Nov 2021 15:07:11 +0800 Subject: [PATCH 1/4] fix:[Android] Fix amap crash and adapt amap privacy compliance interface --- .../doraemondemo/amap/AMapRouterFragment.kt | 20 +++++++++++++------ .../doraemondemo/amap/DefaultNaviListener.kt | 10 +++++----- .../kit/lbs/route/AMapRealNavMockView.kt | 14 ++++++++++--- 3 files changed, 30 insertions(+), 14 deletions(-) diff --git a/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/AMapRouterFragment.kt b/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/AMapRouterFragment.kt index 110938fa0..7f5061a2e 100644 --- a/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/AMapRouterFragment.kt +++ b/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/AMapRouterFragment.kt @@ -28,7 +28,7 @@ class AMapRouterFragment : CommBaseFragment() { private var mDefaultNaviListener: DefaultNaviListener? = null private lateinit var mAmap: AMap private lateinit var mapView: MapView - private lateinit var mAMapNavi: AMapNavi + private var mAMapNavi: AMapNavi? = null private val mStartPoint = NaviLatLng(30.29659, 120.081127) private val mEndPoint = NaviLatLng(30.296793, 121.07527) override fun initActivityTitle(): String { @@ -147,19 +147,27 @@ class AMapRouterFragment : CommBaseFragment() { //aMap.getUiSettings().setMyLocationButtonEnabled(true);设置默认定位按钮是否显示,非必需设置。 // 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。 mAmap.isMyLocationEnabled = true - //规划路径 - mAMapNavi = AMapNavi.getInstance(activity?.application) + //确保调用SDK任何接口前先调用更新隐私合规updatePrivacyShow、updatePrivacyAgree两个接口并且参数值都为true,若未正确设置有崩溃风险 + //官方文档:https://lbs.amap.com/api/android-navi-sdk/guide/create-project/configuration-considerations#t3 + NaviSetting.updatePrivacyShow(context, true, true) + NaviSetting.updatePrivacyAgree(context, true) + try { + //规划路径 + mAMapNavi = AMapNavi.getInstance(activity?.application) + } catch (e: Exception) { + e.printStackTrace() + } val startList = mutableListOf() startList.add(mStartPoint) val endList = mutableListOf() endList.add(mEndPoint) - mAMapNavi.calculateDriveRoute( + mAMapNavi?.calculateDriveRoute( startList, endList, null, PathPlanningStrategy.DRIVING_MULTIPLE_ROUTES_DEFAULT ) - mAMapNavi.addAMapNaviListener(activity?.application?.let { + mAMapNavi?.addAMapNaviListener(activity?.application?.let { mDefaultNaviListener = DefaultNaviListener(mAmap, mAMapNavi, it) mDefaultNaviListener }) @@ -186,4 +194,4 @@ class AMapRouterFragment : CommBaseFragment() { super.onSaveInstanceState(outState) mapView.onSaveInstanceState(outState) } -} \ No newline at end of file +} diff --git a/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/DefaultNaviListener.kt b/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/DefaultNaviListener.kt index 95f03174a..ac013433e 100644 --- a/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/DefaultNaviListener.kt +++ b/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/DefaultNaviListener.kt @@ -20,7 +20,7 @@ import io.reactivex.disposables.Disposable * 修订历史: * ================================================ */ -class DefaultNaviListener(val mAMap: AMap, val mAMapNavi: AMapNavi, val context: Context) : +class DefaultNaviListener(val mAMap: AMap, val mAMapNavi: AMapNavi?, val context: Context) : AMapNaviListener { // private var mNaviRouteOverlay: NaviRouteOverlay? = null // @@ -148,11 +148,11 @@ class DefaultNaviListener(val mAMap: AMap, val mAMapNavi: AMapNavi, val context: override fun onCalculateRouteSuccess(result: AMapCalcRouteResult?) { // LogHelper.i(TAG, "mAMapNavi.naviPath.coordList===>${mAMapNavi.naviPath.coordList.size}") // RouterManager.mCoordList = mAMapNavi.naviPath.coordList - val naviRouteOverlay = NaviRouteOverlay(mAMap, mAMapNavi.naviPath, context) + val naviRouteOverlay = NaviRouteOverlay(mAMap, mAMapNavi?.naviPath, context) naviRouteOverlay.setShowDefaultLineArrow(true) naviRouteOverlay.addToMap() // naviRouteOverlay.removeFromMap() - mAMapNavi.setEmulatorNaviSpeed(10) + mAMapNavi?.setEmulatorNaviSpeed(10) /** * CRUISE 巡航模式(数值:3) @@ -163,7 +163,7 @@ class DefaultNaviListener(val mAMap: AMap, val mAMapNavi: AMapNavi, val context: NONE 未开始导航(数值:-1) */ - mAMapNavi.startNavi(NaviType.GPS) + mAMapNavi?.startNavi(NaviType.GPS) // disp = MockGPSTaskManager.startGpsMockTask(mAMapNavi.naviPath)?.subscribe() } @@ -197,4 +197,4 @@ class DefaultNaviListener(val mAMap: AMap, val mAMapNavi: AMapNavi, val context: disp!!.dispose() } } -} \ No newline at end of file +} diff --git a/Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/lbs/route/AMapRealNavMockView.kt b/Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/lbs/route/AMapRealNavMockView.kt index d5a3756f0..d360bcc5f 100644 --- a/Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/lbs/route/AMapRealNavMockView.kt +++ b/Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/lbs/route/AMapRealNavMockView.kt @@ -11,11 +11,11 @@ import android.widget.SeekBar import android.widget.TextView import androidx.core.view.children import com.amap.api.navi.AMapNavi +import com.amap.api.navi.NaviSetting import com.didichuxing.doraemonkit.DoKit import com.didichuxing.doraemonkit.R import com.didichuxing.doraemonkit.kit.core.AbsDokitView import com.didichuxing.doraemonkit.kit.core.DokitViewLayoutParams -import com.didichuxing.doraemonkit.kit.core.DokitViewManager import com.didichuxing.doraemonkit.kit.gpsmock.GpsMockManager import com.didichuxing.doraemonkit.util.ConvertUtils import com.didichuxing.doraemonkit.util.LogHelper @@ -40,7 +40,15 @@ class AMapRealNavMockView : AbsDokitView() { private var mAMapNavi: AMapNavi? = null override fun onCreate(context: Context?) { - mAMapNavi = AMapNavi.getInstance(activity.application) + //确保调用SDK任何接口前先调用更新隐私合规updatePrivacyShow、updatePrivacyAgree两个接口并且参数值都为true,若未正确设置有崩溃风险 + //官方文档:https://lbs.amap.com/api/android-navi-sdk/guide/create-project/configuration-considerations#t3 + NaviSetting.updatePrivacyShow(context, true, true) + NaviSetting.updatePrivacyAgree(context, true) + try { + mAMapNavi = AMapNavi.getInstance(activity.application) + } catch (e: Exception) { + e.printStackTrace() + } } override fun onCreateView(context: Context?, rootView: FrameLayout?): View { @@ -157,4 +165,4 @@ class AMapRealNavMockView : AbsDokitView() { } } -} \ No newline at end of file +} From 489365f1f2163ebba04abb1780d29efb9283567e Mon Sep 17 00:00:00 2001 From: jaydroid1024 Date: Thu, 18 Nov 2021 00:30:33 +0800 Subject: [PATCH 2/4] 1. Add dokit_amap_api and two other compatible libs to smooth out the differences in API calls of different amap sdk versions 2. Add VersionUtils class in dokit_util lib 3. Dokit lib update for amap privacy 4. Demo app update for amap privacy --- Android/app/build.gradle | 3 + .../doraemondemo/amap/AMapRouterFragment.kt | 13 +--- Android/config.gradle | 4 ++ Android/dokit-amap-api/.gitignore | 1 + Android/dokit-amap-api/build.gradle | 50 ++++++++++++++ Android/dokit-amap-api/gradle.properties | 1 + Android/dokit-amap-api/proguard-rules.pro | 21 ++++++ .../src/main/AndroidManifest.xml | 5 ++ .../doraemonkit/amap_api/AMapWrap.kt | 40 +++++++++++ Android/dokit-amap-api/upload.sh | 6 ++ Android/dokit-amap-no-privacy/.gitignore | 1 + Android/dokit-amap-no-privacy/build.gradle | 47 +++++++++++++ .../dokit-amap-no-privacy/gradle.properties | 1 + .../dokit-amap-no-privacy/proguard-rules.pro | 21 ++++++ .../src/main/AndroidManifest.xml | 5 ++ .../doraemonkit/amap_api/AMapWrapNoPrivacy.kt | 22 ++++++ Android/dokit-amap-no-privacy/upload.sh | 6 ++ Android/dokit-amap-with-privacy/.gitignore | 1 + Android/dokit-amap-with-privacy/build.gradle | 47 +++++++++++++ .../dokit-amap-with-privacy/gradle.properties | 1 + .../proguard-rules.pro | 21 ++++++ .../src/main/AndroidManifest.xml | 5 ++ .../amap_api/AMapWrapWithPrivacy.kt | 32 +++++++++ Android/dokit-amap-with-privacy/upload.sh | 6 ++ Android/dokit-util/build.gradle | 5 ++ .../doraemonkit/util/VersionUtils.kt | 67 +++++++++++++++++++ .../doraemonkit/util/VersionUtilsTest.kt | 51 ++++++++++++++ Android/dokit/build.gradle | 6 +- .../kit/lbs/route/AMapRealNavMockView.kt | 13 +--- Android/settings.gradle | 3 + Android/upload_didi.sh | 5 +- Android/upload_local.sh | 3 + Android/upload_maven.sh | 5 +- 33 files changed, 494 insertions(+), 24 deletions(-) create mode 100644 Android/dokit-amap-api/.gitignore create mode 100644 Android/dokit-amap-api/build.gradle create mode 100644 Android/dokit-amap-api/gradle.properties create mode 100644 Android/dokit-amap-api/proguard-rules.pro create mode 100644 Android/dokit-amap-api/src/main/AndroidManifest.xml create mode 100644 Android/dokit-amap-api/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrap.kt create mode 100755 Android/dokit-amap-api/upload.sh create mode 100644 Android/dokit-amap-no-privacy/.gitignore create mode 100644 Android/dokit-amap-no-privacy/build.gradle create mode 100644 Android/dokit-amap-no-privacy/gradle.properties create mode 100644 Android/dokit-amap-no-privacy/proguard-rules.pro create mode 100644 Android/dokit-amap-no-privacy/src/main/AndroidManifest.xml create mode 100644 Android/dokit-amap-no-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapNoPrivacy.kt create mode 100755 Android/dokit-amap-no-privacy/upload.sh create mode 100644 Android/dokit-amap-with-privacy/.gitignore create mode 100644 Android/dokit-amap-with-privacy/build.gradle create mode 100644 Android/dokit-amap-with-privacy/gradle.properties create mode 100644 Android/dokit-amap-with-privacy/proguard-rules.pro create mode 100644 Android/dokit-amap-with-privacy/src/main/AndroidManifest.xml create mode 100644 Android/dokit-amap-with-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapWithPrivacy.kt create mode 100755 Android/dokit-amap-with-privacy/upload.sh create mode 100644 Android/dokit-util/src/main/java/com/didichuxing/doraemonkit/util/VersionUtils.kt create mode 100644 Android/dokit-util/src/test/java/com/didichuxing/doraemonkit/util/VersionUtilsTest.kt diff --git a/Android/app/build.gradle b/Android/app/build.gradle index 02285075f..d4b2a8b7b 100644 --- a/Android/app/build.gradle +++ b/Android/app/build.gradle @@ -198,6 +198,9 @@ dependencies { //高德搜索 implementation rootProject.ext.dependencies["amap_search"] implementation rootProject.ext.dependencies["amap_navi"] +// implementation rootProject.ext.dependencies["amap_navi_v810"] +// implementation rootProject.ext.dependencies["amap_navi_v801"] + implementation project(':dokit-amap-api') //腾讯地图定位 // implementation rootProject.ext.dependencies["tencent_location"] // implementation rootProject.ext.dependencies["tencent_map"] diff --git a/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/AMapRouterFragment.kt b/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/AMapRouterFragment.kt index 7f5061a2e..84bba25b2 100644 --- a/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/AMapRouterFragment.kt +++ b/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/AMapRouterFragment.kt @@ -14,6 +14,7 @@ import com.amap.api.navi.model.AMapNaviLocation import com.amap.api.navi.model.NaviLatLng import com.didichuxing.doraemondemo.R import com.didichuxing.doraemondemo.comm.CommBaseFragment +import com.didichuxing.doraemonkit.amap_api.AMapWrap /** * ================================================ @@ -147,16 +148,8 @@ class AMapRouterFragment : CommBaseFragment() { //aMap.getUiSettings().setMyLocationButtonEnabled(true);设置默认定位按钮是否显示,非必需设置。 // 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。 mAmap.isMyLocationEnabled = true - //确保调用SDK任何接口前先调用更新隐私合规updatePrivacyShow、updatePrivacyAgree两个接口并且参数值都为true,若未正确设置有崩溃风险 - //官方文档:https://lbs.amap.com/api/android-navi-sdk/guide/create-project/configuration-considerations#t3 - NaviSetting.updatePrivacyShow(context, true, true) - NaviSetting.updatePrivacyAgree(context, true) - try { - //规划路径 - mAMapNavi = AMapNavi.getInstance(activity?.application) - } catch (e: Exception) { - e.printStackTrace() - } + //AMapWrap 类用于适配高德地图隐私合规接口 + mAMapNavi = activity?.application?.let { AMapWrap.createAMapNavi(it) } val startList = mutableListOf() startList.add(mStartPoint) val endList = mutableListOf() diff --git a/Android/config.gradle b/Android/config.gradle index 2e3cd9327..500149166 100755 --- a/Android/config.gradle +++ b/Android/config.gradle @@ -45,6 +45,8 @@ ext { "annotation" : "androidx.annotation:annotation:1.1.0", "kotlin_v13" : "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${android["kotlin_version_v13"]}", "kotlin_v14" : "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${android["kotlin_version_v14"]}", + "kotlin_junit_v13" : "org.jetbrains.kotlin:kotlin-test-junit:${android["kotlin_version_v13"]}", + "kotlin_junit_v14" : "org.jetbrains.kotlin:kotlin-test-junit:${android["kotlin_version_v14"]}", "coroutines-core_v13" : "org.jetbrains.kotlinx:kotlinx-coroutines-core:${android["kotlinx_coroutines_version_v13"]}", "coroutines-core_v14" : "org.jetbrains.kotlinx:kotlinx-coroutines-core:${android["kotlinx_coroutines_version_v14"]}", "coroutines-android_v13" : "org.jetbrains.kotlinx:kotlinx-coroutines-android:${android["kotlinx_coroutines_version_v13"]}", @@ -134,6 +136,8 @@ ext { "amap_map3d" : 'com.amap.api:map3d:latest.integration', "amap_search" : 'com.amap.api:search:latest.integration', "amap_navi" : 'com.amap.api:navi-3dmap:latest.integration', + "amap_navi_v810" : 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0', + "amap_navi_v801" : 'com.amap.api:navi-3dmap:8.0.1_3dmap8.0.1', //新四地图 "dmap" : 'com.didi.nav.driving:sdk:0.0.2065', //腾讯地图定位 diff --git a/Android/dokit-amap-api/.gitignore b/Android/dokit-amap-api/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/Android/dokit-amap-api/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/Android/dokit-amap-api/build.gradle b/Android/dokit-amap-api/build.gradle new file mode 100644 index 000000000..ea5c991bc --- /dev/null +++ b/Android/dokit-amap-api/build.gradle @@ -0,0 +1,50 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply from: '../upload.gradle' + +android { + compileSdkVersion rootProject.ext.android["compileSdkVersion"] + + defaultConfig { + minSdkVersion rootProject.ext.android["minSdkVersion_16"] + targetSdkVersion rootProject.ext.android["targetSdkVersion"] + versionCode rootProject.ext.android["versionCode"] + versionName rootProject.ext.android["versionName"] + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } } + } + + buildTypes { + debug { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + + lintOptions { + abortOnError false + } + +} + + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + if (needKotlinV14()) { + implementation rootProject.ext.dependencies["kotlin_v14"] + } else { + implementation rootProject.ext.dependencies["kotlin_v13"] + } + //高德导航 + compileOnly rootProject.ext.dependencies["amap_navi"] + implementation project(':dokit-amap-no-privacy') + implementation project(':dokit-amap-with-privacy') + compileOnly project(':dokit-util') + +} + diff --git a/Android/dokit-amap-api/gradle.properties b/Android/dokit-amap-api/gradle.properties new file mode 100644 index 000000000..892ca9001 --- /dev/null +++ b/Android/dokit-amap-api/gradle.properties @@ -0,0 +1 @@ +ARTIFACT_ID=dokitx-okhttp-api \ No newline at end of file diff --git a/Android/dokit-amap-api/proguard-rules.pro b/Android/dokit-amap-api/proguard-rules.pro new file mode 100644 index 000000000..fed85b436 --- /dev/null +++ b/Android/dokit-amap-api/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 from file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/Android/dokit-amap-api/src/main/AndroidManifest.xml b/Android/dokit-amap-api/src/main/AndroidManifest.xml new file mode 100644 index 000000000..50b2ecc61 --- /dev/null +++ b/Android/dokit-amap-api/src/main/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + diff --git a/Android/dokit-amap-api/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrap.kt b/Android/dokit-amap-api/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrap.kt new file mode 100644 index 000000000..593bdf7fb --- /dev/null +++ b/Android/dokit-amap-api/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrap.kt @@ -0,0 +1,40 @@ +package com.didichuxing.doraemonkit.amap_api + +import android.app.Application +import android.util.Log +import com.amap.api.navi.AMapNavi +import com.didichuxing.doraemonkit.util.VersionUtils + + +/** + * ================================================ + * 作 者:jaydroid(王学杰) + * 版 本:1.0 + * 创建日期:2021/11/17-14:55 + * 描 述: + * 修订历史: + * ================================================ + */ +object AMapWrap { + + const val TAG = "AMapWrap" + + private val isAMapNaviVersionGreaterV810: Boolean by lazy { + val aMapNaviVersion = AMapNavi.getVersion() +// Log.v(TAG, "aMapNaviVersion: $aMapNaviVersion") + //由于个人信息保护法的实施,从8.1.0版本开始,请务必确保调用SDK任何接口前先调用更新隐私合规updatePrivacyShow、updatePrivacyAgree两个接口 + val compareResult = VersionUtils.compareVersion(aMapNaviVersion, "8.1.0") +// Log.v(TAG, "compareResult: $compareResult") + compareResult != -1 + } + + fun createAMapNavi(application: Application): AMapNavi? { + return if (isAMapNaviVersionGreaterV810) { + AMapWrapWithPrivacy.createAMapNavi(application) + } else { + AMapWrapNoPrivacy.createAMapNavi(application) + } + } + + +} diff --git a/Android/dokit-amap-api/upload.sh b/Android/dokit-amap-api/upload.sh new file mode 100755 index 000000000..c0fd63445 --- /dev/null +++ b/Android/dokit-amap-api/upload.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +echo -n "please enter bintray userid ->" +read userid_bintray +echo -n "please enter bintray apikey ->" +read apikey_bintray +../gradlew clean build --stacktrace --info bintrayUpload -PbintrayUser=${userid_bintray} -PbintrayKey=${apikey_bintray} -PdryRun=false \ No newline at end of file diff --git a/Android/dokit-amap-no-privacy/.gitignore b/Android/dokit-amap-no-privacy/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/Android/dokit-amap-no-privacy/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/Android/dokit-amap-no-privacy/build.gradle b/Android/dokit-amap-no-privacy/build.gradle new file mode 100644 index 000000000..81e6d39c4 --- /dev/null +++ b/Android/dokit-amap-no-privacy/build.gradle @@ -0,0 +1,47 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply from: '../upload.gradle' + +android { + compileSdkVersion rootProject.ext.android["compileSdkVersion"] + + defaultConfig { + minSdkVersion rootProject.ext.android["minSdkVersion_16"] + targetSdkVersion rootProject.ext.android["targetSdkVersion"] + versionCode rootProject.ext.android["versionCode"] + versionName rootProject.ext.android["versionName"] + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } } + } + + buildTypes { + debug { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + + lintOptions { + abortOnError false + } + +} + + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + if (needKotlinV14()) { + implementation rootProject.ext.dependencies["kotlin_v14"] + } else { + implementation rootProject.ext.dependencies["kotlin_v13"] + } + //高德导航 + compileOnly rootProject.ext.dependencies["amap_navi_v801"] + +} + diff --git a/Android/dokit-amap-no-privacy/gradle.properties b/Android/dokit-amap-no-privacy/gradle.properties new file mode 100644 index 000000000..892ca9001 --- /dev/null +++ b/Android/dokit-amap-no-privacy/gradle.properties @@ -0,0 +1 @@ +ARTIFACT_ID=dokitx-okhttp-api \ No newline at end of file diff --git a/Android/dokit-amap-no-privacy/proguard-rules.pro b/Android/dokit-amap-no-privacy/proguard-rules.pro new file mode 100644 index 000000000..fed85b436 --- /dev/null +++ b/Android/dokit-amap-no-privacy/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 from file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/Android/dokit-amap-no-privacy/src/main/AndroidManifest.xml b/Android/dokit-amap-no-privacy/src/main/AndroidManifest.xml new file mode 100644 index 000000000..04acf1e8f --- /dev/null +++ b/Android/dokit-amap-no-privacy/src/main/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + diff --git a/Android/dokit-amap-no-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapNoPrivacy.kt b/Android/dokit-amap-no-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapNoPrivacy.kt new file mode 100644 index 000000000..690a67439 --- /dev/null +++ b/Android/dokit-amap-no-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapNoPrivacy.kt @@ -0,0 +1,22 @@ +package com.didichuxing.doraemonkit.amap_api + +import android.app.Application +import com.amap.api.navi.AMapNavi + + +/** + * ================================================ + * 作 者:jaydroid(王学杰) + * 版 本:1.0 + * 创建日期:2021/11/17-14:55 + * 描 述: + * 修订历史: + * ================================================ + */ +object AMapWrapNoPrivacy { + + fun createAMapNavi(application: Application): AMapNavi? { + return AMapNavi.getInstance(application) + } + +} diff --git a/Android/dokit-amap-no-privacy/upload.sh b/Android/dokit-amap-no-privacy/upload.sh new file mode 100755 index 000000000..c0fd63445 --- /dev/null +++ b/Android/dokit-amap-no-privacy/upload.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +echo -n "please enter bintray userid ->" +read userid_bintray +echo -n "please enter bintray apikey ->" +read apikey_bintray +../gradlew clean build --stacktrace --info bintrayUpload -PbintrayUser=${userid_bintray} -PbintrayKey=${apikey_bintray} -PdryRun=false \ No newline at end of file diff --git a/Android/dokit-amap-with-privacy/.gitignore b/Android/dokit-amap-with-privacy/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/Android/dokit-amap-with-privacy/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/Android/dokit-amap-with-privacy/build.gradle b/Android/dokit-amap-with-privacy/build.gradle new file mode 100644 index 000000000..5d3932cb1 --- /dev/null +++ b/Android/dokit-amap-with-privacy/build.gradle @@ -0,0 +1,47 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply from: '../upload.gradle' + +android { + compileSdkVersion rootProject.ext.android["compileSdkVersion"] + + defaultConfig { + minSdkVersion rootProject.ext.android["minSdkVersion_16"] + targetSdkVersion rootProject.ext.android["targetSdkVersion"] + versionCode rootProject.ext.android["versionCode"] + versionName rootProject.ext.android["versionName"] + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } } + } + + buildTypes { + debug { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + + lintOptions { + abortOnError false + } + +} + + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + if (needKotlinV14()) { + implementation rootProject.ext.dependencies["kotlin_v14"] + } else { + implementation rootProject.ext.dependencies["kotlin_v13"] + } + //高德导航 + compileOnly rootProject.ext.dependencies["amap_navi_v810"] + +} + diff --git a/Android/dokit-amap-with-privacy/gradle.properties b/Android/dokit-amap-with-privacy/gradle.properties new file mode 100644 index 000000000..892ca9001 --- /dev/null +++ b/Android/dokit-amap-with-privacy/gradle.properties @@ -0,0 +1 @@ +ARTIFACT_ID=dokitx-okhttp-api \ No newline at end of file diff --git a/Android/dokit-amap-with-privacy/proguard-rules.pro b/Android/dokit-amap-with-privacy/proguard-rules.pro new file mode 100644 index 000000000..fed85b436 --- /dev/null +++ b/Android/dokit-amap-with-privacy/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 from file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/Android/dokit-amap-with-privacy/src/main/AndroidManifest.xml b/Android/dokit-amap-with-privacy/src/main/AndroidManifest.xml new file mode 100644 index 000000000..68a9ff25e --- /dev/null +++ b/Android/dokit-amap-with-privacy/src/main/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + diff --git a/Android/dokit-amap-with-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapWithPrivacy.kt b/Android/dokit-amap-with-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapWithPrivacy.kt new file mode 100644 index 000000000..050405db5 --- /dev/null +++ b/Android/dokit-amap-with-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapWithPrivacy.kt @@ -0,0 +1,32 @@ +package com.didichuxing.doraemonkit.amap_api + +import android.app.Application +import com.amap.api.navi.AMapNavi +import com.amap.api.navi.NaviSetting + + +/** + * ================================================ + * 作 者:jaydroid(王学杰) + * 版 本:1.0 + * 创建日期:2021/11/17-14:55 + * 描 述: + * 修订历史: + * ================================================ + */ +object AMapWrapWithPrivacy { + + fun createAMapNavi(application: Application): AMapNavi? { + var aMapNavi: AMapNavi? = null + //确保调用SDK任何接口前先调用更新隐私合规updatePrivacyShow、updatePrivacyAgree两个接口并且参数值都为true,若未正确设置有崩溃风险 + //官方文档:https://lbs.amap.com/api/android-navi-sdk/guide/create-project/configuration-considerations#t3 + NaviSetting.updatePrivacyShow(application, true, true) + NaviSetting.updatePrivacyAgree(application, true) + try { + aMapNavi = AMapNavi.getInstance(application) + } catch (e: Exception) { + e.printStackTrace() + } + return aMapNavi + } +} diff --git a/Android/dokit-amap-with-privacy/upload.sh b/Android/dokit-amap-with-privacy/upload.sh new file mode 100755 index 000000000..c0fd63445 --- /dev/null +++ b/Android/dokit-amap-with-privacy/upload.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +echo -n "please enter bintray userid ->" +read userid_bintray +echo -n "please enter bintray apikey ->" +read apikey_bintray +../gradlew clean build --stacktrace --info bintrayUpload -PbintrayUser=${userid_bintray} -PbintrayKey=${apikey_bintray} -PdryRun=false \ No newline at end of file diff --git a/Android/dokit-util/build.gradle b/Android/dokit-util/build.gradle index 4148553b8..0b6418844 100644 --- a/Android/dokit-util/build.gradle +++ b/Android/dokit-util/build.gradle @@ -1,4 +1,5 @@ apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' apply from: '../upload.gradle' android { @@ -36,10 +37,14 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') + testImplementation rootProject.ext.dependencies["junit"] + androidTestImplementation rootProject.ext.dependencies["junit"] if (needKotlinV14()) { implementation rootProject.ext.dependencies["kotlin_v14"] + testImplementation rootProject.ext.dependencies["kotlin_junit_v14"] } else { implementation rootProject.ext.dependencies["kotlin_v13"] + testImplementation rootProject.ext.dependencies["kotlin_junit_v13"] } implementation rootProject.ext.dependencies["annotation"] implementation rootProject.ext.dependencies["fragment"] diff --git a/Android/dokit-util/src/main/java/com/didichuxing/doraemonkit/util/VersionUtils.kt b/Android/dokit-util/src/main/java/com/didichuxing/doraemonkit/util/VersionUtils.kt new file mode 100644 index 000000000..6eed8c2b8 --- /dev/null +++ b/Android/dokit-util/src/main/java/com/didichuxing/doraemonkit/util/VersionUtils.kt @@ -0,0 +1,67 @@ +package com.didichuxing.doraemonkit.util + + +/** + * ================================================ + * 作 者:jaydroid(王学杰) + * 版 本:1.0 + * 创建日期:2021/11/17-14:55 + * 描 述: + * 修订历史: + * ================================================ + */ +object VersionUtils { + + /** + * Compare two string version + * + * @param version1 + * @param version2 + * @return 0, 1, -1 + * + * 0: version1 = version2 + * 1: version1 > version2 + * -1: version1 < version2 + */ + @JvmStatic + fun compareVersion(version1: String, version2: String): Int { + return Version(version1).compareTo(Version(version2)) + } + + class Version(val version: String) : Comparable { + + init { + require(version.matches("[0-9]+(\\.[0-9]+)*".toRegex())) { "Invalid version format" } + } + + override fun compareTo(other: Version): Int { + if (other.version.isBlank()) return 1 + val thisParts = this.version.split(".").toTypedArray() + val thatParts = other.version.split(".").toTypedArray() + val length = thisParts.size.coerceAtLeast(thatParts.size) + for (i in 0 until length) { + val thisPart = if (i < thisParts.size) thisParts[i].toInt() else 0 + val thatPart = if (i < thatParts.size) thatParts[i].toInt() else 0 + if (thisPart < thatPart) return -1 + if (thisPart > thatPart) return 1 + } + return 0 + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null) return false + return if (this.javaClass != other.javaClass) false + else this.compareTo(other as Version) == 0 + } + + override fun hashCode(): Int { + return version.hashCode() + } + + + } +} + + + diff --git a/Android/dokit-util/src/test/java/com/didichuxing/doraemonkit/util/VersionUtilsTest.kt b/Android/dokit-util/src/test/java/com/didichuxing/doraemonkit/util/VersionUtilsTest.kt new file mode 100644 index 000000000..7c6deddc2 --- /dev/null +++ b/Android/dokit-util/src/test/java/com/didichuxing/doraemonkit/util/VersionUtilsTest.kt @@ -0,0 +1,51 @@ +package com.didichuxing.doraemonkit.util + +import org.junit.Assert +import org.junit.Test +import java.util.* + +/** + * ================================================ + * 作 者:jaydroid(王学杰) + * 版 本:1.0 + * 创建日期:2021/11/17-14:55 + * 描 述: + * 修订历史: + * ================================================ + */ +class VersionUtilsTest { + + @Test + fun testCompareVersion() { + val v1 = VersionUtils.Version("1.1") + val v2 = VersionUtils.Version("1.1.1") + val result1 = v1.compareTo(v2) // return -1 (v1 < v2) + Assert.assertEquals(-1, result1) + + val v3 = VersionUtils.Version("2.0") + val v4 = VersionUtils.Version("1.9.9") + val result2 = v3.compareTo(v4) // return -1 (v3 > v4) + Assert.assertEquals(1, result2) + + val v5 = VersionUtils.Version("1.0") + val v6 = VersionUtils.Version("1") + val result3 = v5.compareTo(v6) // return 0 (v5 = v6) + Assert.assertEquals(0, result3) + + val versions: MutableList = ArrayList() + versions.add(VersionUtils.Version("2")) + versions.add(VersionUtils.Version("1.0.5")) + versions.add(VersionUtils.Version("1.01.0")) + versions.add(VersionUtils.Version("1.00.1")) + val min = Collections.min(versions) // return min version + val max = Collections.max(versions) // return max version + Assert.assertEquals(VersionUtils.Version("1.00.1"), min) + Assert.assertEquals(VersionUtils.Version("2"), max) + + // WARNING + val v7 = VersionUtils.Version("2.06") + val v8 = VersionUtils.Version("2.060") + val result5 = v7 == v8 // return false + Assert.assertFalse(result5) + } +} diff --git a/Android/dokit/build.gradle b/Android/dokit/build.gradle index 3494f1ca8..0029301c0 100644 --- a/Android/dokit/build.gradle +++ b/Android/dokit/build.gradle @@ -59,8 +59,8 @@ android { dependencies { //implementation fileTree(include: ['*.jar'], dir: 'libs') //noinspection GradleCompatible - testImplementation 'junit:junit:4.12' - androidTestImplementation 'junit:junit:4.12' + testImplementation rootProject.ext.dependencies["junit"] + androidTestImplementation rootProject.ext.dependencies["junit"] if (needKotlinV14()) { implementation rootProject.ext.dependencies["kotlin_v14"] } else { @@ -122,6 +122,8 @@ dependencies { compileOnly rootProject.ext.dependencies["amap_location"] //高德导航 compileOnly rootProject.ext.dependencies["amap_navi"] + //amap wrap + implementation project(':dokit-amap-api') //腾讯地图定位 compileOnly rootProject.ext.dependencies["tencent_location"] // compileOnly rootProject.ext.dependencies["tencent_map"] diff --git a/Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/lbs/route/AMapRealNavMockView.kt b/Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/lbs/route/AMapRealNavMockView.kt index d360bcc5f..ec15e756e 100644 --- a/Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/lbs/route/AMapRealNavMockView.kt +++ b/Android/dokit/src/main/java/com/didichuxing/doraemonkit/kit/lbs/route/AMapRealNavMockView.kt @@ -11,9 +11,9 @@ import android.widget.SeekBar import android.widget.TextView import androidx.core.view.children import com.amap.api.navi.AMapNavi -import com.amap.api.navi.NaviSetting import com.didichuxing.doraemonkit.DoKit import com.didichuxing.doraemonkit.R +import com.didichuxing.doraemonkit.amap_api.AMapWrap import com.didichuxing.doraemonkit.kit.core.AbsDokitView import com.didichuxing.doraemonkit.kit.core.DokitViewLayoutParams import com.didichuxing.doraemonkit.kit.gpsmock.GpsMockManager @@ -40,15 +40,8 @@ class AMapRealNavMockView : AbsDokitView() { private var mAMapNavi: AMapNavi? = null override fun onCreate(context: Context?) { - //确保调用SDK任何接口前先调用更新隐私合规updatePrivacyShow、updatePrivacyAgree两个接口并且参数值都为true,若未正确设置有崩溃风险 - //官方文档:https://lbs.amap.com/api/android-navi-sdk/guide/create-project/configuration-considerations#t3 - NaviSetting.updatePrivacyShow(context, true, true) - NaviSetting.updatePrivacyAgree(context, true) - try { - mAMapNavi = AMapNavi.getInstance(activity.application) - } catch (e: Exception) { - e.printStackTrace() - } + //AMapWrap 类用于适配高德地图隐私合规接口 + mAMapNavi = AMapWrap.createAMapNavi(activity.application) } override fun onCreateView(context: Context?, rootView: FrameLayout?): View { diff --git a/Android/settings.gradle b/Android/settings.gradle index a9264e5e9..48dc182cd 100644 --- a/Android/settings.gradle +++ b/Android/settings.gradle @@ -7,6 +7,9 @@ include ':dokit-mc' include ':dokit-okhttp-v3' include ':dokit-okhttp-v4' include ':dokit-okhttp-api' +include ':dokit-amap-no-privacy' +include ':dokit-amap-with-privacy' +include ':dokit-amap-api' include ':dokit-weex' include ':dokit-no-op' include ':dokit-plugin' diff --git a/Android/upload_didi.sh b/Android/upload_didi.sh index 2706fbdec..9df1cdc67 100755 --- a/Android/upload_didi.sh +++ b/Android/upload_didi.sh @@ -20,10 +20,13 @@ RES="\033[0m" ./gradlew :dokit-okhttp-api:publish ./gradlew :dokit-okhttp-v3:publish ./gradlew :dokit-okhttp-v4:publish +./gradlew :dokit-amap-api:publish +./gradlew :dokit-amap-no-privacy:publish +./gradlew :dokit-amap-with-privacy:publish ./gradlew :dokit-plugin:publish ./gradlew :dokit-rpc:publish ./gradlew :dokit-rpc-mc:publish ./gradlew :dokit-util:publish ./gradlew :dokit-weex:publish ./gradlew :dokit-dmap:publish -echo -e "${GREEN_COLOR} 打包上传到滴滴内部仓库完成!!!${RES}" \ No newline at end of file +echo -e "${GREEN_COLOR} 打包上传到滴滴内部仓库完成!!!${RES}" diff --git a/Android/upload_local.sh b/Android/upload_local.sh index 68cb145f8..1822b6fac 100755 --- a/Android/upload_local.sh +++ b/Android/upload_local.sh @@ -19,6 +19,9 @@ RES="\033[0m" ./gradlew :dokit-okhttp-api:publish ./gradlew :dokit-okhttp-v3:publish ./gradlew :dokit-okhttp-v4:publish +./gradlew :dokit-amap-api:publish +./gradlew :dokit-amap-no-privacy:publish +./gradlew :dokit-amap-with-privacy:publish ./gradlew :dokit-plugin:publish ./gradlew :dokit-rpc:publish ./gradlew :dokit-rpc-mc:publish diff --git a/Android/upload_maven.sh b/Android/upload_maven.sh index fd05fe0e0..a6a373320 100755 --- a/Android/upload_maven.sh +++ b/Android/upload_maven.sh @@ -20,9 +20,12 @@ RES="\033[0m" ./gradlew :dokit-okhttp-api:publishReleasePublicationToMavenCentralRepository ./gradlew :dokit-okhttp-v3:publishReleasePublicationToMavenCentralRepository ./gradlew :dokit-okhttp-v4:publishReleasePublicationToMavenCentralRepository +./gradlew :dokit-amap-api:publishReleasePublicationToMavenCentralRepository +./gradlew :dokit-amap-no-privacy:publishReleasePublicationToMavenCentralRepository +./gradlew :dokit-amap-with-privacy:publishReleasePublicationToMavenCentralRepository ./gradlew :dokit-plugin:publishReleasePublicationToMavenCentralRepository ./gradlew :dokit-rpc:publishReleasePublicationToMavenCentralRepository ./gradlew :dokit-rpc-mc:publishReleasePublicationToMavenCentralRepository ./gradlew :dokit-util:publishReleasePublicationToMavenCentralRepository ./gradlew :dokit-weex:publishReleasePublicationToMavenCentralRepository -echo -e "${GREEN_COLOR} 打包上传到MavenCenter()仓库完成!!! ${RES}" \ No newline at end of file +echo -e "${GREEN_COLOR} 打包上传到MavenCenter()仓库完成!!! ${RES}" From 0baaa5932e30103d9a8ae02965207e4422d494fa Mon Sep 17 00:00:00 2001 From: jaydroid1024 Date: Thu, 18 Nov 2021 00:42:53 +0800 Subject: [PATCH 3/4] Correct ARTIFACT_ID for dokit-amap-api and the other two compatible lib --- Android/dokit-amap-api/gradle.properties | 2 +- Android/dokit-amap-no-privacy/gradle.properties | 2 +- Android/dokit-amap-with-privacy/gradle.properties | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Android/dokit-amap-api/gradle.properties b/Android/dokit-amap-api/gradle.properties index 892ca9001..c33fc2693 100644 --- a/Android/dokit-amap-api/gradle.properties +++ b/Android/dokit-amap-api/gradle.properties @@ -1 +1 @@ -ARTIFACT_ID=dokitx-okhttp-api \ No newline at end of file +ARTIFACT_ID=dokit-amap-api diff --git a/Android/dokit-amap-no-privacy/gradle.properties b/Android/dokit-amap-no-privacy/gradle.properties index 892ca9001..d6a0f703f 100644 --- a/Android/dokit-amap-no-privacy/gradle.properties +++ b/Android/dokit-amap-no-privacy/gradle.properties @@ -1 +1 @@ -ARTIFACT_ID=dokitx-okhttp-api \ No newline at end of file +ARTIFACT_ID=dokit-amap-no-privacy diff --git a/Android/dokit-amap-with-privacy/gradle.properties b/Android/dokit-amap-with-privacy/gradle.properties index 892ca9001..22f5e7d31 100644 --- a/Android/dokit-amap-with-privacy/gradle.properties +++ b/Android/dokit-amap-with-privacy/gradle.properties @@ -1 +1 @@ -ARTIFACT_ID=dokitx-okhttp-api \ No newline at end of file +ARTIFACT_ID=dokit-amap-with-privacy From 2a983fbdaa69da868101606875e03c8573085291 Mon Sep 17 00:00:00 2001 From: jaydroid1024 Date: Thu, 18 Nov 2021 00:55:27 +0800 Subject: [PATCH 4/4] 1. Remove generic exception caught 2. Remove unnecessary modify --- .../doraemondemo/amap/AMapRouterFragment.kt | 8 ++++---- .../doraemondemo/amap/DefaultNaviListener.kt | 8 ++++---- .../com/didichuxing/doraemonkit/amap_api/AMapWrap.kt | 2 +- .../doraemonkit/amap_api/AMapWrapNoPrivacy.kt | 2 +- .../doraemonkit/amap_api/AMapWrapWithPrivacy.kt | 10 ++-------- 5 files changed, 12 insertions(+), 18 deletions(-) diff --git a/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/AMapRouterFragment.kt b/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/AMapRouterFragment.kt index 84bba25b2..f68854784 100644 --- a/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/AMapRouterFragment.kt +++ b/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/AMapRouterFragment.kt @@ -29,7 +29,7 @@ class AMapRouterFragment : CommBaseFragment() { private var mDefaultNaviListener: DefaultNaviListener? = null private lateinit var mAmap: AMap private lateinit var mapView: MapView - private var mAMapNavi: AMapNavi? = null + private lateinit var mAMapNavi: AMapNavi private val mStartPoint = NaviLatLng(30.29659, 120.081127) private val mEndPoint = NaviLatLng(30.296793, 121.07527) override fun initActivityTitle(): String { @@ -149,18 +149,18 @@ class AMapRouterFragment : CommBaseFragment() { // 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。 mAmap.isMyLocationEnabled = true //AMapWrap 类用于适配高德地图隐私合规接口 - mAMapNavi = activity?.application?.let { AMapWrap.createAMapNavi(it) } + mAMapNavi = AMapWrap.createAMapNavi(activity?.application!!) val startList = mutableListOf() startList.add(mStartPoint) val endList = mutableListOf() endList.add(mEndPoint) - mAMapNavi?.calculateDriveRoute( + mAMapNavi.calculateDriveRoute( startList, endList, null, PathPlanningStrategy.DRIVING_MULTIPLE_ROUTES_DEFAULT ) - mAMapNavi?.addAMapNaviListener(activity?.application?.let { + mAMapNavi.addAMapNaviListener(activity?.application?.let { mDefaultNaviListener = DefaultNaviListener(mAmap, mAMapNavi, it) mDefaultNaviListener }) diff --git a/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/DefaultNaviListener.kt b/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/DefaultNaviListener.kt index ac013433e..1a7ff1be5 100644 --- a/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/DefaultNaviListener.kt +++ b/Android/app/src/main/java/com/didichuxing/doraemondemo/amap/DefaultNaviListener.kt @@ -20,7 +20,7 @@ import io.reactivex.disposables.Disposable * 修订历史: * ================================================ */ -class DefaultNaviListener(val mAMap: AMap, val mAMapNavi: AMapNavi?, val context: Context) : +class DefaultNaviListener(val mAMap: AMap, private val mAMapNavi: AMapNavi, val context: Context) : AMapNaviListener { // private var mNaviRouteOverlay: NaviRouteOverlay? = null // @@ -148,11 +148,11 @@ class DefaultNaviListener(val mAMap: AMap, val mAMapNavi: AMapNavi?, val context override fun onCalculateRouteSuccess(result: AMapCalcRouteResult?) { // LogHelper.i(TAG, "mAMapNavi.naviPath.coordList===>${mAMapNavi.naviPath.coordList.size}") // RouterManager.mCoordList = mAMapNavi.naviPath.coordList - val naviRouteOverlay = NaviRouteOverlay(mAMap, mAMapNavi?.naviPath, context) + val naviRouteOverlay = NaviRouteOverlay(mAMap, mAMapNavi.naviPath, context) naviRouteOverlay.setShowDefaultLineArrow(true) naviRouteOverlay.addToMap() // naviRouteOverlay.removeFromMap() - mAMapNavi?.setEmulatorNaviSpeed(10) + mAMapNavi.setEmulatorNaviSpeed(10) /** * CRUISE 巡航模式(数值:3) @@ -163,7 +163,7 @@ class DefaultNaviListener(val mAMap: AMap, val mAMapNavi: AMapNavi?, val context NONE 未开始导航(数值:-1) */ - mAMapNavi?.startNavi(NaviType.GPS) + mAMapNavi.startNavi(NaviType.GPS) // disp = MockGPSTaskManager.startGpsMockTask(mAMapNavi.naviPath)?.subscribe() } diff --git a/Android/dokit-amap-api/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrap.kt b/Android/dokit-amap-api/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrap.kt index 593bdf7fb..8a3e790de 100644 --- a/Android/dokit-amap-api/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrap.kt +++ b/Android/dokit-amap-api/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrap.kt @@ -28,7 +28,7 @@ object AMapWrap { compareResult != -1 } - fun createAMapNavi(application: Application): AMapNavi? { + fun createAMapNavi(application: Application): AMapNavi { return if (isAMapNaviVersionGreaterV810) { AMapWrapWithPrivacy.createAMapNavi(application) } else { diff --git a/Android/dokit-amap-no-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapNoPrivacy.kt b/Android/dokit-amap-no-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapNoPrivacy.kt index 690a67439..679295365 100644 --- a/Android/dokit-amap-no-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapNoPrivacy.kt +++ b/Android/dokit-amap-no-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapNoPrivacy.kt @@ -15,7 +15,7 @@ import com.amap.api.navi.AMapNavi */ object AMapWrapNoPrivacy { - fun createAMapNavi(application: Application): AMapNavi? { + fun createAMapNavi(application: Application): AMapNavi { return AMapNavi.getInstance(application) } diff --git a/Android/dokit-amap-with-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapWithPrivacy.kt b/Android/dokit-amap-with-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapWithPrivacy.kt index 050405db5..1671f8003 100644 --- a/Android/dokit-amap-with-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapWithPrivacy.kt +++ b/Android/dokit-amap-with-privacy/src/main/java/com/didichuxing/doraemonkit/amap_api/AMapWrapWithPrivacy.kt @@ -16,17 +16,11 @@ import com.amap.api.navi.NaviSetting */ object AMapWrapWithPrivacy { - fun createAMapNavi(application: Application): AMapNavi? { - var aMapNavi: AMapNavi? = null + fun createAMapNavi(application: Application): AMapNavi { //确保调用SDK任何接口前先调用更新隐私合规updatePrivacyShow、updatePrivacyAgree两个接口并且参数值都为true,若未正确设置有崩溃风险 //官方文档:https://lbs.amap.com/api/android-navi-sdk/guide/create-project/configuration-considerations#t3 NaviSetting.updatePrivacyShow(application, true, true) NaviSetting.updatePrivacyAgree(application, true) - try { - aMapNavi = AMapNavi.getInstance(application) - } catch (e: Exception) { - e.printStackTrace() - } - return aMapNavi + return AMapNavi.getInstance(application) } }