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-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-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..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,26 +236,36 @@ 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) {
- // 红绿灯处理
- 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();
}
}
}
@@ -265,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);
@@ -275,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
@@ -303,6 +317,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);
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