From e9b2c600f9436d217eeb341ce05a96e9782941c5 Mon Sep 17 00:00:00 2001 From: liujing Date: Fri, 9 Apr 2021 17:10:27 +0800 Subject: [PATCH] =?UTF-8?q?[add]=20=E5=81=9C=E6=AD=A2=E7=BA=BF=E9=80=9A?= =?UTF-8?q?=E8=BF=872D=E8=B5=84=E6=BA=90=E7=BB=98=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../v2x/marker/V2XFrontTargetMarkerView.java | 44 ++++++ .../scene/test/V2XTestConsoleWindow.java | 13 ++ .../scene/warning/V2XWarningMarker.java | 126 ++++-------------- .../main/res/drawable-xhdpi/v2x_stop_line.png | Bin 0 -> 1307 bytes .../v2x_warning_marker_target.png | Bin 0 -> 8929 bytes .../res/layout/v2x_front_target_info_view.xml | 20 +++ .../main/res/layout/window_test_console.xml | 13 ++ 7 files changed, 114 insertions(+), 102 deletions(-) create mode 100644 modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XFrontTargetMarkerView.java create mode 100644 modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_stop_line.png create mode 100644 modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_warning_marker_target.png create mode 100644 modules/mogo-module-v2x/src/main/res/layout/v2x_front_target_info_view.xml diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XFrontTargetMarkerView.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XFrontTargetMarkerView.java new file mode 100644 index 0000000000..89cb6b1283 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XFrontTargetMarkerView.java @@ -0,0 +1,44 @@ +package com.mogo.module.v2x.marker; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.widget.ImageView; + +import androidx.annotation.Nullable; + +import com.mogo.module.common.drawer.marker.MapMarkerBaseView; +import com.mogo.module.common.entity.MarkerShowEntity; +import com.mogo.module.v2x.R; + +/** + * @author liujing + * @description 前方预警目标物2D资源实现,目前只有停止线,可以按需添加其他类型 + * @since: 2021/4/9 + */ +public class V2XFrontTargetMarkerView extends MapMarkerBaseView { + private String TAG = "V2XFrontTargetMarkerView"; + + + public V2XFrontTargetMarkerView(Context context) { + super(context); + } + + public V2XFrontTargetMarkerView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public V2XFrontTargetMarkerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + protected void initView(Context context) { + LayoutInflater.from( context ).inflate(R.layout.v2x_front_target_info_view, this ); + } + + @Override + public void updateView(MarkerShowEntity markerShowEntity) { + + } +} diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/test/V2XTestConsoleWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/test/V2XTestConsoleWindow.java index be6b1185a1..83710ede41 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/test/V2XTestConsoleWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/test/V2XTestConsoleWindow.java @@ -53,6 +53,7 @@ public class V2XTestConsoleWindow extends ConstraintLayout { private Button mBtnTriggerRoadEvent; private Button mBtnClearRoadEvent; private Button mBtnTriggerPushEvent; + private Button mBtnTriggerWarningEvent; private Button mBtnTriggerPushLiveCarEvent; private Button mBtnTriggerAnimationEvent; private Button mBtnbtnFrontCarLiveEvent; @@ -67,6 +68,7 @@ public class V2XTestConsoleWindow extends ConstraintLayout { private ToggleButton nBtnTriggerVR; private Button mBtnAdasDataWarn; + private Button btnTriggerRearVIPCarTip, btnTriggerVehicleBrakes, btnTriggerRearDangerousVehicles, @@ -114,6 +116,7 @@ public class V2XTestConsoleWindow extends ConstraintLayout { flTestPanelShunYi = findViewById(R.id.flTestPanelShunYi); flTestPanelVR = findViewById(R.id.flTestPanelVR); mBtnTriggerOpen = findViewById(R.id.btnTriggerOpen); + mBtnTriggerWarningEvent = findViewById(R.id.btnTriggerWarningEvent); mBtnClearRoadEvent = findViewById(R.id.btnClearRoadEvent); mBtnTriggerRoadEvent = findViewById(R.id.btnTriggerRoadEvent); mBtnTriggerPushEvent = findViewById(R.id.btnTriggerPushEvent); @@ -220,6 +223,16 @@ public class V2XTestConsoleWindow extends ConstraintLayout { }); + //车路云—场景预警-V1.0 碰撞预警 + mBtnTriggerWarningEvent.setOnClickListener(v -> { + V2XMessageEntity v2XMessageEntity = + TestOnLineCarUtils.getV2XScenarioPushFrontWarningEventData(); + + Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION); + intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity); + LocalBroadcastManager.getInstance(getContext()).sendBroadcast(intent); + }); + mBtnTriggerPushEvent.setOnClickListener(v -> { V2XMessageEntity v2XMessageEntity = TestOnLineCarUtils.getV2XScenarioPushEventData(); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java index d7566943a1..770099118b 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java @@ -8,21 +8,31 @@ import com.mogo.map.MogoLatLng; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.module.common.MogoApisHandler; +import com.mogo.module.common.drawer.MarkerDrawer; +import com.mogo.module.common.drawer.marker.EmptyMarkerView; import com.mogo.module.common.drawer.marker.IMarkerView; import com.mogo.module.common.drawer.marker.MapMarkerAdapter; +import com.mogo.module.common.drawer.marker.SimpleWindow3DAdapter; import com.mogo.module.common.entity.MarkerLocation; import com.mogo.module.common.entity.MarkerShowEntity; import com.mogo.module.common.entity.V2XWarningEntity; +import com.mogo.module.v2x.R; import com.mogo.module.v2x.V2XConst; import com.mogo.module.v2x.V2XServiceManager; import com.mogo.module.v2x.entity.model.DrawLineInfo; +import com.mogo.module.v2x.marker.OptimalSpeedMarkerView; +import com.mogo.module.v2x.marker.V2XFrontTargetMarkerView; import com.mogo.module.v2x.scenario.view.IV2XMarker; import com.mogo.module.v2x.utils.LocationUtils; +import com.mogo.utils.ViewUtils; import com.mogo.utils.WorkThreadHandler; import java.util.ArrayList; import java.util.List; +import static com.mogo.module.v2x.V2XConst.V2X_FRONT_WARNING_MARKER; +import static com.mogo.module.v2x.V2XConst.V2X_OPTIMAL_SPEED_MARKER; + /** * @author liujing * @description 前方预警marker打点 绘制安全线和预警线 @@ -33,7 +43,7 @@ public class V2XWarningMarker implements IV2XMarker { private V2XWarningEntity mMarkerEntity; private MarkerShowEntity markerShowEntity = new MarkerShowEntity(); private Context mContext = V2XServiceManager.getContext(); - private List fillPoints = new ArrayList();//停止线经纬度合集 + private IMogoMarker optimalMarker = null; @Override public void drawPOI(Object entity) { @@ -45,16 +55,20 @@ public class V2XWarningMarker implements IV2XMarker { markerShowEntity.setMarkerLocation(location); + MogoMarkerOptions optionsRipple = new MogoMarkerOptions() + .latitude(mMarkerEntity.getLat()) + .longitude(mMarkerEntity.getLon()) + .anchor(0.5f, 0.5f) + .zIndex(MarkerDrawer.MARKER_Z_INDEX_HIGH); + if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { - pointsBetween(); - //绘制停止线 -// drawStopLines(fillPoints); - drawSafeLine(); - WorkThreadHandler.getInstance().postDelayed(() -> { - V2XServiceManager.getMarkerManager().removeMarkers(V2XConst.V2X_FRONT_STOP_LINE); - V2XServiceManager.getMoGoWarnPolylineManager().clearLine(); - }, 6_000); } + optionsRipple + .icon(ViewUtils.fromView(new EmptyMarkerView(V2XServiceManager.getContext()))); +// optionsRipple.icon3DRes(com.mogo.module.common.R.raw.people); + optimalMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_FRONT_WARNING_MARKER, optionsRipple); + optimalMarker.setInfoWindowAdapter(new SimpleWindow3DAdapter(new V2XFrontTargetMarkerView(V2XServiceManager.getContext()))); + optimalMarker.showInfoWindow(); } catch (Exception e) { @@ -62,61 +76,6 @@ public class V2XWarningMarker implements IV2XMarker { } - //绘制安全距离 - private void drawSafeLine() { - clearPOI(); - WorkThreadHandler.getInstance().postDelayed(() -> { - //自车位置 - MogoLatLng car = V2XServiceManager.getNavi().getCarLocation(); - if (car != null) { - //根据到停止线的距离和方向角获取经纬度 - MogoLatLng - stopLineLo = LocationUtils.getNewLocation(car, mMarkerEntity.getStopLineDistance(), mMarkerEntity.getAngle()); -// if (mMarkerEntity.getCollisionLat() > 0 && mMarkerEntity.getCollisionLon() > 0) { -// drawLine(car, stopLineLo); -// } - } else { - Log.d(TAG, "自车位置没有拿到"); - } - }, 0); - } - - //补点后的停止线经纬度合集 - public void pointsBetween() { - try { - fillPoints.clear(); - List stopLines = mMarkerEntity.getStopLines(); - if (stopLines.size() > 1) { - MogoLatLng x = mMarkerEntity.getStopLines().get(0); - MogoLatLng y = mMarkerEntity.getStopLines().get(1); - //两点间的距离 - float distance = CoordinateUtils.calculateLineDistance(x.lon, x.lat, y.lon, y.lat); - float average = distance / 3; - //两点间的角度 - double angle = LocationUtils.getAngle(x.lon, x.lat, y.lon, y.lat); - //根据距离和角度获取下个点的经纬度 - fillPoints.add(x); - for (int i = 1; i < 3; i++) { - MogoLatLng newLocation = LocationUtils.getNewLocation(x, average * i, angle); - fillPoints.add(newLocation); - } - fillPoints.add(y); - } - } catch (Exception e) { - e.printStackTrace(); - } - - } - - //绘制停止线-通过打点的方式实现 - private void drawStopLines(List points) { - clearPOI(); - V2XServiceManager.getMarkerManager().removeMarkers(V2XConst.V2X_FRONT_STOP_LINE); - for (int i = 0; i < points.size(); i++) { - MogoLatLng latLng = (MogoLatLng) points.get(i); - drawMarkerWithLocation(latLng, V2XConst.V2X_FRONT_STOP_LINE); - } - } private void drawMarkerWithLocation(MogoLatLng latLng, String tag) { MogoMarkerOptions options = new MogoMarkerOptions() @@ -132,47 +91,10 @@ public class V2XWarningMarker implements IV2XMarker { marker.setToTop(); } - //绘制并返回marker - public IMogoMarker drawMarkerAndReturn(MarkerShowEntity markerShowEntity) { - MogoMarkerOptions options = new MogoMarkerOptions() - .object(markerShowEntity) - .latitude(markerShowEntity.getMarkerLocation().getLat()) - .longitude(markerShowEntity.getMarkerLocation().getLon()); - IMarkerView iMarkerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, options); - options.icon3DRes(com.mogo.module.service.R.raw.people); - options.anchorColor("#FF4040"); - IMogoMarker marker = V2XServiceManager.getMarkerManager().addMarker(V2XConst.V2X_FRONT_WARNING_MARKER, options); - iMarkerView.setMarker(marker); - marker.setToTop(); - return marker; - } - - //绘制线 - public void drawLine(MogoLatLng s, MogoLatLng e) { - DrawLineInfo drawLineInfo = new DrawLineInfo(); - drawLineInfo.setStartLocation(s); - drawLineInfo.setEndLocation(e); - drawLineInfo.setWidth(60); - V2XServiceManager.getMoGoWarnPolylineManager().drawWarnPolyline(mContext, drawLineInfo); - } - - //平移 - public void smooth(IMogoMarker marker) { - List latLngs = new ArrayList<>(); - MogoLatLng sLocation = new MogoLatLng(mMarkerEntity.getLat(), mMarkerEntity.getLon()); - MogoLatLng endLocation = new MogoLatLng(mMarkerEntity.getCollisionLat(), mMarkerEntity.getCollisionLon()); - latLngs.add(sLocation); - latLngs.add(endLocation); - marker.startSmoothInMs(latLngs, 3000); - - WorkThreadHandler.getInstance().postDelayed(() -> { - clearLine(); - }, 3_000); - } @Override public void clearPOI() { - V2XServiceManager.getMarkerManager().removeMarkers(V2XConst.V2X_FRONT_WARNING_MARKER); + V2XServiceManager.getMarkerManager().removeMarkers(V2X_FRONT_WARNING_MARKER); } public void clearLine() { diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_stop_line.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_stop_line.png new file mode 100644 index 0000000000000000000000000000000000000000..2bda783ed5cabd5fe656f0b6a71d8309ca46ef20 GIT binary patch literal 1307 zcmV+$1?2jPP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91W1s^71ONa40RR918~^|S0LF_61ONa8g-Jv~RA>e5Sl?@0MHHU7dv`a< z?%j=X1Byg!8ZG#`n=Lh#E&Yd%7?svX9%$zeL1hv}q^lSB8 zu7K}B8|*P}P_MT_Z4i(`Tuh}>AIR(1n@p%zszPC?R;zubgg76L zNjWv@x{JMby?tFcjB6sEm7bhj7E)dV2`q4}Uca%P%|6ehIwkZN?+C=Tv=F~{+C1r7 z7Y^f_h-b-5ms)AZc~eUH1&Ao6@}5!)tNDD6i9wQ$<`_hHOUYUZ| z6%06EpPoJz1i`no_!;yqDdz*FX7Ejcs92Wuj_DcC=5*o;WEA&41B!;jr)f7_ToF*v_qX zyF|xSxGQi>fd_U8^cZJedy%?u*hdrax`Kg3NBQFWFkc{nTh@Ci*L@ul2_1Tj!;VSr zM(V<0-%P;^&my|W*|oK`PgM|n^e=%wgl(T0EtSd}giz}G{$=XF038MB^HehV30)9< zw%JbV!eKv5!;|XVxma~+X^zU)H$Z|Cb7$juOgkjJYmhN6eQ(JD z?i#vq*jE$rEDFTLMj-GU;y8uP0s)fH)A%vkP8UPc6u_zwFY*FxC3WGj560r@dQj7a z!vQf3k4_{Znu){@Tu+g~h~JVjOm`$2`pEv8|*o9QMIPJWCut>{+&54@vm`*u5)P4ykN5%A`6a^cbhA zY7F{t-t26v)8>iax^UP51Mwb}wo1unE;sQ|sc~=#gz#FK%;IxbudXw-H*j z;jo|k9dFCZiAnq~^{hbO&d{};b>Z+bnt<1}Gmz*;n$4HPe1QZWkKdtJ+n*qj(4ogT z?3mO5rR_7jC~bA%a1eCydRllAH|qNA>{Q_U4t|R2 zi9QxLdx;G%eM(JHnKcsH(q+*p7JnV&uAvKOV_`J$dYX8aC>Em}2&!H0JEu6w-aj^_$)ACe Rz=r?;002ovPDHLkV1k-CWs(2@ literal 0 HcmV?d00001 diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_warning_marker_target.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_warning_marker_target.png new file mode 100644 index 0000000000000000000000000000000000000000..be6da047d09af9da4cb879e906d19c2522116d1d GIT binary patch literal 8929 zcmZ{K1ymeC*6uKaySqCfFi3D1+=5#mxVsE6I0Scs1x@e}G-%Mk5ZqmYy9I(vaCl^Q z-|oKu{IB{{*R6ZM@7`NgeNLU~?r3#Yc`S5tbN~Q=rKljI`P^DQS5Z{t=X;_!&FFK3 zXd|g22>{e2VBDJ_J@;uX6f{);0AFSRASes~xP4Xy{Q>|yxB!5CQvg6X0{|d_W_{NX zeKv$y=_y*Pr~qC(%cuY(1bhJKSweWe00`uOzuulDz-t7Gf6JN(tpCCQ0f0z50OG$e z`p@m(qVQb*a{k$Z@(}*xF%S4}v}GRX-}2u)0Mi=+e;H^{g}3ei00zO|iU9bSMG61_ zx$Ly{V0tRb!WJ%0oMx6T=2o2EPSC$BfT*|dv*=_6Go$r(a&&eV_7P$C$wd!Ar=_J8b+fb<)|8R^7yY>>MsEv)L50C!FE1}n zFJ4X;HybdwkdP3ViwDfZ!|{yZaQAVBnR#v3ca-u;)~y7?md(8U$ztBC2CY7SVokyTJ5C9&HWJ z3Ffit-x|l`Xs$&Jj*y7Svi9=O)zO_Xx(s+47%tln=M~E!8^PD{Vc_{mV3W`vM_CW% zJ`i`D`ZMJ@o>Sjdt|3CHwlHDa&F74=h<9UHnBJmdfIqfaInw{>z5b`;KTD1LOgZs? zoTMI8{5ET5n@$}TOb4rXt2UM^k36>$9St@{-c2`bYAiy3&>3s^$Uc5F{t1J@X&TEP zDvgr8_}2B0@l6gI4mV6!jT<5je>m%Y#+j0jxGe~@mokA>1q6y866E3sHmmy&uDO8I zKyCZ#S(iw0-&eg1^#k57{OCBW;Nbk}Q9xZ1D{uxgdF=+Juu@qtg7(h9_`neXh3+&6oL{0vPG7fo+6dJ5 z5xc7C$CAq;pGRdX{zB`;$ApEUSd|vxk93kL^*^L*Q=~w+CnkHA{*SpWA8z6vf~sBb zGJg9Rj%hH=I=T5S6yc;f`L{U`=wOmsVmoydl0@rhwKQZE6t(wRdge+XWv(}koBK@4(+PHmG^kQD{mh{YA&CZ2KcvOvoHQDWHjqQYBvK-A zw<>JEylyFqEFU1H&u?qBIhyTVw4gYsd|vz z1rD5N77tvqRs%2IPt=Zp!HWojZ}Z%D&(ZizCwCS(_@zSn4;R8WZgJ5HM6=7UUiR|4HZteNc`Awe&@BnY)=o#j(GIAR5RTN-+-6*3gC zwihz$8<3=&6Vv!S80Yv-?Zr9#q_c^fD$Sb8iMB~wi5?OiXNRm>fGq6LT6>zh8C^Nt zCd-hpmt(qzxG$->GZ|2!!^7AJCjd)_LM5WhC{9F&YT5fBe>BMz#I-(p!|toFAU%s2 zf=jjn!_uH##e`q0-S1)QY{A$P3&wES00%(j+q_ggJ~?@i*)MCQ_4wC>W*0g(R7p`f z?n%`8VbFVpucUz+O01sY*KJwK3qs!yLN0nvDL0=aTP#%@e2Qt!SH%36tZjA=P5C2n z?>rL}S5Z#x=7KGb5)igfwJCW{k#5Q;G`NWOR$?uaoFGx=#!Fh*=1uTs){C}r{TuT) z`lhtD4yCs5m?YxxEW(&^-_sGKR0b@}S$HY_NQ}(jiN^0#d=)JZ=b$PjWj8U;Z)ge} zFa-a40%nY|W~u4Sw8P|RSZHvO_#^qy=phzs_z=>)-)HzNa?RCHlV&LjU?D+1Vw3DZ5oUcY1_TTcA|BvfvBh z5*qv>qx4tDcDMqsa-`UcF`nOu$rQi=;n(G|J87>zp@;2RsWksiO&@-sG-VoeHx*%e zLJ}0}!V_GS{2I!(??B*JcXN2W@JC*J<0!NtfWmC$1szSmwA|CRfYaFuj;oQbt5JG6 zQ5FuJ#4TEZ58_!oU?VCzJ7~>9a1VD48=xv(*|-IJz+;mX-u9&-pZjHbc2_4e7Y!Yh zuB%&HX}zC7Nu_rxm8g8rh^aB1fmTVokP%GPg6m+2nJl`74;eBq&xqXDp-~;-HH%}j zD1XGfCNFgeI9$nkbj94m`n0H1$JIA#viKqb_JJ zO#NWnlRKwR!?TBLsF!ss4JgX@2=h261*(8|Xm}fwJh4mwj)AFiw}&+uS$g17PmC`@ zE!|b+Vsw6?x^+73{*eOCX*G4wf7$OmN+cf_|n2M`HqNEQiyo3De?hz^nep) z9Q*ezJV`>x!LBWPa>p)m;^clwjbX8je}H8+St9GGaaffQQf8N+Bf z1Y%UqW)u??iXkY-Y0~9k?EZMhcjc^W`McoUuz{8?j5aW~W2wVV!$aA*51z<01{=&E zTv?_<>saKDE8#6tHP>gx>g#hl8bnUOwr5nCVzY?a5~{XNdTqj~%?tk0-o`7@L41s9 z??}pUUI3N$gV#Ik=Msop8LLH!&sQ!I5Sxva+|)j>IK9JjqMgE8$Cmu_1DK~ILpqK0Y=KO&&zG{2^t;8aKpcdvs-YC`mQ!EYea5P{@|v_w0B)zrJ;NQmWsU9NHpGx741 zyP=d~F8cg6pH=IFG9#)_mp`5MlFI_t`4{6-Jyhu(B#)fQ8=8)Fn)Y=XvpjL5%~Uhk zTUF2vzTeq5t`{l}d5pFtD5;0ozr2Fz1Vea_yL67V{y@IqBw>n`5daM6<149vs6HTx zt>~QZ5<~$RoP6CedQ$4e>9}ZS-~9s_=>qH0xqd}=kX7R_=hY5Lftd=%$qV{v*_cA! zM2nkF6D5Vwiz@P-kl`o#zClOoAk5HYP3#OfVlrh%m`t5^+5yBMl%= zA$J*yX&(jBI)VLOI;Ch#Ox9)6s(<~FL+ z(q5kD&DxEmk(cgQ&9@D5$*ns*Xd01R!b3m71BveVCLmCcCmDxgh&6||A-tDprYtMg z5QYs?k6~-b1WxuUT@vcZtPleXEuAD!etOblqGNf|A>#7kckl>D2>ls+oW|R>2z6xK z50mk}_1|Y2!~cCz7DxK>xcEXP_nMJVD5jy5LDR)0YStFGZLK_yn88BjYAK~YPUoBc zAaJ!$DQnYP9}{M-|CsFXQp5A@O9$OuLe9iwGC8GLUjc*ADx3Lg<>VM ztu+Fs9q3ffm%ZJIW8hHO5z~gEWp?NBQ%lb&c69jL{zEMVrc>FsPNDaz#R%_YwlwEYx>4MG|6p3l&hg+8FX-?B*m+)JTmXKL= zCh9g;J^U%#tp_f;^&Exm8dq_rT**%RF{vf9QkaP_eih}{CWZp_Mf(<*C3xCD*c+(S z1atp>tIDQA(uc~RxhXaovQ=Uj?OS>0nb&4(s|Ov%s`Bk!p@T0olF-eYwiT; zjSSYywkKajnM}0rIho~C5olAhGJ~2?H7?RHwc`+B{c8H^ST0?x9u>N&Wvh??k@&() zNh8zOsI@LiLly6Cse?5r@UMYtHd7(t`{jjt*V-KrUdc1Et{mN{4)k=6kJ5{S)63-J zp;KAvsY#4f_?@(sf!(Kc*P`>&dLJ?W*hB61V2Cp|*V)e5V7sp^MH%RMm1X@EyFj?5 zLL4^+4UKE^(Y@z-VvABvYmG~RGv=LA`;m?Csu4+jI)TYJ< zeH0t?M)B81Y3hk?iotSASW+H2kXGZQmJgg8uU34%mRfS1Fuk6!8P!d3>ep&gT5Ssn z!#*)fhBIO+V6;B{5D)&6oLM?GyGo=GPw*MT7weKe5epOv^zhSK!)+|G@eK z;lOEhSpq9#uIh&sF$x9sD3eCRJ$BbZ5<+^=8@`tiZgK-3tuP_l*NocL8zBq|mu1iAl<7XOs|H=#U0tWLv!#6I{4c zPIqIHlCs6F`yRi7PNGd9*>omBoV1TuVHqV_4*oG97?bDM;WPV zalj&9k$X)VF{Gwl)G^F_h!rD|BGEM)T2i6&)tiKIH=V>zV2@63 zZB%#71g-Myc=C>$qF>#Gjg7a!>)bWSOVvT&kIf??HlEUs>u-vCV_JRL@~1v|7DVzj z!L9w3LiOTcf?gm63o#z+-_qR)OksT-?Nf%00)iDh6l;aO+-`ltjR%LSEW*@p@WNE{ zvak-v!_DSN&X*m-a2ZyU+T(tk@J3b5S@wOv)As*zYkO$@Ht3$112bDKiWXs<$<-KU zCwv@5W;43h4cCcYXRBt~Zu_=#=fK&dh4N5!HrOQw&AGyvB(P{o-_A(^>G|~K#FWdC zL|(?H%GUdOnSGPRxkW}xbxeKugax^ZKLj-{&qTnH%EFU9aA%ZhRoXJeLuD>R@OknB zN2xHeM2OZf?nlIm#O+KVW8RSyg0Nvy0a^ru>Zfi0*P3O^mypd{}trW5}n4!b?LY11)=! z3~xF8!%a}K0?OQ3@JcGqO@I21h6>m=4?D}8!SK47w{(Bf*fLv6U;C~%OmuxR5NF87 zfO-!aT652#glFXYM`IV)xj1szMUURSX}eu!ziU9b+aDEybLrEWN($(t8j+%`9Av&4 zb};L2K5#Yazu}7}EH(;7i)Zj_GdfpZl6ZS%uv9wTG$#2y+dk2-nO%LqT_KX*rdZv# z?=f)2>B}(3wd4USSWShDLE*7O_Ep#Te8%_ag@X?!c9cI4NxF1xOZ;AXCI#Ys*lI3xYS4LN?ywbFlu5Y5Lvq}Uuo zMv9^UcKua%>oq!Rf*II3@%wAZmAcOiMm63x-b4Zk&>CK4W$?>D5OU9gX}B6H+_@uW*ZZ59{#j69s7w@^eL;MYuhtry9A(zaj&#qi z-PgSKdyIBfJvLA87GfwydN6RWfTSCSDyLCWxW@G72Tj`IjK*3Wmr->%8LvirGe22{ zP-&>MI4`DLfo({O+0XnhCx^~`&JvEPqhU-h+=zg`EJ{>bdWwB67^;)VKZ`E#O+=nK zB8RN3FSMzWT=i#PAU7qLu#GwC5*J*;F>r8KBZw*~xzo8X3vo|C9)L|mu)h)CiA`SCiY!p86Hv~(tyU1! z?JJ-pKn%2HXrDqL6$jYh7wBqiXi6!xwjKbO&y0DTev&S*-(FEwkZ|3cA9}#yf&qam zIlHpWLWUzPaN6s*oKahUDJvuX4oQw>zLO{9N|i#iSLF5D}`sqj$*(mOsC*`8$q zWB;Rr=2kT7l?>5>16M8^uy~ z69jDmW#rt#i&KHK3_{v!6MUdM&q3%>sHl{&acW>>mW@);LPhR0^xY#83DeWzKL zD^*(qR{t%zjhM-eyZ7ZMPlpED+IR&Xnk!PUztKJ=Wmd=#3)fEq3*$H5zWysY36FHn zP`aPJtvxN${%`y<*Zg}ZbOGNikaMv2Y%L+;xVP{4Nv%V@|A&gzT?vz zO8RsdbFowH;+~}3a&qUmCGV4E=Wfg!e;w=KXkrnk%gUKX$!WFd1tVLZeEmQY3{xYLh{g0Q=1= z`zC)*9Q&cBksp05!p?9}4Y!=U@3676;L7@_AL{+D=C5W)`+Wx=Sh$u6^u< z4%Zaa4I-IQ4SwiH_lT5q``=jN9u;bE;Ys2>8)YKulVIfu3YWZW4`!T+Rm~XqS!11sejR2noUUa3mx+ecc(@?XkqOK~Fu&MwE;Tj2(r5QN%`c zXSl@ENz1nABkUUwI!y~Z+)&qTdC0b1L@yL;UTy?`ao-S$gj9_!>^+dtP+h-_gxHCO zJw!U)-~Dh#xsrhN6&(A#Bu_mJQY72edj;qz$q(GTdCA` z5;3dyh~H7grjZ(6kaWWO-xv|^>SQuj?{>Q}a4{to)v)eX#qNRmL(oyB>9m1%ysQ-Q zvR-@MK`??vNpKlVcWygcF>!wuZ?j*5(Tf#ky&u4*yHw(P8(Rh}(jvV~`Al6*l785O z5nuDr6S&1-OErxUaJ|>;-T#XqDJ9U3_v^UZyKb{vKf){L1!!zf9MW2uYo&%iwez~S%2No<@!hVdh% znz_#|Ix|T4xnSYE*JtZNL=Nx8A6!~)PsMxQq7Qp|i7b&`E;a{{|9(=Bsaiu`(F-#f zRe+nGKZboaW$ABD?qoA@1SyyyqDc1iT{rtth9Nfp87M?}bD8J?xKeF%L_oFCY&a&# z3%|FgguhI+r7=hRHZ9<33JNP!;?(bC#g7?{6?`3k<4K#;UQ$i!OFEU}H(-$aGf^Q; z7uE4+5%}u!QpKg|Bocj=nnO_R?n}=cEl=cu(X^Mf9d98O9r8>3xz8V5Xxu#>;M~6K zk{MZmCaS85ffPkQ*sZz80;f%uZJ(^ptKX)@OCuPw+Fy^!iAn5ivP?arqaBC>Nm4pv zpZAwWbolW&9XF=(E%WirZJI%;%T(%>(}&e&07Hit_~g1xiG)cS&Gq}t7^LA>(k6ee3>RpG4Ahm=kRWd#dEX*F<)04B)1r1 zm)BQ%(mTL@1}u4~CFYOi_8MOk{9?!$q4gM|)z;)Ww9tboEAT>+ASCQyGD>D_zULur z6&2C91#ViBYcUEsi350mEkNHf-AvFDn{k%+}A-hcj z;5Q1r1GU)+j}82odkn$8f39r0it)GJSBTsG{*bUp#2H56R0#wzN@Rxu#0?t|hn(48 zCi;*>!+)%_B$AK)vbR3w&2-EkZxGF;Pg~@zXVMBwF8v1h^3?QcuC`2Z8bw6?va~iY zi|;lz3+n4gXm`9h5&Yn-q-|M294Sq*TsmM`X5m$3aa>|x!nN&)+5cm!ZFHc{Gydog zUD@qFSV$$GGJCplFrb^+1958zw&t`RZM}3BMu5jLC#%6 zrcbG6(Va|tZ(ZJ7s zpU_p{RsGg3J*q+)7@nmKBzPYoTDdqYPVhUOR@8cglkJ0e-epK?MsBo@m~G@zz@T|t zTjxAXR^vjb=_Fq1BGfu+H{?i8SV2zHR&iPX4izsz3m*+PxTu+Oh=KU#2pzi3Ths1= zL@DGfnZ3?iqkhhQr+n}nuf2^pBWr06MZ*LBq_bFCvQ+b>LEcb~R759!m1&qkgRpM# zpfiukb%H36W(pI$Qe|J|_*H_`W!o#?EhM6J-c@Ay`-KnA z2goJ(_?uP)n2I~9=zliK4YR5Ue!TqcnlArto?M6Tb{>mCc!h+_G#<=-|FKQHV*zjb zX3HQ#iUujkh3#?h8%n^YF=!q8AlJXS`jMv0(=CmLmZk6Sj~j}zsxp;QrXl|awmC|} literal 0 HcmV?d00001 diff --git a/modules/mogo-module-v2x/src/main/res/layout/v2x_front_target_info_view.xml b/modules/mogo-module-v2x/src/main/res/layout/v2x_front_target_info_view.xml new file mode 100644 index 0000000000..bfae7c37fb --- /dev/null +++ b/modules/mogo-module-v2x/src/main/res/layout/v2x_front_target_info_view.xml @@ -0,0 +1,20 @@ + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml b/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml index 7c1583a11d..5c509e9eeb 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml @@ -237,6 +237,19 @@ android:textColor="#FFFFFF" android:textSize="@dimen/dp_22" android:textStyle="bold" /> +