diff --git a/OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml b/OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml index 5b87407bc6..f41ff6699a 100644 --- a/OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml +++ b/OCH/taxi/driver/src/main/res/layout/taxi_base_fragment.xml @@ -149,6 +149,18 @@ app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + + + + + + + + + + + + + + + + + + + + + + () { private var data: List ?= null + private var completeListener: CompleteListener ?= null fun setData(data: List){ this.data = data + notifyDataSetChanged() + } + + fun setListener(listener: CompleteListener){ + completeListener = listener } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ExplorationHolder { @@ -44,15 +50,17 @@ class AutomaticExplorationAdapter(val context: Context,val user: Int): RecyclerV override fun onBindViewHolder(holder: ExplorationHolder, position: Int) { data?.let { - holder.tvExplorationContent.text = it[position].explorationContent + val entity = it[position] + holder.tvExplorationContent.text = entity.explorationContent val rotationAnim = ObjectAnimator.ofFloat(holder.ivExplorationLoading, "rotation", 0f, 360f) - rotationAnim.repeatCount = it[position].explorationDuration.toInt()/1000 + rotationAnim.repeatCount = entity.explorationDuration.toInt()/1000 rotationAnim.repeatMode = ValueAnimator.RESTART rotationAnim.duration = 1000 rotationAnim.interpolator = LinearInterpolator() rotationAnim.addListener(object: AnimatorListenerAdapter(){ override fun onAnimationEnd(animation: Animator) { super.onAnimationEnd(animation) + completeListener?.onComplete(entity) if(user == 0){ holder.ivExplorationLoading.setImageDrawable( ContextCompat.getDrawable( @@ -77,4 +85,8 @@ class AutomaticExplorationAdapter(val context: Context,val user: Int): RecyclerV var tvExplorationContent: TextView = itemView.findViewById(R.id.tvExplorationContent) } + interface CompleteListener{ + fun onComplete(entity: AutoExplorationEntity) + } + } \ 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/notice/exploration/AutomaticExplorationView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/exploration/AutomaticExplorationView.kt index 5bfebc913f..6ef0dce532 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/exploration/AutomaticExplorationView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/exploration/AutomaticExplorationView.kt @@ -15,6 +15,7 @@ import com.mogo.commons.voice.AIAssist import com.mogo.eagle.core.data.autopilot.AutopilotSummaryInfo import com.mogo.eagle.core.data.notice.AutoExplorationEntity import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.util.CountDownTimer import com.mogo.eagle.core.utilcode.util.ThreadUtils @@ -37,7 +38,7 @@ class AutomaticExplorationView @JvmOverloads constructor( companion object { private const val TAG = "AutomaticExplorationView" - private const val EXPLORATION_SHOW_TIME = 10000L //自动探查弹窗展示时间 + private const val EXPLORATION_SHOW_TIME = 5000L //探查完毕后,5秒关闭弹窗 } init { @@ -54,20 +55,13 @@ class AutomaticExplorationView @JvmOverloads constructor( LayoutInflater.from(context).inflate(R.layout.view_automatic_exploration_p, this, true) } initEvent() - initData() } - fun showAutoExploration(){ - //倒计时 - - //语音播放 - AIAssist.getInstance(context).speakTTSVoice("道路畅通一切正常蘑菇行车助手将持续守候您的出行") - - //隐藏自动探查视图 + private fun showAutoExploration(){ ThreadUtils.runOnUiThread { - this@AutomaticExplorationView.visibility = View.GONE + this@AutomaticExplorationView.visibility = View.VISIBLE + initData() } - } private fun initEvent(){ @@ -78,15 +72,6 @@ class AutomaticExplorationView @JvmOverloads constructor( rotationAnim?.cancel() this.visibility = View.GONE } - //启动扫描 - ivScan?.let { - rotationAnim = ObjectAnimator.ofFloat(it, "rotation", 0f, 360f) - rotationAnim?.repeatCount = ValueAnimator.INFINITE - rotationAnim?.repeatMode = ValueAnimator.RESTART - rotationAnim?.duration = 2000 - rotationAnim?.interpolator = LinearInterpolator() - rotationAnim?.start() - } rvExplorationList = findViewById(R.id.rvExplorationList) val linearLayoutManager = LinearLayoutManager(context) linearLayoutManager.orientation = LinearLayoutManager.VERTICAL @@ -96,16 +81,47 @@ class AutomaticExplorationView @JvmOverloads constructor( } private fun initData() { - val dataList = ArrayList() - dataList.add(AutoExplorationEntity("当前道路事件分析",2000L)) - dataList.add(AutoExplorationEntity("前方车辆",2000L)) - dataList.add(AutoExplorationEntity("两侧车辆",3000L)) - dataList.add(AutoExplorationEntity("后方车辆",3000L)) - dataList.add(AutoExplorationEntity("前方路口车辆流速分析",4000L)) - dataList.add(AutoExplorationEntity("前方路口行人/非机动车分析",4000L)) - dataList.add(AutoExplorationEntity("路侧视频分析",5000L)) - automaticExplorationAdapter?.setData(dataList) + val dataList = ArrayList(7) + dataList.add(AutoExplorationEntity("当前道路事件分析",2000L,false)) + dataList.add(AutoExplorationEntity("前方车辆",2000L,false)) + dataList.add(AutoExplorationEntity("两侧车辆",2600L,false)) + dataList.add(AutoExplorationEntity("后方车辆",3000L,false)) + dataList.add(AutoExplorationEntity("前方路口车辆流速分析",4000L,false)) + dataList.add(AutoExplorationEntity("前方路口行人/非机动车分析",4300L,false)) + dataList.add(AutoExplorationEntity("路侧视频分析",5000L,false)) + automaticExplorationAdapter?.setListener(object: AutomaticExplorationAdapter.CompleteListener{ + override fun onComplete(entity: AutoExplorationEntity) { + var allComplete = true //所有探查项目都探查完毕 + dataList.forEach { + if(it.explorationContent == entity.explorationContent){ + it.explorationComplete = true + } + if(!it.explorationComplete){ + allComplete = false + } + } + if(allComplete){ + //语音播放 + AIAssist.getInstance(context).speakTTSVoice("道路畅通一切正常蘑菇行车助手将持续守候您的出行") + //5秒后关闭弹窗 + val hideViewTimer =object: CountDownTimer(EXPLORATION_SHOW_TIME,EXPLORATION_SHOW_TIME){ + override fun onTick(millisUntilFinished: Long) { + } + + override fun onFinish() { + //隐藏自动探查视图 + ThreadUtils.runOnUiThread { + this@AutomaticExplorationView.visibility = View.GONE + } + } + } + hideViewTimer.start() + } + } + + }) + automaticExplorationAdapter?.setData(dataList) //每出现一次自动探查,增加相应的服务次数 //车辆服务次数 AutopilotSummaryInfo.vehicleServiceNum += 31 @@ -117,6 +133,15 @@ class AutomaticExplorationView @JvmOverloads constructor( AutopilotSummaryInfo.vulnerableTipNum += 4 //消除安全风险隐患次数 AutopilotSummaryInfo.dangerNum += 24 + //启动扫描 + ivScan?.let { + rotationAnim = ObjectAnimator.ofFloat(it, "rotation", 0f, 360f) + rotationAnim?.repeatCount = ValueAnimator.INFINITE + rotationAnim?.repeatMode = ValueAnimator.RESTART + rotationAnim?.duration = 2000 + rotationAnim?.interpolator = LinearInterpolator() + rotationAnim?.start() + } } override fun onDetachedFromWindow() { diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/notice/AutoExplorationEntity.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/notice/AutoExplorationEntity.kt index 7b20cd6db7..a4efc60c1b 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/notice/AutoExplorationEntity.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/notice/AutoExplorationEntity.kt @@ -3,4 +3,4 @@ package com.mogo.eagle.core.data.notice /** * 自动探查 */ -data class AutoExplorationEntity(var explorationContent: String,var explorationDuration: Long) \ No newline at end of file +data class AutoExplorationEntity(var explorationContent: String,var explorationDuration: Long,var explorationComplete: Boolean) \ No newline at end of file