Files
MoGoEagleEye/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt
yangyakun 8755b95e5b [8.5.0]
[f2a 登录]
2026-04-22 19:19:53 +08:00

186 lines
9.1 KiB
Kotlin
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.mogo.launcher.startup
import android.content.Context
import com.autonavi.nge.hdmap.HDMapProvider
import com.google.gson.reflect.TypeToken
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.data.app.UrlConfig
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.config.HmiBuildConfig
import com.mogo.eagle.core.data.config.JunkConfig
import com.mogo.eagle.core.data.deva.chain.ChainConstant
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.ProcessUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.launcher.BuildConfig
import com.shuyu.gsyvideoplayer.player.IjkPlayerManager
import com.zhidaoauto.map.sdk.open.MapAutoApi
import com.zhidaoauto.map.sdk.open.MapParams
import com.zhjt.mogo_core_function_devatools.env.EnvChangeManager
import com.zhjt.service.chain.ChainLog
import tv.danmaku.ijk.media.player.IjkMediaPlayer
import java.util.concurrent.atomic.AtomicReference
object ConfigStartUp {
private const val TAG = "ConfigStartUp"
private val redisCallback by lazy { AtomicReference<HDMapProvider.IRedisLoadCallback>()}
@JvmStatic
fun init(context: Context) {
initDebugConfig()
initBuildConfig()
initOtherConfig(context)
}
private fun initBuildConfig() {
//ijk关闭log
IjkPlayerManager.setLogLevel(IjkMediaPlayer.IJK_LOG_SILENT);
// 初始化构建APP的时候的分支及提交HASH用于辅助定位问题
AppConfigInfo.workingBranchName = BuildConfig.WORKING_BRANCH_NAME
AppConfigInfo.workingBranchHash = BuildConfig.WORKING_BRANCH_HASH
AppConfigInfo.appBuildTime = BuildConfig.APP_BUILD_TIME
AppConfigInfo.flavor = BuildConfig.FLAVOR
// 使用与渠道配置一样的gps提供者提供的数据,app/productFlavors/fPadLenovo.gradle GPS_PROVIDER 0-Android系统1-工控机2-OBU
FunctionBuildConfig.gpsProvider = BuildConfig.GPS_PROVIDER
// 演示模式,上一次勾选的数据
FunctionBuildConfig.isDemoMode = BuildConfig.IS_DEMO_MODE
FunctionBuildConfig.ttsLanguage = BuildConfig.ttsLanguage
FunctionBuildConfig.loginMode = BuildConfig.loginMode
// 各个module需要的url
FunctionBuildConfig.urlJson = GsonUtils.fromJson(BuildConfig.URLs, UrlConfig::class.java)
// 各车型宣传视频本地配置json
FunctionBuildConfig.mediaUrlConfig = BuildConfig.mediaUrlConfig
//是否支持Patch升级
FunctionBuildConfig.isSupportPatchUpgrade = BuildConfig.IS_SUPPORT_PATCH_UPGRADE
// app安装的身份信息
// 这里影响当前Activity的身份信息多进程主进程为司机端:passenger 进程为乘客端
// TODO emArrow isMultiDisplay暂时不启用仅测试3588在B2 2024车预研
if(BuildConfig.enableSweeper==true){
FunctionBuildConfig.appIdentityMode = "Sweeper_${BuildConfig.APP_IDENTITY_MODE_BODY}_C1"
}else {
FunctionBuildConfig.appIdentityMode = "Product_${BuildConfig.APP_IDENTITY_MODE_BODY}_Vehicle"
}
// 不同身份对应不同的IP地址
FunctionBuildConfig.adasConnectIP = BuildConfig.ADAS_CONNECT_IP
// 是否开启secure校验
FunctionBuildConfig.isSecure = BuildConfig.secure
// 清扫车 默认业务模式
FunctionBuildConfig.sweeperDefaultMode = BuildConfig.SWEEPER_DEFAULT_MODE
// 清扫车 是否能切换当前业务模式
FunctionBuildConfig.sweeperCanSwitchMode = BuildConfig.SWEEPER_CAN_SWITCH_MODE
//是否开启卡顿检测
JunkConfig.isSupportJunkDetect = BuildConfig.IS_SUPPORT_JUNK_DETECT
}
private fun initDebugConfig() {
var mode = BuildConfig.NET_ENV
val envConfig = EnvChangeManager.getEnvConfig()
if (envConfig != null) {
mode = envConfig.netMode
}
DebugConfig.setNetMode(mode)
DebugConfig.setDebug(BuildConfig.DEBUG)
DebugConfig.setLauncher(BuildConfig.IS_LAUNCHER)
DebugConfig.setCarMachineType(BuildConfig.CAR_MACHINE_TYPE)
// todo DebugConfig.setProductFlavor(BuildConfig.FLAVOR_product)
DebugConfig.setProjectFlavor(BuildConfig.FLAVOR_project)
DebugConfig.setEnvFlavor(BuildConfig.FLAVOR_env)
DebugConfig.setSocketAppId(BuildConfig.SOCKET_APP_ID)
DebugConfig.setMapVersion(BuildConfig.MAP_SDK_VERSION)
DebugConfig.setMapOptVersion(BuildConfig.MAP_SDK_OPT_VERSION)
}
private fun initOtherConfig(context: Context) {
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
//是否显示 限速UI
HmiBuildConfig.isShowLimitingVelocityView = false
//白天模式
FunctionBuildConfig.skinMode = 1
}
val mapParams = MapParams.init()
mapParams.setDebugMode(false)
// 1-使用本地地图数据0-使用在线地图数据
// .setDataFileSource(1)
.setIsRecordLogs(false)
.setCoordinateType(MapParams.COORDINATETYPE_GCJ02)
MapAutoApi.init(context, mapParams)
HDMapProvider.setRedisDataLoadCallback(object : HDMapProvider.IRedisLoadCallback {
override fun onLoginStart(ip: String, port: Int, password: String, dbIndex: Int) {
Logger.d(TAG, "-- onLoginStart --: ip: $ip, port: $port, password: $password, dbIndex: $dbIndex")
onRedisDataLoadRoute(mapOf("onLoginStart" to "ip:$ip, port:$port, password: $password, dbIndex: $dbIndex"))
}
override fun onLoginSuccess() {
Logger.d(TAG, "-- onLoginSuccess --")
onRedisDataLoadRoute(mapOf("onLoginSuccess" to ""))
}
override fun onLoginFailed(error: String?) {
Logger.d(TAG, "-- onLoginFailed($error) --")
onRedisDataLoadRoute(mapOf("onLoginFailed" to "fail_reason:$error"))
}
override fun onReLogin(isCanRetry: Boolean) {
Logger.d(TAG, "-- onReLogin($isCanRetry) --")
onRedisDataLoadRoute(mapOf("onReLogin" to "isCanRetry:$isCanRetry"))
}
override fun onTileLoadStart(layerId: String, tileId: String) {
Logger.d(TAG, "-- onTileLoadStart(layerId: $layerId, tileId: $tileId) --")
onRedisDataLoadRoute(mapOf("onTileLoadStart" to "layerId: $layerId, tileId: $tileId"))
}
override fun onTileLoadFail(layerId: String, tileId: String, error: String) {
Logger.d(TAG, "-- onTileLoadFail(layerId: $layerId, tileId: $tileId, error: $error) --")
onRedisDataLoadRoute(mapOf("onTileLoadFail" to "layerId: $layerId, tileId: $tileId, error: $error"))
}
override fun onTileLoadSuccess(layerId: String, tileId: String) {
Logger.d(TAG, "-- onTileLoadSuccess(layerId: $layerId, tileId: $tileId) --")
onRedisDataLoadRoute(mapOf("onTileLoadSuccess" to "layerId: $layerId, tileId: $tileId"))
}
override fun onTilesLoadStart(layerId: String, tileIds: List<String>) {
Logger.d(TAG, "-- onTilesLoadStart(layerId: $layerId, tileIds: ${tileIds.joinToString(",")}) --")
onRedisDataLoadRoute(mapOf("onTilesLoadStart" to "layerId: $layerId, tileIds: ${tileIds.joinToString(",")}"))
}
override fun onTilesLoadFail(layerId: String, tileIds: List<String>, error: String?) {
Logger.d(TAG, "-- onTilesLoadFail(layerId: $layerId, tileIds: ${tileIds.joinToString(",")}, error: $error) --")
onRedisDataLoadRoute(mapOf("onTilesLoadFail" to "layerId: $layerId, tileIds: ${tileIds.joinToString(",")}, error:$error"))
}
override fun onTilesLoadSuccess(layerId: String, tileIds: List<String>) {
Logger.d(TAG, "-- onTilesLoadSuccess(layerId: $layerId, tileIds: ${tileIds.joinToString(",")}) --")
onRedisDataLoadRoute(mapOf("onTilesLoadSuccess" to "layerId: $layerId, tileIds: ${tileIds.joinToString(",")}"))
}
}.also {
redisCallback.set(it) // 将此回调保存起来只为了在native层的引用不回收因为native层的引用是全局弱引用
})
// HDMapProvider.toggleSystrace(true) // 开启systrace, 此功能默认关闭,只要在开发阶段定位渲染问题时才打开。(前提需要在地图sdk在关键节点进行手动打点后再开启之后使用systrace工具进行抓取trace文件进行分析)
// HDMapProvider.toggleMapDataDebugInfo(true) // 打开地图调试信息的文字展示,此功能也默认关闭,只有在地图测试工具中使用
}
@ChainLog(
linkChainLog = ChainConstant.CHAIN_TYPE_STATUS,
linkCode = ChainConstant.CHAIN_SOURCE_CLOUD,
nodeAliasCode = ChainConstant.CHAIN_CODE_REDIS_DATA_LOAD,
paramIndexes = [0]
)
private fun onRedisDataLoadRoute(extra: Map<String, Any>) {}
}