diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt index 4e1b574093..a55a2e7795 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt @@ -97,12 +97,12 @@ class TeleMsgHandler : IMsgHandler { AppConfigInfo.iPCMacAddress = carConfig.macAddress AppConfigInfo.dockerVersion = carConfig.dockVersion listener?.connectDevice(!carConfig.dockVersion.contains("2.3.0")) + CallerDevaToolsManager.getBindingCarInfo(carConfig.macAddress, MoGoAiCloudClientConfig.getInstance().sn) invokeNettyConnResult( "司机屏发送给乘客屏配置信息为:${ TextFormat.printer().escapingNonAscii(false).printToString(carConfig) }" ) - CallerDevaToolsManager.getBindingCarInfo(carConfig.macAddress, MoGoAiCloudClientConfig.getInstance().sn) } // SN 10 -> { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index 94a365252f..2b3cfffca7 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -35,7 +35,7 @@ import com.zhjt.mogo_core_function_devatools.apm.* import com.mogo.eagle.core.function.api.upgrade.* import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig -import com.zhjt.mogo_core_function_devatools.binding.BindingCarManager.Companion.bindingCarManager +import com.zhjt.mogo_core_function_devatools.binding.* import com.zhjt.mogo_core_function_devatools.env.EnvChangeManager import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigCenter.Companion.bizConfigCenter import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigImpl @@ -94,7 +94,7 @@ class DevaToolsProvider : IDevaToolsProvider { //升级(鹰眼/工控)与监控服务 iPCReportManager.initServer() moFangManager.init(mContext!!) - bindingCarManager.init(mContext!!) + BindingCarManager.init(mContext!!) apmEnvProvider.init(if(DebugConfig.isDebug()) "0" else "1", "${ DebugConfig.getNetMode() }", mDockerVersion ?: "") BadCaseManager.init() } @@ -319,29 +319,29 @@ class DevaToolsProvider : IDevaToolsProvider { } override fun modifyCarInfo(callBack: (ModifyBindingcarInfo) -> Unit) { - bindingCarManager.modifyCarInfo(callBack) + BindingCarManager.modifyCarInfo(callBack) } override fun getBindingCarInfo(macAddress: String, widevineIDWithMd5: String) { - bindingCarManager.getBindingCarInfo(macAddress, widevineIDWithMd5) + BindingCarManager.getBindingCarInfo(macAddress, widevineIDWithMd5) } override fun upgradeConfirm(images: List, padSn: String, releaseId: String) { - bindingCarManager.upgradeConfirm(images, padSn, releaseId) + BindingCarManager.upgradeConfirm(images, padSn, releaseId) } override fun queryContainers(padSn: String, dockerVersion: String) { - bindingCarManager.queryContainers(padSn, dockerVersion) + BindingCarManager.queryContainers(padSn, dockerVersion) } override fun queryAppUpgrade() { - bindingCarManager.queryAppUpgrade() + BindingCarManager.queryAppUpgrade() } override fun apmEnvProvider(): IApmEnvProvider = apmEnvProvider override fun queryObuUpgrade(obuVersionName: String) { - bindingCarManager.queryObuUpgrade(obuVersionName) + BindingCarManager.queryObuUpgrade(obuVersionName) } override fun upgradeProvider(): IMoGoUpgradeProvider? { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt index 360649eabe..17085e3dad 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt @@ -1,7 +1,9 @@ package com.zhjt.mogo_core_function_devatools.binding +import android.annotation.* import android.content.Context import android.text.TextUtils +import android.util.* import com.elegant.utils.UiThreadHandler import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.constants.SharedPrefsConstants @@ -27,15 +29,10 @@ import mogo.telematics.pad.MessagePad /** * 车辆绑定 */ -class BindingCarManager : IMoGoAutopilotCarConfigListener { +@SuppressLint("StaticFieldLeak") +object BindingCarManager : IMoGoAutopilotCarConfigListener { - companion object { - private const val TAG = "BindingCarManager" - - val bindingCarManager by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { - BindingCarManager() - } - } + private const val TAG = "BindingCarManager" private var mContext: Context? = null @@ -68,20 +65,7 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener { if (!TextUtils.isEmpty(carConfigResp.macAddress)) { Logger.d("${SceneConstant.M_BINDING}${TAG}", "onAutopilotCarConfig carConfigResp.macAddress = ${carConfigResp.macAddress} ") - var flag = false - if (mAddress.isNullOrEmpty()) { - flag = true - } - Logger.d("${SceneConstant.M_BINDING}${TAG}", - "onAutopilotCarConfig - triggerUpgrade -> $flag") getBindingCarInfo(carConfigResp.macAddress, MoGoAiCloudClientConfig.getInstance().sn) - if (flag) { - queryAppUpgrade() - val obuVersion = mObuVersion - if (obuVersion != null) { - queryObuUpgrade(obuVersion) - } - } } } @@ -91,12 +75,27 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener { * @param macAddress */ fun getBindingCarInfo(macAddress: String, widevineIDWithMd5: String) { + Log.d("UPGRADE", "-- getBindingCarInfo -- 1 -- : [mac: $macAddress, md5: $widevineIDWithMd5]") + var flag = false + if (!TextUtils.isEmpty(macAddress) && TextUtils.isEmpty(mAddress)) { + Log.d("UPGRADE", "-- getBindingCarInfo -- 2 -- : [mac: $macAddress, md5: $widevineIDWithMd5]") + flag = true + } + if (!TextUtils.isEmpty(macAddress) && !TextUtils.equals(macAddress, mAddress)) { + mAddress = macAddress + } + if (flag) { + Log.d("UPGRADE", "-- getBindingCarInfo -- 3 -- : [mac: $macAddress, md5: $widevineIDWithMd5]") + queryAppUpgrade() + val obuVersion = mObuVersion + if (obuVersion != null && !TextUtils.isEmpty(obuVersion)) { + queryObuUpgrade(obuVersion) + } + } CallerLogger.d("${SceneConstant.M_BINDING}${TAG}", "getBindingcarInfo macAddress = $macAddress--widevineIDWithMd5 = $widevineIDWithMd5 ---screenType = $screenType" ) SharedPrefsMgr.getInstance(mContext!!).putString(SharedPrefsConstants.APP_MAC, macAddress) - - mAddress = macAddress mWidevineIDWithMd5 = widevineIDWithMd5 if (screenType == 1) { //司机屏 driverScreen(macAddress, widevineIDWithMd5) @@ -183,12 +182,17 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener { * 查询app是否需要升级 */ fun queryAppUpgrade() { - Logger.d("${SceneConstant.M_BINDING}${TAG}", "queryAppUpgrade---role.toString() = $role ---mAddress = $mAddress ---spMac = ${SharedPrefsMgr.getInstance(mContext!!).getString(SharedPrefsConstants.APP_MAC)}") - (if (!mAddress.isNullOrEmpty()) mAddress else SharedPrefsMgr.getInstance(mContext!!) - .getString(SharedPrefsConstants.APP_MAC))?.let { - Logger.d("${SceneConstant.M_BINDING}${TAG}", "queryAppUpgrade---mAddress = $mAddress") + Log.d("UPGRADE", "---- 1 ----") + var macAddress = mAddress + if (TextUtils.isEmpty(macAddress)) { + Log.d("UPGRADE", "---- 2 ----") + macAddress = SharedPrefsMgr.getInstance(mContext!!) + .getString(SharedPrefsConstants.APP_MAC) + } + if (macAddress != null && !TextUtils.isEmpty(macAddress)) { + Log.d("UPGRADE", "---- 3 ----[mac: $macAddress]") UpgradeAppNetWorkManager.instance - ?.getAppUpgradeInfo(mContext, it, role.toString() + "") + ?.getAppUpgradeInfo(mContext, macAddress, role.toString() + "") } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/tts/TtsManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/tts/TtsManager.kt index 75c46d37ec..61f84531fe 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/tts/TtsManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/tts/TtsManager.kt @@ -1,11 +1,12 @@ package com.zhjt.mogo_core_function_devatools.tts import android.content.Context -import com.elegant.utils.storage.SharedPrefsMgr +import android.util.Log import com.mogo.commons.AbsMogoApplication import com.mogo.commons.voice.AIAssist import com.mogo.eagle.core.function.api.cloud.IMoGoCloudListener import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.zhjt.mogo_core_function_devatools.trace.TraceManager @@ -21,16 +22,14 @@ class TtsManager : IMoGoCloudListener { } fun initTts(context: Context) { - val sn = SharedPrefsMgr.getInstance(context).getString("sn") - if (sn.isNullOrEmpty()) { - CallerCloudListenerManager.addListener(TraceManager.TAG, this) - } + CallerCloudListenerManager.addListener(TraceManager.TAG, this) AIAssist.getInstance(context) } override fun tokenGot(token: String, sn: String) { - ThreadUtils.runOnUiThread { + Log.d(TAG, "网络获取到sn为:${sn},准备重新初始化Tts") + ThreadUtils.runOnUiThread({ AIAssist.getInstance(AbsMogoApplication.getApp()).initTtsAgain(sn) - } + }, ThreadUtils.MODE.QUEUE) } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeAppNetWorkManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeAppNetWorkManager.kt index f03c1fb9dd..2ebff7a0f3 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeAppNetWorkManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeAppNetWorkManager.kt @@ -68,7 +68,7 @@ class UpgradeAppNetWorkManager private constructor() { Log.d(TAG, "getAppUpgradeInfo: -> records:" + records?.entries?.joinToString(",") { itx -> "key:${itx.key} -> value:[${itx.value.joinToString(",") { "${it.first},${it.second}" } }]"}) val versionCode = AppUtils.getAppVersionCode() val versionName = AppUtils.getAppVersionName() - d(SceneConstant.M_BINDING + TAG, "getAppUpgradeInfo mac = $macAddress---type = $type---sn = $sn---versionCode =$versionCode---versionName =$versionName") + Log.d(SceneConstant.M_BINDING + TAG, "getAppUpgradeInfo mac = $macAddress---type = $type---sn = $sn---versionCode =$versionCode---versionName =$versionName") val request = UpgradeAppRequest(sn, macAddress, type, versionName, "1") val requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request)) provider?.recordUpgradeRecord(sn ?: "", macAddress, type, FunctionBuildConfig.isSupportPatchUpgrade) @@ -99,7 +99,7 @@ class UpgradeAppNetWorkManager private constructor() { private suspend fun doUpgrade(info: UpgradeAppInfo) { if (info.result != null) { val versionCode = AppUtils.getAppVersionCode() - d(SceneConstant.M_BINDING + TAG, "UpgradeAppInfo url = " + info.result.appUrl + "----code = " + info.result.versionCode + "--versionCode =" + versionCode + "--info.result = " + info.result) + Log.d(SceneConstant.M_BINDING + TAG, "UpgradeAppInfo url = " + info.result.appUrl + "----code = " + info.result.versionCode + "--versionCode =" + versionCode + "--info.result = " + info.result) if (info.result.versionCode > versionCode) { val patchInfo = info.result.patchInfo var downloadUrl: String = info.result.appUrl @@ -150,7 +150,7 @@ class UpgradeAppNetWorkManager private constructor() { deleteApkFile() } } else { - d(SceneConstant.M_BINDING + TAG, "UpgradeAppInfo onNext info == null") + Log.d(SceneConstant.M_BINDING + TAG, "UpgradeAppInfo onNext info == null") deleteApkFile() } } diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/cloud/CallerCloudListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/cloud/CallerCloudListenerManager.kt index bed5a7977a..0c2cab8ca1 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/cloud/CallerCloudListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/cloud/CallerCloudListenerManager.kt @@ -6,10 +6,25 @@ import com.mogo.eagle.core.function.call.base.CallerBase object CallerCloudListenerManager : CallerBase() { + @Volatile + private var token: String? = null + + @Volatile + private var sn: String? = null + + override fun doSomeAfterAddListener(tag: String, listener: IMoGoCloudListener) { + super.doSomeAfterAddListener(tag, listener) + if (!token.isNullOrEmpty() && !sn.isNullOrEmpty()) { + listener.tokenGot(token!!, sn!!) + } + } + /** * 分发获取到的设备sn */ fun invokeCloudTokenGot(token: String, sn: String) { + this.token = token + this.sn = sn M_LISTENERS.forEach { val listener = it.value listener.tokenGot(token, sn) diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java index 534f80f4d6..5b6a7b122a 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java @@ -1,6 +1,7 @@ package com.mogo.commons.voice; import android.content.Context; +import android.util.Log; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.ToastUtils; @@ -82,8 +83,11 @@ public class AIAssist { * 重新初始化Tts(首次sn获取比较慢,而TTS初始化比较早会拿不到授权) */ public void initTtsAgain(String sn) { + Log.d(TAG, "网络获取SN后重新初始化Tts!"); if (mTTS != null) { mTTS.initTts(sn); + } else { + Log.d(TAG, "TTS对象创建失败!"); } } diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java index 9fd381a21c..81083640d1 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java @@ -941,19 +941,21 @@ public class AMapViewWrapper implements IMogoMapView, */ private void loadPreVehicleModel() { CallerLogger.INSTANCE.d(M_MAP + TAG, "添加感知模型到地图中……"); - addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_WEI_ZHI, "添加感知模型到地图中……preVehicleStrWeiZhi="); + ThreadUtils.getIoPool().submit(() -> { + addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_WEI_ZHI, "添加感知模型到地图中……preVehicleStrWeiZhi="); - addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_PEOPLE, "添加感知模型到地图中……preVehicleStrPeople="); + addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_PEOPLE, "添加感知模型到地图中……preVehicleStrPeople="); - addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_BICYCLE, "添加感知模型到地图中……preVehicleStrBicycle="); + addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_BICYCLE, "添加感知模型到地图中……preVehicleStrBicycle="); - addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_TA_CHE, "添加感知模型到地图中……preVehicleStrTaChe="); + addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_TA_CHE, "添加感知模型到地图中……preVehicleStrTaChe="); - addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_MOTO, "添加感知模型到地图中……preVehicleStrMoto="); + addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_MOTO, "添加感知模型到地图中……preVehicleStrMoto="); - addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_BUS, "添加感知模型到地图中……preVehicleStrBus="); + addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_BUS, "添加感知模型到地图中……preVehicleStrBus="); - addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_TRUCK, "添加感知模型到地图中……preVehicleStrTruck="); + addPreVehicleModelWeiZhi(TrafficTypeEnum.TYPE_TRAFFIC_ID_TRUCK, "添加感知模型到地图中……preVehicleStrTruck="); + }); } /** diff --git a/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java b/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java index 707876c9b1..5324ac54d9 100644 --- a/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java +++ b/tts/tts-pad/src/main/java/com/mogo/tts/pad/PadTTS.java @@ -8,6 +8,7 @@ import android.os.Build; import android.os.Environment; import android.provider.Settings; import android.text.TextUtils; +import android.util.Log; import android.util.Pair; import androidx.annotation.MainThread; @@ -121,6 +122,7 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsList // 单独的语音播放 private boolean mHasAuth; private int retryCount; + private volatile boolean isAuthing = false; private void initFlushStatus() { if (!mHasFlush) { @@ -130,8 +132,10 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsList @Override public void initTts(String sn) { - if (!mHasAuth && sn != null && !sn.isEmpty()) { + if (!mHasAuth && sn != null && !sn.isEmpty() && !isAuthing) { initTtsConfig(sn); + } else { + Log.d(TAG, "不满足Tts初始化条件!" + mHasAuth + "," + sn + "," + isAuthing); } } @@ -163,6 +167,7 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsList } private void initDUILiteSDK(AuthConfig.Builder onlineBuilder, EchoConfig echoConfig) { + isAuthing = true; DUILiteSDK.init(mContext, new DUILiteConfig.Builder() .setApiKey("113cc31f6385113cc31f6385618c86f5") .setProductId("278586132") @@ -177,6 +182,7 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsList @Override public void success() { CallerLogger.INSTANCE.d(TAG, "授权成功"); + isAuthing = false; ThreadUtils.runOnUiThread(() -> { mHasAuth = true; initTtsEngine(); @@ -186,6 +192,7 @@ public class PadTTS implements IMogoTTS, VoiceClient.VoiceCmdCallBack, OnTtsList @Override public void error(String errorCode, final String errorInfo) { CallerLogger.INSTANCE.e(TAG, "error code : " + errorCode + " , error info :" + errorInfo); + isAuthing = false; if (retryCount++ < 3) { initDUILiteSDK(onlineBuilder, echoConfig); }