Merge branch 'refs/heads/dev_robotaxi-d_240912_6.7.0' into dev_robotaxi-d_240912_6.7.2_local

# Conflicts:
#	OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/LoadingMapStatusView.kt
This commit is contained in:
donghongyu-pc
2024-10-29 17:49:38 +08:00
15 changed files with 106 additions and 16 deletions

View File

@@ -1,6 +1,7 @@
package com.mogo.och.biz.login
import android.content.Context
import android.util.Log
import android.view.View
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.facade.annotation.Route
@@ -44,6 +45,7 @@ class LoginProvider : LoginService {
private var loginStatus: LoginStatusEnum = LoginStatusEnum.None
private var businessEnum: BusinessEnum = BusinessEnum.None
private var openOrderStatusEnum: OpenOrderStatusEnum = OpenOrderStatusEnum.None
private var carModel: Carmodel = Carmodel.B1
private var loginInfo: LoginInfo? = null
private val loginInfoKey = "LOGININFOKEY"
@@ -101,6 +103,7 @@ class LoginProvider : LoginService {
override fun queryLoginStatusByNet(readCatche:Boolean) {
CallerLogger.d(tag, "queryLoginStatusByNet")
Log.d("登录","设置源:queryLoginStatusByNet")
LoginModel.queryCarStatus(readCatche)
}
@@ -160,6 +163,7 @@ class LoginProvider : LoginService {
CallerLogger.d(tag, "setLoginInfo:${loginInfo}")
if(this.loginInfo!=loginInfo){
this.loginInfo = loginInfo
OchChainLogManager.writeChainLog("登录信息",loginInfo.toString())
}
CallerEagleBaseFunctionCall4OchManager.setOchLoginNo(loginInfo.phone)
@@ -168,6 +172,10 @@ class LoginProvider : LoginService {
CallerEagleBaseFunctionCall4OchManager.updateTenantId(loginInfo.tenantId)
val carModel = Carmodel.getCarModelFromServerName(LoginStatusManager.getLoginInfo()?.carModel)
if(this.carModel!=carModel){
this.carModel = carModel
LoginStatusManager.invokeCarModelChange(this.carModel)
}
HdMapBuildConfig.currentCarVrIconRes = carModel.rawValue
}
@@ -192,12 +200,18 @@ class LoginProvider : LoginService {
return loginStatus
}
override fun getCarModel(): Carmodel {
CallerLogger.d(tag, "getCarModel:${carModel}")
return carModel
}
override fun setLoginStatus(loginStatus: LoginStatusEnum) {
CallerLogger.d(tag, "setLoginStatus:${loginStatus}----old${this.loginStatus}")
if (loginStatus != this.loginStatus) {
OchChainLogManager.writeChainLog("登录状态变化","${this.loginStatus}-->${loginStatus}");
this.loginStatus = loginStatus
Log.d("登录","设置源:invokeLoginStatusChange")
LoginStatusManager.invokeLoginStatusChange(loginStatus)
}
}

View File

@@ -3,6 +3,7 @@ package com.mogo.och.biz.login.model
import android.annotation.SuppressLint
import android.content.Context
import android.net.ConnectivityManager
import android.util.Log
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.module.intent.IMogoIntentListener
import com.mogo.commons.module.intent.IntentManager
@@ -176,6 +177,7 @@ object LoginModel {
* 8、登录页面关闭后查下状态
*/
fun queryCarStatus(readCatche:Boolean = true) {
Log.d("登录","设置源:queryCarStatus")
mContext?.let {
if(readCatche){
val logingInfoJson = OchSPManager.getString(loginInfoKey)
@@ -224,6 +226,7 @@ object LoginModel {
@Synchronized
private fun go2LoginInfo(data: DriverStatusQueryRespBean?, source: String) {
CallerLogger.d(TAG,"设置源:${source}")
Log.d("登录","设置源:${source}")
data?.let {
LoginStatusManager.setLoginInfo(data.data)
}

View File

@@ -155,14 +155,14 @@ object OchCommonServiceManager {
SharedPrefsMgr.getInstance().token,
sn
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "loginStatus",false))
.subscribe(OchCommonSubscribeImpl(context, callback, "loginStatus"))
}else{
ochLoginServiceSaasEh.queryDriverServiceStatusAndLoginStatus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
sn
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "loginStatus",false))
.subscribe(OchCommonSubscribeImpl(context, callback, "loginStatus"))
}
}

View File

@@ -1,9 +1,13 @@
package com.mogo.och.common.module.biz.login;
import com.mogo.eagle.core.data.enums.Carmodel;
public interface ILoginCallback {
default void onStatusChange(LoginStatusEnum currentStatus){}
default void onCarModelChange(Carmodel currentStatus){}
default void onBusinessChange(BusinessEnum businessEnum){}
default void onOpenOrderStatusEnumChange(OpenOrderStatusEnum businessEnum){}

View File

@@ -178,8 +178,8 @@ public class LoginInfo {
", brand='" + brand + '\'' +
", carModel='" + carModel + '\'' +
", photos='" + photos + '\'' +
", tenantId='" + tenantId + '\'' +
", driverId='" + driverId + '\'' +
", tenantId=" + tenantId +
", driverId=" + driverId +
'}';
}

View File

@@ -1,5 +1,6 @@
package com.mogo.och.common.module.biz.login
import com.mogo.eagle.core.data.enums.Carmodel
import com.mogo.och.common.module.biz.provider.CommonService
import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType
import com.mogo.och.common.module.manager.socket.lan.bean.EnvType
@@ -14,6 +15,7 @@ interface LoginService :CommonService {
fun isLogin():Boolean
fun getLoginStatus(): LoginStatusEnum
fun getCarModel(): Carmodel
fun setLoginStatus(loginStatus: LoginStatusEnum)
fun setLoginStatus(status: Int)
fun setBusinessType(type: Int)

View File

@@ -1,9 +1,11 @@
package com.mogo.och.common.module.biz.login
import android.util.Log
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.enums.Carmodel
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.och.common.module.constant.OchCommonConst
import com.mogo.och.common.module.manager.loop.BizLoopManager
@@ -118,6 +120,15 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
return LoginStatusEnum.None
}
@JvmStatic
fun getCarModel(): Carmodel {
loginService?.let {
return it.getCarModel()
}
return Carmodel.B1
}
@JvmStatic
fun isLogin(): Boolean {
loginService?.let {
@@ -127,8 +138,10 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
}
fun invokeLoginStatusChange(currentStatus: LoginStatusEnum) {
Log.d("登录","设置源:invokeLoginStatusChange")
if(!FunctionBuildConfig.isOffLine){
if(currentStatus==LoginStatusEnum.Login){
Log.d("登录","设置源:queryLoginStatusByNet")
BizLoopManager.setLoopFunction(TAGLoopStatus, LoopInfo(60*2, ::queryLoginStatusByNet,immediately = true, scheduler = Schedulers.io()))
}else{
BizLoopManager.removeLoopFunction(TAGLoopStatus)
@@ -191,6 +204,7 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
listener.onStatusChange(getLoginStatus())
listener.onBusinessChange(getBusInessType())
listener.onOpenOrderStatusEnumChange(getOpenOrderType())
listener.onCarModelChange(getCarModel())
}
fun setLoginError(code: Int, msg: String) {
@@ -200,5 +214,12 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
}
}
fun invokeCarModelChange(carModel: Carmodel) {
M_LISTENERS.forEach {
val listener = it.value
listener.onCarModelChange(carModel)
}
}
}

View File

@@ -4,6 +4,7 @@ import android.os.Handler
import android.os.HandlerThread
import android.os.Looper
import android.os.Message
import android.util.Log
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.logger.scene.SceneConstant.Companion.M_BUS_P
@@ -98,13 +99,13 @@ object BizLoopManager {
}catch (e:Throwable){
CallerLogger.e(TAG,"$tag:--$e")
}
CallerLogger.d(TAG, "${aLong}正在执行方法${tag}_${Thread.currentThread().name}")
Log.d(TAG, "${aLong}正在执行方法${tag}_${Thread.currentThread().name}")
}
override fun onNext(t: String) {}
})
}else{
loopInfo.function.invoke()
CallerLogger.d(TAG, "${aLong}正在执行方法${tag}_${Thread.currentThread().name}")
Log.d(TAG, "${aLong}正在执行方法${tag}_${Thread.currentThread().name}")
}
}catch (e:Throwable){
e.printStackTrace()

View File

@@ -3,11 +3,13 @@ package com.mogo.och.common.module.wigets
import android.animation.ObjectAnimator
import android.content.Context
import android.util.AttributeSet
import android.util.Log
import android.view.LayoutInflater
import android.view.animation.LinearInterpolator
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.eagle.core.data.config.HdMapBuildConfig
import com.mogo.eagle.core.data.enums.Carmodel
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
@@ -16,13 +18,16 @@ import com.mogo.map.listener.MogoMapListenerHandler
import com.mogo.map.uicontroller.EnumMapUI
import com.mogo.och.common.module.R
import com.mogo.skin.utils.SkinResources
import com.mogo.och.common.module.biz.login.ILoginCallback
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import kotlinx.android.synthetic.main.common_loading_map.view.aciv_loading_map
class LoadingMapStatusView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr),IMogoMapListener {
) : ConstraintLayout(context, attrs, defStyleAttr),IMogoMapListener, ILoginCallback {
companion object {
const val TAG = "LoadingMapStatusView"
}
@@ -36,6 +41,7 @@ class LoadingMapStatusView @JvmOverloads constructor(
override fun onAttachedToWindow() {
super.onAttachedToWindow()
CallerLogger.d(TAG,"onAttachedToWindow")
LoginStatusManager.addListener(TAG,this)
visibility = VISIBLE
MogoMapListenerHandler.mogoMapListenerHandler.registerHostMapListener(TAG,this)
if (autopilotLoadingAnimator == null) {
@@ -58,9 +64,11 @@ class LoadingMapStatusView @JvmOverloads constructor(
// 设置地图样式
MogoMapListenerHandler.mogoMapListenerHandler.onMapModeChanged(EnumMapUI.MAP_STYLE_DAY_VR)
// 获取自车模型
val currentByteArray= SkinResources.getInstance().getRawResourceBytes(HdMapBuildConfig.currentCarVrIconRes)
CallerMapUIServiceManager.getMapUIController()?.changeCurrentIcon(currentByteArray,true)
OchChainLogManager.writeChainLog("模型加载","加载地图成功、并切换模型,${LoginStatusManager.getLoginInfo()}")
UiThreadHandler.postDelayed({ visibility = GONE },2_000,UiThreadHandler.MODE.QUEUE)
}
@@ -68,8 +76,23 @@ class LoadingMapStatusView @JvmOverloads constructor(
super.onDetachedFromWindow()
CallerLogger.d(TAG,"onDetachedFromWindow")
MogoMapListenerHandler.mogoMapListenerHandler.unregisterHostMapListener(TAG)
LoginStatusManager.removeListener(TAG)
}
override fun onCarModelChange(currentStatus: Carmodel?) {
super.onCarModelChange(currentStatus)
Log.d(TAG,"onCarModelChange")
OchChainLogManager.writeChainLog("模型加载","模型修改${currentStatus}")
if(HdMapBuildConfig.isMapLoaded){
var currentByteArray= SkinResources.getInstance().getRawResourceBytes(HdMapBuildConfig.currentCarVrIconRes)
if (currentStatus!=null) {
currentByteArray= SkinResources.getInstance().getRawResourceBytes(currentStatus.resId)
}
CallerMapUIServiceManager.getMapUIController()?.changeCurrentIcon(currentByteArray,true)
}else{
HdMapBuildConfig.currentCarVrIconRes = currentStatus?.resId?:Carmodel.B1.resId
}
}
}

View File

@@ -146,9 +146,8 @@ class TeleMsgHandler : IMsgHandler {
val content = String(it.body, Charset.defaultCharset())
Log.d(TAG, "乘客屏收到司机屏转发的新链路开关 --- 2 ---:$content")
val data = GsonUtils.fromJson(content, Map::class.java)
val f1 = data["f1"] as Boolean
val f2 = data["f2"] as Boolean
Log.d(TAG, "乘客屏收到司机屏转发的新链路开关 --- 3 ---:$data, f1: $f1, f2:$f2")
val f1 = data["f1"] as? Boolean ?: false
Log.d(TAG, "乘客屏收到司机屏转发的新链路开关 --- 3 ---:$data, f1: $f1")
FunctionBuildConfig.v2nTotalSwitch = f1
} catch (t: Throwable) {
t.printStackTrace()

View File

@@ -28,6 +28,7 @@ object ColdStartManager: IMoGoAutopilotStatusListener, IDataCenterBizListener {
private var coldStartNowDay = millis2String(ColdStartConfig.getColdStartNowTime(), TimeUtils.getMdFormat())
//获取当天是否冷启动成功
private var coldStartSuccessDay = millis2String(ColdStartConfig.getColdStartSuccessTime(), TimeUtils.getMdFormat())
private var firstDisConnectIpc = false
fun init(context: Context){
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
@@ -40,8 +41,9 @@ object ColdStartManager: IMoGoAutopilotStatusListener, IDataCenterBizListener {
){
//冷启动只上司机屏
if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){
//域控连接
if(status != AdasConstants.IpcConnectionStatus.CONNECTED){
//域控连接
if(status == AdasConstants.IpcConnectionStatus.CONNECTED){
firstDisConnectIpc = true
coldStartNowDay = millis2String(ColdStartConfig.getColdStartNowTime(), TimeUtils.getMdFormat())
if(coldStartNowDay == currentDay){
isColdStartNow = true
@@ -65,7 +67,10 @@ object ColdStartManager: IMoGoAutopilotStatusListener, IDataCenterBizListener {
}
}
}else{
ipcConnectedTime = System.currentTimeMillis()
if(firstDisConnectIpc){
ipcConnectedTime = System.currentTimeMillis()
firstDisConnectIpc = false
}
}
}
}

View File

@@ -59,6 +59,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.mogo.vehicle.SweeperVehicleConfigUtils
import com.mogo.eagle.core.utilcode.rv.divider.CommonDividerItemDecoration
import com.mogo.eagle.core.utilcode.util.AppStateManager
import com.mogo.eagle.core.utilcode.util.GsonUtils.*
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.zhjt.mogo.adas.data.AdasConstants
import com.zhjt.mogo.adas.data.bean.AdasParam
@@ -397,6 +398,10 @@ class OperatePanelLayout : LinearLayout {
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_V2N_NEW_LINKED_TO_PNC)?.also { changeValue(it, false) }
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_V2N_NEW_LINKED_GREEN_WAVE)?.also { changeValue(it, false) }
}
val map = HashMap<String, Boolean>().also {
it["f1"] = isChecked
}
CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, toJson(map).toByteArray())
return true
}
KEY_V2N_NEW_LINKED_TO_PNC -> {

View File

@@ -219,6 +219,11 @@ class ColdStartView @JvmOverloads constructor(
if(status.hasAutoPilotReady() && status.autoPilotReady && !coldStartStatus){
coldStartStatus = true
showColdStartSuccessView()
//冷启动成功埋点统计
reason = "冷启动成功"
ColdStartAnalyticsManager.coldStartStepAnalytics(ColdStartAnalyticsManager.coldStartSuccess,reason)
//记录冷启动成功时间
ColdStartConfig.setColdStartSuccessTime(System.currentTimeMillis())
}
}
}
@@ -448,6 +453,9 @@ class ColdStartView @JvmOverloads constructor(
//域控连接失败埋点统计
this.reason = "域控连接失败:$failReason"
ColdStartAnalyticsManager.coldStartStepAnalytics(ColdStartAnalyticsManager.ipcConnectFail,reason)
ssmConnectStatus = false
coldStartStatus = false
newColdStart = false
}
private fun showIPCConnecting(){

View File

@@ -1726,7 +1726,7 @@ class TravelRealityView @JvmOverloads constructor(
hideStartEndMarker()
}
} else {
drawStartEndMarker(emptyList())
drawStartEndMarker(ArrayList())
}
}
}

View File

@@ -48,4 +48,9 @@ enum class Carmodel(val serverName:String,@RawRes val rawValue: Int, val resId:
}
}
override fun toString(): String {
return "Carmodel(serverName='$serverName', rawValue=$rawValue, resId=$resId)"
}
}