diff --git a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_base_fragment.xml b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_base_fragment.xml index 3e12a1ebb2..96b90db2b4 100644 --- a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_base_fragment.xml +++ b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_base_fragment.xml @@ -12,6 +12,14 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"/> + + + + (), } override fun initViews() { - viewShowDebugView.setOnLongClickListener { - ToggleDebugView.toggleDebugView.toggle(requireContext()) - true - } + } diff --git a/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml b/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml index 447299cd97..8cb712a588 100644 --- a/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml +++ b/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml @@ -6,19 +6,19 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - + + SweeperConst.ARRIVE_AT_END_STATION_DISTANCE) { distance = CoordinateUtils.calculateLineDistance(startLon, startLat, - CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lon(), - CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lat()); + CallerChassisLocationWGS84ListenerManager.INSTANCE.getChassisLocationWGS84().getLongitude(), + CallerChassisLocationWGS84ListenerManager.INSTANCE.getChassisLocationWGS84().getLatitude()); } if (distance <= SweeperConst.ARRIVE_AT_END_STATION_DISTANCE) { diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/SweeperTrafficDataView.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/SweeperTrafficDataView.java index b8e5c3c370..32db9adef0 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/SweeperTrafficDataView.java +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/view/SweeperTrafficDataView.java @@ -94,13 +94,10 @@ public class SweeperTrafficDataView extends ConstraintLayout if (lightSwitch != null) { CallerLogger.INSTANCE.d(TAG, "车辆转向灯:" + lightSwitch.toString()); if (lightSwitch.getNumber()==1){ - CallerVisualAngleManager.INSTANCE.showTurning(true); sweeperTurnSignal.showLeftSignal(); }else if(lightSwitch.getNumber()==2){ - CallerVisualAngleManager.INSTANCE.showTurning(true); sweeperTurnSignal.showRightSignal(); }else{ - CallerVisualAngleManager.INSTANCE.showTurning(false); sweeperTurnSignal.showDirection(); } } diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml index d8661b96c3..9e0352eb96 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml @@ -10,6 +10,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"/> + + + + showBindingCarDialog() "3" -> showModifyBindingCarDialog() "null" -> TipToast.shortTip("当前工控机没有入库") } - SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.CAR_INFO, GsonUtils.toJson(info.getData())) - SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.MAC_ADDRESS, macAddress) + SharedPrefsMgr.getInstance(context).putString( + SharedPrefsConstants.CAR_INFO, + GsonUtils.toJson(info.getData()) + ) } } @@ -133,10 +136,7 @@ class BindingCarNetWorkManager private constructor() { SceneConstant.M_BINDING + TAG, "modifyBindingCar onNext code = " + info.code + "---msg = " + info.msg + "--info.toString() = " + info.toString() ) - if (!SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.MAC_ADDRESS).equals(macAddress) && DebugConfig.isCarModelChange()) { - updateCarVrIconRes(info.data.brandId); - } - SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.MAC_ADDRESS, macAddress) + updateCarVrIconRes(info.data.brandId) } } @@ -155,6 +155,9 @@ class BindingCarNetWorkManager private constructor() { if (brandId == null || brandId.isEmpty()) { return } + if (getDefaultId() == brandId) { + return + } d(SceneConstant.M_BINDING + TAG, "updateCarVrIconRes : $brandId") when (brandId) { "1" -> { @@ -176,4 +179,12 @@ class BindingCarNetWorkManager private constructor() { } } + private fun getDefaultId(): String { + return when (HdMapBuildConfig.currentCarVrIconRes) { + R.raw.chuzuche -> "1" + R.raw.xiaobache -> "3" + else -> "1" + } + } + } \ 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/traffic/NoticeTrafficDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/traffic/NoticeTrafficDialog.kt index 8f2add30d3..0b1490ef68 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/traffic/NoticeTrafficDialog.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/traffic/NoticeTrafficDialog.kt @@ -20,8 +20,7 @@ import com.mogo.eagle.core.data.notice.NoticeTrafficStyleInfo.NoticeTrafficAccou import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData import com.mogo.eagle.core.data.notice.NoticeValue import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.startAutoPilot -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getCurWgs84Lat -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getCurWgs84Lon +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager.bizProvider import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog @@ -201,8 +200,8 @@ class NoticeTrafficDialog : BaseFloatDialog, LifecycleObserver { mTrafficStyleInfo!!.lat, mTrafficStyleInfo!!.lon ) parameters.startLatLon = AutoPilotLonLat( - getCurWgs84Lat(), - getCurWgs84Lon() + CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude, + CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude ) parameters.endLatLon = AutoPilotLonLat(gcj02[0], gcj02[1]) startAutoPilot(parameters) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ToggleDebugViewTrigger.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ToggleDebugViewTrigger.kt new file mode 100644 index 0000000000..72de44ebc8 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ToggleDebugViewTrigger.kt @@ -0,0 +1,16 @@ +package com.mogo.eagle.core.function.hmi.ui.setting + +import android.content.Context +import android.util.AttributeSet +import android.view.View + +class ToggleDebugViewTrigger(context: Context, attrs: AttributeSet? +) : View(context, attrs){ + + init { + setOnLongClickListener { + ToggleDebugView.toggleDebugView.toggle(this.context) + true + } + } +} \ 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/vehicle/SteeringBrakeView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/SteeringBrakeView.kt index 604ae04474..f89fe8f773 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/SteeringBrakeView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/SteeringBrakeView.kt @@ -81,11 +81,9 @@ class SteeringBrakeView(context: Context, attrs: AttributeSet?) : ConstraintLayo ThreadUtils.runOnUiThread { if (lightSwitch.number == 1 || lightSwitch.number == 2) { isShowTurnLight = true - CallerVisualAngleManager.showTurning(true) brakeView.visibility = View.VISIBLE brakeView.setBrakeLight(0) } else { - CallerVisualAngleManager.showTurning(false) brakeView.visibility = View.GONE isShowTurnLight = false } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TurnLightViewStatus.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TurnLightViewStatus.kt index 803b0a815e..c4ebcd4dae 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TurnLightViewStatus.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TurnLightViewStatus.kt @@ -12,16 +12,10 @@ import android.widget.ImageView import androidx.constraintlayout.widget.ConstraintLayout import chassis.Chassis import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLamplightListener -import com.mogo.eagle.core.function.api.map.angle.Turning import com.mogo.eagle.core.function.call.autopilot.CallerChassisLamplightListenerManager -import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.util.ThreadUtils -import kotlinx.android.synthetic.main.view_steering_brake.view.* import kotlinx.android.synthetic.main.view_turn_light_status.view.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch /** * @description @@ -40,6 +34,9 @@ open class TurnLightViewStatus @JvmOverloads constructor( } private val visible: Boolean + private var isLeftLight: Boolean = false + private var isRightLight: Boolean = false + private var isDisappear: Boolean = false init { val typedArray = context.obtainStyledAttributes(attrs, R.styleable.TurnLightView) @@ -73,7 +70,6 @@ open class TurnLightViewStatus @JvmOverloads constructor( super.onAutopilotLightSwitchData(lightSwitch) lightSwitch?.let { ThreadUtils.runOnUiThread { - turnLightView.visibility = View.VISIBLE setTurnLight(it) } } @@ -86,27 +82,37 @@ open class TurnLightViewStatus @JvmOverloads constructor( if (!isAttachedToWindow) { return } - GlobalScope.launch(Dispatchers.Main) { - //根据左右进行显示和隐藏,实际要判断每个来的时间和频度 - when (directionLight) { - Chassis.LightSwitch.LIGHT_LEFT -> { //左转向 - CallerVisualAngleManager.showTurning(true) + //根据左右进行显示和隐藏,实际要判断每个来的时间和频度 + when (directionLight.number) { + Chassis.LightSwitch.LIGHT_LEFT_VALUE -> { //左转向 + if (!isLeftLight) { + isLeftLight = true + isRightLight = false + isDisappear = false showNormalAnimation() left_select_image.visibility = View.VISIBLE right_select_image.visibility = View.GONE right_select_image.clearAnimation() setAnimation(left_select_image) } - Chassis.LightSwitch.LIGHT_RIGHT -> { //右转向 - CallerVisualAngleManager.showTurning(true) + } + Chassis.LightSwitch.LIGHT_RIGHT_VALUE -> { //右转向 + if (!isRightLight) { + isRightLight = true + isLeftLight = false + isDisappear = false showNormalAnimation() left_select_image.visibility = View.GONE right_select_image.visibility = View.VISIBLE left_select_image.clearAnimation() setAnimation(right_select_image) } - else -> { //消失 - CallerVisualAngleManager.showTurning(false) + } + Chassis.LightSwitch.LIGHT_NONE_VALUE -> { //消失 + if (!isDisappear) { + isDisappear = true + isLeftLight = false + isRightLight = false animationDisappear() } } @@ -157,8 +163,10 @@ open class TurnLightViewStatus @JvmOverloads constructor( } override fun onAnimationEnd(p0: Animation?) { - left_nor_image.visibility = View.GONE - right_nor_image.visibility = View.GONE + if (!visible) { + left_nor_image.visibility = View.GONE + right_nor_image.visibility = View.GONE + } } }) @@ -170,10 +178,9 @@ open class TurnLightViewStatus @JvmOverloads constructor( } override fun onAnimationEnd(p0: Animation?) { - if (visible) { + if (!visible) { turn_light_layout.visibility = View.GONE } - stopAnimate() } }) } @@ -182,19 +189,13 @@ open class TurnLightViewStatus @JvmOverloads constructor( private fun setAnimation(imageView: ImageView) { val animationSet = AnimatorSet() val valueAnimator = ObjectAnimator.ofFloat(imageView, "alpha", 0f, 1.0f) - val valueAnimatorDisappare = ObjectAnimator.ofFloat(imageView, "alpha", 1.0f, 0f) + val valueAnimatorDisappear = ObjectAnimator.ofFloat(imageView, "alpha", 1.0f, 0f) valueAnimator.duration = 1000 - valueAnimatorDisappare.duration = 800 + valueAnimatorDisappear.duration = 800 valueAnimator.repeatCount = -1 - valueAnimatorDisappare.repeatCount = -1 - animationSet.playTogether(valueAnimatorDisappare, valueAnimator) + valueAnimatorDisappear.repeatCount = -1 + animationSet.playTogether(valueAnimatorDisappear, valueAnimator) animationSet.start() } - private fun stopAnimate() { - turn_light_layout.clearAnimation() - left_nor_image.clearAnimation() - right_nor_image.clearAnimation() - } - } \ 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/widget/AutoPilotStatusView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt index dd22839a09..8ec86f7842 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt @@ -10,8 +10,7 @@ import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getCurWgs84Lat -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getCurWgs84Lon +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager import com.mogo.eagle.core.function.call.hmi.CallerHmiListenerManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -80,7 +79,10 @@ class AutoPilotStatusView constructor( currentAutopilot.endName = "HYJC" currentAutopilot.isSpeakVoice = false currentAutopilot.startLatLon = - AutopilotControlParameters.AutoPilotLonLat(getCurWgs84Lat(), getCurWgs84Lon()) + AutopilotControlParameters.AutoPilotLonLat( + CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude, + CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude + ) currentAutopilot.endLatLon = AutopilotControlParameters.AutoPilotLonLat(26.819716071924688, 112.57715442110867) currentAutopilot.vehicleType = 10 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/LimitingVelocityView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/LimitingVelocityView.kt index ec4155e06c..8746a17300 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/LimitingVelocityView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/LimitingVelocityView.kt @@ -2,6 +2,7 @@ package com.mogo.eagle.core.function.hmi.ui.widget import android.content.Context import android.util.AttributeSet +import android.util.Log import android.view.LayoutInflater import android.view.View import androidx.constraintlayout.widget.ConstraintLayout @@ -12,6 +13,7 @@ import com.mogo.eagle.core.function.api.v2x.ILimitingVelocityListener import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.call.v2x.CallerLimitingVelocityListenerManager import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.util.ThreadUtils import kotlinx.android.synthetic.main.view_limiting_speed_vr.view.* /** @@ -37,13 +39,16 @@ class LimitingVelocityView constructor( } override fun onLimitingVelocityChange(limitingVelocity: Int, sourceType: DataSourceType) { - if (limitingVelocity > 0) { - this.visibility = View.VISIBLE - tvLimitingVelocity.text = "$limitingVelocity" - tvLimitingSource.text = sourceType.name - } else { - this.visibility = View.GONE - tvLimitingSource.text = "" + ThreadUtils.runOnUiThread { + if (limitingVelocity > 0) { + visibility = View.VISIBLE + tvLimitingVelocity.text = "$limitingVelocity" + Log.d("emArrow","limit : ${ DataSourceType.getName(sourceType)}") + tvLimitingSource.text = DataSourceType.getName(sourceType) + } else { + visibility = View.GONE + tvLimitingSource.text = "" + } } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_limiting_speed_vr.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_limiting_speed_vr.xml index fb6060c188..c7d079cfb7 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_limiting_speed_vr.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_limiting_speed_vr.xml @@ -23,14 +23,12 @@ android:id="@+id/tvLimitingSource" android:layout_width="120dp" android:layout_height="35dp" - android:layout_marginEnd="40dp" android:gravity="center" - android:text="" + android:text="123" android:textColor="@color/color_FFFFFF" android:textSize="@dimen/dp_30" android:textStyle="bold" app:layout_constraintLeft_toLeftOf="parent" - app:layout_constraintTop_toBottomOf="@+id/tvLimitingVelocity" - android:visibility="gone" /> + app:layout_constraintTop_toBottomOf="@+id/tvLimitingVelocity" /> \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/RouteOverlayDrawer.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/RouteOverlayDrawer.java index 9cf9145540..a218d36f2e 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/RouteOverlayDrawer.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/RouteOverlayDrawer.java @@ -5,16 +5,20 @@ import android.graphics.Color; import android.os.Handler; import android.os.HandlerThread; import android.util.Log; + import androidx.core.util.Pools; + import com.mogo.eagle.core.data.map.MogoLatLng; -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager; import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils; import com.mogo.map.MogoOverlayManager; import com.mogo.map.overlay.IMogoOverlayManager; import com.mogo.map.overlay.IMogoPolyline; import com.mogo.map.overlay.MogoPolylineOptions; + import java.util.LinkedList; import java.util.List; + import mogo.telematics.pad.MessagePad; public class RouteOverlayDrawer { @@ -128,8 +132,8 @@ public class RouteOverlayDrawer { pps.add(acquire); RouteStrategy.INSTANCE.check(route.getVelocity(), route.getAcceleration(), routeList.size()); } - double lon = CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lon(); - double lat = CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lat(); + double lon = CallerChassisLocationWGS84ListenerManager.INSTANCE.getChassisLocationWGS84().getLongitude(); + double lat = CallerChassisLocationWGS84ListenerManager.INSTANCE.getChassisLocationWGS84().getLatitude(); if (points.size() > 0) { MogoLatLng top = null; while (points.size() != 0) { @@ -140,8 +144,8 @@ public class RouteOverlayDrawer { if (first == top) { break; } - lon = CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lon(); - lat = CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lat(); + lon = CallerChassisLocationWGS84ListenerManager.INSTANCE.getChassisLocationWGS84().getLongitude(); + lat = CallerChassisLocationWGS84ListenerManager.INSTANCE.getChassisLocationWGS84().getLatitude(); long angle = isPointOnCarFront(lon, lat, bearing, first.lon, first.lat); if (angle >= 90) { RouteStrategy.INSTANCE.remove(first.acc); diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/MapBizView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/MapBizView.kt index 405cb1b4f5..ada377f31c 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/MapBizView.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/MapBizView.kt @@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.view import android.content.Context import android.os.Bundle import android.util.AttributeSet +import android.util.Log import androidx.lifecycle.LifecycleObserver import chassis.Chassis import com.mogo.eagle.core.data.map.MogoLocation @@ -11,15 +12,17 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationWGS84Liste import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener import com.mogo.eagle.core.function.call.autopilot.CallerChassisLamplightListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager -import com.mogo.eagle.core.function.call.map.* +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.setting.CallerSkinModeListenerManager import com.mogo.map.MogoMapView -class MapBizView(context: Context?, attrs: AttributeSet?) : MogoMapView(context, attrs), IMoGoSkinModeChangeListener, - IMoGoChassisLocationWGS84Listener, IMoGoChassisLamplightListener , LifecycleObserver { - - companion object{ +class MapBizView(context: Context?, attrs: AttributeSet?) : MogoMapView(context, attrs), + IMoGoSkinModeChangeListener, + IMoGoChassisLocationWGS84Listener, IMoGoChassisLamplightListener, LifecycleObserver { + + companion object { private const val TAG = "MapBizView" } @@ -34,7 +37,7 @@ class MapBizView(context: Context?, attrs: AttributeSet?) : MogoMapView(context, } - private fun initMapView(){ + private fun initMapView() { map?.uiSettings?.let { //设置所有手势是否可用 it.setAllGesturesEnabled(true) @@ -84,26 +87,47 @@ class MapBizView(context: Context?, attrs: AttributeSet?) : MogoMapView(context, setExtraGPSData(gnssInfo) } + @Volatile + private var isVisualAngleChanged = false + override fun onAutopilotLightSwitchData(lightSwitch: Chassis.LightSwitch?) { super.onAutopilotLightSwitchData(lightSwitch) lightSwitch?.let { when (it.number) { - 1 -> { //左转灯 + Chassis.LightSwitch.LIGHT_LEFT_VALUE -> { //左转灯 CallerVisualAngleManager.showTurning(true) - CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(4, 500) + showTurn(1) } - 2 -> { //右转灯 + Chassis.LightSwitch.LIGHT_RIGHT_VALUE -> { //右转灯 CallerVisualAngleManager.showTurning(true) - CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(2, 500) + showTurn(2) + } - else -> { + Chassis.LightSwitch.LIGHT_NONE_VALUE -> { CallerVisualAngleManager.showTurning(false) - CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(3, 500) + hideTurn() } } } } + private fun showTurn(lightNum: Int) { + if (!isVisualAngleChanged) { + isVisualAngleChanged = true + when (lightNum) { + 1 -> CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(4, 500) + 2 -> CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(2, 500) + } + } + } + + private fun hideTurn() { + if (isVisualAngleChanged) { + isVisualAngleChanged = false + CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(3, 500) + } + } + override fun onDestroy() { // 先取消注册数据,再onDestroy CallerSkinModeListenerManager.removeListener(TAG) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XWarningMarker.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XWarningMarker.java index 51af0affe0..b81750d42c 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XWarningMarker.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XWarningMarker.java @@ -11,7 +11,7 @@ import com.mogo.commons.utils.Trigonometric; import com.mogo.eagle.core.data.map.MogoLatLng; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.data.v2x.DrawLineInfo; -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager; import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi; import com.mogo.eagle.core.function.v2x.events.manager.IMoGoPersonWarnPolylineManager; @@ -44,8 +44,8 @@ public class V2XWarningMarker implements IV2XMarker { private final List fillPoints = new ArrayList();//停止线经纬度合集 private boolean isFirstLocation = false; private MogoLatLng carLocation = new MogoLatLng( - CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lat(), - CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lon() + CallerChassisLocationWGS84ListenerManager.INSTANCE.getChassisLocationWGS84().getLatitude(), + CallerChassisLocationWGS84ListenerManager.INSTANCE.getChassisLocationWGS84().getLongitude() ); /* diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/utils/MapUtils.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/utils/MapUtils.kt index 09ec0fb754..c49b645366 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/utils/MapUtils.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/utils/MapUtils.kt @@ -3,7 +3,7 @@ package com.mogo.eagle.core.function.v2x.events.utils import android.content.Context import android.graphics.Rect import com.mogo.eagle.core.data.map.MogoLatLng -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.utilcode.util.WindowUtils @@ -24,8 +24,8 @@ class MapUtils { mBoundRect.right = WindowUtils.dip2px(context, 100f) // 当前车辆位置 val carLocation = MogoLatLng( - CallerAutoPilotStatusListenerManager.getCurWgs84Lat(), - CallerAutoPilotStatusListenerManager.getCurWgs84Lon() + CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude, + CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude ) // 调整自适应的地图镜头 CallerMapUIServiceManager.getMapUIController() diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/DataSourceType.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/DataSourceType.kt index 7cc8ddb8fa..bddc074309 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/DataSourceType.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/DataSourceType.kt @@ -1,11 +1,26 @@ package com.mogo.eagle.core.data.enums + + enum class DataSourceType(name: String) { DEFAULT("defalut"), OBU("OBU"), MAP("MAP"), TELEMATIC("TELEMATIC"), AICLOUD("AI云"), - SUMMARY("汇总")// V2X事件汇总 + SUMMARY("汇总");// V2X事件汇总 + + companion object{ + fun getName(type :DataSourceType):String{ + return when(type){ + OBU -> "OBU" + MAP -> "MAP" + TELEMATIC -> "TELEMATIC" + AICLOUD -> "AI云" + SUMMARY -> "汇总" + else -> "defalut" + } + } + } } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisLamplightListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisLamplightListenerManager.kt index e5157806b7..08493422d9 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisLamplightListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisLamplightListenerManager.kt @@ -1,5 +1,6 @@ package com.mogo.eagle.core.function.call.autopilot +import android.util.Log import chassis.Chassis import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLamplightListener import com.mogo.eagle.core.function.call.base.CallerBase @@ -17,24 +18,24 @@ object CallerChassisLamplightListenerManager : CallerBase= 10) { isOnTurnLight = false return turn_light - } else { - turnLightTimes++ - null } + turnLightTimes++ + return null } else { - null + return null } } else { turnLightTimes = 0 diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisLocationWGS84ListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisLocationWGS84ListenerManager.kt index 38a45f7fd9..a0212d23ee 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisLocationWGS84ListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisLocationWGS84ListenerManager.kt @@ -14,9 +14,9 @@ import com.mogo.eagle.core.utilcode.util.TimeUtils object CallerChassisLocationWGS84ListenerManager : CallerBase() { @Volatile - private var mGnssInfo: MogoLocation? = null + private var mGnssInfo: MogoLocation = MogoLocation() - fun getChassisLocationWGS84(): MogoLocation? { + fun getChassisLocationWGS84(): MogoLocation { return mGnssInfo } @@ -40,27 +40,26 @@ object CallerChassisLocationWGS84ListenerManager : CallerBase 0) { - val hzTime = (1.0 / hz.toDouble()) * 1000 - // 获取最后一次回调的时间 - val hzLastSendTime = M_LISTENERS_HZ_LAST_SEND_TIME[tag] - if (hzLastSendTime != null && hzLastSendTime > 0) { - // 计算是否进入下一次回调周期 - val nowTime = TimeUtils.getNowMills() - if (nowTime - hzLastSendTime > hzTime) { - syncLocationCallback(tag, it, mGnssInfo!!, sourceType) - } - } else { - syncLocationCallback(tag, it, mGnssInfo!!, sourceType) + + M_LISTENERS.forEach { + val tag = it.key + // 获取数据监听需要的HZ + val hz = M_LISTENERS_HZ[tag] + if (hz != null && hz > 0) { + val hzTime = (1.0 / hz.toDouble()) * 1000 + // 获取最后一次回调的时间 + val hzLastSendTime = M_LISTENERS_HZ_LAST_SEND_TIME[tag] + if (hzLastSendTime != null && hzLastSendTime > 0) { + // 计算是否进入下一次回调周期 + val nowTime = TimeUtils.getNowMills() + if (nowTime - hzLastSendTime > hzTime) { + syncLocationCallback(tag, it, mGnssInfo, sourceType) } } else { - syncLocationCallback(tag, it, mGnssInfo!!, sourceType) + syncLocationCallback(tag, it, mGnssInfo, sourceType) } + } else { + syncLocationCallback(tag, it, mGnssInfo, sourceType) } } } diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt index 8a8d2dc4d8..75c5a5f04e 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt @@ -28,7 +28,7 @@ object CallerVisualAngleManager { fun showTurning(open: Boolean) { if (open) { if (!isVisualAngleChanged) { - isVisualAngleChanged + isVisualAngleChanged = true changeAngle(Turning(true)) } } else { diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/MultiDisplayUtils.kt b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/MultiDisplayUtils.kt index c24acc4a62..e14d16cc03 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/MultiDisplayUtils.kt +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/MultiDisplayUtils.kt @@ -7,7 +7,6 @@ import android.content.pm.PackageManager import android.hardware.display.DisplayManager import android.util.Log import android.view.Display -import androidx.appcompat.app.AppCompatActivity /** * 多屏幕操作工具类 @@ -15,7 +14,61 @@ import androidx.appcompat.app.AppCompatActivity object MultiDisplayUtils { private val TAG: String = "MultiDisplayUtils" - // 获取 是否支持扩展屏幕打开应用 + /** + * 定昌电子,6屏幕异显 对应的lcd匹配数组, 当前数组只对应于6屏异显, + * 如果是其他屏幕个数, 需要自己重新对应下相关的索引 + * display 里面查看port对应的值 + */ + private var lcd_sub_port_six_lcd_mode = arrayOf( + // main lcd // HDMI-1 + //-------------------begin 定昌电子 RK3588 ------------------- + "port=240", // HDMI-2 + "port=3", // HDMI-3 + "port=243", // HDMI-4 + "port=2", // HDMI-5 + "port=1", // HDMI-6 + //-------------------end 定昌电子 RK3588 ------------------- + ) + + /** + * 获取其他的屏幕 + */ + fun getOtherDisplay(): Array { + val mDisplayManager = + Utils.getApp().getSystemService(Context.DISPLAY_SERVICE) as DisplayManager + // 获取除了内置屏幕(主屏幕)的其它屏幕 + val displays = mDisplayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION) + // 初始化新的集合进行接收排序后的屏幕信息 + val displaysList = arrayOfNulls(displays.size) + + // 判断副屏个数 + if (displays.isNotEmpty()) { + // 循环出来副屏幕进行重新排序 + for (i in displays.indices) { + // 这里如果需要固定某个屏幕, 使用 if( display.toString().indexOf("port=1")!=-1) ) 而不是使用 display[i] + val strDisplayString: String = displays[i].toString() + for (j in lcd_sub_port_six_lcd_mode.indices) { // 这里增加port的匹配, 如果不需要对应的匹配 可看下面的other LCD + if (strDisplayString.indexOf(lcd_sub_port_six_lcd_mode[j]) != -1) { // 查找我们实际屏幕的匹配port + displaysList[j] = displays[i] + break + } + } + } + + // 没有匹配到的显示 + for (i in displays.indices) { + if (displaysList[i] == null) { + displaysList[i] = displays[i] + } + } + } + return displaysList + } + + + /** + * 获取 是否支持扩展屏幕打开应用 + */ fun isSupportMultiDisplay(context: Context): Boolean { // 先检查一下是不是支持在第二屏上显示activity这个特性, // 在ActivityOptions.java setLaunchDisplayId 上面有相关的说明 @@ -23,13 +76,6 @@ object MultiDisplayUtils { return packageManager.hasSystemFeature(PackageManager.FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS) } - // 获取 当前接入的屏幕集合(含主屏幕) - fun getMultiDisplay(context: Context): Array { - // 多次创建副屏 则副屏的id都是增加的,所以不一定是1,这里还是获取一下 - val displayManager = - context.getSystemService(AppCompatActivity.DISPLAY_SERVICE) as DisplayManager - return displayManager.displays - } /** * 在指定ID的屏幕打开Activity,当前应用的,当前进程 @@ -39,8 +85,8 @@ object MultiDisplayUtils { fun startActWithSecond(context: Context, activity: Class<*>) { val launchDisplayId: Int if (isSupportMultiDisplay(context)) { - if (getMultiDisplay(context).size > 1) { - launchDisplayId = getMultiDisplay(context)[1].displayId + if (getOtherDisplay().size > 1 && getOtherDisplay()[0] != null) { + launchDisplayId = getOtherDisplay()[0]!!.displayId // 要加上Intent.FLAG_ACTIVITY_NEW_TASK val options = ActivityOptions.makeBasic() @@ -62,7 +108,7 @@ object MultiDisplayUtils { * @param launchDisplayId 指定屏幕ID * @param activity 要在副屏幕启动的页面 */ - fun startActWithProcess(context: Context, launchDisplayId: Int, activity: Class<*>) { + fun startActWithOther(context: Context, launchDisplayId: Int, activity: Class<*>) { // 要加上Intent.FLAG_ACTIVITY_NEW_TASK val options = ActivityOptions.makeBasic() options.launchDisplayId = launchDisplayId