From 90c8e9f07a272fb3af6193567aeefced655a6ddc Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Thu, 29 Oct 2020 19:16:07 +0800 Subject: [PATCH 1/3] opt --- .../extensions/utils/AdasNoticeHelper.java | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/AdasNoticeHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/AdasNoticeHelper.java index 0d2eb539ee..aaeec71c8f 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/AdasNoticeHelper.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/AdasNoticeHelper.java @@ -242,21 +242,28 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca }else { int type = intent.getIntExtra("type", -1); if (type == 2) { - // 红绿灯处理 - String data = intent.getStringExtra("data"); - if (data != null && !data.isEmpty()) { - try { - JSONObject jsonObject = new JSONObject(data); - String lightStatus = jsonObject.optString("lightStatus"); - String surplusTime = jsonObject.optString("surplusTime"); - if (!lightStatus.isEmpty() && !surplusTime.isEmpty()) { - handleObuTrafficLightInfo(lightStatus, surplusTime); - } else { - Logger.d(TAG, "红绿灯必要信息都为空,不做展示"); + String obuLightAction = intent.getStringExtra("action"); + if("1".equals(obuLightAction)){ + // 隐藏红绿灯 + handler.removeMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_OBU); + handler.sendEmptyMessage(MSG_HIDE_TRAFFIC_LIGHT_BY_OBU); + }else { + // 红绿灯处理 + String data = intent.getStringExtra("data"); + if (data != null && !data.isEmpty()) { + try { + JSONObject jsonObject = new JSONObject(data); + String lightStatus = jsonObject.optString("lightStatus"); + String surplusTime = jsonObject.optString("surplusTime"); + if (!lightStatus.isEmpty() && !surplusTime.isEmpty()) { + handleObuTrafficLightInfo(lightStatus, surplusTime); + } else { + Logger.d(TAG, "红绿灯必要信息都为空,不做展示"); + } + } catch (Exception e) { + Logger.e(TAG, e, "解析adas数据异常"); + e.printStackTrace(); } - } catch (Exception e) { - Logger.e(TAG, e, "解析adas数据异常"); - e.printStackTrace(); } } } @@ -303,6 +310,8 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca if (leftTime < 0) { leftTime = 0; } + Logger.d("CloudTrafficLight", + "lightStatus: " + lightStatus + " current: " + System.currentTimeMillis() + " cloudType: " + roadData.getSystemTime() + " diff: " + diff + " cloudLeftTime: " + roadData.getLightLeftTime() + " leftTime: " + leftTime); drawTrafficLight(lightStatus, "" + leftTime); handler.sendEmptyMessageDelayed(MSG_HIDE_TRAFFIC_LIGHT_BY_CLOUD, HIDE_TRAFFIC_LIGHT_DELAY); From 8a8c66ebb70e2b7f18492ef8404d61b5453ea499 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Fri, 30 Oct 2020 14:12:14 +0800 Subject: [PATCH 2/3] opt --- .idea/misc.xml | 2 +- .../extensions/utils/AdasNoticeHelper.java | 21 ++++++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 2db9aab721..47f1a4e1d4 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,7 +4,7 @@ - + diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/AdasNoticeHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/AdasNoticeHelper.java index aaeec71c8f..d5ec491f0e 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/AdasNoticeHelper.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/AdasNoticeHelper.java @@ -59,6 +59,8 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca private Handler handler = new Handler(this); + private boolean isObuLightData = false; + private View selfCar; private boolean lightCenter = true; @@ -95,10 +97,6 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca if(!lightCenter) { handler.sendEmptyMessageDelayed(MSG_REFRESH_CAR_STRATEGY, STRATEGY_DELAY); } - // debug code -// tvSelfSpeed.setVisibility(View.VISIBLE); -// tvTrafficLight.setVisibility(View.VISIBLE); -// tvLimitSpeed.setVisibility(View.VISIBLE); } } @@ -209,11 +207,12 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca tvLimitSpeed.setVisibility(View.GONE); return true; case MSG_HIDE_TRAFFIC_LIGHT_BY_CLOUD: - if (!handler.hasMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_OBU)) { + if (!isObuLightData && !handler.hasMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_OBU)) { tvTrafficLight.setVisibility(View.GONE); } return true; case MSG_HIDE_TRAFFIC_LIGHT_BY_OBU: + isObuLightData = false; if (!handler.hasMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_CLOUD)) { tvTrafficLight.setVisibility(View.GONE); } @@ -237,8 +236,11 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca String action = intent.getAction(); if("com.mogo.launcher.adas".equals(action)){ // 收到限速信息 - limitSpeed = intent.getIntExtra("adas_speed_limit", -1); - drawLimitSpeed(); + int limit = intent.getIntExtra("adas_speed_limit", -1); + if(limit>0) { + limitSpeed = limit; + drawLimitSpeed(); + } }else { int type = intent.getIntExtra("type", -1); if (type == 2) { @@ -272,6 +274,7 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca } private void handleObuTrafficLightInfo(String lightStatus, String surplusTime) { + isObuLightData = true; if (tvTrafficLight != null) { handler.removeMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_OBU); handler.removeMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_CLOUD); @@ -282,6 +285,10 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca } private void handleCloudTrafficLight(CloudRoadData roadData) { + if (isObuLightData) { + handler.removeMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_CLOUD); + return; + } if (tvTrafficLight != null && !handler.hasMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_OBU)) { handler.removeMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_CLOUD); // todo drawTrafficLight From 350a3af59cf864a35df7293321f95e593b6075c7 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Fri, 30 Oct 2020 17:20:32 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9C=BA=E5=99=A8?= =?UTF-8?q?=E8=A7=86=E8=A7=92=E7=82=B9=E5=87=BB=E6=94=BE=E5=A4=A7=E7=BC=A9?= =?UTF-8?q?=E5=B0=8F=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/module/common/wm/DialogImpl.java | 4 ++ .../module/common/wm/IWindowManagerView.java | 6 +++ .../module/common/wm/WindowManagerImpl.java | 17 ++++++++ .../module/common/wm/WindowManagerView.java | 11 +++++ .../service/vrmode/VrModeController.java | 10 ++--- .../vision/MachineVisionMapService.java | 42 ++++++++++++++++++- .../res/layout/module_mvision_layout_view.xml | 5 +++ .../src/main/res/values-xhdpi/dimens.xml | 13 ++++-- 8 files changed, 98 insertions(+), 10 deletions(-) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java index a7bcb305c1..8e93bfca6c 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java @@ -39,6 +39,10 @@ class DialogImpl implements IWindowManagerView { dialog.show(); } + @Override + public void update(WindowManagerView.WMViewParams params) { + } + @Override public void hide() { /* diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java index cab1b77605..9f30fab32b 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java @@ -27,6 +27,12 @@ interface IWindowManagerView { */ void show(); + /** + * 更新界面位置或大小 + * @param params 具体参数 + */ + void update(WindowManagerView.WMViewParams params); + /** * 隐藏 */ diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java index d810e6033f..1e491f0669 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java @@ -4,6 +4,7 @@ import android.content.Context; import android.graphics.PixelFormat; import android.os.Build; import android.view.MotionEvent; +import android.view.View; import android.view.WindowManager; /** @@ -16,6 +17,8 @@ class WindowManagerImpl implements IWindowManagerView { private WindowManagerView.WMViewParams mParams; private boolean isShowing; + private View rootView; + private float mLastX, mLastY; private int mOldOffsetX, mOldOffsetY; @@ -23,6 +26,10 @@ class WindowManagerImpl implements IWindowManagerView { public void init( WindowManagerView.WMViewParams params ) { mParams = params; mWindowManager = ( WindowManager ) mParams.mContext.getApplicationContext().getSystemService( Context.WINDOW_SERVICE ); + generateLayoutParams(); + } + + private void generateLayoutParams(){ mLayoutParams = new WindowManager.LayoutParams(); if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ) { mLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; @@ -80,10 +87,20 @@ class WindowManagerImpl implements IWindowManagerView { public void show() { if ( !isShowing ) { isShowing = true; + rootView = mParams.mContentView; mWindowManager.addView( mParams.mContentView, mLayoutParams ); } } + @Override + public void update(WindowManagerView.WMViewParams params) { + if (isShowing) { + mParams = params; + generateLayoutParams(); + mWindowManager.updateViewLayout(rootView,mLayoutParams); + } + } + @Override public void hide() { if ( isShowing && mParams != null ) { diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java index db2b244273..4d85ed9a2c 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java @@ -116,4 +116,15 @@ public class WindowManagerView { public int mY; public int mGravity; } + + public void exchangeSizeAndPosition(int width, int height, int x, int y) { + if (isShowing()) { + mParams.mX = x; + mParams.mY = y; + mParams.mWidth = width; + mParams.mHeight = height; + mManagerView.update(mParams); + } + } + } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/vrmode/VrModeController.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/vrmode/VrModeController.java index fc18405fd2..6f8521dab3 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/vrmode/VrModeController.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/vrmode/VrModeController.java @@ -51,11 +51,11 @@ class VrModeController { } public void onVrModeChanged( boolean isVrMode ) { -// if ( isVrMode ) { -// bindVrModeService(); -// } else { -// unbindVrModeService(); -// } + if ( isVrMode ) { + bindVrModeService(); + } else { + unbindVrModeService(); + } } private void bindVrModeService() { diff --git a/modules/mogo-modules-mvision/src/main/java/com/mogo/module/machine/vision/MachineVisionMapService.java b/modules/mogo-modules-mvision/src/main/java/com/mogo/module/machine/vision/MachineVisionMapService.java index d2b117ff90..a177659e42 100644 --- a/modules/mogo-modules-mvision/src/main/java/com/mogo/module/machine/vision/MachineVisionMapService.java +++ b/modules/mogo-modules-mvision/src/main/java/com/mogo/module/machine/vision/MachineVisionMapService.java @@ -33,6 +33,8 @@ class MachineVisionMapService extends Service { private WindowManagerView mMachineVisionMapViewManager; private View mRootView; + private View mClickView; + private MachineVisionMapView mMapView; @Nullable @Override @@ -111,6 +113,8 @@ class MachineVisionMapService extends Service { } } + private boolean isSmall = true; + private void addMachineVisionMapView() { mMachineVisionMapViewManager = new WindowManagerView.Builder( getApplicationContext() ) .contentView( R.layout.module_mvision_layout_view ) @@ -125,8 +129,42 @@ class MachineVisionMapService extends Service { .gravity( Gravity.TOP | Gravity.LEFT ) .showInWindowManager(); mRootView = mMachineVisionMapViewManager.findViewById( R.id.module_mvision_map_root ); - MachineVisionMapViewHandler.getInstance().setMachineVisionMapView( mMachineVisionMapViewManager.findViewById( R.id.module_mvision_map_view ) ); + mClickView = mMachineVisionMapViewManager.findViewById(R.id.module_mvision_map_click); + mMapView = mMachineVisionMapViewManager.findViewById(R.id.module_mvision_map_view); + MachineVisionMapViewHandler.getInstance().setMachineVisionMapView( mMapView ); mMachineVisionMapViewManager.show(); + + mClickView.setOnClickListener(v -> { + int width, height, x, y; + if (isSmall) { + // 变大 + isSmall = false; + width = getResources().getDimensionPixelSize(R.dimen.module_mvision_big_view_width); + height = getResources().getDimensionPixelSize(R.dimen.module_mvision_big_view_height); + x = getResources().getDimensionPixelSize(R.dimen.module_mvision_big_view_x); + y = getResources().getDimensionPixelSize(R.dimen.module_mvision_big_view_y); + }else{ + // 变小 + isSmall = true; + width = getResources().getDimensionPixelSize(R.dimen.module_mvision_view_width); + height = getResources().getDimensionPixelSize(R.dimen.module_mvision_view_height); + x = getResources().getDimensionPixelSize(R.dimen.module_mvision_view_x); + y = getResources().getDimensionPixelSize(R.dimen.module_mvision_view_y); + } + mRootView.getLayoutParams().width = width; + mRootView.getLayoutParams().height = height; + mRootView.setLayoutParams(mRootView.getLayoutParams()); + + mClickView.getLayoutParams().width = width; + mClickView.getLayoutParams().height = height; + mClickView.setLayoutParams(mClickView.getLayoutParams()); + + mMapView.getLayoutParams().width = width; + mMapView.getLayoutParams().height = height; + mMapView.setLayoutParams(mMapView.getLayoutParams()); + + mMachineVisionMapViewManager.exchangeSizeAndPosition(width, height, x, y); + }); } @Override @@ -136,6 +174,8 @@ class MachineVisionMapService extends Service { if ( mMachineVisionMapViewManager != null ) { mMachineVisionMapViewManager.dismiss(); mRootView = null; + mClickView = null; + mMapView = null; } } } diff --git a/modules/mogo-modules-mvision/src/main/res/layout/module_mvision_layout_view.xml b/modules/mogo-modules-mvision/src/main/res/layout/module_mvision_layout_view.xml index 47f1317dde..ca3cd5c8a5 100644 --- a/modules/mogo-modules-mvision/src/main/res/layout/module_mvision_layout_view.xml +++ b/modules/mogo-modules-mvision/src/main/res/layout/module_mvision_layout_view.xml @@ -8,4 +8,9 @@ android:id="@+id/module_mvision_map_view" android:layout_width="@dimen/module_mvision_view_width" android:layout_height="@dimen/module_mvision_view_height" /> + + \ No newline at end of file diff --git a/modules/mogo-modules-mvision/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-modules-mvision/src/main/res/values-xhdpi/dimens.xml index 0956abf41e..d7917ae5cf 100644 --- a/modules/mogo-modules-mvision/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-modules-mvision/src/main/res/values-xhdpi/dimens.xml @@ -1,7 +1,12 @@ - 960px - 540px - 300px - 100px + 460px + 460px + 204px + 368px + + 0px + 0px + 1920px + 1080px \ No newline at end of file