From a05cf8d4c0fe87663ac89b1055084f80943bb12e Mon Sep 17 00:00:00 2001 From: liujing Date: Fri, 18 Jun 2021 19:29:49 +0800 Subject: [PATCH 01/20] =?UTF-8?q?=E5=88=92=E7=BA=BF=E4=B8=8D=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/v2x/scenario/scene/warning/V2XWarningMarker.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 3cccf1d883..f17633547a 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 @@ -79,8 +79,6 @@ public class V2XWarningMarker implements IV2XMarker { Log.d(TAG, "显示时间为++" + String.valueOf(showTime)); pointsBetween(); bearing = V2XLocationListener.getInstance().getLastCarLocation().getBearing(); - //预警蒙层 - MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(mCloundWarningInfo.getDirection(), MogoReceiver.ACTION_V2X_FRONT_WARNING); isSelfLineClear = false; isFirstLocation = false; V2XServiceManager.getMarkerManager().removeMarkers(WARNING_ARROWS); @@ -127,6 +125,9 @@ public class V2XWarningMarker implements IV2XMarker { isSelfLineClear = true; }, showTime); } + //预警蒙层 + MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(mCloundWarningInfo.getDirection(), MogoReceiver.ACTION_V2X_FRONT_WARNING); + } /** From 84a16014860032295d9bb39d2841148170f2d098 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Fri, 18 Jun 2021 15:40:33 +0800 Subject: [PATCH 02/20] =?UTF-8?q?fix=20UI=E8=B5=B0=E6=9F=A5=20=E5=8D=87?= =?UTF-8?q?=E7=BA=A7custom=20map=20version=20fix=20#797?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/och/bus/fragment/OchBusFragment.java | 2 +- .../src/main/res/layout/module_och_taxi_panel.xml | 2 ++ .../src/main/res/values-xhdpi-2560x1440/dimens.xml | 3 ++- OCH/mogo-och-taxi/src/main/res/values/dimens.xml | 1 + .../src/main/java/com/mogo/och/view/SlidePanelView.java | 2 +- 5 files changed, 7 insertions(+), 3 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/OchBusFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/OchBusFragment.java index 17e26d4f0b..023888b7d8 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/OchBusFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/OchBusFragment.java @@ -221,7 +221,7 @@ public class OchBusFragment extends BaseOchFragment< OchBusFragment, OchBusPrese isOperationStatus = launch; if ( launch ) { tvOperationStatus.setText( "收车" ); - showSlidePanle("滑动出发"); +// showSlidePanle("滑动出发"); showPanel(); } else { AIAssist.getInstance(getContext()).speakTTSVoice("已收车"); diff --git a/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml b/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml index 888fec075e..184f70bcd8 100644 --- a/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml +++ b/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml @@ -72,6 +72,7 @@ android:layout_height="wrap_content" android:text="上车" android:textColor="@color/module_och_taxi_order_start_station_anchor_textColor" + android:layout_marginRight="@dimen/module_och_taxi_order_text_marginRight" android:textSize="@dimen/module_och_taxi_order_start_station_anchor_textSize" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="@+id/module_och_taxi_order_start_station" @@ -116,6 +117,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="下车" + android:layout_marginRight="@dimen/module_och_taxi_order_text_marginRight" android:textColor="@color/module_och_taxi_order_end_station_anchor_textColor" android:textSize="@dimen/module_och_taxi_order_end_station_anchor_textSize" android:textStyle="bold" diff --git a/OCH/mogo-och-taxi/src/main/res/values-xhdpi-2560x1440/dimens.xml b/OCH/mogo-och-taxi/src/main/res/values-xhdpi-2560x1440/dimens.xml index 95796c9ef6..8e162d85e5 100644 --- a/OCH/mogo-och-taxi/src/main/res/values-xhdpi-2560x1440/dimens.xml +++ b/OCH/mogo-och-taxi/src/main/res/values-xhdpi-2560x1440/dimens.xml @@ -5,7 +5,7 @@ 15px 25px 25px - 20px + 32px 1px 20px 20px @@ -24,4 +24,5 @@ 32px 36px 17px + 31.5 \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/res/values/dimens.xml b/OCH/mogo-och-taxi/src/main/res/values/dimens.xml index 954782677b..ff8e1c5530 100644 --- a/OCH/mogo-och-taxi/src/main/res/values/dimens.xml +++ b/OCH/mogo-och-taxi/src/main/res/values/dimens.xml @@ -24,4 +24,5 @@ 20px 24px 17px + 22.5px \ No newline at end of file diff --git a/OCH/mogo-och/src/main/java/com/mogo/och/view/SlidePanelView.java b/OCH/mogo-och/src/main/java/com/mogo/och/view/SlidePanelView.java index ee4785e198..fd2c4ddd65 100644 --- a/OCH/mogo-och/src/main/java/com/mogo/och/view/SlidePanelView.java +++ b/OCH/mogo-och/src/main/java/com/mogo/och/view/SlidePanelView.java @@ -57,7 +57,7 @@ public class SlidePanelView extends View { private final Paint blockPaint = new Paint(Paint.ANTI_ALIAS_FLAG); private final Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - private static int textSize = 40; + private static int textSize = 67; private static int BLOCK_START_X = 15; private static int BLOCK_START_Y = 15; private static int NORMAL_TEXT_MARGIN_LEFT = 40; From 2a80336e838f67050964c7e215560fb8684f9ccb Mon Sep 17 00:00:00 2001 From: lianglihui Date: Fri, 18 Jun 2021 15:52:01 +0800 Subject: [PATCH 03/20] =?UTF-8?q?fix=20=20ui=E8=B5=B0=E6=9F=A5=20=E6=9B=B4?= =?UTF-8?q?=E6=8D=A2=E6=BB=91=E5=9D=97icon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module_och_base_slide_block.png | Bin 4933 -> 15058 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_base_slide_block.png b/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_base_slide_block.png index ed7b293b90817473c775392fe3ad51d4d7f11d24..c7655b477cf85aea6987d62af30d9353e20d4c64 100644 GIT binary patch literal 15058 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 delta 4908 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 From 8873bb09dd274af32a6c569e59b68b4b3ed6e1ea Mon Sep 17 00:00:00 2001 From: lianglihui Date: Thu, 17 Jun 2021 16:45:12 +0800 Subject: [PATCH 04/20] =?UTF-8?q?fix=20UI=20=E8=B5=B0=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module_och_bus_ic_autopilot.png | Bin 0 -> 2342 bytes .../module_mogo_och_autopilot_status_bg.xml | 4 ++-- .../module_mogo_och_operation_status_bg.xml | 12 ++++++++---- .../main/res/drawable/module_och_panel_bkg.xml | 4 ++-- .../main/res/values-xhdpi-2560x1440/dimens.xml | 3 ++- .../src/main/res/drawable/yi_biao_pan_bg_nor.xml | 13 +++++++++---- .../main/res/values-xhdpi-2560x1440/dimens.xml | 2 +- .../src/main/res/values/strings.xml | 2 +- .../module_small_map_view_my_location_logo.png | Bin 0 -> 8870 bytes 9 files changed, 25 insertions(+), 15 deletions(-) create mode 100644 OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_bus_ic_autopilot.png create mode 100644 modules/mogo-module-smp/src/main/res/drawable-xhdpi-2560x1440/module_small_map_view_my_location_logo.png diff --git a/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_bus_ic_autopilot.png b/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_bus_ic_autopilot.png new file mode 100644 index 0000000000000000000000000000000000000000..927296d6900963a898b84f78d1f7699c9d5cec12 GIT binary patch literal 2342 zcmV+>3EB3EP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NuUD&1ONa40RR91NdN!<04n#S8~^|akV!;ARCodHn`?*_Wf;djrj}Zf znYvqnXrg&1mC6uNQ%fNc@@qlg3=Uq_s!5^Jktj+JVmt-rfazcq$SNmruovtGUr@B0 zSsiwYJ;j*>HiL_xk|O_#GqF<=O%oKdGr`xOGemJ`rr})`8^}EY4tGXnVq%Jio_n<+ zkQo5Bfm@)KM0~_cFNMw%2+Rk~pqAxN$j#4ErBrV>g5FNh4dA5=!S$Ly0)7VIQ#ia03BU*K2%eMJ0+I)w07!SPsd-h<6)be8~)q$?)!AH-2S zSNQ|QvAL4M;Sg}vk%4Z5wZQ9k%1T)Ag1D}?q4F7$HEz)!M-AX4aFG)zJ(f%0lui^M zh=+?PuZEPN+RSj!6C84hhR!?Sj!Xe_G8T`34+pC#zn-Z>W4y^4qHPelBz2Gq8p2)A zM3+JCrc^X=zQCbCy8mBD6`)E+;s;!wQ_p%)!fAhCo4x;wj-O*M7WpZQClFtgDBu3h zQBmG%@)qt{=Qa6 zHK-uo;J78f{YL5-&#*XXp?`$YNsV{H|6!m!Ofn-e4XnN~S<<&Q(YOnBC=W}X`(o3< zXq?4R>qc6_=<=dGfNdRYT$pJ0@Pwmnyt9V27_Iemc?t4ZV@afaJ*cXtAEt59Z}iv1 zl*5vkbGPyV$}34O&{3SOXirR{9ftdgXYv1Rqx%2EcloyxT&s@vf;)khQgjT@OE)L~ zru_=gQD}yTRxvY+@`1;89IZ@nro}ncWp`Ml*$Ika^GD%{>k$G;*XV`AFdHQ__IsF&hMY=`$#X)7=mcg8Ot8TX&W}Uk4y`dtt)O{Ju1!z%`n$0?O z-`lJa_c<^$p%nV`cLg{Av}B=4?ENLs80%?J%fpCE@cSH`1ZPX2$*-1av^(-9P%Yx* zoaSyjK$0Advnp-Fum{ivg0{p>i&%75O~gZd#49QJC=GOuf+X3YA}vqqrTr@C6?wCq zpsN+m#Xzfiogs>=_|6|dpxX;5&m>u{B549^lBt&3bm+#JKCD^|Y+E;`xITSKQt`Y$ z7{g|&CD2?I$+n)fszVhV8}L0IoVJk2+AaU%9VvBC!*-R0Kx5GeCDTVwdT6H>d=CT% zEJV_F%dghUQ;UV$iO4aE`o9@TqR&7vygG#Run(bqRJNO^(}-FjJ{QL@i; zi;2GS0m>^$PSH`E(`v-sja>yza^KT=f@pjD`Gh{_X5whiY##94`Uzub3Nol^u9qE)m2&}8fbVaKU4YBU&_ym|_ zW2~WPBLOsy@*QwW-+LSsM-4w4fk{4&vn#e?HOpj4pWXx$5*>JS;7224A6e|-K2eo` z6M*TBCQjNJN){CMNXsDFzp~DUk|VVB;6qaw&9PiWdd^dgq}cfA0c`t)dy?#DON<^{t2PYnB*URv~nY*{&dk zf6Ko*fd$5zu6!yl4x)#m_icgALW}Q(z6pp2usx*1u*$DE{qT(w>EoaeFfDI}!F1H? z)oUDuzU{X5x(yUR;K9Kv$}69ZSsXQjGuDu83L2=r4Vx+QIt>Hf?Aoc)IV`J8n_lpEHpQI5g3a_{}^Brcnv0eDS01BN7sF(T zV_i|YM14fd5$i$h!X53CEzTy#agskEzoz95x;u#Y=X(W}6C{A1QLYd3Qii$>v{<$Z zOa;Y7GmcAvNtTKO3R<+2o$Teu^|nGa67kOG8B|`F^4|pN4qS!@5xbZZ?QrO?YFeI= znfj$?+V+v2O~g0bTdcegF24z?H(^b M07*qoM6N<$f)F%O!~g&Q literal 0 HcmV?d00001 diff --git a/OCH/mogo-och/src/main/res/drawable/module_mogo_och_autopilot_status_bg.xml b/OCH/mogo-och/src/main/res/drawable/module_mogo_och_autopilot_status_bg.xml index b5596fad13..2379e3bc4c 100644 --- a/OCH/mogo-och/src/main/res/drawable/module_mogo_och_autopilot_status_bg.xml +++ b/OCH/mogo-och/src/main/res/drawable/module_mogo_och_autopilot_status_bg.xml @@ -2,13 +2,13 @@ - + - + diff --git a/OCH/mogo-och/src/main/res/drawable/module_mogo_och_operation_status_bg.xml b/OCH/mogo-och/src/main/res/drawable/module_mogo_och_operation_status_bg.xml index 914743547f..753d85e3ec 100644 --- a/OCH/mogo-och/src/main/res/drawable/module_mogo_och_operation_status_bg.xml +++ b/OCH/mogo-och/src/main/res/drawable/module_mogo_och_operation_status_bg.xml @@ -1,10 +1,14 @@ - + android:shape="oval"> + - + android:angle="315" + /> + \ No newline at end of file diff --git a/OCH/mogo-och/src/main/res/drawable/module_och_panel_bkg.xml b/OCH/mogo-och/src/main/res/drawable/module_och_panel_bkg.xml index 204c5fc692..4a08f10745 100644 --- a/OCH/mogo-och/src/main/res/drawable/module_och_panel_bkg.xml +++ b/OCH/mogo-och/src/main/res/drawable/module_och_panel_bkg.xml @@ -2,7 +2,7 @@ - + @@ -12,7 +12,7 @@ android:right="3px" android:top="3px"> - + diff --git a/OCH/mogo-och/src/main/res/values-xhdpi-2560x1440/dimens.xml b/OCH/mogo-och/src/main/res/values-xhdpi-2560x1440/dimens.xml index 7343943aa4..96770d26e2 100644 --- a/OCH/mogo-och/src/main/res/values-xhdpi-2560x1440/dimens.xml +++ b/OCH/mogo-och/src/main/res/values-xhdpi-2560x1440/dimens.xml @@ -31,7 +31,8 @@ 414px - 44px + + 49px 13px 12px 350px diff --git a/modules/mogo-module-extensions/src/main/res/drawable/yi_biao_pan_bg_nor.xml b/modules/mogo-module-extensions/src/main/res/drawable/yi_biao_pan_bg_nor.xml index 9c1429d2f4..4bde0e73c1 100644 --- a/modules/mogo-module-extensions/src/main/res/drawable/yi_biao_pan_bg_nor.xml +++ b/modules/mogo-module-extensions/src/main/res/drawable/yi_biao_pan_bg_nor.xml @@ -7,9 +7,14 @@ + + + + + + android:bottomLeftRadius="130px" + android:bottomRightRadius="30px" + android:topLeftRadius="30px" + android:topRightRadius="130px" /> \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/values-xhdpi-2560x1440/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-xhdpi-2560x1440/dimens.xml index 79f55f813d..608a067881 100644 --- a/modules/mogo-module-extensions/src/main/res/values-xhdpi-2560x1440/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values-xhdpi-2560x1440/dimens.xml @@ -5,7 +5,7 @@ 460px 320px 320px - 15px + 20px 110px 40px 279px diff --git a/modules/mogo-module-extensions/src/main/res/values/strings.xml b/modules/mogo-module-extensions/src/main/res/values/strings.xml index 9b05b089d1..2ffaf6481b 100644 --- a/modules/mogo-module-extensions/src/main/res/values/strings.xml +++ b/modules/mogo-module-extensions/src/main/res/values/strings.xml @@ -69,7 +69,7 @@ 提前看看出行路况,试试唤醒小智说,“中关村路况怎么样” - 默认视角 + 近距视角 远距视角 diff --git a/modules/mogo-module-smp/src/main/res/drawable-xhdpi-2560x1440/module_small_map_view_my_location_logo.png b/modules/mogo-module-smp/src/main/res/drawable-xhdpi-2560x1440/module_small_map_view_my_location_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fa98de96a11488d712679357263f86e3ccf076cd GIT binary patch literal 8870 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 o Date: Fri, 18 Jun 2021 17:14:46 +0800 Subject: [PATCH 05/20] =?UTF-8?q?fix=20=20ui=E8=B5=B0=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module_mogo_och_autopilot_status_bg.xml | 16 ++++++++++++++++ .../module_mogo_och_autopilot_status_bg.xml | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_mogo_och_autopilot_status_bg.xml diff --git a/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_mogo_och_autopilot_status_bg.xml b/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_mogo_och_autopilot_status_bg.xml new file mode 100644 index 0000000000..97ac9039cc --- /dev/null +++ b/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_mogo_och_autopilot_status_bg.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/OCH/mogo-och/src/main/res/drawable/module_mogo_och_autopilot_status_bg.xml b/OCH/mogo-och/src/main/res/drawable/module_mogo_och_autopilot_status_bg.xml index 2379e3bc4c..97ac9039cc 100644 --- a/OCH/mogo-och/src/main/res/drawable/module_mogo_och_autopilot_status_bg.xml +++ b/OCH/mogo-och/src/main/res/drawable/module_mogo_och_autopilot_status_bg.xml @@ -2,13 +2,13 @@ - + - + From c24b9fe3efbd32297e2bb75bea0bc825d1f4ec88 Mon Sep 17 00:00:00 2001 From: lianglihui Date: Mon, 21 Jun 2021 09:57:37 +0800 Subject: [PATCH 06/20] =?UTF-8?q?=E8=A1=A1=E9=98=B3=20=E7=BD=91=E7=BA=A6?= =?UTF-8?q?=E8=BD=A6=20=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/taxi/IOperationChangedListener.java | 6 + .../java/com/mogo/och/taxi/MogoOCHTaxi.java | 44 +++- .../com/mogo/och/taxi/MogoOCHTaxiModel.java | 225 +++++++++++++----- .../java/com/mogo/och/taxi/OCHCarStatus.java | 20 ++ .../mogo/och/taxi/OCHCarStatusResponse.java | 29 +++ .../mogo/och/taxi/OCHTaxiOrderResponse2.java | 2 +- .../com/mogo/och/taxi/OCHTaxiServiceApi.java | 18 +- .../com/mogo/och/taxi/ui/OCHTaxiFragment.java | 77 ++++-- .../mogo/och/taxi/ui/OCHTaxiUiController.java | 23 ++ .../main/res/layout/module_och_taxi_panel.xml | 1 + .../res/values-xhdpi-2560x1440/dimens.xml | 2 +- .../mogo/commons/network/SubscribeImpl.java | 2 +- 12 files changed, 369 insertions(+), 80 deletions(-) create mode 100644 OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IOperationChangedListener.java create mode 100644 OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatus.java create mode 100644 OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatusResponse.java diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IOperationChangedListener.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IOperationChangedListener.java new file mode 100644 index 0000000000..af7fc38699 --- /dev/null +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IOperationChangedListener.java @@ -0,0 +1,6 @@ +package com.mogo.och.taxi; + +public interface IOperationChangedListener { + void onOperationChanged(boolean launch); + void onOrderStatusChanged(int status); +} diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxi.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxi.java index d2a0674630..fb79ee489e 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxi.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxi.java @@ -8,7 +8,10 @@ import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.module.common.MogoApisHandler; import com.mogo.och.IMogoOCH; import com.mogo.och.OCHConstants; +import com.mogo.och.taxi.ui.OCHTaxiFragment; import com.mogo.och.taxi.ui.OCHTaxiUiController; +import com.mogo.service.statusmanager.IMogoStatusChangedListener; +import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.Logger; @@ -20,13 +23,17 @@ public * 网约车-出租车 */ @Route( path = OCHConstants.PATH ) -class MogoOCHTaxi implements IMogoOCH { +class MogoOCHTaxi implements IMogoOCH , IMogoStatusChangedListener { private static final String TAG = "MogoOCHTaxi"; - + private OCHTaxiFragment ochTaxiFragment; + private FragmentActivity mActivity; + private int mContainerId; @Override public void init( FragmentActivity activity, int containerId ) { - MogoOCHTaxiModel.getInstance().init( activity.getApplicationContext() ); + this.mActivity = activity; + this.mContainerId = containerId; +// MogoOCHTaxiModel.getInstance().init( activity.getApplicationContext() ); OCHTaxiUiController.getInstance().init( activity, containerId ); UiThreadHandler.postDelayed( () -> { @@ -38,5 +45,36 @@ class MogoOCHTaxi implements IMogoOCH { @Override public void init( Context context ) { Logger.d( TAG, "init" ); + MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener("ochTaxi", StatusDescriptor.VR_MODE,this); + MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener("ochTaxi", StatusDescriptor.TOP_VIEW,this); + } + + private void showFragment() { + if (ochTaxiFragment == null) { + Logger.d(TAG, "准备add fragment======"); + ochTaxiFragment = new OCHTaxiFragment(); + mActivity.getSupportFragmentManager().beginTransaction().add(mContainerId, ochTaxiFragment).commit(); + return; + } + Logger.d(TAG, "准备show fragment"); + mActivity.getSupportFragmentManager().beginTransaction().show(ochTaxiFragment).commit(); + } + + private void hideFragment(){ + if (ochTaxiFragment != null){ + mActivity.getSupportFragmentManager().beginTransaction().hide(ochTaxiFragment).commit(); + } + } + + @Override + public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) { + if (descriptor == StatusDescriptor.VR_MODE){ + if (isTrue){ + showFragment(); + MogoOCHTaxiModel.getInstance().init( mActivity.getApplicationContext() ); + }else { + hideFragment(); + } + } } } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java index 0588c710ed..a256c40d2f 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java @@ -5,12 +5,12 @@ import android.content.Intent; import android.location.Location; import android.net.ConnectivityManager; import android.text.TextUtils; +import android.util.Log; import com.mogo.cloud.commons.utils.CoordinateUtils; import com.mogo.cloud.passport.MoGoAiCloudClientConfig; import com.mogo.commons.data.BaseData; import com.mogo.commons.network.SubscribeImpl; -import com.mogo.commons.network.Utils; import com.mogo.map.MogoLatLng; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; @@ -93,16 +93,18 @@ class MogoOCHTaxiModel { */ private boolean mIsArriveAtEndStation = false; - /** - * 乘客已到达上车站点 - */ - private boolean mIsUserArriveAtStartStation = false; +// /** +// * 乘客已到达上车站点 +// */ +// private boolean mIsUserArriveAtStartStation = false; /** * 查询订单信息重试次数 */ private int mRetryCounter = 0; + private int mOCHRHCarstatus = -1; + private Object readResolve() { // 阻止反序列化,必须实现 Serializable 接口 return sInstance; @@ -111,6 +113,9 @@ class MogoOCHTaxiModel { public void init( Context context ) { mContext = context.getApplicationContext(); + if (mOCHTaxiServiceApi == null){ + mOCHTaxiServiceApi = MogoApisHandler.getInstance().getApis().getNetworkApi().create(OCHTaxiServiceApi.class, HostConst.OCH_DOMAIN); + } MogoApisHandler.getInstance() .getApis() .getSocketManagerApi( context ) @@ -130,6 +135,46 @@ class MogoOCHTaxiModel { if ( NetworkUtils.isConnected( mContext ) ) { restoreOrderInfo(); } + if ( NetworkUtils.isConnected( mContext ) ) { + querryCarStatus(); + } + } + + public void querryCarStatus() { + mOCHTaxiServiceApi.queryCarStatus( new OCHCarStatus (MoGoAiCloudClientConfig.getInstance().getSn(),0)) + .subscribeOn(Schedulers.io()) + .observeOn( AndroidSchedulers.mainThread() ) + .subscribe( new SubscribeImpl< OCHCarStatusResponse >(RequestOptions.create(mContext)) { + @Override + public void onSuccess(OCHCarStatusResponse data) { + super.onSuccess(data); + Logger.e(TAG,"OCHCarStatusResponse:"+data.data.status); + mOCHRHCarstatus = data.data.status; + //更新view + OCHTaxiUiController.getInstance().onOperationChanged(mOCHRHCarstatus==1); + //刷新数据 + updateData(mOCHRHCarstatus); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + Logger.e(TAG,"OCHCarStatusResponse:"+e.getMessage()); + } + + @Override + public void onError(String message, int code) { + super.onError(message,code); + Logger.e(TAG,"OCHCarStatusResponse:"+message); + } + }); + } + + public void updateData(int status){ + if (status == 1){ + //查询订单 + restoreOrderInfo(); + } } /** @@ -141,6 +186,7 @@ class MogoOCHTaxiModel { if ( mCurrentOCHOrder == null ) { // 订单恢复 String orderInfo = SharedPrefsMgr.getInstance( mContext ).getString( SP_KEY_OCH_TAXI_ORDER ); + Logger.d(TAG,"restoreOrderInfo:"+orderInfo); if ( !TextUtils.isEmpty( orderInfo ) ) { mCurrentOCHOrder = GsonUtil.objectFromJson( orderInfo, OCHTaxiOrderResponse.class ); if ( mCurrentOCHOrder == null ) { @@ -158,6 +204,28 @@ class MogoOCHTaxiModel { } } +// private void restoreOrderInfo_() { +// Logger.d( TAG, "重新查询订单状态" ); +// mRetryCounter = 0; +// if ( mCurrentOCHOrder == null ) { +// // 订单恢复 +// String orderInfo = SharedPrefsMgr.getInstance( mContext ).getString( SP_KEY_OCH_TAXI_ORDER ); +// if ( !TextUtils.isEmpty( orderInfo ) ) { +// mCurrentOCHOrder = GsonUtil.objectFromJson( orderInfo, OCHTaxiOrderResponse.class ); +// if ( mCurrentOCHOrder == null ) { +// // 解决本地没有缓存订单号的问题 +// query2RestoreOrderStatus( null ); +// } else { +// query2RestoreOrderStatus( mCurrentOCHOrder.orderNo ); +// } +// } else { +// // 解决本地没有缓存订单号的问题 +// query2RestoreOrderStatus( null ); +// } +// } else { +// query2RestoreOrderStatus( mCurrentOCHOrder.orderNo ); +// } +// } /** * 查询订单状态,来恢复旧订单(因crash导致应用重启、断网没收到推送等)状态 *

@@ -171,62 +239,65 @@ class MogoOCHTaxiModel { * @param orderNo */ private void query2RestoreOrderStatus( String orderNo ) { + Logger.e(TAG,"query2RestoreOrderStatus:"+orderNo); queryOCHOrderStatus( orderNo, new OCHOrderStatusCallback< OCHTaxiOrderResponse2 >() { @Override public void onSuccess( OCHTaxiOrderResponse2 data ) { - if ( data == null || data.result == null ) { + + if ( data == null || data.data == null ) { Logger.d( TAG, "订单已取消或已完成" ); clearCurrentOCHOrder(); - OCHTaxiUiController.getInstance().removeFragment(); + OCHTaxiUiController.getInstance().onOrderStatusChanged(OCHOrderStatus.None.getCode()); return; } convertCurrentOrder( data ); - OCHOrderStatus status = OCHOrderStatus.valueOf( data.result.orderDispatchType ); + OCHOrderStatus status = OCHOrderStatus.valueOf( data.data.orderDispatchType ); + OCHTaxiUiController.getInstance().onOrderStatusChanged(data.data.orderDispatchType); switch ( status ) { case Completed: TipToast.shortTip( mContext.getString( R.string.module_och_taxi_order_completed ) ); clearCurrentOCHOrder(); - OCHTaxiUiController.getInstance().removeFragment(); +// OCHTaxiUiController.getInstance().removeFragment(); break; case Cancel: TipToast.shortTip( mContext.getString( R.string.module_och_taxi_order_cancel ) ); clearCurrentOCHOrder(); - OCHTaxiUiController.getInstance().removeFragment(); +// OCHTaxiUiController.getInstance().removeFragment(); break; case ArriveAtEndStation: mIsArriveAtEndStation = true; mIsArriveAtStartStation = false; mIsOnTheWay2EndStation = false; - mIsUserArriveAtStartStation = false; - OCHTaxiUiController.getInstance().addFragment(); +// mIsUserArriveAtStartStation = false; +// OCHTaxiUiController.getInstance().addFragment(); break; case ArriveAtStartStation: mIsArriveAtStartStation = true; mIsArriveAtEndStation = false; mIsOnTheWay2EndStation = false; - mIsUserArriveAtStartStation = false; - OCHTaxiUiController.getInstance().addFragment(); +// mIsUserArriveAtStartStation = false; +// OCHTaxiUiController.getInstance().addFragment(); break; case UserArriveAtStartStation: mIsArriveAtStartStation = true; mIsArriveAtEndStation = false; mIsOnTheWay2EndStation = false; - mIsUserArriveAtStartStation = true; - OCHTaxiUiController.getInstance().addFragment(); +// mIsUserArriveAtStartStation = true; +// OCHTaxiUiController.getInstance().addFragment(); break; case OnTheWayToEndStation: mIsArriveAtStartStation = false; mIsArriveAtEndStation = false; mIsOnTheWay2EndStation = true; - mIsUserArriveAtStartStation = false; - OCHTaxiUiController.getInstance().addFragment(); +// mIsUserArriveAtStartStation = false; +// OCHTaxiUiController.getInstance().addFragment(); break; case OnTheWayToStartStation: default: mIsArriveAtStartStation = false; mIsArriveAtEndStation = false; mIsOnTheWay2EndStation = false; - mIsUserArriveAtStartStation = false; +// mIsUserArriveAtStartStation = false; mOrderMsgListener.onMsgReceived( mCurrentOCHOrder ); break; } @@ -256,24 +327,24 @@ class MogoOCHTaxiModel { if ( mCurrentOCHOrder == null ) { mCurrentOCHOrder = new OCHTaxiOrderResponse(); } - mCurrentOCHOrder.orderNo = data.result.orderNo; - mCurrentOCHOrder.orderDispatchType = data.result.orderDispatchType; - mCurrentOCHOrder.endStation = data.result.endStation; - mCurrentOCHOrder.startStation = data.result.startStation; - mCurrentOCHOrder.travelDistance = data.result.travelDistance; - mCurrentOCHOrder.orderType = data.result.orderType; + mCurrentOCHOrder.orderNo = data.data.orderNo; + mCurrentOCHOrder.orderDispatchType = data.data.orderDispatchType; + mCurrentOCHOrder.endStation = data.data.endStation; + mCurrentOCHOrder.startStation = data.data.startStation; + mCurrentOCHOrder.travelDistance = data.data.travelDistance; + mCurrentOCHOrder.orderType = data.data.orderType; mCurrentOCHOrder.drivingRoutes = new ArrayList<>(); OCHTaxiOrderResponse.OCHTaxiStation startStation = new OCHTaxiOrderResponse.OCHTaxiStation(); - startStation.lon = data.result.startStationCoordinate.get( 0 ); - startStation.lat = data.result.startStationCoordinate.get( 1 ); - startStation.siteId = data.result.startStationId; - startStation.siteName = data.result.startStation; + startStation.lon = data.data.startStationCoordinate.get( 0 ); + startStation.lat = data.data.startStationCoordinate.get( 1 ); + startStation.siteId = data.data.startStationId; + startStation.siteName = data.data.startStation; mCurrentOCHOrder.drivingRoutes.add( startStation ); OCHTaxiOrderResponse.OCHTaxiStation endStation = new OCHTaxiOrderResponse.OCHTaxiStation(); - endStation.lon = data.result.endStationCoordinate.get( 0 ); - endStation.lat = data.result.endStationCoordinate.get( 1 ); - endStation.siteId = data.result.endStationId; - endStation.siteName = data.result.endStation; + endStation.lon = data.data.endStationCoordinate.get( 0 ); + endStation.lat = data.data.endStationCoordinate.get( 1 ); + endStation.siteId = data.data.endStationId; + endStation.siteName = data.data.endStation; mCurrentOCHOrder.drivingRoutes.add( endStation ); cacheOrderInfo2Native( mCurrentOCHOrder ); @@ -294,6 +365,47 @@ class MogoOCHTaxiModel { } }; + public void changedOperationStatus() { + if ( mOCHRHCarstatus == -1){ + querryCarStatus(); + return; + } + + if (checkCurrentOCHOrder()){ + TipToast.shortTip( "订单未完成,无法下线收车" ); + return; + } + + int status = mOCHRHCarstatus == 1 ? 0 : 1; + mOCHTaxiServiceApi.updateCarStatus(new OCHCarStatus(MoGoAiCloudClientConfig.getInstance().getSn(),status)) + .subscribeOn(Schedulers.io()) + .observeOn( AndroidSchedulers.mainThread() ) + .subscribe( new SubscribeImpl< OCHCarStatusResponse >(RequestOptions.create(mContext)) { + @Override + public void onSuccess(OCHCarStatusResponse o) { + super.onSuccess(o); + mOCHRHCarstatus = o.data.status; +// mIsWork = mOCHRHCarstatus.status == 1; +// mOCHRHCarstatus.status = status; + OCHTaxiUiController.getInstance().onOperationChanged(mOCHRHCarstatus == 1); + updateData(mOCHRHCarstatus); + Logger.d(TAG,"changeCarStatus:"+status); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + Logger.d(TAG,"changeCarStatus:"+e.getMessage()); + } + + @Override + public void onError(String message, int code) { + super.onError(message, code); + Logger.d(TAG,"changeCarStatus:"+message); + } + }); + } + /** * 自车定位 */ @@ -301,12 +413,12 @@ class MogoOCHTaxiModel { @Override public void onCarLocationChanged2( Location location ) { - Logger.d( TAG, "定位已判断是否达到上车站点: 起点(%s, %s), 当前位置(%s, %s)", - mCurrentOCHOrder.drivingRoutes.get( 0 ).lon, - mCurrentOCHOrder.drivingRoutes.get( 0 ).lat, - location.getLongitude(), - location.getLatitude() - ); +// Logger.d( TAG, "定位已判断是否达到上车站点: 起点(%s, %s), 当前位置(%s, %s)", +// mCurrentOCHOrder.drivingRoutes.get( 0 ).lon, +// mCurrentOCHOrder.drivingRoutes.get( 0 ).lat, +// location.getLongitude(), +// location.getLatitude() +// ); onLocationChanged( location ); } @@ -331,9 +443,9 @@ class MogoOCHTaxiModel { if ( mIsArriveAtStartStation ) { return; } - if ( mIsUserArriveAtStartStation ) { - return; - } +// if ( mIsUserArriveAtStartStation ) { +// return; +// } judgeStartStation( location ); } @@ -392,14 +504,14 @@ class MogoOCHTaxiModel { return mIsArriveAtEndStation; } - /** - * 用户是否达到上车站点 - * - * @return - */ - public boolean isUserArriveAtStartStation() { - return mIsUserArriveAtStartStation; - } +// /** +// * 用户是否达到上车站点 +// * +// * @return +// */ +// public boolean isUserArriveAtStartStation() { +// return mIsUserArriveAtStartStation; +// } /** * 设置去往终点状态 @@ -446,7 +558,8 @@ class MogoOCHTaxiModel { if ( !isArriveAtStartStation() ) { registerCarLocationListener(); } - OCHTaxiUiController.getInstance().addFragment(); +// OCHTaxiUiController.getInstance().addFragment(); + OCHTaxiUiController.getInstance().onOrderStatusChanged(mCurrentOCHOrder.orderDispatchType); } } @@ -510,7 +623,7 @@ class MogoOCHTaxiModel { break; case UserArriveAtStartStation: mIsArriveAtStartStation = true; - mIsUserArriveAtStartStation = true; +// mIsUserArriveAtStartStation = true; OCHTaxiUiController.getInstance().onUserArriveAtStartStation(); break; default: @@ -576,11 +689,13 @@ class MogoOCHTaxiModel { if ( callback != null ) { callback.onError(); } + Logger.e(TAG,"updateOCHOrderStatus:"+e.getMessage()); } @Override public void onError( String message, int code ) { super.onError( message, code ); + Logger.e(TAG,"updateOCHOrderStatus:"+message); if ( callback != null ) { callback.onFail(); } @@ -620,6 +735,7 @@ class MogoOCHTaxiModel { @Override public void onError( String message, int code ) { super.onError( message, code ); + Logger.e("MogoOCHTaxi","queryOCHOrderStatus:"+message); if ( callback != null ) { callback.onFail(); } @@ -635,7 +751,7 @@ class MogoOCHTaxiModel { mIsArriveAtStartStation = false; mIsArriveAtEndStation = false; mIsOnTheWay2EndStation = false; - mIsUserArriveAtStartStation = false; +// mIsUserArriveAtStartStation = false; SharedPrefsMgr.getInstance( mContext ).remove( SP_KEY_OCH_TAXI_ORDER ); } @@ -646,8 +762,7 @@ class MogoOCHTaxiModel { */ public boolean checkCurrentOCHOrder() { if ( mCurrentOCHOrder != null - && mCurrentOCHOrder.drivingRoutes != null - && mCurrentOCHOrder.drivingRoutes.size() >= 2 ) { + && mCurrentOCHOrder.drivingRoutes != null) { return true; } return false; diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatus.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatus.java new file mode 100644 index 0000000000..761fa03877 --- /dev/null +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatus.java @@ -0,0 +1,20 @@ +package com.mogo.och.taxi; + +import com.mogo.commons.data.BaseData; + +public +/** + * + * 修改/查询网约车-出租车订单状态的数据结构 + */ +class OCHCarStatus extends BaseData { + + public String sn;// 不排除本地没有缓存订单号的情况 + public int status; //0 收车 1出车 + + public OCHCarStatus(String sn, + int status ) { + this.sn = sn; + this.status = status; + } +} diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatusResponse.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatusResponse.java new file mode 100644 index 0000000000..62c76e6233 --- /dev/null +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatusResponse.java @@ -0,0 +1,29 @@ +package com.mogo.och.taxi; + +import com.mogo.commons.data.BaseData; + +public +/** + * + * 修改/查询网约车-出租车订单状态的数据结构 + */ +class OCHCarStatusResponse extends BaseData { + + public String sn;// 不排除本地没有缓存订单号的情况 + public int status; //0 收车 1出车 + public Result data; + + public OCHCarStatusResponse(String sn, + int status ) { + this.sn = sn; + this.status = status; + } + public static class Result{ + public int id; + public String sn; + public String areaCode; + public String plateNumber; + public int status; +// String remark; + } +} diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderResponse2.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderResponse2.java index 16d92726fb..d01f18014b 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderResponse2.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderResponse2.java @@ -13,7 +13,7 @@ public */ class OCHTaxiOrderResponse2 extends BaseData { - public Result result; + public Result data; public static class Result { public String _id; diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiServiceApi.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiServiceApi.java index b9ef5421cf..d1fed854ac 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiServiceApi.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiServiceApi.java @@ -23,7 +23,7 @@ interface OCHTaxiServiceApi { * @return */ @Headers( {"Content-type:application/json;charset=UTF-8"} ) - @POST( "/yycp-onlinecar-hailing/onlineCarHailing/order/updateOCHOrder/v1" ) + @POST( "/yycp-onlinecar-hailing/onlineCarHailing/order/updateOCHOrderState/v1" ) Observable< BaseData > updateOrderStatus( @Body OCHTaxiOrderStatus status ); /** @@ -32,6 +32,20 @@ interface OCHTaxiServiceApi { * @return */ @Headers( {"Content-type:application/json;charset=UTF-8"} ) - @POST( "/yycp-onlinecar-hailing/onlineCarHailing/order/queryOCHOrderDetails/v1" ) + @POST( "/yycp-onlinecar-hailing/onlineCarHailing/order/queryOrderForCar/v1" ) Observable< OCHTaxiOrderResponse2 > queryOrder( @Body OCHTaxiOrderStatus status ); + /** + * 查询网约车状态 + */ + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST("/yycp-onlinecar-hailing/onlineCarHailing/order/queryTaxiCarStatus/v1") + Observable queryCarStatus(@Body OCHCarStatus sn ); + + + /** + * 更新网约车状态 + */ + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST("/yycp-onlinecar-hailing/onlineCarHailing/order/updateTaxiCarStatus/v1") + Observable updateCarStatus(@Body OCHCarStatus status ); } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java index a8861ae85e..d78518eaad 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java @@ -8,12 +8,14 @@ import android.widget.TextView; import androidx.annotation.NonNull; import com.mogo.cloud.commons.utils.CoordinateUtils; +import com.mogo.commons.voice.AIAssist; import com.mogo.map.MogoLatLng; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; import com.mogo.och.BaseOchFragment; import com.mogo.och.taxi.IMogoADASAutoPilotStatusChangedListener; import com.mogo.och.taxi.IMogoOCHTaxiArriveCallback; +import com.mogo.och.taxi.IOperationChangedListener; import com.mogo.och.taxi.MogoOCHTaxiModel; import com.mogo.och.taxi.OCHOrderStatus; import com.mogo.och.taxi.OCHOrderStatusCallback; @@ -35,6 +37,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i IMogoStatusChangedListener, IMogoOCHTaxiArriveCallback, IMogoADASAutoPilotStatusChangedListener, + IOperationChangedListener, IMogoCarLocationChangedListener2 { public static final String TAG = "OCHTaxiFragment"; @@ -52,7 +55,6 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i private TextView mStartStationName; private TextView mEndStationName; private TextView mDistance; - @Override public int getStationPanelViewId() { return R.layout.module_och_taxi_panel; @@ -62,6 +64,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i public void restartAutopilot() { // 在自动驾驶中,才会有重新开启自动驾驶的操作 if ( MogoOCHTaxiModel.getInstance().isOnTheWay2EndStation() ) { + Logger.d( TAG, "restartAutopilot" ); MogoOCHTaxiModel.getInstance().startAutoPilot(); } } @@ -74,9 +77,11 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i mEndStationName = findViewById( R.id.module_och_taxi_order_end_station ); mDistance = findViewById( R.id.module_och_taxi_order_distance ); - showPanel(); +// showPanel(); + hidPanel(); initListeners(); - updateOrderStatus(); + // TODO: 2021/6/18 调整接口刷新时间 +// updateOrderStatus(); if ( MogoApisHandler.getInstance() .getApis() .getStatusManagerApi() @@ -85,8 +90,8 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } else { flatMode(); } - // 出租车不需要开启按钮 - tvOperationStatus.setVisibility(View.GONE); + + tvOperationStatus.setVisibility(View.VISIBLE); } private void initListeners() { @@ -96,6 +101,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i .registerStatusChangedListener( TAG, StatusDescriptor.VR_MODE, this ); OCHTaxiUiController.getInstance().setOCHTaxiArriveCallback( this ); OCHTaxiUiController.getInstance().setAutoPilotStatusChangedListener( this ); + OCHTaxiUiController.getInstance().setOperationChangeListener(this); MogoApisHandler.getInstance() .getApis() .getRegisterCenterApi() @@ -117,6 +123,12 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } } + @Override + protected void onChangeOperationStatus() { + super.onChangeOperationStatus(); + MogoOCHTaxiModel.getInstance().changedOperationStatus(); + } + private void vrMode() { if ( mRootView != null ) { mRootView.setVisibility( @@ -151,15 +163,17 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } else if ( MogoOCHTaxiModel.getInstance().isArriveAtStartStation() ) { Logger.d( TAG, "已经达到起点" ); mOrderStatus.setText( R.string.module_och_taxi_waiting ); - if ( MogoOCHTaxiModel.getInstance().isUserArriveAtStartStation() ) { - Logger.d( TAG, "乘客已上车" ); - slidePanelView.setVisibility( View.VISIBLE ); -// if ( MogoApisHandler.getInstance().getApis().getAdasControllerApi().getAutopilotStatus() == IMogoAdasOCHCallback.STATUS_AUTOPILOT_ENABLE ) { -// } else { -// slidePanelView.setVisibility( View.GONE ); -// } - slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_start_station ) ); - } +// if ( MogoOCHTaxiModel.getInstance().isUserArriveAtStartStation() ) { +// Logger.d( TAG, "乘客已上车" ); +// slidePanelView.setVisibility( View.VISIBLE ); +//// if ( MogoApisHandler.getInstance().getApis().getAdasControllerApi().getAutopilotStatus() == IMogoAdasOCHCallback.STATUS_AUTOPILOT_ENABLE ) { +//// } else { +//// slidePanelView.setVisibility( View.GONE ); +//// } +// slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_start_station ) ); +// } + slidePanelView.setVisibility( View.VISIBLE ); + slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_start_station ) ); } else if ( MogoOCHTaxiModel.getInstance().checkCurrentOCHOrder() ) { Logger.d( TAG, "去往上车站点" ); slidePanelView.setVisibility( View.GONE ); @@ -247,6 +261,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i .unregisterStatusChangedListener( TAG, StatusDescriptor.VR_MODE, this ); OCHTaxiUiController.getInstance().setOCHTaxiArriveCallback( null ); OCHTaxiUiController.getInstance().setAutoPilotStatusChangedListener( null ); + OCHTaxiUiController.getInstance().setOperationChangeListener(null); MogoApisHandler.getInstance() .getApis() .getRegisterCenterApi() @@ -269,7 +284,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i Logger.d( TAG, "更新状态成功" ); MogoOCHTaxiModel.getInstance().clearCurrentOCHOrder(); MogoOCHTaxiModel.getInstance().cancelAutopilot(); - OCHTaxiUiController.getInstance().removeFragment(); + OCHTaxiUiController.getInstance().onOrderStatusChanged(0); } @Override @@ -284,8 +299,8 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } ); return; // 乘客已确认到达起点,前往下一站并开启自动驾驶 - } else if ( MogoOCHTaxiModel.getInstance().isUserArriveAtStartStation() - && !MogoOCHTaxiModel.getInstance().isOnTheWay2EndStation() ) { + } else if ( !MogoOCHTaxiModel.getInstance().isOnTheWay2EndStation() ) { +// MogoOCHTaxiModel.getInstance().isUserArriveAtStartStation() && MogoOCHTaxiModel.getInstance().startAutoPilot(); } } @@ -367,4 +382,32 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i } mLocation = location; } + + @Override + public void onOperationChanged(boolean launch) { + isOperationStatus = launch; + if ( launch ) { + tvOperationStatus.setText( "收车" ); +// showSlidePanle("滑动出发"); +// showPanel(); + } else { + AIAssist.getInstance(getContext()).speakTTSVoice("已收车"); + tvOperationStatus.setText("出车"); +// hideSlidePanel(); +// hidPanel(); + } +// changeLayoutViewStatus(launch); + } + + private void changeLayoutViewStatus(boolean launch) { + getPanelView().setVisibility(launch ? View.VISIBLE : View.INVISIBLE); + } + + @Override + public void onOrderStatusChanged(int status) { + getActivity().runOnUiThread(() -> { + getPanelView().setVisibility(status != 0 ? View.VISIBLE : View.INVISIBLE); + updateOrderStatus(); + }); + } } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java index 3cec64867f..a7d025469a 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java @@ -10,6 +10,7 @@ import androidx.fragment.app.FragmentManager; import com.mogo.module.common.MogoApisHandler; import com.mogo.och.taxi.IMogoADASAutoPilotStatusChangedListener; import com.mogo.och.taxi.IMogoOCHTaxiArriveCallback; +import com.mogo.och.taxi.IOperationChangedListener; import com.mogo.och.taxi.MogoOCHTaxiModel; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.Logger; @@ -31,6 +32,7 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback, IMogoADASAutoPi private IMogoOCHTaxiArriveCallback mOCHTaxiArriveCallback; private IMogoADASAutoPilotStatusChangedListener mAutoPilotStatusChangedListener; + private IOperationChangedListener mOperationChangedLisnter; private OCHTaxiUiController() { } @@ -101,6 +103,10 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback, IMogoADASAutoPi this.mAutoPilotStatusChangedListener = autoPilotStatusChangedListener; } + public void setOperationChangeListener(IOperationChangedListener listener){ + this.mOperationChangedLisnter = listener; + } + @Override public void onTheWay2StartStation() { runOnUIThread( () -> { @@ -167,6 +173,8 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback, IMogoADASAutoPi } + + /** * 进入鹰眼模式,设置手势缩放地图失效 */ @@ -178,4 +186,19 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback, IMogoADASAutoPi .getMapUIController() .openVrMode( false ); } + + public void onOperationChanged(boolean b) { + runOnUIThread( () -> { + if (mOperationChangedLisnter != null){ + mOperationChangedLisnter.onOperationChanged(b); + } + } ); + } + public void onOrderStatusChanged(int status){ + runOnUIThread( () -> { + if (mOperationChangedLisnter != null){ + mOperationChangedLisnter.onOrderStatusChanged(status); + } + } ); + } } diff --git a/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml b/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml index 184f70bcd8..a9ccf96c3e 100644 --- a/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml +++ b/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml @@ -2,6 +2,7 @@ diff --git a/OCH/mogo-och-taxi/src/main/res/values-xhdpi-2560x1440/dimens.xml b/OCH/mogo-och-taxi/src/main/res/values-xhdpi-2560x1440/dimens.xml index 8e162d85e5..7c13d7dcbd 100644 --- a/OCH/mogo-och-taxi/src/main/res/values-xhdpi-2560x1440/dimens.xml +++ b/OCH/mogo-och-taxi/src/main/res/values-xhdpi-2560x1440/dimens.xml @@ -24,5 +24,5 @@ 32px 36px 17px - 31.5 + 31.5px \ No newline at end of file diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java index ab0aa03504..d673a53dbe 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java @@ -43,7 +43,7 @@ public abstract class SubscribeImpl< T extends BaseData > implements Observer< T @Override public void onNext( T o ) { if ( o != null ) { - if ( o.code != 0 ) { + if ( o.code != 0 && o.code!= 200 ) { onError( o.msg, o.code ); } else { onSuccess( o ); From 9d993e5f5ef643ce89ba50dae4001b9f30428816 Mon Sep 17 00:00:00 2001 From: wujifei Date: Fri, 18 Jun 2021 14:17:23 +0800 Subject: [PATCH 07/20] =?UTF-8?q?fix#=E4=BC=98=E5=8C=96=E4=BB=96=E8=BD=A6?= =?UTF-8?q?=E6=B1=82=E5=8A=A9=E9=94=9A=E7=82=B9=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../map/impl/custom/utils/ObjectUtils.java | 1 + .../mogo/map/marker/MogoMarkerOptions.java | 14 +++++++ .../manager/impl/MoGoV2XMarkerManager.java | 41 +++++++++++++------ .../module/v2x/marker/V2XMarkerAdapter.java | 30 -------------- .../v2x/marker/V2XMarkerRoadEventView.kt | 4 +- 5 files changed, 45 insertions(+), 45 deletions(-) diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java index c5655e7cc7..6a2100fecc 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java @@ -100,6 +100,7 @@ public class ObjectUtils { .setFlat( opt.isFlat() ) .visible( opt.isVisible() ) .infoWindowEnable( opt.isInifoWindowEnable() ) + .scale(opt.getScale()) .alpha( opt.getAlpha() ) // .draggable( opt.isDraggable() ) .setInfoWindowOffset( opt.getOffsetX(), opt.getOffsetY() ) diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkerOptions.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkerOptions.java index ef265d0788..d6307452fe 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkerOptions.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkerOptions.java @@ -43,6 +43,9 @@ public class MogoMarkerOptions extends Observable { // 设置Marker覆盖物的透明度 private float alpha = 1.0f; + // 设置Marker覆盖物的缩放 + private float scale = 1.0f; + // Marker覆盖物的坐标是否是Gps private boolean isGps = false; @@ -220,6 +223,12 @@ public class MogoMarkerOptions extends Observable { return this; } + public MogoMarkerOptions scale( float scale ) { + this.scale = scale; + return this; + } + + public MogoMarkerOptions gps( boolean gps ) { isGps = gps; return this; @@ -326,6 +335,10 @@ public class MogoMarkerOptions extends Observable { return alpha; } + public float getScale() { + return scale; + } + public boolean isGps() { return isGps; } @@ -403,6 +416,7 @@ public class MogoMarkerOptions extends Observable { ", visible=" + visible + ", inifoWindowEnable=" + inifoWindowEnable + ", alpha=" + alpha + + " ,scale=" + scale+ ", isGps=" + isGps + ", u=" + u + ", v=" + v + diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java index c11fdb7201..13d96a30c5 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/manager/impl/MoGoV2XMarkerManager.java @@ -2,6 +2,7 @@ package com.mogo.module.v2x.manager.impl; import android.content.Context; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.commons.AbsMogoApplication; @@ -39,10 +40,12 @@ import com.mogo.module.v2x.utils.MarkerUtils; import com.mogo.utils.ViewUtils; import com.mogo.utils.logger.Logger; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArraySet; +import static com.mogo.module.service.strategy.CarIconDisplayStrategy.sFrameVr; import static com.mogo.module.v2x.V2XConst.MODULE_NAME; import static com.mogo.module.v2x.V2XConst.V2X_EVENT_ALARM_POI; @@ -271,21 +274,35 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager { } else { mAlarmInfoMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, optionsRipple); } + // 当前Marker设置为最上面 + mAlarmInfoMarker.setToTop(); } else { - optionsRipple.icons(V2XMarkerAdapter.getV2XRoadEventViewGif(context, roadEventEntity)); - optionsRipple.period(100); - mAlarmInfoMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, optionsRipple); + if (V2XServiceManager.getMoGoStatusManager().isVrMode()) { + ArrayList mBitmapFrames = new ArrayList<>(); + for (int i : sFrameVr) { + mBitmapFrames.add(BitmapFactory.decodeResource(AbsMogoApplication.getApp().getResources(), i)); + } + optionsRipple.icons(mBitmapFrames); + optionsRipple.period(20); + optionsRipple.scale(0.4f); + mAlarmInfoMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, optionsRipple); - MogoMarkerOptions options = new MogoMarkerOptions().object(roadEventEntity) - .latitude(roadEventEntity.getLocation().getLat()).longitude(roadEventEntity.getLocation().getLon()); - options.anchor(0.5f, 0.5f); - options.zIndex(MarkerDrawer.MARKER_Z_INDEX_HIGH); - options.icon3DRes(com.mogo.module.common.R.raw.othercar); - options.anchorColor("#C6D83EFF"); - m3DMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, options); + MogoMarkerOptions options = new MogoMarkerOptions().object(roadEventEntity) + .latitude(roadEventEntity.getLocation().getLat()).longitude(roadEventEntity.getLocation().getLon()); + options.anchor(0.5f, 0.5f); + options.icon3DRes(com.mogo.module.common.R.raw.othercar); + options.anchorColor("#FFBF29FF"); + m3DMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, options); + m3DMarker.setToTop(); + } else { + optionsRipple.icons(V2XMarkerAdapter.getV2XRoadEventViewGif(context, roadEventEntity)); + optionsRipple.period(100); + mAlarmInfoMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, optionsRipple); + // 当前Marker设置为最上面 + mAlarmInfoMarker.setToTop(); + } } - // 当前Marker设置为最上面 - mAlarmInfoMarker.setToTop(); + // 绘制连接线 V2XServiceManager.getMoGoV2XPolylineManager().drawablePolyline(context, roadEventEntity); // 缩放地图 diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerAdapter.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerAdapter.java index e2233b6551..5b0d412d46 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerAdapter.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerAdapter.java @@ -132,34 +132,6 @@ public class V2XMarkerAdapter { */ public static ArrayList getV2XRoadEventOrangeMarkerView(Context context, V2XRoadEventEntity alarmInfo) { ArrayList icons = new ArrayList<>(); - if (V2XServiceManager.getMoGoStatusManager().isVrMode()) { - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0000)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0001)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0002)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0003)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0004)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0005)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0006)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0007)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0008)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0009)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0010)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0011)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0012)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0013)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0014)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0015)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0016)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0017)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0018)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0019)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0020)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0021)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0022)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0023)); - icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, com.mogo.module.service.R.drawable.module_service_ic_car_for_help_0024)); - - } else { icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, R.drawable.v_to_x_warning_circle_orange_00011)); icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, R.drawable.v_to_x_warning_circle_orange_00012)); icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, R.drawable.v_to_x_warning_circle_orange_00013)); @@ -198,8 +170,6 @@ public class V2XMarkerAdapter { icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, R.drawable.v_to_x_warning_circle_orange_00046)); icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, R.drawable.v_to_x_warning_circle_orange_00047)); icons.add(V2XMarkerAdapter.getV2XRoadEventMarkerView(context, alarmInfo, R.drawable.v_to_x_warning_circle_orange_00048)); - } - return icons; } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerRoadEventView.kt b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerRoadEventView.kt index 10aeff917a..fa563f3fb4 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerRoadEventView.kt +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/marker/V2XMarkerRoadEventView.kt @@ -102,9 +102,7 @@ class V2XMarkerRoadEventView(context: Context, alarmInfo: V2XRoadEventEntity) : } // 故障车辆 V2XPoiTypeEnum.ALERT_CAR_TROUBLE_WARNING.toString() -> { - if (!V2XServiceManager.getMoGoStatusManager().isVrMode()) { - ivCar.setImageResource(R.drawable.icon_car_red) - } + ivCar.setImageResource(R.drawable.icon_car_red) } // 取快递 V2XPoiTypeEnum.ALERT_TRAFFIC_EXPRESS -> { From dd4e02b251c0c0c8b1687c0271682fa1a289f90e Mon Sep 17 00:00:00 2001 From: wujifei Date: Fri, 18 Jun 2021 15:10:44 +0800 Subject: [PATCH 08/20] =?UTF-8?q?fix#=20=E3=80=90#603=E3=80=91=20=E3=80=90?= =?UTF-8?q?=E5=BF=85=E7=8E=B0=E3=80=91=E8=87=AA=E8=BD=A6=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=E6=B1=82=E5=8A=A9=E5=85=89=E5=9C=88=E5=A4=AA=E5=A4=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/module/service/strategy/CarIconDisplayStrategy.java | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/CarIconDisplayStrategy.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/CarIconDisplayStrategy.java index 5f0f07f942..b181e95105 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/CarIconDisplayStrategy.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/CarIconDisplayStrategy.java @@ -236,6 +236,7 @@ public class CarIconDisplayStrategy { .icons(mBitmapFrames) .period(20) .zIndex(0) + .scale(MarkerServiceHandler.getMogoStatusManager().isVrMode() ? 0.4f : 1.0f) .autoManager(false) .anchor(0.5f, 0.5f) .position(MarkerServiceHandler.getMapService().getNavi(AbsMogoApplication.getApp()).getCarLocation2())); From c5603353fd96baa23143a0fc1ebe9542f70ba609 Mon Sep 17 00:00:00 2001 From: wujifei Date: Fri, 18 Jun 2021 16:26:21 +0800 Subject: [PATCH 09/20] =?UTF-8?q?fix#=E6=95=85=E9=9A=9C=E6=B1=82=E5=8A=A9U?= =?UTF-8?q?I=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java | 4 ++-- .../src/main/res/layout/item_v2x_fault_help_vr.xml | 1 + .../src/main/res/values-xhdpi-2560x1440/dimens.xml | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java index 509e7d6bad..86cb6e3363 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java @@ -199,14 +199,14 @@ public class V2XOtherSeekHelpVH extends V2XBaseViewHolder { if (mV2XPushMessageEntity.getDistance() > 1000) { SpanUtils.with(tvDistance) .append("" + (int) mV2XPushMessageEntity.getDistance() / 1000) - .setFontSize((int) itemView.getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ? R.dimen.dp_42 : R.dimen.module_v2x_event_distance_text)) + .setFontSize((int) itemView.getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ? R.dimen.module_v2x_fault_help_distance_text_size : R.dimen.module_v2x_event_distance_text)) .append("公里") .setFontSize((int) itemView.getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ? R.dimen.dp_42 : R.dimen.module_v2x_event_distance_title)) .create(); } else { SpanUtils.with(tvDistance) .append("" + (int) mV2XPushMessageEntity.getDistance()) - .setFontSize((int) itemView.getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ? R.dimen.dp_42 : R.dimen.module_v2x_event_distance_text)) + .setFontSize((int) itemView.getResources().getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode() ? R.dimen.module_v2x_fault_help_distance_text_size : R.dimen.module_v2x_event_distance_text)) .append("米") .setFontSize((int) itemView.getResources().getDimension( V2XServiceManager.getMoGoStatusManager().isVrMode() ? diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fault_help_vr.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fault_help_vr.xml index 06c4b23743..1e4c57715d 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fault_help_vr.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_fault_help_vr.xml @@ -5,6 +5,7 @@ android:layout_width="@dimen/module_v2x_fault_help_width" android:layout_height="@dimen/module_v2x_fault_help_height" android:layout_marginTop="@dimen/dp_8" + android:alpha="0.7" android:background="@drawable/bg_v2x_event_bg" tools:layout_height="wrap_content"> diff --git a/modules/mogo-module-v2x/src/main/res/values-xhdpi-2560x1440/dimens.xml b/modules/mogo-module-v2x/src/main/res/values-xhdpi-2560x1440/dimens.xml index c2a11f02b6..217d316789 100644 --- a/modules/mogo-module-v2x/src/main/res/values-xhdpi-2560x1440/dimens.xml +++ b/modules/mogo-module-v2x/src/main/res/values-xhdpi-2560x1440/dimens.xml @@ -30,7 +30,7 @@ 48px 35px 36px - 64px + 80px 108px 53px From 8c566fb03ce6e133069030daf1ad42a6ff36b6be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Fri, 18 Jun 2021 17:15:53 +0800 Subject: [PATCH 10/20] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/module/service/StatusChangedAdapter.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/StatusChangedAdapter.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/StatusChangedAdapter.java index fb0a9eeede..c8f89e29dc 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/StatusChangedAdapter.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/StatusChangedAdapter.java @@ -8,7 +8,6 @@ import com.mogo.module.common.MogoApisHandler; import com.mogo.module.service.launchercard.LauncherCardRefresher; import com.mogo.module.service.marker.MapMarkerManager; import com.mogo.module.service.strategy.CarIconDisplayStrategy; -import com.mogo.module.service.vrmode.VrModeController; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.UiThreadHandler; @@ -90,7 +89,6 @@ abstract class StatusChangedAdapter implements IMogoStatusChangedListener { MogoServices.getInstance().unregisterInternalUnWakeupWords(); MogoServices.getInstance().stopAutoRefreshStrategy(); } - VrModeController.getInstance().onMainPageResumeStatusChanged(resume); } public void onMainPageIsBackgroundStatusChanged(boolean isBackground) { @@ -163,7 +161,6 @@ abstract class StatusChangedAdapter implements IMogoStatusChangedListener { } public void onVrModeChanged(boolean isVrMode) { - VrModeController.getInstance().onVrModeChanged(isVrMode); if (MarkerServiceHandler.getMogoStatusManager().isSeekHelping()) { onSeekHelpingStatusChanged(true); } From 8c8ffe8389bc779a3c6906a1e2b03651d7ff69de Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Fri, 18 Jun 2021 17:22:05 +0800 Subject: [PATCH 11/20] add mogoobu --- config.gradle | 4 +- modules/mogo-module-v2x/build.gradle | 3 +- .../com/mogo/module/v2x/V2XObuManager.java | 154 ++++++++++++++---- .../scene/obu/V2XObuEventScenario.java | 2 +- .../scenario/scene/obu/V2XObuEventWindow.java | 2 +- .../v2x_icon_car_collide_warning.png | Bin 0 -> 4735 bytes .../v2x_icon_car_collide_warning.png | Bin 0 -> 6908 bytes .../v2x_icon_car_collide_warning.png | Bin 0 -> 4735 bytes 8 files changed, 126 insertions(+), 39 deletions(-) create mode 100644 modules/mogo-module-v2x/src/main/res/drawable-xhdpi-1920x1000/v2x_icon_car_collide_warning.png create mode 100644 modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_car_collide_warning.png create mode 100644 modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_car_collide_warning.png diff --git a/config.gradle b/config.gradle index 4530ec1b0f..8b28c2b2ed 100644 --- a/config.gradle +++ b/config.gradle @@ -171,7 +171,9 @@ ext { // obu sdk obusdk : "com.zhidao.enterprise.smartv2x:smartv2x:1.0.0.3", - mebulaobu : 'com.zhidao.support.nebulaobu:nebulaobu:1.0.0.3', +// mebulaobu : 'com.zhidao.support.nebulaobu:nebulaobu:1.0.0.3', + mogoobu : 'com.zhidao.support.obu:mogoobu:1.0.0.2', + // 左侧面板 moduleleftpanel : "com.mogo.module:module-left-panel:${MOGO_MODULE_LEFT_PANEL_VERSION}", // 左侧面板空实现 diff --git a/modules/mogo-module-v2x/build.gradle b/modules/mogo-module-v2x/build.gradle index 4be22e5052..a299f8db01 100644 --- a/modules/mogo-module-v2x/build.gradle +++ b/modules/mogo-module-v2x/build.gradle @@ -94,7 +94,8 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' implementation project(':modules:mogo-module-obu') - implementation rootProject.ext.dependencies.mebulaobu +// implementation rootProject.ext.dependencies.mebulaobu + implementation rootProject.ext.dependencies.mogoobu } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java index fc56d5c187..70e45e60ce 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java @@ -38,11 +38,20 @@ import com.zhidao.mogo.module.obu.obu.IObuCallback; import com.zhidao.mogo.module.obu.obu.bean.MogoObuEventInfo; import com.zhidao.mogo.module.obu.obu.bean.MogoObuLocationInfo; import com.zhidao.mogo.module.obu.obu.bean.MogoObuTrafficLightInfo; -import com.zhidao.support.nebulaobu.NebulaObuClient; -import com.zhidao.support.nebulaobu.OnObuListener; -import com.zhidao.support.nebulaobu.model.ActiveSafetyInfo; -import com.zhidao.support.nebulaobu.model.ObuInfo; -import com.zhidao.support.nebulaobu.model.ObuInfoMore; +//import com.zhidao.support.nebulaobu.NebulaObuClient; +//import com.zhidao.support.nebulaobu.OnObuListener; +//import com.zhidao.support.nebulaobu.model.ActiveSafetyInfo; +//import com.zhidao.support.nebulaobu.model.ObuInfo; +//import com.zhidao.support.nebulaobu.model.ObuInfoMore; + +import com.zhidao.support.obu.MogoObuManager; +import com.zhidao.support.obu.OnMogoObuListener; +import com.zhidao.support.obu.model.CvxAppInitIndInfo; +import com.zhidao.support.obu.model.CvxHvCarIndInfo; +import com.zhidao.support.obu.model.CvxHvInfoIndInfo; +import com.zhidao.support.obu.model.CvxRvInfoIndInfo; +import com.zhidao.support.obu.model.CvxSetConfigCfmInfo; +import com.zhidao.support.obu.model.CvxV2vThreatIndInfo; import org.json.JSONArray; import org.json.JSONObject; @@ -94,9 +103,14 @@ public class V2XObuManager implements IObuCallback, Handler.Callback { obuManager.registerObuDataChangedListener(this); //使用adas部门obu sdk (星云) - NebulaObuClient.getInstance().init(context); - NebulaObuClient.getInstance().registerObu(100); - NebulaObuClient.getInstance().registerObuListener(listener); +// NebulaObuClient.getInstance().init(context); +// NebulaObuClient.getInstance().registerObu(100); +// NebulaObuClient.getInstance().registerObuListener(listener); + + //自研obu + MogoObuManager.getInstance().init(context); + MogoObuManager.getInstance().registerListener(mogoObuListener); + MogoObuManager.getInstance().unregisterListener(); // UiThreadHandler.postDelayed( () -> { // //TODO 测试 @@ -109,52 +123,122 @@ public class V2XObuManager implements IObuCallback, Handler.Callback { context.registerReceiver(obuTypeExchangeReceiver, filter); } - - public void release() { - NebulaObuClient.getInstance().unregisterObu(); - NebulaObuClient.getInstance().unregisterObuListener(); - } - - - /** - * 星云obu数据监听 - */ - private OnObuListener listener = new OnObuListener() { + private OnMogoObuListener mogoObuListener = new OnMogoObuListener() { @Override - public void onRegister() { + public void onConnected() { + //OBU连接成功 + Logger.d("liyz", "onConnected ------> "); } @Override public void onConnectFail(boolean isNeedReconnect) { Logger.d("liyz", "onConnectFail ------> "); + //OBU连接失败 } @Override - public void onUnregister() { + public void onDisconnect() { + Logger.d("liyz", "onDisconnect ------> "); + //OBU断开连接 } @Override - public void onObuInfo(ObuInfo info) { - Logger.d("liyz", "onObuInfo ------> " + info.toString()); + public void onReceiveOriginData(String data) { + super.onReceiveOriginData(data); + Logger.d("liyz", "onReceiveOriginData ------> data = " + data); + //接收到的原始数据 } @Override - public void onWarningInfo(List infoList) { - if (infoList != null) { - if (infoList.size() > 0) { //一般只有一个 - ActiveSafetyInfo info = infoList.get(0); - Logger.d("liyz", "onWarningInfo type ------> " + info.getWarningtype() + "--size = " + infoList.size()); - if (info.getWarningtype() == 3) { - if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { - handleSdkObu(2); - } - } - } - } + public void onSendData(byte[] bytes) { + super.onSendData(bytes); + //发送的数据 + Logger.d("liyz", "onSendData ------> "); + } + + @Override + public void onCvxAppInitIndInfo(CvxAppInitIndInfo info) { + super.onCvxAppInitIndInfo(info); + Logger.d("liyz", "onCvxAppInitIndInfo ------> " + info.toString()); + //CV2X系统信息 + } + + @Override + public void onCvxSetConfigCfm(CvxSetConfigCfmInfo info) { + super.onCvxSetConfigCfm(info); + Logger.d("liyz", "onCvxSetConfigCfm ------> " + info.toString()); + //设置CV2X系统的配置确认 + } + + @Override + public void onCvxHvCarIndInfo(CvxHvCarIndInfo info) { + //主车车辆信息 + Logger.d("liyz", "onCvxHvCarIndInfo ------> " + info.toString()); + } + + @Override + public void onCvxHvInfoIndInfo(CvxHvInfoIndInfo info) { + //主车信息 + } + + @Override + public void onCvxRvInfoIndInfo(CvxRvInfoIndInfo info) { + //远车信息 + Logger.d("liyz", "onCvxRvInfoIndInfo ------> " + info.toString()); + } + + @Override + public void onCvxV2vThreatIndInfo(CvxV2vThreatIndInfo info) { + //预警信息 + Logger.e("liyz", "onCvxRvInfoIndInfo ------> " + info.toString()); } }; +// public void release() { +// NebulaObuClient.getInstance().unregisterObu(); +// NebulaObuClient.getInstance().unregisterObuListener(); +// } + + /** + * 星云obu数据监听 + */ +// private OnObuListener listener = new OnObuListener() { +// @Override +// public void onRegister() { +// } +// +// @Override +// public void onConnectFail(boolean isNeedReconnect) { +// Logger.d("liyz", "onConnectFail ------> "); +// } +// +// @Override +// public void onUnregister() { +// } +// +// @Override +// public void onObuInfo(ObuInfo info) { +// Logger.d("liyz", "onObuInfo ------> " + info.toString()); +// } +// +// @Override +// public void onWarningInfo(List infoList) { +// if (infoList != null) { +// if (infoList.size() > 0) { //一般只有一个 +// ActiveSafetyInfo info = infoList.get(0); +// Logger.d("liyz", "onWarningInfo type ------> " + info.getWarningtype() + "--size = " + infoList.size()); +// if (info.getWarningtype() == 3) { +// if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { +// handleSdkObu(2); +// } +// } +// } +// } +// } +// }; + + private void handleSdkObu(int type) { V2XMessageEntity messageEntity = new V2XMessageEntity<>(); messageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_OBU_EVENT); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventScenario.java index ec962d4b1b..596734eb33 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventScenario.java @@ -44,7 +44,7 @@ public class V2XObuEventScenario extends AbsV2XScenario imple public static final String URGENCY_COLLISION_WARN_TEXT_ONE = "前车急刹,注意保持安全距离!"; public static final String URGENCY_COLLISION_WARN_TEXT = "前车急刹"; - public static final String URGENCY_CROING_WARN_TEXT = "交叉路口碰撞预警"; + public static final String URGENCY_CROING_WARN_TEXT = "注意交叉路口车辆"; private static final int MSG_CLOSE_OBU_WINDOW = 1001; private static final int DEFAULT_EXPIRE_TIME = 20_000; diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventWindow.java index 44b5f8a400..fc5bbfb829 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventWindow.java @@ -85,7 +85,7 @@ public class V2XObuEventWindow extends FrameLayout implements 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 N002ovPDHLkV1j&P{Ad6G literal 0 HcmV?d00001 diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_car_collide_warning.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_car_collide_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..e7709ff347368efb266729aed6f8993f6076cca2 GIT binary patch literal 6908 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 N002ovPDHLkV1j&P{Ad6G literal 0 HcmV?d00001 From c322abd3c476516136118d351cb322bf23797724 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Fri, 18 Jun 2021 18:00:06 +0800 Subject: [PATCH 12/20] opt --- .../src/main/java/com/mogo/module/v2x/V2XObuManager.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java index 70e45e60ce..f117c07323 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java @@ -109,6 +109,7 @@ public class V2XObuManager implements IObuCallback, Handler.Callback { //自研obu MogoObuManager.getInstance().init(context); + MogoObuManager.getInstance().connect(); MogoObuManager.getInstance().registerListener(mogoObuListener); MogoObuManager.getInstance().unregisterListener(); @@ -191,6 +192,11 @@ public class V2XObuManager implements IObuCallback, Handler.Callback { public void onCvxV2vThreatIndInfo(CvxV2vThreatIndInfo info) { //预警信息 Logger.e("liyz", "onCvxRvInfoIndInfo ------> " + info.toString()); + + //预警数据的组装,车辆实时移动和变色。 + //预警方位 + //预警类型 + } }; From 6d41c723b411e86e7f1492f3a84b443237a17487 Mon Sep 17 00:00:00 2001 From: suyong Date: Mon, 31 May 2021 17:07:00 +0800 Subject: [PATCH 13/20] =?UTF-8?q?=E7=BD=91=E7=BA=A6=E8=BD=A6=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=80=9A=E8=B7=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/module/adas/AdasConstant.java | 5 +++++ .../java/com/mogo/module/adas/AutonomousDriveStatusBean.java | 5 +++++ .../src/main/java/com/mogo/module/adas/IAdasApiService.java | 5 +++++ .../src/main/java/com/mogo/module/adas/ReportSiteBean.java | 5 +++++ 4 files changed, 20 insertions(+) create mode 100644 modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java create mode 100644 modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java create mode 100644 modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java create mode 100644 modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java new file mode 100644 index 0000000000..eb9ba9e8ef --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java @@ -0,0 +1,5 @@ +package com.mogo.module.adas; +/** + * Created by XuYong on 2021/5/28 15:24 + */public class AdasConstant { +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java new file mode 100644 index 0000000000..4726d0c02e --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java @@ -0,0 +1,5 @@ +package com.mogo.module.adas; +/** + * Created by XuYong on 2021/5/28 16:12 + */public class AutonomousDriveStatusBean { +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java new file mode 100644 index 0000000000..4330f5ab6b --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java @@ -0,0 +1,5 @@ +package com.mogo.module.adas; +/** + * Created by XuYong on 2021/5/28 14:24 + */public class IAdasApiService { +} diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java new file mode 100644 index 0000000000..470626a678 --- /dev/null +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java @@ -0,0 +1,5 @@ +package com.mogo.module.adas; +/** + * Created by XuYong on 2021/5/31 16:24 + */public class ReportSiteBean { +} From 8a859625f64655e0128d2a434a614be8bbe5f9e1 Mon Sep 17 00:00:00 2001 From: suyong Date: Tue, 1 Jun 2021 16:01:17 +0800 Subject: [PATCH 14/20] =?UTF-8?q?=E7=BD=91=E7=BA=A6=E8=BD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 2 +- modules/mogo-module-adas/build.gradle | 2 +- .../com/mogo/module/adas/AdasConstant.java | 8 +- .../mogo/module/adas/AdasEventManager.java | 106 ++++++++++++++++-- .../adas/AutonomousDriveStatusBean.java | 38 ++++++- .../com/mogo/module/adas/IAdasApiService.java | 21 +++- .../com/mogo/module/adas/ReportSiteBean.java | 37 +++++- 7 files changed, 201 insertions(+), 13 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 733acb1920..09cc32c567 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,7 +8,7 @@ - + \ No newline at end of file diff --git a/modules/mogo-module-adas/build.gradle b/modules/mogo-module-adas/build.gradle index cea9d8ac5c..dd802e716d 100644 --- a/modules/mogo-module-adas/build.gradle +++ b/modules/mogo-module-adas/build.gradle @@ -38,7 +38,7 @@ dependencies { implementation rootProject.ext.dependencies.androidxappcompat implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.arouter - + implementation rootProject.ext.dependencies.rxandroid annotationProcessor rootProject.ext.dependencies.aroutercompiler diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java index eb9ba9e8ef..3bff73bac8 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java @@ -1,5 +1,11 @@ package com.mogo.module.adas; + /** * Created by XuYong on 2021/5/28 15:24 - */public class AdasConstant { + */ +public class AdasConstant { + public static final String HOST_DEV = "http://dzt-test.zhidaohulian.com"; + public static final String HOST_TEST = "http://dzt-test.zhidaohulian.com"; + public static final String HOST_DEMO = "http://dzt-show.zhidaohulian.com"; + public static final String HOST_PRODUCT = "https://dzt.zhidaohulian.com"; } diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java index c8b768b081..babc4987fe 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java @@ -1,7 +1,12 @@ package com.mogo.module.adas; import com.google.gson.Gson; +import com.mogo.cloud.passport.MoGoAiCloudClientConfig; +import com.mogo.commons.data.BaseData; +import com.mogo.commons.network.SubscribeImpl; +import com.mogo.module.common.MogoApisHandler; import com.mogo.utils.logger.Logger; +import com.mogo.utils.network.RequestOptions; import com.mogo.utils.network.utils.GsonUtil; import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel; import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel; @@ -18,6 +23,18 @@ import com.zhidao.support.adas.high.bean.WarnMessageInfo; import com.zhidao.support.adas.high.common.MsgActionType; import java.util.ArrayList; +import java.util.concurrent.TimeUnit; + +import io.reactivex.Flowable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.annotations.NonNull; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Consumer; +import io.reactivex.schedulers.Schedulers; +import okhttp3.MediaType; +import okhttp3.RequestBody; + +import static com.mogo.commons.context.ContextHolderUtil.getContext; /** * Created by XuYong on 2021/4/25 14:43 @@ -25,14 +42,20 @@ import java.util.ArrayList; public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusListener { private final String TAG = "AdasEventManager"; - private final Gson gson; - private final ArrayList iAdasEventListeners = new ArrayList<>(); private final ArrayList iAdasStatusListeners = new ArrayList<>(); + private IAdasApiService mAdasApiService; + private Disposable uploadAutopilotStatus; + //自动驾驶状态 + private int mCurrentAutopilotStatus = -1; + //自动驾驶车速度 + private float mCurrentAutopilotSpeed = 0; + private Disposable mdDisposable; public AdasEventManager() { gson = GsonUtil.getGson(); + mAdasApiService = MogoApisHandler.getInstance().getApis().getNetworkApi().create( IAdasApiService.class, AdasConstant.HOST_PRODUCT ); } public void addEventListener(AdasDataListener listener) { @@ -145,7 +168,6 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL AutopilotStatus.ValuesBean autopilotStatusValues = autopilotStatus.getValues(); AutopilotStatus.ValuesBean mAutopilotStatus; - if (autopilotStatusValues != null) { AdasAIDLAutopilotStateModel adasAIDLAutopilotStateModel=new AdasAIDLAutopilotStateModel(); adasAIDLAutopilotStateModel.setReason(autopilotStatusValues.getReason()); @@ -154,14 +176,15 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL float speed = autopilotStatusValues.getSpeed(); adasAIDLAutopilotStateModel.setState(state); adasAIDLAutopilotStateModel.setSpeed(speed); - + mCurrentAutopilotStatus = state; + mCurrentAutopilotSpeed = speed; for (AdasDataListener listener:iAdasEventListeners) { if (listener != null) { listener.notifyAutopilotState(adasAIDLAutopilotStateModel); } } - } + } } @Override @@ -174,8 +197,12 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL if (endLatLon != null) { AdasAIDLAutopilotArriveModel adasAIDLAutopilotArriveModel = new AdasAIDLAutopilotArriveModel(); adasAIDLAutopilotArriveModel.setCarType(result.getCarType()); - adasAIDLAutopilotArriveModel.setLat(endLatLon.getLat()); - adasAIDLAutopilotArriveModel.setLon(endLatLon.getLon()); + double lon = endLatLon.getLon(); + double lat = endLatLon.getLat(); + adasAIDLAutopilotArriveModel.setLat(lat); + adasAIDLAutopilotArriveModel.setLon(lon); + Logger.d(TAG,"autopilotArrive reportSite"); + reportSite(lon, lat); for (AdasDataListener listener:iAdasEventListeners) { if (listener != null) { listener.autopilotArrive(adasAIDLAutopilotArriveModel); @@ -197,6 +224,7 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL for (AdasStatusListener listener :iAdasStatusListeners) { listener.onServiceConnected(); } + updateDriveStatusTask(); } @Override @@ -206,4 +234,68 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL listener.onServiceDisconnected(); } } + + public void updateDriveStatusTask() { + Logger.d(TAG,"updateDriveStatusTask"); + mdDisposable = Flowable.interval(0,5, TimeUnit.SECONDS) + .subscribeOn(Schedulers.io()) + .unsubscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Consumer() { + @Override + public void accept(@NonNull Long aLong) throws Exception { + updateDriveStatus(); + } + }); + } + + private void updateDriveStatus() { + String sn = MoGoAiCloudClientConfig.getInstance().getSn(); + AutonomousDriveStatusBean request = new AutonomousDriveStatusBean(sn, mCurrentAutopilotStatus, mCurrentAutopilotSpeed); + RequestBody requestBody = RequestBody.create( MediaType.get( "application/json;charset=UTF-8" ), GsonUtil.jsonFromObject( request ) ); + mAdasApiService.updateAutonomousDriveStatus(requestBody). + subscribeOn( Schedulers.io() ).observeOn( AndroidSchedulers.mainThread() ) + .subscribe(new SubscribeImpl(RequestOptions.create(getContext())) { + @Override + public void onError(String message, int code) { + super.onError(message, code); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + } + + @Override + public void onSuccess(BaseData o) { + super.onSuccess(o); + Logger.d(TAG,"updateDriveStatus success"); + } + }); + } + + private void reportSite( double lon, double lat) { + String sn = MoGoAiCloudClientConfig.getInstance().getSn(); + ReportSiteBean reportSiteBean = new ReportSiteBean(sn, lon, lat); + RequestBody requestBody = RequestBody.create( MediaType.get( "application/json;charset=UTF-8" ), GsonUtil.jsonFromObject( reportSiteBean ) ); + mAdasApiService.updateReportSite(requestBody). + subscribeOn( Schedulers.io() ).observeOn( AndroidSchedulers.mainThread() ) + .subscribe(new SubscribeImpl(RequestOptions.create(getContext())) { + @Override + public void onError(String message, int code) { + super.onError(message, code); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + } + + @Override + public void onSuccess(BaseData o) { + super.onSuccess(o); + Logger.d(TAG,"autopilotArrive success"); + } + }); + } } diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java index 4726d0c02e..686ae78eb0 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java @@ -1,5 +1,41 @@ package com.mogo.module.adas; + /** * Created by XuYong on 2021/5/28 16:12 - */public class AutonomousDriveStatusBean { + */ +public class AutonomousDriveStatusBean { + + private String sn; + private int status; + private float vehicleSpeed; + + public AutonomousDriveStatusBean(String sn, int status, float vehicleSpeed) { + this.sn = sn; + this.status = status; + this.vehicleSpeed = vehicleSpeed; + } + + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public float getVehicleSpeed() { + return vehicleSpeed; + } + + public void setVehicleSpeed(float vehicleSpeed) { + this.vehicleSpeed = vehicleSpeed; + } } diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java index 4330f5ab6b..d1c58c2da9 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java @@ -1,5 +1,24 @@ package com.mogo.module.adas; + +import com.mogo.commons.data.BaseData; + +import io.reactivex.Observable; +import okhttp3.RequestBody; +import retrofit2.http.Body; +import retrofit2.http.Headers; +import retrofit2.http.POST; + /** * Created by XuYong on 2021/5/28 14:24 - */public class IAdasApiService { + */ +public interface IAdasApiService { + + //上传自动驾驶状态接口 + @Headers( {"Content-Type:application/json;charset=UTF-8"} ) + @POST( "/yycp-carDataService/autonomousDrive/updateAutonomousDriveStatus" ) + Observable updateAutonomousDriveStatus(@Body RequestBody requestBody ); + //站点上报 + @Headers( {"Content-Type:application/json;charset=UTF-8"} ) + @POST( "/yycp-carDataService/autonomousDrive/reportSite" ) + Observable updateReportSite(@Body RequestBody requestBody ); } diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java index 470626a678..76677e00ba 100644 --- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java +++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java @@ -1,5 +1,40 @@ package com.mogo.module.adas; + /** * Created by XuYong on 2021/5/31 16:24 - */public class ReportSiteBean { + */ +public class ReportSiteBean { + private String sn; + private double lon; + private double lat; + + public ReportSiteBean(String sn, double lon, double lat) { + this.sn = sn; + this.lon = lon; + this.lat = lat; + } + + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } + + public double getLon() { + return lon; + } + + public void setLon(double lon) { + this.lon = lon; + } + + public double getLat() { + return lat; + } + + public void setLat(double lat) { + this.lat = lat; + } } From 118c1f9d9bb3d3f1563146269674358b52c10b4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Mon, 31 May 2021 21:37:38 +0800 Subject: [PATCH 15/20] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E7=89=88=E6=9C=AC=20=20build=201.0.0-vr-8.5.35=20=E6=97=A5?= =?UTF-8?q?=E5=BF=97=EF=BC=9A=201.=E4=BF=AE=E6=94=B9=E7=BB=BF=E5=8C=96?= =?UTF-8?q?=E5=B8=A6=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98=202.=E6=9A=82?= =?UTF-8?q?=E6=97=B6=E5=AF=B9sdk=E5=8E=BB=E6=8E=89=E6=B7=B7=E6=B7=86?= =?UTF-8?q?=EF=BC=8C=E6=96=B9=E4=BE=BFcrash=E5=AE=9A=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/runConfigurations.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml index 7f68460d8b..e497da9998 100644 --- a/.idea/runConfigurations.xml +++ b/.idea/runConfigurations.xml @@ -3,6 +3,7 @@ - + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_obu_traffic_light.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_obu_traffic_light.png index 38dc68d539fa8035b53b6ea12816afa0e6e62b74..81a5f5eee8e718e007eb1b35d79cf2658e564ba9 100644 GIT binary patch literal 7241 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