[6.5.0] 无人化添加全息路口和路口概览的功能,增加切换tab隐藏元素接口
This commit is contained in:
@@ -117,16 +117,6 @@
|
||||
app:layout_goneMarginEnd="40dp"
|
||||
app:layout_goneMarginTop="@dimen/dp_236" />
|
||||
|
||||
<!-- 前方路况探查 -->
|
||||
<com.mogo.eagle.core.function.view.RoadCrossRoamView
|
||||
android:layout_width="@dimen/dp_600"
|
||||
android:layout_height="@dimen/dp_740"
|
||||
android:layout_marginTop="@dimen/dp_350"
|
||||
android:layout_marginRight="@dimen/dp_50"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!-- 地图marker点击触发路侧直播 -->
|
||||
<com.mogo.eagle.core.function.hmi.ui.camera.RoadCrossLiveView
|
||||
android:layout_width="@dimen/dp_800"
|
||||
|
||||
@@ -209,6 +209,15 @@
|
||||
app:fusionLightUser="driver"
|
||||
/>
|
||||
|
||||
<!-- 前方路况探查 -->
|
||||
<com.mogo.eagle.core.function.view.RoadCrossRoamView
|
||||
android:layout_width="@dimen/dp_670"
|
||||
android:layout_height="@dimen/dp_790"
|
||||
android:layout_marginTop="@dimen/dp_482"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--自动探查-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.exploration.AutomaticExplorationView
|
||||
android:layout_width="wrap_content"
|
||||
@@ -221,6 +230,15 @@
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<!-- 地图marker点击触发路侧直播 -->
|
||||
<com.mogo.eagle.core.function.hmi.ui.camera.RoadCrossLiveView
|
||||
android:layout_width="@dimen/dp_650"
|
||||
android:layout_height="@dimen/dp_480"
|
||||
android:layout_marginTop="@dimen/dp_430"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--红绿灯提醒-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.traffic.TrafficLightPromptView
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -96,6 +96,15 @@
|
||||
app:fusionLightUser="passenger"
|
||||
/>
|
||||
|
||||
<!-- 前方路况探查 -->
|
||||
<com.mogo.eagle.core.function.view.RoadCrossRoamView
|
||||
android:layout_width="@dimen/dp_670"
|
||||
android:layout_height="@dimen/dp_790"
|
||||
android:layout_marginTop="@dimen/dp_482"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--自动探查-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.exploration.AutomaticExplorationView
|
||||
android:layout_width="wrap_content"
|
||||
@@ -108,6 +117,15 @@
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<!-- 地图marker点击触发路侧直播 -->
|
||||
<com.mogo.eagle.core.function.hmi.ui.camera.RoadCrossLiveView
|
||||
android:layout_width="@dimen/dp_650"
|
||||
android:layout_height="@dimen/dp_480"
|
||||
android:layout_marginTop="@dimen/dp_430"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--红绿灯提醒-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.traffic.TrafficLightPromptView
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.os.Looper
|
||||
import android.os.Message
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant
|
||||
import com.mogo.eagle.core.data.road.CameraDeviceInfo
|
||||
import com.mogo.eagle.core.function.api.map.road.IMoGoMapRoadListener
|
||||
@@ -15,6 +16,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84Lis
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
|
||||
import com.mogo.eagle.core.function.view.CameraMarkerView
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
@@ -30,6 +32,7 @@ class RoadCrossCameraManager : IMoGoMapRoadListener {
|
||||
companion object {
|
||||
|
||||
private const val TAG = "RoadCrossCameraManager"
|
||||
private const val REQUEST_CAMERA_MSG = 0
|
||||
private const val REMOVE_MARKER_DELAY_TIME = 10_000L
|
||||
|
||||
val instance: RoadCrossCameraManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
|
||||
@@ -67,7 +70,9 @@ class RoadCrossCameraManager : IMoGoMapRoadListener {
|
||||
"$M_MAP$TAG",
|
||||
"触发接口调用 dis: $distance , roadCrossEnd: ${roadCrossEnd ?: "null"} "
|
||||
)
|
||||
AIAssist.getInstance(mContext).speakTTSVoice("蘑菇检测到前方${distance.toInt()}米您将通过路口,已为您切换展示路口全息影像")
|
||||
if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){
|
||||
AIAssist.getInstance(mContext).speakTTSVoice("蘑菇检测到前方${distance.toInt()}米您将通过路口,已为您切换展示路口全息影像")
|
||||
}
|
||||
if (roadCrossEnd != null) {
|
||||
ndeRoadCameraNetWorkModel.getRoadCrossInfo(roadCrossEnd,
|
||||
onSuccess = {
|
||||
@@ -155,7 +160,10 @@ class RoadCrossCameraManager : IMoGoMapRoadListener {
|
||||
ndeRoadCameraNetWorkModel.cancelRequest("roadCross")
|
||||
// 清除marker
|
||||
CallerLogger.d("$M_MAP$TAG", "remove marker")
|
||||
handler.sendEmptyMessageDelayed(0, REMOVE_MARKER_DELAY_TIME)
|
||||
if(handler.hasMessages(REQUEST_CAMERA_MSG)){
|
||||
handler.removeMessages(REQUEST_CAMERA_MSG)
|
||||
handler.sendEmptyMessageDelayed(REQUEST_CAMERA_MSG, REMOVE_MARKER_DELAY_TIME)
|
||||
}
|
||||
// 释放控制
|
||||
isCameraRequest = false
|
||||
CallerLogger.d("$M_MAP$TAG", "经过路口,释放控制")
|
||||
|
||||
@@ -4,6 +4,9 @@ import android.animation.ObjectAnimator
|
||||
import android.animation.ValueAnimator
|
||||
import android.content.Context
|
||||
import android.graphics.Rect
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.os.Message
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
@@ -12,11 +15,15 @@ import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener
|
||||
import com.mogo.eagle.core.function.api.map.road.IMoGoMapRoadListener
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapIdentifyManager
|
||||
import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager
|
||||
import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager
|
||||
import com.mogo.eagle.core.function.map.R
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
@@ -35,10 +42,12 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoMapRoadListener{
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoMapRoadListener, IViewControlListener {
|
||||
|
||||
companion object {
|
||||
const val TAG = "RoadCrossRoamView"
|
||||
private const val MSG_HIDE_VIEW = 0
|
||||
private const val MSG_HIDE_VIEW_TIME = 10_000L
|
||||
}
|
||||
|
||||
private var showState by Delegates.observable(false) { _, oldV, newV ->
|
||||
@@ -51,6 +60,15 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
private var rotationAnim: ObjectAnimator? = null
|
||||
private var lightMode = CallerSkinModeListenerManager.getMode() == 1
|
||||
|
||||
private val handler = object : Handler(Looper.getMainLooper()) {
|
||||
override fun handleMessage(msg: Message) {
|
||||
super.handleMessage(msg)
|
||||
if (msg.what == MSG_HIDE_VIEW) {
|
||||
detachView()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
init {
|
||||
val res = if (lightMode) {
|
||||
R.layout.view_road_cross_roam_light
|
||||
@@ -75,9 +93,17 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun mainPageViewVisible(v: Int) {
|
||||
super.mainPageViewVisible(v)
|
||||
if (v == View.GONE && this.visibility == View.VISIBLE) {
|
||||
detachView()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
CallerMapRoadListenerManager.addListener(TAG, this)
|
||||
CallerHmiViewControlListenerManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
private fun updateView(state: Boolean) {
|
||||
@@ -93,11 +119,11 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
|
||||
override fun onStopLineInfo(info: StopLine) {
|
||||
super.onStopLineInfo(info)
|
||||
if(info.distance == 0.0 || info.distance > 200){
|
||||
if (info.distance == 0.0 || info.distance > 200) {
|
||||
CallerLogger.d("$M_MAP$TAG", "showState return , distance is ${info.distance}")
|
||||
return
|
||||
}
|
||||
showState = info.distance <= 200 && info.distance > 100
|
||||
showState = info.distance in 110.0..200.0
|
||||
}
|
||||
|
||||
private fun attachView() {
|
||||
@@ -115,7 +141,10 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
mapRoamView.openRoam()
|
||||
//播放语音
|
||||
val dis = CallerMapRoadListenerManager.getStopLineDistance()?.toInt() ?: 0
|
||||
AIAssist.getInstance(context).speakTTSVoice("前方${dis}米将通过路口,蘑菇为您提供路口全息影像,助力出行")
|
||||
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
AIAssist.getInstance(context)
|
||||
.speakTTSVoice("前方${dis}米将通过路口,蘑菇为您提供路口全息影像,助力出行")
|
||||
}
|
||||
lvRoadCrossRoamTip.adapter = RoadCrossRoamListAdapter(context, lightMode)
|
||||
// 创建横向移动的动画
|
||||
if (animator == null) {
|
||||
@@ -145,12 +174,16 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
} else {
|
||||
tvRoadRoamTitle.setTextColor(context.getColor(R.color.white))
|
||||
}
|
||||
handler.sendEmptyMessageDelayed(MSG_HIDE_VIEW, MSG_HIDE_VIEW_TIME)
|
||||
}
|
||||
|
||||
private fun detachView() {
|
||||
if (this.visibility == View.GONE) {
|
||||
return
|
||||
}
|
||||
if(handler.hasMessages(MSG_HIDE_VIEW)){
|
||||
handler.removeMessages(MSG_HIDE_VIEW)
|
||||
}
|
||||
mapRoamView.closeRoam()
|
||||
mapRoamView.visibility = View.GONE
|
||||
CallerMapIdentifyManager.roam = Pair("", false)
|
||||
@@ -169,6 +202,7 @@ class RoadCrossRoamView @JvmOverloads constructor(
|
||||
ivZhiRoadRoamView.clearAnimation()
|
||||
}
|
||||
CallerMapRoadListenerManager.removeListener(TAG)
|
||||
CallerHmiViewControlListenerManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,6 +16,10 @@ interface IViewControlListener {
|
||||
|
||||
}
|
||||
|
||||
fun mainPageViewVisible(v:Int){
|
||||
|
||||
}
|
||||
|
||||
/** --------- StatusBar --------- **/
|
||||
/**
|
||||
* 设置状态栏暗夜或明亮模式
|
||||
|
||||
@@ -20,6 +20,13 @@ object CallerHmiViewControlListenerManager : CallerBase<IViewControlListener>()
|
||||
M_LISTENERS[tag]?.visible(v)
|
||||
}
|
||||
|
||||
fun invokeMainPageViewVisible(v: Int) {
|
||||
M_LISTENERS.forEach {
|
||||
val listener = it.value
|
||||
listener.mainPageViewVisible(v)
|
||||
}
|
||||
}
|
||||
|
||||
fun setStatusBarDarkOrLight(tag: String, light: Boolean) {
|
||||
M_LISTENERS[tag]?.setStatusBarDarkOrLight(light)
|
||||
}
|
||||
|
||||
@@ -26,14 +26,14 @@ object CallerMsgBoxManager {
|
||||
*/
|
||||
fun saveMsgBox(bean: MsgBoxBean) {
|
||||
CallerTrace.write(TAG,bean)
|
||||
providerApi?.saveMsg(bean)
|
||||
providerApi?.saveMsg(bean) //todo emArrow test
|
||||
}
|
||||
|
||||
/**
|
||||
* 存储含有pb的数据到消息盒子(区别与上述方法中的trace write)
|
||||
*/
|
||||
fun saveMsgBoxHasPB(bean: MsgBoxBean){
|
||||
providerApi?.saveMsg(bean)
|
||||
providerApi?.saveMsg(bean) //todo emArrow test
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -5,7 +5,6 @@ import android.view.View
|
||||
import com.mogo.eagle.core.data.map.*
|
||||
import com.mogo.eagle.core.function.call.autopilot.*
|
||||
import com.mogo.eagle.core.utilcode.util.*
|
||||
import com.mogo.map.MogoMap
|
||||
import com.mogo.map.overlay.point.Point.Options
|
||||
import com.mogo.map.MogoMap.Companion.mapInstance
|
||||
import com.mogo.map.overlay.core.*
|
||||
|
||||
Reference in New Issue
Block a user