diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/LoginProvider.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/LoginProvider.kt index dfb9392426..7ea43aa64b 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/LoginProvider.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/LoginProvider.kt @@ -139,7 +139,9 @@ class LoginProvider : LoginService { changeStatus(checkAllEnv) UiThreadHandler.post({ changeStatus(checkAllEnv) - (loginFragment as ILoginViewCallback).checkAllEnv(checkAllEnv) + if (loginFragment!!.isAdded) { + (loginFragment as ILoginViewCallback).checkAllEnv(checkAllEnv) + } },UiThreadHandler.MODE.QUEUE) } } @@ -148,7 +150,9 @@ class LoginProvider : LoginService { } override fun changeStatus(currentStatus: String) { - (loginFragment as ILoginViewCallback).updateStatus(currentStatus) + if (loginFragment!!.isAdded) { + (loginFragment as ILoginViewCallback).updateStatus(currentStatus) + } } diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginFragment.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginFragment.kt index 7025d727f5..122ec46324 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginFragment.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginFragment.kt @@ -303,8 +303,8 @@ class LoginFragment : MvpFragment(), ILoginView override fun showErrorInfo(errorInfo: String) { ToastUtils.showLong(errorInfo) - eiv_Info.visibility = View.VISIBLE - eiv_Info.showErrinfo(errorInfo) + eiv_Info?.visibility = View.VISIBLE + eiv_Info?.showErrinfo(errorInfo) } override fun checkAllEnv( diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginPassengerFragment.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginPassengerFragment.kt index 8dbda19ab5..d008108b09 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginPassengerFragment.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginPassengerFragment.kt @@ -98,12 +98,12 @@ class LoginPassengerFragment : MvpFragment) { d(LineModel.TAG, "queryBusLines onNext ${data}") viewCallback?.onBusLinesChange(data.toMutableList()) + if(ProjectUtils.isSaas()&& AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) { + + }else{ + SharedPrefsMgr.getInstance().putLong(EXECUTABLECHANGETIME, DateTimeUtil.getCurrentTimeStamp()) + onRefreshSuccess(DateTimeUtil.getCurrentTimeStamp()) + } RxUtils.disposeSubscribe(endTaskDisposable) } 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 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/operate/OperatePanelLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt index acc1a200ba..94c97d38f0 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt @@ -233,7 +233,6 @@ class OperatePanelLayout : LinearLayout { pref.setDefaultValue(defVal) } } - } else { //TODO renwj 处理持久化存储时,将持久化的值重新赋给业务层的静态变量 } } @@ -305,11 +304,11 @@ class OperatePanelLayout : LinearLayout { } override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { - return !preference.isPersistent + return true } override fun onPreferenceClick(preference: Preference): Boolean { - return !preference.isPersistent + return true } } @@ -420,6 +419,11 @@ class OperatePanelLayout : LinearLayout { val isChecked = newValue as? Boolean ?: false HmiBuildConfig.v2iTotalSwitch = isChecked hmiAction("V2I总开关, ", isChecked) + if (!isChecked) { + preferenceScreen.findPreferenceReal(KEY_V2I_TO_PNC)?.also { changeValue(it, false) } + preferenceScreen.findPreferenceReal(KEY_V2I_RED_LIGHT_WARNING)?.also { changeValue(it, false) } + preferenceScreen.findPreferenceReal(KEY_V2I_WEAKNESS_TRAFFIC)?.also { changeValue(it, false) } + } clickEventAnalytics("V2I总开关", isChecked) return true } @@ -430,7 +434,6 @@ class OperatePanelLayout : LinearLayout { FunctionBuildConfig.fusionMode = 2 CallerAutoPilotControlManager.sendFusionMode(2) CallerHmiViewControlListenerManager.invokeFuncMode(IViewControlListener.FUNC_FUSION_COLOR,isChecked) - CallerAutoPilotControlManager.sendV2iToPncCmd(isChecked) hmiAction("V2I场景进PNC, ", isChecked) clickEventAnalytics("V2I场景进PNC", isChecked) 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" /> -