From bf2659d6e258aa9eb4396ba2699aad18505dfc14 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 25 Oct 2024 16:47:28 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[6.7.2]=20[fea]=20[=E7=9A=AE=E8=82=A4?= =?UTF-8?q?=E4=BF=A1=E6=81=AF]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/biz/skin/SkinProvider.kt | 99 +++++++++++++++++++ .../mogo/och/biz/skin/bean/SkinRespBean.kt | 25 +++++ .../och/biz/skin/net/OchSkinServiceApi.java | 31 ++++++ .../och/biz/skin/net/OchSkinServiceManager.kt | 58 +++++++++++ .../och/common/module/biz/skin/SkinManager.kt | 51 ++++++++++ .../och/common/module/biz/skin/SkinService.kt | 9 ++ .../common/module/constant/OchCommonConst.kt | 1 + .../logchainanalytic/OchChainLogManager.kt | 7 ++ .../mogo/och/facade/route/FacadeProvider.kt | 32 +----- 9 files changed, 286 insertions(+), 27 deletions(-) create mode 100644 OCH/common/biz/src/main/java/com/mogo/och/biz/skin/SkinProvider.kt create mode 100644 OCH/common/biz/src/main/java/com/mogo/och/biz/skin/bean/SkinRespBean.kt create mode 100644 OCH/common/biz/src/main/java/com/mogo/och/biz/skin/net/OchSkinServiceApi.java create mode 100644 OCH/common/biz/src/main/java/com/mogo/och/biz/skin/net/OchSkinServiceManager.kt create mode 100644 OCH/common/common/src/main/java/com/mogo/och/common/module/biz/skin/SkinManager.kt create mode 100644 OCH/common/common/src/main/java/com/mogo/och/common/module/biz/skin/SkinService.kt diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/SkinProvider.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/SkinProvider.kt new file mode 100644 index 0000000000..80e0dd154f --- /dev/null +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/SkinProvider.kt @@ -0,0 +1,99 @@ +package com.mogo.och.biz.skin + +import android.content.Context +import com.alibaba.android.arouter.facade.annotation.Route +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.och.biz.R +import com.mogo.och.biz.skin.bean.SkinRespBean +import com.mogo.och.biz.skin.net.OchSkinServiceManager +import com.mogo.och.common.module.biz.skin.SkinService +import com.mogo.och.common.module.constant.OchCommonConst +import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager +import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.common.module.utils.RxUtils +import com.mogo.skin.Skin +import com.mogo.skin.SkinManager +import com.mogo.skin.utils.FileUtils + +@Route(path = OchCommonConst.BIZ_SKIN) +class SkinProvider : SkinService { + + private var context: Context?= null + + private val TAG = "SkinProvider" + + override fun loadNewSkin() { + OchChainLogManager.writeChainLogSkin("皮肤信息","请求皮肤信息") + context?.let{ + OchSkinServiceManager.querySkinBysn(it,object : OchCommonServiceCallback{ + override fun onSuccess(data: SkinRespBean?) { + OchChainLogManager.writeChainLogSkin("皮肤信息","请求皮肤信息成功:${data}") + if (null != data && 0 == data.code) { + if(data.data==null){ + SkinManager.getInstance().loadSkin("") + OchChainLogManager.writeChainLogSkin("皮肤信息", "皮肤还原成功") + }else { + data.data?.let { skinInfo -> + if(skinInfo.empty()){ + SkinManager.getInstance().loadSkin("") + OchChainLogManager.writeChainLogSkin("皮肤信息", "皮肤还原成功") + return + } + val skin = Skin( + skinInfo.md5, + skinInfo.name, + skinInfo.url + ) + //换肤 + SkinManager.getInstance().downloadSkin(it, skin, object : + SkinManager.SkinLoadListener { + override fun onLoadSuccess() { + //MogoAnalyticUtils.track() + d(TAG, "皮肤下载成功……开始解压Raw下的视频") + OchChainLogManager.writeChainLogSkin( + "皮肤信息", + "加载皮肤成功:${data}" + ) + FileUtils.copyVideoRawToFile(it, R.raw::class.java.fields) + } + + override fun onLoadFailed(e: java.lang.Exception?) { + OchChainLogManager.writeChainLogSkin( + "皮肤信息", + "加载皮肤失败:${e}" + ) + RxUtils.createSubscribe(5_000) { + loadNewSkin() + } + } + }) + } + } + } + } + + override fun onError() { + super.onError() + OchChainLogManager.writeChainLogSkin("皮肤信息","请求皮肤信息网络失败5s后重试") + RxUtils.createSubscribe(5_000) { + loadNewSkin() + } + } + + override fun onFail(code: Int, msg: String?) { + OchChainLogManager.writeChainLogSkin("皮肤信息","请求皮肤信息失败code:${code} msg:${msg} 5s后重试") + RxUtils.createSubscribe(5_000) { + loadNewSkin() + } + } + + }) + } + + } + + override fun init(context: Context?) { + this.context = context + } + +} \ No newline at end of file diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/bean/SkinRespBean.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/bean/SkinRespBean.kt new file mode 100644 index 0000000000..097e938c18 --- /dev/null +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/bean/SkinRespBean.kt @@ -0,0 +1,25 @@ +package com.mogo.och.biz.skin.bean + +import com.mogo.eagle.core.data.BaseData +import com.mogo.och.common.module.biz.login.LoginInfo + +/** + * Created by pangfan on 2021/8/19 + * + * 状态查询返回数据结构 + */ +data class SkinRespBean(var data: Result?) : BaseData() { + data class Result( + var id: Long, + var name: String?, + var url: String?, + var md5: String?, + ) { + fun empty(): Boolean { + if(id<=0||name.isNullOrEmpty()||url.isNullOrEmpty()||md5.isNullOrEmpty()){ + return true + } + return false + } + } +} diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/net/OchSkinServiceApi.java b/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/net/OchSkinServiceApi.java new file mode 100644 index 0000000000..9a9a93c4bc --- /dev/null +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/net/OchSkinServiceApi.java @@ -0,0 +1,31 @@ +package com.mogo.och.biz.skin.net; + +import com.mogo.eagle.core.data.BaseData; +import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean; +import com.mogo.och.biz.login.bean.TaxiLoginReqBean; +import com.mogo.och.biz.login.bean.TaxiLoginRespBean; +import com.mogo.och.biz.login.bean.TaxiLoginSmsReqBean; +import com.mogo.och.biz.login.bean.TaxiLogoutReqBean; +import com.mogo.och.biz.skin.bean.SkinRespBean; + +import io.reactivex.Observable; +import retrofit2.http.Body; +import retrofit2.http.GET; +import retrofit2.http.Header; +import retrofit2.http.Headers; +import retrofit2.http.POST; +import retrofit2.http.Query; + +/** + * Created by pangfan on 2021/8/19 + *

+ * 网约车-出租车接口定义 + */ +interface OchSkinServiceApi { + + @Headers({"Content-type:application/json;charset=UTF-8"}) + @GET("/och-vehicle/api/resource/queryBySn") + Observable querySkinBysn(@Header("appId") String appId + , @Header("ticket") String ticket, @Query("sn") String sn); + +} diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/net/OchSkinServiceManager.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/net/OchSkinServiceManager.kt new file mode 100644 index 0000000000..6fe37da62c --- /dev/null +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/net/OchSkinServiceManager.kt @@ -0,0 +1,58 @@ +package com.mogo.och.biz.skin.net + +import android.content.Context +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean +import com.mogo.och.biz.skin.bean.SkinRespBean +import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket +import com.mogo.och.common.module.constant.OchCommonConst +import com.mogo.och.common.module.manager.cache.OchSPManager +import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.common.module.network.OchCommonSubscribeImpl +import com.mogo.och.common.module.network.interceptor.transformTry + +object OchSkinServiceManager { + + private const val TAG = "OchCommonServiceManager" + + private val ochSkinService: OchSkinServiceApi by lazy { + MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create( + OchSkinServiceApi::class.java + ) + } + + + /** + * 接单状态和登录状态查询 + * + * @param context + * @param callback + */ + @JvmStatic + fun querySkinBysn( + context: Context, + callback: OchCommonServiceCallback? + ) { + CallerLogger.d(TAG, "queryDriverServiceStatus:查询登录状态"); + val sn = + if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { + OchSPManager.getSn() + } else{ + LoginLanPassengerSocket.driverSn + } + + ochSkinService.querySkinBysn( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + sn + ).transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "querySkinBysn",false)) + + } + +} \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/skin/SkinManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/skin/SkinManager.kt new file mode 100644 index 0000000000..8e2a17486f --- /dev/null +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/skin/SkinManager.kt @@ -0,0 +1,51 @@ +package com.mogo.och.common.module.biz.skin + +import com.alibaba.android.arouter.launcher.ARouter +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.och.common.module.biz.lansocket.IOchLanPassengerStatusListener +import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket +import com.mogo.och.common.module.constant.OchCommonConst +import com.mogo.och.common.module.manager.cache.OchSPManager +import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager +import com.mogo.och.common.module.utils.RxUtils + +object SkinManager : IOchLanPassengerStatusListener { + + private val TAG = "SkinManager" + + private var skinService: SkinService? = + ARouter.getInstance().build(OchCommonConst.BIZ_SKIN).navigation() as SkinService + + + init { + if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { + LoginLanPassengerSocket.addListener(TAG,this) + } + } + fun load(){ + OchChainLogManager.writeChainLogInit("初始化信息","初始化皮肤信息") + loadNewSkin() + } + + private fun loadNewSkin(){ + if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { + val driverSn = OchSPManager.getSn() + if(driverSn.isNullOrEmpty()){ + OchChainLogManager.writeChainLogSkin("司机皮肤信息","没有sn 需要等待5s再去请求") + RxUtils.createSubscribe(5_000) { + skinService?.loadNewSkin() + } + }else{ + skinService?.loadNewSkin() + } + } else{ + skinService?.loadNewSkin() + } + } + + override fun onDriverSnChagneListner(sn: String?) { + OchChainLogManager.writeChainLogSkin("乘客皮肤信息","司机屏sn变化 重新加载皮肤") + skinService?.loadNewSkin() + } +} \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/skin/SkinService.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/skin/SkinService.kt new file mode 100644 index 0000000000..b85a772ebd --- /dev/null +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/skin/SkinService.kt @@ -0,0 +1,9 @@ +package com.mogo.och.common.module.biz.skin + +import com.alibaba.android.arouter.facade.template.IProvider + +interface SkinService : IProvider { + + fun loadNewSkin() + +} \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt index a57266e728..c6cb524183 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt @@ -29,6 +29,7 @@ class OchCommonConst { const val WAIT_TAKEN = 100046 const val BIZ_LOGIN = "/ochbiz/common/login" + const val BIZ_SKIN = "/ochbiz/common/skin" const val BUS_DRIVER = "/busdriver/busdriver" const val BUS_PASSENGER = "/buspassenger/buspassenger" diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/logchainanalytic/OchChainLogManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/logchainanalytic/OchChainLogManager.kt index a62dd8509c..1ce5e50cda 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/logchainanalytic/OchChainLogManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/logchainanalytic/OchChainLogManager.kt @@ -39,6 +39,8 @@ object OchChainLogManager { // 初始化信息 const val EVENT_KEY_INFO_INIT = "event_key_och_init" + // 初始化信息 + const val EVENT_KEY_INFO_SKIN = "event_key_och_skin" // 局域网内socket 通讯 const val EVENT_KEY_INFO_SOCKET = "analytics_event_och_track_screen_msg" @@ -84,6 +86,11 @@ object OchChainLogManager { fun writeChainLogInit(title: String, info: String) { writeChainLog(title,info,true,EVENT_KEY_INFO_INIT) } + + fun writeChainLogSkin(title: String, info: String) { + writeChainLog(title,info,true,EVENT_KEY_INFO_SKIN) + } + fun writeChainLogNetLanSocketConnect(title: String, info: String){ writeChainLog(title,info,true,EVENT_KEY_INFO_SOCKET_CONNECT) } diff --git a/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt b/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt index 3e703e35ac..c823257bd1 100644 --- a/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt +++ b/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt @@ -36,12 +36,10 @@ import com.mogo.och.common.module.biz.login.ILoginCallback import com.mogo.och.common.module.biz.login.LoginStatusEnum import com.mogo.och.common.module.biz.login.LoginStatusManager import com.mogo.och.common.module.biz.provider.CommonService +import com.mogo.och.common.module.biz.skin.SkinManager import com.mogo.och.common.module.constant.OchCommonConst import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager -import com.mogo.skin.Skin -import com.mogo.skin.SkinManager -import com.mogo.skin.SkinManager.SkinLoadListener -import com.mogo.skin.utils.FileUtils + import me.jessyan.autosize.utils.AutoSizeUtils /** @@ -58,29 +56,9 @@ abstract class FacadeProvider : IMoGoFunctionProvider, ILoginCallback { override fun init(context: Context) { d(TAG, "FacadeProvider:init__${ProcessUtils.getCurrentProcessName()}_$this") LoginStatusManager.addListener(TAG, this) - // TODO yangyakun 根据后台配置的用户租户对应的皮肤包进行下载换肤 - val skin = Skin( - "ee3e1b0ed6e33a51366949294b07787d", - "YiXin-skin_v1_2024_10_25.zip", - "https://carlife-static-1255510688.cos.ap-beijing.myqcloud.com/MoGoEagleEye/YiXin-skin_v1_2024_10_25.zip" - ) - val skinDeQing = Skin( - "a841e8819f06cfefa646f7adc697e070", - "DeQing-skin_v1_2024_10_25.zip", - "https://carlife-static-1255510688.cos.ap-beijing.myqcloud.com/MoGoEagleEye/DeQing-skin_v1_2024_10_25.zip" - ) - //换肤 - SkinManager.getInstance().downloadSkin(Utils.getApp(), skin, object : SkinLoadListener { - override fun onLoadSuccess() { - //MogoAnalyticUtils.track() - d(TAG,"皮肤下载成功……开始解压Raw下的视频") - FileUtils.copyVideoRawToFile(Utils.getApp(), R.raw::class.java.fields) - } - - override fun onLoadFailed(e: java.lang.Exception?) { - - } - }) + if(ProjectUtils.isSaas()) { + SkinManager.load() + } } override fun createCoverage(fragmentActivity: FragmentActivity?, integer: Int?): Fragment? { From 39088b7ed823e715585d1ca1c6b0d57f007b6fba Mon Sep 17 00:00:00 2001 From: renwj Date: Fri, 25 Oct 2024 17:29:45 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[6.7.0][=E5=9C=B0=E5=9B=BEsdk]=20=E6=9B=B4?= =?UTF-8?q?=E6=94=B9=E8=87=AA=E8=BD=A6=E6=A8=A1=E5=9E=8B=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?nt3d=E5=AD=97=E8=8A=82=E6=95=B0=E7=BB=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/functions/test/Nt3dByteArrayTest.kt | 81 +++++++++++++++++++ gradle.properties | 2 +- .../map/uicontroller/IMogoMapUIController.kt | 11 +++ .../main/java/com/mogo/map/AMapViewWrapper.kt | 21 +++++ 4 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 app/src/androidTest/java/com/mogo/functions/test/Nt3dByteArrayTest.kt diff --git a/app/src/androidTest/java/com/mogo/functions/test/Nt3dByteArrayTest.kt b/app/src/androidTest/java/com/mogo/functions/test/Nt3dByteArrayTest.kt new file mode 100644 index 0000000000..1ae5c111e2 --- /dev/null +++ b/app/src/androidTest/java/com/mogo/functions/test/Nt3dByteArrayTest.kt @@ -0,0 +1,81 @@ +package com.mogo.functions.test + +import androidx.test.core.app.ActivityScenario +import androidx.test.platform.app.InstrumentationRegistry +import com.mogo.eagle.core.data.enums.Carmodel +import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager +import com.mogo.eagle.core.function.main.MainLauncherActivity +import com.mogo.eagle.core.utilcode.mogo.logger.Logger +import com.zhidaoauto.map.sdk.open.renders.marker.BitmapDescriptorFactory +import kotlinx.coroutines.delay +import kotlinx.coroutines.runBlocking +import okio.use +import org.junit.Before +import org.junit.Test +import java.util.concurrent.TimeUnit + +class Nt3dByteArrayTest { + + + companion object { + private const val TAG = "NT3D_TEST" + } + + lateinit var launch: ActivityScenario + + @Before fun before() { + launch = ActivityScenario.launch(MainLauncherActivity::class.java) + } + + @Test fun testAllNt3d(): Unit = runBlocking { + val arguments = InstrumentationRegistry.getArguments() + val millis = arguments.getString("delay", "0").toLong() + Logger.d(TAG, "-- testAllNt3d --- 0 ---") + if (millis > 0) { + delay(millis) + } + Logger.d(TAG, "-- testAllNt3d --- 1 ---") + val interval = arguments.getString("interval", "0").toLong() + Carmodel.values().iterator().forEach { + Logger.d(TAG, "-- testAllNt3d --- 2 ---") + delay(interval) + Logger.d(TAG, "-- testAllNt3d --- 3 ---") + BitmapDescriptorFactory.from3DResource(InstrumentationRegistry.getInstrumentation().targetContext, it.rawValue)?.also { data -> + CallerMapUIServiceManager.getMapUIController()?.changeCurrentIcon(data, true) + } + } + delay(TimeUnit.MINUTES.toMillis(10)) + } + + + @Test fun testAllNt3d2(): Unit = runBlocking { + val arguments = InstrumentationRegistry.getArguments() + val millis = arguments.getString("delay", "0").toLong() + Logger.d(TAG, "-- testAllNt3d2 --- 0 ---") + if (millis > 0) { + delay(millis) + } + Logger.d(TAG, "-- testAllNt3d2 --- 1 ---") + val interval = arguments.getString("interval", "0").toLong() + val step = arguments.getString("step", "0").toInt() + var index = 0 + Carmodel.values().iterator().forEach { + Logger.d(TAG, "-- testAllNt3d2 --- 2 ---") + var useByteArray = false + if ((index % step) == 0) { + useByteArray = true + } + delay(interval) + Logger.d(TAG, "-- testAllNt3d2 --- 3 ---:useByteArray -> $useByteArray") + if (useByteArray) { + BitmapDescriptorFactory.from3DResource(InstrumentationRegistry.getInstrumentation().targetContext, it.rawValue)?.also { data -> + CallerMapUIServiceManager.getMapUIController()?.changeCurrentIcon(data, true) + } + } else { + CallerMapUIServiceManager.getMapUIController()?.changeCurrentIcon(it.rawValue) + } + index ++ + } + delay(TimeUnit.MINUTES.toMillis(10)) + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 4c0bce9973..fe439f20c8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -83,7 +83,7 @@ MOGO_TELEMATIC_VERSION=1.4.7.42 MOGO_SKIN_VERSION=1.4.7.49.14-debug ######## MogoAiCloudSDK Version ######## # 自研地图 -MAP_SDK_VERSION=3.4.1.18 +MAP_SDK_VERSION=3.4.1.19 MAP_SDK_DATA_VERSION=1.0.0.9 MAP_SDK_OPERATION_VERSION=1.1.4.1 # websocket diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.kt b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.kt index 9544100094..33ad96be44 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.kt +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.kt @@ -205,6 +205,17 @@ interface IMogoMapUIController { */ fun changeCurrentIcon(@RawRes iconId: Int) + /** + * 修改高精地图自车图标 + * @param data: 对应的资源的字节数组 + * @param is3D: + * 1. true + * 3d资源对应的格式为nt3d, 对应的data也需要为其二进制原始数组; + * 2. false + * 对应的是一个图片原始数组 + */ + fun changeCurrentIcon(data: ByteArray, is3D: Boolean) + /** * 自研地图是否匹配道路 * diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.kt b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.kt index c8ab5dc2cb..1294d9a89e 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.kt +++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.kt @@ -627,6 +627,27 @@ class AMapViewWrapper(mMapView: MapAutoView) : IMogoMapView, IMogoMapUIControlle } } + override fun changeCurrentIcon(data: ByteArray, is3D: Boolean) { + if (checkAMapView()) { + handler.post { + val changeResult = mMapView.getMapAutoViewHelper()!!.getMyLocationStyle()!! + .myLocationIcon(data, is3D) + if (!changeResult) { + val count = reChangeIconCount.incrementAndGet() + MapTraceUtil.log( + "", ChainConstant.CHAIN_CODE_HD_MAP_ICON_SET, TAG, + mapOf("changeCurrentIcon-count" to "$count") + ) + if (count >= 3) { + return@post + } + handler.postDelayed({ changeCurrentIcon(data, is3D) }, 300L) + reChangeIconCount.set(0) + } + } + } + } + override fun result(path: String) { invokeUploadLogFile(path) }