From b08dd5cf20e41b80dbb46edd6c7555e3be4f6f54 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Wed, 25 Sep 2024 10:28:28 +0800 Subject: [PATCH 01/11] =?UTF-8?q?[6.7.0]=E6=95=B0=E6=8D=AE=E9=97=AD?= =?UTF-8?q?=E7=8E=AFUI=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/drawable/bg_fault_type.xml | 4 +- .../res/drawable/type_radio_button_select.xml | 11 +- .../drawable/type_radio_button_unselect.xml | 9 +- .../src/main/res/values/strings.xml | 2 +- .../src/main/res/values/styles.xml | 1 - .../mogo-core-function-hmi/build.gradle | 1 + .../core/function/hmi/bone/BoneTabLayout.kt | 18 +- .../function/hmi/bone/tab/FaultReasonView.kt | 497 ++++++++++++++++++ .../function/hmi/bone/tab/ReportTypeView.kt | 261 +++++++++ .../function/hmi/bone/tab/WorkOrderView.kt | 312 +++++++++++ .../hmi/ui/widget/WrapRadioGroup.java | 120 +++++ .../res/drawable-xhdpi/bg_fault_des_input.png | Bin 0 -> 2709 bytes .../res/drawable-xhdpi/bg_tab_report_type.png | Bin 0 -> 196935 bytes .../drawable-xhdpi/icon_fault_time_add.png | Bin 0 -> 537 bytes .../drawable-xhdpi/icon_fault_time_reduce.png | Bin 0 -> 346 bytes .../src/main/res/drawable/bg_fault_cancel.xml | 8 + .../drawable/bg_fault_reason_title_label.xml | 10 + .../src/main/res/drawable/bg_fault_report.xml | 9 + .../src/main/res/layout/view_bone_tab.xml | 34 ++ .../src/main/res/layout/view_fault_reason.xml | 343 ++++++++++++ .../src/main/res/layout/view_report_type.xml | 119 +++++ .../src/main/res/layout/view_work_order.xml | 309 +++++++++++ .../src/main/res/values/strings.xml | 3 + 23 files changed, 2055 insertions(+), 16 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/FaultReasonView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/ReportTypeView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/WorkOrderView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/WrapRadioGroup.java create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_fault_des_input.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_tab_report_type.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fault_time_add.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fault_time_reduce.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_fault_cancel.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_fault_reason_title_label.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_fault_report.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_fault_reason.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_report_type.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_work_order.xml diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bg_fault_type.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bg_fault_type.xml index cb1fa5e3d6..49cdb10ffd 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bg_fault_type.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bg_fault_type.xml @@ -5,11 +5,11 @@ > - + diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/type_radio_button_select.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/type_radio_button_select.xml index a97b69d909..e086586d69 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/type_radio_button_select.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/type_radio_button_select.xml @@ -1,5 +1,10 @@ - - - + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/type_radio_button_unselect.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/type_radio_button_unselect.xml index cb1fa5e3d6..a286173cf9 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/type_radio_button_unselect.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/type_radio_button_unselect.xml @@ -5,13 +5,8 @@ > - + - - - + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/values/strings.xml index 0df48d8bae..5e8778d45d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/values/strings.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/values/strings.xml @@ -4,7 +4,7 @@ 问题上报 问题类型 发生时间 - 问题描述 + 补充描述 手动输入 上报 取消 diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/values/styles.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/values/styles.xml index a64bbda71e..57c57a86d2 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/values/styles.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/values/styles.xml @@ -23,7 +23,6 @@ @dimen/sp_30 @drawable/work_order_type_radio_button 1 - @dimen/dp_8 diff --git a/core/function-impl/mogo-core-function-hmi/build.gradle b/core/function-impl/mogo-core-function-hmi/build.gradle index 2fdc51ba08..8cd10480ce 100644 --- a/core/function-impl/mogo-core-function-hmi/build.gradle +++ b/core/function-impl/mogo-core-function-hmi/build.gradle @@ -79,6 +79,7 @@ dependencies { implementation rootProject.ext.dependencies.koomxhook implementation rootProject.ext.dependencies.preference implementation rootProject.ext.dependencies.preference_ktx + implementation rootProject.ext.dependencies.amapsearch implementation rootProject.ext.dependencies.thread_opt api project(':test:crashreport-apmbyte') diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt index be956276d5..2bb25033ac 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/BoneTabLayout.kt @@ -8,16 +8,20 @@ import com.mogo.eagle.core.data.enums.Carmodel import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxEventListener import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxEventListenerManager import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.function.hmi.bone.tab.ReportTypeView import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import com.mogo.eagle.core.utilcode.util.UiThreadHandler import kotlinx.android.synthetic.main.view_bone_tab.view.carInfoTabView +import kotlinx.android.synthetic.main.view_bone_tab.view.faultReasonView import kotlinx.android.synthetic.main.view_bone_tab.view.msgBoxTabView +import kotlinx.android.synthetic.main.view_bone_tab.view.reportTypeView import kotlinx.android.synthetic.main.view_bone_tab.view.tabSwitchCarInfo import kotlinx.android.synthetic.main.view_bone_tab.view.tabSwitchMore import kotlinx.android.synthetic.main.view_bone_tab.view.tabSwitchMsgBox import kotlinx.android.synthetic.main.view_bone_tab.view.tabSwitchReport import kotlinx.android.synthetic.main.view_bone_tab.view.toolKitTabView +import kotlinx.android.synthetic.main.view_bone_tab.view.workOrderView import kotlin.properties.Delegates class BoneTabLayout @JvmOverloads constructor( @@ -83,6 +87,15 @@ class BoneTabLayout @JvmOverloads constructor( logOut?.invoke() } + reportTypeView.setClickListener(object: ReportTypeView.ClickListener{ + override fun openFaultReasonView() { + faultReasonView.visibility = VISIBLE + } + override fun openWorkOrderView() { + workOrderView.visibility = VISIBLE + } + }) + } fun setCarNo(carNo: String?) { @@ -132,9 +145,10 @@ class BoneTabLayout @JvmOverloads constructor( TabType.REPORT_INFO -> { tabSwitchReport.switchTab(check) if (check) { - + reportTypeView.visibility = VISIBLE + reportTypeView.showTypeSelectView() } else { - + reportTypeView.visibility = GONE } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/FaultReasonView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/FaultReasonView.kt new file mode 100644 index 0000000000..9b5ca28692 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/FaultReasonView.kt @@ -0,0 +1,497 @@ +package com.mogo.eagle.core.function.hmi.bone.tab + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.os.Handler +import android.os.Looper +import android.text.Editable +import android.text.TextWatcher +import com.iflytek.cloud.ErrorCode +import com.iflytek.cloud.InitListener +import com.iflytek.cloud.RecognizerListener +import com.iflytek.cloud.RecognizerResult +import com.iflytek.cloud.SpeechError +import com.iflytek.cloud.SpeechRecognizer +import android.util.AttributeSet +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.animation.Animation +import android.view.animation.ScaleAnimation +import android.widget.EditText +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.LinearLayoutManager +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult +import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.eagle.core.data.app.AppConfigInfo +import com.mogo.eagle.core.data.deva.report.CategoryInfo +import com.mogo.eagle.core.data.deva.report.PadAddProblemReq +import com.mogo.eagle.core.data.deva.report.PadProblemInfo +import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener +import com.mogo.eagle.core.function.api.order.IOrderListener +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager +import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.util.JsonParser +import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.mogo.eagle.core.utilcode.util.TimeUtils +import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String +import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.tts.base.SpeechUtils +import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig +import com.zhjt.mogo_core_function_devatools.workorder.adapter.OrderReasonAdapter +import kotlinx.android.synthetic.main.view_fault_reason.view.etNoteInput +import kotlinx.android.synthetic.main.view_fault_reason.view.faultReasonGroup +import kotlinx.android.synthetic.main.view_fault_reason.view.ivNoteAudio +import kotlinx.android.synthetic.main.view_fault_reason.view.ivTimeAdd +import kotlinx.android.synthetic.main.view_fault_reason.view.ivTimeReduce +import kotlinx.android.synthetic.main.view_fault_reason.view.rvFaultList +import kotlinx.android.synthetic.main.view_fault_reason.view.tvFaultCancel +import kotlinx.android.synthetic.main.view_fault_reason.view.tvFaultReason +import kotlinx.android.synthetic.main.view_fault_reason.view.tvFaultReport +import kotlinx.android.synthetic.main.view_fault_reason.view.tvFaultTime +import kotlinx.android.synthetic.main.view_fault_reason.view.tvFaultType +import kotlinx.android.synthetic.main.view_fault_reason.view.tvOccurrenceTime +import kotlinx.android.synthetic.main.view_fault_reason.view.tvUploadSuccess + +/** + * 故障原因编辑视图 + */ +class FaultReasonView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoDevaToolsListener, IOrderListener { + + private val TAG = "FaultReasonView" + + // 语音听写对象 + private var mIat: SpeechRecognizer? = null + // 用HashMap存储听写结果 + private val mIatResults: HashMap = LinkedHashMap() + + var ret = 0 // 函数调用返回值 + private var audioStatus = false + + private var workOrderOccurrenceTime = System.currentTimeMillis() //故障发生时间 + + private var clickListener: ClickListener? = null + + private lateinit var orderReasonAdapter: OrderReasonAdapter + + private var address: String = "" //故障地点 + private var faultCodeList = ArrayList() //故障码列表 + private var level1Id: Int = 0 //一级分类ID + private var level2Id: Int = 0 //二级分类ID + private var level3Id: Int = 0 //三级分类ID + private var level1Name: String = "" + private var level2Name: String = "" + private var level3Name: String = "" + private var reportNote: String = "" //上报描述 + private val reportType: Int = 1 //上报方式:0:小程序 1:司机屏 2:云端上报 + + private var source: Int = 0 //操作源,0:默认,一级分类 1:类型,二级分类;2:原因,三级分类 + private var hasLevel2: Boolean = false //是否有二级分类 + private var hasLevel3: Boolean = false //是否有三级分类 + + private var typeList: List ?= null //故障类型列表 + private var reasonList: List ?= null //故障原因列表 + + private var faultTypeSelectStatus: Boolean = false //故障类型选择状态 + private var faultReasonSelectStatus: Boolean = false //故障原因选择状态 + + private val type = 1 //故障类接口请求Type值为1 + + init { + LayoutInflater.from(context).inflate(R.layout.view_fault_reason, this, true) + initView() + initEvent() + } + + private fun initView(){ + // 初始化识别无UI识别对象 + // 使用SpeechRecognizer对象,可根据回调消息自定义界面; + mIat = SpeechRecognizer.createRecognizer(context, mInitListener) + val linearLayoutManager = LinearLayoutManager(context) + linearLayoutManager.orientation = LinearLayoutManager.VERTICAL + rvFaultList.layoutManager = linearLayoutManager + orderReasonAdapter = OrderReasonAdapter() + orderReasonAdapter.setListener(object: OrderReasonAdapter.ReasonSelectListener{ + override fun onSelectReason(reason: CategoryInfo, mSource: Int) { + if(mSource == 1){ + //类型 + tvFaultType.text = reason.name + //选择了故障类型 + tvFaultType.performClick() + if(level2Id != 0 && level2Id == reason.id){ + //故障类型选择没有变化 + reasonList?.let { orderReasonAdapter.setData(it,2) } + }else{ + //故障类型发生了变化 + level2Id = reason.id + level2Name = reason.name + source = 2 + //获取故障三级分类即故障原因 + CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,3,level2Id,type,0) + tvFaultReason.text = "" + level3Id = 0 + level3Name = "" + } + }else{ + //原因 + tvFaultReason.text = reason.name + tvFaultReason.performClick() + level3Id = reason.id + level3Name = reason.name + } + } + }) + rvFaultList.adapter = orderReasonAdapter + } + + @SuppressLint("SetTextI18n") + private fun initEvent(){ + CallerDevaToolsListenerManager.addListener(TAG, this) + CallerOrderListenerManager.addListener(TAG,this) + val iconDown = ContextCompat.getDrawable(context, R.drawable.icon_fault_expand) + iconDown?.setBounds(0, 0, iconDown.minimumWidth, iconDown.minimumHeight) + val iconUp = ContextCompat.getDrawable(context, R.drawable.icon_fault_retract) + iconUp?.setBounds(0, 0, iconUp.minimumWidth, iconUp.minimumHeight) + //获取一级分类 + CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,1,0,type,0) + //弹窗展示时间 + tvFaultTime.text = millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat()) + //故障类型选择 + tvFaultType.setOnClickListener { + if(!hasLevel2){ + ToastUtils.showShort("运营后台没有配置故障类型") + return@setOnClickListener + } + if(faultTypeSelectStatus){ + //关闭 + faultTypeSelectStatus = false + tvFaultType.setCompoundDrawables(null, null, iconDown, null) + //隐藏列表 + rvFaultList.visibility = View.GONE + }else{ + //如果故障原因此时为打开状态,则关闭 + if(faultReasonSelectStatus){ + tvFaultReason.performClick() + } + //打开 + faultTypeSelectStatus = true + tvFaultType.setCompoundDrawables(null, null, iconUp, null) + //展示列表 + rvFaultList.visibility = View.VISIBLE + (rvFaultList.layoutParams as ConstraintLayout.LayoutParams).topToBottom = R.id.tvFaultType + source = 1 + if(typeList.isNullOrEmpty()){ + //获取故障二级分类即故障类型 + CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,2,level1Id,type,0) + }else{ + orderReasonAdapter.setData(typeList!!,source) + } + + } + } + //故障原因选择 + tvFaultReason.setOnClickListener { + if(tvFaultType.text.isEmpty()){ + ToastUtils.showShort("请先选择故障类型") + return@setOnClickListener + } + if(faultReasonSelectStatus){ + //关闭 + faultReasonSelectStatus = false + tvFaultReason.setCompoundDrawables(null, null, iconDown, null) + //隐藏列表 + rvFaultList.visibility = View.GONE + }else{ + //打开 + faultReasonSelectStatus = true + tvFaultReason.setCompoundDrawables(null, null, iconUp, null) + //展示列表 + rvFaultList.visibility = View.VISIBLE + (rvFaultList.layoutParams as ConstraintLayout.LayoutParams).topToBottom = R.id.tvFaultReason + } + } + + //发生时间 + tvOccurrenceTime.text = millis2String(workOrderOccurrenceTime, TimeUtils.getHourMinFormat()) + ivTimeReduce.setOnClickListener { + workOrderOccurrenceTime -= 60000 + tvOccurrenceTime.text = millis2String(workOrderOccurrenceTime, TimeUtils.getHourMinFormat()) + } + ivTimeAdd.setOnClickListener { + if(workOrderOccurrenceTime + 60000 > System.currentTimeMillis()){ + ToastUtils.showShort("发生时间应在当前时间之前") + return@setOnClickListener + } + workOrderOccurrenceTime += 60000 + tvOccurrenceTime.text = millis2String(workOrderOccurrenceTime, TimeUtils.getHourMinFormat()) + } + + //补充描述 + etNoteInput.onFocusChangeListener = OnFocusChangeListener { v, hasFocus -> + val edit = v as EditText + if(hasFocus){ + edit.hint = "" + }else{ + edit.hint = "手动输入" + } + } + etNoteInput.addTextChangedListener(object: TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + override fun afterTextChanged(s: Editable?) { + + } + + }) + //问题描述录音 + ivNoteAudio.setOnClickListener { + audioStatus = !audioStatus + if(audioStatus){ + ivNoteAudio.setImageDrawable(ContextCompat.getDrawable( + context, + R.drawable.icon_reason_audio_pressed + )) + }else{ + ivNoteAudio.setImageDrawable(ContextCompat.getDrawable( + context, + R.drawable.icon_reason_audio_normal + )) + } + setAudio(audioStatus) + } + //上报 + tvFaultReport.setOnClickListener{ + if(level2Name.isEmpty()){ + ToastUtils.showShort("请完整填写再上报") + return@setOnClickListener + } + if(hasLevel3 && level3Name.isEmpty()){ + ToastUtils.showShort("请完整填写再上报") + return@setOnClickListener + } + reportNote = etNoteInput.text.toString() + //故障码列表赋值 + BadCaseConfig.newFMInfoMsg?.fmInfoList?.forEach { + faultCodeList.add(it.faultId) + } + val geocodeSearch = GeocodeSearch(context) + geocodeSearch.setOnGeocodeSearchListener(object: GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(regeocodeResult: RegeocodeResult?, p1: Int) { + regeocodeResult?.regeocodeAddress?.formatAddress?.let { + address = it + } + val padProblemList= ArrayList() + val note = if(reportNote.isEmpty()){ + "$level1Name-$level2Name-$level3Name" + }else{ + "$level1Name-$level2Name-$level3Name($reportNote)" + } + val padProblemInfo = PadProblemInfo(address,faultCodeList,millis2String(workOrderOccurrenceTime),level1Id, + level2Id,level3Id,BadCaseConfig.lineName,note,reportType, + SharedPrefsMgr.getInstance().getString("och_account","")) + padProblemList.add(padProblemInfo) + val padAddProblemReq = PadAddProblemReq(padProblemList, AppConfigInfo.plateNumber) + CallerDevaToolsManager.problemPadAdd(padAddProblemReq) + } + + override fun onGeocodeSearched(p0: GeocodeResult?, p1: Int) { + + } + }) + val latLon = LatLonPoint(CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude, CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude) + val q = RegeocodeQuery(latLon,200f,GeocodeSearch.AMAP) + geocodeSearch.getFromLocationAsyn(q) + } + + //取消 + tvFaultCancel.setOnClickListener { + this@FaultReasonView.visibility = View.GONE + } + } + + private fun setAudio(status: Boolean){ + if(status){ + //开始录音 + mIat?.let { + //清空之前的内容 + mIatResults.clear() + SpeechUtils.setParam(it) + // 不显示听写对话框 + ret = it.startListening(mRecognizerListener) + if (ret != ErrorCode.SUCCESS) { + ToastUtils.showShort("听写失败,错误码:$ret,请点击网址https://www.xfyun.cn/document/error-code查询解决方案") + } + } + //开始录音,展示放大缩小动效 + val scaleAnimation = ScaleAnimation( + 1.0f, 0.8f, 1.0f, 0.8f, + Animation.RELATIVE_TO_SELF, 0.5f, + Animation.RELATIVE_TO_SELF, 0.5f) + scaleAnimation.duration = 1000 + scaleAnimation.repeatCount = -1 + ivNoteAudio.startAnimation(scaleAnimation) + }else{ + //停止语音听写 + mIat?.stopListening() + //结束动画 + ivNoteAudio.clearAnimation() + } + } + + /** + * 初始化监听器。 + */ + private val mInitListener = InitListener { code -> + if (code != ErrorCode.SUCCESS) { + ToastUtils.showShort("讯飞语音听写初始化失败,错误码:$code") + } + } + + /** + * 听写监听器。 + */ + private val mRecognizerListener: RecognizerListener = object : RecognizerListener{ + override fun onVolumeChanged(p0: Int, p1: ByteArray?) { + //showTip("当前正在说话,音量大小 = " + volume + " 返回音频数据 = " + data.length); + } + + override fun onBeginOfSpeech() { + // 此回调表示:sdk内部录音机已经准备好了,用户可以开始语音输入 + } + + override fun onEndOfSpeech() { + // 此回调表示:检测到了语音的尾端点,已经进入识别过程,不再接受语音输入 + } + + override fun onResult(results: RecognizerResult?, isLast: Boolean) { + results?.let { + printResult(it) + } + } + + override fun onError(p0: SpeechError?) { + // Tips: + // 错误码:10118(您没有说话),可能是录音机权限被禁,需要提示用户打开应用的录音权限。 + } + + override fun onEvent(p0: Int, p1: Int, p2: Int, p3: Bundle?) { + // 以下代码用于获取与云端的会话id,当业务出错时将会话id提供给技术支持人员,可用于查询会话日志,定位出错原因 + // 若使用本地能力,会话id为null + // if (SpeechEvent.EVENT_SESSION_ID == eventType) { + // String sid = obj.getString(SpeechEvent.KEY_EVENT_SESSION_ID); + // Log.d(TAG, "session id =" + sid); + // } + } + + } + + /** + * 显示结果 + */ + @SuppressLint("SetTextI18n") + private fun printResult(results: RecognizerResult) { + val text: String = JsonParser.parseIatResult(results.resultString) + Log.i(TAG, "语音内容=$text") + if(text.isNotEmpty()){ + if(etNoteInput.text.toString().isEmpty()){ + etNoteInput.setText(text) + etNoteInput.setSelection(text.length) + }else{ + val startStr = etNoteInput.text.toString().substring(0,etNoteInput.selectionStart) + val endStr = etNoteInput.text.toString().substring(etNoteInput.selectionEnd,etNoteInput.text.toString().length) + etNoteInput.setText(startStr+text+endStr) + etNoteInput.setSelection(startStr.length+text.length) + } + + } + } + + fun setClickListener(clickListener: ClickListener) { + this.clickListener = clickListener + } + + interface ClickListener { + fun closeWindow() + } + + /** + * 故障上报成功 + */ + override fun problemPadAddSuccess() { + super.problemPadAddSuccess() + //显示上报成功页面,短暂停留关闭弹窗 + ThreadUtils.runOnUiThread { + //结束动画 + ivNoteAudio.clearAnimation() + rvFaultList.visibility = View.GONE + tvUploadSuccess.visibility = View.VISIBLE + faultReasonGroup.visibility = View.GONE + val successHandler = Handler(Looper.getMainLooper()) + successHandler.postDelayed({ + this@FaultReasonView.visibility = View.GONE + },1500) + } + } + + override fun problemPadAddError(msg: String) { + super.problemPadAddError(msg) + ToastUtils.showShort("故障原因上报失败$msg") + } + + override fun getCategoriesSuccess(list: List) { + super.getCategoriesSuccess(list) + ThreadUtils.runOnUiThread { + if(list.isNotEmpty()){ + if(source == 0){ + level1Id = list[0].id + level1Name = list[0].name + + source = 1 + //获取故障二级分类即故障类型 + CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,2,level1Id,type,0) + }else{ + if(source == 1){ + typeList = list + hasLevel2 = true + }else{ + reasonList = list + hasLevel3 = true + } + orderReasonAdapter.setData(list,source) + } + }else{ + if(source == 2){ + hasLevel3 = false + }else{ + hasLevel2 = false + ToastUtils.showShort("故障类型列表为空") + } + } + } + } + + override fun getCategoriesError(msg: String) { + super.getCategoriesError(msg) + ToastUtils.showShort("故障列表获取失败:$msg") + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/ReportTypeView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/ReportTypeView.kt new file mode 100644 index 0000000000..430fc72531 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/ReportTypeView.kt @@ -0,0 +1,261 @@ +package com.mogo.eagle.core.function.hmi.bone.tab + +import android.content.Context +import android.os.CountDownTimer +import android.os.Handler +import android.os.Looper +import android.os.SystemClock +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.View +import androidx.constraintlayout.widget.ConstraintLayout +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult +import com.mogo.commons.env.ProjectUtils +import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.eagle.core.data.app.AppConfigInfo +import com.mogo.eagle.core.data.deva.report.CategoryInfo +import com.mogo.eagle.core.data.deva.report.PadAddProblemReq +import com.mogo.eagle.core.data.deva.report.PadProblemInfo +import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String +import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig +import kotlinx.android.synthetic.main.view_report_type.view.ivOneClickReport +import kotlinx.android.synthetic.main.view_report_type.view.oneClickGroup +import kotlinx.android.synthetic.main.view_report_type.view.reportTypeGroup +import kotlinx.android.synthetic.main.view_report_type.view.tvOneClickReportTitle +import kotlinx.android.synthetic.main.view_report_type.view.tvReportSuccess +import kotlinx.android.synthetic.main.view_report_type.view.tvReportTypeFault +import kotlinx.android.synthetic.main.view_report_type.view.tvReportTypeTakeOver +import kotlin.math.absoluteValue +import kotlin.math.round +import kotlin.random.Random + +/** + * 上报类型选择,包括一键上报及上报类型选择:故障类、接管类 + * 一键上报和类型选择互斥,当点击弹出上报类型选择时,一键上报隐藏 + */ +class ReportTypeView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoDevaToolsListener { + + private val TAG = "ReportTypeView" + + private var isOneClickType: Boolean = false //是否是一键上报类型 + private var hasReportOperate: Boolean = false //是否点击了一键上报按钮 + + private var oneClickTimer: CountDownTimer?= null + private var clickListener: ClickListener? = null + + private var address: String = "" //故障地点 + private var faultCodeList = ArrayList() //故障码列表 + private var level1Id: Int = 0 //一级分类ID + private var level2Id: Int = 0 //二级分类ID + private var level3Id: Int = 0 //三级分类ID + private var level1Name: String = "" + private var level2Name: String = "" + private var level3Name: String = "" + private val reportType: Int = 1 //上报方式:0:小程序 1:司机屏 2:云端上报 + private var level: Int = 1 + + private var canOneReport: Boolean = false //是否可以一键上报 + + init { + LayoutInflater.from(context).inflate(R.layout.view_report_type, this, true) + initView() + } + + private fun initView(){ + CallerDevaToolsListenerManager.addListener(TAG, this) + if(isOneClickType){ + showOneCLickReportView() + }else{ + showTypeSelectView() + } + //一键上报 + ivOneClickReport.setOnClickListener { + if(!canOneReport){ + ToastUtils.showShort("故障描述获取失败不能上报") + return@setOnClickListener + } + hasReportOperate = true + BadCaseConfig.newFMInfoMsg?.fmInfoList?.forEach { + faultCodeList.add(it.faultId) + } + val geocodeSearch = GeocodeSearch(context) + geocodeSearch.setOnGeocodeSearchListener(object: GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(regeocodeResult: RegeocodeResult?, p1: Int) { + regeocodeResult?.regeocodeAddress?.formatAddress?.let { + address = it + } + val padProblemList= ArrayList() + val padProblemInfo = PadProblemInfo(address,faultCodeList,millis2String(System.currentTimeMillis()),level1Id, + level2Id,level3Id,BadCaseConfig.lineName,"${level1Name}-${level2Name}-${level3Name}",reportType, + SharedPrefsMgr.getInstance().getString("och_account","")) + padProblemList.add(padProblemInfo) + val padAddProblemReq = PadAddProblemReq(padProblemList, AppConfigInfo.plateNumber) + CallerDevaToolsManager.problemPadAdd(padAddProblemReq) + } + + override fun onGeocodeSearched(p0: GeocodeResult?, p1: Int) { + + } + }) + val latLon = LatLonPoint(CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude, CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude) + val q = RegeocodeQuery(latLon,200f, GeocodeSearch.AMAP) + geocodeSearch.getFromLocationAsyn(q) + } + + //故障类 + tvReportTypeFault.setOnClickListener { + //TODO 更改! + if(!ProjectUtils.isSaas()){ + clickListener?.openFaultReasonView() + }else{ + //展示工单上报弹窗 + clickListener?.openWorkOrderView() + } + this@ReportTypeView.visibility = View.GONE + } + + //主动录包 + tvReportTypeTakeOver.setOnClickListener { + val response = CallerAutoPilotControlManager.recordPackage( + BadCaseConfig.type, Random(SystemClock.elapsedRealtime()).nextInt().absoluteValue, + BadCaseConfig.totalDuration, BadCaseConfig.previousDuration) + if(response){ + //已发起录包 + oneClickGroup.visibility = View.GONE + reportTypeGroup.visibility = View.GONE + tvReportSuccess.visibility = View.VISIBLE + tvReportSuccess.text = resources.getString(R.string.record_success) + val successHandler = Handler(Looper.getMainLooper()) + successHandler.postDelayed({ + this@ReportTypeView.visibility = View.GONE + },1500) + }else{ + ToastUtils.showShort("主动录包命令下发失败") + this@ReportTypeView.visibility = View.GONE + } + } + } + + /** + * 展示一键上报视图 + */ + private fun showOneCLickReportView(){ + oneClickGroup.visibility = View.VISIBLE + reportTypeGroup.visibility = View.GONE + tvReportSuccess.visibility = View.GONE + tvOneClickReportTitle.text = String.format(resources.getString(R.string.identified_vehicle_malfunction),5) + oneClickTimer = object : CountDownTimer(5000, 1000) { + override fun onTick(count: Long) { + ThreadUtils.runOnUiThread { + tvOneClickReportTitle.text = String.format(resources.getString(R.string.identified_vehicle_malfunction),round((count.toDouble()/1000)).toInt()) + } + } + + override fun onFinish() { + //如果有页面操作,则不自动关闭窗口 + if(!hasReportOperate){ + ThreadUtils.runOnUiThread { + this@ReportTypeView.visibility = View.GONE + } + } + } + } + oneClickTimer?.start() + } + + /** + * 展示类型选择视图 + */ + fun showTypeSelectView(){ + oneClickGroup.visibility = View.GONE + reportTypeGroup.visibility = View.VISIBLE + tvReportSuccess.visibility = View.GONE + } + + /** + * 故障上报成功 + */ + override fun problemPadAddSuccess() { + //显示上报成功页面,短暂停留关闭弹窗 + ThreadUtils.runOnUiThread { + oneClickGroup.visibility = View.GONE + reportTypeGroup.visibility = View.GONE + tvReportSuccess.visibility = View.VISIBLE + tvReportSuccess.text = resources.getString(R.string.report_success) + val successHandler = Handler(Looper.getMainLooper()) + successHandler.postDelayed({ + this.visibility = View.GONE + },1500) + } + } + + override fun problemPadAddError(msg: String) { + super.problemPadAddError(msg) + ToastUtils.showShort("故障原因上报失败$msg") + ThreadUtils.runOnUiThread { + this.visibility = View.GONE + } + } + + override fun getCategoriesSuccess(list: List) { + super.getCategoriesSuccess(list) + if(list.isEmpty()){ + ToastUtils.showShort("一键上报故障描述后台未配置") + canOneReport = false + }else{ + when (level) { + 1 -> { + level1Id = list[0].id + level1Name = list[0].name + level = 2 + //请求二级一键上报配置 + CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,level,level1Id,4,1) + } + 2 -> { + level2Id = list[0].id + level2Name = list[0].name + level = 3 + //请求三级一键上报配置 + CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,level,level2Id,4,1) + } + else -> { + level3Id = list[0].id + level3Name = list[0].name + canOneReport = true + } + } + } + } + + override fun getCategoriesError(msg: String) { + super.getCategoriesError(msg) + ToastUtils.showShort("一键上报故障描述获取失败$msg") + canOneReport = false + } + + interface ClickListener { + fun openFaultReasonView() + fun openWorkOrderView() + } + + fun setClickListener(clickListener: ClickListener) { + this.clickListener = clickListener + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/WorkOrderView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/WorkOrderView.kt new file mode 100644 index 0000000000..25fb89a38b --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/WorkOrderView.kt @@ -0,0 +1,312 @@ +package com.mogo.eagle.core.function.hmi.bone.tab + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.text.Editable +import android.text.TextWatcher +import android.util.AttributeSet +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.animation.Animation +import android.view.animation.ScaleAnimation +import android.widget.EditText +import androidx.constraintlayout.widget.ConstraintLayout +import com.iflytek.cloud.ErrorCode +import com.iflytek.cloud.InitListener +import com.iflytek.cloud.RecognizerListener +import com.iflytek.cloud.RecognizerResult +import com.iflytek.cloud.SpeechError +import com.iflytek.cloud.SpeechRecognizer +import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.eagle.core.data.app.AppConfigInfo +import com.mogo.eagle.core.data.deva.report.FaultDetailInfo +import com.mogo.eagle.core.data.deva.report.FaultInfo +import com.mogo.eagle.core.data.deva.report.WorkOrderReportInfo +import com.mogo.eagle.core.data.msgbox.FMInfoMsg +import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager +import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.util.JsonParser +import com.mogo.eagle.core.utilcode.util.ThreadUtils +import com.mogo.eagle.core.utilcode.util.TimeUtils +import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String +import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.tts.base.SpeechUtils +import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig +import kotlinx.android.synthetic.main.view_work_order.view.et_describe_input +import kotlinx.android.synthetic.main.view_work_order.view.iv_describe_audio +import kotlinx.android.synthetic.main.view_work_order.view.iv_time_add +import kotlinx.android.synthetic.main.view_work_order.view.iv_time_reduce +import kotlinx.android.synthetic.main.view_work_order.view.tv_occurrence_time +import kotlinx.android.synthetic.main.view_work_order.view.tv_work_order_cancel +import kotlinx.android.synthetic.main.view_work_order.view.tv_work_order_report +import kotlinx.android.synthetic.main.view_work_order.view.tv_work_order_time +import kotlinx.android.synthetic.main.view_work_order.view.wrap_radio_group +import kotlinx.coroutines.DelicateCoroutinesApi +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch + +/** + * 工单上报视图 + */ +class WorkOrderView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoDevaToolsListener { + + private val TAG = "WorkOrderView" + + // 语音听写对象 + private var mIat: SpeechRecognizer? = null + // 用HashMap存储听写结果 + private val mIatResults: HashMap = LinkedHashMap() + + private var workOrderType = "" //工单问题类型 + private var workOrderOccurrenceTime = System.currentTimeMillis() //故障发生时间 + var ret = 0 // 函数调用返回值 + private var audioStatus = false + + init { + LayoutInflater.from(context).inflate(R.layout.view_work_order, this, true) + initView() + initEvent() + } + + private fun initView(){ + // 初始化识别无UI识别对象 + // 使用SpeechRecognizer对象,可根据回调消息自定义界面; + mIat = SpeechRecognizer.createRecognizer(context, mInitListener) + } + + @OptIn(DelicateCoroutinesApi::class) + @SuppressLint("SetTextI18n") + private fun initEvent(){ + CallerDevaToolsListenerManager.addListener(TAG, this) + //弹窗展示时间 + tv_work_order_time.text = resources.getString(R.string.work_order_time) + + millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat()) + + wrap_radio_group.setOnCheckedChangeListener{_, checkedId -> + when(checkedId){ + R.id.rb_type_software->{ + workOrderType = "软件" + } + R.id.rb_type_kit->{ + workOrderType = "套件" + } + R.id.rb_type_vehicle->{ + workOrderType = "车辆" + } + R.id.rb_type_capacity->{ + workOrderType = "运力" + } + R.id.rb_type_environment->{ + workOrderType = "环境" + } + R.id.rb_type_other->{ + workOrderType = "其他" + } + } + } + + //发生时间 + tv_occurrence_time.text = millis2String(workOrderOccurrenceTime, TimeUtils.getHourMinFormat()) + iv_time_reduce.setOnClickListener { + workOrderOccurrenceTime -= 60000 + tv_occurrence_time.text = millis2String(workOrderOccurrenceTime, TimeUtils.getHourMinFormat()) + } + iv_time_add.setOnClickListener { + if(workOrderOccurrenceTime + 60000 > System.currentTimeMillis()){ + ToastUtils.showShort("发生时间应在当前时间之前") + return@setOnClickListener + } + workOrderOccurrenceTime += 60000 + tv_occurrence_time.text = millis2String(workOrderOccurrenceTime, TimeUtils.getHourMinFormat()) + } + + et_describe_input.onFocusChangeListener = OnFocusChangeListener { v, hasFocus -> + val edit = v as EditText + if(hasFocus){ + edit.hint = "" + }else{ + edit.hint = "手动输入" + } + } + et_describe_input.addTextChangedListener(object: TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + override fun afterTextChanged(s: Editable?) { + + } + + }) + + //问题描述录音 + iv_describe_audio.setOnClickListener { + audioStatus = !audioStatus + setAudio(audioStatus) + } + + //上报 + tv_work_order_report.setOnClickListener { + //工单问题类型必选,没有选择,进行提示 + if(workOrderType.isEmpty()){ + ToastUtils.showShort("请选择问题类型") + return@setOnClickListener + } + if(et_describe_input.text.toString().isEmpty()){ + ToastUtils.showShort("请填写问题描述") + return@setOnClickListener + } + GlobalScope.launch(Dispatchers.IO){ + val msgBoxList = CallerMsgBoxManager.queryFMInfoList(context, + workOrderOccurrenceTime-120000,workOrderOccurrenceTime+120000) + val faultList = ArrayList() + msgBoxList?.forEach { msgBoxBean -> + val fmInfoMsg = msgBoxBean.bean as FMInfoMsg + fmInfoMsg.fmInfoList?.forEach { fault -> + val faultBean = FaultInfo(false,fault.faultId,fault.faultName, + fault.faultTime.toString(), FaultDetailInfo(fault.faultDesc) + ) + faultList.add(faultBean) + } + } + val workOrderReportInfo = WorkOrderReportInfo(workOrderType,workOrderOccurrenceTime.toString(), + et_describe_input.text.toString(), CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude.toString(), + CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude.toString(), + AppConfigInfo.plateNumber, SharedPrefsMgr.getInstance().getString("och_account","") , + BadCaseConfig.dockerVersion ?:"",faultList) + CallerDevaToolsManager.workOrderReport(workOrderReportInfo) + } + + } + + //取消 + tv_work_order_cancel.setOnClickListener { + this@WorkOrderView.visibility = View.GONE + } + + } + + private fun setAudio(status: Boolean){ + if(status){ + //开始录音 + mIat?.let { + //清空之前的内容 + mIatResults.clear() + SpeechUtils.setParam(it) + // 不显示听写对话框 + ret = it.startListening(mRecognizerListener) + if (ret != ErrorCode.SUCCESS) { + ToastUtils.showShort("听写失败,错误码:$ret,请点击网址https://www.xfyun.cn/document/error-code查询解决方案") + } + } + //开始录音,展示放大缩小动效 + val scaleAnimation = ScaleAnimation( + 1.0f, 0.8f, 1.0f, 0.8f, + Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f + ) + scaleAnimation.duration = 1000 + scaleAnimation.repeatCount = -1 + iv_describe_audio.startAnimation(scaleAnimation) + }else{ + //停止语音听写 + mIat?.stopListening() + //结束动画 + iv_describe_audio.clearAnimation() + } + } + + /** + * 初始化监听器。 + */ + private val mInitListener = InitListener { code -> + if (code != ErrorCode.SUCCESS) { + ToastUtils.showShort("讯飞语音听写初始化失败,错误码:$code") + } + } + + /** + * 听写监听器。 + */ + private val mRecognizerListener: RecognizerListener = object : RecognizerListener { + override fun onVolumeChanged(p0: Int, p1: ByteArray?) { + //showTip("当前正在说话,音量大小 = " + volume + " 返回音频数据 = " + data.length); + } + + override fun onBeginOfSpeech() { + // 此回调表示:sdk内部录音机已经准备好了,用户可以开始语音输入 + } + + override fun onEndOfSpeech() { + // 此回调表示:检测到了语音的尾端点,已经进入识别过程,不再接受语音输入 + } + + override fun onResult(results: RecognizerResult?, isLast: Boolean) { + results?.let { + printResult(it) + } + } + + override fun onError(p0: SpeechError?) { + // Tips: + // 错误码:10118(您没有说话),可能是录音机权限被禁,需要提示用户打开应用的录音权限。 + } + + override fun onEvent(p0: Int, p1: Int, p2: Int, p3: Bundle?) { + // 以下代码用于获取与云端的会话id,当业务出错时将会话id提供给技术支持人员,可用于查询会话日志,定位出错原因 + // 若使用本地能力,会话id为null + // if (SpeechEvent.EVENT_SESSION_ID == eventType) { + // String sid = obj.getString(SpeechEvent.KEY_EVENT_SESSION_ID); + // Log.d(TAG, "session id =" + sid); + // } + } + + } + + /** + * 显示结果 + */ + @SuppressLint("SetTextI18n") + private fun printResult(results: RecognizerResult) { + val text: String = JsonParser.parseIatResult(results.resultString) + Log.i(TAG, "语音内容=$text") + if(text.isNotEmpty()){ + if(et_describe_input.text.toString().isEmpty()){ + et_describe_input.setText(text) + et_describe_input.setSelection(text.length) + }else{ + val startStr = et_describe_input.text.toString().substring(0,et_describe_input.selectionStart) + val endStr = et_describe_input.text.toString().substring(et_describe_input.selectionEnd,et_describe_input.text.toString().length) + et_describe_input.setText(startStr+text+endStr) + et_describe_input.setSelection(startStr.length+text.length) + } + + } + } + + override fun workOrderReportSuccess() { + ToastUtils.showShort("工单上报成功") + ThreadUtils.runOnUiThread { + this@WorkOrderView.visibility = View.GONE + } + } + + override fun workOrderReportError() { + ToastUtils.showShort("工单上报失败") + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/WrapRadioGroup.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/WrapRadioGroup.java new file mode 100644 index 0000000000..e35630455f --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/WrapRadioGroup.java @@ -0,0 +1,120 @@ +package com.mogo.eagle.core.function.hmi.ui.widget; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; +import android.widget.RadioGroup; + +public class WrapRadioGroup extends RadioGroup { + + public WrapRadioGroup(Context context) { + super(context); + } + + public WrapRadioGroup(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int widthSize = MeasureSpec.getSize(widthMeasureSpec); + int widthMode = MeasureSpec.getMode(widthMeasureSpec); + int heightSize = MeasureSpec.getSize(heightMeasureSpec); + int heightMode = MeasureSpec.getMode(heightMeasureSpec); + + //调用ViewGroup的方法,测量子view + measureChildren(widthMeasureSpec, heightMeasureSpec); + + //最大的宽 + int maxWidth = 0; + //累计的高 + int totalHeight = 0; + + //当前这一行的累计行宽 + int lineWidth = 0; + //当前这行的最大行高 + int maxLineHeight = 0; + //用于记录换行前的行宽和行高 + int oldHeight; + int oldWidth; + + int count = getChildCount(); + //假设 widthMode和heightMode都是AT_MOST + for (int i = 0; i < count; i++) { + View child = getChildAt(i); + MarginLayoutParams params = (MarginLayoutParams) child.getLayoutParams(); + //得到这一行的最高 + oldHeight = maxLineHeight; + //当前最大宽度 + oldWidth = maxWidth; + + int deltaX = child.getMeasuredWidth() + params.leftMargin + params.rightMargin; + if (lineWidth + deltaX + getPaddingLeft() + getPaddingRight() > widthSize) {//如果折行,height增加 + //和目前最大的宽度比较,得到最宽。不能加上当前的child的宽,所以用的是oldWidth + maxWidth = Math.max(lineWidth, oldWidth); + //重置宽度 + lineWidth = deltaX; + //累加高度 + totalHeight += oldHeight; + //重置行高,当前这个View,属于下一行,因此当前最大行高为这个child的高度加上margin + maxLineHeight = child.getMeasuredHeight() + params.topMargin + params.bottomMargin; +// Log.v(TAG, "maxHeight:" + totalHeight + "---" + "maxWidth:" + maxWidth); + + } else { + //不换行,累加宽度 + lineWidth += deltaX; + //不换行,计算行最高 + int deltaY = child.getMeasuredHeight() + params.topMargin + params.bottomMargin; + maxLineHeight = Math.max(maxLineHeight, deltaY); + } + if (i == count - 1) { + //前面没有加上下一行的搞,如果是最后一行,还要再叠加上最后一行的最高的值 + totalHeight += maxLineHeight; + //计算最后一行和前面的最宽的一行比较 + maxWidth = Math.max(lineWidth, oldWidth); + } + } + + //加上当前容器的padding值 + maxWidth += getPaddingLeft() + getPaddingRight(); + totalHeight += getPaddingTop() + getPaddingBottom(); + setMeasuredDimension(widthMode == MeasureSpec.EXACTLY ? widthSize : maxWidth, + heightMode == MeasureSpec.EXACTLY ? heightSize : totalHeight); + + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + int count = getChildCount(); + //pre为前面所有的child的相加后的位置 + int preLeft = getPaddingLeft(); + int preTop = getPaddingTop(); + //记录每一行的最高值 + int maxHeight = 0; + for (int i = 0; i < count; i++) { + View child = getChildAt(i); + MarginLayoutParams params = (MarginLayoutParams) child.getLayoutParams(); + //r-l为当前容器的宽度。如果子view的累积宽度大于容器宽度,就换行。 + if (preLeft + params.leftMargin + child.getMeasuredWidth() + params.rightMargin + getPaddingRight() > (r - l)) { + //重置 + preLeft = getPaddingLeft(); + //要选择child的height最大的作为设置 + preTop = preTop + maxHeight; + maxHeight = getChildAt(i).getMeasuredHeight() + params.topMargin + params.bottomMargin; + } else { //不换行,计算最大高度 + maxHeight = Math.max(maxHeight, child.getMeasuredHeight() + params.topMargin + params.bottomMargin); + } + //left坐标 + int left = preLeft + params.leftMargin; + //top坐标 + int top = preTop + params.topMargin; + int right = left + child.getMeasuredWidth(); + int bottom = top + child.getMeasuredHeight(); + //为子view布局 + child.layout(left, top, right, bottom); + //计算布局结束后,preLeft的值 + preLeft += params.leftMargin + child.getMeasuredWidth() + params.rightMargin; + } + } + +} diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_fault_des_input.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_fault_des_input.png new file mode 100644 index 0000000000000000000000000000000000000000..49264822a1ffc55f34dc8bb59811dcfd71a5e48b GIT binary patch literal 2709 zcmeAS@N?(olHy`uVBq!ia0y~yVCDw0i#gbUcQzw}%GuJZ4?`)*0?UTdjdKD*eZ#b2c- zpIlO3Q}bul(Sw)2Ip>Fkh27hB|28zZlp4yxiQsd-m{{DI>H!C}wJJZ$BSxU~}uv zoj+#t5?>rk*z-kWUZ4Qi{N&HIAkRU3d0JnVEpa zd;>2hJSgs{2n4ulq4#*G2*pP8w_LvVtS0Jo-^GeXNN&W_e9^X-Okn;WMzM0glVBBDFM z-$Ccf?w!4eP+J0YTGvSdgqA9%q=om+=K4U>mx6g?~Op8mfn#;FH_|eSP=E;*Mub*C*%q;{jl@%rk%{ZI({q_UL?SE&@nLD?3 z{x40W`h-JguS0ih`$f)=MoaD(J}4>u|LW-#*tz z?eF8qkHg>E^7!8l=3gHk9$p_E9sPUv{rB~Ite$5hx#rzAhd*CAKdxNyG3}Wc=SR8L zzZGr|jYN`m|37-@=`LV%Yd7oR&EK34f7|<`s^I4gdqia^u;VwAF5j};?jIFbJbzc2 f-&_3QW!Qfv#%eCBptJi5KutnVS3j3^P6Xj literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_tab_report_type.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/bg_tab_report_type.png new file mode 100644 index 0000000000000000000000000000000000000000..4c380fa3b636dd608bcfb9bf21d31acc6006f55b GIT binary patch literal 196935 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

e>N*Cy46WgWgnoa?l|E^D0kDY7MmyNLb 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%0DmZJc85 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

=xUYx`ex_wh9QQSHB1 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 DnB$~I literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_switch_compat_unchecked.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_switch_compat_unchecked.png new file mode 100644 index 0000000000000000000000000000000000000000..60b809f4e62ef46d398f8386bb2796f9757cd4c3 GIT binary patch literal 2837 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 literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_checkbox.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_checkbox.xml new file mode 100644 index 0000000000..a09689403e --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_checkbox.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_edit.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_edit.xml new file mode 100644 index 0000000000..6b64c07192 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_edit.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_edit_button.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_edit_button.xml new file mode 100644 index 0000000000..5e2f41f142 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_edit_button.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_preference_detail.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_preference_detail.xml new file mode 100644 index 0000000000..21d5075519 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_preference_detail.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_preference_header.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_preference_header.xml index b6ab109307..d5e8dae0d7 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_preference_header.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_preference_header.xml @@ -6,5 +6,5 @@ - + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_switch_compat.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_switch_compat.xml new file mode 100644 index 0000000000..a00fe5a714 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_switch_compat.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_welcome_words_edit.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_welcome_words_edit.xml new file mode 100644 index 0000000000..2972712b93 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_welcome_words_edit.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_radio_button_operate_panel_unman_interval.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_radio_button_operate_panel_unman_interval.xml new file mode 100644 index 0000000000..f1d2a57c5b --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_radio_button_operate_panel_unman_interval.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_radio_group_operate_panel_unman_interval.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_radio_group_operate_panel_unman_interval.xml new file mode 100644 index 0000000000..3cc871f759 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_radio_group_operate_panel_unman_interval.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_detail_recyclerview.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_detail_recyclerview.xml new file mode 100644 index 0000000000..8ff0d51233 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_detail_recyclerview.xml @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_holder.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_holder.xml new file mode 100644 index 0000000000..6ecee10c27 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_holder.xml @@ -0,0 +1,5 @@ + + diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_category_title.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_category_title.xml index dde2caa791..0f15e27692 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_category_title.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_category_title.xml @@ -9,5 +9,7 @@ android:textSize="@dimen/dp_30" android:paddingTop="@dimen/dp_30" android:paddingStart="@dimen/dp_30" + android:background="@android:color/transparent" tools:text="地图效果" - android:gravity="start" /> \ No newline at end of file + android:gravity="start" + tools:ignore="RtlSymmetry,SpUsage" /> \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_checkbox_compat.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_checkbox_compat.xml index 18f7a152e0..ff6172eb3b 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_checkbox_compat.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_checkbox_compat.xml @@ -6,6 +6,7 @@ android:layout_height="wrap_content" android:paddingStart="@dimen/dp_30" android:paddingEnd="@dimen/dp_30" + android:background="@android:color/transparent" android:orientation="horizontal" tools:background="#83000000"> diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_header.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_header.xml index a6ed4b8461..78d511e5e8 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_header.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_header.xml @@ -10,5 +10,8 @@ android:paddingTop="@dimen/dp_25" android:paddingBottom="@dimen/dp_25" android:paddingStart="@dimen/dp_30" + android:layout_marginEnd="@dimen/dp_30" + android:background="@drawable/bg_operate_panel_preference_header" tools:text="地图效果" - android:gravity="start" /> \ No newline at end of file + android:gravity="start" + tools:ignore="RtlSymmetry,SpUsage" /> \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_switch_compat.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_switch_compat.xml index 18f7a152e0..919de4480e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_switch_compat.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_switch_compat.xml @@ -7,6 +7,7 @@ android:paddingStart="@dimen/dp_30" android:paddingEnd="@dimen/dp_30" android:orientation="horizontal" + android:background="@android:color/transparent" tools:background="#83000000"> + tools:text="V2X总开关" + tools:ignore="SpUsage" /> + tools:text="V2X总开关" + tools:ignore="SpUsage" /> + android:clickable="false" + android:button="@null" + android:background="@drawable/bg_operate_panel_checkbox"/> diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_widget_edit_with_button.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_widget_edit_with_button.xml index 6a19ddfa51..fde0695380 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_widget_edit_with_button.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_widget_edit_with_button.xml @@ -1,6 +1,72 @@ - + android:orientation="horizontal" + android:layout_marginTop="@dimen/dp_20" + tools:background="#83000000"> + + + + + + + + + + + + + + +

FdZy1#8W?Pl&mJR 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 E09+xuApigX literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fault_time_reduce.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_fault_time_reduce.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca15baef279fbc9a7bb9c0da2380dc80d9d0164 GIT binary patch literal 346 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^v49!D1}U6i==L5+9r1K=45?sz zdtoCllc9jCqqLx45XadIhg_d5G4YgTk-4-qO}gO7^@%;I?%I2|E;nswU}R$95KwSv zAjJ6No6u9ZdiPb|IpwbFs%w|M-?+l=%PQOF57wo>|10#yH@N+!iuI3_V%@v5?cQ6= wO=0(bDp%^?_$I2idV#VdLE~Xgs1x|X + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_fault_reason_title_label.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_fault_reason_title_label.xml new file mode 100644 index 0000000000..e086586d69 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_fault_reason_title_label.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_fault_report.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_fault_report.xml new file mode 100644 index 0000000000..aed5a20c8a --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_fault_report.xml @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_tab.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_tab.xml index ea6b300b70..af1410dfa0 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_tab.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_bone_tab.xml @@ -33,6 +33,40 @@ app:layout_constraintTop_toTopOf="parent" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_report_type.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_report_type.xml new file mode 100644 index 0000000000..6ec21e72d0 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_report_type.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_work_order.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_work_order.xml new file mode 100644 index 0000000000..26da1b011e --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_work_order.xml @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml index 8971ad44f0..ff6dcd2dfa 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml @@ -206,4 +206,7 @@ FSM图标 V2X图标 + 故障发生时间减少 + 故障发生时间增加 + From 45526304ba3bf61e0213084b73d6b906d786c5db Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Wed, 25 Sep 2024 14:59:52 +0800 Subject: [PATCH 02/11] =?UTF-8?q?[670][adas][data-center]=20FSM2024?= =?UTF-8?q?=E5=8D=87=E7=BA=A7=EF=BC=9BSM2024=E6=95=B0=E6=8D=AE=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E5=85=BC=E5=AE=B9=EF=BC=8C=E5=A6=82=E6=9E=9CRepeatedP?= =?UTF-8?q?ilotNotStandbyReason=E6=B2=A1=E6=9C=89=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=B0=86=E8=8E=B7=E5=8F=96PilotNotStandbyReason=E8=B5=8B?= =?UTF-8?q?=E5=80=BC=E5=88=B0RepeatedPilotNotStandbyReason=E4=B8=AD;?= =?UTF-8?q?=E8=80=81=E7=89=88=E6=9C=ACfsm2024=20pb=E4=B8=AD=E6=B2=A1?= =?UTF-8?q?=E6=9C=89beautiful=5Fmode=E5=92=8Cbeautiful=5Fmode=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=EF=BC=8C=E5=9F=9F=E6=8E=A7=E7=BB=99=E7=9A=84=E6=96=B0?= =?UTF-8?q?pb=E8=BF=99=E4=B8=A4=E4=B8=AA=E5=AD=97=E6=AE=B5=E6=A0=87?= =?UTF-8?q?=E8=AF=86=E7=AC=A6=E4=B8=BArequired=EF=BC=8C=E5=BD=93=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E8=80=81=E6=9D=BF=E5=9F=9F=E6=8E=A7=E6=97=B6=E5=B0=86?= =?UTF-8?q?=E4=BC=9A=E8=A7=A3=E6=9E=90=E5=8C=85=E9=94=99=EF=BC=8C=E4=BC=B0?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BAoptional=E4=BF=AE=E9=A5=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/OchAutoPilotManager.kt | 4 +- .../test/TestAutoPilotBeforeLaunch.kt | 72 +++++++++++--- .../CallerAutopilotActionsListenerManager.kt | 6 +- .../adas/data/bean/UnableLaunchReason.java | 27 +++++- .../src/main/proto/fsm2024.proto | 95 ++++++++++++++----- .../ability/AutopilotAbilityFSM.java | 12 ++- .../ability/AutopilotAbilityManager.java | 10 +- .../adas/high/msg/FSM2024StateMessage.java | 9 +- 8 files changed, 188 insertions(+), 47 deletions(-) diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt index d985b04ab3..558ac3c4a8 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt @@ -69,8 +69,8 @@ object OchAutoPilotManager : IMoGoReceiveReceivedAckListener, IMoGoFsm2024Listen fun canStartAutoPilotSSM(): Boolean { if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().autopilotAbilityStatus) { val reasons = OCHAdasAbilityManager.getInstance().unableAutopilotReasons - if ("AutopilotAbility440" == OCHAdasAbilityManager.getInstance().abilityVersion && !reasons.isNullOrEmpty()) { - val msg = reasons[0].unableLaunchReason + " 来源:" + reasons[0].source + if ("AutopilotAbilityFSM" == OCHAdasAbilityManager.getInstance().abilityVersion && !reasons.isNullOrEmpty()) { + val msg = reasons[0].getUnableLaunchReason() + " 来源:" + reasons[0].source CallerMsgBoxManager.saveMsgBox( MsgBoxBean( MsgBoxType.AUTOPILOT, diff --git a/app/src/androidTest/java/com/mogo/functions/test/TestAutoPilotBeforeLaunch.kt b/app/src/androidTest/java/com/mogo/functions/test/TestAutoPilotBeforeLaunch.kt index 375f4da20b..8d245345cc 100644 --- a/app/src/androidTest/java/com/mogo/functions/test/TestAutoPilotBeforeLaunch.kt +++ b/app/src/androidTest/java/com/mogo/functions/test/TestAutoPilotBeforeLaunch.kt @@ -15,8 +15,8 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02Lis import com.mogo.eagle.core.function.call.autopilot.CallerChassisStatesListenerManager import com.mogo.eagle.core.function.main.MainLauncherActivity import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.zhjt.mogo.adas.data.bean.MogoReport import com.zhjt.mogo.adas.data.bean.LaunchConditionData +import com.zhjt.mogo.adas.data.bean.MogoReport import com.zhjt.mogo.adas.data.bean.UnableLaunchReason import com.zhjt.mogo.adas.data.bean.UnableLaunchReason.SourceType.CHASSIS import com.zhjt.mogo.adas.data.bean.UnableLaunchReason.UnableType.CHASSIS_BRAKE @@ -154,7 +154,12 @@ class TestAutoPilotBeforeLaunch { .setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance() ), ArrayList().also { - it += UnableLaunchReason(CHASSIS, CHASSIS_GEAR, "gear") + it += UnableLaunchReason(CHASSIS, CHASSIS_GEAR, + object : ArrayList() { + init { + add("gear") + } + }) }) } @@ -169,7 +174,12 @@ class TestAutoPilotBeforeLaunch { .setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance() ), ArrayList().also { - it += UnableLaunchReason(CHASSIS, CHASSIS_STEERING, "steering") + it += UnableLaunchReason(CHASSIS, CHASSIS_STEERING, + object : ArrayList() { + init { + add("steering") + } + }) }) } @@ -185,7 +195,12 @@ class TestAutoPilotBeforeLaunch { .setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance() ), ArrayList().also { - it += UnableLaunchReason(CHASSIS, CHASSIS_BRAKE, "brake") + it += UnableLaunchReason(CHASSIS, CHASSIS_BRAKE, + object : ArrayList() { + init { + add("brake") + } + }) }) } @@ -200,7 +215,12 @@ class TestAutoPilotBeforeLaunch { .setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance() ), ArrayList().also { - it += UnableLaunchReason(CHASSIS, CHASSIS_HAZARD_LIGHTS, "lights") + it += UnableLaunchReason(CHASSIS, CHASSIS_HAZARD_LIGHTS, + object : ArrayList() { + init { + add("lights") + } + }) }) } @@ -215,7 +235,12 @@ class TestAutoPilotBeforeLaunch { .setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance() ), ArrayList().also { - it += UnableLaunchReason(CHASSIS, CHASSIS_THROTTLE, "throttle") + it += UnableLaunchReason(CHASSIS, CHASSIS_THROTTLE, + object : ArrayList() { + init { + add("throttle") + } + }) }) } @@ -230,11 +255,36 @@ class TestAutoPilotBeforeLaunch { .setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance() ), ArrayList().also { - it += UnableLaunchReason(CHASSIS, CHASSIS_GEAR, "gear") - it += UnableLaunchReason(CHASSIS, CHASSIS_STEERING, "steering") - it += UnableLaunchReason(CHASSIS, CHASSIS_HAZARD_LIGHTS, "lights") - it += UnableLaunchReason(CHASSIS, CHASSIS_THROTTLE, "throttle") - it += UnableLaunchReason(CHASSIS, CHASSIS_BRAKE, "brake") + it += UnableLaunchReason(CHASSIS, CHASSIS_GEAR, + object : ArrayList() { + init { + add("gear") + } + }) + it += UnableLaunchReason(CHASSIS, CHASSIS_STEERING, + object : ArrayList() { + init { + add("steering") + } + }) + it += UnableLaunchReason(CHASSIS, CHASSIS_HAZARD_LIGHTS, + object : ArrayList() { + init { + add("lights") + } + }) + it += UnableLaunchReason(CHASSIS, CHASSIS_THROTTLE, + object : ArrayList() { + init { + add("throttle") + } + }) + it += UnableLaunchReason(CHASSIS, CHASSIS_BRAKE, + object : ArrayList() { + init { + add("brake") + } + }) }) } CallerAutoPilotControlManager.isCanStartAutopilot(true) diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotActionsListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotActionsListenerManager.kt index d47eff15af..f16c9faad1 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotActionsListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutopilotActionsListenerManager.kt @@ -55,7 +55,11 @@ object CallerAutopilotActionsListenerManager : CallerBase() { + init { + add("未连接自动驾驶系统") + } + } ) ) return list diff --git a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/UnableLaunchReason.java b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/UnableLaunchReason.java index f966ea314e..6bdab8db7c 100644 --- a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/UnableLaunchReason.java +++ b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/UnableLaunchReason.java @@ -1,7 +1,8 @@ package com.zhjt.mogo.adas.data.bean; -import android.text.TextUtils; +import androidx.annotation.NonNull; +import java.util.List; import java.util.Objects; /** @@ -40,28 +41,46 @@ public class UnableLaunchReason { /** * 來源 */ + @NonNull public final SourceType source; /** * 影响启动自驾或启动平行驾驶的具体类型 */ + @NonNull public final UnableType unableType; /** * 具體原因 + * 只有 unableType==UnableType.FSM2024_OFFER unableLaunchReason 才会有多个,其他状态有且仅有一个 */ - public final String unableLaunchReason; + @NonNull + public final List unableLaunchReason; - public UnableLaunchReason(SourceType source, UnableType unableType, String unableLaunchReason) { + public UnableLaunchReason(@NonNull SourceType source, @NonNull UnableType unableType, @NonNull List unableLaunchReason) { this.source = source; this.unableType = unableType; this.unableLaunchReason = unableLaunchReason; } + public String getUnableLaunchReason() { + if (unableLaunchReason.isEmpty()) { + return ""; + } + StringBuilder stringBuilder = new StringBuilder(); + for (int i = 0; i < unableLaunchReason.size(); i++) { + stringBuilder.append(unableLaunchReason.get(i)); + if (i < unableLaunchReason.size() - 1) { + stringBuilder.append(" && "); + } + } + return stringBuilder.toString(); + } + @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; UnableLaunchReason that = (UnableLaunchReason) o; - return source == that.source && unableType == that.unableType && TextUtils.equals(unableLaunchReason, that.unableLaunchReason); + return source == that.source && unableType == that.unableType && Objects.equals(unableLaunchReason, that.unableLaunchReason); } @Override diff --git a/libraries/mogo-adas-data/src/main/proto/fsm2024.proto b/libraries/mogo-adas-data/src/main/proto/fsm2024.proto index ec22d1cc38..1e9d3582fa 100644 --- a/libraries/mogo-adas-data/src/main/proto/fsm2024.proto +++ b/libraries/mogo-adas-data/src/main/proto/fsm2024.proto @@ -1,53 +1,96 @@ syntax = "proto2"; package fsm; - + import "header.proto"; - + enum State { OFF = 0; - STANDBY = 1; //Standby 未来会弃用, 并入OFF + REQUESTING = 1; ACTIVATING = 2; - PILOT_DRIVING_ACTIVE = 3; //未来会被弃用,所有激活状态统一在Active状态下作为子状态管理 - PARALLEL_DRIVING_ACTIVE = 4; //未来会被弃用,所有激活状态统一在Active状态下作为子状态管理 - SAFETY_STOP = 5; + ACTIVE = 6; + + SAFETY_STOP = 10; + SAFETY_STOPPED = 11; + + STANDBY = 80; //已弃用 + PILOT_DRIVING_ACTIVE = 81; //已弃用 + PARALLEL_DRIVING_ACTIVE = 82; //已弃用 } - + enum SafetyStopMode { NOT_NEEDED = 0; PLANNER_STOP = 1; CONTROLLER_COMFORT_STOP = 2; CONTROLLER_EMERGENCY_STOP = 3; } - -enum ActiveMode { + +enum ActiveMode { //数字定义与请求的数字对齐 NOT_ACTIVE= 0; PILOT_ACTIVE= 1; - PARALLEL_ACTIVE= 2; - SIMULATOR_ACTIVE= 3; //模拟器驾驶, M1上专用 + PARALLEL_ACTIVE= 6; + M1_STEER_ACTIVE= 9; //模拟器驾驶, M1上专用 } - + +enum SessionResult{ + NO_REQUEST_RECEIVED= 0; //还没收到任何请求 + ATTEMPTING= 1; //已收到请求,激活自驾(或其他模式)中 + REQUEST_SUCCEED= 2; //请求成功 + REQUEST_FAILED= 3; //请求失败 +} + +enum ExitType{ + NO_EXIT =0; + NORMAL_EXIT= 1; + ABNORMAL_EXIT= 2; +} + +message Session{ + optional ActiveMode session_active_mode = 1 ; //这次点击是要进入哪个模式 + optional uint64 session_id= 2; //最新收到的请求的session id, 暂时不区分 自驾,平行驾驶、方向盘驾驶以及发送源头。没收到或者请求不带id时置为0 + optional SessionResult session_result = 3; //当前session的结果 + optional string session_fail_reason = 4; // 如果最新的session请求失败,原因是什么 +} + +message ExitActive{ + +optional ActiveMode exit_active_mode = 1; +optional ExitType exit_type= 2; +optional string exit_reason = 3; +optional string exit_time = 4; +} + message FSMStateMsg { required common.Header header = 1; required State function_state = 2; required SafetyStopMode fsm_safety_stop_mode = 4; //FSM如果进入safety stop,是planning 进行停车,还是control进行舒适停车,还是control进行紧急停车 - + required ActiveMode active_mode = 6; + optional bool beautiful_mode = 7;//原始PB是required 由于老版本PB中不含有此字段,使用required解析会报错,所以改成optional + optional string version = 9; //目前是2.0 原始PB是required 由于老版本PB中不含有此字段,使用required解析会报错,所以改成optional required bool new_msg_flag = 10; - + required bool pilot_standby_flag = 11; - required bool parallel_standby_flag = 12; - required bool simulator_standby_flag = 13; - + required bool parallel_standby_flag = 12; + required bool m1steer_standby_flag = 13; + optional string pilot_not_standby_reason= 21; //FSM 无法自驾无法就绪的原因。 optional string parallel_not_standby_reason= 22; //FSM 无法平行即使就绪原因 - optional string simulator_not_standby_reason= 23; //FSM 无法模拟器驾驶原因 - - optional uint64 fail_to_pilot_session_id= 36; - optional uint64 fail_to_parallel_session_id= 37; - optional uint64 fail_to_simulator_session_id= 38; - - optional string abnormal_state_trans_reason= 41; //FSM 异常退出ACTIVATING/自驾/平行驾驶/模拟器驾驶原因 (包括接管) - -} \ No newline at end of file + optional string m1steer_not_standby_reason= 23; //FSM 无法模拟器驾驶原因 + + repeated string repeated_pilot_not_standby_reason= 26; // repeated reason + repeated string repeated_parallel_not_standby_reason= 27; + repeated string repeated_m1steer_not_standby_reason= 28; + + optional Session session = 30; //包含某次点击的所有信息 + + optional uint64 fail_to_pilot_session_id= 36; //2.0起废弃 + optional uint64 fail_to_parallel_session_id= 37; //2.0起废弃 + optional uint64 fail_to_m1steer_session_id= 38; //2.0起废弃 + + optional string abnormal_state_trans_reason= 41; //2.0起废弃 + + optional ExitActive exit_active= 42; //存储最近一次离开Active状态的情况 (包括正常退出,掉自驾,接管,停车) + +} diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbilityFSM.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbilityFSM.java index 9f9640393c..9a24d0f6f3 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbilityFSM.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbilityFSM.java @@ -6,6 +6,7 @@ import com.zhjt.mogo.adas.data.bean.LaunchConditionData; import com.zhjt.mogo.adas.data.bean.UnableLaunchReason; import java.util.ArrayList; +import java.util.List; import fsm.Fsm2024; @@ -40,7 +41,16 @@ public class AutopilotAbilityFSM { unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.LIB, UnableLaunchReason.UnableType.FSM2024_TIMEOUT, "FSM超时无响应"); } else { if (!fsmState.getPilotStandbyFlag()) { - unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.FSM2024, UnableLaunchReason.UnableType.FSM2024_OFFER, fsmState.getPilotNotStandbyReason()); + List list = null; + if (fsmState.getRepeatedPilotNotStandbyReasonCount() > 0) { + list = fsmState.getRepeatedPilotNotStandbyReasonList(); + } + if (list == null || list.isEmpty()) { + unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.FSM2024, UnableLaunchReason.UnableType.FSM2024_OFFER, fsmState.getPilotNotStandbyReason()); + } else { + unableAutopilotReasons = manager.addUnableAutopilotReason(unableAutopilotReasons, UnableLaunchReason.SourceType.FSM2024, UnableLaunchReason.UnableType.FSM2024_OFFER, list); + } + } } if (listener != null) { diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbilityManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbilityManager.java index 2d6d4c23e2..5a3ccc8bdf 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbilityManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/autopilot/ability/AutopilotAbilityManager.java @@ -124,6 +124,15 @@ public class AutopilotAbilityManager implements OnAutopilotAbilityListener { * @return 原因列表 */ protected ArrayList addUnableAutopilotReason(ArrayList unableAutopilotReasons, UnableLaunchReason.SourceType source, UnableLaunchReason.UnableType unableType, String unableAutopilotReason) { + if (TextUtils.isEmpty(unableAutopilotReason)) { + unableAutopilotReason = "未知"; + } + List list = new ArrayList<>(); + list.add(unableAutopilotReason); + return addUnableAutopilotReason(unableAutopilotReasons, source, unableType, list); + } + + protected ArrayList addUnableAutopilotReason(ArrayList unableAutopilotReasons, UnableLaunchReason.SourceType source, UnableLaunchReason.UnableType unableType, List unableAutopilotReason) { if (unableAutopilotReasons == null) { unableAutopilotReasons = new ArrayList<>(); } @@ -131,7 +140,6 @@ public class AutopilotAbilityManager implements OnAutopilotAbilityListener { return unableAutopilotReasons; } - public void setCarConfig(@NonNull MessagePad.CarConfigResp carConfig) { if (!isInitCarConfig.get()) { int version = carConfig.getMapVersion(); diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/FSM2024StateMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/FSM2024StateMessage.java index ad8e706374..bbc79e22b6 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/FSM2024StateMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/FSM2024StateMessage.java @@ -22,6 +22,7 @@ public class FSM2024StateMessage extends MyAbstractMessageHandler { public FSM2024StateMessage(AutopilotReview autopilotReview) { this.autopilotReview = autopilotReview; } + @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { Fsm2024.FSMStateMsg fsmState = Fsm2024.FSMStateMsg.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); @@ -33,7 +34,13 @@ public class FSM2024StateMessage extends MyAbstractMessageHandler { if (CupidLogUtils.isEnableLog()) nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { - adasListener.onFSM2024State(raw.getHeader(), fsmState, autopilotState, mode); + if (fsmState.getRepeatedPilotNotStandbyReasonCount() == 0) { + Fsm2024.FSMStateMsg.Builder builder = fsmState.toBuilder(); + builder.addRepeatedPilotNotStandbyReason(fsmState.getPilotNotStandbyReason()); + adasListener.onFSM2024State(raw.getHeader(), builder.build(), autopilotState, mode); + } else { + adasListener.onFSM2024State(raw.getHeader(), fsmState, autopilotState, mode); + } } ParallelDrivingManager.getInstance().setAutopilotState(autopilotState); if (autopilotReview != null) { From 2d5e2cdc48fd66edee3d307fa5c4e281ad40b66c Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 25 Sep 2024 15:51:07 +0800 Subject: [PATCH 03/11] =?UTF-8?q?[6.7.0]=20[fea]=20[=E5=BE=AA=E7=8E=AF?= =?UTF-8?q?=E7=BA=BF=E8=B7=AF=E6=94=AF=E6=8C=81]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/module/constant/OchCommonConst.kt | 2 + .../autopilot/OchAutoPilotManager.kt | 1 - .../OchAutoPilotStatusListenerManager.kt | 46 +++++++++++--- .../manager/autopilot/line/ILineCallback.java | 2 + .../manager/autopilot/line/LineManager.kt | 63 +++++++++++++++++-- .../com/mogo/och/weaknet/model/OrderModel.kt | 30 +++------ 6 files changed, 107 insertions(+), 37 deletions(-) diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt index 4c30321280..a57266e728 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt @@ -59,5 +59,7 @@ class OchCommonConst { // 自动驾驶自动规划的最大距离 const val AUTOMATIC_PLANNING_MAX_DISTANCE = 15 + + const val ARRIVE_AT_END_STATION_DISTANCE = 10 } } \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt index 558ac3c4a8..9da319e419 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt @@ -95,7 +95,6 @@ object OchAutoPilotManager : IMoGoReceiveReceivedAckListener, IMoGoFsm2024Listen @JvmStatic fun startAutoPilot(controlParameters: AutopilotControlParameters?): Long { val sessionId = CallerAutoPilotControlManager.startAutoPilot(controlParameters) - LineManager.isReStartAutopilot = false globalSessionId.set(sessionId) fsmBackSessionId.set(-1L) OchAutopilotAnalytics.triggerStartAutopilotParameters(controlParameters, sessionId) diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt index 441363f1de..fbc81bca6e 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotStatusListenerManager.kt @@ -6,11 +6,13 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.eagle.core.utilcode.util.StringUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.R import com.mogo.och.common.module.manager.autopilot.autopilot.bean.ArrivedStation import com.mogo.och.common.module.manager.autopilot.line.LineManager import com.mogo.och.common.module.manager.autopilot.trajectory.TrajectoryManager +import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager import com.mogo.och.common.module.utils.CallerBase import com.zhjt.mogo.adas.data.AdasConstants import com.zhjt.mogo.adas.data.bean.MogoReport @@ -51,10 +53,12 @@ object OchAutoPilotStatusListenerManager : CallerBase() { */ private var endStation: BusStationBean? = null - var isReStartAutopilot = true + var isFirstStartAutopilot = true + + private var orderId = "" + + // 自车定位 + private val mMapLocationListener = object : IMoGoChassisLocationGCJ02Listener { + override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { + if (null == mogoLocation) return + getStations { start, end -> + val startLon = end.gcjLon + val startLat = end.gcjLat + val distance = CoordinateUtils.calculateLineDistance( + startLon, startLat, + mogoLocation.longitude, mogoLocation.latitude + ) + if (distance <= OchCommonConst.ARRIVE_AT_END_STATION_DISTANCE) { + val token = CallerAutoPilotControlManager.sendSsmFuncQueryAutoPilotStation(orderId) + OchChainLogManager.writeChainLogAutopilot("到站逻辑","距离站点:$distance 请求token:$token") + } + } + } + } + + + fun invokeArrivedStation(orderId: String, arrivedStationFlag: Boolean) { + if (this.orderId==orderId&&arrivedStationFlag){ + M_LISTENERS.forEach { + it.value.arrivedStationSuccessBySearch() + } + } + } + + fun invokeSetIsFirstAutopilot(orderId: String?, firstAutopilotFlag: Boolean, count: Int) { + if (this.orderId==orderId){ + if(count>=1){ + isFirstStartAutopilot = false + }else{ + isFirstStartAutopilot = true + } + } + } /** * 设置站点信息 */ fun setStartAndEndStation(startStation: BusStationBean?, endStation: BusStationBean?) { if(this.startStation!=startStation||this.endStation!=endStation){ - isReStartAutopilot = true + isFirstStartAutopilot = true } this.startStation = startStation this.endStation = endStation @@ -197,11 +241,19 @@ object LineManager : CallerBase() { endStationLocation.latitude = end.gcjLat endStationLocation.longitude = end.gcjLon TrajectoryAndDistanceManager.setStationPoint(startStationLocation, endStationLocation, lineInfo.lineId) + OchLocationManager.addGCJ02Listener(TAG,1,mMapLocationListener) + // 恢复启动自驾信息 + searchAutopilotState() } } + fun searchAutopilotState(){ + CallerAutoPilotControlManager.sendSsmFuncQueryAutoPilotInfo() + } private fun clearAutopilotControlParameters(){ CallerAutoPilotStatusListenerManager.updateAutopilotControlParameters(null) TrajectoryAndDistanceManager.setStationPoint(null, null, null) + this.orderId = "" + OchLocationManager.removeGCJ02Listener(TAG) } fun hasDrawnGlobalTrajectory(): Boolean { @@ -245,6 +297,9 @@ object LineManager : CallerBase() { parameters?.startLatLon = AutoPilotLonLat(start.lat, start.lon) parameters?.endLatLon = AutoPilotLonLat(end.lat, end.lon) parameters?.vehicleType = 10 + this.orderId = "${lineInfo.lineId}_${start.siteId}_${end.siteId}" + parameters?.orderId = this.orderId + parameters?.firstAutopilotFlag = isFirstStartAutopilot if (parameters?.autoPilotLine == null) { parameters?.autoPilotLine = AutoPilotLine( @@ -334,7 +389,7 @@ object LineManager : CallerBase() { M_BUS + TAG, "行程日志-开启自动驾驶====" + GsonUtil.jsonFromObject(parameters) + " startLatLon=" + parameters.startName + ",endLatLon=" + parameters.endName + - "isRestart = " + LineManager.isReStartAutopilot + "isRestart = " + LineManager.isFirstStartAutopilot ) M_LISTENERS.forEach { @@ -354,7 +409,7 @@ object LineManager : CallerBase() { fun triggerStartServiceEvent(send: Boolean,source:Int) { getStationsWithLine { start, end, lineInfo -> OchAutopilotAnalytics.triggerStartAutopilotEvent( - isReStartAutopilot, + isFirstStartAutopilot, send, start.name, end.name, diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt index 01abfbb83f..de776a3056 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/model/OrderModel.kt @@ -18,6 +18,7 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.biz.login.LoginStatusManager import com.mogo.och.common.module.manager.autopilot.autopilot.bean.ArrivedStation +import com.mogo.och.common.module.manager.autopilot.line.ILineCallback import com.mogo.och.common.module.manager.autopilot.line.LineManager import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager @@ -71,8 +72,8 @@ object OrderModel { // 加载核销模块 TicketModel.load() - // 定位监听 - OchLocationManager.addGCJ02Listener(TAG, 5, mMapLocationListener) + + LineManager.addListener(TAG,arriveStationBySearch) OchTransform.addListener(TAG,ochTransform) @@ -87,7 +88,7 @@ object OrderModel { TicketModel.release() - OchLocationManager.removeGCJ02Listener(TAG) + LineManager.removeListener(TAG) OchTransform.removeListener(TAG) } @@ -105,34 +106,17 @@ object OrderModel { // 自车定位 - private val mMapLocationListener = object : IMoGoChassisLocationGCJ02Listener { - override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { - if (null == mogoLocation) return - + private val arriveStationBySearch = object : ILineCallback { + override fun arrivedStationSuccessBySearch() { //是否到站的围栏判断 离站状态并且自动驾驶还未触发到站 if (isGoingToNextStation && !isArrivedStation) { OCHThreadPoolManager.getsInstance().locationExecute { - judgeArrivedStation(mogoLocation) + onArriveAt(null, "兜底:根据定位计算到站") } } } } - //根据围栏判断,是否到达站点 - private fun judgeArrivedStation(location: MogoLocation) { - LineManager.getStations { start, end -> - val startLon = end.gcjLon - val startLat = end.gcjLat - val distance = CoordinateUtils.calculateLineDistance( - startLon, startLat, - location.longitude, location.latitude - ) - if (distance <= BusConst.ARRIVE_AT_END_STATION_DISTANCE) { - d(M_BUS + TAG, "行程日志-judgeArrivedStation() distance = $distance to ${end.name}") - onArriveAt(null, "兜底:根据定位计算到站") - } - } - } /** * 查询小巴路线 From 719762cf984ba576fd227a1057da797d1c24210a Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 25 Sep 2024 17:16:59 +0800 Subject: [PATCH 04/11] =?UTF-8?q?[6.7.0][=E8=BF=90=E8=90=A5=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF]=20=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/och/taxi/ui/BaseTaxiTabFragment.java | 62 +- .../main/res/layout/taxi_base_fragment.xml | 39 +- .../java/com/mogo/functions/test/V2NTest.kt | 40 +- .../eagle/function/biz/FuncBizProvider.kt | 2 +- .../biz/v2x/overview/OverViewDataManager.kt | 2 +- .../function/biz/v2x/v2n/V2XEventManager.kt | 6 +- .../biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt | 13 +- .../autopilot/MoGoAutopilotControlProvider.kt | 5 +- .../autopilot/telematic/TeleMsgHandler.kt | 8 +- .../datacenter/obu/MogoObuDcCombineManager.kt | 16 +- .../obu/MogoPrivateObuNewManager.kt | 16 +- .../DevaToolsProvider.kt | 7 +- .../exam/ExamControlManager.kt | 11 +- .../logcat/MoGoLogRecordProviderImpl.kt | 2 +- .../hmi/bone/toolkit/ToolKitDataManager.kt | 4 +- .../core/function/hmi/ui/MoGoHmiProvider.kt | 42 +- .../hmi/ui/operate/OperatePanelLayout.kt | 1001 ++++++++++++++++- .../preferences/PreferenceWithMoFang.kt | 69 ++ .../preferences/PreferenceWithSpeedSetting.kt | 95 ++ .../PreferenceWithUnmanInterval.kt | 103 ++ .../preferences/PreferenceWithWelcomeWords.kt | 56 + .../function/hmi/ui/setting/SOPSettingView.kt | 92 +- .../hmi/ui/viewport/VisualAngleToggleView.kt | 5 - .../drawable-xhdpi/icon_operate_panel_add.png | Bin 0 -> 727 bytes .../icon_operate_panel_checkbox_checked.png | Bin 0 -> 6178 bytes .../icon_operate_panel_checkbox_disabled.png | Bin 0 -> 2485 bytes .../icon_operate_panel_checkbox_unchecked.png | Bin 0 -> 4055 bytes .../icon_operate_panel_minus.png | Bin 0 -> 472 bytes ...con_operate_panel_mofang_connect_doing.png | Bin 0 -> 16203 bytes ...on_operate_panel_mofang_connect_failed.png | Bin 0 -> 41903 bytes ...con_operate_panel_mofang_connect_start.png | Bin 0 -> 19287 bytes .../icon_operate_panel_mofang_disconnect.png | Bin 0 -> 24500 bytes .../icon_operate_panel_ok_disabled.png | Bin 0 -> 4790 bytes .../icon_operate_panel_ok_enabled.png | Bin 0 -> 17345 bytes .../icon_operate_panel_ok_pressed.png | Bin 0 -> 32253 bytes ...on_operate_panel_switch_compat_checked.png | Bin 0 -> 7372 bytes ...n_operate_panel_switch_compat_disabled.png | Bin 0 -> 2593 bytes ..._operate_panel_switch_compat_unchecked.png | Bin 0 -> 2837 bytes ...n_operate_panel_unman_interval_checked.png | Bin 0 -> 11062 bytes .../drawable/bg_operate_panel_checkbox.xml | 6 + .../res/drawable/bg_operate_panel_edit.xml | 16 + .../drawable/bg_operate_panel_edit_button.xml | 6 + .../bg_operate_panel_preference_detail.xml | 6 + .../bg_operate_panel_preference_header.xml | 2 +- .../bg_operate_panel_switch_compat.xml | 6 + .../bg_operate_panel_welcome_words_edit.xml | 6 + ...io_button_operate_panel_unman_interval.xml | 10 + ...dio_group_operate_panel_unman_interval.xml | 6 + ...yout_operate_panel_detail_recyclerview.xml | 7 + .../layout/layout_operate_panel_holder.xml | 5 + ...perate_panel_preference_category_title.xml | 4 +- ...erate_panel_preference_checkbox_compat.xml | 1 + ...layout_operate_panel_preference_header.xml | 5 +- ...operate_panel_preference_switch_compat.xml | 4 +- ...anel_preference_switch_compat_dependee.xml | 4 +- ...anel_preference_widget_checkbox_compat.xml | 4 +- ...nel_preference_widget_edit_with_button.xml | 74 +- ...panel_preference_widget_mofang_connect.xml | 4 +- ...l_preference_widget_radio_group_custom.xml | 76 +- ..._panel_preference_widget_switch_compat.xml | 6 +- ...rate_panel_preference_with_edit_button.xml | 29 + ...rate_panel_preference_with_title_above.xml | 10 +- .../res/layout/module_main_activity_main.xml | 9 +- .../main/res/layout/view_map_container.xml | 15 + .../main/res/values/operate_pandel_dimens.xml | 4 + ...ate_panel_preference_details_business.xml} | 11 +- ...operate_panel_preference_details_demo.xml} | 3 + ...perate_panel_preference_details_hdmap.xml} | 7 + ...erate_panel_preference_details_mofang.xml} | 4 +- ... operate_panel_preference_details_v2x.xml} | 38 +- ...ate_panel_preference_details_vehicles.xml} | 23 +- ...panel_preference_details_welcome_words.xml | 11 + ...l => operate_panel_preference_headers.xml} | 10 +- .../core/data/config/FunctionBuildConfig.kt | 38 +- .../eagle/core/data/config/HmiBuildConfig.kt | 12 +- .../api/devatools/IDevaToolsProvider.kt | 3 +- .../devatools/mofang/IMoGoMoFangProvider.kt | 14 +- .../autopilot/CallerV2XListenerManager.kt | 5 +- .../call/devatools/CallerDevaToolsManager.kt | 4 +- .../mogo-core-res/src/main/res/values/ids.xml | 3 + .../main/res/values/operate_panel_config.xml | 49 + 81 files changed, 1948 insertions(+), 308 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithMoFang.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithSpeedSetting.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithUnmanInterval.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithWelcomeWords.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_add.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_checkbox_checked.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_checkbox_disabled.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_checkbox_unchecked.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_minus.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_mofang_connect_doing.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_mofang_connect_failed.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_mofang_connect_start.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_mofang_disconnect.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_ok_disabled.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_ok_enabled.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_ok_pressed.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_switch_compat_checked.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_switch_compat_disabled.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_switch_compat_unchecked.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_unman_interval_checked.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_checkbox.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_edit.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_edit_button.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_preference_detail.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_switch_compat.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_operate_panel_welcome_words_edit.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_radio_button_operate_panel_unman_interval.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_radio_group_operate_panel_unman_interval.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_detail_recyclerview.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_holder.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_operate_panel_preference_with_edit_button.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/values/operate_pandel_dimens.xml rename core/function-impl/mogo-core-function-hmi/src/main/res/xml/{operate_preference_details_business.xml => operate_panel_preference_details_business.xml} (87%) rename core/function-impl/mogo-core-function-hmi/src/main/res/xml/{operate_preference_details_demo.xml => operate_panel_preference_details_demo.xml} (91%) rename core/function-impl/mogo-core-function-hmi/src/main/res/xml/{operate_preference_details_hdmap.xml => operate_panel_preference_details_hdmap.xml} (81%) rename core/function-impl/mogo-core-function-hmi/src/main/res/xml/{operate_preference_details_mofang.xml => operate_panel_preference_details_mofang.xml} (84%) rename core/function-impl/mogo-core-function-hmi/src/main/res/xml/{operate_preference_details_v2x.xml => operate_panel_preference_details_v2x.xml} (69%) rename core/function-impl/mogo-core-function-hmi/src/main/res/xml/{operate_preference_details_vehicles.xml => operate_panel_preference_details_vehicles.xml} (84%) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/xml/operate_panel_preference_details_welcome_words.xml rename core/function-impl/mogo-core-function-hmi/src/main/res/xml/{operate_preference_headers.xml => operate_panel_preference_headers.xml} (82%) create mode 100644 core/mogo-core-res/src/main/res/values/operate_panel_config.xml diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java index a8d88edf6b..0344ff4e70 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java @@ -36,7 +36,6 @@ import com.mogo.map.listener.IMogoMapListener; import com.mogo.och.common.module.utils.ResourcesUtils; import com.mogo.och.common.module.wigets.map.orderstatus.OrderStatusView; import com.mogo.och.common.module.wigets.map.overmapview.OverMapDialog; -import com.mogo.och.common.module.wigets.map.switchvisual.VisualViewDirver; import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager; import com.mogo.och.taxi.R; @@ -60,11 +59,11 @@ public abstract class BaseTaxiTabFragment { - if (groupTestPanel.getVisibility() == View.VISIBLE) { - groupTestPanel.setVisibility(View.GONE); - } else { - groupTestPanel.setVisibility(View.VISIBLE); - } - return false; - }); +// mSpeedView.setOnLongClickListener(v -> { +// if (groupTestPanel.getVisibility() == View.VISIBLE) { +// groupTestPanel.setVisibility(View.GONE); +// } else { +// groupTestPanel.setVisibility(View.VISIBLE); +// } +// return false; +// }); CallerHmiViewControlListenerManager.INSTANCE.invokeMainPageViewVisible(View.VISIBLE); onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)); @@ -233,7 +232,6 @@ public abstract class BaseTaxiTabFragment - + + + + + + + + --> - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/androidTest/java/com/mogo/functions/test/V2NTest.kt b/app/src/androidTest/java/com/mogo/functions/test/V2NTest.kt index 78f15e375f..7987fb199f 100644 --- a/app/src/androidTest/java/com/mogo/functions/test/V2NTest.kt +++ b/app/src/androidTest/java/com/mogo/functions/test/V2NTest.kt @@ -58,12 +58,12 @@ class V2NTest { if (millis > 0) { delay(millis) } - FunctionBuildConfig.isNewV2NData = true - FunctionBuildConfig.v2nMainSwitch = true + FunctionBuildConfig.v2nNewLinked = true + FunctionBuildConfig.v2nTotalSwitch = true runCatching { val map = HashMap().also { - it["f1"] = FunctionBuildConfig.v2nMainSwitch - it["f2"] = FunctionBuildConfig.isNewV2NData + it["f1"] = FunctionBuildConfig.v2nTotalSwitch + it["f2"] = FunctionBuildConfig.v2nNewLinked } CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, GsonUtils.toJson(map).toByteArray()) } @@ -99,12 +99,12 @@ class V2NTest { if (millis > 0) { delay(millis) } - FunctionBuildConfig.isNewV2NData = true - FunctionBuildConfig.v2nMainSwitch = true + FunctionBuildConfig.v2nNewLinked = true + FunctionBuildConfig.v2nTotalSwitch = true runCatching { val map = HashMap().also { - it["f1"] = FunctionBuildConfig.v2nMainSwitch - it["f2"] = FunctionBuildConfig.isNewV2NData + it["f1"] = FunctionBuildConfig.v2nTotalSwitch + it["f2"] = FunctionBuildConfig.v2nNewLinked } CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, GsonUtils.toJson(map).toByteArray()) } @@ -179,12 +179,12 @@ class V2NTest { } val newPoint = DrivingDirectionUtils.calculateNewPoint(car.longitude, car.latitude, car.heading , 200.0) Log.d(TAG, "获取到路口数据..., 自车:[${car.longitude}, ${car.latitude}]前方200米外的点: [${newPoint.first}, ${newPoint.second}]") - FunctionBuildConfig.isNewV2NData = true - FunctionBuildConfig.v2nMainSwitch = true + FunctionBuildConfig.v2nNewLinked = true + FunctionBuildConfig.v2nTotalSwitch = true runCatching { val map = HashMap().also { - it["f1"] = FunctionBuildConfig.v2nMainSwitch - it["f2"] = FunctionBuildConfig.isNewV2NData + it["f1"] = FunctionBuildConfig.v2nTotalSwitch + it["f2"] = FunctionBuildConfig.v2nNewLinked } CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, GsonUtils.toJson(map).toByteArray()) } @@ -211,12 +211,12 @@ class V2NTest { if (millis > 0) { delay(millis) } - FunctionBuildConfig.isNewV2NData = true - FunctionBuildConfig.v2nMainSwitch = true + FunctionBuildConfig.v2nNewLinked = true + FunctionBuildConfig.v2nTotalSwitch = true runCatching { val map = HashMap().also { - it["f1"] = FunctionBuildConfig.v2nMainSwitch - it["f2"] = FunctionBuildConfig.isNewV2NData + it["f1"] = FunctionBuildConfig.v2nTotalSwitch + it["f2"] = FunctionBuildConfig.v2nNewLinked } CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, GsonUtils.toJson(map).toByteArray()) } @@ -261,12 +261,12 @@ class V2NTest { if (millis > 0) { delay(millis) } - FunctionBuildConfig.isNewV2NData = true - FunctionBuildConfig.v2nMainSwitch = true + FunctionBuildConfig.v2nNewLinked = true + FunctionBuildConfig.v2nTotalSwitch = true runCatching { val map = HashMap().also { - it["f1"] = FunctionBuildConfig.v2nMainSwitch - it["f2"] = FunctionBuildConfig.isNewV2NData + it["f1"] = FunctionBuildConfig.v2nTotalSwitch + it["f2"] = FunctionBuildConfig.v2nNewLinked } CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, GsonUtils.toJson(map).toByteArray()) } diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/FuncBizProvider.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/FuncBizProvider.kt index 1e29f19194..574bd5f14a 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/FuncBizProvider.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/FuncBizProvider.kt @@ -118,7 +118,7 @@ class FuncBizProvider : IMoGoFuncBizProvider { } override fun queryV2XEvents() { - if (V2NCarTypeCheck.verifyCarType() && (!FunctionBuildConfig.v2nMainSwitch || !FunctionBuildConfig.isNewV2NData)) { + if (V2NCarTypeCheck.verifyCarType() && (!FunctionBuildConfig.v2nTotalSwitch || !FunctionBuildConfig.v2nNewLinked)) { v2xPoiLoader.queryWholeRoadEvents() } } diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/overview/OverViewDataManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/overview/OverViewDataManager.kt index 496ddc44b2..e121438401 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/overview/OverViewDataManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/overview/OverViewDataManager.kt @@ -107,7 +107,7 @@ object OverViewDataManager { .observeOn(AndroidSchedulers.mainThread()) .subscribe { it?.apply { - if (V2NCarTypeCheck.verifyCarType() && (!FunctionBuildConfig.v2nMainSwitch || !FunctionBuildConfig.isNewV2NData)) { + if (V2NCarTypeCheck.verifyCarType() && (!FunctionBuildConfig.v2nTotalSwitch || !FunctionBuildConfig.v2nNewLinked)) { CallerFuncBizListenerManager.invokeV2XEvents(this) } } diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt index 4b4238ee09..dd3b9092d5 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/V2XEventManager.kt @@ -196,8 +196,8 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback, } is V2XEvent.RoadEventX -> { val flag = verifyCarType() - Log.d("$M_V2X$TAG", "---- 收到ai云V2N事件 ---:${flag}, ${FunctionBuildConfig.v2nMainSwitch}, ${FunctionBuildConfig.isNewV2NData}") - if (flag && (!FunctionBuildConfig.v2nMainSwitch || !FunctionBuildConfig.isNewV2NData)) { + Log.d("$M_V2X$TAG", "---- 收到ai云V2N事件 ---:${flag}, ${FunctionBuildConfig.v2nTotalSwitch}, ${FunctionBuildConfig.v2nNewLinked}") + if (flag && (!FunctionBuildConfig.v2nTotalSwitch || !FunctionBuildConfig.v2nNewLinked)) { // try { if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { Log.d("$M_V2X$TAG", "onAck -> 司机端: 将收到云端事件给到乘客端...") @@ -210,7 +210,7 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback, // } handleRoadMarkerEvent(event.data.toRoadMarker()) } else{ - V2XBizTrace.onAck("事件未触发,被开关拦截",mapOf("roadEvent" to event, "v2nMainSwitch" to FunctionBuildConfig.v2nMainSwitch,"isNewV2NData" to FunctionBuildConfig.isNewV2NData), true) + V2XBizTrace.onAck("事件未触发,被开关拦截",mapOf("roadEvent" to event, "v2nMainSwitch" to FunctionBuildConfig.v2nTotalSwitch,"isNewV2NData" to FunctionBuildConfig.v2nNewLinked), true) } } else -> { diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt index a9a0282d94..516feb66b2 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/v2n/pnc/V2NIdentifyDrawer.kt @@ -45,7 +45,6 @@ import com.mogo.eagle.function.biz.v2x.v2n.utils.EventDismissBean import com.mogo.eagle.function.biz.v2x.v2n.utils.EventDismissManager import com.mogo.eagle.function.biz.v2x.v2n.utils.IEventDismissListener import com.mogo.eagle.function.biz.v2x.v2n.utils.V2XEventAnalyticsManager -import com.mogo.map.entities.Lane import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.asCoroutineDispatcher import kotlinx.coroutines.delay @@ -484,42 +483,42 @@ internal object V2NIdentifyDrawer: IEventDismissListener { } private fun drawShiGong(events: List) { - if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nMainSwitch && FunctionBuildConfig.isNewV2NData) { + if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nTotalSwitch && FunctionBuildConfig.v2nNewLinked) { handler.removeMessages(MSG_WHAT_DRAW_SHIGONE) handler.sendMessage(Message.obtain(handler, MSG_WHAT_DRAW_SHIGONE, events)) } } private fun drawShiGu(events: List) { - if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nMainSwitch && FunctionBuildConfig.isNewV2NData) { + if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nTotalSwitch && FunctionBuildConfig.v2nNewLinked) { handler.removeMessages(MSG_WHAT_DRAW_SHIGU) handler.sendMessage(Message.obtain(handler, MSG_WHAT_DRAW_SHIGU, events)) } } private fun drawYongDu(events: List) { - if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nMainSwitch && FunctionBuildConfig.isNewV2NData) { + if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nTotalSwitch && FunctionBuildConfig.v2nNewLinked) { handler.removeMessages(MSG_WHAT_DRAW_YONGDU) handler.sendMessage(Message.obtain(handler, MSG_WHAT_DRAW_YONGDU, events)) } } private fun drawOtherRetrogradeVehicle(event: MessagePad.Event) { - if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nMainSwitch && FunctionBuildConfig.isNewV2NData) { + if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nTotalSwitch && FunctionBuildConfig.v2nNewLinked) { handler.removeMessages(MSG_WHAT_DRAW_OTHER_RETROGRADE_VEHICLE) handler.sendMessage(Message.obtain(handler, MSG_WHAT_DRAW_OTHER_RETROGRADE_VEHICLE, event)) } } private fun drawGreenWave(crossSpeed: V2nCrossSpeed) { - if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nMainSwitch && FunctionBuildConfig.isNewV2NData) { + if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nTotalSwitch && FunctionBuildConfig.v2nNewLinked) { handler.removeMessages(MSG_WHAT_DRAW_GREEN_WAVE) handler.sendMessage(Message.obtain(handler, MSG_WHAT_DRAW_GREEN_WAVE, crossSpeed)) } } private fun drawPeopleCross(event: MessagePad.Event) { - if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nMainSwitch && FunctionBuildConfig.isNewV2NData) { + if (V2NCarTypeCheck.verifyCarType() && FunctionBuildConfig.v2nTotalSwitch && FunctionBuildConfig.v2nNewLinked) { handler.removeMessages(MSG_WHAT_DRAW_PEOPLE_CROSS) handler.sendMessage(Message.obtain(handler, MSG_WHAT_DRAW_PEOPLE_CROSS, event)) } diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt index 41e007e3b0..107722103d 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt @@ -68,7 +68,6 @@ import com.zhidao.support.adas.high.common.Constants import com.zhidao.support.adas.high.common.CupidLogUtils import com.zhjt.mogo.adas.common.MessageType import com.zhjt.mogo.adas.common.power.PowerUnitChannel -import com.zhjt.mogo.adas.data.Adas import com.zhjt.mogo.adas.data.AdasConstants import com.zhjt.mogo.adas.data.bean.MogoReport import com.zhjt.mogo.adas.data.bean.NodeStateInfo @@ -1166,8 +1165,8 @@ class MoGoAutopilotControlProvider : CallerLogger.d("$M_D_C$TAG", status) runCatching { val map = HashMap().also { - it["f1"] = FunctionBuildConfig.v2nMainSwitch - it["f2"] = FunctionBuildConfig.isNewV2NData + it["f1"] = FunctionBuildConfig.v2nTotalSwitch + it["f2"] = FunctionBuildConfig.v2nNewLinked } CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, GsonUtils.toJson(map).toByteArray()) } diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt index 6bcc217bf5..b49fc78e30 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt @@ -149,8 +149,8 @@ class TeleMsgHandler : IMsgHandler { val f1 = data["f1"] as Boolean val f2 = data["f2"] as Boolean Log.d(TAG, "乘客屏收到司机屏转发的新链路开关 --- 3 ---:$data, f1: $f1, f2:$f2") - FunctionBuildConfig.v2nMainSwitch = f1 - FunctionBuildConfig.isNewV2NData = f2 + FunctionBuildConfig.v2nTotalSwitch = f1 + FunctionBuildConfig.v2nNewLinked = f2 } catch (t: Throwable) { t.printStackTrace() Log.e(TAG, "乘客屏收到司机屏转发的新链路开关异常", t) @@ -270,11 +270,11 @@ class TeleMsgHandler : IMsgHandler { TelematicConstant.OBU_RUNREDLIGHT_WARNING -> { when (String(it.body)) { "0" -> { - HmiBuildConfig.isShowRunRedLightView = false + HmiBuildConfig.v2iRedLightWarning = false } "1" -> { - HmiBuildConfig.isShowRunRedLightView = true + HmiBuildConfig.v2iRedLightWarning = true } } } diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt index 37b63b34be..b874c07fee 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt @@ -64,25 +64,25 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener } override fun onMoGoObuRsiWarning(rsiWarningData: ObuScene.RsiWarningData) { - if (FunctionBuildConfig.v2xMainSwitch && HmiBuildConfig.isShowObuV2iView) { + if (FunctionBuildConfig.v2xTotalSwitch && HmiBuildConfig.v2iTotalSwitch) { onMogoObuDcRsiWarning(rsiWarningData) } } override fun onMoGoObuRsmWarning(rsmWarningData: ObuScene.RsmWarningData) { - if (FunctionBuildConfig.v2xMainSwitch && HmiBuildConfig.isShowObuV2iView) { + if (FunctionBuildConfig.v2xTotalSwitch && HmiBuildConfig.v2iTotalSwitch) { onMogoObuDcRsmWarning(rsmWarningData) } } override fun onMoGoObuSpatWarning(spatWarningData: ObuScene.SpatWarningData) { - if (FunctionBuildConfig.v2xMainSwitch && HmiBuildConfig.isShowObuV2iView) { + if (FunctionBuildConfig.v2xTotalSwitch && HmiBuildConfig.v2iTotalSwitch) { onMogoObuDcSpatWarning(spatWarningData) } } override fun onMoGoObuMapMath(mapMatchData: ObuScene.MapMatchData) { - if (FunctionBuildConfig.v2xMainSwitch && HmiBuildConfig.isShowObuV2iView) { + if (FunctionBuildConfig.v2xTotalSwitch && HmiBuildConfig.v2iTotalSwitch) { onMogoObuMapMath(mapMatchData) } } @@ -339,7 +339,7 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener * RSM预警信息 CvxPtcThreatIndInfo CvxPtcInfoIndInfo(主车与弱势交通参与者之间的预警(如:弱势交通参与者碰撞预警)) */ fun onMogoObuDcRsmWarning(rsmWarningData: ObuScene.RsmWarningData?) { - if (HmiBuildConfig.isShowObuWeaknessTrafficView) { + if (HmiBuildConfig.v2iWeaknessTraffic) { CallerLogger.d( "${M_OBU}${TAG}", "MogoObuDcCombineManager onMogoObuRsmWarning ------> ${rsmWarningData.toString()}" @@ -576,8 +576,8 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener } 1 -> { //闯红灯 V2I_RLVW_VIOLATION_TYPE_RUNNING_RED_LIGHT 一个红灯周期只显示一次 - if(FunctionBuildConfig.v2xMainSwitch && HmiBuildConfig.isShowObuV2iView){ - if (HmiBuildConfig.isShowRunRedLightView) { + if(FunctionBuildConfig.v2xTotalSwitch && HmiBuildConfig.v2iTotalSwitch){ + if (HmiBuildConfig.v2iRedLightWarning) { if (!isShowRunRedLight) { isShowRunRedLight = true ttsContent = @@ -609,7 +609,7 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener } 2 -> { //绿波通行引导 V2I_RLVW_VIOLATION_TYPE_NO_VIOLATION 一个绿灯周期只显示一次 - if (FunctionBuildConfig.v2xMainSwitch && FunctionBuildConfig.v2nMainSwitch && HmiBuildConfig.isShowGreenWaveView) { + if (FunctionBuildConfig.v2xTotalSwitch && FunctionBuildConfig.v2nTotalSwitch && HmiBuildConfig.isShowGreenWaveView) { if (!isShowGreenWave) { isShowGreenWave = true CallerLogger.d( diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt index edab8756ef..9307fc3ecd 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt @@ -296,7 +296,7 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { * v2v预警信息 CvxRvInfoIndInfo CvxV2vThreatIndInfo 他车 */ override fun onObuRvWarning(data: ObuScene.RvWarningData) { - if (FunctionBuildConfig.v2xMainSwitch && HmiBuildConfig.isShowObuV2vView) { + if (FunctionBuildConfig.v2xTotalSwitch && HmiBuildConfig.v2vTotalSwitch) { if (data.warningMsg != null) { // 更新数据,远车数据,之前要匹配uuid data.vehBasicsMsg?.let { @@ -343,7 +343,7 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { * 红绿灯预警信息 CvxIvpThreatIndInfo */ override fun onObuSpatWarning(data: ObuScene.SpatWarningData) { - if (FunctionBuildConfig.v2xMainSwitch && HmiBuildConfig.isShowObuV2iView) { + if (FunctionBuildConfig.v2xTotalSwitch && HmiBuildConfig.v2iTotalSwitch) { handlerTrafficLight( data.warningType, data.status, @@ -356,7 +356,7 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { * RSI预警信息 onMogoObuRsiWarning(交通标志预警(前方限速、前方学校等等),交通事件预警(前方拥堵、前方积水等等)) */ override fun onObuRsiWarning(data: ObuScene.RsiWarningData) { - if (FunctionBuildConfig.v2xMainSwitch && HmiBuildConfig.isShowObuV2iView) { + if (FunctionBuildConfig.v2xTotalSwitch && HmiBuildConfig.v2iTotalSwitch) { if (data.warningMsgList != null && data.warningMsgList.size > 0) { var alertContent = "" var ttsContent = "" @@ -643,8 +643,8 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", "onMogoObuRsmWarning ------> ${data?.toString()}" ) - if (FunctionBuildConfig.v2xMainSwitch && HmiBuildConfig.isShowObuV2iView) { - if (HmiBuildConfig.isShowObuWeaknessTrafficView) { + if (FunctionBuildConfig.v2xTotalSwitch && HmiBuildConfig.v2iTotalSwitch) { + if (HmiBuildConfig.v2iWeaknessTraffic) { // 交通参与者类型 0x0:未知 UNKNOWN | 1机动车 2:非机动车 NON_MOTOR | 3:行人 PEDESTRIAN 4:obu if (data != null && data.participant != null) { val v2xType = when (data.participant.ptcType) { @@ -736,7 +736,7 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { * 地图匹配 是OBU算法输出地图匹配结果,主车匹配道路哪条路或者哪条车道 */ override fun onObuMapMath(data: ObuScene.MapMatchData?) { - if (FunctionBuildConfig.v2xMainSwitch && HmiBuildConfig.isShowObuV2iView) { + if (FunctionBuildConfig.v2xTotalSwitch && HmiBuildConfig.v2iTotalSwitch) { if (data != null) { CallerLogger.d( "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", @@ -1056,8 +1056,8 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { } 1 -> {//闯红灯 V2I_RLVW_VIOLATION_TYPE_RUNNING_RED_LIGHT 一个红灯周期只显示一次 - if(FunctionBuildConfig.v2xMainSwitch && HmiBuildConfig.isShowObuV2iView){ - if (HmiBuildConfig.isShowRunRedLightView) { + if(FunctionBuildConfig.v2xTotalSwitch && HmiBuildConfig.v2iTotalSwitch){ + if (HmiBuildConfig.v2iRedLightWarning) { if (!isShowRunRedLight) { isShowRunRedLight = true ttsContent = diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index 7c6cc2fb8c..5b7a6b9b6a 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -34,7 +34,6 @@ import com.mogo.eagle.core.function.api.devatools.strict.IStrictModeProvider import com.mogo.eagle.core.function.api.lookaround.IMoGoLookAroundProvider import com.mogo.eagle.core.function.api.map.route.IMapRouteProvider import com.mogo.eagle.core.function.api.upgrade.IMoGoUpgradeProvider -import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.utilcode.kotlin.lifeCycleScope import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -84,10 +83,8 @@ import com.zhjt.mogo_core_function_devatools.weaknetwork.DetectResultImpl import com.zhjt.mogo_core_function_devatools.weaknetwork.WeakNetworkStrategy import com.zhjt.mogo_core_function_devatools.workorder.WorkOrderManager import com.zhjt.service.chain.ChainLog -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import java.io.File import java.lang.ref.WeakReference import java.util.concurrent.ConcurrentHashMap @@ -410,8 +407,8 @@ class DevaToolsProvider : IDevaToolsProvider, IAppStateListener { /** * 展示考试车辆控制窗口 */ - override fun showExamControlWindow(view: View,isShow: Boolean) { - ExamControlManager.showExamControlWindow(view,isShow) + override fun showExamControlWindow(isShow: Boolean) { + ExamControlManager.showExamControlWindow(isShow) } override fun onReceiveBadCaseRecord( diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/exam/ExamControlManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/exam/ExamControlManager.kt index 566399a786..81abca169f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/exam/ExamControlManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/exam/ExamControlManager.kt @@ -1,14 +1,10 @@ package com.zhjt.mogo_core_function_devatools.exam import android.annotation.SuppressLint -import android.view.View import androidx.fragment.app.FragmentActivity import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.function.call.setting.CallerSopSettingManager -import com.mogo.eagle.core.utilcode.util.ClickUtils -import com.mogo.eagle.core.utilcode.util.NetworkUtils -import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig +import com.mogo.eagle.core.utilcode.util.AppStateManager /** * 考试控制管理 @@ -21,9 +17,8 @@ internal object ExamControlManager { /** * 开启考试车辆控制窗口 */ - fun showExamControlWindow(view: View,isShow: Boolean){ - val activity = view.context as? FragmentActivity - ?: throw IllegalStateException("please ensure context is FragmentActivity.") + fun showExamControlWindow(isShow: Boolean){ + val activity = AppStateManager.currentActivity() ?: return if(examControlWindow == null){ examControlWindow = ExamControlWindow(activity) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcat/MoGoLogRecordProviderImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcat/MoGoLogRecordProviderImpl.kt index 31d0275237..c6f4ab2506 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcat/MoGoLogRecordProviderImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcat/MoGoLogRecordProviderImpl.kt @@ -147,7 +147,7 @@ internal class MoGoLogRecordProviderImpl: IMoGoLogRecordProvider, builder.crashConfig( CrashConfig.Builder() .enabled(true) - .uploader(CrashLogUploader()) +// .uploader(CrashLogUploader()) .crashDir(File(context.getExternalFilesDir(null), "crash")) .expireDuration(TimeUnit.DAYS.toMillis(3)) .javaCrash(true) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitDataManager.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitDataManager.kt index 673b975272..31e17a63ae 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitDataManager.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitDataManager.kt @@ -13,6 +13,7 @@ import com.mogo.eagle.core.function.api.och.toolkit.IToolKitItemClickListener import com.mogo.eagle.core.function.api.och.toolkit.ToolKitCustomItemAddParam import com.mogo.eagle.core.function.api.och.toolkit.ToolKitDefaultItemAddParam import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.bone.toolkit.custom.ToolDriverRomaView import com.mogo.eagle.core.function.hmi.bone.toolkit.custom.ToolRestartSystemView @@ -161,7 +162,8 @@ object ToolKitDataManager : IToolKitItemClickListener { ToolTypeEnum.OPERATION_PANEL.name -> { ctx?.also { - SopView.sopView.toggle(it) +// SopView.sopView.toggle(it) + CallerHmiManager.toggleOperatePanel(true) } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt index a4c2ba44e4..0b42a8cffe 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt @@ -2,14 +2,15 @@ package com.mogo.eagle.core.function.hmi.ui import android.content.Context import android.text.TextUtils -import android.transition.Slide import android.util.Log import android.view.Gravity import android.view.View import android.view.ViewGroup -import android.view.WindowManager +import android.view.ViewStub import androidx.lifecycle.ProcessLifecycleOwner import androidx.lifecycle.lifecycleScope +import androidx.transition.Slide +import androidx.transition.TransitionManager import com.alibaba.android.arouter.facade.annotation.Route import com.mogo.commons.module.status.MogoStatusManager import com.mogo.commons.voice.AIAssist @@ -36,6 +37,7 @@ import com.mogo.eagle.core.function.api.och.toolkit.ToolKitDefaultItemAddParam import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.call.v2x.CallerTurnLightListenerManager +import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.bone.status.fsm.FSMStatusDetailWindowManager import com.mogo.eagle.core.function.hmi.bone.toolkit.ToolKitDataManager import com.mogo.eagle.core.function.hmi.ui.camera.RoadVideoDialog @@ -66,8 +68,6 @@ import com.zhjt.service_biz.BizConfig import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import me.jessyan.autosize.utils.AutoSizeUtils -import java.lang.ref.WeakReference import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicReference @@ -95,8 +95,6 @@ class MoGoHmiProvider : IMoGoHmiProvider { private val xiaozhi by lazy { XiaoZhiStateManager() } - private val operatePanel by lazy { AtomicReference>(null) } - override fun init(context: Context?) { this.context = context } @@ -451,26 +449,22 @@ class MoGoHmiProvider : IMoGoHmiProvider { return } if (show) { - if (operatePanel.get()?.get()?.isShowing() == true) { - return + var target = activity.findViewById(R.id.id_operate_panel) + if (target == null) { + val vs = activity.findViewById(R.id.vs_operate_panel) ?: throw AssertionError() + target = vs.inflate() + } + if (target != null && target.visibility != View.VISIBLE) { + TransitionManager.beginDelayedTransition(target.parent as ViewGroup, Slide(Gravity.START).also { it.duration = 150; it.addTarget(target) }) + target.visibility = View.VISIBLE + target.post { target.bringToFront() } } - MoGoPopWindow.Builder() - .attachToActivity(activity) - .gravityInActivity(Gravity.START or Gravity.TOP) - .contentView(OperatePanelLayout(activity)) - .width(AutoSizeUtils.dp2px(activity, 1000.0f)) - .height(WindowManager.LayoutParams.MATCH_PARENT) - .transition(Slide(Gravity.START), Slide(Gravity.START)) - .onDismissed { - operatePanel.set(null) - } - .build() - .also { - operatePanel.set(WeakReference(it)) - } - .show() } else { - operatePanel.get()?.get()?.hide() + val operatePanelView = activity.findViewById(R.id.id_operate_panel) + if (operatePanelView != null && operatePanelView.visibility == View.VISIBLE) { + TransitionManager.beginDelayedTransition(operatePanelView.parent as ViewGroup, Slide(Gravity.START).also { it.duration = 150; it.addTarget(operatePanelView) }) + operatePanelView.visibility = View.GONE + } } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt index 3d8708f210..79fba3c154 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt @@ -5,99 +5,1024 @@ import android.os.Bundle import android.util.AttributeSet import android.util.Log import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup import android.widget.LinearLayout +import androidx.annotation.CallSuper import androidx.core.content.ContextCompat +import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat +import androidx.preference.PreferenceGroup import androidx.preference.PreferenceHeaderFragmentCompat +import androidx.preference.SwitchPreferenceCompat +import androidx.preference.TwoStatePreference +import androidx.preference.forEach +import androidx.recyclerview.widget.RecyclerView +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.data.config.HmiBuildConfig +import com.mogo.eagle.core.data.multidisplay.TelematicConstant +import com.mogo.eagle.core.data.obu.MogoObuConst +import com.mogo.eagle.core.function.api.devatools.mofang.IMoGoMoFangProvider +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_MODE_DEMO +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_MODE_RAIN +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager +import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager +import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager +import com.mogo.eagle.core.function.call.obu.CallerObuApiManager +import com.mogo.eagle.core.function.call.setting.CallerSopSettingManager +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager +import com.mogo.eagle.core.function.call.unmanned.CallerUnmannedListenerManager import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.function.hmi.ui.operate.preferences.PreferenceWithMoFang +import com.mogo.eagle.core.function.hmi.ui.operate.preferences.PreferenceWithSpeedSetting +import com.mogo.eagle.core.function.hmi.ui.operate.preferences.PreferenceWithUnmanInterval +import com.mogo.eagle.core.function.hmi.ui.operate.preferences.PreferenceWithWelcomeWords +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.kotlin.onClick +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.rv.divider.CommonDividerItemDecoration +import com.mogo.eagle.core.utilcode.util.ToastUtils import kotlinx.android.synthetic.main.layout_operate_panel.view.iv_operate_panel_close +import me.jessyan.autosize.utils.AutoSizeUtils -class OperatePanelLayout: LinearLayout { +class OperatePanelLayout : LinearLayout { companion object { private const val TAG = "OperatePanelLayout" } - class PreferenceHeaderFragmentCompatImpl: PreferenceHeaderFragmentCompat() { + class PreferenceHeaderFragmentCompatImpl : PreferenceHeaderFragmentCompat() { + + private var header: PreferenceFragmentCompat? = null override fun onCreatePreferenceHeader(): PreferenceFragmentCompat { - Log.d(TAG, "--- onCreatePreferenceHeader ---") - return PreferenceHeader() + return PreferenceHeader().also { header = it } + } + + override fun onPrimaryNavigationFragmentChanged(isPrimaryNavigationFragment: Boolean) { + super.onPrimaryNavigationFragmentChanged(isPrimaryNavigationFragment) + val screen = header?.preferenceScreen + val count = screen?.preferenceCount ?: 0 + var curr = 0 + var perf: Preference? = null + while (curr < count) { + perf = screen?.getPreference(curr) + if (perf?.fragment != null) { + break + } + curr++ + } + if (perf != null) { + handleNaviBackground(perf) + } + } + + + override fun onPreferenceStartFragment(caller: PreferenceFragmentCompat, pref: Preference): Boolean { + try { + return super.onPreferenceStartFragment(caller, pref) + } finally { + handleNaviBackground(pref) + } + } + + private fun handleNaviBackground(pref: Preference) { + val position = (header?.listView?.adapter as? PreferenceGroup.PreferencePositionCallback)?.getPreferenceAdapterPosition(pref) + ?: RecyclerView.NO_POSITION + val prev = header?.listView?.getTag(R.id.operate_panel_header_last_selected) as? Int + ?: -1 + if (prev == position) { + return + } + if (position != RecyclerView.NO_POSITION) { + if (prev >= 0) { + header?.listView?.layoutManager?.findViewByPosition(prev)?.isSelected = false + } + header?.listView?.layoutManager?.findViewByPosition(position)?.isSelected = true + header?.listView?.setTag(R.id.operate_panel_header_last_selected, position) + } } } - class PreferenceHeader: PreferenceFragmentCompat() { + class PreferenceHeader : PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { - Log.d(TAG, "PreferenceHeader --- onCreatePreferences ---") - setPreferencesFromResource(R.xml.operate_preference_headers, rootKey) + setPreferencesFromResource(R.xml.operate_panel_preference_headers, rootKey) } } - class V2XPreferenceFragmentCompat: PreferenceFragmentCompat() { - override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { - Log.d(TAG, "V2XPreferenceFragmentCompat --- onCreatePreferences ---") - setPreferencesFromResource(R.xml.operate_preference_details_v2x, rootKey) + abstract class OperatePanelDetailBase : PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setPreferenceChangeListener(preferenceScreen) + setPreferenceClickListener(preferenceScreen) + setDefaultVal(preferenceScreen) + setEnabled(preferenceScreen) + } + + protected open fun getDefaultVal(pref: Preference): Any? { + return null + } + + protected open fun isEnabled(pref: Preference): Boolean { + return true + } + + private fun setDefaultVal(pref: Preference) { + if (pref is PreferenceGroup) { + pref.forEach { + setDefaultVal(it) + } + } else { + if (!pref.isPersistent) { + val defVal = getDefaultVal(pref) + if (defVal != null) { + if (pref is TwoStatePreference) { + changeValue(pref, defVal as Boolean) + } else { + pref.setDefaultValue(defVal) + } + } + } else { //TODO renwj 处理持久化存储时,将持久化的值重新赋给业务层的静态变量 + } + } + } + + private fun setEnabled(pref: Preference) { + if (pref is PreferenceGroup) { + pref.forEach { + setEnabled(it) + } + } else { + val curr = isEnabled(pref) + val prev = pref.isEnabled + if (curr != prev) { + pref.isEnabled = curr + } + } + } + + private fun setPreferenceChangeListener(pref: Preference) { + if (pref is PreferenceGroup) { + pref.forEach { setPreferenceChangeListener(it) } + } else { + pref.onPreferenceChangeListener = this + } + } + + private fun setPreferenceClickListener(pref: Preference) { + if (pref is PreferenceGroup) { + pref.forEach { + setPreferenceClickListener(it) + } + } else { + pref.onPreferenceClickListener = this + } + } + + @Suppress("UNCHECKED_CAST") + fun Preference.findPreferenceReal(key: String): T? { + if (this is PreferenceGroup) { + this.forEach { + val find = it.findPreferenceReal(key) + if (find != null) { + return find + } + } + return null + } else { + return if (this.key == key) this as T else null + } + } + + fun changeValue(pref: TwoStatePreference, isChecked: Boolean) { + if (pref.isChecked != isChecked) { + pref.isChecked = isChecked + pref.callChangeListener(isChecked) + } + } + + @CallSuper + override fun onCreateRecyclerView(inflater: LayoutInflater, parent: ViewGroup, savedInstanceState: Bundle?): RecyclerView { + val rv = inflater.inflate(R.layout.layout_operate_panel_detail_recyclerview, parent, false) as RecyclerView + rv.addItemDecoration(CommonDividerItemDecoration.Builder().spanCountTBCare(false).verticalExternalSpace(AutoSizeUtils.dp2px(parent.context, 20.0f)).verticalInnerSpace(AutoSizeUtils.dp2px(parent.context, 30.0f)).externalSpaceEnd(true).build()) + rv.background = ContextCompat.getDrawable(parent.context, R.drawable.bg_operate_panel_preference_detail) + rv.layoutManager = onCreateLayoutManager() + return rv + } + + override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { + return !preference.isPersistent + } + + override fun onPreferenceClick(preference: Preference): Boolean { + return !preference.isPersistent } } + class V2XPreferenceFragmentCompat : OperatePanelDetailBase() { + + companion object { + private const val KEY_V2X_TOTAL_SWITCH = "v2x_total_switch" + private const val KEY_V2N_TOTAL_SWITCH = "v2n_total_switch" + private const val KEY_V2N_NEW_LINKED = "v2n_new_linked" + private const val KEY_V2N_NEW_LINKED_TO_PNC = "v2n_new_linked_to_pnc" + private const val KEY_V2N_NEW_LINKED_GREEN_WAVE = "v2n_new_linked_green_wave" + private const val KEY_V2I_TOTAL_SWITCH = "v2i_total_switch" + private const val KEY_V2I_TO_PNC = "v2i_to_pnc" + private const val KEY_V2I_RED_LIGHT_WARNING = "v2i_red_light_warning" + private const val KEY_V2I_WEAKNESS_TRAFFIC = "v2i_weakness_traffic" + private const val KEY_V2V_TOTAL_SWITCH = "v2v_total_switch" + private const val KEY_OBU_TOTAL_SWITCH = "obu_total_switch" + } - class DemoPreferenceFragmentCompat: PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { - Log.d(TAG, "DemoPreferenceFragmentCompat --- onCreatePreferences ---") - setPreferencesFromResource(R.xml.operate_preference_details_demo, rootKey) + setPreferencesFromResource(R.xml.operate_panel_preference_details_v2x, rootKey) + } + + override fun getDefaultVal(pref: Preference): Any? { + when (pref.key) { + KEY_V2X_TOTAL_SWITCH -> { + return FunctionBuildConfig.v2xTotalSwitch + } + KEY_V2N_TOTAL_SWITCH -> { + return FunctionBuildConfig.v2nTotalSwitch + } + KEY_V2N_NEW_LINKED -> { + return FunctionBuildConfig.v2nNewLinked + } + KEY_V2N_NEW_LINKED_TO_PNC -> { + return FunctionBuildConfig.v2nNewLinkedToPNC + } + KEY_V2N_NEW_LINKED_GREEN_WAVE -> { + return FunctionBuildConfig.v2nGreenWave + } + KEY_V2I_TOTAL_SWITCH -> { + return HmiBuildConfig.v2iTotalSwitch + } + KEY_V2I_TO_PNC -> { + return FunctionBuildConfig.v2iToPNC + } + KEY_V2I_RED_LIGHT_WARNING -> { + return HmiBuildConfig.v2iRedLightWarning + } + KEY_V2I_WEAKNESS_TRAFFIC -> { + return HmiBuildConfig.v2iWeaknessTraffic + } + KEY_V2V_TOTAL_SWITCH -> { + return HmiBuildConfig.v2vTotalSwitch + } + KEY_OBU_TOTAL_SWITCH -> { + return CallerObuApiManager.isConnected() + } + } + return super.getDefaultVal(pref) + } + + override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { + Log.d(TAG, "-- onPreferenceChange:($preference, $newValue)") + when (preference.key) { + KEY_V2X_TOTAL_SWITCH -> { + val isChecked = newValue as? Boolean ?: false + FunctionBuildConfig.v2xTotalSwitch = isChecked + hmiAction("V2X总开关, ", isChecked) + clickEventAnalytics("V2X总开关", isChecked) + if (isChecked) { + preferenceScreen.findPreferenceReal(KEY_V2N_TOTAL_SWITCH)?.also { changeValue(it, FunctionBuildConfig.v2nTotalSwitch) } // V2N总开关 + preferenceScreen.findPreferenceReal(KEY_V2I_TOTAL_SWITCH)?.also { changeValue(it, HmiBuildConfig.v2iTotalSwitch) } // V2I总开关 + preferenceScreen.findPreferenceReal(KEY_V2V_TOTAL_SWITCH)?.also { changeValue(it, HmiBuildConfig.v2vTotalSwitch) } // V2V总开关 + preferenceScreen.findPreferenceReal(KEY_OBU_TOTAL_SWITCH)?.also { changeValue(it, CallerObuApiManager.isConnected()) } // OBU总开关 + } else { + preferenceScreen.findPreferenceReal(KEY_V2N_TOTAL_SWITCH)?.also { changeValue(it, false) } // V2N总开关 + preferenceScreen.findPreferenceReal(KEY_V2I_TOTAL_SWITCH)?.also { changeValue(it, false) } // V2I总开关 + preferenceScreen.findPreferenceReal(KEY_V2V_TOTAL_SWITCH)?.also { changeValue(it, false) } // V2V总开关 + preferenceScreen.findPreferenceReal(KEY_OBU_TOTAL_SWITCH)?.also { changeValue(it, false) } // OBU总开关 + } + return true + } + KEY_V2N_TOTAL_SWITCH -> { + val isChecked = newValue as? Boolean ?: false + FunctionBuildConfig.v2nTotalSwitch = isChecked + hmiAction("V2N总开关, ", isChecked) + clickEventAnalytics("V2N总开关", isChecked) + if (!isChecked) { + preferenceScreen.findPreferenceReal(KEY_V2N_NEW_LINKED)?.also { changeValue(it, false) } + preferenceScreen.findPreferenceReal(KEY_V2N_NEW_LINKED_TO_PNC)?.also { changeValue(it, false) } + preferenceScreen.findPreferenceReal(KEY_V2N_NEW_LINKED_GREEN_WAVE)?.also { changeValue(it, false) } + } + return true + } + KEY_V2N_NEW_LINKED -> { + val isChecked = newValue as? Boolean ?: false + FunctionBuildConfig.v2nNewLinked = isChecked + hmiAction("V2N新链路", isChecked) + clickEventAnalytics("V2N新链路", isChecked) + return true + } + KEY_V2N_NEW_LINKED_TO_PNC -> { + val isChecked = newValue as? Boolean ?: false + FunctionBuildConfig.v2nNewLinkedToPNC = isChecked + clickEventAnalytics("V2N场景进PNC", isChecked) + hmiAction("V2N场景进PNC, ", isChecked) + CallerAutoPilotControlManager.sendV2nToPncCmd(isChecked) + return true + } + KEY_V2N_NEW_LINKED_GREEN_WAVE -> { + val isChecked = newValue as? Boolean ?: false + FunctionBuildConfig.v2nGreenWave = isChecked + hmiAction("绿波通行", isChecked) + clickEventAnalytics("绿波通行", isChecked) + CallerTelematicManager.sendMsgToAllClients(TelematicConstant.OBU_GREENWAVE_WARNING, (if (isChecked) "1" else "0").toByteArray()) + return true + } + KEY_V2I_TOTAL_SWITCH -> { + val isChecked = newValue as? Boolean ?: false + HmiBuildConfig.v2iTotalSwitch = isChecked + hmiAction("V2I总开关, ", isChecked) + clickEventAnalytics("V2I总开关", isChecked) + return true + } + KEY_V2I_TO_PNC -> { + val isChecked = newValue as? Boolean ?: false + FunctionBuildConfig.v2iToPNC = isChecked + CallerAutoPilotControlManager.sendV2iToPncCmd(isChecked) + hmiAction("V2I场景进PNC, ", isChecked) + clickEventAnalytics("V2I场景进PNC", isChecked) + return true + } + KEY_V2I_RED_LIGHT_WARNING -> { + val isChecked = newValue as? Boolean ?: false + HmiBuildConfig.v2iRedLightWarning = isChecked + CallerTelematicManager.sendMsgToAllClients(TelematicConstant.OBU_RUNREDLIGHT_WARNING, (if (isChecked) "1" else "0").toByteArray()) + clickEventAnalytics("V2I闯红灯预警", isChecked) + hmiAction("V2I闯红灯预警, ", isChecked) + return true + } + KEY_V2I_WEAKNESS_TRAFFIC -> { + val isChecked = newValue as? Boolean ?: false + HmiBuildConfig.v2iWeaknessTraffic = isChecked + clickEventAnalytics("V2I弱势交通参与者", isChecked) + hmiAction("V2I弱势交通参与者, ", isChecked) + return true + } + KEY_V2V_TOTAL_SWITCH -> { + val isChecked = newValue as? Boolean ?: false + HmiBuildConfig.v2vTotalSwitch = isChecked + clickEventAnalytics("V2V总开关", isChecked) + hmiAction("V2V总开关, ", isChecked) + return true + } + KEY_OBU_TOTAL_SWITCH -> { + val isChecked = newValue as? Boolean ?: false + if (!isChecked) { + CallerObuApiManager.disConnectObu() // 断开OBU连接 + } else { + val isObuConnected = CallerObuApiManager.isConnected() + if (isObuConnected) { + CallerObuApiManager.resetObuIpAddress(MogoObuConst.OBU_DEFAULT_IP) + } + } + clickEventAnalytics("OBU控制总开关", isChecked) + hmiAction("OBU控制总开关, ", isChecked) + return true + } + } + return super.onPreferenceChange(preference, newValue) } } - class HdMapPreferenceFragmentCompat: PreferenceFragmentCompat() { + class DemoPreferenceFragmentCompat : OperatePanelDetailBase() { + + companion object { + private const val KEY_DEMO_SWITCH = "demo_switch" + private const val KEY_RECORD_BAG_DIALOG = "record_bag_dialog" + private const val KEY_TAKE_OVER_WAKE = "take_over_wake" + } + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { - Log.d(TAG, "HdMapPreferenceFragmentCompat --- onCreatePreferences ---") - setPreferencesFromResource(R.xml.operate_preference_details_hdmap, rootKey) + setPreferencesFromResource(R.xml.operate_panel_preference_details_demo, rootKey) + } + + override fun getDefaultVal(pref: Preference): Any? { + when (pref.key) { + KEY_DEMO_SWITCH -> { + return FunctionBuildConfig.isDemoMode + } + KEY_RECORD_BAG_DIALOG -> { + return FunctionBuildConfig.isShowBagRecordWindow + } + KEY_TAKE_OVER_WAKE -> { + return FunctionBuildConfig.isTakeoverRemind + } + } + return super.getDefaultVal(pref) + } + + override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { + when (preference.key) { + KEY_DEMO_SWITCH -> { + val isChecked = newValue as? Boolean ?: false + hmiAction("SOP 演示模式开关, ", !FunctionBuildConfig.isDemoMode) + clickEventAnalytics("美化模式", isChecked) + FunctionBuildConfig.isDemoMode = !FunctionBuildConfig.isDemoMode + CallerAutoPilotControlManager.setDemoMode(FunctionBuildConfig.isDemoMode) + CallerHmiViewControlListenerManager.invokeFuncMode(FUNC_MODE_DEMO, FunctionBuildConfig.isDemoMode) + CallerSopSettingManager.invokeDemoModeListener(isChecked) + if (!FunctionBuildConfig.isDemoMode) { //关闭美化模式时,通知工控机 + CallerAutoPilotControlManager.setIPCDemoMode(FunctionBuildConfig.isDemoMode) + } + } + KEY_RECORD_BAG_DIALOG -> { + val isChecked = newValue as? Boolean ?: false + FunctionBuildConfig.isShowBagRecordWindow = isChecked + hmiAction("SOP 是否展示录包弹窗, ", isChecked) + clickEventAnalytics("录包弹窗", isChecked) + } + KEY_TAKE_OVER_WAKE -> { + val isChecked = newValue as? Boolean ?: false + FunctionBuildConfig.isTakeoverRemind = isChecked + hmiAction("SOP 是否展示接管提醒, ", isChecked) + clickEventAnalytics("接管提醒", isChecked) + } + } + return super.onPreferenceChange(preference, newValue) } } - class BusinessPreferenceFragmentCompat: PreferenceFragmentCompat() { + class HdMapPreferenceFragmentCompat : OperatePanelDetailBase() { + companion object { + private const val KEY_DANGER_OBSTACLES_COLOR_MARK = "danger_obstacles_color_mark" + private const val KEY_ROUTE_GUIDE_LINE_DYNAMIC_EFFECT = "route_guide_line_dynamic_effect" + private const val KEY_POINT_CLOUD_EFFECT = "point_cloud_effect" + private const val KEY_SELF_CAR_APERTURE = "self_car_aperture" + } + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { - Log.d(TAG, "BusinessPreferenceFragmentCompat --- onCreatePreferences ---") - setPreferencesFromResource(R.xml.operate_preference_details_business, rootKey) + setPreferencesFromResource(R.xml.operate_panel_preference_details_hdmap, rootKey) + } + + override fun getDefaultVal(pref: Preference): Any? { + when (pref.key) { + KEY_DANGER_OBSTACLES_COLOR_MARK -> { + return FunctionBuildConfig.isPNCWarning + } + KEY_POINT_CLOUD_EFFECT -> { + return FunctionBuildConfig.isDrawPointCloudData + } + KEY_ROUTE_GUIDE_LINE_DYNAMIC_EFFECT -> { + return HmiBuildConfig.isShowRouteStrategy + } + KEY_SELF_CAR_APERTURE -> { + return FunctionBuildConfig.isDrawPointCloudData || FunctionBuildConfig.isDisplayAnimEnable + } + } + return super.getDefaultVal(pref) + } + + override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { + when (preference.key) { + KEY_DANGER_OBSTACLES_COLOR_MARK -> { + val isChecked = newValue as? Boolean ?: false + hmiAction("SOP 危险障碍物颜色标记开关, ", isChecked) + clickEventAnalytics("危险障碍物颜色标记", isChecked) + FunctionBuildConfig.isPNCWarning = isChecked + return true + } + KEY_ROUTE_GUIDE_LINE_DYNAMIC_EFFECT -> { + val isChecked = newValue as? Boolean ?: false + hmiAction("SOP 引导线动态效果, ", isChecked) + clickEventAnalytics("引导线动态效果", isChecked) + HmiBuildConfig.isShowRouteStrategy = isChecked + CallerDevaToolsManager.setRouteDynamicColorEnable(isChecked) + return true + } + KEY_POINT_CLOUD_EFFECT -> { + val isChecked = newValue as? Boolean + ?: false //打开点云效果时,如果自车光圈是关闭状态,则自动打开自车光圈(点云是跟随光圈的 默认没有光圈就不显示点云的) + if (isChecked && !FunctionBuildConfig.isDisplayAnimEnable) { + preferenceScreen.findPreferenceReal(KEY_SELF_CAR_APERTURE)?.also { changeValue(it, true) } + } else { + preferenceScreen.findPreferenceReal(KEY_SELF_CAR_APERTURE)?.also { changeValue(it, FunctionBuildConfig.isDisplayAnimEnable) } + } + CallerAutoPilotControlManager.setIsDrawPointCloud(isChecked) + FunctionBuildConfig.isDrawPointCloudData = isChecked + CallerMapUIServiceManager.getMapUIController()?.setIsDrawPointCloud(isChecked) + CallerSopSettingManager.invokePointCloudListener(isChecked) + hmiAction("SOP 是否渲染点云数据, ", isChecked) + clickEventAnalytics("点云效果", isChecked) + return true + } + KEY_SELF_CAR_APERTURE -> { + val isChecked = newValue as? Boolean ?: false + CallerMapUIServiceManager.getMapUIController()?.setDisplayAnimEnable(isChecked) + CallerSopSettingManager.invokeCarApertureListener(isChecked) + hmiAction("SOP 是否展示自车光圈,", isChecked) + FunctionBuildConfig.isDisplayAnimEnable = isChecked + clickEventAnalytics("自车光圈", isChecked) + return true + } + } + return super.onPreferenceChange(preference, newValue) } } - class MoFangPreferenceFragmentCompat: PreferenceFragmentCompat() { + class BusinessPreferenceFragmentCompat : OperatePanelDetailBase() { + + companion object { + private const val KEY_RED_OR_GREEN_LIGHT_MARKER = "red_or_green_light_marker" + private const val KEY_RED_OR_GREEN_LIGHT_MERGE_MARKER = "red_or_green_light_merge_marker" + private const val KEY_FAULT_REPORT_TIP = "fault_report_tip" + private const val KEY_LIMIT_SPEED_MARKER = "limit_speed_marker" + private const val KEY_SELF_ROUTING_VERIFY_MODE = "self_routing_verify_mode" + private const val KEY_LOOK_AROUND_360 = "look_around_360" + private const val KEY_WEATHER_EFFECT_SWITCH = "weather_effect_switch" + private const val KEY_SYSTEM_BOOT_STATUS_SHOW = "system_boot_status_show" + private const val KEY_UNMANNED_DEMO_PULL_INTERVAL = "unmanned_demo_pull_interval" + } + + override fun getDefaultVal(pref: Preference): Any? { + when (pref.key) { + KEY_RED_OR_GREEN_LIGHT_MARKER -> { + return HmiBuildConfig.isShowTrafficLightView + } + KEY_RED_OR_GREEN_LIGHT_MERGE_MARKER -> { + return HmiBuildConfig.isShowCarSourceTrafficLightView + } + KEY_FAULT_REPORT_TIP -> { + return FunctionBuildConfig.isReportWarning + } + KEY_LIMIT_SPEED_MARKER -> { + return HmiBuildConfig.isShowLimitingVelocityView + } + KEY_SELF_ROUTING_VERIFY_MODE -> { + return CallerHmiManager.isTaxiUnmanedDriverLineRoutingVerifyMode() + } + KEY_LOOK_AROUND_360 -> { + return CallerHmiManager.isM1360LookAroundShowing() + } + KEY_WEATHER_EFFECT_SWITCH -> { + return FunctionBuildConfig.weatherEffectSwitch + } + KEY_SYSTEM_BOOT_STATUS_SHOW -> { + return HmiBuildConfig.isShowConnectionProgressView + } + KEY_UNMANNED_DEMO_PULL_INTERVAL -> { + return CallerUnmannedListenerManager.getVirtualTaskPullTaskIntervalF() + } + } + return super.getDefaultVal(pref) + } + + override fun isEnabled(pref: Preference): Boolean { + return when (pref.key) { + KEY_SELF_ROUTING_VERIFY_MODE -> { + AppIdentityModeUtils.isTaxiDriver(FunctionBuildConfig.appIdentityMode) + } + KEY_LOOK_AROUND_360 -> { + AppIdentityModeUtils.isM1(FunctionBuildConfig.appIdentityMode) + } + KEY_WEATHER_EFFECT_SWITCH -> { + AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) + } + else -> super.isEnabled(pref) + } + } + + override fun onPreferenceClick(preference: Preference): Boolean { + if (preference.key == KEY_UNMANNED_DEMO_PULL_INTERVAL) { + val interval = PreferenceWithUnmanInterval.Interval.values().find { it.ordinal == preference.extras.getInt(PreferenceWithUnmanInterval.KEY_BUNDLE_CURRENT_INTERVAL) } + Log.d(TAG, "业务类->onPreferenceClick: $interval") + if (interval != null) { + when (interval) { + PreferenceWithUnmanInterval.Interval.FIVE_SECOND -> CallerUnmannedListenerManager.dispatchVirtualTaskPullTaskInterval(5) + PreferenceWithUnmanInterval.Interval.FIFTEEN_SECOND -> CallerUnmannedListenerManager.dispatchVirtualTaskPullTaskInterval(15) + PreferenceWithUnmanInterval.Interval.THIRTY_SECOND -> CallerUnmannedListenerManager.dispatchVirtualTaskPullTaskInterval(30) + PreferenceWithUnmanInterval.Interval.FORTY_FIVE_SECOND -> CallerUnmannedListenerManager.dispatchVirtualTaskPullTaskInterval(45) + PreferenceWithUnmanInterval.Interval.NEVER -> CallerUnmannedListenerManager.dispatchVirtualTaskPullTaskInterval(-1) + } + clickEventAnalytics("Taxi无人化演练任务拉取时间间隔",true) + } + } + return super.onPreferenceClick(preference) + } + + override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { + when (preference.key) { + KEY_RED_OR_GREEN_LIGHT_MARKER -> { + val isChecked = newValue as? Boolean ?: false + hmiAction("SOP 红绿灯标识开关, ", isChecked) + clickEventAnalytics("红绿灯标识", isChecked) + if (isChecked) { + CallerHmiManager.showTrafficLightView() + } else { + CallerHmiManager.hideTrafficLightView() + } + return true + } + KEY_RED_OR_GREEN_LIGHT_MERGE_MARKER -> { + val isChecked = newValue as? Boolean ?: false + hmiAction("SOP 红绿灯车端来源标识开关, ", isChecked) + clickEventAnalytics("红绿灯车端融合标识", isChecked) + HmiBuildConfig.isShowCarSourceTrafficLightView = isChecked + return true + } + KEY_FAULT_REPORT_TIP -> { + val isChecked = newValue as? Boolean ?: false + hmiAction("SOP 是否开启异常上报, ", isChecked) + clickEventAnalytics("异常上报提示", isChecked) + FunctionBuildConfig.isReportWarning = isChecked + return true + } + KEY_LIMIT_SPEED_MARKER -> { + val isChecked = newValue as? Boolean ?: false + hmiAction("SOP 限速标识开关, ", isChecked) + clickEventAnalytics("限速标识", isChecked) + if (isChecked) { + HmiBuildConfig.isShowLimitingVelocityView = true + CallerHmiViewControlListenerManager.invokeVisible(IViewControlListener.LimitingVelocityView_TAG, View.VISIBLE) + } else { + HmiBuildConfig.isShowLimitingVelocityView = false + CallerHmiViewControlListenerManager.invokeVisible(IViewControlListener.LimitingVelocityView_TAG, View.GONE) + } + return true + } + KEY_SELF_ROUTING_VERIFY_MODE -> { + val isChecked = newValue as? Boolean ?: false + if (isChecked) { + if (CallerHmiManager.isTaxiUnmanedDriverPerformTask()) { + ToastUtils.showLong("请先结束当前任务") + preferenceScreen.findPreferenceReal(KEY_SELF_ROUTING_VERIFY_MODE)?.also { changeValue(it, false) } + return true + } + if (CallerHmiManager.isTaxiUnmanedDriverTakingOrders()) { + ToastUtils.showLong("请先结束接单状态") + preferenceScreen.findPreferenceReal(KEY_SELF_ROUTING_VERIFY_MODE)?.also { changeValue(it, false) } + return true + } + CallerHmiManager.setTaxiUnmanedDriverLineRoutingVerifyMode(true) + } else { + if (CallerHmiManager.isTaxiUnmanedDriverLineRoutingPerformTask()) { + ToastUtils.showLong("请先结束当前任务") + preferenceScreen.findPreferenceReal(KEY_SELF_ROUTING_VERIFY_MODE)?.also { changeValue(it, true) } + return true + } + CallerHmiManager.setTaxiUnmanedDriverLineRoutingVerifyMode(false) + } + clickEventAnalytics("自主算路验证模式", isChecked) + return true + } + KEY_LOOK_AROUND_360 -> { + val isChecked = newValue as? Boolean ?: false + if (isChecked) { + CallerHmiManager.showM1360LookAround() + } else { + CallerHmiManager.hidM1360LookAround() + } + clickEventAnalytics("360环视", isChecked) + return true + } + KEY_WEATHER_EFFECT_SWITCH -> { + val isChecked = newValue as? Boolean ?: false + FunctionBuildConfig.weatherEffectSwitch = isChecked + CallerLogger.d(TAG, "发送开关数据:${isChecked}到乘客屏") + CallerTelematicManager.sendMsgToAllClients(TelematicConstant.WEATHER_SWITCH_STATUS, (if (isChecked) "1" else "0").toByteArray()) + clickEventAnalytics("天气效果开关", isChecked) + } + KEY_SYSTEM_BOOT_STATUS_SHOW -> { + val isChecked = newValue as? Boolean ?: false + hmiAction("SOP 系统启动状态展示, ", isChecked) + clickEventAnalytics("系统启动状态展示", isChecked) + HmiBuildConfig.isShowConnectionProgressView = isChecked + CallerHmiViewControlListenerManager.updateConnectionProgressView(isChecked) + } + } + return super.onPreferenceChange(preference, newValue) + } + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { - Log.d(TAG, "MoFangPreferenceFragmentCompat --- onCreatePreferences ---") - setPreferencesFromResource(R.xml.operate_preference_details_mofang, rootKey) + setPreferencesFromResource(R.xml.operate_panel_preference_details_business, rootKey) } } - class VehiclesPreferenceFragmentCompat: PreferenceFragmentCompat() { - override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { - Log.d(TAG, "VehiclesPreferenceFragmentCompat --- onCreatePreferences ---") - setPreferencesFromResource(R.xml.operate_preference_details_vehicles, rootKey) + class MoFangPreferenceFragmentCompat : OperatePanelDetailBase(), IMoGoMoFangProvider.OnMoFangStatusListener { + + companion object { + private const val TAG = "MoFangPreferenceFragmentCompat" + private const val KEY_MOFANG_CONNECT = "mofang_connect" + private const val KEY_MOFANG_COMMAND_TEST = "mofang_command_test" } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + CallerDevaToolsManager.mofang()?.registerMoFangStatusListener(TAG, this) + } + + override fun onDestroyView() { + super.onDestroyView() + CallerDevaToolsManager.mofang()?.unRegisterMoFangStatusListener(this) + } + + override fun onMoFangConnected() { + preferenceScreen.findPreferenceReal(KEY_MOFANG_CONNECT)?.updateStatus(PreferenceWithMoFang.MoFangConnectStatus.CONNECTED) + } + + override fun onMoFangDisconnected() { + preferenceScreen.findPreferenceReal(KEY_MOFANG_CONNECT)?.updateStatus(PreferenceWithMoFang.MoFangConnectStatus.CONNECT_START) + } + + override fun onPreferenceClick(preference: Preference): Boolean { + Log.d(TAG, "mofang -> onPreferenceClick -> $preference") + when (preference.key) { + KEY_MOFANG_CONNECT -> { + val status = PreferenceWithMoFang.MoFangConnectStatus.values().find { it.ordinal == preference.extras.getInt(PreferenceWithMoFang.KEY_CURRENT_CONNECT_STATUS) } + when (status) { + PreferenceWithMoFang.MoFangConnectStatus.CONNECT_START -> { + CallerDevaToolsManager.mofang()?.connect() + } + PreferenceWithMoFang.MoFangConnectStatus.CONNECTED -> { + CallerDevaToolsManager.mofang()?.disconnect() + } + else -> { + Log.d(TAG, "-- onPreferenceClick else --:pref -> $preference") + } + } + return true + } + } + return super.onPreferenceClick(preference) + } + + override fun getDefaultVal(pref: Preference): Any? { + if (pref.key == KEY_MOFANG_CONNECT) { + val provider = CallerDevaToolsManager.mofang() + if (provider != null) { + return if (provider.isConnected()) { + PreferenceWithMoFang.MoFangConnectStatus.CONNECTED.ordinal + } else { + PreferenceWithMoFang.MoFangConnectStatus.CONNECT_START.ordinal + } + } + } else if (pref.key == KEY_MOFANG_COMMAND_TEST) { + return CallerDevaToolsManager.mofang()?.isEnableTest() ?: false + } + return super.getDefaultVal(pref) + } + + override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { + if (preference.key == KEY_MOFANG_COMMAND_TEST) { + val isChecked = newValue as? Boolean ?: false + CallerDevaToolsManager.mofang()?.enableTest(isChecked) + return true + } + return super.onPreferenceChange(preference, newValue) + } + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + setPreferencesFromResource(R.xml.operate_panel_preference_details_mofang, rootKey) + } + } + + class VehiclesPreferenceFragmentCompat : OperatePanelDetailBase() { + companion object { + private const val KEY_PNC_PARK_INTERSECTION_CAR = "pnc_park_intersection_car" + private const val KEY_PNC_PARK_OVERTAKE_CAR = "pnc_park_overtake_car" + private const val KEY_DETOUR_RETARD_PARK = "detour_retard_park" + private const val KEY_RAIN_DAY = "rain_day" + private const val KEY_FAULT_DECELERATION_PARK = "fault_deceleration_park" + private const val KEY_WEAK_NET_DECELERATION_PARK = "weak_net_deceleration_park" + private const val KEY_EXAM_FUNCTION_PANEL = "exam_function_panel" + private const val KEY_ALL_MERGE_MODE = "all_merge_mode" + private const val KEY_BLIND_AREA_MODE = "blind_area_mode" + private const val KEY_BEYOND_VISUAL_RANGE_MODE = "beyond_visual_range_mode" + private const val KEY_TRANSPARENT_TRANSFER_MODE = "transparent_transfer_mode" + private const val KEY_PURE_OBU_MODE = "pure_obu_mode" + private const val KEY_AUTO_PILOT_SPEED_THRESHOLDS = "auto_pilot_speed_thresholds" + private const val KEY_CHANGE_LANE_SPEED_THRESHOLDS = "change_lane_speed_thresholds" + private const val KEY_OVERTAKE_SPEED_THRESHOLDSS = "overtake_speed_thresholds" + } + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + setPreferencesFromResource(R.xml.operate_panel_preference_details_vehicles, rootKey) + } + + override fun isEnabled(pref: Preference): Boolean { + when (pref.key) { + KEY_AUTO_PILOT_SPEED_THRESHOLDS, KEY_OVERTAKE_SPEED_THRESHOLDSS -> { + return !AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) + } + } + return super.isEnabled(pref) + } + + override fun getDefaultVal(pref: Preference): Any? { + when (pref.key) { + KEY_PNC_PARK_INTERSECTION_CAR -> { + return FunctionBuildConfig.isOpenParkVehCross + } + KEY_PNC_PARK_OVERTAKE_CAR -> { + return FunctionBuildConfig.isOpenOvertake + } + KEY_DETOUR_RETARD_PARK -> { + return FunctionBuildConfig.isDetouring + } + KEY_RAIN_DAY -> { + return FunctionBuildConfig.isRainMode + } + KEY_WEAK_NET_DECELERATION_PARK -> { + return FunctionBuildConfig.isWeakNetSlowDown + } + KEY_FAULT_DECELERATION_PARK -> { + return FunctionBuildConfig.isFaultSlowDown + } + KEY_ALL_MERGE_MODE -> { + return FunctionBuildConfig.fusionMode == 1 + } + KEY_BLIND_AREA_MODE -> { + return FunctionBuildConfig.fusionMode == 2 + } + KEY_BEYOND_VISUAL_RANGE_MODE -> { + return FunctionBuildConfig.fusionMode == 3 + } + KEY_TRANSPARENT_TRANSFER_MODE -> { + return FunctionBuildConfig.fusionMode == 4 + } + KEY_PURE_OBU_MODE -> { + return FunctionBuildConfig.fusionMode == 5 + } + KEY_CHANGE_LANE_SPEED_THRESHOLDS -> { + return setOf("3.0", "7.0", "${FunctionBuildConfig.detouringSpeed}", "0.5") + } + KEY_OVERTAKE_SPEED_THRESHOLDSS -> { + return setOf("3.0", "12.5", "${FunctionBuildConfig.overTakeSpeed}", "0.5") + } + KEY_AUTO_PILOT_SPEED_THRESHOLDS -> { //TODO renwj 自动驾驶速度阈值,旧版本没有看到 + } + } + return super.getDefaultVal(pref) + } + + override fun onPreferenceClick(preference: Preference): Boolean { + Log.d(TAG, "-- onPreferenceClick --:pref -> $preference") + when (preference.key) { + KEY_AUTO_PILOT_SPEED_THRESHOLDS -> { + FunctionBuildConfig.detouringSpeed = preference.extras.getFloat(PreferenceWithSpeedSetting.KEY_BUNDLE_CURRENT_VALUE, FunctionBuildConfig.detouringSpeed.toFloat()).toInt() + hmiAction("SOP 变道绕障的目标障碍物速度阈值", FunctionBuildConfig.detouringSpeed) + val isSuccess = CallerAutoPilotControlManager.sendDetouringSpeed(FunctionBuildConfig.detouringSpeed.toDouble()) + if (isSuccess == true) { + ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置成功") + hmiAction("SOP 变道绕障的目标障碍物速度阈值设置", "成功") + } else { + ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置失败") + hmiAction("SOP 变道绕障的目标障碍物速度阈值设置", "失败") + } + clickEventAnalytics("变道速度阈值", true) + } + KEY_OVERTAKE_SPEED_THRESHOLDSS -> { + FunctionBuildConfig.overTakeSpeed = preference.extras.getFloat(PreferenceWithSpeedSetting.KEY_BUNDLE_CURRENT_VALUE, FunctionBuildConfig.overTakeSpeed) + val isSuccess = CallerAutoPilotControlManager.sendOvertakeMaxSpeed(FunctionBuildConfig.overTakeSpeed.toDouble()) + if (isSuccess == true) { + ToastUtils.showShort("SOP 超车目标障碍物速度阈值设置成功") + hmiAction("SOP 超车目标障碍物速度阈值设置", "成功") + } else { + ToastUtils.showShort("SOP 超车目标障碍物速度阈值设置失败") + hmiAction("SOP 超车目标障碍物速度阈值设置", "失败") + } + clickEventAnalytics("超车速度阈值", true) + } + } + return super.onPreferenceClick(preference) + } + + override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { + when (preference.key) { + KEY_PNC_PARK_INTERSECTION_CAR -> { + val isChecked = newValue as? Boolean ?: false + hmiAction("SOP PNC-park-会车, ", isChecked) + CallerAutoPilotControlManager.sendParkVehCross(isChecked) + FunctionBuildConfig.isOpenParkVehCross = isChecked + } + KEY_PNC_PARK_OVERTAKE_CAR -> { + val isChecked = newValue as? Boolean ?: false + hmiAction("SOP PNC-park-超车, ", isChecked) + CallerAutoPilotControlManager.sendParkVehOvertake(isChecked) + FunctionBuildConfig.isOpenOvertake = isChecked + } + KEY_DETOUR_RETARD_PARK -> { + val isChecked = newValue as? Boolean ?: false + hmiAction("SOP 绕障类功能开关, ", isChecked) + CallerAutoPilotControlManager.sendDetouring(isChecked) + FunctionBuildConfig.isDetouring = isChecked + clickEventAnalytics("绕障类功能", isChecked) + } + KEY_RAIN_DAY -> { + val isChecked = newValue as? Boolean ?: false + hmiAction("SOP 雨天模式开关, ", isChecked) + clickEventAnalytics("雨天模式", isChecked) + FunctionBuildConfig.isRainMode = isChecked + CallerAutoPilotControlManager.setRainMode(isChecked) + CallerHmiViewControlListenerManager.invokeFuncMode(FUNC_MODE_RAIN, isChecked) + CallerSopSettingManager.invokeRainModeListener(isChecked) + } + KEY_WEAK_NET_DECELERATION_PARK -> { + val isChecked = newValue as? Boolean ?: false + FunctionBuildConfig.isWeakNetSlowDown = isChecked + CallerAutoPilotControlManager.sendWeakNetSlowDown(isChecked) + hmiAction("SOP 弱网减速停车, ", isChecked) + clickEventAnalytics("弱网减速停车", isChecked) + } + KEY_FAULT_DECELERATION_PARK -> { + val isChecked = newValue as? Boolean ?: false + FunctionBuildConfig.isFaultSlowDown = isChecked + CallerAutoPilotControlManager.sendBreakdownSlowDown(isChecked) + hmiAction("SOP 故障减速停车, ", isChecked) + clickEventAnalytics("故障减速停车", isChecked) + } + KEY_EXAM_FUNCTION_PANEL -> { + val isChecked = newValue as? Boolean ?: false + FunctionBuildConfig.isShowExamWindow = isChecked + CallerDevaToolsManager.showExamControlWindow(isChecked) + hmiAction("SOP 考试功能面板, ", isChecked) + clickEventAnalytics("考试功能面板", isChecked) + } + KEY_ALL_MERGE_MODE -> { + FunctionBuildConfig.fusionMode = 1 + hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode) + clickEventAnalytics("融合模式", true) + CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode) + } + KEY_BLIND_AREA_MODE -> { + FunctionBuildConfig.fusionMode = 2 + hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode) + clickEventAnalytics("融合模式", true) + CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode) + } + KEY_BEYOND_VISUAL_RANGE_MODE -> { + FunctionBuildConfig.fusionMode = 3 + hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode) + clickEventAnalytics("融合模式", true) + CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode) + } + KEY_TRANSPARENT_TRANSFER_MODE -> { + FunctionBuildConfig.fusionMode = 4 + hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode) + clickEventAnalytics("融合模式", true) + CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode) + } + KEY_PURE_OBU_MODE -> { + FunctionBuildConfig.fusionMode = 5 + hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode) + clickEventAnalytics("融合模式", true) + CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode) + } + } + return super.onPreferenceChange(preference, newValue) + } + } + + class WelcomeWordsPreferenceCompat : OperatePanelDetailBase() { + + + companion object { + private const val KEY_WELCOME_WORDS = "welcome_words" + } + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + setPreferencesFromResource(R.xml.operate_panel_preference_details_welcome_words, rootKey) + } + + override fun getDefaultVal(pref: Preference): Any? { + if (pref.key == KEY_WELCOME_WORDS) { + return FunctionBuildConfig.welcomeWords + } + return super.getDefaultVal(pref) + } + + override fun onPreferenceClick(preference: Preference): Boolean { + if (preference.key == KEY_WELCOME_WORDS) { + FunctionBuildConfig.welcomeWords = preference.extras.getString(PreferenceWithWelcomeWords.KEY_BUNDLE_CURRENT_EDIT_TEXT_VALUE) + hmiAction("外屏欢迎语", FunctionBuildConfig.welcomeWords ?: "") + clickEventAnalytics("外屏欢迎语", true) + } + return super.onPreferenceClick(preference) + } + } constructor(context: Context) : this(context, null) constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0) constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { orientation = VERTICAL - Log.d(TAG, "--- init ----") LayoutInflater.from(context).inflate(R.layout.layout_operate_panel, this, true) background = ContextCompat.getDrawable(context, R.drawable.bg_operate_panel) iv_operate_panel_close?.onClick { CallerHmiManager.toggleOperatePanel(false) } - } - - override fun onAttachedToWindow() { - super.onAttachedToWindow() - Log.d(TAG, "--- onAttachedToWindow ---") - } - - override fun onDetachedFromWindow() { - super.onDetachedFromWindow() - Log.d(TAG, "--- onDetachedFromWindow ---") + isClickable = true } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithMoFang.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithMoFang.kt new file mode 100644 index 0000000000..9c8cc6b8e2 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithMoFang.kt @@ -0,0 +1,69 @@ +package com.mogo.eagle.core.function.hmi.ui.operate.preferences + +import android.content.Context +import android.util.AttributeSet +import androidx.core.content.ContextCompat +import androidx.preference.Preference +import androidx.preference.PreferenceViewHolder +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.kotlin.onClick + +class PreferenceWithMoFang: Preference { + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + constructor(context: Context) : super(context) + + companion object { + const val KEY_CURRENT_CONNECT_STATUS = "key_mofang_connect_status" + } + + enum class MoFangConnectStatus { + CONNECT_START, + CONNECTED, + CONNECTING + } + + private var status: MoFangConnectStatus? = null + + override fun setDefaultValue(defaultValue: Any?) { + super.setDefaultValue(defaultValue) + status = MoFangConnectStatus.values().find { it.ordinal == defaultValue } + notifyChanged() + } + + fun updateStatus(status: MoFangConnectStatus) { + this.status = status + notifyChanged() + } + + override fun onBindViewHolder(holder: PreferenceViewHolder) { + super.onBindViewHolder(holder) + val stats = this.status ?: return + val btConnect = holder.findViewById(R.id.bt_mofang) + btConnect.setOnClickListener(null) + when(stats) { + MoFangConnectStatus.CONNECT_START -> { + btConnect.isEnabled = true + btConnect.background = ContextCompat.getDrawable(holder.itemView.context, R.drawable.icon_operate_panel_mofang_connect_start) + btConnect.onClick { + extras.putInt(KEY_CURRENT_CONNECT_STATUS, stats.ordinal) + onPreferenceClickListener?.onPreferenceClick(this) + } + } + MoFangConnectStatus.CONNECTED -> { + btConnect.isEnabled = true + btConnect.background = ContextCompat.getDrawable(holder.itemView.context, R.drawable.icon_operate_panel_mofang_disconnect) + btConnect.onClick { + extras.putInt(KEY_CURRENT_CONNECT_STATUS, stats.ordinal) + onPreferenceClickListener?.onPreferenceClick(this) + } + } + MoFangConnectStatus.CONNECTING -> { + btConnect.isEnabled = false + btConnect.background = ContextCompat.getDrawable(holder.itemView.context, R.drawable.icon_operate_panel_mofang_connect_doing) + } + } + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithSpeedSetting.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithSpeedSetting.kt new file mode 100644 index 0000000000..aa5d4c529d --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithSpeedSetting.kt @@ -0,0 +1,95 @@ +package com.mogo.eagle.core.function.hmi.ui.operate.preferences + +import android.content.Context +import android.util.AttributeSet +import android.widget.TextView +import androidx.preference.Preference +import androidx.preference.PreferenceViewHolder +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.kotlin.onClick +import com.mogo.eagle.core.utilcode.util.ToastUtils +import kotlin.math.max + +class PreferenceWithSpeedSetting : Preference { + + companion object { + const val KEY_BUNDLE_CURRENT_VALUE = "key_bundle_current_val" + } + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + constructor(context: Context) : super(context) + + private var mDefaultValueSet: Any? = null + + override fun setDefaultValue(defaultValue: Any?) { + super.setDefaultValue(defaultValue) + mDefaultValueSet = defaultValue + notifyChanged() + } + + override fun onBindViewHolder(holder: PreferenceViewHolder) { + super.onBindViewHolder(holder) + val defaultSet = mDefaultValueSet ?: return + if (defaultSet !is Set<*> || defaultSet.size != 4) { + throw AssertionError() + } + val min = (defaultSet.elementAt(0) as String).toFloat() + val max = (defaultSet.elementAt(1) as String).toFloat() + var cur = (defaultSet.elementAt(2) as String).toFloat() + val step = (defaultSet.elementAt(3) as String).toFloat() + if (min > max) { + throw AssertionError() + } + if (min > cur) { + throw AssertionError() + } + if (cur > max) { + throw AssertionError() + } + val ll = holder.findViewById(R.id.ll_speed) + val btnOk = holder.findViewById(R.id.bt_ok) + val speedLimit = holder.findViewById(R.id.tv_speed_limit) as? TextView + if (speedLimit?.tag != null && speedLimit.tag is Float) { + cur = max(cur, speedLimit.tag as Float) + } + speedLimit?.text = cur.toString() + val minus = holder.findViewById(R.id.iv_speed_minus) + minus.setOnClickListener(null) + minus.onClick { + val minusAfter = cur - step + if (minusAfter < min) { + ToastUtils.showShort("阈值最小可为${min}m/s") + return@onClick + } + cur = minusAfter + btnOk.isEnabled = true + ll.isSelected = true + speedLimit?.tag = minusAfter + speedLimit?.text = minusAfter.toString() + } + val add = holder.findViewById(R.id.iv_speed_add) + add.setOnClickListener(null) + add.onClick { + val addAfter = cur + step + if (addAfter > max) { + ToastUtils.showShort("阈值最大可为${max}m/s") + return@onClick + } + cur = addAfter + ll.isSelected = true + btnOk.isEnabled = true + speedLimit?.tag = addAfter + speedLimit?.text = addAfter.toString() + } + btnOk.isEnabled = false + btnOk.setOnClickListener(null) + btnOk.onClick { + onPreferenceClickListener?.also { + extras.putFloat(KEY_BUNDLE_CURRENT_VALUE, cur) + it.onPreferenceClick(this) + } + } + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithUnmanInterval.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithUnmanInterval.kt new file mode 100644 index 0000000000..70672af2b0 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithUnmanInterval.kt @@ -0,0 +1,103 @@ +package com.mogo.eagle.core.function.hmi.ui.operate.preferences + +import android.content.Context +import android.util.AttributeSet +import android.util.Log +import android.widget.CompoundButton +import android.widget.RadioButton +import android.widget.RadioGroup +import androidx.preference.Preference +import androidx.preference.PreferenceViewHolder +import com.mogo.eagle.core.function.hmi.R + +class PreferenceWithUnmanInterval: Preference, RadioGroup.OnCheckedChangeListener { + + companion object { + const val KEY_BUNDLE_CURRENT_INTERVAL = "key_bundle_unman_interval" + private const val TAG = "PreferenceWithUnmanInterval" + } + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + constructor(context: Context) : super(context) + + enum class Interval { + FIVE_SECOND, + FIFTEEN_SECOND, + THIRTY_SECOND, + FORTY_FIVE_SECOND, + NEVER + } + + + private var interval: Interval? = null + + override fun setDefaultValue(defaultValue: Any?) { + super.setDefaultValue(defaultValue) + Log.d(TAG, "--- setDefaultValue 1 ---:defaultValue -> $defaultValue") + if (defaultValue is Int) { + interval = when(defaultValue) { + 5 -> Interval.FIVE_SECOND + 15 -> Interval.FIFTEEN_SECOND + 30 -> Interval.THIRTY_SECOND + 45 -> Interval.FORTY_FIVE_SECOND + else -> Interval.NEVER + } + } + } + + override fun onBindViewHolder(holder: PreferenceViewHolder) { + super.onBindViewHolder(holder) + Log.d(TAG, "--- onBindViewHolder 1 ---:interval -> $interval") + val temp = interval?: return + Log.d(TAG, "--- onBindViewHolder 2 --- ") + val five = holder.findViewById(R.id.rb_5s) as? RadioButton + val fifteen = holder.findViewById(R.id.rb_15s) as? RadioButton + val thirty = holder.findViewById(R.id.rb_30s) as? RadioButton + val forty_five = holder.findViewById(R.id.rb_45s) as? RadioButton + val never = holder.findViewById(R.id.rb_never) as? RadioButton + when(temp) { + Interval.FIVE_SECOND -> five?.isChecked = true + Interval.FIFTEEN_SECOND -> fifteen?.isChecked = true + Interval.THIRTY_SECOND -> thirty?.isChecked = true + Interval.FORTY_FIVE_SECOND -> forty_five?.isChecked = true + Interval.NEVER -> never?.isChecked = true + } + + (holder.findViewById(R.id.rg_root) as? RadioGroup)?.also { + it.setOnCheckedChangeListener(this) + } + } + + override fun onCheckedChanged(group: RadioGroup?, checkedId: Int) { + Log.d(TAG, "--- onCheckedChanged --- ") + when(checkedId) { + R.id.rb_5s -> { + Log.d(TAG, "--- onCheckedChanged 5s--- ") + extras.putInt(KEY_BUNDLE_CURRENT_INTERVAL, Interval.FIVE_SECOND.ordinal) + onPreferenceClickListener?.onPreferenceClick(this) + } + R.id.rb_15s -> { + Log.d(TAG, "--- onCheckedChanged 15s--- ") + extras.putInt(KEY_BUNDLE_CURRENT_INTERVAL, Interval.FIFTEEN_SECOND.ordinal) + onPreferenceClickListener?.onPreferenceClick(this) + } + R.id.rb_30s -> { + Log.d(TAG, "--- onCheckedChanged 30s--- ") + extras.putInt(KEY_BUNDLE_CURRENT_INTERVAL, Interval.THIRTY_SECOND.ordinal) + onPreferenceClickListener?.onPreferenceClick(this) + } + R.id.rb_45s -> { + Log.d(TAG, "--- onCheckedChanged 45s--- ") + extras.putInt(KEY_BUNDLE_CURRENT_INTERVAL, Interval.FORTY_FIVE_SECOND.ordinal) + onPreferenceClickListener?.onPreferenceClick(this) + } + R.id.rb_never -> { + Log.d(TAG, "--- onCheckedChanged never--- ") + extras.putInt(KEY_BUNDLE_CURRENT_INTERVAL, Interval.NEVER.ordinal) + onPreferenceClickListener?.onPreferenceClick(this) + } + } + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithWelcomeWords.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithWelcomeWords.kt new file mode 100644 index 0000000000..cb6cd99e79 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithWelcomeWords.kt @@ -0,0 +1,56 @@ +package com.mogo.eagle.core.function.hmi.ui.operate.preferences + +import android.content.Context +import android.text.TextUtils +import android.util.AttributeSet +import android.widget.EditText +import androidx.core.widget.doOnTextChanged +import androidx.preference.Preference +import androidx.preference.PreferenceViewHolder +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.kotlin.onClick + +class PreferenceWithWelcomeWords: Preference { + + companion object { + const val KEY_BUNDLE_CURRENT_EDIT_TEXT_VALUE = "key_bundle_current_edit_text" + } + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + constructor(context: Context) : super(context) + + + private var mCurrentWelcomeWords: String? = null + + override fun setDefaultValue(defaultValue: Any?) { + super.setDefaultValue(defaultValue) + if (defaultValue is String) { + mCurrentWelcomeWords = defaultValue + notifyChanged() + } + } + + override fun onBindViewHolder(holder: PreferenceViewHolder) { + 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 + et?.doOnTextChanged { text, _, _, _ -> + if (!TextUtils.isEmpty(text)) { + btn_ok?.isEnabled = true + } else { + btn_ok?.isEnabled = false + } + } + if (!TextUtils.isEmpty(currentWelcomeWords)) { + et?.setText(currentWelcomeWords) + } + btn_ok.onClick { + extras.putString(KEY_BUNDLE_CURRENT_EDIT_TEXT_VALUE, et?.text.toString()) + onPreferenceClickListener?.onPreferenceClick(this) + } + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index c5acc363ee..d131746232 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -143,21 +143,21 @@ internal class SOPSettingView @JvmOverloads constructor( */ private fun v2xSetting() { //V2X总开关 - scV2XSwitch.isChecked = FunctionBuildConfig.v2xMainSwitch + scV2XSwitch.isChecked = FunctionBuildConfig.v2xTotalSwitch scV2XSwitch.setOnCheckedChangeListener { _, isChecked -> - FunctionBuildConfig.v2xMainSwitch = isChecked + FunctionBuildConfig.v2xTotalSwitch = isChecked hmiAction("SOP V2X总开关, ", isChecked) clickEventAnalytics("V2X总开关",isChecked) if (isChecked) { //V2N总开关 - scV2NSwitch.isChecked = FunctionBuildConfig.v2nMainSwitch - hmiAction("SOP V2N总开关, ", FunctionBuildConfig.v2nMainSwitch) + scV2NSwitch.isChecked = FunctionBuildConfig.v2nTotalSwitch + hmiAction("SOP V2N总开关, ", FunctionBuildConfig.v2nTotalSwitch) //V2I总开关 - scV2ISwitch.isChecked = HmiBuildConfig.isShowObuV2iView - hmiAction("SOP V2I总开关, ", HmiBuildConfig.isShowObuV2iView) + scV2ISwitch.isChecked = HmiBuildConfig.v2iTotalSwitch + hmiAction("SOP V2I总开关, ", HmiBuildConfig.v2iTotalSwitch) //V2V总开关 - scObuV2vView.isChecked = HmiBuildConfig.isShowObuV2vView - hmiAction("SOP V2V总开关, ", HmiBuildConfig.isShowObuV2vView) + scObuV2vView.isChecked = HmiBuildConfig.v2vTotalSwitch + hmiAction("SOP V2V总开关, ", HmiBuildConfig.v2vTotalSwitch) //obu总开关 scObu.isChecked = obuConnectStatus hmiAction("SOP obu总开关, ", obuConnectStatus) @@ -187,24 +187,24 @@ internal class SOPSettingView @JvmOverloads constructor( } //V2N总开关 - scV2NSwitch.isChecked = FunctionBuildConfig.v2nMainSwitch + scV2NSwitch.isChecked = FunctionBuildConfig.v2nTotalSwitch //根据V2N状态设置子开关是否可以点击 //V2N新链路 - scNewV2NData.isEnabled = FunctionBuildConfig.v2nMainSwitch + scNewV2NData.isEnabled = FunctionBuildConfig.v2nTotalSwitch //V2N场景进PNC - scV2nPnc.isEnabled = FunctionBuildConfig.v2nMainSwitch + scV2nPnc.isEnabled = FunctionBuildConfig.v2nTotalSwitch //绿波通行(默认关闭) - scGreenWaveSop.isEnabled = FunctionBuildConfig.v2nMainSwitch + scGreenWaveSop.isEnabled = FunctionBuildConfig.v2nTotalSwitch scV2NSwitch.setOnCheckedChangeListener { compoundButton, isChecked -> clickEventAnalytics("V2N总开关",isChecked) if (isChecked) { //V2N新链路 - scNewV2NData.isChecked = FunctionBuildConfig.isNewV2NData - hmiAction("SOP 是否是V2N新链路(云->工控机->App)", FunctionBuildConfig.isNewV2NData) + scNewV2NData.isChecked = FunctionBuildConfig.v2nNewLinked + hmiAction("SOP 是否是V2N新链路(云->工控机->App)", FunctionBuildConfig.v2nNewLinked) //V2N场景进PNC - scV2nPnc.isChecked = FunctionBuildConfig.isV2NPnc - hmiAction("SOP V2N场景进PNC, ", FunctionBuildConfig.isV2NPnc) - CallerAutoPilotControlManager.sendV2nToPncCmd(FunctionBuildConfig.isV2NPnc) + scV2nPnc.isChecked = FunctionBuildConfig.v2nNewLinkedToPNC + hmiAction("SOP V2N场景进PNC, ", FunctionBuildConfig.v2nNewLinkedToPNC) + CallerAutoPilotControlManager.sendV2nToPncCmd(FunctionBuildConfig.v2nNewLinkedToPNC) //绿波通行 scGreenWaveSop.isChecked = HmiBuildConfig.isShowGreenWaveView hmiAction("SOP obu绿波通行, ", HmiBuildConfig.isShowGreenWaveView) @@ -234,37 +234,37 @@ internal class SOPSettingView @JvmOverloads constructor( if (!compoundButton.isPressed) { return@setOnCheckedChangeListener } - FunctionBuildConfig.v2nMainSwitch = isChecked + FunctionBuildConfig.v2nTotalSwitch = isChecked val map = HashMap().also { it["f1"] = isChecked - it["f2"] = FunctionBuildConfig.isNewV2NData + it["f2"] = FunctionBuildConfig.v2nNewLinked } CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, GsonUtils.toJson(map).toByteArray()) } //V2I总开关 - scV2ISwitch.isChecked = HmiBuildConfig.isShowObuV2iView //是否展示obu的v2i + scV2ISwitch.isChecked = HmiBuildConfig.v2iTotalSwitch //是否展示obu的v2i //根据V2I状态设置子开关是否可以点击 - scV2iPnc.isEnabled = HmiBuildConfig.isShowObuV2iView - scRunRedLightSop.isEnabled = HmiBuildConfig.isShowObuV2iView - scObuWeaknessTrafficSop.isEnabled = HmiBuildConfig.isShowObuV2iView + scV2iPnc.isEnabled = HmiBuildConfig.v2iTotalSwitch + scRunRedLightSop.isEnabled = HmiBuildConfig.v2iTotalSwitch + scObuWeaknessTrafficSop.isEnabled = HmiBuildConfig.v2iTotalSwitch scV2ISwitch.setOnCheckedChangeListener { compoundButton, isChecked -> clickEventAnalytics("V2I总开关",isChecked) if (isChecked) { //V2I场景进PNC - scV2iPnc.isChecked = FunctionBuildConfig.isV2IPnc - hmiAction("SOP V2I场景进PNC, ", FunctionBuildConfig.isV2IPnc) - CallerAutoPilotControlManager.sendV2iToPncCmd(FunctionBuildConfig.isV2IPnc) + scV2iPnc.isChecked = FunctionBuildConfig.v2iToPNC + hmiAction("SOP V2I场景进PNC, ", FunctionBuildConfig.v2iToPNC) + CallerAutoPilotControlManager.sendV2iToPncCmd(FunctionBuildConfig.v2iToPNC) //闯红灯预警 - scRunRedLightSop.isChecked = HmiBuildConfig.isShowRunRedLightView - hmiAction("SOP obu闯红灯预警, ", HmiBuildConfig.isShowRunRedLightView) + scRunRedLightSop.isChecked = HmiBuildConfig.v2iRedLightWarning + hmiAction("SOP obu闯红灯预警, ", HmiBuildConfig.v2iRedLightWarning) CallerTelematicManager.sendMsgToAllClients( TelematicConstant.OBU_RUNREDLIGHT_WARNING, "1".toByteArray() ) //路侧弱势交通参与者 - scObuWeaknessTrafficSop.isChecked = HmiBuildConfig.isShowObuWeaknessTrafficView - hmiAction("SOP obu弱势交通控制, ", HmiBuildConfig.isShowObuWeaknessTrafficView) + scObuWeaknessTrafficSop.isChecked = HmiBuildConfig.v2iWeaknessTraffic + hmiAction("SOP obu弱势交通控制, ", HmiBuildConfig.v2iWeaknessTraffic) } else { //V2I场景进PNC scV2iPnc.isChecked = false @@ -287,28 +287,28 @@ internal class SOPSettingView @JvmOverloads constructor( if (!compoundButton.isPressed) { return@setOnCheckedChangeListener } - HmiBuildConfig.isShowObuV2iView = isChecked + HmiBuildConfig.v2iTotalSwitch = isChecked } //V2N新链路 - scNewV2NData.isChecked = FunctionBuildConfig.isNewV2NData + scNewV2NData.isChecked = FunctionBuildConfig.v2nNewLinked scNewV2NData.setOnCheckedChangeListener { compoundButton, isChecked -> if (!compoundButton.isPressed) { return@setOnCheckedChangeListener } clickEventAnalytics("V2N新链路",isChecked) hmiAction("SOP 是否是V2N新链路(云->工控机->App)", isChecked) - FunctionBuildConfig.isNewV2NData = isChecked + FunctionBuildConfig.v2nNewLinked = isChecked val map = HashMap().also { - it["f1"] = FunctionBuildConfig.v2nMainSwitch + it["f1"] = FunctionBuildConfig.v2nTotalSwitch it["f2"] = isChecked } CallerTelematicManager.sendMsgToAllClients(TelematicConstant.V2N_NEW_LINK_SWITCH, GsonUtils.toJson(map).toByteArray()) } //V2N场景进PNC - scV2nPnc.isChecked = FunctionBuildConfig.isV2NPnc + scV2nPnc.isChecked = FunctionBuildConfig.v2nNewLinkedToPNC scV2nPnc.setOnCheckedChangeListener { compoundButton, isChecked -> if (!compoundButton.isPressed) { return@setOnCheckedChangeListener @@ -316,7 +316,7 @@ internal class SOPSettingView @JvmOverloads constructor( clickEventAnalytics("V2N场景进PNC",isChecked) hmiAction("SOP V2N场景进PNC, ", isChecked) CallerAutoPilotControlManager.sendV2nToPncCmd(isChecked) - FunctionBuildConfig.isV2NPnc = isChecked + FunctionBuildConfig.v2nNewLinkedToPNC = isChecked } //绿波通行(默认关闭) @@ -342,7 +342,7 @@ internal class SOPSettingView @JvmOverloads constructor( } //V2I场景进PNC - scV2iPnc.isChecked = FunctionBuildConfig.isV2IPnc + scV2iPnc.isChecked = FunctionBuildConfig.v2iToPNC scV2iPnc.setOnCheckedChangeListener { compoundButton, isChecked -> if (!compoundButton.isPressed) { return@setOnCheckedChangeListener @@ -350,19 +350,19 @@ internal class SOPSettingView @JvmOverloads constructor( clickEventAnalytics("V2I场景进PNC",isChecked) hmiAction("SOP V2I场景进PNC, ", isChecked) CallerAutoPilotControlManager.sendV2iToPncCmd(isChecked) - FunctionBuildConfig.isV2IPnc = isChecked + FunctionBuildConfig.v2iToPNC = isChecked } //闯红灯预警(默认关闭) - scRunRedLightSop.isChecked = HmiBuildConfig.isShowRunRedLightView + scRunRedLightSop.isChecked = HmiBuildConfig.v2iRedLightWarning scRunRedLightSop.setOnCheckedChangeListener { compoundButton, isChecked -> if (!compoundButton.isPressed) { return@setOnCheckedChangeListener } clickEventAnalytics("闯红灯预警",isChecked) hmiAction("SOP obu闯红灯预警, ", isChecked) - HmiBuildConfig.isShowRunRedLightView = isChecked - if (HmiBuildConfig.isShowRunRedLightView) { + HmiBuildConfig.v2iRedLightWarning = isChecked + if (HmiBuildConfig.v2iRedLightWarning) { CallerTelematicManager.sendMsgToAllClients( TelematicConstant.OBU_RUNREDLIGHT_WARNING, "1".toByteArray() @@ -376,25 +376,25 @@ internal class SOPSettingView @JvmOverloads constructor( } //路侧弱势交通参与者(默认开启) - scObuWeaknessTrafficSop.isChecked = HmiBuildConfig.isShowObuWeaknessTrafficView + scObuWeaknessTrafficSop.isChecked = HmiBuildConfig.v2iWeaknessTraffic scObuWeaknessTrafficSop.setOnCheckedChangeListener { compoundButton, isChecked -> if (!compoundButton.isPressed) { return@setOnCheckedChangeListener } clickEventAnalytics("路侧弱势交通参与者",isChecked) hmiAction("SOP obu弱势交通控制, ", isChecked) - HmiBuildConfig.isShowObuWeaknessTrafficView = isChecked + HmiBuildConfig.v2iWeaknessTraffic = isChecked } //V2V总开关(默认关闭) - scObuV2vView.isChecked = HmiBuildConfig.isShowObuV2vView + scObuV2vView.isChecked = HmiBuildConfig.v2vTotalSwitch scObuV2vView.setOnCheckedChangeListener { compoundButton, isChecked -> if (!compoundButton.isPressed) { return@setOnCheckedChangeListener } clickEventAnalytics("V2V总开关",isChecked) hmiAction("SOP obuV2V开关, ", isChecked) - HmiBuildConfig.isShowObuV2vView = isChecked + HmiBuildConfig.v2vTotalSwitch = isChecked } //obu总开关 @@ -599,7 +599,7 @@ internal class SOPSettingView @JvmOverloads constructor( scExamControl.isChecked = FunctionBuildConfig.isShowExamWindow scExamControl.setOnCheckedChangeListener { _, isChecked -> FunctionBuildConfig.isShowExamWindow = isChecked - CallerDevaToolsManager.showExamControlWindow(this,isChecked) + CallerDevaToolsManager.showExamControlWindow(isChecked) hmiAction("SOP 考试功能面板, ", isChecked) clickEventAnalytics("考试功能面板",isChecked) } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/viewport/VisualAngleToggleView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/viewport/VisualAngleToggleView.kt index 4c49110a97..8cb7971cd9 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/viewport/VisualAngleToggleView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/viewport/VisualAngleToggleView.kt @@ -15,7 +15,6 @@ import com.mogo.eagle.core.function.angle.scenes.Default import com.mogo.eagle.core.function.angle.scenes.LongSight import com.mogo.eagle.core.function.api.map.angle.IMoGoVisualAngleChangeProvider import com.mogo.eagle.core.function.api.map.angle.Scene -import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.kotlin.scope @@ -85,8 +84,6 @@ class VisualAngleToggleView : FrameLayout, IMoGoVisualAngleChangeProvider.OnMoGo override fun onAnimationEnd(animation: Animator, isReverse: Boolean) { super.onAnimationEnd(animation, isReverse) iv_toggle_block?.isEnabled = true - //TODO renwj - CallerHmiManager.toggleOperatePanel(false) } }) animator.interpolator = AccelerateDecelerateInterpolator() @@ -114,8 +111,6 @@ class VisualAngleToggleView : FrameLayout, IMoGoVisualAngleChangeProvider.OnMoGo override fun onAnimationEnd(animation: Animator, isReverse: Boolean) { iv_toggle_block?.isEnabled = true - //TODO renwj - CallerHmiManager.toggleOperatePanel(true) } }) animator.interpolator = AccelerateDecelerateInterpolator() diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_add.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_add.png new file mode 100644 index 0000000000000000000000000000000000000000..57787b878654d4b6b48966ef9c943e8e191c8299 GIT binary patch literal 727 zcmeAS@N?(olHy`uVBq!ia0vp^At21b1|(&&1r7o!#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyy~KS-^~7gA{JhIP1W`z~t!Z;uuoF z`1a;TufqW%$3D8b6b6X19}P5*ci?*TMnOZ5&#rs&g2fhABJ4*`nirIm7EV-pv?8PM z^#bodOkzt+%(wl`^LS}ru;T1VTg&g)vxP53_3|>Z2skj{AUL>|WLhn?2->3&)s=lT zs6gOk4dX*ok-O2s)@h&IC%)8F*m5-Qr2TvTD!x?*&UJEqnQ;A3RGiaq=bZ;O{8*{g z?8mlD{uFE5QU6d$lYeiN=P(8sYb|J)#d_vx#6p79A{(~L%@1t9?p!!Se$oA>2X5%j zO;((s?^XM{f&HlKB$c;|ntz{E|0@$yvPNy@)!l(_#AKr<{@MI%1^3sxSNnfkm&Et> za;2s1SY&bTUqNo(1>f*w)oUBSyeh7g7gN)IKAn~6St@nzbA;p9r~g(w z+ob(x_2!cvTQ~9l3$UGU{W^O6r@6=K)_+@FWqQm+nKkj$N_e=VIC%!r^mHl^m|J5fNS6Q$8$z`WYVqhIp;WphfZ?=Dy vJ-X&mnE$KybH1)@Wnkh^XuwH0++?zMySUln;gTe~DWM4f$X_Ss literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_checkbox_checked.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_checkbox_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..70f4ea6db7de3fe8ac779dac7934a445569e72d6 GIT binary patch literal 6178 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 AEC2ui literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_checkbox_disabled.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_checkbox_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..796b2bbb7a1f248b4e01c3f5a089c2a88d5ccb65 GIT binary patch literal 2485 zcmV;m2}<^fP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91P@n?<1ONa40RR91Pyhe`05RZ9PXGW3A4x<(RCodHU0rBYM-4O%cv>2=) zeQF8|*4QexmS91`YD6&+)9<^^-rRfcnf=Lbes=F2nA|yM&di+i?fl)jGm}`w0=kx# zmQ^UeAr_0(NmPK$ zBY=4x>HAPKf5DRg&zYMu0Gpeet7>a&KY=k{LHoKnvmkTEckrVf9UmV*Jv21*EVJnB zVv7zSn`vcbtCs8KZq5#<1+PV&k zoq&P6G8N{Ddx-Eb(l{MI47ve2-@b}{>pMu79*`OlUJ0Moq1+2-CGCBEeg9+?&LU7S zfBzy$V+j=%k73Zs$;ruM=zlnen{x-<)I-uKR zCOKQ&tN?_9wNUUP6x?dd7<`U;-RQWxq1<=|xjBoXo@lB^Pyl_EtssDS9U$(Ujh=Y} z*w)te27tQ^W!V3y4hmg@Z$ES9%wMX&JTv$0+qVHa_rUMSQ1lJx{6T+z|Gybz0#SJZ z2u12K8vcY_-VEgQk}&}#4nTN>!CAyNSY+;@5^T-2Cgud7=}WGmK(*PTz(LIRKPmReYB8{2 zws}iBjoR2^$?OLD?)P%(6SD#c@HpBIqcGcmaU4^DFQG`j^Eiv{^Tv*03icgJ`&=s# zm4X9HW46&bt|j*J03N3*Ht;$D-WQNBHSlQSw9&njgmko-woAUGUy%$iZ6?XxUY;k+ zn)i)|F3DgrnY@}vBwmB^TNDE}BMu_TKa@C!Wo^QIJ%hyW@PRiB_Ic=J+YncZHP10z z{E1_@HB`ot90FyFPk_F0=SGUK8^06g$UIAGveF5nT%X=Bp}3E^rmp!5iyOR4~x zRTXVvV1iSXQWiw~LraKIs5}7;d zl9J4Fr;W{zrJV*Nclzf7h*5^09_wTRROgeqyc5cFrB2gk+OF79XRvajTmV7sSA?gy zlC1DU!7{c_DaN{3IRKie3qN}M9IEROeu;TmhW8b`NC?_a45T`!nS0Vx8V5kL-C~6l z1l_0b!p71tSYa@8C(=y{Di8VfOyP%$Wia4pSm_+h;^d-AY5)$G<13p)AscNl7?yHr z%;FePRv|JW1<>~S(K~WLz=B1B*s%uk+kiW-@gNofI0J@;1u<(NfE#Dz+|U!V-NI#r zIbg8h{vDq~Gp>*GkB|G3xP?bKt@kM==EWiw#6-G{tbrPUqf#=Wot_( zR(N4&X_%}gfYlNij5;aF3p;JWq*?_KOWT2E?XUxA!9)iTXh#5w8e_r40Z@oWWIhP6 z2?uH$rZ$0oF`rD!QPzUVgbE-xbeAIth1g`lLTXn- zLl|g-#WHCtv11M7jwEg6rAa0TF|A=i%tqo^>w17dQi6j~M@uBdLP1-wND@2NK--da zqud7)3bcfg27^Yyb}@4RM5MN4z0#aLlW9Xm8w^$|Mmv}}0P>hT1Rg0u`xRc;SQ-Y8 z3}!FC3*!s?Q;aC*B{FFH&G-VpM)Jc#({^GY?Il*kjQn&HX1I@kgsa3>|HFb88q(OV z9h-Hr@=lg{@Pvm0>jXmF-nI^iFUW~Yq079HsC_)?`8Nub$7S!}c*h3tovEL<22P{8 z9#u44ZjOv9QRT}rHcRlhi-Q=s^JXuA6};U7kz)!hM|en2;g==L*m^`UZp>ihM)?3V z`#`$f*qJ~TI?kRMvb;ma)+)uyF1cUG2Otxmzw5>0F2i1jOn30St(RAhVRNQfJD7df zVB<480HB%D9P&vS0wDI5b5o{mw9#Vwq4dd(Q(I|cHkEkPn?Y~oHe=~5Vx+a)tiTaUZq zi04Bb_52fpAE$*qPedhZAalvXE7>6Czu!ao&nyPC;oQitmbeNlfK0%1vYR$-dL6;d zN(Ng1B4w^BaV5h7c;7o|<+)C{A|v|Wqy@^UiVyw+SpLUoxRg+-T6cv02D(X}TUD*n|NUBYmAj|z4uZ3lVJ zBG`awz;BCrvQ6EnBlOosTbkuuyhB?pHU`)^HDPZmQxh+Pr#5HGqDeIG0H){aXKw~Pf8{t#%*)}9a7cizllTU!S4)2T66`&HBd}(Zf zh%TYc7c?o4zLB?;AH+z^63ipETCoZ(xDT``!sQ`e&;Z4w zi@0qd<;ah&g3l4CtYW5lZ-Zd^?&k!;g|-5IAxomBbE`#J{xbsDr8}OtMGRl7Hloku z4p92l@LUy6djx&|4ue~g)Bg(NCc+E)?=b!cT^He-(%nvm00000NkvXXu0mjf4N7>h literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_checkbox_unchecked.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_checkbox_unchecked.png new file mode 100644 index 0000000000000000000000000000000000000000..0473f102b7b8c6a34ec9f93ea238129d838793c6 GIT binary patch literal 4055 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 JPDHLkV1l_hv(f+n literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_minus.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d0da98e7c12a4031af503f26bf16b2b6c96507c0 GIT binary patch literal 472 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 literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_mofang_disconnect.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_mofang_disconnect.png new file mode 100644 index 0000000000000000000000000000000000000000..abcb2e456fd61e8842597f24988986d07929453f GIT binary patch literal 24500 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 E14#j*U;qFB literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_ok_enabled.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_operate_panel_ok_enabled.png new file mode 100644 index 0000000000000000000000000000000000000000..bc2217f62daaf919acf5821b030a2bfe51b30bcc GIT binary patch literal 17345 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