更改UI
This commit is contained in:
xuxinchao
2022-07-14 17:04:08 +08:00
parent 8998e13110
commit 1a172a149f
7 changed files with 77 additions and 96 deletions

View File

@@ -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<AutoPilotRecord> = 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) {

View File

@@ -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

View File

@@ -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)
}
}

View File

@@ -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()
}

View File

@@ -21,5 +21,8 @@ object BadCaseConfig {
//采集类型
@JvmField
var type: Int = 1
//BadCase采集和AI数据采集弹窗数量
@JvmField
var windowNum = 1
}

View File

@@ -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"
/>
<RadioButton