Merge branch 'refs/heads/dev_robobus-d_241226_6.8.6' into dev_robotaxi-d_241210_6.9.0
# Conflicts: # OCH/common/common/src/debug/java/com/mogo/och/common/module/debug/DebugDataDispatch.kt # gradle.properties
This commit is contained in:
@@ -134,7 +134,7 @@ public class V2XRoadEventScenario extends AbsV2XScenario<V2XRoadEventEntity> imp
|
||||
);
|
||||
CallerHmiManager.INSTANCE.warningV2X(poiType, alarmText,
|
||||
ttsText, this,WarningDirectionEnum.ALERT_WARNING_TOP,
|
||||
TimeUnit.SECONDS.toMillis(5), AIAssist.LEVEL2, false);
|
||||
TimeUnit.SECONDS.toMillis(5), AIAssist.NEW_LEVEL_2, false);
|
||||
//消息埋点
|
||||
V2XEventAnalyticsManager.INSTANCE.triggerV2XEvent(poiType,alarmText,ttsText, DataSourceType.AICLOUD, CommunicationType.V2N);
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMoGoChas
|
||||
CallerHmiManager.INSTANCE.warningV2X(v2xType + "",
|
||||
getAlertContentForFrontWarning(mMarkerEntity), mMarkerEntity.getTts(),
|
||||
this,getDirection(),
|
||||
TimeUnit.SECONDS.toMillis(5), AIAssist.LEVEL2, false);
|
||||
TimeUnit.SECONDS.toMillis(5), AIAssist.NEW_LEVEL_2, false);
|
||||
//消息埋点
|
||||
V2XEventAnalyticsManager.INSTANCE.triggerV2XEvent(v2xType,getAlertContentForFrontWarning(mMarkerEntity).toString(),
|
||||
mMarkerEntity.getTts(), DataSourceType.AICLOUD, CommunicationType.V2N);
|
||||
|
||||
@@ -29,18 +29,13 @@ class DataCenterProvider : IDataCenterProvider {
|
||||
CallerMsgBoxManager.queryAllMessages(it)
|
||||
TrafficLightDispatcher.INSTANCE.initServer(it)
|
||||
SpeedLimitDispatcher.INSTANCE.initLimit(it)
|
||||
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
|
||||
IotManager.init()
|
||||
}
|
||||
|
||||
IotManager.init(AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode))
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
TrafficLightDispatcher.INSTANCE.destroy()
|
||||
SpeedLimitDispatcher.INSTANCE.destroy()
|
||||
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
|
||||
IotManager.destroy()
|
||||
}
|
||||
IotManager.destroy()
|
||||
}
|
||||
}
|
||||
@@ -31,7 +31,6 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListene
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotControlProvider
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_MODE_RAIN
|
||||
import com.mogo.eagle.core.function.api.map.collect.IMoGoMapDataCollectProvider
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerIpcConnectStateToastManager
|
||||
import com.mogo.eagle.core.function.call.cloud.CallerCloudCertManager
|
||||
@@ -55,6 +54,7 @@ import com.mogo.eagle.core.utilcode.util.ParseVersionUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.support.device.led.LedSourceManager
|
||||
import com.mogo.telematic.MogoProtocolMsg
|
||||
import com.mogo.telematic.MogoProtocolMsg.NORMAL_DATA
|
||||
import com.mogo.telematic.MogoProtocolMsg.SYNC_FUSION_COLOR_STATUS
|
||||
@@ -1038,6 +1038,13 @@ class MoGoAutopilotControlProvider :
|
||||
*/
|
||||
override fun sendTripInfo(type: Int, lineName: String, departureStopName: String,arrivalStopName: String, isLastStop: Boolean) {
|
||||
AdasManager.getInstance().sendTripInfoReq(type, lineName, departureStopName,arrivalStopName, isLastStop)
|
||||
LedSourceManager.updateTripInfoData(
|
||||
type,
|
||||
lineName,
|
||||
departureStopName,
|
||||
arrivalStopName,
|
||||
isLastStop
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -93,16 +93,17 @@ import com.mogo.eagle.core.function.call.obu.CallerObuWarningSpatListenerManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_D_C
|
||||
import com.mogo.eagle.core.utilcode.util.DeviceUtils
|
||||
import com.mogo.support.device.led.LedSourceManager
|
||||
import com.mogo.support.obu.ObuScene
|
||||
import com.zhidao.support.adas.high.AdasManager
|
||||
import com.zhidao.support.adas.high.OnAdasListener
|
||||
import com.zhidao.support.adas.high.chain.AdasChain
|
||||
import com.zhjt.mogo.adas.data.bean.AdasParam
|
||||
import com.zhidao.support.adas.high.common.ProtocolStatus
|
||||
import com.zhjt.mogo.adas.common.MessageType
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.mogo.adas.data.AdasConstants.NodeExistState
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask
|
||||
import com.zhjt.mogo.adas.data.bean.AdasParam
|
||||
import com.zhjt.mogo.adas.data.bean.AutopilotStatistics
|
||||
import com.zhjt.mogo.adas.data.bean.LaunchConditionData
|
||||
import com.zhjt.mogo.adas.data.bean.NodeStateInfo
|
||||
@@ -135,6 +136,7 @@ import prediction.Prediction
|
||||
import record_cache.RecordPanelOuterClass
|
||||
import system_master.SsmInfo
|
||||
import system_master.SystemStatusInfo
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
/**
|
||||
* 适配ADAS 回调监听分发,这里不做业务,只做数据包装及分发处理
|
||||
@@ -178,6 +180,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
)
|
||||
override fun onGnssInfo(header: MessagePad.Header, gnssInfo: MessagePad.GnssInfo) {
|
||||
CallerChassisGnssListenerManager.invokeChassisGnssListener(gnssInfo)
|
||||
LedSourceManager.updateAccelerationData(gnssInfo.acceleration)
|
||||
if (gnssInfo != null) {
|
||||
// 同步更新经纬度和系统时间至 AutoPilotStatusListener
|
||||
CallerAutoPilotStatusListenerManager.updateAutoPilotLocAndTime(
|
||||
@@ -280,6 +283,15 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
override fun onLightSwitch(light: Chassis.LightSwitch) {
|
||||
//转向灯数据
|
||||
CallerChassisStatesListenerManager.invokeAutopilotLightSwitchData(light)
|
||||
var type = 0
|
||||
if (Chassis.LightSwitch.LIGHT_LEFT == light) {
|
||||
type = 1
|
||||
} else if (Chassis.LightSwitch.LIGHT_RIGHT == light) {
|
||||
type = 2
|
||||
} else if (Chassis.LightSwitch.LIGHT_FLASH == light) {
|
||||
type = 3
|
||||
}
|
||||
LedSourceManager.updateTurnSignalData(type)
|
||||
}
|
||||
|
||||
//自动驾驶状态
|
||||
@@ -322,6 +334,8 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
header: MessagePad.Header?,
|
||||
trafficLights: FusionTrafficLightOuterClass.FusionTrafficLights?
|
||||
) {
|
||||
//此分发新开线程,在invokeAutopilotPerceptionTrafficLight 前分发避免 invokeAutopilotPerceptionTrafficLight中存在耗时操作影响LED数据更新
|
||||
transitionTurnToLedData(trafficLights)
|
||||
if (trafficLights != null) {
|
||||
CallerAutopilotIdentifyListenerManager.invokeAutopilotPerceptionTrafficLight(
|
||||
trafficLights
|
||||
@@ -329,6 +343,92 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* LED屏幕数据转换
|
||||
* 只能放在这 LedSourceManager LIB中并未依赖ADAS数据源
|
||||
*/
|
||||
private fun transitionTurnToLedData(trafficLights: FusionTrafficLightOuterClass.FusionTrafficLights?) {
|
||||
var stateTurnRound = -1
|
||||
var durationTurnRound = -1
|
||||
var stateTurnLeft = -1
|
||||
var durationTurnLeft = -1
|
||||
var stateStraight = -1
|
||||
var durationStraight = -1
|
||||
var stateTurnRight = -1
|
||||
var durationTurnRight = -1
|
||||
if (trafficLights != null) {
|
||||
if (trafficLights.uTurn != null) {
|
||||
val uTurn = trafficLights.uTurn
|
||||
stateTurnRound = transitionTurnType(uTurn.state)
|
||||
if (uTurn.duration > 0) {
|
||||
durationTurnRound = uTurn.duration.roundToInt()
|
||||
}
|
||||
}
|
||||
if (trafficLights.left != null) {
|
||||
val left = trafficLights.left
|
||||
stateTurnLeft = transitionTurnType(left.state)
|
||||
if (left.duration > 0) {
|
||||
durationTurnLeft = left.duration.roundToInt()
|
||||
}
|
||||
}
|
||||
if (trafficLights.straight != null) {
|
||||
val straight = trafficLights.straight
|
||||
stateStraight = transitionTurnType(straight.state)
|
||||
if (straight.duration > 0) {
|
||||
durationStraight = straight.duration.roundToInt()
|
||||
}
|
||||
}
|
||||
if (trafficLights.right != null) {
|
||||
val right = trafficLights.right
|
||||
stateTurnRight = transitionTurnType(right.state)
|
||||
if (right.duration > 0) {
|
||||
durationTurnRight = right.duration.roundToInt()
|
||||
}
|
||||
}
|
||||
//来源是自车没有倒计时 不管域控发的倒计时是什么值
|
||||
if (trafficLights.source == 0) {
|
||||
durationTurnRound = -1
|
||||
durationTurnLeft = -1
|
||||
durationStraight = -1
|
||||
durationTurnRight = -1
|
||||
}
|
||||
}
|
||||
LedSourceManager.updateTrafficLightData(
|
||||
stateTurnRound,
|
||||
durationTurnRound,
|
||||
stateTurnLeft,
|
||||
durationTurnLeft,
|
||||
stateStraight,
|
||||
durationStraight,
|
||||
stateTurnRight,
|
||||
durationTurnRight
|
||||
)
|
||||
}
|
||||
|
||||
private fun transitionTurnType(state: FusionTrafficLightOuterClass.FusionLightState?): Int {
|
||||
var type = -1
|
||||
state?.let {
|
||||
type = when (it) {
|
||||
FusionTrafficLightOuterClass.FusionLightState.STATE_RED_FUSION -> {
|
||||
2
|
||||
}
|
||||
|
||||
FusionTrafficLightOuterClass.FusionLightState.STATE_YELLOW_FUSION -> {
|
||||
3
|
||||
}
|
||||
|
||||
FusionTrafficLightOuterClass.FusionLightState.STATE_GREEN_FUSION -> {
|
||||
4
|
||||
}
|
||||
|
||||
else -> {
|
||||
-1
|
||||
}
|
||||
}
|
||||
}
|
||||
return type
|
||||
}
|
||||
|
||||
//他车轨迹预测
|
||||
override fun onPredictionObstacleTrajectory(
|
||||
header: MessagePad.Header?,
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i
|
||||
import com.mogo.support.device.DevicesManager
|
||||
import com.mogo.support.device.IWriteChainLogListener
|
||||
import com.mogo.support.device.led.LedSourceManager
|
||||
import com.zhjt.service.chain.ChainLog
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
@@ -19,11 +20,18 @@ object IotManager : IMoGoCloudListener, IWriteChainLogListener {
|
||||
private val sdf: SimpleDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS ", Locale.CHINA)
|
||||
private val TAG = IotManager::class.java.simpleName
|
||||
private const val EVENT_KEY_HARDWARE_DEVICES = "event_key_hardware_devices"
|
||||
private var isPassenger: Boolean = false
|
||||
|
||||
fun init() {
|
||||
CallerCloudListenerManager.addListener(TAG, this)
|
||||
hardwareDeviceBind(SharedPrefsMgr.getInstance().sn)
|
||||
DevicesManager.registerWriteChainLogListener(this)
|
||||
fun init(isPassenger: Boolean) {
|
||||
this.isPassenger = isPassenger
|
||||
if (isPassenger) {
|
||||
CallerCloudListenerManager.addListener(TAG, this)
|
||||
DevicesManager.registerWriteChainLogListener(this)
|
||||
hardwareDeviceBind(SharedPrefsMgr.getInstance().sn)
|
||||
} else {
|
||||
LedSourceManager.registerWriteChainLogListener(this)
|
||||
LedSourceManager.init(true)
|
||||
}
|
||||
}
|
||||
|
||||
override fun tokenGot(token: String, sn: String) {
|
||||
@@ -42,21 +50,27 @@ object IotManager : IMoGoCloudListener, IWriteChainLogListener {
|
||||
}
|
||||
|
||||
fun destroy() {
|
||||
DevicesManager.destroy()
|
||||
DevicesManager.unregisterWriteChainLogListener()
|
||||
if (isPassenger) {
|
||||
DevicesManager.unregisterWriteChainLogListener()
|
||||
DevicesManager.destroy()
|
||||
} else {
|
||||
LedSourceManager.unregisterWriteChainLogListener()
|
||||
LedSourceManager.destroy()
|
||||
}
|
||||
}
|
||||
|
||||
@ChainLog(
|
||||
linkChainLog = ChainConstant.CHAIN_TYPE_STATUS,
|
||||
linkCode = ChainConstant.CHAIN_SOURCE_INIT,
|
||||
nodeAliasCode = ChainConstant.CHAIN_CODE_HARDWARE_DEVICES,
|
||||
paramIndexes = [0, 1]
|
||||
paramIndexes = [0, 1, 2]
|
||||
)
|
||||
override fun onWriteChainLog(title: String, info: String) {
|
||||
override fun onWriteChainLog(tag: String, title: String, info: String) {
|
||||
try {
|
||||
i("${TAG}_${EVENT_KEY_HARDWARE_DEVICES}", "${title}_${info}")
|
||||
i("${tag}_${EVENT_KEY_HARDWARE_DEVICES}", "${title}_${info}")
|
||||
val params = HashMap<String, Any>()
|
||||
params["time"] = sdf.format(Date())
|
||||
params["tag"] = tag
|
||||
params["title"] = title
|
||||
params["info"] = info
|
||||
MogoAnalyticUtils.track(EVENT_KEY_HARDWARE_DEVICES, params)
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.os.CountDownTimer
|
||||
import android.os.Handler
|
||||
import android.util.Log
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.commons.voice.AIAssist.NEW_LEVEL_2
|
||||
import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightResult
|
||||
import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightStatus
|
||||
import com.mogo.eagle.core.data.biz.trafficlight.currentRoadTrafficLight
|
||||
@@ -232,7 +233,7 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight
|
||||
if((light.state == FusionTrafficLightOuterClass.FusionLightState.STATE_YELLOW_FUSION || light.state ==FusionTrafficLightOuterClass.FusionLightState.STATE_RED_FUSION)
|
||||
&& light.duration < 5 && light.nextState == FusionTrafficLightOuterClass.FusionLightState.STATE_GREEN_FUSION){
|
||||
//语音播放:红灯即将变绿
|
||||
AIAssist.getInstance(mContext).speakTTSVoice("红灯即将变绿")
|
||||
AIAssist.getInstance(mContext).speakTTSVoiceWithLevel("红灯即将变绿", NEW_LEVEL_2)
|
||||
isTurnGreen = true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@ import android.os.Bundle
|
||||
import android.os.SystemClock
|
||||
import android.util.AttributeSet
|
||||
import android.util.Log
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
@@ -57,7 +56,6 @@ import com.mogo.eagle.core.function.hmi.ui.operate.preferences.PreferenceWithWel
|
||||
import com.mogo.eagle.core.function.hmi.ui.tools.SweeperModeChangedConfirmDialog
|
||||
import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog.Companion.hmiAction
|
||||
import com.mogo.eagle.core.function.hmi.ui.utils.SOPAnalyticsManager.clickEventAnalytics
|
||||
import com.mogo.eagle.core.utilcode.floating.MoGoPopWindow
|
||||
import com.mogo.eagle.core.utilcode.kotlin.onClick
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
@@ -66,7 +64,10 @@ 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.ThreadUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.support.device.led.ILedForeverChangeWelcomeContentListener
|
||||
import com.mogo.support.device.led.LedSourceManager
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.mogo.adas.data.bean.AdasParam
|
||||
import kotlinx.android.synthetic.main.layout_operate_panel.view.iv_operate_panel_close
|
||||
@@ -1521,6 +1522,22 @@ class OperatePanelLayout : LinearLayout {
|
||||
FunctionBuildConfig.welcomeWords = preference.extras.getString(PreferenceWithWelcomeWords.KEY_BUNDLE_CURRENT_EDIT_TEXT_VALUE)
|
||||
hmiAction("外屏欢迎语", FunctionBuildConfig.welcomeWords ?: "")
|
||||
clickEventAnalytics("外屏欢迎语", true)
|
||||
LedSourceManager.foreverChangeWelcomeHint(
|
||||
context?.applicationContext,
|
||||
FunctionBuildConfig.welcomeWords,
|
||||
object : ILedForeverChangeWelcomeContentListener {
|
||||
override fun onChangeState(isSucceed: Boolean, errMsg: String) {
|
||||
val customPreference: PreferenceWithWelcomeWords? =
|
||||
findPreference(KEY_WELCOME_WORDS)
|
||||
customPreference?.let {
|
||||
ThreadUtils.runOnUiThread {
|
||||
it.setOkBtnEnable()
|
||||
}
|
||||
}
|
||||
ToastUtils.showLong(errMsg)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
return super.onPreferenceClick(preference)
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.hmi.ui.operate.preferences
|
||||
import android.content.Context
|
||||
import android.text.TextUtils
|
||||
import android.util.AttributeSet
|
||||
import android.view.View
|
||||
import android.widget.EditText
|
||||
import androidx.core.widget.doOnTextChanged
|
||||
import androidx.preference.Preference
|
||||
@@ -23,6 +24,7 @@ class PreferenceWithWelcomeWords: Preference {
|
||||
|
||||
|
||||
private var mCurrentWelcomeWords: String? = null
|
||||
private var btnOk: View? = null
|
||||
|
||||
override fun setDefaultValue(defaultValue: Any?) {
|
||||
super.setDefaultValue(defaultValue)
|
||||
@@ -36,21 +38,25 @@ class PreferenceWithWelcomeWords: Preference {
|
||||
super.onBindViewHolder(holder)
|
||||
val currentWelcomeWords = mCurrentWelcomeWords
|
||||
val et = holder.findViewById(R.id.et_welcome_words) as? EditText
|
||||
val btn_ok = holder.findViewById(R.id.bt_ok)
|
||||
btn_ok.isEnabled = false
|
||||
btnOk = holder.findViewById(R.id.bt_ok)
|
||||
btnOk?.isEnabled = false
|
||||
et?.doOnTextChanged { text, _, _, _ ->
|
||||
if (!TextUtils.isEmpty(text)) {
|
||||
btn_ok?.isEnabled = true
|
||||
btnOk?.isEnabled = true
|
||||
} else {
|
||||
btn_ok?.isEnabled = false
|
||||
btnOk?.isEnabled = false
|
||||
}
|
||||
}
|
||||
if (!TextUtils.isEmpty(currentWelcomeWords)) {
|
||||
et?.setText(currentWelcomeWords)
|
||||
}
|
||||
btn_ok.onClick {
|
||||
btnOk?.onClick {
|
||||
btnOk?.isEnabled = false
|
||||
extras.putString(KEY_BUNDLE_CURRENT_EDIT_TEXT_VALUE, et?.text.toString())
|
||||
onPreferenceClickListener?.onPreferenceClick(this)
|
||||
}
|
||||
}
|
||||
fun setOkBtnEnable(){
|
||||
btnOk?.isEnabled = true
|
||||
}
|
||||
}
|
||||
@@ -484,7 +484,7 @@ class RoadV2NEventWindowView @JvmOverloads constructor(
|
||||
"更新时间:${DateTimeUtils.getTimeText(dataBean.timestamp, DateTimeUtils.HH_mm_ss)}"
|
||||
if (dataBean.isNeedTTS && !TextUtils.isEmpty(dataBean.ttsStr)) {
|
||||
AIAssist.getInstance(context)
|
||||
.speakTTSVoiceWithLevel(dataBean.ttsStr, AIAssist.LEVEL0)
|
||||
.speakTTSVoiceWithLevel(dataBean.ttsStr, AIAssist.NEW_LEVEL_2)
|
||||
}
|
||||
when (dataBean.eventType) {
|
||||
RoadV2NEventType.TEXT -> {
|
||||
|
||||
@@ -31,10 +31,10 @@
|
||||
android:key="mofang"
|
||||
android:layout="@layout/layout_operate_panel_preference_header"
|
||||
android:title="蘑方" />
|
||||
<!-- <Preference-->
|
||||
<!-- android:fragment="com.mogo.eagle.core.function.hmi.ui.operate.OperatePanelLayout$WelcomeWordsPreferenceCompat"-->
|
||||
<!-- android:key="welcome_words"-->
|
||||
<!-- android:layout="@layout/layout_operate_panel_preference_header"-->
|
||||
<!-- android:title="欢迎语"/>-->
|
||||
<Preference
|
||||
android:fragment="com.mogo.eagle.core.function.hmi.ui.operate.OperatePanelLayout$WelcomeWordsPreferenceCompat"
|
||||
android:key="welcome_words"
|
||||
android:layout="@layout/layout_operate_panel_preference_header"
|
||||
android:title="欢迎语"/>
|
||||
|
||||
</androidx.preference.PreferenceScreen>
|
||||
Reference in New Issue
Block a user