From 3d4530a1ca066efdf275f59a60ab7ff09f3d567b Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Thu, 27 Oct 2022 14:49:21 +0800 Subject: [PATCH] =?UTF-8?q?BadCase=E8=87=AA=E5=AE=9A=E4=B9=89=E5=BD=95?= =?UTF-8?q?=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/BadCaseManager.kt | 9 +-- .../badcase/biz/BadCaseConfigView.kt | 17 +---- .../badcase/biz/CaseListDialog.java | 74 ++++++++++++++++--- .../badcase/biz/CaseTopicListDialog.java | 6 ++ .../badcase/biz/InitiativeBadCaseWindow.kt | 13 ++-- .../badcase/biz/adapter/CaseListAdapter.kt | 21 ++++-- .../badcase/consts/BadCaseConfig.kt | 5 +- .../src/main/res/layout/item_case_list.xml | 6 +- .../main/res/layout/item_record_template.xml | 3 +- .../core/data/badcase/RecordCaseEntity.kt | 3 + 10 files changed, 108 insertions(+), 49 deletions(-) create mode 100644 core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordCaseEntity.kt diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index 3306a57d94..a6cc679a5f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -107,13 +107,8 @@ internal object BadCaseManager : LifecycleEventObserver { if(ClickUtils.isFastClick()){ if(NetworkUtils.isConnected()){ if(BadCaseConfig.dockerVersion!=null){ - val initiativeBadCaseWindow = InitiativeBadCaseWindow(activity) - initiativeBadCaseWindow.setClickListener(object: InitiativeBadCaseWindow.ClickListener{ - override fun closeWindow() { - initiativeBadCaseWindow.hideFloatWindow() - } - }) - initiativeBadCaseWindow.showFloatWindow() + val caseListDialog = CaseListDialog(activity) + caseListDialog.show() }else{ ToastUtils.showShort("工控机连接状态异常") } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt index e437709f0d..8d3f361326 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseConfigView.kt @@ -5,6 +5,7 @@ import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.util.AttributeSet import android.view.LayoutInflater +import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.GridLayoutManager import com.mogo.eagle.core.data.badcase.RecordTypeEntity @@ -157,20 +158,7 @@ internal class BadCaseConfigView @JvmOverloads constructor( val gridLayoutManager = GridLayoutManager(context,2) rvTemplate.layoutManager = gridLayoutManager rvTemplate.adapter = recordTemplateAdapter -// val list = ArrayList() -// list.add(TopicEntity("/v2n/aicloud/rsm_info",false,false)) -// list.add(TopicEntity("/autopilot_info/report_msg_error",false,false)) -// list.add(TopicEntity("/v2n/aicloud/rsi_info",false,false)) -// list.add(TopicEntity("/record_cache/task",false,true)) -// list.add(TopicEntity("/sensor/rainmode",false,true)) -// list.add(TopicEntity("/record_cache/master/task",false,true)) -// list.add(TopicEntity("/telematics/trip_info_event",false,true)) -// list.add(TopicEntity("/telematics/light",false,true)) -// list.add(TopicEntity("/guardian/aicloud_state",false,true)) -// recordTypesList.add(RecordTypeEntity(1,"红路灯",list)) -// recordTemplateAdapter?.setData(recordTypesList) -// recordTemplateAdapter?.notifyDataSetChanged() - + rvTemplate.visibility = View.GONE } fun setClickListener(clickListener: ClickListener) { @@ -196,6 +184,7 @@ internal class BadCaseConfigView @JvmOverloads constructor( } } if(recordTypesList.size>1){ + rvTemplate.visibility = View.VISIBLE recordTemplateAdapter?.setData(recordTypesList) recordTemplateAdapter?.notifyDataSetChanged() } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java index f0e6f70ad7..07f6e8b59f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseListDialog.java @@ -1,33 +1,44 @@ package com.zhjt.mogo_core_function_devatools.badcase.biz; +import android.app.Activity; import android.app.Dialog; -import android.content.Context; import android.os.Bundle; -import android.view.View; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.mogo.eagle.core.data.badcase.RecordCaseEntity; +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; +import com.mogo.eagle.core.utilcode.util.ThreadUtils; import com.zhjt.mogo_core_function_devatools.R; import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.CaseListAdapter; +import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig; import java.util.ArrayList; +import mogo.telematics.pad.MessagePad; +import record_cache.RecordPanelOuterClass; + /** * @author XuXinChao * @description BadCase清单选择对话框 * @since: 2022/10/19 */ -public class CaseListDialog extends Dialog { +public class CaseListDialog extends Dialog implements IMoGoAutopilotRecordListener { private TextView tvCancel; private RecyclerView rvCaseList; private CaseListAdapter caseListAdapter; + private static final String TAG = "CaseListDialog"; + private ArrayList recordTypeEntityArrayList = new ArrayList<>(); + private Activity activity; - public CaseListDialog(@NonNull Context context) { - super(context, R.style.bad_case_dialog); + public CaseListDialog(@NonNull Activity activity) { + super(activity, R.style.bad_case_dialog); + this.activity = activity; } @Override @@ -43,21 +54,60 @@ public class CaseListDialog extends Dialog { tvCancel = findViewById(R.id.tvCancel); rvCaseList = findViewById(R.id.rvCaseList); caseListAdapter = new CaseListAdapter(); + caseListAdapter.setListener(recordCaseEntity -> { + //录制Bag包,弹窗 + InitiativeBadCaseWindow initiativeBadCaseWindow = new InitiativeBadCaseWindow(activity); + initiativeBadCaseWindow.setClickListener(initiativeBadCaseWindow::hideFloatWindow); + initiativeBadCaseWindow.showFloatWindow(recordCaseEntity); + }); GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(),2); gridLayoutManager.setOrientation(RecyclerView.VERTICAL); rvCaseList.setLayoutManager(gridLayoutManager); rvCaseList.setAdapter(caseListAdapter); - ArrayList list = new ArrayList<>(); - list.add("红绿灯检测错误"); - list.add("接管默认录制"); - list.add("行程冲突"); - list.add("自定义A"); - caseListAdapter.setData(list); - caseListAdapter.notifyDataSetChanged(); } private void initEvent() { tvCancel.setOnClickListener(v -> dismiss()); } + + @Override + public void onAttachedToWindow() { + super.onAttachedToWindow(); + CallerAutopilotRecordListenerManager.INSTANCE.addListener(TAG, this); + } + + @Override + public void onDetachedFromWindow() { + super.onDetachedFromWindow(); + CallerAutopilotRecordListenerManager.INSTANCE.removeListener(TAG); + } + + + @Override + public void onAutopilotRecordResult(@NonNull RecordPanelOuterClass.RecordPanel recordPanel) { + + } + + @Override + public void onAutopilotRecordConfig(@NonNull MessagePad.RecordDataConfig config) { + ThreadUtils.runOnUiThread(() -> { + if(config.getRecordTypesCount()>0){ + for(int index=0;index topicList = new ArrayList<>(); + for(int position=0;position0){ + recordTypeEntityArrayList.add(new RecordCaseEntity(0,"自定义A",BadCaseConfig.customTopicList)); + } + caseListAdapter.setData(recordTypeEntityArrayList); + caseListAdapter.notifyDataSetChanged(); + }); + } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java index 125724cc83..bc34e091e5 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/CaseTopicListDialog.java @@ -25,6 +25,7 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.zhjt.mogo_core_function_devatools.R; import com.zhjt.mogo_core_function_devatools.badcase.biz.adapter.TopicListAdapter; +import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig; import java.util.ArrayList; import java.util.List; @@ -162,6 +163,11 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL Boolean success=CallerAutoPilotManager.INSTANCE.getBadCaseConfig(2,recordType.getId(),addTopicList); if(Boolean.TRUE.equals(success)){ ToastUtils.showShort("Topic设置成功"); + if(recordType.getId() == 0){ + //自定义Topic + BadCaseConfig.customTopicList.addAll(addTopicList); + } + addTopicList.clear(); dismiss(); }else{ ToastUtils.showShort("Topic设置失败"); diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index ef5e535cba..9ae690a283 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -13,6 +13,7 @@ import android.widget.ImageView import android.widget.TextView import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.app.AppConfigInfo +import com.mogo.eagle.core.data.badcase.RecordCaseEntity import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarStateListener import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager @@ -137,13 +138,6 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList CallerAutopilotRecordListenerManager.addListener(this.hashCode().toString(),this) // 添加 ADAS车辆状态&定位 监听 CallerAutopilotCarStatusListenerManager.addListener(this.hashCode().toString(), this) - //开启录包 - CallerAutoPilotManager.recordPackage(BadCaseConfig.type, - Random(SystemClock.elapsedRealtime()).nextInt(), - BadCaseConfig.totalDuration, - BadCaseConfig.previousDuration - ) - viewAudioButton.setOnClickListener { audioStatus = !audioStatus setAudio(audioStatus) @@ -337,7 +331,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList return true } - fun showFloatWindow() { + fun showFloatWindow(recordCaseEntity: RecordCaseEntity) { if (mFloatLayout.parent == null) { val metrics = DisplayMetrics() // 默认固定位置,靠屏幕右边缘的中间 @@ -345,6 +339,9 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList mWindowParams!!.x = metrics.widthPixels mWindowParams!!.y = metrics.heightPixels / 2 - getSysBarHeight(mActivity)-350 mWindowManager!!.addView(mFloatLayout, mWindowParams) + //开启录包 + CallerAutoPilotManager.recordPackage(recordCaseEntity.caseId,Random(SystemClock.elapsedRealtime()).nextInt(), + BadCaseConfig.totalDuration, BadCaseConfig.previousDuration,recordCaseEntity.topicList) } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/CaseListAdapter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/CaseListAdapter.kt index 4ecd352587..c0efade685 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/CaseListAdapter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/adapter/CaseListAdapter.kt @@ -5,6 +5,7 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.recyclerview.widget.RecyclerView +import com.mogo.eagle.core.data.badcase.RecordCaseEntity import com.zhjt.mogo_core_function_devatools.R /** @@ -14,12 +15,17 @@ import com.zhjt.mogo_core_function_devatools.R */ class CaseListAdapter: RecyclerView.Adapter() { - private var data:List? = null + private var data:List? = null + private var caseClickListener: CaseClickListener?=null - fun setData( data: List?){ + fun setData( data: List?){ this.data = data } + fun setListener(listener: CaseClickListener){ + caseClickListener = listener + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CaseListHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.item_case_list, parent, false) @@ -27,10 +33,10 @@ class CaseListAdapter: RecyclerView.Adapter() { } override fun onBindViewHolder(holder: CaseListHolder, position: Int) { - data?.let { - holder.caseName.text = it[position] + data?.let {recordCaseEntity-> + holder.caseName.text = recordCaseEntity[position].caseName holder.caseName.setOnClickListener { - + caseClickListener?.onClick(recordCaseEntity[position]) } } } @@ -40,4 +46,9 @@ class CaseListAdapter: RecyclerView.Adapter() { class CaseListHolder(itemView: View) : RecyclerView.ViewHolder(itemView){ var caseName: TextView = itemView.findViewById(R.id.caseName) } + + interface CaseClickListener{ + fun onClick(recordCaseEntity: RecordCaseEntity) + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt index 5ea74fecef..44c7041d9a 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/consts/BadCaseConfig.kt @@ -27,7 +27,10 @@ object BadCaseConfig { //工控机版本 @JvmField var dockerVersion:String ?= null - + @JvmField var recordKeyList:ArrayList = ArrayList() + //自定义Topic清单列表 + @JvmField + var customTopicList: ArrayList = ArrayList() } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml index 69ce03fc84..38c624c7f5 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml @@ -1,7 +1,7 @@ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml index 67a58891b6..4b5c5fb31e 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml @@ -1,7 +1,7 @@ \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordCaseEntity.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordCaseEntity.kt new file mode 100644 index 0000000000..8f50386f42 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/badcase/RecordCaseEntity.kt @@ -0,0 +1,3 @@ +package com.mogo.eagle.core.data.badcase + +data class RecordCaseEntity(var caseId: Int,var caseName: String,var topicList: ArrayList) \ No newline at end of file