From a972ed7da95b885dbb6392f7f3aaa179784cc016 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Mon, 11 Sep 2023 18:38:42 +0800 Subject: [PATCH] [3.4.0-ma-sdk] merge --- .../mogo/launcher/startup/ConfigStartUp.kt | 2 - .../hmi/ui/setting/DebugSettingView.kt | 201 +++++++++++------- .../function/hmi/ui/widget/RomaTaxiView.kt | 1 + 3 files changed, 126 insertions(+), 78 deletions(-) diff --git a/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt b/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt index 5e7c714d10..be30d17f04 100644 --- a/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt +++ b/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt @@ -136,8 +136,6 @@ object ConfigStartUp { // 1-使用本地地图数据,0-使用在线地图数据 // .setDataFileSource(1) .setIsRecordLogs(false) - .setLocationIcon3DRes(HdMapBuildConfig.currentCarVrIconRes) - .setIsWeatherEnable(false) .setCoordinateType(MapParams.COORDINATETYPE_GCJ02) MapAutoApi.init(context, mapParams) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 9afcb519c2..bd8623a375 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -7,8 +7,8 @@ import android.content.ClipboardManager import android.content.Context import android.content.Intent import android.graphics.Color -import android.net.* import android.os.Build +import android.os.Looper import android.os.Process import android.text.Html import android.util.AttributeSet @@ -19,7 +19,8 @@ import androidx.appcompat.widget.PopupMenu import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import androidx.core.content.FileProvider -import androidx.core.view.* +import androidx.core.view.MenuCompat +import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope import chassis.Chassis import com.mogo.cloud.passport.MoGoAiCloudClient @@ -38,19 +39,19 @@ import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_FULL_ import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_RAIN_MODE import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_WARNING_UPLOAD import com.mogo.eagle.core.data.deva.chain.ChainConstant +import com.mogo.eagle.core.data.deva.report.ReportEntity import com.mogo.eagle.core.data.deva.scene.SceneModule import com.mogo.eagle.core.data.enums.TrafficTypeEnum import com.mogo.eagle.core.data.gnss.AccelerationEntity import com.mogo.eagle.core.data.map.MogoLocation +import com.mogo.eagle.core.data.multidisplay.TelematicConstant import com.mogo.eagle.core.data.obu.MogoObuConst import com.mogo.eagle.core.data.obu.ObuStatusInfo -import com.mogo.eagle.core.data.deva.report.ReportEntity -import com.mogo.eagle.core.data.multidisplay.TelematicConstant import com.mogo.eagle.core.function.api.autopilot.* -import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsFuncConfigListener -import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener import com.mogo.eagle.core.function.api.datacenter.obu.IMoGoObuConnectListener import com.mogo.eagle.core.function.api.datacenter.obu.IMoGoObuInfoListener +import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsFuncConfigListener +import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener import com.mogo.eagle.core.function.call.autopilot.* import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsFuncConfigListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager @@ -64,7 +65,10 @@ import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.ui.logcatch.ILogViewListener import com.mogo.eagle.core.function.hmi.ui.logcatch.LogInfoView -import com.mogo.eagle.core.utilcode.kotlin.* +import com.mogo.eagle.core.utilcode.kotlin.currentPadding +import com.mogo.eagle.core.utilcode.kotlin.lifecycleOwner +import com.mogo.eagle.core.utilcode.kotlin.onClick +import com.mogo.eagle.core.utilcode.kotlin.scope import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel import com.mogo.eagle.core.utilcode.mogo.logger.Logger @@ -73,11 +77,10 @@ import com.mogo.eagle.core.utilcode.mogo.permissions.BackgrounderPermission import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr import com.mogo.eagle.core.utilcode.mogo.toast.TipToast import com.mogo.eagle.core.utilcode.util.* -import com.mogo.map.hdcache.IHdCacheListener +import com.mogo.map.MogoData.Companion.mogoMapData import com.mogo.map.uicontroller.VisualAngleMode import com.mogo.map.uicontroller.VisualAngleMode.* import kotlinx.android.synthetic.main.view_debug_setting.view.* -import kotlinx.android.synthetic.main.view_debug_setting.view.tbRouteDynamicEffect import kotlinx.coroutines.* import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg @@ -191,10 +194,10 @@ internal class DebugSettingView @JvmOverloads constructor( */ private val timerTaskRefresh = object : TimerTask() { override fun run() { - if(this@DebugSettingView == null){ + if (this@DebugSettingView == null) { return } - if(!isRunCheck){ + if (!isRunCheck) { return } UiThreadHandler.post { @@ -292,11 +295,12 @@ internal class DebugSettingView @JvmOverloads constructor( } } + @SuppressLint("SetTextI18n") private fun initView() { post { - val maxHeight = ScreenUtils.getScreenHeight()-BarUtils.getStatusBarHeight() + val maxHeight = ScreenUtils.getScreenHeight() - BarUtils.getStatusBarHeight() val height = clDebugContain.height - if(height>maxHeight){ + if (height > maxHeight) { val layoutParamsOther = clDebugContain.layoutParams layoutParamsOther.height = maxHeight clDebugContain.layoutParams = layoutParamsOther @@ -587,10 +591,11 @@ internal class DebugSettingView @JvmOverloads constructor( if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { ThreadUtils.getIoPool().execute { - val isCached = CallerMapUIServiceManager.isCityDataCached() - isHDCached = isCached - UiThreadHandler.post { - btn_cache_hd_map.text = "缓存高精离线地图(${if (isCached) "已是最新版" else "待更新"}!)" + mogoMapData.get().isCityDataCached { + isHDCached = it + UiThreadHandler.post { + btn_cache_hd_map.text = "缓存高精离线地图(${if (it) "已是最新版" else "待更新"}!)" + } } } btn_cache_hd_map.visibility = View.VISIBLE @@ -626,9 +631,15 @@ internal class DebugSettingView @JvmOverloads constructor( */ tbControlPassengerDriverMonitor.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { - CallerTelematicManager.sendMsgToAllClients(TelematicConstant.CONTROL_PASSENGER_DRIVER_MONITOR, "1".toByteArray()) + CallerTelematicManager.sendMsgToAllClients( + TelematicConstant.CONTROL_PASSENGER_DRIVER_MONITOR, + "1".toByteArray() + ) } else { - CallerTelematicManager.sendMsgToAllClients(TelematicConstant.CONTROL_PASSENGER_DRIVER_MONITOR, "0".toByteArray()) + CallerTelematicManager.sendMsgToAllClients( + TelematicConstant.CONTROL_PASSENGER_DRIVER_MONITOR, + "0".toByteArray() + ) } } @@ -654,7 +665,8 @@ internal class DebugSettingView @JvmOverloads constructor( // 初始化OBU IP信息 val ipAddress = - SharedPrefsMgr.getInstance(context).getString(MoGoConfig.OBU_IP, MogoObuConst.OBU_DEFAULT_IP) + SharedPrefsMgr.getInstance(context) + .getString(MoGoConfig.OBU_IP, MogoObuConst.OBU_DEFAULT_IP) etObuIP.setText(ipAddress) etObuIP.text?.let { etObuIP.setSelection(it.length) } @@ -706,9 +718,11 @@ internal class DebugSettingView @JvmOverloads constructor( } tbIsStrictMode?.also { - it.isChecked = SharedPrefs.getInstance(Utils.getApp()).getBoolean("MOGO_STRICT_MODE_ENABLED", false) + it.isChecked = SharedPrefs.getInstance(Utils.getApp()) + .getBoolean("MOGO_STRICT_MODE_ENABLED", false) it.setOnCheckedChangeListener { _, isChecked -> - SharedPrefs.getInstance(Utils.getApp()).putBoolean("MOGO_STRICT_MODE_ENABLED", isChecked) + SharedPrefs.getInstance(Utils.getApp()) + .putBoolean("MOGO_STRICT_MODE_ENABLED", isChecked) scope.launch { ToastUtils.showShort("配置生效, 2秒后重启应用...") delay(2000) @@ -854,7 +868,8 @@ internal class DebugSettingView @JvmOverloads constructor( } else { try { val cloudSizeFloat = cloudSize.toFloat() - CallerMapUIServiceManager.getMapUIController()?.setPointCloudSize(cloudSizeFloat) + CallerMapUIServiceManager.getMapUIController() + ?.setPointCloudSize(cloudSizeFloat) } catch (e: Exception) { ToastUtils.showShort("点云大小格式输入不正确") } @@ -900,7 +915,7 @@ internal class DebugSettingView @JvmOverloads constructor( tbADASLog.isChecked = CallerAutoPilotControlManager.isEnableLog() //如果工控机异常上报列表窗口为展示状态,则显示上报异常布局 - if(CallerDevaToolsManager.getReportWindowStatus()){ + if (CallerDevaToolsManager.getReportWindowStatus()) { reportMsgLayout.visibility = View.VISIBLE tbReportMore.isChecked = true } @@ -933,7 +948,7 @@ internal class DebugSettingView @JvmOverloads constructor( clipboardManager?.setPrimaryClip( ClipData.newPlainText( "DockVersion", - CallerAutoPilotStatusListenerManager.getDockerVersion()?:"" + CallerAutoPilotStatusListenerManager.getDockerVersion() ?: "" ) ) ToastUtils.showLong("docker版本复制成功") @@ -1023,7 +1038,7 @@ internal class DebugSettingView @JvmOverloads constructor( //设置连接司机屏IP btnConnectServerIp.setOnClickListener { val ip = etConnectServerIp.text.toString() - if (!ip.isNullOrEmpty()) { + if (!ip.isEmpty()) { CallerAutoPilotControlManager.connectSpecifiedServer(ip) } } @@ -1046,13 +1061,15 @@ internal class DebugSettingView @JvmOverloads constructor( } if (!AppIdentityModeUtils.isTaxiDriver(FunctionBuildConfig.appIdentityMode) - && !AppIdentityModeUtils.isBusDriver(FunctionBuildConfig.appIdentityMode)){ + && !AppIdentityModeUtils.isBusDriver(FunctionBuildConfig.appIdentityMode) + ) { tbStartAutopilotCommand.visibility = GONE } //切换环境 - tvCurEnv.text = "当前环境:${CallerDevaToolsManager.getEnvCityName()}${CallerDevaToolsManager.getEnvNetMode()}" + tvCurEnv.text = + "当前环境:${CallerDevaToolsManager.getEnvCityName()}${CallerDevaToolsManager.getEnvNetMode()}" btChangeEnv.onClick { PopupMenu(context, btChangeEnv).also { p -> p.menuInflater.inflate(R.menu.menu_env_pop, p.menu) @@ -1068,13 +1085,22 @@ internal class DebugSettingView @JvmOverloads constructor( R.id.env_reset -> CallerDevaToolsManager.envConfigReset() R.id.hy_product -> - CallerDevaToolsManager.envConfigChange("0734", DebugConfig.NET_MODE_RELEASE) + CallerDevaToolsManager.envConfigChange( + "0734", + DebugConfig.NET_MODE_RELEASE + ) R.id.hy_qa -> CallerDevaToolsManager.envConfigChange("0734", DebugConfig.NET_MODE_QA) R.id.hy_demo -> - CallerDevaToolsManager.envConfigChange("0734", DebugConfig.NET_MODE_DEMO) + CallerDevaToolsManager.envConfigChange( + "0734", + DebugConfig.NET_MODE_DEMO + ) R.id.bj_product -> - CallerDevaToolsManager.envConfigChange("010", DebugConfig.NET_MODE_RELEASE) + CallerDevaToolsManager.envConfigChange( + "010", + DebugConfig.NET_MODE_RELEASE + ) R.id.bj_qa -> CallerDevaToolsManager.envConfigChange("010", DebugConfig.NET_MODE_QA) R.id.bj_demo -> @@ -1275,7 +1301,7 @@ internal class DebugSettingView @JvmOverloads constructor( * 设置是否输出高精地图日志 true-打印日志,false-不打印日志 */ tbHdMapLog.setOnCheckedChangeListener { _, isChecked -> - CallerMapUIServiceManager.getMapUIController()?.setDebugMode(isChecked) + mogoMapData.get().setDebugMode(isChecked) } cbTraceLog.isChecked = CallerDevaToolsManager.getTraceLogStatus() @@ -1557,8 +1583,10 @@ internal class DebugSettingView @JvmOverloads constructor( /** * 版本信息 */ - tvAppVersionName.text = "鹰眼版本:${AppUtils.getAppVersionName()} Git Hash:${AppConfigInfo.workingBranchHash} \n渠道信息:${AppConfigInfo.flavor}" - tvAppVersionNameKey.text = "鹰眼版本:${AppUtils.getAppVersionName()} Git Hash:${AppConfigInfo.workingBranchHash}\n渠道信息:${AppConfigInfo.flavor}" + tvAppVersionName.text = + "鹰眼版本:${AppUtils.getAppVersionName()} Git Hash:${AppConfigInfo.workingBranchHash} \n渠道信息:${AppConfigInfo.flavor}" + tvAppVersionNameKey.text = + "鹰眼版本:${AppUtils.getAppVersionName()} Git Hash:${AppConfigInfo.workingBranchHash}\n渠道信息:${AppConfigInfo.flavor}" tvAutopilotProtocolVersionInfo.text = "Autopilot协议版本:${CallerAutoPilotControlManager.getProtocolVersion()}" @@ -1575,9 +1603,12 @@ internal class DebugSettingView @JvmOverloads constructor( tvGitBranchInfo.text = "Git分支:${AppConfigInfo.workingBranchName}" tvAppBuildTimeInfo.text = "版本构建时间:${AppConfigInfo.appBuildTime}" - if(tbBeautyMode.isVisible){ - val version = ParseVersionUtils.parseVersion(true, CallerAutoPilotStatusListenerManager.getDockerVersion()) - if(version >= 30100 && AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)){ + if (tbBeautyMode.isVisible) { + val version = ParseVersionUtils.parseVersion( + true, + CallerAutoPilotStatusListenerManager.getDockerVersion() + ) + if (version >= 30100 && AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) { tbBeautyMode.visibility = View.GONE } } @@ -1610,7 +1641,7 @@ internal class DebugSettingView @JvmOverloads constructor( "移动数据" } else { //WiFi - CommonUtils.getWifiName(context)?:"" + CommonUtils.getWifiName(context) ?: "" } } else { @@ -1685,11 +1716,14 @@ internal class DebugSettingView @JvmOverloads constructor( tvIpcInfo.text = it tvIpcInfoKey.text = it } - tvCmdbCarInfoContent.text = SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.CAR_INFO)?:"" + tvCmdbCarInfoContent.text = + SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.CAR_INFO) ?: "" //APP升级功能 - tvAppHost.text = "HOST地址:" + SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.HOST_ADDRESS)?:"" - tvAppContent.text = "APP升级数据:" + SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.APP_UPGRADE_CONTENT)?:"" + tvAppHost.text = "HOST地址:" + SharedPrefsMgr.getInstance(context) + .getString(SharedPrefsConstants.HOST_ADDRESS) ?: "" + tvAppContent.text = "APP升级数据:" + SharedPrefsMgr.getInstance(context) + .getString(SharedPrefsConstants.APP_UPGRADE_CONTENT) ?: "" tvCarInfo.text = "GPS时间:${(mGnssInfo?.satelliteTime?.times(1000))?.toLong()}\n" + @@ -1727,7 +1761,7 @@ internal class DebugSettingView @JvmOverloads constructor( tbIsDemoMode?.text = "开启美化模式" } - if(FunctionBuildConfig.isRainMode){ + if (FunctionBuildConfig.isRainMode) { tbIsRainMode?.text = "关闭雨天模式" } else { tbIsRainMode?.text = "开启雨天模式" @@ -2114,56 +2148,71 @@ internal class DebugSettingView @JvmOverloads constructor( } private fun restartApp() { - Utils.getApp().startActivity(Utils.getApp().packageManager.getLaunchIntentForPackage(Utils.getApp().packageName)) + Utils.getApp() + .startActivity(Utils.getApp().packageManager.getLaunchIntentForPackage(Utils.getApp().packageName)) Process.killProcess(Process.myPid()) } private fun cacheHDOfflineData(isGaoDe: Boolean) { - var progss = 0 if (isGaoDe) {// 拿到了高德地图的cityCode - CallerMapUIServiceManager.cacheHDDataByCity(object : IHdCacheListener { - override fun onMapHdCacheProgress(cityId: Int, progress: Double) { - // 更新进度 - progss = progress.toInt() - if (progss == 100) { - isHDCached = true - btn_cache_hd_map.text = "缓存高精离线地图(已是最新版!)" - } else { - btn_cache_hd_map.text = "缓存高精离线地图(进度:${progss}%)" - } + mogoMapData.get().cacheHDDataByCity({ _, progress -> + if (Thread.currentThread() != Looper.getMainLooper().thread) { + ThreadUtils.runOnUiThread(Runnable { + cacheHDCityProgressUpdate(progress) + }, ThreadUtils.MODE.QUEUE) + } else { + cacheHDCityProgressUpdate(progress) } - - override fun onMapHdCacheResult(cityId: Int, state: Int) { - if (state == 0) {// 失败 - btn_cache_hd_map.text = "缓存高精离线地图(下载失败!)" - ToastUtils.showShort("下载失败,请重试!") - } + }, { _, state -> + if (Thread.currentThread() != Looper.getMainLooper().thread) { + ThreadUtils.runOnUiThread(Runnable { + cacheHDCityResult(state) + }, ThreadUtils.MODE.QUEUE) + } else { + cacheHDCityResult(state) } }) } else {// 只拿到了高精的经纬度 mGnssInfo?.let { loc -> - CallerMapUIServiceManager.cacheHDDataByCityByLonLat(object : IHdCacheListener { - override fun onMapHdCacheProgress(cityId: Int, progress: Double) { - progss = progress.toInt() - if (progss == 100) { - isHDCached = true - btn_cache_hd_map.text = "缓存高精离线地图(已是最新版!)" - } else { - btn_cache_hd_map.text = "缓存高精离线地图(进度:${progss}%)" - } + mogoMapData.get().cacheHDDataByCityByLonLat(loc, { _, progress -> + if (Thread.currentThread() != Looper.getMainLooper().thread) { + ThreadUtils.runOnUiThread(Runnable { + cacheHDCityProgressUpdate(progress) + }, ThreadUtils.MODE.QUEUE) + } else { + cacheHDCityProgressUpdate(progress) } - - override fun onMapHdCacheResult(cityId: Int, state: Int) { - if (state == 0) {// 失败 - btn_cache_hd_map.text = "缓存高精离线地图(下载失败!)" - ToastUtils.showShort("下载失败,请重试!") - } + }, { _, state -> + if (Thread.currentThread() != Looper.getMainLooper().thread) { + ThreadUtils.runOnUiThread(Runnable { + cacheHDCityResult(state) + }, ThreadUtils.MODE.QUEUE) + } else { + cacheHDCityResult(state) } - }, loc) + }) } } } + private fun cacheHDCityProgressUpdate(progress: Double) { + // 更新进度 + val progss = progress.toInt() + if (progss == 100) { + isHDCached = true + btn_cache_hd_map.text = "缓存高精离线地图(已是最新版!)" + } else { + btn_cache_hd_map.text = "缓存高精离线地图(进度:${progss}%)" + } + } + + private fun cacheHDCityResult(state: Int) { + if (state == 0) {// 失败 + btn_cache_hd_map.text = "缓存高精离线地图(下载失败!)" + ToastUtils.showShort("下载失败,请重试!") + } + } + override fun fwThreadClose() { refreshTraceInfo() } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaTaxiView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaTaxiView.kt index 9f9eff339f..8ce301a8c1 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaTaxiView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/RomaTaxiView.kt @@ -11,6 +11,7 @@ import com.mogo.eagle.core.function.call.map.CallerMapIdentifyManager.romaTrigge import com.mogo.eagle.core.function.call.map.CallerMapRomaListener import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.util.ClickUtils +import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import kotlinx.android.synthetic.main.view_roma_taxi_bg.view.ivRomaView import kotlinx.android.synthetic.main.view_roma_taxi_bg.view.ll_roma_bg