From e0060e3b307ddd60437889cce11f0dbd642a4013 Mon Sep 17 00:00:00 2001 From: aibingbing Date: Mon, 21 Oct 2024 15:17:37 +0800 Subject: [PATCH 1/5] =?UTF-8?q?[6.7.0][=E5=B7=A5=E5=85=B7=E7=AE=B1]=20fix:?= =?UTF-8?q?=20=E6=B7=BB=E5=8A=A0=E6=96=B0item=E7=9A=84index=E8=B6=8A?= =?UTF-8?q?=E7=95=8C=E9=97=AE=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/function/hmi/bone/toolkit/ToolKitDataManager.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitDataManager.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitDataManager.kt index f9aebbf218..5eea3ba449 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitDataManager.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitDataManager.kt @@ -256,7 +256,7 @@ object ToolKitDataManager : IToolKitItemClickListener, IDataCenterBizListener { return } val position = - if (param.position < 1) 0 else if (param.position > toolTags.size) toolTags.size - 1 else param.position - 1 + (param.position - 1).coerceIn(0, if (toolTags.isEmpty()) 0 else toolTags.size - 1) val bean = ToolKitBean( param.toolTag, getDefaultItemView(ctx, param.toolTitle, param.toolDrawableIcon) @@ -297,7 +297,8 @@ object ToolKitDataManager : IToolKitItemClickListener, IDataCenterBizListener { return } val position = - if (param.position < 1) 0 else if (param.position > toolTags.size) toolTags.size - 1 else param.position - 1 + (param.position - 1).coerceIn(0, if (toolTags.isEmpty()) 0 else toolTags.size - 1) + val bean = ToolKitBean( param.toolTag, param.customView From 868936b0d69d43ed6e6f751bdf05c516877ff9b0 Mon Sep 17 00:00:00 2001 From: renwj Date: Mon, 21 Oct 2024 15:23:26 +0800 Subject: [PATCH 2/5] =?UTF-8?q?[6.7.0][=E8=B0=83=E8=AF=95=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF]=20=E6=B7=BB=E5=8A=A0=E8=87=AA=E8=BD=A6=E8=A7=86?= =?UTF-8?q?=E8=A7=92=E8=B0=83=E6=95=B4=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/function/hmi/ui/MoGoHmiProvider.kt | 44 +++++++ .../hmi/ui/setting/DebugSettingView.kt | 14 +++ .../ui/widget/HDMapVisualAngleAdjustLayout.kt | 99 +++++++++++++++ .../layout_hdmap_visual_angle_adjust.xml | 114 ++++++++++++++++++ .../main/res/layout/view_debug_setting.xml | 18 ++- .../angle/MoGoVisualAngleChangeProvider.kt | 4 + .../api/hmi/warning/IMoGoHmiProvider.kt | 11 ++ .../function/call/hmi/CallerHmiManager.kt | 8 ++ .../map/uicontroller/IMogoMapUIController.kt | 5 + .../main/java/com/mogo/map/AMapViewWrapper.kt | 9 ++ 10 files changed, 324 insertions(+), 2 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/HDMapVisualAngleAdjustLayout.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_hdmap_visual_angle_adjust.xml diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt index ec158e29d6..c0cfd20528 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt @@ -31,10 +31,12 @@ import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener import com.mogo.eagle.core.function.api.hmi.xiaozhi.event.Event import com.mogo.eagle.core.function.api.hmi.xiaozhi.listener.OnXiaoZhiStateChangeListener import com.mogo.eagle.core.function.api.hmi.xiaozhi.state.State +import com.mogo.eagle.core.function.api.map.angle.Scene import com.mogo.eagle.core.function.api.och.toolkit.IToolKitItemClickListener import com.mogo.eagle.core.function.api.och.toolkit.ToolKitCustomItemAddParam import com.mogo.eagle.core.function.api.och.toolkit.ToolKitDefaultItemAddParam import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager +import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.call.v2x.CallerTurnLightListenerManager import com.mogo.eagle.core.function.hmi.R @@ -53,6 +55,7 @@ import com.mogo.eagle.core.function.hmi.ui.tools.ModifyBindingCarDialog import com.mogo.eagle.core.function.hmi.ui.tools.ToBindingCarDialog import com.mogo.eagle.core.function.hmi.ui.tools.UpgradeAppDialog import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog +import com.mogo.eagle.core.function.hmi.ui.widget.HDMapVisualAngleAdjustLayout import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView import com.mogo.eagle.core.function.hmi.xiaozhi.XiaoZhiStateManager import com.mogo.eagle.core.utilcode.floating.MoGoPopWindow @@ -67,6 +70,7 @@ import com.zhjt.service_biz.BizConfig import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.launch +import me.jessyan.autosize.utils.AutoSizeUtils import java.lang.ref.WeakReference import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicReference @@ -97,6 +101,11 @@ class MoGoHmiProvider : IMoGoHmiProvider { private val operatePanel by lazy { AtomicReference>() } + /** + * 视角调整弹窗引用 + */ + private val popOfVisualAngleAdjust by lazy { AtomicReference>() } + override fun init(context: Context?) { this.context = context } @@ -541,4 +550,39 @@ class MoGoHmiProvider : IMoGoHmiProvider { override fun removeToolkitByTag(toolTagList: List) { ToolKitDataManager.invokeRemoveToolkitByTag(toolTagList) } + + override fun toggleHdMapVisualAngleAdjust(show: Boolean) { + val activity = AppStateManager.currentActivity() ?: return + val old = popOfVisualAngleAdjust.get()?.get() + if (show) { + if (old != null && old.isShowing()) { + return + } + val content = HDMapVisualAngleAdjustLayout(activity) + MoGoPopWindow.Builder() + .attachToActivity(activity) + .width(AutoSizeUtils.dp2px(activity, 600.0f)) + .height(AutoSizeUtils.dp2px(activity, 400.0f)) + .draggable(true) + .contentView(content) + .gravityInActivity(Gravity.CENTER) + .onTouchInterceptorInDrag { child, _ -> + return@onTouchInterceptorInDrag content.getClickedViews().find { it == child } != null + } + .onDismissed { + popOfVisualAngleAdjust.set(null) + } + .build() + .also { + popOfVisualAngleAdjust.set(WeakReference(it)) + it.show() + } + } else { + old?.takeIf { it.isShowing() }?.also { it.hide() } + } + } + + override fun isHdMapVisualAngleAdjustShow(): Boolean { + return popOfVisualAngleAdjust.get()?.get()?.isShowing() ?: false + } } \ 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/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 02fbbe3363..816e7254a0 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -56,6 +56,7 @@ import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.data.multidisplay.TelematicConstant import com.mogo.eagle.core.data.obu.MogoObuConst import com.mogo.eagle.core.data.obu.ObuStatusInfo +import com.mogo.eagle.core.function.angle.scenes.Default import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationWGS84Listener @@ -86,8 +87,10 @@ import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsFuncConfigListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager +import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager import com.mogo.eagle.core.function.call.obu.CallerObuApiManager import com.mogo.eagle.core.function.call.obu.CallerObuConnectListenerManager import com.mogo.eagle.core.function.call.obu.CallerObuInfoListenerManager @@ -139,6 +142,7 @@ import kotlinx.android.synthetic.main.view_debug_setting.view.btnBrakeThreshold import kotlinx.android.synthetic.main.view_debug_setting.view.btnConnectServerIp import kotlinx.android.synthetic.main.view_debug_setting.view.btnDisconnectIpc import kotlinx.android.synthetic.main.view_debug_setting.view.btnDrawFusion +import kotlinx.android.synthetic.main.view_debug_setting.view.btnHdVisualAdjust import kotlinx.android.synthetic.main.view_debug_setting.view.btnIpcReboot import kotlinx.android.synthetic.main.view_debug_setting.view.btnPointCloudColor import kotlinx.android.synthetic.main.view_debug_setting.view.btnPointCloudSize @@ -1309,6 +1313,16 @@ internal class DebugSettingView @JvmOverloads constructor( } //设置工控机连接状态 setAutopilotConnectStatus() + + + // 设置视角调整 + btnHdVisualAdjust?.isChecked = CallerHmiManager.isHdMapVisualAngleAdjustShow() + btnHdVisualAdjust?.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + CallerVisualAngleManager.changeScene(Default()) + } + CallerHmiManager.toggleHdMapVisualAngleAdjust(isChecked) + } } /** diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/HDMapVisualAngleAdjustLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/HDMapVisualAngleAdjustLayout.kt new file mode 100644 index 0000000000..48c59ac290 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/HDMapVisualAngleAdjustLayout.kt @@ -0,0 +1,99 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.view.View +import android.widget.RelativeLayout +import android.widget.SeekBar +import androidx.core.content.ContextCompat +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager +import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.kotlin.onClick +import com.mogo.eagle.core.utilcode.kotlin.safeCancel +import com.mogo.eagle.core.utilcode.kotlin.scope +import kotlinx.android.synthetic.main.layout_hdmap_visual_angle_adjust.view.close +import kotlinx.android.synthetic.main.layout_hdmap_visual_angle_adjust.view.seekbar_testView_angle +import kotlinx.android.synthetic.main.layout_hdmap_visual_angle_adjust.view.seekbar_testView_cameraZ +import kotlinx.android.synthetic.main.layout_hdmap_visual_angle_adjust.view.seekbar_testView_zoom +import kotlinx.android.synthetic.main.layout_hdmap_visual_angle_adjust.view.textView_testView_angle +import kotlinx.android.synthetic.main.layout_hdmap_visual_angle_adjust.view.textView_testView_cameraZ +import kotlinx.android.synthetic.main.layout_hdmap_visual_angle_adjust.view.textView_testView_zoom +import kotlinx.coroutines.Job +import kotlinx.coroutines.launch + +class HDMapVisualAngleAdjustLayout: RelativeLayout { + + constructor(context: Context?) : super(context) + constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) + constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) + + private var job: Job? = null + + init { + LayoutInflater.from(context).inflate(R.layout.layout_hdmap_visual_angle_adjust, this, true) + setBackgroundColor(ContextCompat.getColor(context, R.color.white)) + seekbar_testView_cameraZ.progress = 150 + seekbar_testView_cameraZ.setOnSeekBarChangeListener(object : + SeekBar.OnSeekBarChangeListener { + override fun onProgressChanged(seekBar: SeekBar, i: Int, b: Boolean) { + val v = i.toFloat() / 10.0f + textView_testView_cameraZ.text = "cameraZ: $v/100.0" + toggleVisualAngleChange() + } + + + override fun onStartTrackingTouch(seekBar: SeekBar) {} + override fun onStopTrackingTouch(seekBar: SeekBar) {} + }) + + seekbar_testView_angle.progress = 125 + seekbar_testView_angle.setOnSeekBarChangeListener(object : + SeekBar.OnSeekBarChangeListener { + override fun onProgressChanged(seekBar: SeekBar, i: Int, b: Boolean) { + val v = i.toFloat() / 10.0f + textView_testView_angle.text = "angle: $v/90" + toggleVisualAngleChange() + } + + override fun onStartTrackingTouch(seekBar: SeekBar) {} + override fun onStopTrackingTouch(seekBar: SeekBar) {} + }) + + seekbar_testView_zoom.progress = 8 + seekbar_testView_zoom.setOnSeekBarChangeListener(object : + SeekBar.OnSeekBarChangeListener { + override fun onProgressChanged(seekBar: SeekBar, i: Int, b: Boolean) { + val v = i.toFloat() / 10.0f + textView_testView_zoom.text = "zoom: $v/5" + toggleVisualAngleChange() + } + + override fun onStartTrackingTouch(seekBar: SeekBar?) { + } + override fun onStopTrackingTouch(seekBar: SeekBar?) { + } + }) + + close?.onClick { + CallerHmiManager.toggleHdMapVisualAngleAdjust(false) + } + } + + private fun toggleVisualAngleChange() { + job?.safeCancel() + scope.launch { + val eyeHeight: Float = seekbar_testView_cameraZ.progress / 10.0f + val zoom: Float = seekbar_testView_zoom.progress / 10.0f + val angle: Float = seekbar_testView_angle.progress / 10.0f + CallerMapUIServiceManager.getMapUIController()?.changeVisualAngle(eyeHeight, angle, zoom, -1) + }.also { + job = it + } + } + + fun getClickedViews(): List { + return listOf(seekbar_testView_cameraZ, seekbar_testView_angle, seekbar_testView_zoom, close) + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_hdmap_visual_angle_adjust.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_hdmap_visual_angle_adjust.xml new file mode 100644 index 0000000000..4c822e55ee --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_hdmap_visual_angle_adjust.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index f179d52f4a..c75982ecc2 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -1874,7 +1874,6 @@ app:layout_constraintRight_toRightOf="@id/tbChangeAutoPilotStatus" app:layout_constraintTop_toBottomOf="@id/tbChangeAutoPilotStatus" /> -