Merge branch 'dev_robotaxi-d-app-module_270_220510_2.7.0' of gitlab.zhidaoauto.com:zhjt/AndroidApp/MoGoEagleEye into dev_robotaxi-d-app-module_270_220510_2.7.0
This commit is contained in:
@@ -238,7 +238,7 @@ dependencies {
|
||||
|
||||
debugImplementation rootProject.ext.dependencies.debugleakcanary
|
||||
releaseImplementation rootProject.ext.dependencies.releaseleakcanary
|
||||
|
||||
implementation rootProject.ext.dependencies.android_start_up
|
||||
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
|
||||
implementation rootProject.ext.dependencies.ttspad
|
||||
implementation rootProject.ext.dependencies.mogo_core_function_hmi
|
||||
|
||||
@@ -19,6 +19,18 @@
|
||||
android:usesCleartextTraffic="true"
|
||||
tools:replace="android:label">
|
||||
|
||||
<provider
|
||||
android:name="com.rousetime.android_startup.provider.StartupProvider"
|
||||
android:authorities="${applicationId}.android_startup"
|
||||
android:exported="false" >
|
||||
<meta-data
|
||||
android:name="com.mogo.launcher.stageone.HttpDnsStartUp"
|
||||
android:value="android.startup" />
|
||||
<meta-data
|
||||
android:name="com.mogo.launcher.stageone.MogoStartupProviderConfig"
|
||||
android:value="android.startup.provider.config" />
|
||||
</provider>
|
||||
|
||||
<!-- 配置APP ID -->
|
||||
<meta-data
|
||||
android:name="BUGLY_APPID"
|
||||
|
||||
@@ -1,20 +1,9 @@
|
||||
package com.mogo.launcher;
|
||||
|
||||
import com.auto.zhidao.logsdk.CrashSystem;
|
||||
import com.mogo.commons.debug.DebugConfig;
|
||||
import com.mogo.eagle.core.data.app.AppConfigInfo;
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
||||
import com.mogo.eagle.core.data.config.HdMapBuildConfig;
|
||||
import com.mogo.eagle.core.data.config.HmiBuildConfig;
|
||||
import com.mogo.eagle.core.data.constants.MoGoConfig;
|
||||
import com.mogo.eagle.core.function.call.analytics.AnalyticsManager;
|
||||
import com.mogo.eagle.core.function.main.MainMoGoApplication;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
|
||||
import com.mogo.module.common.MogoModule;
|
||||
import com.mogo.module.common.MogoModulePaths;
|
||||
import com.mogo.test.crashreport.CrashReportConstants;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
@@ -33,113 +22,9 @@ public class MogoApplication extends MainMoGoApplication {
|
||||
crashSystem.setDebug(BuildConfig.DEBUG);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initAnalyticsConfig() {
|
||||
// 初始化埋点
|
||||
AnalyticsManager.INSTANCE.init(this, DebugConfig.isDebug());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initLogConfig() {
|
||||
super.initLogConfig();
|
||||
Logger.init(BuildConfig.DEBUG ? LogLevel.DEBUG : LogLevel.OFF);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initCloudClientConfig() {
|
||||
// 使用旧Socket链路 true = 旧链路,false = 新链路
|
||||
if (DebugConfig.getProductFlavor().equals("fPadLenovoOchTaxi")
|
||||
|| DebugConfig.getProductFlavor().equals("fPadLenovoOchBus")
|
||||
|| DebugConfig.getProductFlavor().equals("fPadLenovoOchTaxiPassenger")
|
||||
|| DebugConfig.getProductFlavor().equals("fPadLenovoOchBusPassenger")) {
|
||||
clientConfig.setUseOriginSocket(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initBuildConfig() {
|
||||
DebugConfig.setNetMode(BuildConfig.NET_ENV);
|
||||
DebugConfig.setDebug(BuildConfig.DEBUG);
|
||||
DebugConfig.setLaunchLocationService(BuildConfig.LAUNCH_LOCATION_SERVICE);
|
||||
DebugConfig.setLauncher(BuildConfig.IS_LAUNCHER);
|
||||
DebugConfig.setUseMockObuData(false);
|
||||
DebugConfig.setCarMachineType(BuildConfig.CAR_MACHINE_TYPE);
|
||||
DebugConfig.setProductFlavor(BuildConfig.FLAVOR_product);
|
||||
DebugConfig.setSocketAppId(BuildConfig.SOCKET_APP_ID);
|
||||
DebugConfig.setScheduleCalculateNotHomeCompanyDistanceForPush(BuildConfig.IS_SUPPORT_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH);
|
||||
DebugConfig.setNeedUploadCoordinatesInTime(BuildConfig.IS_NEED_UPLOAD_COORDINATES_IN_TIME);
|
||||
DebugConfig.setObuType(SharedPrefsMgr.getInstance(this).getInt("OBU_TYPE", DebugConfig.OBU_TYPE_CIDI));
|
||||
|
||||
// 初始化构建APP的时候的分支及提交HASH,用于辅助定位问题
|
||||
AppConfigInfo.INSTANCE.setWorkingBranchName(BuildConfig.WORKING_BRANCH_NAME);
|
||||
AppConfigInfo.INSTANCE.setWorkingBranchHash(BuildConfig.WORKING_BRANCH_HASH);
|
||||
AppConfigInfo.INSTANCE.setAppBuildTime(BuildConfig.APP_BUILD_TIME);
|
||||
|
||||
// 使用与渠道配置一样的gps提供者提供的数据,app/productFlavors/fPadLenovo.gradle GPS_PROVIDER 0-Android系统,1-工控机,2-OBU
|
||||
FunctionBuildConfig.gpsProvider = BuildConfig.GPS_PROVIDER;
|
||||
// 演示模式,上一次勾选的数据
|
||||
FunctionBuildConfig.isDemoMode = BuildConfig.IS_DEMO_MODE;
|
||||
// app安装的身份信息
|
||||
FunctionBuildConfig.appIdentityMode = BuildConfig.APP_IDENTITY_MODE;
|
||||
// 不同身份对应不同的IP地址
|
||||
FunctionBuildConfig.adasConnectIP = BuildConfig.ADAS_CONNECT_IP;
|
||||
|
||||
// 配置BuglyAppID:MoGoEagleEye
|
||||
CrashReportConstants.buglyAppID = "ac71228f85";
|
||||
|
||||
|
||||
if (DebugConfig.getProductFlavor().equals("fPadLenovoOchTaxi")
|
||||
|| DebugConfig.getProductFlavor().equals("fPadLenovoOchBus")
|
||||
|| DebugConfig.getProductFlavor().equals("fPadLenovoOchTaxiPassenger")
|
||||
|| DebugConfig.getProductFlavor().equals("fPadLenovoOchBusPassenger")) {
|
||||
//控制HMI展示元素 将不用手动调用setXXXXXViewVisibility
|
||||
HmiBuildConfig.isShowSpeedView = false;
|
||||
HmiBuildConfig.isShowAutopilotStatusView = false;
|
||||
HmiBuildConfig.isShowPerspectiveSwitchView = false;
|
||||
HmiBuildConfig.isShowToolsView = false;
|
||||
HmiBuildConfig.isShowBadCaseView = false;
|
||||
HmiBuildConfig.isShowUpgradeTipsView = false;
|
||||
//业务端可以根据需要控制是否展示刹车和转向灯的ui
|
||||
// HmiBuildConfig.isShowBrakeLightView = false;
|
||||
// HmiBuildConfig.isShowTurnLightView = false;
|
||||
}
|
||||
|
||||
if (DebugConfig.getProductFlavor().equals("fPadLenovoOchTaxi")
|
||||
|| DebugConfig.getProductFlavor().equals("fPadLenovoOchTaxiPassenger")) {
|
||||
HdMapBuildConfig.currentCarVrIconRes = R.raw.chuzuche;
|
||||
} else if (DebugConfig.getProductFlavor().equals("fPadLenovoOchBus")
|
||||
|| DebugConfig.getProductFlavor().equals("fPadLenovoOchBusPassenger")) {
|
||||
HdMapBuildConfig.currentCarVrIconRes = R.raw.xiaobache;
|
||||
HmiBuildConfig.isShowBrakeLightView = false;
|
||||
HmiBuildConfig.isShowTurnLightView = false;
|
||||
}
|
||||
|
||||
if (DebugConfig.getProductFlavor().equals("fPadLenovoOchTaxiPassenger")) {
|
||||
//是否显示 红绿等
|
||||
HmiBuildConfig.isShowTrafficLightView = false;
|
||||
//是否显示 限速UI
|
||||
HmiBuildConfig.isShowLimitingVelocityView = false;
|
||||
//是否显示 路侧监控
|
||||
HmiBuildConfig.isShowCameraView = false;
|
||||
} else if (DebugConfig.getProductFlavor().equals("fPadLenovoOchBusPassenger")) {
|
||||
//是否显示 红绿等
|
||||
HmiBuildConfig.isShowTrafficLightView = false;
|
||||
//是否显示 限速UI
|
||||
HmiBuildConfig.isShowLimitingVelocityView = false;
|
||||
//是否显示 路侧监控
|
||||
HmiBuildConfig.isShowCameraView = false;
|
||||
//白天模式
|
||||
FunctionBuildConfig.skinMode = 1;
|
||||
|
||||
}
|
||||
//och模块
|
||||
MogoModulePaths.addModuleFunction(new MogoModule("/och/api", "IMoGoFunctionProvider"));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initConfigWithSP() {
|
||||
// 是否是演示(美化)模式,会存在SP中,方便做现场恢复
|
||||
FunctionBuildConfig.isDemoMode = SharedPrefsMgr.getInstance(this).getBoolean(MoGoConfig.IS_DEMO_MODE, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.mogo.launcher.stageone
|
||||
|
||||
import android.app.Application
|
||||
import android.content.Context
|
||||
import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
import com.mogo.eagle.core.utilcode.util.AppUtils
|
||||
import com.mogo.eagle.core.utilcode.util.CleanUtils
|
||||
import com.rousetime.android_startup.AndroidStartup
|
||||
import java.lang.Exception
|
||||
|
||||
class ARouterStartUp : AndroidStartup<String>() {
|
||||
override fun callCreateOnMainThread() = true
|
||||
|
||||
override fun create(context: Context): String {
|
||||
try {
|
||||
if (DebugConfig.isDebug()) {
|
||||
ARouter.openDebug()
|
||||
ARouter.openLog()
|
||||
}
|
||||
// 初始化 arouter
|
||||
ARouter.init(context as Application?)
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
// 由于ARouter会在SP_AROUTER_CACHE.xml缓存路由表,如果出现了被删除的情况会报错,这里清除下就好了
|
||||
CleanUtils.cleanInternalSp()
|
||||
// 重启应用
|
||||
AppUtils.relaunchApp()
|
||||
}
|
||||
return this.javaClass.simpleName
|
||||
}
|
||||
|
||||
override fun waitOnMainThread() = false
|
||||
}
|
||||
104
app/src/main/java/com/mogo/launcher/stageone/ConfigStartUp.kt
Normal file
104
app/src/main/java/com/mogo/launcher/stageone/ConfigStartUp.kt
Normal file
@@ -0,0 +1,104 @@
|
||||
package com.mogo.launcher.stageone
|
||||
|
||||
import android.content.Context
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
import com.mogo.eagle.core.data.app.AppConfigInfo.workingBranchHash
|
||||
import com.mogo.eagle.core.data.app.AppConfigInfo.workingBranchName
|
||||
import com.mogo.eagle.core.data.constants.MoGoConfig
|
||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
|
||||
import com.rousetime.android_startup.AndroidStartup
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.data.config.HdMapBuildConfig
|
||||
import com.mogo.eagle.core.data.config.HmiBuildConfig
|
||||
import com.mogo.test.crashreport.CrashReportConstants
|
||||
import com.mogo.launcher.BuildConfig
|
||||
import com.mogo.launcher.R
|
||||
|
||||
class ConfigStartUp : AndroidStartup<Boolean>() {
|
||||
|
||||
override fun callCreateOnMainThread() = true
|
||||
|
||||
override fun waitOnMainThread() = false
|
||||
|
||||
override fun create(context: Context): Boolean {
|
||||
initDebugConfig(context)
|
||||
initBuildConfig()
|
||||
initOtherConfig(context)
|
||||
return true
|
||||
}
|
||||
|
||||
private fun initBuildConfig() {
|
||||
// 初始化构建APP的时候的分支及提交HASH,用于辅助定位问题
|
||||
workingBranchName = BuildConfig.WORKING_BRANCH_NAME
|
||||
workingBranchHash = BuildConfig.WORKING_BRANCH_HASH
|
||||
// 使用与渠道配置一样的gps提供者提供的数据,app/productFlavors/fPadLenovo.gradle GPS_PROVIDER 0-Android系统,1-工控机,2-OBU
|
||||
FunctionBuildConfig.gpsProvider = BuildConfig.GPS_PROVIDER
|
||||
// 演示模式,上一次勾选的数据
|
||||
FunctionBuildConfig.isDemoMode = BuildConfig.IS_DEMO_MODE
|
||||
// app安装的身份信息
|
||||
FunctionBuildConfig.appIdentityMode = BuildConfig.APP_IDENTITY_MODE
|
||||
// 不同身份对应不同的IP地址
|
||||
FunctionBuildConfig.adasConnectIP = BuildConfig.ADAS_CONNECT_IP
|
||||
}
|
||||
|
||||
private fun initDebugConfig(context: Context) {
|
||||
DebugConfig.setNetMode(BuildConfig.NET_ENV)
|
||||
DebugConfig.setDebug(BuildConfig.DEBUG)
|
||||
DebugConfig.setLaunchLocationService(BuildConfig.LAUNCH_LOCATION_SERVICE)
|
||||
DebugConfig.setLauncher(BuildConfig.IS_LAUNCHER)
|
||||
DebugConfig.setUseMockObuData(false)
|
||||
DebugConfig.setCarMachineType(BuildConfig.CAR_MACHINE_TYPE)
|
||||
DebugConfig.setProductFlavor(BuildConfig.FLAVOR_product)
|
||||
DebugConfig.setSocketAppId(BuildConfig.SOCKET_APP_ID)
|
||||
DebugConfig.setScheduleCalculateNotHomeCompanyDistanceForPush(BuildConfig.IS_SUPPORT_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH)
|
||||
DebugConfig.setNeedUploadCoordinatesInTime(BuildConfig.IS_NEED_UPLOAD_COORDINATES_IN_TIME)
|
||||
DebugConfig.setObuType(
|
||||
SharedPrefsMgr.getInstance(context).getInt("OBU_TYPE", DebugConfig.OBU_TYPE_CIDI)
|
||||
)
|
||||
}
|
||||
|
||||
private fun initOtherConfig(context: Context) {
|
||||
// 配置BuglyAppID:MoGoEagleEye
|
||||
CrashReportConstants.buglyAppID = "ac71228f85"
|
||||
|
||||
if (DebugConfig.getProductFlavor() == "fPadLenovoOchTaxi" || DebugConfig.getProductFlavor() == "fPadLenovoOchBus" || DebugConfig.getProductFlavor() == "fPadLenovoOchTaxiPassenger" || DebugConfig.getProductFlavor() == "fPadLenovoOchBusPassenger") {
|
||||
//控制HMI展示元素 将不用手动调用setXXXXXViewVisibility
|
||||
HmiBuildConfig.isShowSpeedView = false
|
||||
HmiBuildConfig.isShowAutopilotStatusView = false
|
||||
HmiBuildConfig.isShowPerspectiveSwitchView = false
|
||||
HmiBuildConfig.isShowToolsView = false
|
||||
HmiBuildConfig.isShowBadCaseView = false
|
||||
HmiBuildConfig.isShowUpgradeTipsView = false
|
||||
}
|
||||
|
||||
if (DebugConfig.getProductFlavor() == "fPadLenovoOchTaxi" || DebugConfig.getProductFlavor() == "fPadLenovoOchTaxiPassenger") {
|
||||
HdMapBuildConfig.currentCarVrIconRes = R.raw.chuzuche
|
||||
} else if (DebugConfig.getProductFlavor() == "fPadLenovoOchBus" || DebugConfig.getProductFlavor() == "fPadLenovoOchBusPassenger") {
|
||||
HdMapBuildConfig.currentCarVrIconRes = R.raw.xiaobache
|
||||
HmiBuildConfig.isShowBrakeLightView = false
|
||||
HmiBuildConfig.isShowTurnLightView = false
|
||||
}
|
||||
|
||||
if (DebugConfig.getProductFlavor() == "fPadLenovoOchTaxiPassenger") {
|
||||
//是否显示 红绿等
|
||||
HmiBuildConfig.isShowTrafficLightView = false
|
||||
//是否显示 限速UI
|
||||
HmiBuildConfig.isShowLimitingVelocityView = false
|
||||
//是否显示 路侧监控
|
||||
HmiBuildConfig.isShowCameraView = false
|
||||
} else if (DebugConfig.getProductFlavor() == "fPadLenovoOchBusPassenger") {
|
||||
//是否显示 红绿等
|
||||
HmiBuildConfig.isShowTrafficLightView = false
|
||||
//是否显示 限速UI
|
||||
HmiBuildConfig.isShowLimitingVelocityView = false
|
||||
//是否显示 路侧监控
|
||||
HmiBuildConfig.isShowCameraView = false
|
||||
//白天模式
|
||||
FunctionBuildConfig.skinMode = 1
|
||||
}
|
||||
|
||||
// 是否是演示(美化)模式,会存在SP中,方便做现场恢复
|
||||
FunctionBuildConfig.isDemoMode =
|
||||
SharedPrefsMgr.getInstance(context).getBoolean(MoGoConfig.IS_DEMO_MODE, false)
|
||||
}
|
||||
}
|
||||
276
app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt
Normal file
276
app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt
Normal file
@@ -0,0 +1,276 @@
|
||||
package com.mogo.launcher.stageone
|
||||
|
||||
import android.content.Context
|
||||
import com.mogo.aicloud.services.httpdns.HttpDnsConst
|
||||
import com.mogo.aicloud.services.httpdns.IMogoHttpDns
|
||||
import com.mogo.aicloud.services.httpdns.MogoHttpDnsHandler
|
||||
import com.mogo.aicloud.services.locationinfo.MogoLocationInfoServices
|
||||
import com.mogo.aicloud.services.socket.IMogoLifecycleListener
|
||||
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager
|
||||
import com.mogo.cloud.httpdns.MogoHttpDnsConfig
|
||||
import com.mogo.cloud.httpdns.bean.HttpDnsSimpleLocation
|
||||
import com.mogo.cloud.httpdns.listener.IHttpDnsCurrentLocation
|
||||
import com.mogo.cloud.httpdns.listener.OnAddressChangedListener
|
||||
import com.mogo.cloud.passport.IMoGoTokenCallback
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClient
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.commons.constants.SharedPrefsConstants
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
import com.mogo.commons.device.Devices
|
||||
import com.mogo.commons.network.NetConfigUtils
|
||||
import com.mogo.commons.network.Utils
|
||||
import com.mogo.eagle.core.data.map.MogoLocation
|
||||
import com.mogo.eagle.core.function.call.analytics.AnalyticsManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.utilcode.util.ProcessUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadPoolService
|
||||
import com.mogo.module.common.constants.HostConst
|
||||
import com.rousetime.android_startup.AndroidStartup
|
||||
import java.lang.NumberFormatException
|
||||
|
||||
class HttpDnsStartUp : AndroidStartup<Boolean>() {
|
||||
|
||||
private val TAG = "MogoApplication"
|
||||
|
||||
// 配置云服务API
|
||||
private val clientConfig by lazy {
|
||||
MoGoAiCloudClientConfig.getInstance()
|
||||
}
|
||||
|
||||
// 缓存IP地址
|
||||
private var cacheIp: String? = null
|
||||
|
||||
private lateinit var mogoHttpDns: IMogoHttpDns
|
||||
|
||||
private var context: Context? = null
|
||||
|
||||
override fun callCreateOnMainThread() = true
|
||||
|
||||
override fun waitOnMainThread() = false
|
||||
|
||||
override fun dependenciesByName(): List<String> {
|
||||
return listOf("com.mogo.launcher.stageone.ARouterStartUp", "com.mogo.launcher.stageone.ConfigStartUp")
|
||||
}
|
||||
|
||||
override fun create(context: Context): Boolean {
|
||||
this.context = context
|
||||
if (ProcessUtils.isMainProcess(context)) {
|
||||
initHttpDns()
|
||||
initCloudClientConfig()
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化 HttpDNS ,这里会通过一个接口获取所有鹰眼中使用的微服务域名以及端口号
|
||||
* 后续的网络请求会通过 HttpDnsInterceptor 进行拦截替换
|
||||
*/
|
||||
private fun initHttpDns() {
|
||||
mogoHttpDns = MogoHttpDnsHandler.getHttpDnsApi()
|
||||
preparePassportEnvironment()
|
||||
}
|
||||
|
||||
private fun preparePassportEnvironment() {
|
||||
// 设置网络环境:HTTP_DNS_ENV_QA、HTTP_DNS_ENV_RELEASE、HTTP_DNS_ENV_DEV
|
||||
when (DebugConfig.getNetMode()) {
|
||||
DebugConfig.NET_MODE_DEV -> clientConfig.netMode = MogoHttpDnsConfig.HTTP_DNS_ENV_DEV
|
||||
DebugConfig.NET_MODE_QA -> clientConfig.netMode = MogoHttpDnsConfig.HTTP_DNS_ENV_QA
|
||||
DebugConfig.NET_MODE_DEMO -> clientConfig.netMode = MogoHttpDnsConfig.HTTP_DNS_ENV_DEMO
|
||||
else -> clientConfig.netMode = MogoHttpDnsConfig.HTTP_DNS_ENV_RELEASE
|
||||
}
|
||||
// 设置是否是第三APP登录
|
||||
clientConfig.isThirdLogin =
|
||||
DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE
|
||||
// 设置是否输出日志
|
||||
clientConfig.isShowDebugLog = true
|
||||
// 设置是否输出网络日志
|
||||
clientConfig.isShowNetDebugLog = false
|
||||
// 设置是否是直播推流的主播
|
||||
clientConfig.isAnchor = true
|
||||
when (DebugConfig.getCarMachineType()) {
|
||||
DebugConfig.CAR_MACHINE_TYPE_BYD -> clientConfig.thirdPartyAppKey = "bydauto"
|
||||
DebugConfig.CAR_MACHINE_TYPE_LENOVO -> clientConfig.thirdPartyAppKey = "pfieouqg"
|
||||
else -> clientConfig.thirdPartyAppKey = "wbvpzgar"
|
||||
}
|
||||
// 设置应用服务AppId 长链、鉴权
|
||||
if (DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE) {
|
||||
clientConfig.serviceAppId = "com_mogo_launcher"
|
||||
} else {
|
||||
clientConfig.serviceAppId = "com.mogo.launcher"
|
||||
}
|
||||
// 设置AI云平台分配给三方应用的签名密钥,需要从AI云平台申请
|
||||
// 设置车机设备的唯一标识(这些表识必须是通过后台录入的设备)
|
||||
clientConfig.thirdPartyDeviceId = Utils.getDevicesId()
|
||||
// 设置循环检测间隔时间(每隔2小时loop一次httpDnsConfig)
|
||||
clientConfig.loopCheckDelay = (60 * 60 * 2 * 1000).toLong()
|
||||
//设置长链接的secretKey //todo 通过SHA1和包名找中台服务生成,后续包名分渠道,需要做对应操作
|
||||
clientConfig.secretKey = "YMj2VFDFxJ3Q4gNoZceJ"
|
||||
|
||||
// todo 使用旧链路
|
||||
// clientConfig.setUseOriginSocket(true);
|
||||
clientConfig.iHttpDnsCurrentLocation = object : IHttpDnsCurrentLocation {
|
||||
override fun getCurrentLocation(): HttpDnsSimpleLocation? {
|
||||
var mogoLocation: MogoLocation? = null
|
||||
val locationClient =
|
||||
CallerMapUIServiceManager.getSingletonLocationClient(AbsMogoApplication.getApp())
|
||||
if (locationClient != null) {
|
||||
mogoLocation = locationClient.lastKnowLocation
|
||||
}
|
||||
val httpDnsSimpleLocation =
|
||||
if (mogoLocation != null && mogoLocation.latitude != 0.0 && mogoLocation.longitude != 0.0
|
||||
) {
|
||||
HttpDnsSimpleLocation(
|
||||
mogoLocation.cityCode,
|
||||
mogoLocation.latitude,
|
||||
mogoLocation.longitude
|
||||
)
|
||||
} else {
|
||||
val ciyCode =
|
||||
SharedPrefsMgr.getInstance(
|
||||
AbsMogoApplication.getApp()
|
||||
)
|
||||
.getString(SharedPrefsConstants.LOCATION_CITY_CODE)
|
||||
val latitude =
|
||||
SharedPrefsMgr.getInstance(
|
||||
AbsMogoApplication.getApp()
|
||||
)
|
||||
.getString(SharedPrefsConstants.LOCATION_LATITUDE)
|
||||
val longitude =
|
||||
SharedPrefsMgr.getInstance(
|
||||
AbsMogoApplication.getApp()
|
||||
)
|
||||
.getString(SharedPrefsConstants.LOCATION_LONGITUDE)
|
||||
try {
|
||||
HttpDnsSimpleLocation(
|
||||
ciyCode, latitude.toDouble(), longitude.toDouble()
|
||||
)
|
||||
} catch (e: NumberFormatException) {
|
||||
// e.printStackTrace();
|
||||
HttpDnsSimpleLocation("010", 1.0, 1.0)
|
||||
}
|
||||
//CallerLogger.INSTANCE.d(M_HMI + TAG, "使用缓存GPS信息:" + httpDnsSimpleLocation);
|
||||
}
|
||||
return httpDnsSimpleLocation
|
||||
}
|
||||
}
|
||||
initAiCloudSDK()
|
||||
}
|
||||
|
||||
private fun initAiCloudSDK() {
|
||||
// 初始化SDK,可以设置状态回调来监听
|
||||
MoGoAiCloudClient.getInstance().init(context, clientConfig).addTokenCallbacks(
|
||||
object : IMoGoTokenCallback {
|
||||
override fun onTokenGot(token: String, sn: String) {
|
||||
CallerLogger.d(SceneConstant.M_HMI + TAG, "onTokenGot ")
|
||||
clientConfig.token = token
|
||||
// 异步初始化NetConfig
|
||||
asyncInit()
|
||||
// HttpDns ttl回调 --- socketTTL
|
||||
registerSocketHttpDnsTTL(HostConst.SOCKET_CENTER_DOMAIN)
|
||||
// 开启每5s/次定位上报
|
||||
uploadLocPerFiveSecond()
|
||||
}
|
||||
|
||||
override fun onError(code: Int, msg: String) {
|
||||
CallerLogger.d(
|
||||
SceneConstant.M_HMI + TAG,
|
||||
"初始化MogoAiCloudSdk failed ,reason : $msg , 未能开启长链服务和初始化Modules服务"
|
||||
)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* 异步初始化
|
||||
*/
|
||||
private fun asyncInit() {
|
||||
ThreadPoolService.execute {
|
||||
if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE) {
|
||||
Devices.init(AbsMogoApplication.getApp())
|
||||
Devices.checkBindState()
|
||||
}
|
||||
//初始化网络配置
|
||||
NetConfigUtils.init()
|
||||
|
||||
// 初始化埋点
|
||||
AnalyticsManager.init(context, DebugConfig.isDebug())
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 请求获取最新的 DNS 微服务 域名信息
|
||||
*/
|
||||
private fun registerSocketHttpDnsTTL(host: String?) {
|
||||
mogoHttpDns.addressChangedListener(object : OnAddressChangedListener {
|
||||
override fun onAddressChanged(address: Map<String, String>?) {
|
||||
val dnsCacheIp = mogoHttpDns.getCachedHttpDnsIps(
|
||||
host,
|
||||
HttpDnsConst.HTTP_DNS_ADDRESS_TYPE_HTTP
|
||||
) ?: return
|
||||
if (dnsCacheIp != cacheIp) {
|
||||
CallerLogger.d("TEST_SOCKET", "获取缓存Dns IP : $dnsCacheIp , 原缓存 IP : $cacheIp")
|
||||
startSocketService()
|
||||
cacheIp = dnsCacheIp
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传自车位置信息到云端
|
||||
*/
|
||||
private fun uploadLocPerFiveSecond() {
|
||||
if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE) {
|
||||
context?.let {
|
||||
MogoLocationInfoServices.getInstance().init(it)
|
||||
MogoLocationInfoServices.getInstance().start()
|
||||
val locationClient = CallerMapUIServiceManager.getSingletonLocationClient(it)
|
||||
locationClient?.addLocationListener { location: MogoLocation? ->
|
||||
MogoLocationInfoServices.getInstance().provideLocation(location)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun startSocketService() {
|
||||
CallerLogger.d(SceneConstant.M_HMI + TAG, "startSocketService")
|
||||
val location = CallerMapUIServiceManager.getSingletonLocationClient(AbsMogoApplication.getApp())!!
|
||||
.lastKnowLocation
|
||||
// 关闭长链服务
|
||||
MogoAiCloudSocketManager.getInstance(context).destroy()
|
||||
MogoAiCloudSocketManager.getInstance(context)
|
||||
.registerLifecycleListener(10020, object : IMogoLifecycleListener {
|
||||
override fun onConnectFailure() {
|
||||
CallerLogger.d(SceneConstant.M_HMI + TAG, "socket-onConnectFailure")
|
||||
DebugConfig.setDownloadSnapshot(false)
|
||||
}
|
||||
|
||||
override fun onConnectSuccess() {
|
||||
CallerLogger.d(SceneConstant.M_HMI + TAG, "socket-onConnectSuccess")
|
||||
DebugConfig.setDownloadSnapshot(true)
|
||||
}
|
||||
|
||||
override fun onConnectLost() {
|
||||
CallerLogger.d(SceneConstant.M_HMI + TAG, "socket-onConnectLost")
|
||||
DebugConfig.setDownloadSnapshot(false)
|
||||
}
|
||||
})
|
||||
// 开启Socket长链服务
|
||||
val lat = location.latitude
|
||||
val lon = location.longitude
|
||||
MogoAiCloudSocketManager.getInstance(context)
|
||||
.init(context, DebugConfig.getSocketAppId(), lat, lon)
|
||||
}
|
||||
|
||||
private fun initCloudClientConfig() {
|
||||
// 使用旧Socket链路 true = 旧链路,false = 新链路
|
||||
if (DebugConfig.getProductFlavor() == "fPadLenovoOchTaxi" || DebugConfig.getProductFlavor() == "fPadLenovoOchBus" || DebugConfig.getProductFlavor() == "fPadLenovoOchTaxiPassenger" || DebugConfig.getProductFlavor() == "fPadLenovoOchBusPassenger") {
|
||||
clientConfig.isUseOriginSocket = true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.mogo.launcher.stageone
|
||||
|
||||
import com.mogo.launcher.BuildConfig
|
||||
import com.rousetime.android_startup.model.LoggerLevel
|
||||
import com.rousetime.android_startup.model.StartupConfig
|
||||
import com.rousetime.android_startup.provider.StartupProviderConfig
|
||||
|
||||
class MogoStartupProviderConfig: StartupProviderConfig {
|
||||
override fun getConfig(): StartupConfig {
|
||||
return when {
|
||||
BuildConfig.DEBUG -> {
|
||||
StartupConfig.Builder()
|
||||
.setLoggerLevel(LoggerLevel.DEBUG)
|
||||
.setOpenStatistics(true)
|
||||
.build()
|
||||
}
|
||||
else -> {
|
||||
StartupConfig.Builder()
|
||||
.setLoggerLevel(LoggerLevel.NONE)
|
||||
.setOpenStatistics(false)
|
||||
.setAwaitTimeout(10000L)
|
||||
.build()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -238,7 +238,7 @@ ext {
|
||||
//========================= DataStore ======================
|
||||
androidx_datastore_preferences : "androidx.datastore:datastore-preferences:1.0.0",
|
||||
androidx_datastore : "androidx.datastore:datastore:1.0.0",
|
||||
|
||||
android_start_up : "io.github.idisfkj:android-startup:1.1.0"
|
||||
]
|
||||
|
||||
}
|
||||
@@ -31,11 +31,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListen
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager.invokeAutopilotRotting
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager.invokeAutopilotTrajectory
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotVehicleStateListenerManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showAdUpgradeStatus
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager.showDockerRebootResult
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ADAS_IMPL
|
||||
import com.zhidao.support.adas.high.AdasManager
|
||||
import com.zhidao.support.adas.high.OnAdasListener
|
||||
import com.zhidao.support.adas.high.bean.IPCUpgradeStateInfo
|
||||
@@ -327,23 +323,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
}
|
||||
|
||||
override fun onUpgradeStateInfo(info: IPCUpgradeStateInfo) {
|
||||
if (info != null) {
|
||||
CallerLogger.d(
|
||||
"$M_ADAS_IMPL$TAG", "onUpgradeStateInfo " +
|
||||
" upgrade mode=" + info.upgradeMode +
|
||||
" download status=" + info.downloadStatus +
|
||||
" download progress current=" + info.progress.current +
|
||||
" download progress total=" + info.progress.total +
|
||||
" download version=" + info.images +
|
||||
" upgrade status=" + info.upgradeStatus
|
||||
)
|
||||
showAdUpgradeStatus(
|
||||
info.upgradeMode, info.downloadStatus, info.progress.current,
|
||||
info.progress.total, info.images, info.upgradeStatus
|
||||
)
|
||||
} else {
|
||||
CallerLogger.w("$M_ADAS_IMPL$TAG", "onUpgradeStateInfo : upgrade state info is null")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// override fun onSSHResult(info: com.zhidao.adas.client.ssh.SSHResult?) {
|
||||
|
||||
@@ -74,7 +74,7 @@ dependencies {
|
||||
implementation rootProject.ext.dependencies.mogoami
|
||||
|
||||
implementation rootProject.ext.dependencies.mogochainbase
|
||||
|
||||
implementation rootProject.ext.dependencies.android_start_up
|
||||
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
|
||||
api rootProject.ext.dependencies.mogoaicloudservicesdk
|
||||
api rootProject.ext.dependencies.mogocommons
|
||||
|
||||
@@ -950,60 +950,6 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
|
||||
HmiBuildConfig.isShowSnBindingView = isOpen
|
||||
}
|
||||
|
||||
/**
|
||||
* 展示工控机下载、升级状态信息
|
||||
* @param upgradeMode 升级模式(提示升级、静默升级)
|
||||
* @param downloadStatus 下载状态
|
||||
* @param currentProgress 当前已经下载包体大小
|
||||
* @param totalProgress 下载包体总大小
|
||||
* @param downloadVersion 下载版本
|
||||
* @param upgradeStatus 升级状态
|
||||
*/
|
||||
override fun showAdUpgradeStatus(
|
||||
upgradeMode: Int,
|
||||
downloadStatus: Int,
|
||||
currentProgress: Int,
|
||||
totalProgress: Int,
|
||||
downloadVersion: String,
|
||||
upgradeStatus: Int
|
||||
) {
|
||||
ThreadUtils.runOnUiThread {
|
||||
val tipsView = upgradeTipsView?.invoke()
|
||||
//如果工控机处于“下载中”、“可升级(下载完成)”、“升级中”、“升级失败”状态时,工具箱入口显示红色角标
|
||||
if (AdUpgradeStateHelper.showUpgradeTips(downloadStatus, upgradeStatus)) {
|
||||
if (HmiBuildConfig.isShowUpgradeTipsView) {
|
||||
viewUpgradeTips?.visibility = View.VISIBLE
|
||||
} else {
|
||||
tipsView?.let {
|
||||
it.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
} else {
|
||||
viewUpgradeTips?.visibility = View.GONE
|
||||
tipsView?.let {
|
||||
it.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
//将状态同步到工具箱
|
||||
toolsView?.showAdUpgradeStatus(
|
||||
upgradeMode,
|
||||
downloadStatus,
|
||||
currentProgress,
|
||||
totalProgress,
|
||||
downloadVersion,
|
||||
upgradeStatus
|
||||
)
|
||||
//将状态同步到调试窗
|
||||
mDebugSettingView?.setAdUpgradeInfo(
|
||||
upgradeMode,
|
||||
downloadStatus,
|
||||
currentProgress,
|
||||
totalProgress,
|
||||
downloadVersion,
|
||||
upgradeStatus)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 工控机监控节点上报
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
package com.mogo.eagle.core.function.main;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
|
||||
import com.mogo.eagle.core.function.hmi.R;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ConnInfoAdapter extends RecyclerView.Adapter<ConnInfoAdapter.ConnInfoViewHolder> {
|
||||
|
||||
private List<AutopilotStatusInfo> data;
|
||||
private Context context;
|
||||
|
||||
public ConnInfoAdapter(Context context, List<AutopilotStatusInfo> data) {
|
||||
this.data = data;
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
public void updateData(AutopilotStatusInfo statusInfo) {
|
||||
if (data.size() > 999) {
|
||||
data.clear();
|
||||
}
|
||||
data.add(statusInfo);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public ConnInfoViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View view = LayoutInflater.from(context).inflate(R.layout.autopilot_connect_status_item, parent, false);
|
||||
return new ConnInfoViewHolder(view);
|
||||
}
|
||||
|
||||
@SuppressLint("ResourceAsColor")
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull ConnInfoViewHolder holder, int position) {
|
||||
AutopilotStatusInfo statusInfo = data.get(position);
|
||||
if (statusInfo.getConnectStatus()) {
|
||||
holder.mContentView.setTextColor(Color.parseColor("#FFFFFF"));
|
||||
} else {
|
||||
holder.mContentView.setTextColor(Color.parseColor("#FF4040"));
|
||||
}
|
||||
holder.mContentView.setText(statusInfo.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return data != null ? data.size() : 0;
|
||||
}
|
||||
|
||||
public static class ConnInfoViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
private TextView mContentView;
|
||||
|
||||
public ConnInfoViewHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
mContentView = itemView.findViewById(R.id.tvStatusInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,18 +15,26 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.mogo.cloud.commons.BuildConfig;
|
||||
import com.mogo.commons.context.ContextHolderUtil;
|
||||
import com.mogo.commons.mvp.BaseFragment;
|
||||
import com.mogo.commons.mvp.MvpActivity;
|
||||
import com.mogo.commons.mvp.MvpFragment;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
|
||||
import com.mogo.eagle.core.data.constants.MoGoFragmentPaths;
|
||||
import com.mogo.eagle.core.data.map.MogoLocation;
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||
import com.mogo.eagle.core.function.hmi.R;
|
||||
import com.mogo.eagle.core.function.main.cards.MogoModulesManager;
|
||||
import com.mogo.eagle.core.function.main.service.MogoMainService;
|
||||
import com.mogo.eagle.core.function.main.stagetwo.APMStartup;
|
||||
import com.mogo.eagle.core.function.main.stagetwo.AutopilotStartup;
|
||||
import com.mogo.eagle.core.function.main.utils.DisplayEffectsHelper;
|
||||
import com.mogo.eagle.core.function.main.windowview.FloatingViewHandler;
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils;
|
||||
@@ -44,10 +52,18 @@ import com.mogo.module.common.MogoApisHandler;
|
||||
import com.mogo.service.IMogoServiceApis;
|
||||
import com.mogo.service.fragmentmanager.FragmentStackTransactionListener;
|
||||
import com.mogo.service.statusmanager.IMogoStatusManager;
|
||||
import com.rousetime.android_startup.StartupManager;
|
||||
import com.rousetime.android_startup.model.LoggerLevel;
|
||||
import com.rousetime.android_startup.model.StartupConfig;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import mogo.telematics.pad.MessagePad;
|
||||
import mogo_msg.MogoReportMsg;
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
* @since 2019-12-23
|
||||
@@ -56,7 +72,8 @@ import java.util.Map;
|
||||
*/
|
||||
public class MainActivity extends MvpActivity<MainView, MainPresenter> implements MainView,
|
||||
IMogoLocationListener,
|
||||
FragmentStackTransactionListener {
|
||||
FragmentStackTransactionListener,
|
||||
IMoGoAutopilotStatusListener {
|
||||
|
||||
protected static final String TAG = "MainActivity";
|
||||
private static final int REQUEST_CODE_DIALOG = 100;
|
||||
@@ -71,6 +88,11 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
|
||||
|
||||
private boolean isFirst = false;
|
||||
|
||||
private RecyclerView mConnectInfoRV;
|
||||
private ConnInfoAdapter mConnAdapter;
|
||||
private List<AutopilotStatusInfo> dataList = new ArrayList<>();
|
||||
private boolean isFloatingLayerHidden = false;
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.module_main_activity_main;
|
||||
@@ -89,10 +111,10 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
|
||||
mCoverUpLayout = findViewById(R.id.module_main_id_cover_up);
|
||||
|
||||
clSpecialEffect = findViewById(R.id.cl_special_effect);
|
||||
|
||||
mConnectInfoRV = findViewById(R.id.rvConnectInfo);
|
||||
initConnectInfoRV();
|
||||
FloatingViewHandler.init(mFloatingLayout);
|
||||
|
||||
|
||||
//申请悬浮窗权限
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
// 检查是否有悬浮窗权限
|
||||
@@ -118,6 +140,9 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
|
||||
super.onCreate(savedInstanceState);
|
||||
calculateStartTime();
|
||||
ContextHolderUtil.holdContext(this);
|
||||
// 监听工控机连接信息
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, this);
|
||||
startUpInStage2();
|
||||
// 加载模块
|
||||
mPresenter.postLoadModuleMsg();
|
||||
// 监听网络状态
|
||||
@@ -171,6 +196,32 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
|
||||
mMogoStatusManager.setMainPageLaunchedStatus(TAG, true);
|
||||
}
|
||||
|
||||
private void initConnectInfoRV() {
|
||||
mConnAdapter = new ConnInfoAdapter(this, dataList);
|
||||
mConnectInfoRV.setLayoutManager(new LinearLayoutManager(this));
|
||||
mConnectInfoRV.setAdapter(mConnAdapter);
|
||||
}
|
||||
|
||||
/**
|
||||
* 第二阶段初始化,第一阶段初始化可查看:{@link com.mogo.launcher.stageone}
|
||||
*/
|
||||
public void startUpInStage2() {
|
||||
StartupConfig config = null;
|
||||
if (BuildConfig.DEBUG) {
|
||||
config = new StartupConfig.Builder()
|
||||
.setLoggerLevel(LoggerLevel.DEBUG)
|
||||
.setOpenStatistics(true)
|
||||
.build();
|
||||
}
|
||||
new StartupManager.Builder()
|
||||
.addStartup(new AutopilotStartup())
|
||||
.addStartup(new APMStartup())
|
||||
.setConfig(config)
|
||||
.build(this)
|
||||
.start()
|
||||
.await();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadModules() {
|
||||
final long start = System.currentTimeMillis();
|
||||
@@ -186,7 +237,7 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
|
||||
EventDispatchCenter.getInstance().setMapLoadedCallback(() -> {
|
||||
CallerLogger.INSTANCE.d(M_HMI + TAG, "map loaded." + Thread.currentThread().getName());
|
||||
// 延时加载其他模块
|
||||
getWindow().getDecorView().postDelayed(() -> {
|
||||
getWindow().getDecorView().post(() -> {
|
||||
loadOthersModules();
|
||||
loadFunctionFragment();
|
||||
|
||||
@@ -194,7 +245,7 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
|
||||
MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode(TAG, true);
|
||||
// 设置地图样式
|
||||
MogoMapListenerHandler.getInstance().onMapModeChanged(EnumMapUI.MAP_STYLE_DAY_VR);
|
||||
}, 1000);
|
||||
});
|
||||
CallerLogger.INSTANCE.i(M_HMI + TAG, "App launch timer cost " + (System.currentTimeMillis() - start) + "ms");
|
||||
});
|
||||
|
||||
@@ -239,8 +290,10 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
|
||||
|
||||
@Override
|
||||
public void hideCoverUpLayout() {
|
||||
mConnectInfoRV.setVisibility(View.GONE);
|
||||
getWindow().setBackgroundDrawable(null);
|
||||
mCoverUpLayout.setVisibility(View.GONE);
|
||||
isFloatingLayerHidden = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -317,9 +370,33 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
|
||||
return mServiceApis;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotStatusResponse(@NonNull AutopilotStatusInfo autoPilotStatusInfo) {
|
||||
mConnectInfoRV.post(() -> updateConnectInfoView(autoPilotStatusInfo));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAutopilotArriveAtStation(@Nullable MessagePad.ArrivalNotification arrivalNotification) {}
|
||||
|
||||
@Override
|
||||
public void onAutopilotGuardian(@Nullable MogoReportMsg.MogoReportMessage guardianInfo) {}
|
||||
|
||||
@Override
|
||||
public void onAutopilotSNRequest() {}
|
||||
|
||||
private void updateConnectInfoView(@NonNull AutopilotStatusInfo autoPilotStatusInfo) {
|
||||
if (!isFloatingLayerHidden) {// 遮罩层显示的时候
|
||||
mConnAdapter.updateData(autoPilotStatusInfo);
|
||||
mConnectInfoRV.scrollToPosition(mConnAdapter.getItemCount() - 1);
|
||||
} else {// 遮罩层隐藏的时候
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.removeListener(TAG);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.removeListener(TAG);
|
||||
IMogoHosListenerRegister listenerRegister = CallerMapUIServiceManager.INSTANCE.getHostListenerRegister();
|
||||
if (listenerRegister != null) {
|
||||
listenerRegister.unregisterMarkerClickListener();
|
||||
|
||||
@@ -6,25 +6,14 @@ import android.content.Context;
|
||||
import android.os.Process;
|
||||
|
||||
import com.bytedance.boost_multidex.BoostMultiDex;
|
||||
import com.mogo.aicloud.services.locationinfo.MogoLocationInfoServices;
|
||||
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager;
|
||||
import com.mogo.cloud.httpdns.MogoHttpDnsConfig;
|
||||
import com.mogo.cloud.httpdns.bean.HttpDnsSimpleLocation;
|
||||
import com.mogo.cloud.passport.IMoGoTokenCallback;
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClient;
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
|
||||
import com.mogo.cloud.socket.SocketBuildConfig;
|
||||
import com.mogo.commons.AbsMogoApplication;
|
||||
import com.mogo.commons.constants.SharedPrefsConstants;
|
||||
import com.mogo.commons.debug.DebugConfig;
|
||||
import com.mogo.commons.network.Utils;
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
||||
import com.mogo.eagle.core.data.constants.MoGoConfig;
|
||||
import com.mogo.eagle.core.data.constants.MogoServicePaths;
|
||||
import com.mogo.eagle.core.data.map.MogoLocation;
|
||||
import com.mogo.eagle.core.function.api.chat.biz.ChatConsts;
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||
import com.mogo.eagle.core.function.notice.PushUIConstants;
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils;
|
||||
@@ -32,16 +21,10 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
|
||||
import com.mogo.eagle.core.utilcode.util.ProcessUtils;
|
||||
import com.mogo.map.MapApiPath;
|
||||
import com.mogo.map.location.IMogoLocationClient;
|
||||
import com.mogo.module.common.MogoModule;
|
||||
import com.mogo.module.common.MogoModulePaths;
|
||||
import com.mogo.module.common.constants.HostConst;
|
||||
import com.mogo.module.service.ServiceConst;
|
||||
import com.mogo.aicloud.services.socket.IMogoLifecycleListener;
|
||||
import com.mogo.test.crashreport.CrashReportConstants;
|
||||
import com.mogo.test.crashreport.upgrade.UpgradeReportConstants;
|
||||
import com.zhidao.support.obu.ami.AmiClientManager;
|
||||
import com.zhjt.mogo_core_function_devatools.DevaToolsProvider;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
@@ -57,19 +40,17 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
initBuildConfig();
|
||||
initConfigWithSP();
|
||||
super.onCreate();
|
||||
if (!shouldInit()) {
|
||||
return;
|
||||
}
|
||||
start = System.currentTimeMillis();
|
||||
connectAmiIp();
|
||||
// Crash 日志收集
|
||||
initCrashConfig();
|
||||
initLogConfig();
|
||||
initTipToast();
|
||||
initModules();
|
||||
initCloudClientConfig();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -78,26 +59,11 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
||||
return ProcessUtils.isMainProcess(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* BuildConfig中渠道配置赋值
|
||||
*/
|
||||
protected abstract void initBuildConfig();
|
||||
|
||||
/**
|
||||
* 从SP本地设置中恢复数据
|
||||
*/
|
||||
protected abstract void initConfigWithSP();
|
||||
|
||||
/**
|
||||
* 初始化异常采集配置
|
||||
*/
|
||||
protected abstract void initCrashConfig();
|
||||
|
||||
/**
|
||||
* 初始化异常采集配置
|
||||
*/
|
||||
protected abstract void initAnalyticsConfig();
|
||||
|
||||
/**
|
||||
* 初始化日志
|
||||
*/
|
||||
@@ -115,149 +81,6 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
||||
CallerDevaToolsManager.INSTANCE.init(this);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 初始化 MoGoAiCloudClientConfig
|
||||
*/
|
||||
protected abstract void initCloudClientConfig();
|
||||
|
||||
|
||||
@Override
|
||||
protected void asyncInitImpl() {
|
||||
super.asyncInitImpl();
|
||||
initAnalyticsConfig();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initHttpDns() {
|
||||
super.initHttpDns();
|
||||
prepareBaseService();
|
||||
}
|
||||
|
||||
/**
|
||||
* 基础服务:passport、location、socket
|
||||
*/
|
||||
private void prepareBaseService() {
|
||||
// 第三方平台的sn是由AI云SDK中服务调用通过服务端生成的
|
||||
preparePassportEnvironment();
|
||||
}
|
||||
|
||||
private void preparePassportEnvironment() {
|
||||
|
||||
// 设置网络环境:HTTP_DNS_ENV_QA、HTTP_DNS_ENV_RELEASE、HTTP_DNS_ENV_DEV
|
||||
switch (DebugConfig.getNetMode()) {
|
||||
case DebugConfig.NET_MODE_DEV:
|
||||
clientConfig.setNetMode(MogoHttpDnsConfig.HTTP_DNS_ENV_DEV);
|
||||
break;
|
||||
case DebugConfig.NET_MODE_QA:
|
||||
clientConfig.setNetMode(MogoHttpDnsConfig.HTTP_DNS_ENV_QA);
|
||||
break;
|
||||
case DebugConfig.NET_MODE_DEMO:
|
||||
clientConfig.setNetMode(MogoHttpDnsConfig.HTTP_DNS_ENV_DEMO);
|
||||
break;
|
||||
default:
|
||||
clientConfig.setNetMode(MogoHttpDnsConfig.HTTP_DNS_ENV_RELEASE);
|
||||
}
|
||||
// 设置是否是第三APP登录
|
||||
clientConfig.setThirdLogin(DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE);
|
||||
// 设置是否输出日志
|
||||
clientConfig.setShowDebugLog(true);
|
||||
// 设置是否输出网络日志
|
||||
clientConfig.setShowNetDebugLog(false);
|
||||
// 设置是否是直播推流的主播
|
||||
clientConfig.setAnchor(true);
|
||||
// 设置从蘑菇AI开放平台获取的APPKey
|
||||
switch (DebugConfig.getCarMachineType()) {
|
||||
// 比亚迪
|
||||
case DebugConfig.CAR_MACHINE_TYPE_BYD:
|
||||
clientConfig.setThirdPartyAppKey("bydauto");
|
||||
break;
|
||||
// 衡阳-鹰眼项目
|
||||
case DebugConfig.CAR_MACHINE_TYPE_LENOVO:
|
||||
clientConfig.setThirdPartyAppKey("pfieouqg");
|
||||
break;
|
||||
// 自研车机
|
||||
default:
|
||||
clientConfig.setThirdPartyAppKey("wbvpzgar");
|
||||
break;
|
||||
}
|
||||
// 设置应用服务AppId 长链、鉴权
|
||||
if (DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE) {
|
||||
clientConfig.setServiceAppId("com_mogo_launcher");
|
||||
} else {
|
||||
clientConfig.setServiceAppId("com.mogo.launcher");
|
||||
}
|
||||
// 设置AI云平台分配给三方应用的签名密钥,需要从AI云平台申请
|
||||
// 设置车机设备的唯一标识(这些表识必须是通过后台录入的设备)
|
||||
clientConfig.setThirdPartyDeviceId(Utils.getDevicesId());
|
||||
// 设置循环检测间隔时间(每隔2小时loop一次httpDnsConfig)
|
||||
clientConfig.setLoopCheckDelay(60 * 60 * 2 * 1000);
|
||||
//设置长链接的secretKey //todo 通过SHA1和包名找中台服务生成,后续包名分渠道,需要做对应操作
|
||||
clientConfig.setSecretKey("YMj2VFDFxJ3Q4gNoZceJ");
|
||||
//连接ami
|
||||
connectAmiIp();
|
||||
|
||||
// todo 使用旧链路
|
||||
// clientConfig.setUseOriginSocket(true);
|
||||
|
||||
clientConfig.setIHttpDnsCurrentLocation(() -> {
|
||||
MogoLocation mogoLocation = null;
|
||||
IMogoLocationClient locationClient = CallerMapUIServiceManager.INSTANCE.getSingletonLocationClient(getApp());
|
||||
if (locationClient != null) {
|
||||
mogoLocation = locationClient.getLastKnowLocation();
|
||||
}
|
||||
HttpDnsSimpleLocation httpDnsSimpleLocation;
|
||||
if (mogoLocation != null
|
||||
&& mogoLocation.getLatitude() != 0
|
||||
&& mogoLocation.getLongitude() != 0) {
|
||||
httpDnsSimpleLocation = new HttpDnsSimpleLocation(
|
||||
mogoLocation.getCityCode(),
|
||||
mogoLocation.getLatitude(),
|
||||
mogoLocation.getLongitude());
|
||||
} else {
|
||||
String ciyCode = SharedPrefsMgr.getInstance(getApp())
|
||||
.getString(SharedPrefsConstants.LOCATION_CITY_CODE);
|
||||
String latitude = SharedPrefsMgr.getInstance(getApp())
|
||||
.getString(SharedPrefsConstants.LOCATION_LATITUDE);
|
||||
String longitude = SharedPrefsMgr.getInstance(getApp())
|
||||
.getString(SharedPrefsConstants.LOCATION_LONGITUDE);
|
||||
try {
|
||||
httpDnsSimpleLocation = new HttpDnsSimpleLocation(
|
||||
ciyCode,
|
||||
Double.parseDouble(latitude),
|
||||
Double.parseDouble(longitude));
|
||||
} catch (NumberFormatException e) {
|
||||
// e.printStackTrace();
|
||||
httpDnsSimpleLocation = new HttpDnsSimpleLocation("010", 1, 1);
|
||||
}
|
||||
//CallerLogger.INSTANCE.d(M_HMI + TAG, "使用缓存GPS信息:" + httpDnsSimpleLocation);
|
||||
}
|
||||
return httpDnsSimpleLocation;
|
||||
});
|
||||
|
||||
// 初始化SDK,可以设置状态回调来监听
|
||||
MoGoAiCloudClient.getInstance().init(this, clientConfig).addTokenCallbacks(
|
||||
new IMoGoTokenCallback() {
|
||||
@Override
|
||||
public void onTokenGot(String token, String sn) {
|
||||
CallerLogger.INSTANCE.d(M_HMI + TAG, "onTokenGot ");
|
||||
clientConfig.setToken(token);
|
||||
// 异步初始化NetConfig
|
||||
asyncInit();
|
||||
// HttpDns ttl回调 --- socketTTL
|
||||
registerSocketHttpDnsTTL(HostConst.SOCKET_CENTER_DOMAIN);
|
||||
// 开启每5s/次定位上报
|
||||
uploadLocPerFiveSecond();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(int code, String msg) {
|
||||
CallerLogger.INSTANCE.d(M_HMI + TAG, "初始化MogoAiCloudSdk failed ,reason : " + msg + " , 未能开启长链服务和初始化Modules服务");
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 连接ami
|
||||
*/
|
||||
@@ -266,69 +89,15 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
||||
AmiClientManager.getInstance().setObuIp(ipAddress);
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传自车位置信息到云端
|
||||
*/
|
||||
private void uploadLocPerFiveSecond() {
|
||||
if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE) {
|
||||
MogoLocationInfoServices.getInstance().init(getApplicationContext());
|
||||
MogoLocationInfoServices.getInstance().start();
|
||||
IMogoLocationClient locationClient = CallerMapUIServiceManager.INSTANCE.getSingletonLocationClient(getApplicationContext());
|
||||
if (locationClient != null) {
|
||||
locationClient.addLocationListener(location -> MogoLocationInfoServices.getInstance().provideLocation(location));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void startSocketService() {
|
||||
CallerLogger.INSTANCE.d(M_HMI + TAG, "startSocketService");
|
||||
MogoLocation location = CallerMapUIServiceManager.INSTANCE.getSingletonLocationClient(getApp()).getLastKnowLocation();
|
||||
// 关闭长链服务
|
||||
MogoAiCloudSocketManager.getInstance(getApplicationContext()).destroy();
|
||||
MogoAiCloudSocketManager.getInstance(getApplicationContext()).registerLifecycleListener(10020, new IMogoLifecycleListener() {
|
||||
@Override
|
||||
public void onConnectFailure() {
|
||||
CallerLogger.INSTANCE.d(M_HMI + TAG, "socket-onConnectFailure");
|
||||
DebugConfig.setDownloadSnapshot(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectSuccess() {
|
||||
CallerLogger.INSTANCE.d(M_HMI + TAG, "socket-onConnectSuccess");
|
||||
DebugConfig.setDownloadSnapshot(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectLost() {
|
||||
CallerLogger.INSTANCE.d(M_HMI + TAG, "socket-onConnectLost");
|
||||
DebugConfig.setDownloadSnapshot(false);
|
||||
}
|
||||
});
|
||||
// 开启Socket长链服务
|
||||
double lat = location.getLatitude();
|
||||
double lon = location.getLongitude();
|
||||
MogoAiCloudSocketManager.getInstance(getApplicationContext()).init(getApplicationContext(), DebugConfig.getSocketAppId(), lat, lon);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void socketTTL() {
|
||||
// 鉴权成功后开启socket长链服务
|
||||
startSocketService();
|
||||
}
|
||||
|
||||
private void initModules() {
|
||||
CallerLogger.INSTANCE.d(M_HMI + TAG, "initModules");
|
||||
// 初始化 bugly 升级
|
||||
MogoModulePaths.addBaseModule(new MogoModule(UpgradeReportConstants.PATH, UpgradeReportConstants.NAME));
|
||||
// 初始化 apm 日志采集
|
||||
MogoModulePaths.addBaseModule(new MogoModule(CrashReportConstants.PATH, CrashReportConstants.NAME));
|
||||
//och模块
|
||||
MogoModulePaths.addModuleFunction(new MogoModule("/och/api", "IMoGoFunctionProvider"));
|
||||
|
||||
MogoModulePaths.addBaseModule(new MogoModule(MapApiPath.PATH, "CustomMapApiBuilder"));
|
||||
MogoModulePaths.addBaseModule(new MogoModule(ServiceConst.PATH_REFRESH_STRATEGY, ServiceConst.PATH_REFRESH_STRATEGY));
|
||||
// MogoModulePaths.addBaseModule(new MogoModule(V2XConst.PATH_V2X_UI, V2XConst.MODULE_NAME));
|
||||
|
||||
// 域控制器模块(新)
|
||||
MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_AUTO_PILOT, "IMoGoAutoPilotProvider"));
|
||||
// OBU 模块
|
||||
MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_V2X_OBU_MOGO, "IMoGoObuProvider"));
|
||||
// 超视距,路测、行车记录仪监控
|
||||
@@ -365,5 +134,6 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
|
||||
AppLaunchTimeUtils.beginTimeCalculate(AppLaunchTimeUtils.COLD_START);
|
||||
}
|
||||
BoostMultiDex.install(base);
|
||||
AbsMogoApplication.sApp = this;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,13 +22,13 @@ import com.mogo.eagle.core.function.main.constants.MainConstants;
|
||||
* <p>
|
||||
* 描述
|
||||
*/
|
||||
public class MainPresenter extends Presenter< MainView > {
|
||||
public class MainPresenter extends Presenter<MainView> {
|
||||
|
||||
private Handler mMsgHandler = new Handler( Looper.getMainLooper() ) {
|
||||
private Handler mMsgHandler = new Handler(Looper.getMainLooper()) {
|
||||
@Override
|
||||
public void handleMessage( Message msg ) {
|
||||
super.handleMessage( msg );
|
||||
switch ( msg.what ) {
|
||||
public void handleMessage(Message msg) {
|
||||
super.handleMessage(msg);
|
||||
switch (msg.what) {
|
||||
case MainConstants.MSG_HIDE_MAP_COVER_FRAME:
|
||||
mView.hideCoverUpLayout();
|
||||
break;
|
||||
@@ -41,14 +41,14 @@ public class MainPresenter extends Presenter< MainView > {
|
||||
|
||||
public static final int MOGO_PERMISSION_REQUEST_CODE = 10000;
|
||||
|
||||
public MainPresenter( MainView view ) {
|
||||
super( view );
|
||||
SchemeIntent.getInstance().init( getContext(), mView.getApis() );
|
||||
public MainPresenter(MainView view) {
|
||||
super(view);
|
||||
SchemeIntent.getInstance().init(getContext(), mView.getApis());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate( @NonNull LifecycleOwner owner ) {
|
||||
super.onCreate( owner );
|
||||
public void onCreate(@NonNull LifecycleOwner owner) {
|
||||
super.onCreate(owner);
|
||||
}
|
||||
|
||||
public void checkPermission(Activity activity) {
|
||||
@@ -96,25 +96,20 @@ public class MainPresenter extends Presenter< MainView > {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 延时操作
|
||||
*/
|
||||
public void delayOperations() {
|
||||
mMsgHandler.sendEmptyMessageDelayed( MainConstants.MSG_HIDE_MAP_COVER_FRAME, 150L );
|
||||
mMsgHandler.sendEmptyMessage(MainConstants.MSG_HIDE_MAP_COVER_FRAME);
|
||||
}
|
||||
|
||||
public void postLoadModuleMsg() {
|
||||
Message msg = Message.obtain();
|
||||
msg.what = MainConstants.MSG_LOAD_MODULES;
|
||||
mMsgHandler.sendMessageDelayed( msg, 500 );
|
||||
mMsgHandler.sendMessage(msg);
|
||||
}
|
||||
|
||||
public void handleSchemeIntent( Intent intent, boolean isOnNewIntent ) {
|
||||
SchemeIntent.getInstance().handle( intent, isOnNewIntent );
|
||||
}
|
||||
|
||||
public void initADAS(){
|
||||
|
||||
public void handleSchemeIntent(Intent intent, boolean isOnNewIntent) {
|
||||
SchemeIntent.getInstance().handle(intent, isOnNewIntent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.mogo.eagle.core.function.main.stagetwo;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.mogo.test.crashreport.CrashReportConstants;
|
||||
import com.mogo.test.crashreport.upgrade.UpgradeReportConstants;
|
||||
import com.rousetime.android_startup.AndroidStartup;
|
||||
|
||||
public class APMStartup extends AndroidStartup<Boolean> {
|
||||
@Nullable
|
||||
@Override
|
||||
public Boolean create(@NonNull Context context) {
|
||||
// bugly
|
||||
ARouter.getInstance().build(UpgradeReportConstants.PATH).navigation();
|
||||
// apm
|
||||
ARouter.getInstance().build(CrashReportConstants.PATH).navigation();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean callCreateOnMainThread() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean waitOnMainThread() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.mogo.eagle.core.function.main.stagetwo;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.mogo.eagle.core.data.constants.MogoServicePaths;
|
||||
import com.rousetime.android_startup.AndroidStartup;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class AutopilotStartup extends AndroidStartup<Boolean> {
|
||||
@Nullable
|
||||
@Override
|
||||
public Boolean create(@NonNull Context context) {
|
||||
ARouter.getInstance().build(MogoServicePaths.PATH_AUTO_PILOT).navigation();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean callCreateOnMainThread() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean waitOnMainThread() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public List<String> dependenciesByName() {
|
||||
List<String> deps = new ArrayList<>();
|
||||
deps.add("com.mogo.eagle.core.function.main.stagetwo.APMStartup");
|
||||
return deps;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.mogo.eagle.core.function.main.stagetwo;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.rousetime.android_startup.AndroidStartup;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MapStartup extends AndroidStartup<Boolean> {
|
||||
@Nullable
|
||||
@Override
|
||||
public Boolean create(@NonNull Context context) {
|
||||
// TODO:暂不支持分步加载
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean callCreateOnMainThread() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean waitOnMainThread() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public List<String> dependenciesByName() {
|
||||
List<String> deps = new ArrayList<>();
|
||||
deps.add("com.mogo.eagle.core.function.main.stagetwo.APMStartup");
|
||||
return deps;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="48px"
|
||||
android:padding="12px">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvStatusInfo"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:textSize="24px"
|
||||
tools:text="测试数据看一下测试数据看一下测试数据看一下测试数据看一下测试数据看一下测试数据看一下测试数据看一下测试数据看一下测试数据看一下测试数据看一下"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -87,4 +87,10 @@
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rvConnectInfo"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
/>
|
||||
|
||||
</FrameLayout>
|
||||
@@ -74,5 +74,11 @@ class AutopilotStatusInfo : Serializable {
|
||||
*/
|
||||
var pilotmode = 0
|
||||
|
||||
|
||||
override fun toString(): String {
|
||||
return "AutopilotStatusInfo(connectIP=$connectIP, connectPort=$connectPort, " +
|
||||
"connectStatus=$connectStatus, connectDescribe=$connectStatusDescribe, version=$version, dockVersion=$dockVersion," +
|
||||
" locationStatus=$locationStatus), locationLat=$locationLat, locationLon=$locationLon," +
|
||||
" satelliteTime=$satelliteTime, speed=$speed, state=$state, reason=$reason, camera=$camera," +
|
||||
" radar=$radar, rtk=$rtk, pilotmode=$pilotmode)"
|
||||
}
|
||||
}
|
||||
@@ -203,17 +203,6 @@ interface IMoGoWaringProvider : IMoGoHmiViewProxy {
|
||||
*/
|
||||
fun showModifyBindingcarDialog()
|
||||
|
||||
/**
|
||||
* 展示工控机下载、升级状态信息
|
||||
* @param upgradeMode 升级模式(提示升级、静默升级)
|
||||
* @param downloadStatus 下载状态
|
||||
* @param currentProgress 当前已经下载包体大小
|
||||
* @param totalProgress 下载包体总大小
|
||||
* @param downloadVersion 下载版本
|
||||
* @param upgradeStatus 升级状态
|
||||
*/
|
||||
fun showAdUpgradeStatus(upgradeMode: Int, downloadStatus: Int, currentProgress: Int, totalProgress: Int, downloadVersion: String, upgradeStatus: Int)
|
||||
|
||||
/**
|
||||
*注册工控机升级提示圆点View的回调
|
||||
* @param 提示圆点View
|
||||
|
||||
@@ -279,20 +279,6 @@ object CallerHmiManager : CallerBase() {
|
||||
waringProviderApi?.hideToolsView()
|
||||
}
|
||||
|
||||
/**
|
||||
* 展示工控机下载、升级状态信息
|
||||
* @param upgradeMode 升级模式(提示升级、静默升级)
|
||||
* @param downloadStatus 下载状态
|
||||
* @param currentProgress 当前已经下载包体大小
|
||||
* @param totalProgress 下载包体总大小
|
||||
* @param downloadVersion 下载版本
|
||||
* @param upgradeStatus 升级状态
|
||||
*/
|
||||
fun showAdUpgradeStatus(upgradeMode : Int, downloadStatus : Int,currentProgress : Int,totalProgress : Int
|
||||
,downloadVersion : String,upgradeStatus : Int){
|
||||
waringProviderApi?.showAdUpgradeStatus(upgradeMode,downloadStatus, currentProgress, totalProgress, downloadVersion, upgradeStatus)
|
||||
}
|
||||
|
||||
/**
|
||||
*注册工控机升级提示圆点View的回调
|
||||
* @param 提示圆点View
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
package com.mogo.commons;
|
||||
|
||||
import static com.mogo.aicloud.services.httpdns.HttpDnsConst.HTTP_DNS_ADDRESS_TYPE_HTTP;
|
||||
import static com.mogo.commons.debug.DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
@@ -12,20 +9,11 @@ import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.mogo.aicloud.services.httpdns.IMogoHttpDns;
|
||||
import com.mogo.aicloud.services.httpdns.MogoHttpDnsHandler;
|
||||
import com.mogo.commons.crash.FinalizeCrashFixer;
|
||||
import com.mogo.commons.debug.DebugConfig;
|
||||
import com.mogo.commons.device.Devices;
|
||||
import com.mogo.commons.network.NetConfigUtils;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.mogo.toast.TipDrawable;
|
||||
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
|
||||
import com.mogo.eagle.core.utilcode.util.AppStateManager;
|
||||
import com.mogo.eagle.core.utilcode.util.AppUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.CleanUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadPoolService;
|
||||
import com.mogo.eagle.core.utilcode.util.Utils;
|
||||
|
||||
import io.reactivex.plugins.RxJavaPlugins;
|
||||
@@ -40,27 +28,19 @@ public abstract class AbsMogoApplication extends Application {
|
||||
|
||||
private static final String TAG = "AbsMogoApplication";
|
||||
|
||||
private static Application sApp;
|
||||
protected static Application sApp;
|
||||
|
||||
public static Application getApp() {
|
||||
return sApp;
|
||||
}
|
||||
|
||||
private static IMogoHttpDns sApis;
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
AppStateManager.INSTANCE.init(this);
|
||||
initRxJavaErrorHandler();
|
||||
sApp = this;
|
||||
FinalizeCrashFixer.fix();
|
||||
initARouter();
|
||||
Utils.init(this);
|
||||
if (shouldInit()) {
|
||||
initHttpDns();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void initRxJavaErrorHandler() {
|
||||
@@ -69,40 +49,10 @@ public abstract class AbsMogoApplication extends Application {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化跨模块框架 ARouter
|
||||
*/
|
||||
private void initARouter() {
|
||||
try {
|
||||
if (DebugConfig.isDebug()) {
|
||||
ARouter.openDebug();
|
||||
ARouter.openLog();
|
||||
}
|
||||
// 初始化 arouter
|
||||
ARouter.init(sApp);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
// 由于ARouter会在SP_AROUTER_CACHE.xml缓存路由表,如果出现了被删除的情况会报错,这里清除下就好了
|
||||
CleanUtils.cleanInternalSp();
|
||||
// 重启应用
|
||||
AppUtils.relaunchApp();
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean shouldInit() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化 HttpDNS ,这里会通过一个接口获取所有鹰眼中使用的微服务域名以及端口号
|
||||
* 后续的网络请求会通过 HttpDnsInterceptor 进行拦截替换
|
||||
*/
|
||||
protected void initHttpDns() {
|
||||
if (sApis == null) {
|
||||
sApis = MogoHttpDnsHandler.getHttpDnsApi();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化 自定义样式e饿
|
||||
*/
|
||||
@@ -143,49 +93,4 @@ public abstract class AbsMogoApplication extends Application {
|
||||
}
|
||||
return contentView;
|
||||
}
|
||||
|
||||
/**
|
||||
* 异步初始化
|
||||
*/
|
||||
protected void asyncInit() {
|
||||
ThreadPoolService.execute(() -> {
|
||||
if (DebugConfig.getCarMachineType() == CAR_MACHINE_TYPE_SELF_INNOVATE) {
|
||||
Devices.init(getApp());
|
||||
Devices.checkBindState();
|
||||
}
|
||||
//初始化网络配置
|
||||
NetConfigUtils.init();
|
||||
asyncInitImpl();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 异步厨初始化
|
||||
*/
|
||||
protected void asyncInitImpl() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 缓存IP地址
|
||||
private String cacheIp = null;
|
||||
|
||||
/**
|
||||
* 请求获取最新的 DNS 微服务 域名信息
|
||||
*/
|
||||
protected void registerSocketHttpDnsTTL(String host) {
|
||||
sApis.addressChangedListener(map -> {
|
||||
String dnsCacheIp = sApis.getCachedHttpDnsIps(host, HTTP_DNS_ADDRESS_TYPE_HTTP);
|
||||
if (dnsCacheIp == null) {
|
||||
return;
|
||||
}
|
||||
if (!dnsCacheIp.equals(cacheIp)) {
|
||||
CallerLogger.INSTANCE.d("TEST_SOCKET", "获取缓存Dns IP : " + dnsCacheIp + " , 原缓存 IP : " + cacheIp);
|
||||
socketTTL();
|
||||
this.cacheIp = dnsCacheIp;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected abstract void socketTTL();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user