From 1a172a149f540be499e8ca095dc2900ae6839c94 Mon Sep 17 00:00:00 2001 From: xuxinchao <13522809046@163.com> Date: Thu, 14 Jul 2022 17:04:08 +0800 Subject: [PATCH] BadCase MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更改UI --- .../badcase/BadCaseManager.kt | 67 ++++--------------- .../badcase/biz/AIDataCollectWindow.kt | 42 ++++++++++-- .../badcase/biz/BadCaseToolsView.kt | 38 ----------- .../badcase/biz/InitiativeBadCaseWindow.kt | 17 +++++ .../badcase/consts/BadCaseConfig.kt | 3 + .../main/res/layout/view_ai_data_collect.xml | 1 + .../core/function/hmi/ui/MoGoHmiFragment.kt | 5 ++ 7 files changed, 77 insertions(+), 96 deletions(-) delete mode 100644 core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseToolsView.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 ae09074498..92769bd875 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 @@ -59,9 +59,6 @@ internal object BadCaseManager : LifecycleEventObserver { @Volatile private var feedbackFloatShow = false - private var aiDataCollectWindow: AIDataCollectWindow?=null //AI数据采集弹窗 - private var initiativeBadCaseWindow: InitiativeBadCaseWindow?=null //主动采集BadCase弹窗 - @OptIn(ExperimentalCoroutinesApi::class) private var channel: Channel = Channel(Channel.RENDEZVOUS) get() = if (field.isClosedForReceive || field.isClosedForSend) { @@ -100,18 +97,21 @@ internal object BadCaseManager : LifecycleEventObserver { } } + /** + * 主动采集BadCase + */ fun initBadCase(view: View){ val activity = view.context as? FragmentActivity ?: throw IllegalStateException("please ensure context is FragmentActivity.") view.setOnClickListener { if(ClickUtils.isFastClick()){ - initiativeBadCaseWindow = InitiativeBadCaseWindow(activity) - initiativeBadCaseWindow?.setClickListener(object: InitiativeBadCaseWindow.ClickListener{ + val initiativeBadCaseWindow = InitiativeBadCaseWindow(activity) + initiativeBadCaseWindow.setClickListener(object: InitiativeBadCaseWindow.ClickListener{ override fun closeWindow() { - initiativeBadCaseWindow?.hideFloatWindow() + initiativeBadCaseWindow.hideFloatWindow() } }) - initiativeBadCaseWindow?.showFloatWindow() + initiativeBadCaseWindow.showFloatWindow() }else{ ToastUtils.showShort("请勿连续点击,稍后再试") } @@ -119,65 +119,26 @@ internal object BadCaseManager : LifecycleEventObserver { } } + /** + * AI数据采集 + */ fun initAiCollect(view: View){ val activity = view.context as? FragmentActivity ?: throw IllegalStateException("please ensure context is FragmentActivity.") view.setOnClickListener { if(ClickUtils.isFastClick()){ - aiDataCollectWindow = AIDataCollectWindow(activity) - aiDataCollectWindow?.setClickListener(object: AIDataCollectWindow.ClickListener{ + val aiDataCollectWindow = AIDataCollectWindow(activity) + aiDataCollectWindow.setClickListener(object: AIDataCollectWindow.ClickListener{ override fun closeWindow() { - aiDataCollectWindow?.hideFloatWindow() + aiDataCollectWindow.hideFloatWindow() } }) - aiDataCollectWindow?.showFloatWindow() + aiDataCollectWindow.showFloatWindow() }else{ ToastUtils.showShort("请勿连续点击,稍后再试") } } } - fun init(view: View) { - this.viewHolder = WeakReference(view) - view.lifecycleOwner.lifecycle.addObserver(this) - - val badCaseToolsView = view as BadCaseToolsView - val activity = badCaseToolsView.context as? FragmentActivity ?: throw IllegalStateException("please ensure context is FragmentActivity.") - badCaseToolsView.ivAiCollectTools?.setOnClickListener { - if(ClickUtils.isFastClick()){ - aiDataCollectWindow = AIDataCollectWindow(activity) - aiDataCollectWindow?.setClickListener(object: AIDataCollectWindow.ClickListener{ - override fun closeWindow() { - aiDataCollectWindow?.hideFloatWindow() - } - }) - aiDataCollectWindow?.showFloatWindow() - }else{ - ToastUtils.showShort("请勿连续点击,稍后再试") - } - } - - badCaseToolsView.ivBadCaseTools?.setOnClickListener { - if(ClickUtils.isFastClick()){ - initiativeBadCaseWindow = InitiativeBadCaseWindow(activity) - initiativeBadCaseWindow?.setClickListener(object: InitiativeBadCaseWindow.ClickListener{ - override fun closeWindow() { - initiativeBadCaseWindow?.hideFloatWindow() - } - - }) - initiativeBadCaseWindow?.showFloatWindow() - }else{ - ToastUtils.showShort("请勿连续点击,稍后再试") - } - - } - - } - - private fun showConfigFloat(){ - - } - @OptIn(ExperimentalCoroutinesApi::class) private fun register() { scope?.launch(Dispatchers.Default) { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt index b00dbcac5a..e727dc9cfb 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/AIDataCollectWindow.kt @@ -5,18 +5,23 @@ import android.app.Activity import android.graphics.PixelFormat import android.os.SystemClock import android.util.DisplayMetrics -import android.util.Log import android.view.* import android.widget.RadioButton import android.widget.TextView import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA +import com.mogo.eagle.core.utilcode.mogo.toast.TipToast import com.mogo.eagle.core.utilcode.util.TimeUtils import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String import com.zhjt.mogo_core_function_devatools.R import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig +import com.zhjt.mogo_core_function_devatools.badcase.toRecord import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch +import record_cache.RecordPanelOuterClass import java.lang.reflect.Field import java.util.* @@ -25,7 +30,12 @@ import java.util.* * @description AI数据采集弹窗 * @since: 2022/7/12 */ -class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener{ +class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener, + IMoGoAutopilotRecordListener { + + companion object { + const val TAG = "AIDataCollectWindow" + } private var mActivity: Activity = activity private var mWindowParams: WindowManager.LayoutParams? = null @@ -83,7 +93,9 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener tvCollectReport = mFloatLayout.findViewById(R.id.tvCollectReport) tvCollectCancel = mFloatLayout.findViewById(R.id.tvCollectCancel) - tvCollectTime.text ="时间:${TimeUtils.millis2String(System.currentTimeMillis(),TimeUtils.getHourMinSecondFormat())}" + tvCollectNum.text = BadCaseConfig.windowNum.toString() + BadCaseConfig.windowNum++ + tvCollectTime.text ="时间:${millis2String(System.currentTimeMillis(),TimeUtils.getHourMinSecondFormat())}" CallerAutoPilotManager.recordPackage( 99, @@ -205,9 +217,9 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener }) if (uploadResult == null || uploadResult.code != 200) { - Log.i("xuxinchao","上报失败") + TipToast.shortTip("上报失败") } else { - Log.i("xuxinchao","上报成功") + TipToast.shortTip("上报成功") } } @@ -216,6 +228,7 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener //取消 tvCollectCancel.setOnClickListener { + BadCaseConfig.windowNum-- clickListener?.closeWindow() } @@ -232,6 +245,25 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener } } + override fun onAutopilotRecordResult(recordPanel: RecordPanelOuterClass.RecordPanel) { + CallerLogger.d("${M_DEVA}${TAG}", "-- 收到工控机录制任务回调 -- $recordPanel") + when(recordPanel.toRecord().stat){ + 100, 101 ->{ + //成功结束录制 + TipToast.shortTip("bag录制成功") + + } + 300 ->{ + //开始录制 + + } + 200 ->{ + //录制失败 + TipToast.shortTip("bag录制失败") + } + } + } + private fun setRadioButtonStatus(largeCarStatus: Boolean,trafficLightStatus: Boolean,waterStatus: Boolean, constructionStatus: Boolean,accidentStatus: Boolean,rainStatus: Boolean,nightTrafficStatus: Boolean){ rbLargeCar.isChecked = largeCarStatus diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseToolsView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseToolsView.kt deleted file mode 100644 index 75c3c14055..0000000000 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseToolsView.kt +++ /dev/null @@ -1,38 +0,0 @@ -package com.zhjt.mogo_core_function_devatools.badcase.biz - -import android.content.Context -import android.util.AttributeSet -import android.view.LayoutInflater -import android.widget.ImageView -import androidx.constraintlayout.widget.ConstraintLayout -import com.zhjt.mogo_core_function_devatools.R - -/** - * @author XuXinChao - * @description 录包工具及其相关配置入口 - * @since: 2022/7/10 - */ -class BadCaseToolsView @JvmOverloads constructor( - context: Context, - attrs: AttributeSet? = null, - defStyleAttr: Int = 0 -) : ConstraintLayout(context, attrs, defStyleAttr){ - - companion object { - const val TAG = "BadCaseEntranceView" - } - - var ivBadCaseTools: ImageView?=null - var ivAiCollectTools: ImageView?=null - - init{ - LayoutInflater.from(context).inflate(R.layout.view_entrance_badcase, this, true) - initView() - } - - private fun initView(){ - ivBadCaseTools = findViewById(R.id.ivBadCaseTools) - ivAiCollectTools = findViewById(R.id.ivAiCollectTools) - } - -} \ 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/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 ef2e5c00ca..0c260d7e76 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 @@ -7,6 +7,8 @@ import android.os.SystemClock import android.util.DisplayMetrics import android.view.* import android.widget.TextView +import com.mogo.eagle.core.utilcode.util.TimeUtils +import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager import com.zhjt.mogo_core_function_devatools.R import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig @@ -25,6 +27,11 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList private var mWindowManager: WindowManager? = null private lateinit var mFloatLayout: View + + private lateinit var tvInitiativeNum: TextView + private lateinit var tvInitiativeTime: TextView + private lateinit var tvInitiativeIdentity: TextView + private lateinit var tvInitiativeReport: TextView private lateinit var tvInitiativeCancel: TextView @@ -50,9 +57,18 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList mFloatLayout = LayoutInflater.from(mActivity).inflate(R.layout.view_initiative_bad_case, null) as View mFloatLayout.setOnTouchListener(this) + tvInitiativeNum = mFloatLayout.findViewById(R.id.tvInitiativeNum) + tvInitiativeTime = mFloatLayout.findViewById(R.id.tvInitiativeTime) + tvInitiativeIdentity = mFloatLayout.findViewById(R.id.tvInitiativeIdentity) + tvInitiativeReport = mFloatLayout.findViewById(R.id.tvInitiativeReport) tvInitiativeCancel = mFloatLayout.findViewById(R.id.tvInitiativeCancel) + tvInitiativeNum.text = BadCaseConfig.windowNum.toString() + BadCaseConfig.windowNum++ + tvInitiativeTime.text = "时间:${millis2String(System.currentTimeMillis(),TimeUtils.getHourMinSecondFormat())}" + tvInitiativeIdentity.text = "身份:${BadCaseConfig.identity}" + tvInitiativeReport.setOnClickListener { CallerAutoPilotManager.recordPackage(BadCaseConfig.type, Random(SystemClock.elapsedRealtime()).nextInt(), @@ -61,6 +77,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList ) } tvInitiativeCancel.setOnClickListener { + BadCaseConfig.windowNum-- clickListener?.closeWindow() } 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 b13e943a08..004d7906e1 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 @@ -21,5 +21,8 @@ object BadCaseConfig { //采集类型 @JvmField var type: Int = 1 + //BadCase采集和AI数据采集弹窗数量 + @JvmField + var windowNum = 1 } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_ai_data_collect.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_ai_data_collect.xml index 74d2449475..7badb003b5 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_ai_data_collect.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_ai_data_collect.xml @@ -55,6 +55,7 @@ app:layout_constraintTop_toBottomOf="@id/tvCollectNum" android:layout_marginStart="@dimen/dp_50" android:layout_marginTop="@dimen/dp_50" + android:checked="true" />