From 8bba4ec4c64a6ba8e15193a0dc83de1f2e3e7530 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Wed, 1 Apr 2020 15:21:30 +0800 Subject: [PATCH] opt --- .../map/impl/amap/AMapNaviViewWrapper.java | 18 +- .../map/impl/amap/navi/NaviOverlayHelper.java | 25 +- .../amap/uicontroller/AMapUIController.java | 11 +- .../uicontroller/IMogoMapUIController.java | 6 +- .../map/uicontroller/MapControlResult.java | 30 +++ .../com/mogo/map/MogoMapUIController.java | 11 +- .../com/mogo/module/apps/model/AppEnum.java | 9 +- .../drawable-ldpi/module_apps_ic_canbus.png | Bin 0 -> 8510 bytes .../module_apps_ic_local_video.png | Bin 0 -> 6289 bytes .../drawable-xhdpi/module_apps_ic_canbus.png | Bin 0 -> 24523 bytes .../module_apps_ic_local_video.png | Bin 0 -> 15097 bytes .../com/mogo/module/map/MapPresenter.java | 236 +++++++++--------- 12 files changed, 201 insertions(+), 145 deletions(-) create mode 100644 libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/MapControlResult.java create mode 100644 modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_canbus.png create mode 100644 modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_local_video.png create mode 100644 modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_canbus.png create mode 100644 modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_local_video.png diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java index 54cc9a4266..28bb7438e5 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java @@ -48,6 +48,7 @@ import com.mogo.map.listener.MogoMapListenerHandler; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.IMogoMapUIController; +import com.mogo.map.uicontroller.MapControlResult; import com.mogo.utils.WindowUtils; import com.mogo.utils.logger.Logger; @@ -381,9 +382,20 @@ public class AMapNaviViewWrapper implements IMogoMapView, } @Override - public void changeZoom( boolean zoom ) { + public MapControlResult changeZoom( boolean zoom ) { if ( checkAMapView() ) { mDefaultZoomLevel = ( int ) ( getMap().getZoomLevel() + 0.5f ); + + if ( zoom ) { + if ( mDefaultZoomLevel >= 20 ) { + return MapControlResult.TARGET; + } + } else { + if ( mDefaultZoomLevel <= 3 ) { + return MapControlResult.TARGET; + } + } + if ( zoom ) { mDefaultZoomLevel += 2f; if ( mDefaultZoomLevel > 20 ) { @@ -397,15 +409,17 @@ public class AMapNaviViewWrapper implements IMogoMapView, } changeZoom( ( int ) mDefaultZoomLevel ); } + return MapControlResult.SUCCESS; } @Override - public void changeZoom( float zoom ) { + public MapControlResult changeZoom( float zoom ) { Logger.d( TAG, "changeZoom %s", zoom ); if ( DebugConfig.isDebug() ) { Logger.d( TAG, Log.getStackTraceString( new Throwable() ) ); } getMap().changeZoom( zoom ); + return MapControlResult.SUCCESS; } @Override diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java index ffc5caa62f..ee13555bc3 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviOverlayHelper.java @@ -29,6 +29,7 @@ import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.map.marker.MogoMarkersHandler; import com.mogo.map.navi.MogoCalculatePath; import com.mogo.map.navi.OnCalculatePathItemClickInteraction; +import com.mogo.utils.UiThreadHandler; import com.mogo.utils.WindowUtils; import com.mogo.utils.logger.Logger; @@ -180,27 +181,17 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { return; } checkAMapInstance(); - mAMap.animateCamera( CameraUpdateFactory.newLatLngBoundsRect( + mAMap.moveCamera( CameraUpdateFactory.newLatLngBoundsRect( bounds, mBoundRect.left, mBoundRect.right, mBoundRect.top, - mBoundRect.bottom ), - new AMap.CancelableCallback() { - @Override - public void onFinish() { - if ( after != null ) { - after.run(); - } - } - - @Override - public void onCancel() { - if ( after != null ) { - after.run(); - } - } - } ); + mBoundRect.bottom )); + UiThreadHandler.postDelayed( ()->{ + if ( after != null ) { + after.run(); + } + }, 2000 ); } private void checkAMapInstance() { diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java index de5ccd64bf..0c5fd01576 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java @@ -11,6 +11,7 @@ import com.mogo.map.MogoMap; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.IMogoMapUIController; +import com.mogo.map.uicontroller.MapControlResult; import com.mogo.utils.logger.Logger; import java.util.List; @@ -59,17 +60,19 @@ public class AMapUIController implements IMogoMapUIController { } @Override - public void changeZoom(boolean zoom) { + public MapControlResult changeZoom( boolean zoom) { if (mClient != null) { - mClient.changeZoom(zoom); + return mClient.changeZoom(zoom); } + return MapControlResult.ERROR; } @Override - public void changeZoom(float zoom) { + public MapControlResult changeZoom(float zoom) { if (mClient != null) { - mClient.changeZoom(zoom); + return mClient.changeZoom(zoom); } + return MapControlResult.ERROR; } @Override diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java index e29b5e938f..d5bdcc35f0 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java @@ -27,14 +27,14 @@ public interface IMogoMapUIController { /** * 地图缩放 * - * @param zoomIn true - 方法 false - 缩小 + * @param zoomIn true - 放大 false - 缩小 */ - void changeZoom( boolean zoomIn ); + MapControlResult changeZoom( boolean zoomIn ); /** * 修改缩放级别 */ - void changeZoom( float zoom ); + MapControlResult changeZoom( float zoom ); /** * 切换2D/3D模式 diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/MapControlResult.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/MapControlResult.java new file mode 100644 index 0000000000..8735d80033 --- /dev/null +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/MapControlResult.java @@ -0,0 +1,30 @@ +package com.mogo.map.uicontroller; + +/** + * @author congtaowang + * @since 2020-04-01 + *

+ * 地图控制结果 + */ +public enum MapControlResult { + + /** + * 成功 + */ + SUCCESS, + + /** + * 当前已经为预期结果 + */ + TARGET, + + /** + * 失败 + */ + FAIL, + + /** + * 错误,未执行 + */ + ERROR +} diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java index 2e9ab03a71..7d37b79375 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java @@ -10,6 +10,7 @@ import com.mogo.map.impl.amap.uicontroller.AMapUIController; import com.mogo.map.marker.IMogoMarker; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.IMogoMapUIController; +import com.mogo.map.uicontroller.MapControlResult; import java.util.List; @@ -52,17 +53,19 @@ public class MogoMapUIController implements IMogoMapUIController { } @Override - public void changeZoom(boolean zoom) { + public MapControlResult changeZoom( boolean zoom) { if (mDelegate != null) { - mDelegate.changeZoom(zoom); + return mDelegate.changeZoom(zoom); } + return MapControlResult.ERROR; } @Override - public void changeZoom(float zoom) { + public MapControlResult changeZoom(float zoom) { if (mDelegate != null) { - mDelegate.changeZoom(zoom); + return mDelegate.changeZoom(zoom); } + return MapControlResult.ERROR; } @Override diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java index fa3def1772..39cdd6fad7 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/model/AppEnum.java @@ -58,9 +58,6 @@ public enum AppEnum { //"方控学习", SteerProduct( "方控学习", "com.zd.steerproduct", R.drawable.module_apps_ic_stee_product ), - //"蓝牙音乐", - BTMusic( "蓝牙音乐", "com.nwd.bt.music", R.drawable.module_apps_ic_bt ), - //"车载设置", CarSettings( "车载设置", "com.zhidao.settings", R.drawable.module_apps_ic_car_setting ), @@ -75,6 +72,12 @@ public enum AppEnum { // 个人中心 PersonCenter( "个人中心", "com.zhidao.auto.personal", R.drawable.module_apps_ic_personal_center ), + + // 本地视频 + LocalVideo( "本地视频", "com.zhidao.video", R.drawable.module_apps_ic_local_video ), + + // 车辆信息 + CanBus( "车辆信息", "com.zd.canbus", R.drawable.module_apps_ic_canbus ), ; private String mName; diff --git a/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_canbus.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_canbus.png new file mode 100644 index 0000000000000000000000000000000000000000..f29ce312810b74a31b6e8fa85af011bf7edb7b97 GIT binary patch literal 8510 zcmV-EA;I2>P)PyA_(?=TRCodHU3svbWqE(UbF<#$CNUvVmMkOzL4&d=Zn%J;>=0-wNM&3{Tc@^a zr_-6%8LIuGwbNtT95wR7k4g>Y4V;|z>5FwVd@1LF*gGceA;I0NGh z{C{Jh`b`yl#T8dfxc~k~Uf$f*I^-+dL$P$OeIE4Fzm*0^0V$2uaU_%cuftdZAI8$Fza4^jA8Fs;b)1OzDxT)moPt zjdiKjTnBLLCQX~T_S@gSYD13oA}<2^ixPIliYq4V+4<Y=T=9-l&uh?yY5B?Z=4=U38-uFk-whe9k+q9f9KNLk=Ysanmi98yjGtE+x+)%K2T z2YgC22Q@Cf;Qi-~Hk)5Wpan)D!U1VbC(pe&CrU}ZP8oMpEAwDR?%b6e^{s{Hipqm2 zMR44H+KIFL(zPo(njOJ_-dvazBTnqf(iL1a2CLNk_zge!=6B8Jg&q4|n45WBc;4lo z1=24AAf6;M4}!~LHKZVMrYHDVt4axS>%t4hwZCpD77hA3K-=xc^_J7!WooyitVUdi z1RS9Qq6`X4teM^r*exmac6*~vFAOd{ddafBwU69?Q;vUt3(IkUPAI%ue&OX;re^hi zLu&y7IA@Iz2)z~Nnmma_KMM|OcPB^z*~HMm!Hw;_LmP77}~v}u$_Es2(rtJhnf?vvbe-TspHwpzwQRpYA8m#|MCBR)yfI$ z9(mx#u<3QSSiM@q?xG7WU)~&TT^qLu0*<2Eu&N+0%;RS&LI=4OY{X=}%k6SEDRXFr zLndG0OD{KadD~S16^CJ@kG6>AXK)V14lHKlS)o)=!=R%%)%7!8b@BIqboI50)#D*j z_hkOT^FKJSxi$JrfI3{n874JAGz76$WnivjhaQpuF2AsFeds98dMre|KQ}0U7_f>$ zpLK=aAo=}VxGi!(D)r@UDX_RTBDOb9{+6Dq^;7x>j=BE&E1zfTUIu>f?0symntzI) zG7lF(FWM&s;f~D%Yb#29FfsKM;t{u!**@o_Ge+;%WNomuw1d?lT-H$Kl>}xfVT>2 z2SExXDo$KwP^DhP33wfV`X>C_11&Wk$p^+E)jL^)`pDU!P zU5vaCntyu~3t%L9EH~$rdE2t9BfCYWgB?O0%|X zt}ZQO?Qh+41CZ%l24cbb2ZXj0nOsn$vsFmUKGO}*L6{2k9p&4oU8iL3@Ac^xLLWJs zjxxKQ87{g>4Tsp;)c0cyifQv5r&_aZor!>mx-DgpJASovfo%$k( zErFZ6`PD_iU*6`gB?6WHCNm@Rqpjf(bq+v2ND?}F(288SiE?o*xz36!6AI&yjzndS zlxf7w69r-Hc7Md3d*+#!ERubfLr)E8wRSIJF6I^{t#B5oOqf#{37~~~JmlwEmLxyQ z-QS3C0~pI6Uet$;^8_W`EoSISe}>HdffJ#HUpn}Es(K|SU5h;QDV$yTu0Km zALw6=jxH=^`&v)fm!g!nMyvU%JcLL<$O7xKye2|pVK19-XEk-nS*nG=t6*4^Mo}x~ zOc3>aQ0D*`neE}6-LWX#P2+xoOLxV^LS8wT9BIQ*+T=2+zzH{laQV79nif#iZS>Rt zq*en|l7OQ`N5GjP$5`icv~6;?)y^eQCo0!md+)77prADSkygC@A}I8A-YkqU%KRVw z-S?%XM;(ceD4J<>bTmEn)Q0r;fA>#v;M+I!Cx$k6oGBmW7D{%pL8zsN=@^6O6fufs zaMpeF)BuEDkiiwi2Kko8iGW@pA%`FziV2NII`O3AQWNCIW689IY1XWnX=n(aP|{y9BQDNd7`xixG9p4+eOg0dl}IJr zp+~l!8qm{o0JhD1OI0K%PRr{@BR53Ug9Sz{TcnR(h7G9Hi?(Hu~4CW(ni0BadOj$izJ>7zOYCzR!EHJQsuVWTs z3SgKCOfX%Rq2N4&^|iU1Pu~6Rrzi~M0aUOTMx7dGiIkJ7<4-&;eddZ!r)9^zQotCB z^4W7{rAyv>fo?mz^^kbZe4KsGX=%o+fk>lRvuDpr7q2)w9rem1+xG*45eG+Eiv)g9 z{j@PNOpTtdfXq`FtaFVIUN$4atPBDMp2wP?C{%f5Cp3Uj6{<{P(zVjn-}sK6WT#A-EIcHb zxcCUNH*MOi+tT{=&!p|!cBKCPDQVuz4@t)yyEILo-Y+}acQ%2yq1$e~)2=@O5lTBm z{RD$y@Bq}Y8aKEq@#+!k2V}I5L)QkR27U%000w6&t}z9PN*=)-kWL+>d%1fwj=KqK zlZLlqhA0=sg^w&F06aE4voWo{`6ubL(@)6+2KigJZcEo)dqcWo&CeB*@^bvwcW+Fu zeeJR7)YIRbrc9ZXZ(-s8@I#NK^}l*XE>UagAF{SO3ao@U+UovNw0i@Zt+tn-k=Q$8 znA8+xRG;j2R2Hn-sm7uWuva9x8b*N;rRI1+IeY|)F2Q>J`lt6IpS%4lU-~yaxhkUV z8F(?aZ31qjd+xqJJ&Gsn-+Is4Y4+@y!WUQ0hG#aBLyf4V#%UN`ZIClouhFm`k!|*| z==vOh?_18$mPfz<#5vZ=6Tw61=jCY>ksW8(7TY-ng}`sRQ9XL|nm?YWVRGi}-w8J1LY^T{7^V_j|( zDT_m2s{(iXAH7@w{R-j9Gm#XMJ*!6RC^0~Dj$MN<%PNfgWeDi-KkhZJN+15nW$DPp zi})2l*_4O4;&Q?82^sBTUFyH~jV~*9=(lg*k$!yp&(fFv;h*(9VDSTGO3&kVb@NR> zO=rCOEx8Fxk6x61w&vcn4UMrH-OF|iJ8F-BjPq!6%+0E0+?nf`$F5fZycC3FiOe!g z*%V&`ZE2C$1ZBV=a+8zaaANx0U;GJvDy_*^gJ2T*xEr~SC&^eJh<@tSDe1I#zBT>j z=RcDM2BrxUAp}z5`sD*_(-vF}%){FdH^X@so|YCaIy_CBI3eSaa~wQ?dgAL$1FLNr zcVRx(-2Dnj=pwqy`1PK#P$YpPb|Kf9WZx0G=er&C8qiHZQ6K;P52Z$5BNxY49(*uf z6W{E$jDF7!SC3_rij-ZX2uz`$(ASryJLyZ%=oP+qWY)ys~` z&E_knQ%`?`&L3Gfh$s9zVOhU;h+J*;D>2x@jBV5P3h3T|s+uZV9cw@)AG++B(5iKc zcxq2X($fyNAA$8ru!@B}bDm z^PIMnamSh+8yI$!*_u1~m}8d+-&yCp6E9z{OS~RqS8xJAXoheU8M%N+yCf(3u>nR;5WmCK!kE;LOe>HfI&(dJ!p{)4EXuW&s1^L zv&g5P#!EgAW(m}B5#x>ShO1U|G02*irl9CcDx4mJT-e%D)2*9PDNi~by% zgyW$?ku7E=h7r$+%H(z%Y6B&0m6l(G-`{|3JT`6Gqz_9V$fPlp;xVM#YF0CXBoggD zP8{=D+}fY9R^NOF-rw0H-N3-~^sX~cqovO2!!cv#^h`Dz5xbx3EkpKYx2WHIbu?!j znU};zew-Y91Au)hA~KVPl3*1($D|bSKOIaY7jvSI{GopR8%{`v9sUXj*-BftZpEd) zQ)-b3TkUj6ICCdwIpbg`Twa4j*yYB{A6E}%%40|KC*z;o{_}i(!G&k0zP|b?uz?S5 z7A`zY`XGP%_ThBf>bukR*WH|MS#_u9wp>=f;gLcJP@o29=iX!`L7UfDy#&)I)ka4pD14h;>Z-Me=?K^B|w$9mXKW^87*D?>XR_W3r{=}S8_lJV%zC)wN4ggCzt zR{@FQt>^V8FUz=i>sh;Y5YJ0HnNUOZdwi1s2Wo>zvo%IbQxj*i`wwFEHRx`g6Mmy{ z?E9D}mc4*bU^^jXvAaNlL>Df%dwOxZY4PHP`0#rhK53fN_W3OD{d#4= zdwhNZMGW7u(S&#oV9t0hVC;CPX^0Vo)HWuu*whw){$<@o$|#JqX)as%Qjm_L7B>gOABs@(D^C?q6bP%OB@GLys0Grl#_^&8UN zZ$VWxj6U+W)ngMWVcZjS5(jM+Kf!v}u938B=N|m6yl}~3w+KP_k2QV|ezsOp_)}!n>UF@pAy4;h<-Z z&6}Uc6=3iE@Ok2nHNQ+7H*7{G5^7UjzpbQ!Zyu^YI08G>i_idU?;XZF0^>h|AlFkZ^;(EItg1_YEd@nKjqf^3sfM=;dcwQKq)aKVE4Y0jKEX&B#1(`$CTR2-Nw zfLBWP)sjxa4SAlPBpx`_6nuHnxk$BW5j0EFCmrRo7_Rebw)!rwD+Vue_RwSaj-HG^OYUK_|1VH04( zpEC#LA(Nov5PmU-PiZ!mE@YiEbH(!pW5k-X5v>e3cwt<@M{(E#Uvu|cZT0S#Cu`Tn z1XqpfNuKR*bZtO$LN$mlIp)M7R}m>Afd-Y=L^MIzc_zU2%A=ErIA^GGy+5#H>B2YW zZt=n{=CCKR8ku*1Cz%pQtyYr>YZ?8rn}YCwmoB5=uFL4!fCZRZIuu>ms<3 zZ@WR5aS$kWf#yCJF8`;NfiGsE$35T9RZ$z>*jyCaMzn6x-s-PXUp3*0Hm5O8x;CIS zaq?ib%U(_4Z+0p~nVj3)q@r73Xq0VqsoHz&l*c6;J5GT8vhGDsoBfR!8sB1CC0rXW zu8e%Ij+#P8Jc&Ti)JSCPz(`o$vEl7@pvtNyy*xvtfFHKs!E=fU3w7LgEO0 zG`T$|8$oXTE`S#=-F`cU{#~yCC8=;P!|#Zd;A&C`mB^VqFI9j@S3v}4HZm*@H~#3> z^x%X4Q%GLAC4ZT(a|A9C+)+U2vX5%vS=|4*X3;iCesBSC*WFLAuAhi0bhD*k1jHN! zE5K6XoZLFNkZTqo+Y$8T!(MIJtexjEejQVpJMhG8`3)o2s!8N}VOUe9l30DQpBTe@ zYB@w*@Bj4a=?cKl0#8^Hc9q-+ z70^=y5H|-?!dztRh)CR_aPn@x>Bs3v{9^QyB?~j)VSMFd&6<1Ct+)IPGJ6d!^r&Ji z@`9+c;E>sd0Arj@h0=Y0LkSFcW&e_#c^fOR;&er^~4?%jLR5C8j?^c=pvXw8Jb zJ8>qVBvv7CDD#Jo+ENZHKGC#Xu zO&zIWOAq+uS343}{nU)%fWPeCQv-T>4rt)d^p?d5Kk@JZEGj!dXy%SEoxszGR+`<9 zdOtTCp7>7UE~c;;BEC2$AtJ?PL4q~P8sSisN4GP0Xw%5Yh@*{>ZW%3(bs_NC%$T(e z?d)OxrA~D;TRlAo^wa?SrT)ijwusoOj$#a!GePnkInCVEWH_NN{6goRnCe?dEwh#U zqCuU?w(}ytC#VUob#w_F&Z|dp8~9S6ZDhoNhOyLnx$=)IbVBOusR0hrbMIq9@zptJ zUb+E^4j}+bNZR4f6GgGLOWSKIZ94poScYmRr-VWq4((zrx$_lLDQjKWg>R&#JwXzt ztf4T8#qt8At>Z=%&S7n`_B^G|aN*aRHr;f~b#sAN>B>l*>)x&a3v?S3^C7;yAZ-z) z!NC;u%xb(MTN*$E;ZaCD1&r(4EyCn{E{}7XyD0lmS0|!<@Pluc-+sfK@NaEn~!ZG7j4B?@4nVy zw$Ia^8?bWam$spzD}#8EBHZjgd3CT%C9q_P#2Hx`f$tWX6*_&N(~YcHX0q}$Tlfy* z>EIL~r$c}&2yuVqwBSa(*&61;pPtGi)QZjXXqK%R$H2(nV@LhCr(C&e)ylnpvZUJ> zqvr# z+i-W5!}R7~Vl}xkXB_kk|1u11C65_)SkjuSHh)SX-!Rac{#jf1cI@lT%&Z=K@SdGV zFFkHOKwL~90oG;n4p+EhHspZUEZ;b4T-b|G(* zAYRyI(h-Y!LY{MY@=_kL8hz=bKU{synmF%eKA;9L;KS?gyLZXbWwY=C>y1WA5KLBV z#{_WW$&U23ozImGd7u)?#Msm8Dz zwh^3bQ)FH3Z?>k!5365TwfZ}MosD~39MCN&V!r9k$9@{MT+_A-a1!Tvrh}i5sMuWr zyrj~IEUB<;lEX0kjYP0lI9tO*;8&3d763u8__T>;*Vx=jIkavsfFcaTU-}1T$iDTC z(~tj@*&W#NfUf|CU$tsg>vt|+@vSGHd=`J>1y=&WK`vsQ2kkW!Qtv!MZ{v-j+I?Vb zk)+CmM8iz#NA>`@s0+Tz40TgLcKP||82=}} z^4mM@M*BIdv+u`ff2y-jzvR6mY4mS#OPXiUy~4tYJH?1H3uDYvv(TDB>re+O)5}mC zm*zFmmXNx=i84%v!x~q>Q~teuYKszoZC7n*^tC><>Xz$!e#u!!tXD7S3aH)jobbqf z_a1ZX@n6OFJSXGZ_OC*zlcf(Pw2Mj)tXTy~7N_2nFrgfyF51p@be-INZ5=CYu%w>y z^2!k$iX#Ts9NtaZnxBa+t{L+fC}Fb|FE#&hAWdI!pij6FxttwNDSF}S6)RRue}1TO z8NP^hHr|eX3trpLVYIRU797PyCf+0{jh@xycUlHtopQ?%B-gi&I%ecDzRf@K5g~Kd zgX=mbK0DZiT5f~nd;B5mKwjt9F~?pp%S$p)P<8GZmmN9M8d;dC=6w9$Pv@hi1)y*~ zzVJIAe~D{8s^18^q^AgAm~V zkXJpy_wyUo=wLNE@p0_*M{$MF@I@alSp#}Ode&K&&1ml2IUgTS&F3Gu!#D5d^pi?U#lHd{e1zU`L=oA{h#%9JUCH{9^Gu3sVSrJiw{aR$a27-wLd sfpG@L85n0^oPlu$#u*rApce-I7l&5E65gk%nE(I)07*qoM6N<$f;7LSNdN!< literal 0 HcmV?d00001 diff --git a/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_local_video.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_local_video.png new file mode 100644 index 0000000000000000000000000000000000000000..813c00b2623f8297f38501315d021c6c57097cef GIT binary patch literal 6289 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 Hu0mjfr@b!z literal 0 HcmV?d00001 diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_canbus.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_canbus.png new file mode 100644 index 0000000000000000000000000000000000000000..38adc0866ed9f1e68c45d0e97fef9cc0d20694f7 GIT binary patch literal 24523 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
lA1+a%Nv{09vN#Q4%{ydHo z6IP9Gr@HVP6&{t>jA02`{yNe2?KNug@&?uBN+NFx>fpWP*4xUxSwU-VLxhmK;};*F z-k5wS)fHP@Ge4rISbS~(9Speoufp!-K#+w&_IEa4o@s#+op#mJy4c{u0q1Ecl?)FT?Yq&E1BfRpi;a%cR z>Lt3z(FX+FMp%zsC_N&n5Dy!{WcK)u^wcBQYlQ;}L5jYRzTjSBJaS4d(60&eyG|Y~ zCfS(v?+1Tr32yg&wOJ8v^AyPeo-~Pk(QLaKohrmNNN@nUxkROubqxW1YO*=K?MAPB z=cYNK0~%t)FX#yNC1Z-TmxAqoTe4q?pi$iXpWQ!A9CjTYn*@}aT`St=H2?5)E_k^( zbF4*taAG*=tOyV63)Ap@^TD5*NncRF05g`Il*f)voUg`jg4NE_x7eKy$?}Sp1gKEx z3DWG0*HDms7i<+TX$wCMx`hzhfjw+%rJWoHM|#Dvb9^gv^F8mVp@()-wyj5_QzI-n znYTGaRKbu>Jq&V|^Q1a7If6C-HgKnh*!fdqglfKzOujKVCWG#r{%$R>?7KuxU;P;^ zQO7JoQx-NC(%XsIP3)1$%^hHQFA8xV4uZPsY?3pD-|hbJ)YVFK1*eQPb^nntu{l|r zsDOG8Zl{eRe{NO6QLldV2016{Z_lU(eVE9Fn&jf@JcUj9y=sB{!{Xy7-Vz3nkJpcV zRMOr)TPZwV6G;+oRx5@R;Q^0#hq7jtY@c(b?M7#I))@RxrlBcdzk-unVsc@Jd0*&Y zsc}D(I$Z?q>MkGKzAir{HY%Xa1@G04dQe*>ul%HyUnDz0P7ly`)2 zfQ85i3LsCYZ+gWQi+)_+zDK`)*8^LtGqabt$C}5KG#m!#MnmOIMaWB>5ynV0ZZorc z^)s8PaWv82HnVociL9-W$#cys@zd2bq=gOKLNxnh!YO!@}CCCb_wDw%3MSC!K>t*D4?C_HQ%gXI=m$Pm! zZ5gbRhDiQd;|Nxf=v3f-$npv_YvC|vF zghy;U0&lGz&G$Y_@5;%s36KpIw`!9sY93=0?P#ZFe|gOxGxgC_|2oIw+mOHZI*4q~uNHka-FmlrtaDcnRiceG+@d5 z2D2d-x$T6^+^iExp=e=J7u)==lPW$%|EZVDfIh`#xf~I7RfH@4b)W2{bg%pnkC&b% zFX(vc+#wQ3E`d{SnD>^`2VDo#=FZ?KDWBR^W=IMX(vtC?`<~sIx+rXN&H5%RslyGB zVIXlh7Jd@SOifb^=YGo-Nv5G+YMo^#GXYzla{mDDfkBGtj72wG1^=0Q+M=!o)yZq* zbmPUW7u@3aFXJ;G0h4sS3)+L|ETCKa>j$h-?)ZcIQz-8g&yuwh4FzL8`K!U}KPG@f zqqp45*T-LhJMutjVN^iBtqvjKJ)1ygXqF)|jiqt?JwlbT@zzazR4*4}!l+&*&V}B2 zO#f1;H6RiC-e^1ICVR}x!gz)vQZ5#o-p9Q4`EGS!8a<@X7CWgo6MB)YGN1s!^2*=U zRmD+S_LG@km}Ssk@qFTn+SXw}6C0zv06#6+-KGvStC|(Rz^?SuUeqW3(vamvUQ0xG zzH%-?Wxe9pB^?*iiyWM;`{RmEzyJQ)vbm^n>=CxI{Pc6aYL?pyifaZ~@$?{+&N;+R zq3rvd9^V?H8l~@+Ri1*$h!tt`4Sr+#BZpvH$3z91G4cyHhJ}uD%J(ecfG$k??*L*i z=Q2L;b!vyN50^}$&z{+9*oh9mTvc0Y^QmrjC;z%`60M_bAvDOk$vl_&uTcfRGHAo^ zm<~#XeAKsYgOCh~){9fr{^nHK0Rtkpvmu1}Sf#NcQlnypjX}rse;ucv%>jTsw*j0W z-Q6`QPTK9`cM`4J;>*N@qeL67wjacXC;rJ^)GA%SfWTNyi*i1L$|Ob9lZleyuvy~Q}3N;)SMK-nw!3h-7-fxwaFb%s$7+D=o* z^FQsSQ|tcsWnCX$_@9pE_jm&>55oirj67lH{YQ!vLFxu8z-C64a5+X=(}KCpH!SU+ zq)Ssjz1bx0*BWzT$i=R?Thtf#h-<)CWCm^grs;eI;xfsp8znukmSGA+% za4>FAS+DdClz;xeFY~tVpFjIUL{6%xH_h+BN>H*OEZCKv8%bF#CgGLkhEAqk{l}I% z^3^!k&uI3|>oav5Y;lxH@6CXF*UbPVH{sdiQmmKNy!f9s#jR`870dP%RV-bx|8{vF z$7A*3II(1UzbZ@&XvTix4|Irt_I~jmL_~FZ6Pa9lZi72-O3Y(@lLAqZt2xXQ9m5@u zHU5_|4d6jyf#>@$Xl-H1`k1;?*{k$JxGR z=lNzBy!UZad5GANW?y0NovCpDOVYKpAmrv}oU%Rr&a0tkp0c&=l&QR+ziWah7MOKW^Svchq?=z2WR(JzqOY}o)%@3x=ky@l9+*3(~e zdQF4~QS*;kij1bRUsB8LC&?}hm=}%Lb6Y5U&A@%R20u5P6<($w z#5yN>$AFhx3z<_-Ft(@+#pW{pbjZV4WrY8ETP^Gnu#*L2k!G0?vBpSSj%Th>KJ4@@nt`!24(VlU!-rrO98FQ4M-cx%Yh z%^!-%DRuUrwc^5YW4u}B1xM}$SE36Eg65J<=FWFHj_bPeqA8?SQg*k33WlAjo@YL@ z)V~qMV6=6;2hWf_-7%v22VN?T5|2G9X;B%Sc4C__?j8J&LCkz!og4<(9A@Iz4}WTM zzS^%r;eDl2k4N8h+}^bviCf`S5|VQS>PP6cc8g7ufjw!!Vk4X{V`eSLGn02~6K6dg z=%*8Ujc0uV#{`9`L8B=^27kHC$4vHS3Nz(qvyLT>k4GQ614!oWCtP}my0lu`7l03a z!agn2t1O?Z)=s1j`(b6kpu>xhDNteS+^z%G?eeA%Gen$cGqJHIhWYE3E)}Xf^xd+3 z;j~qhlxXX_g5U2q8Z|F}+?JY^FX_r}C$%IWJh5AwcaFs;sD$VC|M&TZE8hpDIFX~~ zjzgOoM=x`D6zlSdJCy;MWXFzW`JmA)nfO9hlG3u@#D@i}ZmVpEwUG5Oy~MDa!i&ck z%%->@a-Fvu92+5Q&H5CrrJD!eOog4mUh|xRbSkaM&O$Fp)1`O$Y*&hNKIrn z0m#~8Y$EIWVg^PXd3~pM9IfPS9~SzlzJPFqK)xJ@k^!J_nVpovMx^j@?}sMF8wY*- zo`k=2Gz0S)5#-TY96tSuhT(e49yJGFq?`uq-rXj2cGq#KoVdM>7uZ%rmcX+Jg{2X@ z8qM{4>shiN90I;*kP$EQR^N&=rW0RSDXDK~Vk-dWmv*%i;rFGMRhi6I)RB%;^I2u7 zss7RxTIX_N`)(8ZUWA*7_!oT0LBp7AklUpAev@P)$TM!@S>^fM!snN>h%i~1*gLc6 zM@>@Z-N~p*nmDM3mHLP#ZHPUjU$v1L4xoW>SB2aD#MApB?y9t6S{cP`ktFn~s@Iwg z*SlTlT>&TjG}|0`M!HqJH2CY$wcDgE)?of zC1Y?-;UJ97t(I>$+uUjr`;?n~dchHVn!LIC%^y?zij&}%W2h{x%w5vdsA4_?Sd7XRe0i>9p?e=|xCw+rsYT)pX0SIF8fITtBOAbq-Z<1qn7)U@DHRY_R6*aU~WiU#}WboVL`@A)bgF2^vItnjaqMNSbgI9UQTV|stvrd)~m ze)AtjHS?iDqQh!n>f=-X$i^Esx}Dl>_YvC#$vJPgqnb~$AiSS79&4nYaeAfXl8eo? zJ$V`M_rBk}*VLsp1}Y`KP>KpO{TVT);&M!F|G2O(dbIyAakk!3GbB2Iywq-gd#45W z=eEoD-E)1uU2J(*_ZC8`4RAocUEujglYF{?rh|gV&v%acabg+Jb|%iCy&dEq zk%kSKg`JWF#kJmAky`)_|AAyxIwLJH^C91en?5Jj6c*E`hZTHWi(%b+&@lM1)9%QQ z0=_OC%Q0$n2E(f@qr|%6y%A~go zVVPD5$@pm%D)Ud4vI|ox>xrb~CMBKyZl86xSKSLHrry&keHpPkt3YG8X{rbxJoR-U zb;M;9PfL!Fvlyt@N#xj`YK zyZV>PXI!gYCduvWZ&%8K#B?qe2IAqZ_6gWC)`{B9VaISGl{}q`*({_3*5!;R=%EZZ z;Ld#%ZW44gkM2YfnZ5^&YaKIt@fL0NAzf5v%L|nyyU&c0()b)HPNMR6~>3H4)-OzqZkQM5E>g;LAzOYIgd(C|CTCER+G@E-FGo;f{Yv zSb7A)ypVV+DBG*qF@3JoMrSx&@zys#%vM^wDR{f83zHUau+{~ovbsqKyC7~i(@MvS zmF}%Fe6P_GHt{BHk=3zZkeYab#@69r?@zP*;qzYr^x5{|_vU7OeuT0+&`qO)c-fRb zd0;kz`1zs|D+ni218R>RMEAv@CWGXOW&+CEc72pq>=sDw1~SRC{J^3xAl5BUb$W_ z+tI~_m6@p?&SiA6NA!Nz4CK)gE5B=M=>1iwXCNcD()+~?X6c!`{HF{Y&j13xt{=;? zDq5ms-xOVq`|7shPzFmN%loh8zN<}IE)xH)-DTsa=bf_NzFx$Z;N_dk+%FOnGOK`} zevDW? z8a}VBd#{&C3Z3hA>gbF>AVWzZ2gDo=aW`$phm!^x%&n6+-a&W&jdjk$75t-^1)s5I zYZ=sD`q^aMOa;lNUO1kPHUr0=!+GW*Qh!p+CoT=Y=26(}v;qTyPn~>&$=xo*+6K4+ zCz`Xc6>d|hu>;osEmxJL;B&sZR>dB?M8Ow+!;iJXDV5WA;Rw+tQdS@%v-<^VjtSwQ(|0Isk=X34@iL2f0%QuE6P_u<25nvOqdH z-mz?8MZEZ4CZ*^$WOr{hf;XTyh&cRn>C@4gQ>7#$*LNHT zU{B<>TIWzd5^K|L+kf*h-z;cP)TUGQl9qCE?OKEK+BEg1n~X0R&8~DkFfU}gbDB{k zGoO}rZrU3j19vSVPWQk9*25CIuX42Y_!}W^JCzhlu%VArGsl-O>v(D8E2f8TuY2!s z$C_@veHfO9nK*bHR>_Mxa^h2Bok>XN9F zu%;vZFq59eIez#)<4>CoF(4FB)3X>N=hk2b%w)fA}S_v#G_q z7Lv7-Uz_YIbEY*!D0@FRb`!BSwid{?vOC=Q>O$_jv~AI?qQJveP%H>}4Zc@RyOj>@ z7S}UFDEbm^!t<&ihZEkqCDl@L_92fNK!nZQ{({B%GyJaXtNQv<>a4IQz_Y(tm$0=j zJFa}@6LS{9^%}wD$yHkZgqcdp8yC@@&%!sQ`SQ$)NNZJAgRpWG>Y(UlhU7U@o_8!^ z@Poy1lel<85Y1e+7}tgJE6;kc?_!Ns>#QT7Myz-K9Or5 z#Ttl}xtxh_FqZ%C@c#g!jxWJ)7_lX{9F!2L+%)kTHA?ZjJ@jqiitvXtb74#2^s`a} zyKlbMTH=**zbP3;_}wnwX?+@J;#q27b{b*dk`W9F21XDj5lf$c-GSQ48+41TdE9qx zNzawEY}P`LZJs3_2E;X3#qN(4OzuEqm@MyY*!f&dnB~sFA&z}7lE2GR$04_M?E`mh5uBXyr zwpBPqRz#2%I?1l@B!>AI++noO$26s83o%<$TAZp^=2~=Wz;4tq!BQQNbj{B8ps&i$ z%X#{3^x3NTTh&pfBU`9sUhLYQ?!hXdk&|=Jd1PXsm^1FSZ|c&o0(>FL5s+4K3o)s^ca!jnK4a@i57_Xp zsLD69HPjz=f(P;8hTh_*i#PYx6l^|OR{Ons=7O@XMcT2U+WR49U}A)?`Z)HFvq2v| zHra`v74_2xAdk^!gf_1Tu<1n5-ZNq{qOa(qniTVVCp0-BC_Xg;+IXw}J%%wX3{$2) zp719K_|efIC5HILlKDpjpU5M?kC@p!Sb_v|&&eQGB=mB!)jpOK=#$PdZ$90p<)CYC z+4af7(lM8}_3!0807-hnJ7G{n{mGm8uXLHZgoRIE%F|d=bitKaqHvcu<>Q23(3%1$ zAI5DZ-94K8C#|bF4T80$e6E^EqY>Y z2QA>ryIM9i7wxs$=2oN?hwndVC}Fr?RkHQQGdC~}dCgx;9bAnAmv&7EFtxqV4di%DJE#m8cYx>e09nDnjjlIf` zC-$mnT^R5l3Ou};L86}Qc?OgzX-9wGf|ro z+~1hZH^j!V1OHne$}15jVJs_Vf(_R94ux0rmoR%r47RX&--Kyd2@I;RD_n&Ldhfg4 zF;kjziy`V=qTK3j#tn3t5EC0s_B?d8Np_R4_Qc~`=`vu%=GcShP40GxU(I9qlwS~W z-)<2!PqrTV12p2RapdDf0D5*TBcK{(kpN*Vc^UKY}L24KC8HwC38_ zNBPE%1)gH>*(qHR#cgt|h1iwO_7d7Wvab{9NL1FOy-(3L5Ki3FmJgZ){Dh$O^ zh`pmRr|bIk#Yf4%lUau6-cn+HLkoM%x1ejqW+vlU z?`cKX^u}zf>dMgh&Tp1qIYbkL4>Wo})CG!I-!0|h*gi=!h+XM=+sOj=Lcssm%2|Fz z!G&8K1VlhUN*YueX^>_HMUWDtyIZ=$p6GpnI;COg9%=@dfy@1VKi)Go(zr7{ji6S>R*Wx>5V7Q`iP-#I$%TN^#(TY9mctf(~IkTo)q=LX)7;&tr z+wj@o7JXF3!z<$L?vU_*Ik}#@reZ@nmYWE74}(yX2JgJv--|Dz#)>BGy^O0*7Hy$< zhgFuk9>C(FX`VIPVkg~Jfg{!Gq~>qVtCwZAZ-g)+39J~^Ry%8HMt>>4%?a` zx4(;d4nK$ePJ@>S#;X>SO<1h@TGwEbVOO$|z5-K4DoYk6a{v>(dzWwIXu$z()hN@Xm)0MO~kMcPGrNaj+jO*!a2NACS7E1QXc>9L>J^IbtdTsX}m_i*__ZhISbv%2(dmzj=pW{46EkW za0qWCVYmOIf+in*6?Y+l4M|rS@zX1R*CnW($Jgla$La3Jz^I0S0%Q}nF;${W8Su0<+Uldg@MhvVPjHD2vq#8(pIj76D6F_tB29dTGJYE2vf6egdb(CT(~`gR z2-QcaB=MGK-Fvc2eY^Je(+D0aNDie_794d^VYpv84Wkp?0&i+zS3&e;K-XMNb1nx)&yzQ{kl? z$-lM084Oo^tFe9Xh*pYLLdsI+3UHl&{6L)dFK;+`@H;w>$2;VDX-vsHQ*bC4c?261 zzs&!9Womdxnt8Oa>O#)PgHN9-Ueh1vcr39X{_`201}I1A$JV#q?f>2oKD+J4i1}gE z@N}r(458FZr4|`jCQApjO(_%B&C*nXtIl}Ha!D}8@n0^4`HtF$$wR#~${A<6|f`6a-eC+}RXv8Z|aAj!C|LpF`w0{;?<@R3?dZ!>^~U zVlvp~l_N2*ww!=?g2TYOy1D zu*}!fZQt|CJ>Cg#x+jE9p_Eu;t!OA2>m)YgZM_qK%08_qlln*aT|fIUpHsXEbI>rj zG0V?(b>*mT7j*d*S$K_KjTM;7{dj7y9x%C*uHu$ct>y7u4{%+4mcd!N9WXZ{D#EtF z&@j?2HS%fpwj|t9#3tiiY-g{k0~2vz>k}~eM7GY<$aI}JI=2&>F}>0r!g>1O``Wm{ z)DWRQF!DKSf7?PKD?$#g3-OdnE9f5&8SAkQ;5$Y{o<8Md%-ajz>CNlz6!~3WO4sQW5u(+x4eC--+GT- zC2tkz^7_3Np%jl#+K8a(^goV)SCxBZi?BEIrB!C|Toz)PWew-I2sD)`5}v*5O*PA} zZojz;KBFFsf9&2^sVVLcZ9;5CEr26*su(TyZOYATDMgr{p7uMB?arZPfFdEPY@8PG#s8P+5a)dkfv~M*VT;r`#-}T%LdHr;B6&d)zn;-S@0_0kTR#zgZK}EIhkqn~mJ~|4leK&IDI1m4{uo_<5WR+35JE*RW z=p)Hh*&ceJ-fK{!?%TJ~7yRKt76qa{u5+Rruo$;1&8}<~F64c1ze0_M0uf;)UH8@P z)Dfin0`=1P^V|S?$CQO)Jb6SHlw;BqZ2OBJ*wwLsRH{&6Cc z;l=lx(Wktp6msyK3P%^mr7#cl%Ou8Ss;$HND-j8K>7q&lbM=4F(7ud}4{k~Fn7z%8 zrMC7Q%~n$2qnzf&U-W$t{5M%xTWtHXCQt^(x=`7}yyI@O<9Ul|Ynu1T*oA-c{Z?zXrB zk0psUedmsH`P&%k9`kRb%UkJXm0a9(Xm7`(vMf*k6{l#Lu48H$exm`}unN|i2AP95 z={{M1ik!Ee>EV_AbFw|Sx>+f^BeQ5t`1t@a$X-&6J2&MU+RnVh$S6$*W2OgtHLT2RQ{sSn z7DDc3K|r~;9lcxx>{*?)Vus?Ln!+5MBb)t2Z@x?K9N4;(8HZ^wcUBFS?}^=Q{f|hO zkMWa6*owpA8>0aaWJxSow06qefKOiHWl_`t5BTr*1dIg@=5YPRuyUl?HwxvruRxyR zGg>HN22|dXuBUzNpKHwcEn?5yDS_rBh7RJu4LZHc#5i^yv7c;cw<3&2gv-g?2ib~7 z%cm!pt8om-;_$pIJ`8@wVMoy2kD;5@tFhDjtvkD$^A*eNND|KuBrZ$~%Z2T3cmW>A zo4pf(`6Ifn9Q%!}=&-LeUHDhMuftckF9Cyet%M68TPrZle7H%WA|?Z} zsH?caBHHM>J!>ui1%}3;YLk+E6wjk6HgA?gM9yMjsw2cDc%OznrF4rXb5#`Qtq_`Q zJxp}vHkeaF$TEJLnR$IMl@L}LIR%XxkjnznrsS6AO3vbR<12b{BGlCZxrN?M)((0y zuNK%;x-LB zsR?irqVAJ@80ZOQL~2%19@zZc-0wJ`-9}Z)kPI&e-^qZb0O5 zMF!oT@eDAq=gO#yTvBp<3sE*pmzG*bCub7!K zHf#nrlG;zMe`=<vFT&GL1z^^zfEutvBW{;2^FwU~>`=Eq<}h zWjLfNJWs2XKDuyQ8eoJ@(vG?&p5M|z_cP_bHDi8V^Cfo_ClA_|IkD&6aUQDrSoh1o zMd77^>31q)_;haTGrKOy!GyHPz0Ynh#Fa7QUEHh{H1*gOmF53~2GeM$Z+vMZmcU85 z9T||PoCQ@2R&@Up=Q+)I4}8^o)*9B+RZttg?@oE@djtyq^ums;MS#zYFLIKt1|@xzE+^GLkg}S85_rSG zGW>2c(XL38hlfRZ8h71tbYV=MyVdR`d_bV)gP`;l);Eu{NN3>U>@VJNyOK&gHA|1I zo)4h{<7sln$Y5)0=#Ajk925!$p^j{l-&u}#|61QXfuJHtrDc^`zC=!mj?&{w)&Y_HR5Fc*TaT#thu!)IOvDO4d4K(6VQ%+I3f!KH128o_xmFw71WiX8#s-0B4Z-ZiR z*Z7Uf9W{Gdt>+f+RBtUlYMC2A?V`FCw}NA~;5 z%*PT5G1JHh-4^-Kv3Ci=CURTN9f8f-2EvZMGQdl{)DCAr=K4m6X#tmTVn0oy_f>&o z9B@9Xwl~gU0N~BCtzJ80W6lm>Azui}rsegWwphzVYmXURzzY5Oa*_RP^E_=E$YOj#6Rexp_=PLuYInrIN|eUSd5kCzRYOsspvI=ZFAJKCUc4~9Ep36R3A-uEUMkD$ z1`()oSug?UszMgH{vZbj18ym;M@wy+gdR^29f(+f-XV8p6N+eTco$Oou>RuKUhA#m zH!AJt?{kgczluyV$IF}5)r-<3TZW%*eF+f#Tv8;=>@s!VPB1Sp(sUyFNq^&cUd}IM z!*zeQ-e88s(j}(;1QnD~>R$=D2d>lpc&J1mOPsTDn>V#zYBwfS^g?6a zXQR^Aa=3PesCGBbhTMiHy+-u4!84a*1n83=AZ=ar6gh-mmRs$`DHP|z0;=4>e%s#z z1Xxc5`06XZ-g38k5gawmDGY1k3qD_!<}Asmb0GPR{d>}oY?YWX1M;VZXxzIZo};~F zk?rqB2#99|n`uog>i)VVXQsvgTbGnfzzbD<+N>r2-JjOSsO}5j% zDd&ui1Ke2A^@Yt! zs~*0LcmkODC|3t2vkOH1H`%8d{*a3pL%9NUj&oG2ENE}dhpSr)iC;i+U+>7*lIX*& z6xtQ5VEwOe|AU16E%uu3hByUUMhPwLe~SZOKTVCpM6QAV>Kh>ArxytyJ+UUU89Pth8e2yAE;Mdbzgn zk`$F&mM^ae+E*WcTJl5cq2m(y_kR>Xx;y# zf3uU@PZQ^lSS(Inhd#JK!HxMfEnAKvJiOc{5#sC1jB$0c!YAFW*8Xy#4N2eRvI)q; zZ4y6w9LRxviq$h zmS7NH(qhikSme2f1zQIJ0d5dYgP_Xl){7J{)qU1=E0GEDXB-Qq!M55yunihkITg_t z*4Usv6T@yTHfV!e+uU_G;sxrjGmHVbiS6?iPa97=CEwvu24LBl1qgJ%A6Kdu0d0*U z7*qDf{_gdyO?up18|j!_A_;Olc+~?(7TvxT-K8aqS9FKOw-i{mR*bXQ$vzv8{;=j7 zVKO{2dpl}Z%zvCcX7TWovL>5%OW)Zx{)LsI;VY7{0go@=>OSNmU!u;qb2z)rW2OI>NxIk_M`DN2ep;du>%;Tp12J^lTn(|@4kK-1g$v!f z5W~U>d>I-%?<`zn{g5pi3AP7n-@5qf{<)9HMV2pARS`Wh;`>)>db;^;?_rd?$NMr< zSgYuLHi5bahmT^a|MnlkYw{$3Pa+5vje!NFn+No(Rieqk|3Z}{HYIA<1qp(c24aJv z3qc{MOxFvsUI=Of)xY(IF+=t9gk7=2rt@*CWWU$h^z^wLN*Iyr^LTDZd?XS|TkJ9b zUcWu1hg?#=+dPx2DX@JuEaL5XbSu6+k->a~>pkB9bhzjR?p=OSW8O$Cqori+O3+0|yl zR*21Oq$iPBjA{Pu>4k&ORNpG}<-M7+tvK45F<@aYY$w?!?^Pf);((8@{tuTn{^v>$ zL-{m`PiAi+sh}-4K29HJ=C+G?3AfW~p@|-U+b33Ii!Ee22doD;fqZ#i_cBiP{1=)Sdv%>rnBH#&m zDz_AoTkxivO)Qf z=!XcK#?{y0g7PNmYEt2N;jBfz@J?ZD9F zj8BPbI$7{WkDW&H1i%fzx2uQ(QPuvpIi^-bK?4SX-nP%%aEKcSy+b%VtII3WX`4(Y zx#coI4xb>c-tIm%_C$@=_73u>aNs3%jxwfXcA_^+4ev-K6wQ;}BBT6pDS)=2l zlwEMhe#HarB}rej5AA>JfYYDufe(d@_x>odh*bfjLqB(~l*UURmC1L9?KFxKdAQ1V%PwC)Iu>K~M+_&2ZDSXkv z-C^U`k&F^(hm{9paTT)TsD{Y0RxEsf6rAlUHFG2jh@-%N=$>G+QBvyqvB?taduFhH zH~;sj^^07BhM2$_WB(DvB;b}z=Zw)-Kd>~oV%Y!^$WMLHtO?#*@l?5%+q2q@D_-qIHyn-^4Z09N%rXNK(`26ef&1Twa zON{I;O|@*@pI^EBd!vs;QD z!asOABmH|px)O}ezXAYjbQi9oMTKOaX~cevC%CG8ZSC4s7S!bx)jR1)EP*<7xNefJ zU;YpiYLNT6i-uR>77@CMR*=o*JBceOIV^|T2XF?qVFy-D43`e}37}%v(0L}2;43FS zWQ^RxxxXM%8%q@2n8#RNukK&;9P!O{GswE;X*rPH*w%(X{aaeXxoj-H1e;xhgdn#* z#@>K6#T)*6`wjHJ-F){V*Hu%y3UuwF=*Q=fX}1$SKQ6(U>8%U_cTsOs3@eTT6(gmC z*3(llj_NJ9gJ-*ThVh#w!p7J9`lRp2F;Kalan{dU%L|@OGgV ze>fS4S)5HTJ+)~gvSVZch*G6ULB-fBDZ%nKqfeb{|HK zo#>a7RI$^&ik_*7PVMR3VLeGGVe@kRo1?mZ&X6kyqgEesDjotu*5GTC4+iavWOlop-wanUk10jUq;^sc- zS=Z{a@J+v5qSrl3Khyo^4(0Ew(lLaO8+7KLRW2K~{Qq{){~vw!GG*P5#A=>p^XY)R S(x-NQ3fPIpcuE!Rr{l6nd9{PAWn@GVAA8-*ddC=m9rD?$Z?*wEu zRKL9Q(W=^`L&Q{IWYw*z38(ffjpHf1g2K{vBdsZhByr-Bkuc@@4wytd)<0_qy4{2$gR8D+#27*dFzT_ed{dfIoI!bE3NCdY+dw+I#PmxOfWD~*}lpfA6>GJ!fOk+>VLEQfiO_VjeRBaHYUpgv<0_9GHbArdYj zTE0odQ=xhypf+I%IiZkdA4frXxSq^N*!GKYdv{%S7Uoz??-qY_72trmqKYoKZ$Cyp zN4XSJ$_>1cG7s#&ei4D60(8bOs||6w&#|87-c)-a3-U|xcVD_Hd$YbtSvW~$m;^^R z27T+RYi~5DF|mtMud1-5Q>-jWiI$R0v$AffrQfcu!umdi%kvVJ_4I%r8s-7`SaY~I zK=Dl>D*x@W$}Q6^oo_Bv*6-@#?)5doUGxJ~s-{VB0Ggxj!?A8{U@J#fj8ejl*dP&& zmp(!+G$Udugz-3;K4v>b1IM5h`CdCG8HYn>xt&*_WEyaA#9jx_>2+KWeO(tlr8r$W zsb$$(8JbuDmj;AnXvv5Q`cg{+Hbb;m>|69BYCA-I68ll05Ida8XN~=bIY+gEpyi_~ zdf|i|jGZ(A?dNslyN?xXL96vk|KSazI=)*hvkriID2+i{+ z$kgA9a-5>ud$Aq9Nv(%T-KBrO{CX@XD_Me3UEeGG;#f0EEhF3OKhm%F5x`s@PJL(; z?ZoKMEKVAt;Zju5SMv=Cq5mC$)1#GGR!Dyw~3oKh29dZ_U|APftmgD5034@Zwr~eF+ zqF3)zr&CJ{j&Vw8@59Vpp5A9rVzXxmU!g`iFJ_m2wXkzrkih7)lB5&a%7iH~RC*K| zQgd4C^!VkjbbQzM?#yJ~w6i&IcSK9PP-%Xi!@oWGVX7q8JUMYtQ=2()l}5;=kB3b) zhcVEb?M|yl{pD9)kY0dw1-8M*gcwPCwAbUKGy7A5yMnU7H>N~?%YFwI3WO6`&Abp6 z@1%^5Tv;_cW~a=qDaJt7j|QvDeg|hDLowS4$G46;!HAdgr@m0Bp6F_nvvgD&HRdEl zVtR_M{*lkpI?yKhv;B4j_?IphsPdaGXZ4xeZIzuV?B(Bkc@+H>S6_Z~F0QYtI{Avu zSrUnSj9OQGh*ytDKKorY-z9pS#XpS4V!FlEVe9ekOMTs8^~x43;?!Os%ro(+4Jrg`;}wT8;QJ;1((kD@nh+}GIlfWt*B93)bf)#q1zen zial`l5S>ljfMs_FrS!!7nJDM-qY0EnZpKhPocRCtx;Eqqe9;oWjD09;XJ6x_G62~8 z+V_L*`fFSF0*k+ZRSvfjK2;BDBT@jy_RyV}gRF+@3o;D0Jqv%X+Xvl_KKYPTy-EVT zMx&*ctIju@E3D=-_LNJ}2TrE=x&QeJqS)Erv8Kxfrdj{N>Hu0%ddQ9~I=aUEZRwp{+8Ho}|=W zQu==BV*=q3`7WUl{wvN2-Y%7n)OI1q^ha|luNKY8veMSjQ7Y2Qq8)oQ_3xXU6?$t+ zIJk(<+%ap55O-`5ACz6p7;4@`@t9H5)V5y+?8ks^+8&I9jzmE(j^8X=@nVvpyB){5 zQVgmc3YN@4j3c__Vn!bukcX9Ouww0XPN?v;SC7<_+X|UEOP@x3G>vq4uE7yX46(nTE50&u#|S&;b(asv_*IYL z&h>tCEJ3R*X(b~6^u7LoO-DbfbH*%|obwqwjG3gXBZuyCzdaCs^=n72v?oH^9yQ+T zQ7$t7Zfft>5(ZK8+n++4{T)qgXTAKIqyVDJ{rX>z%e6%A_J%k{0^hXKn}qb+{Jqq* z?bEC2Nlf-ut6{`4NDO2uL#nSa(bQC~S0x`<$O7~&3CFYo*im2B1ov_zpJV^it7yD# zs%eeyCm;&~&wutNo0ACex(4Pf*Zq847QOU|?X737#aUU!|Ht{MCbwc+oyUJD|gm&SA=-%8V)*s*}QvFnx(@u97afQ8wy_Mx>7C$8N{ z!E$1wB2Bs}OA#1ThDr@r{UdEuj!nd0$UF3h8yEWWd}%|M&OCKtd%l^cmc6zdiGH&z zeJbkc^~S!>qWSrYn_R1RJ)&wMqagGK>qEr<051|tBzyDeenESyEX*)7*PoH7by!r3DR6KY?XTO5EoleN@gDJ=;K{d8UYo$%gPzi$iH98sTVy-@2Qd^Hm5i)K8msi-j>{0sel znXlV{SYeM$6iwV)kw_VcZc{zMr#9z3MmU1q^Q(TdvDYGQtGhXW!jk@v1p92<*}5?t~_<5+`crm9+A zx|qnyBFI-Kxha@RB#YB>CK`V8lQbha?q6?Oe9^eDXr$XM(MopYjSF6*VL;+&@LFy8 zPx8G2a-nVrE~U?BJ>HptLjvq<#PcO4m2ANI1il7+_t95)*50R4X~#^qpeC!Rmq+B} zk0{o*d?fAxpo>cg@v@YRuGR-)i3eqKZKNNuk$h%nWIAmV`(B_SSbDJ(m6=W2EA2C- zoQ03(1PR5%>~2x)Y8LV~c_RlyEH&Cs!ox%=3YW}GE3H`bD^=FcpS?eFyyN$}h7o$R z5@XfN-}ru9aa|ps$WPCyOvv-a&^vu#`7@4JW-6nZpJ?Q@_X=KoR5J11><@>r9~6AH z6&K4YoiUn^B_ZBLne$M}Rfz>lDJP7jj7Y4KqUGz)(e*WKIONnS+!qF9$>#Ng9QoR> z2Pk(n?AftcbC<3y-6xw|7`hN6=et?Ak!zEg&*d0$4k|~MBUyQDO0E5`66=%zWYN+~ zAy0@K`WC$?@5N^osB(IyoEfZ`rX5$y#>%XjhSd*zH!sNdxQ5rxE$5YBVOvTjyfG{Er ze@kb@$As!$C(zeqB}e;C*wA20#ep9Y`)p0s1i8zyk`d&mL-@1!iN$|(E5@%)dheh- z!%O+yXV?m=;!TV2BVKaN@X@f^)PN9rgzq+^JmcU0a9m>s{6L{2-BE}n4JWiT#FVc3 zzAF)5oQ&zEjGA=tP6j+kvAR#IIBD(H_ImYt}ZmHotVI8 zgDt~zSQ-OmbBO^*vp<5DF#?9JlfzgLphVZo47!#>ssA-nHytu7_7eQw(j&2$Xf%_m zx8!Fg#$xQz!ayqhz;=+Q8<@0lG)K2L$hOgcR%u|)e8`^Ak2@|OXN>G2si1dd$VaZ$ zVZ-eNEe{x#L%~EwP-$k{YuACRP&FaAs+OmXp?ozdvfgr?e}@)5@Lg^mGNg|t@-W2W zLg>Ig0ePrcx~s2P`~>I+i){7xkLMfudebvjn;@FC=+eZ?EcrPhyG9DWNm+-LB(vb> zqr@I*iac?qea{;xO8yVYUMoCP`FOstR!9+mA@^;cQMHScoM8%N9Gd$YQbTLofAXUq za}!<`r;2nH!MdaXj28JY=}2nj|AV8mK{y(y+87TwW&}1hD*=!q^@neL+CCITBYvgv zxCd_$Ba{#b8g5ue{F1!I`-u0$?}YzrL?XDJ@mP#!M7o%$eKfEZ_A*gFea$g(CT*V9$x0%S9~#$!j`O-QT;n7fWHqal)%)X5 zR?T)|{H+^sUm5ki^_62^4+W`FzE9ht>&Vrp6dFtUM`A0oKo3}T0TBVtNM@OJ!c8n{ z)das-&$!UMW7C#s{D!vwfS2#@i<{#R%Mz0_3meZ+9lUo{8lz5si!n&O1`kHVAkGmw zEQ!uJD#G^2lUdy`DT;0ttpS(*HV(B&lLS+-An=iRDMi1iW|KAB@tccv7tST`Ze}ex z^*-=$1~f!ER>}k+vVs^Y1qPO*Uw?5ok(}=NI>N(_5-+s7<`**dKHtVf5%FeJl_(-` zW0~c2WqL&Y=_jA`s1kk~9#LG#F1V3pkMrC7#L$ogA7~WBa*oVYJurVZKA(KE4{Y8~ ztQt#>nt`eHfG$c*m)i9B%2LDwpl}mZq#xj8I`!`3Pqdci{8~_cbOHnE*Xf1I%^cWn(KLE{#TB;B61}9FbK1{-C;jZ2A`cy`^s1b}$5{TyQvw62CD9`s zX0gIHh1Q?&1bli^6*)TBIudxKnVgs%(hu8qhyVLsaRgmhObyZ~Uy=`qM z2K8|(t{gycpu{n31BWU)66kx4HsggB546hjnsf7w2DB!P6{g{eg+TPUBaFUEfR2mi zo;ge><5SS{x}U$L{s!Xi<%_JUZ9iU&xL?10;_vI2BpSTVoVGzzD|j2Bva^d6Sjqs~ zR`$t5p^78JHAhx8aSo|i7GVMj@E>DFbJzqQ@ghVV$tYQ~j^ZHcmF8LC?#~8sYhzj^ z%%-`dDXbrz1FOJ>6M>s%UqBAVcF%tK+e+<0mWJyQYW!b=PMX!UI*4yf@17}i=e^<0 zIRubRZ$x`0N}&U#)OKds_auNXOcdShQw6^K{5ieRiG<~e{zcAWBw-O+i z%|KWvF|UgSo*K_2-cipe9U=dUw6VTvQTebH)hQS3-4fbUR`qnppL6jsg7r&ItrOWG zFjZIiRKdR1EqJ`7?0Boiv5Zq*+btrp{IT9T2P54$|Go8q>|JpREo?My6@@{TItMA}1OR^}ern1$?AH|2a_G)0qI2FGO!qEAW) z$v2dGOX;JI`yyp#`rC^@oKH6+oU4{F`%sYtxC8sGGU}iDDls^RBT6YurINI`69YfH)OD@afO(7LkQ2dgs#UJ#^VUW-U=S*nb@Pf8#c~Yua9OLC}1^IPy zx=94~7@|CO1(@-9YQHjdyvZE62=X2mtqrI@lY}h>K86H-vvv^1UVBssarV52&)t1B zEV5pg1~YX4hh>BTepJG7%`moekk|G%799I2H-OJQ6l48+K2K@#-UyVJl8+Rq1p&fx zvB~{XqQ*23xvZ6UkOPBP4kBGdY^BP>Z7svQm(cbnL>#s~ctFVA()VG+Jq}XTe7p$( zlg9m;xV$$NaHJpRyK#1jM`&*3{*ZCN@}08Z@edsvAoBK-d|D^l5s}Om1c6c#ZOD@Z zLjuu|pLJ|%W&OIG`U29Zd-GGet71EBVjnLPYF^zhe8vmfYxeJFNr`haHs?53$6;ti zG}*ImRr6UP=o-{Bygw20XtXj!&2`xkehznH4$)#w{VwqBm4)C&&p1#TYdub0onN}3 zVsC%I;>c#|9iGm9%DAMl%B%Y(X_sp1@WPmjVj|DUK}?woE0z#0@+`(uwfWAtw9qKx zlef;Zkv~z%e4>e&FcT#NAz-sCpmLbjH|z6}`n*F(4*&l=-Avm-mSe@zjbbb%h^zK&^{WW5CS}BQd7Odke$BSzdR$s;kLn@*h z(W4S|B9xyWrt+PSdZ{TZ#3vbHg%u_TGrghOWCh@mKewJw>61&Q`nKb{mYn16G?@|b z6-$BqIgWx3v&eo31VIj|8~=20q7N38Q@ZNhSn12$1f&&Pc=sqJN|Uj~#M93aiRf%5 zS(_4D?3_q4Fn8n6xTe^Gw6w<)iij#77&hUS^=P26^z)|)!Tv7IQbm@D0)MuWt^COmL=U`ucvK6wnwWxqysjWOJ ztG9E4$KwweONVpkHJrF}`Al1^xO_zX4yR#?o@9GS7C454oFW|VsNbc->A%r&930*W zUBi_nRgpg6Ra@`V>2TVjEb0&_p=tjs)M08FW^ZpUA$0BXg zJ=%16{-K1@;P|QtJ~527s&CIu%2h% zuTn}yW&10eP1h#w zgHv{$_9Rxn%0b%tjyjS5WFu|pcZe>e<&sHPK##V323y309p{2SD8(m1w*3DUza*hk zFJn(@OL-1rxQi0f-jID0{*J8ilY>%7liTf8Lz7?FF{iQ+zZ*5*Cj&1rct%NbhMyZF zGLxZMU!9vu^L4N?jaY5j*2Hw!M#OS*hI};P8r}P5iWSv#r`cb!1WYcc=0X?FZ#=dC z{$g0FH%VVR@H-&V{3vC0PA;c1GN8B8WB2E7`OJ0)Y%JZeEHob)pUzf4pR9=%(rCU7 zyt6T@lfX=qFAJ{(e}bhxCZ#-%9C!1gky>YNneBXtAc0wiy6?^Z%mE7=MW-9_kGUYF zFgtZ)h~)1LNavc3XE-@4Y{5ob#c6N@x_xUb#r-Gl2SjNSp+9e^lcHW4X5>ASr}VGK zoNHLcAsOJ&P*tqW&nz9;;(Wo83gpAJk@3;)Y}cYJe06X#&`IzIB3eJT;n--iSR|Tk zZ>Sx@D#0*_q;X1d3ns<jX)A?S`DwZi+HQ1B~|&}>@ix|B29?fF0_T2@N@8gAHB zPul;g@Bil;1+0X)ZTUKpbh<@quH`_&XQ1OUabfHu_bV4x$dSO1tuiKX#vNy#roct+ z(`)*^+TQ3Df`{Vo6#H!KuSha(R13kHgYiFyW6{xx5^x#FueYpWcr3n6mat&m6ffXN zb0RH7sIi8@bUZ!{x0QWj&VsrNhTSzybYsJ%lF`R=)8~R3uV^0ewHc|+#}~gO>*gbm zpgLxBR(fjL&RC}SOO|#OW^`mx2KT@J9ySw0)O2-dDNtt~LcxkFqK4unHuZt!!i|@< z@6qxz^D9GX-rUGp2J!jOZ{D}43%9t2nj`p}ZA9e9RSU4V%Ij#d{DPB_WQiG+R)0n# z3j4$SU1F+y1wEt+1@NJ$d06k-e-VEJ6?0!kDxTkGZoi8ax0ey<%zFrA3;#mJ9V_H* z8|FNUn4q(M2`Ibm3Hq`4As@||(RbbPk!_|gLEN@$>)?;ccvGecVsHt-QFxB`*_E7E zV?60yyA-pZ?vD$US(dNjS;K#Q(e}_c*O)sMCEQR&CWz?GrH$_;`_o`iqdz>~^Sz_@ z@SYq{WJLj)nh`mhR^o@VpvfPl8>WQF5OSEXPu(DYcCfPG#kL9`(vcBdVq}3XT-WLH z@$gy9Ub|-iJhw8h^x-sXK4R5Y{HN}43f4ThXL?-_`)kX|#g64q-DF(jCh@@xhe$Z) zYjSsSH})0xanK{7_k?|a7&QM*-t*^zgprRGAW7ZQMPE2*psNcm_qXVbd-h`nYAQiO zG-?8P&>>v7F^<3-2-EbR+@0X3_+tC?z1;DZQH8Pre*=9YD)Fz@qqIqJQ}Lkf<%X|4YrR0FE3;-1{Cfgtj@U zQY}o1eyDcZU{WmA{=jClqV+`EM7_FzdtinkPgW#BB^?N9qr6fZZEnt0$HpibQI`}< zgD7fX@Fsdo_xpeqW;Nw`zO<-tp+L&iNU$(F@I==Or}|B@BF2B)nCsc1MWl33gOi%^L50#y^ynKj}ME=-W}d zF97osH6!3)6czyvkeNT&L&UZrwbdUgaCc0>>?-^TkYk zObAxzcxg>fU2`oE^32iIBd2^cwBC0gsrFk>dK0{lG3xnJ3rzgc$FuL^Cl-)n8zDDo z*1bMkaTOPfH2c>q1=&09M{RdXss<{s7x=L7e5FvMY_h$yxcR1K;$YvVw~-bMHUFW8bG6a7-!Hy;?b>4W0&F;+ z@lyNvg(m|ua0?bvb=%%G;G@gr_d!F)%3h|N2j@&Q4Of?j` z>;Y*`@81D~2U+O$7^8M;sCDz_ihp1)$#B|GIWbOg8}LjFWs-Z#F>=@}L{;q=Yj5#S zfnqb+U035^SK$d$g+xNJ>yI6rKBvinBCtOuU9U5%k(f z3qzr-glACo|;>kmy@i>Ia@0@()mcBskBpTiCgzQrJkrw_z!}A*qp{XyX$8j*> z`YUOn^&^4=o9^Q2?7r6h#?MYWn19ApXfd^{ji<9wl_FaEYX@!u1lBUwH*!i;Z z#g*C(gq=wJWqlKQc&Kv?K*iFiBEH9;K14ozr0gvhj2^IX<=Z%nawfy$&J@T->$2PP zLe1)^7ge9s4>g4X>qpW+7v(I#sU{>#;uZ&8WoYMleR%p|VwxZ;#` z)Akj~*REdZ-Jii7GicN-*!Y(&H)`niQxce9G5heAq<8x}kYMRhzzq4`Ufy%sI0)mt zLkl+l&cHi_k8)>1OXbAyeIZkwo-YKhShM&aOjEWfOfelj16Y(t3jhEPYr?d9|`5pPc{f*3$wJ`5sDo zAL(b8KxCxGZ#nT;$wxWoI$UJS5jmaWXi3Hs^U?44FwTXiVS%UQC>NYTme2Y|;iLI| zDh%{r&01rFhGn*ca$e>BegI{_RYy2@a|{$u7XZMFeA`^1o;vOrM!P48J>`)-SI(VJHpoC%_UMY zq}SciW-i$mbe#&Z-Q9DF7t6b4^>zZgCT-0-hzJP0PaQ8f1a+}=eNVmpAwu?Rl0xnz zTo4*1-9O?ju>~ET_-Fe`snHG6gl3My{nPbw;3C)7CZy4Bm$OGemcCq7QMLqWVfFvF|7OA+#!?UDk+i}qIjTY5%E>i!ctxO zn0_&ZR1w^irbi$BZ4-gsv`+e(X3}F!v2;kFGfAL_TsTjSM@!;Y@=+`jTAm0Qd%$Rz zf4_0ilu_3~{cO2093QRaTzuy|2(jKud}>H9;{mquvjQ8S(y;rk2Q%vVv(M`Z(Hc=7 zuwd<`-R|`aGblkc;9nM!oDb>JEDs>&v!264Xv;#3d{C~l`PZ|CayR8t`YLkKZnpiqfMMt|5zoxIU+`IV(_#7youOOn{w~4m=h~US0CErM@;Qx)BHi<`&#;5L*ToW#+%Fce>wD z96^m&>ZTmk>(5DijeE}HTGaHdCvPYQJD;?V0Ql{uvu7Lyl3=9nl&02n@uhtz*`zp$ zB3aHgx27aG(z_xoBkU9b!?Q642@SXDz-2% zqV_?hO4xM#$WjF4J>*0rigGu-;xh>Hd5nCwO|#n;>J94UBMsVo9_+lmZU_9Vz8_tl z@;;V7)>Z4N%gNJ%c{4ui=TELmQT6;sM`@=c=F%C$Jf%5nrMQwo|DE$NQFYCe;IJv| zHVo(CUnoDT5;38lgiX&RH&u-5h9aglSfC>@@l?VmO7yVOKSuW0#>o$xM)TYaPM}(s z*7#t^pkdESqf0UC&h5OXxnCCxC!>Qx z4%soD0^NNE-8NEZ_j!-Yi87ipSvDih<~MN4Z@{o1U4aA1yl=sR-=;zcPvbReM=_{A zvP)THvh8wO04YX7%+~LRe?t`yNal7gAFen*Z$QBrR>>2e8Dhd%jF|9-a%C1jgUWFs z!-xKz7@s?(=CoIC8>HM!TEJ=m6W1{*U+5X}BCwsLMPm|Yz=t&Wfj0FZOm)LS+MkEm zaS=xHR1q~-NN-KonkGJLRSJhVHpd$lWjYJExZ%e~?~CWToVV6^PfwIt%3pTRN`Fip zzZrGj;Chn_@{$ZGrs7ME#rPT_or!o|C9C$q3`#6E5i$kOmG_B2Si*s?UsS(Mw%uN! zbN%c=KU`GXY~?h*2-25^{7OAQtg#aJ9&1&5t-S8NAby>yYOQ zZu`YuMz-c@khD*UzVGt$zS^wqXiT*P=-inVw)RZY>k5L7$Qhc?;mznR5iR2UNaRhx zrMPbIul*{H6(;Ur2^%aZ>|7t6p0=qQ^Y7xw*hOLlB6h=_~%i^rTy|keJ#5b#chZqSl8|1){MC#9MPystY&|=<^ z#6_83?^augAx^H!=DTKnqaDJr$R?^4hmAm#f*bWRvplU=hCl=m^T36za@J&w6obiA z9^gN{I9l^>xVz!FuxXSnsi0}WXX)P1t;m2Xjw9~MfC(^Fw#fpPBtzQKqj?2|)b0v% z5b|r5&qtD_k$*OJR(gx_5e%`4R(Yn8r9#)LnXfS_rJvjmWv=mN&OD+LNiokDLQ=*L z$^0)I@s1+TIT`>v{#>S!Kka~^lP<`WV~(K#GMm>;_v%G_=BK!p?&8h&R0Jmq(DcPj z^ZKy$SEq?j5s_m+>!e>RGQT=*Z|(=J%$n4(&e|@Pd08?OVZP$Noh&5`(8HHw1aX6f zDMlP5cRj=X7sh15bEIBdNLr9o87rK&#$65;*>k1l8dGGmDSlxd@&7>Q@Y#b~;cN({ zaQe)IMah|--S3|Lx*r0l#yL;-_1AxTyC!QHDft7BpAM?;dhC6!H@RTe5iZf*P)3cX z0Ks`(-!vHYN6y)u2?bQ>zl$vWd5@$2%cv14U+$H#*STyCy$^0mSe3R&oQ|F^P5k|# z>FA1kHWx|!uIt-cA*jVl=m>w!=X39}L;SU^#q(}z+;y;AK}@E4uDDB_B7SUPM1i@f zUzyAk0@V4Bm+#z-AaCS=3|7waY4mx75xrs>QXY&1Qj=15D@^NEVG!+96Qf1*Q zDb`<9p?tbJ<3QLk!=!1lX!eHVSk0*(IVr?b*!w1~fbx6ZBL&K~a93~}4yu{SF zCQ!}Ef&sO77 zU-9f^@j&1wWt7#uZED1^Bk}VZAwq9u(-v&WfmD7@e7ZQ}t34;7do7W{#8;Vljukc+ zHHjNwDu#7)@B!i#!Q_qN*qvafq2qP}y6Ml=Hv2@w5WUPsc z$my1QMsdr&O@RsYcG(W?=aF1tm|OWdUy?xP-9&*ZDY+S>TeB6)&d*d&l&wAdp)8dR zgJ#-%DrwSi7Tu(%X+qr_69)eo1~n^&6;s{%PawH0P!eBqCqN3pBlJSaKvW}}ug~** zjc?#}W<&m&L}Vm~<9GQ3N0v{It2@3&0QAlGD?Pphg#5E?DnO)AyV(!~Rm5A&rgVVR zX%CP3I+92T5KAN`wL1Ow=Gw5T%p`6k%E1bBEmWX~!1qH+803yF<_jfi8gy!Txe7{$ z@qw}nAF`2lfYb=XC-0)r<$-5u;-j_LLLil1s9{22MDyq7NGE~kGTxYeeI7p`nNa40 z}>*8NYjhDc<1s=lpUO$}r|2{@YHQm~3(^79*C25lq(* zWTAiYeRcj{AR_?gIv!8(=M=FCG4wd4v4e<3bUJ3r64j2!#J#HGuL%J@$;9PSfICH8{*5uRP#eM$ z{f|k!mGH&EbN1WmxuS>54z$d7v3Lc#u5Z&p_vb0z=anvTF1LG=+T16FuFd*DxF@ex5C3SC*v8s6j z4y{D;I0bFADIsx}fWdXGb&#%G4gY){*v`!#A{B?O&Y@bUd7>x#Soi{3U zM{IwN){^8(m(|=Oc<2Bi`MJf9Y&E< zj#0kpd;pU@IcLFp;{Jw2IRk)?N^ip~0aG2aB)Bi*Wv7*(j!ffU#|W8gzv7*!6})*= z@!;&&XUVzlsNX16?%$o#Mlm-~elHS2j#*3i{_#oYy{>gV;SJ69rG*>%MSgchk0ZH8 zzd9`O6U0bkh0Tl;d=$avXXD7DkJ}T5GFN%bx;k(HZOMmr>cMS{W^(=3b*IBY%gQEi z$*GYu_GU~!(!cxl(~piD3zL|RQ9@N*nXmI!y0dP62C)0th#;xG0_!JxPe+Av_pH+5ANA_P zqWC79nF}Bc{kVpo0)-rd=H+#sQIar1-tW z`Fho}eF)0EkmJH*>s@%5hTRb>I$@DqUkUGBK*P7k@8#(%X5WM{QkkzpAX(hDv-BA| zSia1C2YV}L<(J$&jxG0?zMz28-z4NatWhMTcZW>o0>r#Us{kyf(WGL}YtJvHtkAPL z?Vz~f_CQ)BA zs5Sd2?vhC3#ZkRaMY>&N%5Ti4zyGlZ`n>4Q@DP6`v?XN9G#iw&kLlPY2*b&P6A|>W z1*Eqw?FR}}w1$>ZJT{#I+@J?lc4Ccfr=!I5zI6io<~KOk|7xg}dBEc2b{j*^z^pah ztb;a#>VN8~dc)Q=`E*H-XppRk0K&}bF%gn+@w$%5-;=Sa9&;+H0zvq`mBwD%%aWzT zQ!_!YjP70rl~Q7y6$XFOM)xgQGdm8ArAc`IsmBANtNrj&?R4Qs|KX2;y+=fbZqI4^ zuNy^l#JXOoo#4Iwm=c}>-v+&p@(6P;3;4D@kIw1LJYE`o@r~AUyd+u6Li53Ax5_N}A~&dQ;^c+AQI{Z|Bw~4;m_U2hv*F zQ+Aq9V*o!mmw(nVRke0@<6ar-jgRDWDQss95$mPDE75wUc%nrN`Qs49aBeV8BmF!|5Ic7JbH}XnbOw7D_=G6Y#3Mn zwdaoQYsP#RQA^t8DvXx!q{LHGA?_1#Ya5M8gU)!jt;2E6-_


o)7&b4ZlIYHz>_ zI+*Hgq2%Z9_JFIlF;i{MyUP*k)}3~p9t)U_YGI;A_ois3DV^2I=fx9?HG<^{({Ior z^xD~b-{ri%`}yAbdh3zeGfb5+@%xzo+%n(4PDKoj+|5E7-A2U==L(dKI=>E5ahe+E z8R;uh`+$(BOQMUrt>&$fX%T~m(6VIHp#3g2di=LIX9s${GL42|GAh(5>))gs;-6Q4 zhjlyTb))XN#!xTbEA>I=J>F#B86AajCZ0Jk{0iE!N_<;t(Rz#F95X3e2O*R(%S6ae znOWmeIcs?{J2kGRL96W?_ySMB+v^Y28pvmV` z&#~SlBosb}?Hf3vRw(k9_HT{@eAiTAt8LIlG0k9;=Zf zSS;c+?E4HPJh|UVOcx%df95Tb#?AuS~qv*$)>IX_VQLca>|ceGyX@4%Sd{Z5XySBdXK;g#2l(jC ztN32)0CDHXt^O*5{`!98#QfUN@YE979TFENqi{G~436`taPDKN9rJ)!ch&QwK-DRV zcY?0l`;ZgCD;2K0&8^thD{Rr2l^pa{j+z&|v(WzoUWTp0 literal 0 HcmV?d00001 diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java index 5da28b1c55..9fe033d0b6 100644 --- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java +++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapPresenter.java @@ -14,8 +14,10 @@ import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.mvp.Presenter; import com.mogo.commons.voice.AIAssist; import com.mogo.commons.voice.IMogoVoiceCmdCallBack; +import com.mogo.commons.voice.VoicePreemptType; import com.mogo.map.navi.IMogoNavi; import com.mogo.map.uicontroller.EnumMapUI; +import com.mogo.map.uicontroller.MapControlResult; import com.mogo.module.common.MogoModulePaths; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; @@ -39,20 +41,20 @@ import java.util.Map; *

* 描述 */ -public class MapPresenter extends Presenter implements - IMogoIntentListener, - IMogoVoiceCmdCallBack { +public class MapPresenter extends Presenter< MapView > implements + IMogoIntentListener, + IMogoVoiceCmdCallBack { private static final String TAG = "MapPresenter"; private static final String AUTONAVI_STANDARD_BROADCAST_RECV = - "AUTONAVI_STANDARD_BROADCAST_RECV"; + "AUTONAVI_STANDARD_BROADCAST_RECV"; private IMogoMapService mMogoMapService; private IMogoIntentManager mMogoIntentManager; private IMogoSearchManager mSearchManager; private IMogoRefreshStrategyController mRefreshStrategyController; - public MapPresenter(MapView view) { - super(view); + public MapPresenter( MapView view ) { + super( view ); initBroadcast(); } @@ -61,78 +63,68 @@ public class MapPresenter extends Presenter implements */ private void initBroadcast() { BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { - @Override public void onReceive(Context context, Intent intent) { + @Override + public void onReceive( Context context, Intent intent ) { String action = intent.getAction(); - if (TextUtils.equals(action, AUTONAVI_STANDARD_BROADCAST_RECV)) { - int key_type = intent.getIntExtra("KEY_TYPE", 0); - int type = intent.getIntExtra("EXTRA_TYPE", -1); - int opera_type = intent.getIntExtra("EXTRA_OPERA", -1); + if ( TextUtils.equals( action, AUTONAVI_STANDARD_BROADCAST_RECV ) ) { + int key_type = intent.getIntExtra( "KEY_TYPE", 0 ); + int type = intent.getIntExtra( "EXTRA_TYPE", -1 ); + int opera_type = intent.getIntExtra( "EXTRA_OPERA", -1 ); - Logger.d("NaviManager", "key_type" + key_type); - if (key_type == 10027) { + Logger.d( "NaviManager", "key_type" + key_type ); + if ( key_type == 10027 ) { - if (type == 0) { - mView.getUIController().setTrafficEnabled(opera_type == 0); - } else if (type == 1) { - boolean isLocked = mMogoMapService.getMapUIController().isCarLocked(); - mView.getUIController().changeZoom(opera_type == 0); - if ( isLocked ) { - // 保持锁车状态 - UiThreadHandler.postDelayed( ()->{ - mView.getUIController().setLockZoom( ( ( int ) mMogoMapService.getMapUIController().getZoomLevel() ) ); - mMogoMapService.getMapUIController().recoverLockMode();//缩放地图会导致锁车发生改变,这里强制锁车 - }, 1_000 ); - } else { - // 20s后锁车刷新 - mRefreshStrategyController.restartAutoRefreshAtTime( 20_000 ); - } - } else if (type == 2) { + if ( type == 0 ) { + mView.getUIController().setTrafficEnabled( opera_type == 0 ); + } else if ( type == 1 ) { + zoomMap( opera_type == 0 ); + } else if ( type == 2 ) { - mMogoIntentManager.invoke(AUTONAVI_STANDARD_BROADCAST_RECV,intent); - if (opera_type == 0) { - mView.getUIController().changeMapMode(EnumMapUI.CarUp_2D); - } else if (opera_type == 1) { - mView.getUIController().changeMapMode(EnumMapUI.NorthUP_2D); + mMogoIntentManager.invoke( AUTONAVI_STANDARD_BROADCAST_RECV, intent ); + if ( opera_type == 0 ) { + mView.getUIController().changeMapMode( EnumMapUI.CarUp_2D ); + } else if ( opera_type == 1 ) { + mView.getUIController().changeMapMode( EnumMapUI.NorthUP_2D ); //AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); - } else if (opera_type == 2) { - mView.getUIController().changeMapMode(EnumMapUI.CarUp_3D); + } else if ( opera_type == 2 ) { + mView.getUIController().changeMapMode( EnumMapUI.CarUp_3D ); //AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); } } - } else if (key_type == 10048) { + } else if ( key_type == 10048 ) { //* @param type 0:自动; 1:白天; 2:黑夜 - int day_night_mode = intent.getIntExtra("EXTRA_DAY_NIGHT_MODE", -1); - if (day_night_mode == 0) { - mView.getUIController().changeMapMode(EnumMapUI.Type_AUTO_LIGHT_Night); - } else if (day_night_mode == 1) { - mView.getUIController().changeMapMode(EnumMapUI.Type_Light); - } else if (day_night_mode == 2) { - mView.getUIController().changeMapMode(EnumMapUI.Type_Night); + int day_night_mode = intent.getIntExtra( "EXTRA_DAY_NIGHT_MODE", -1 ); + if ( day_night_mode == 0 ) { + mView.getUIController().changeMapMode( EnumMapUI.Type_AUTO_LIGHT_Night ); + } else if ( day_night_mode == 1 ) { + mView.getUIController().changeMapMode( EnumMapUI.Type_Light ); + } else if ( day_night_mode == 2 ) { + mView.getUIController().changeMapMode( EnumMapUI.Type_Night ); } //intent.setAction("AUTONAVI_STANDARD_BROADCAST_RECV"); //intent.putExtra("KEY_TYPE", 10049); //intent.putExtra("EXTRA_ENDURANCE_DATA", continueNavi); //继续导航 - } else if (key_type == 10049) { + } else if ( key_type == 10049 ) { boolean extra_endurance_data = - intent.getBooleanExtra("EXTRA_ENDURANCE_DATA", false); - if (extra_endurance_data) { + intent.getBooleanExtra( "EXTRA_ENDURANCE_DATA", false ); + if ( extra_endurance_data ) { mView.getUIController().recoverLockMode(); } - } else if (key_type == 10006) { + } else if ( key_type == 10006 ) { - int extra_is_show = intent.getIntExtra("EXTRA_IS_SHOW", 0); + int extra_is_show = intent.getIntExtra( "EXTRA_IS_SHOW", 0 ); //if (extra_is_show == 0) { // mView.getUIController().displayOverview(); //} else { // mView.getUIController().recoverLockMode(); //} - }else if (key_type == 10005){ - int navi_route_prefer = intent.getIntExtra("NAVI_ROUTE_PREFER", type); + } else if ( key_type == 10005 ) { + int navi_route_prefer = intent.getIntExtra( "NAVI_ROUTE_PREFER", type ); } @@ -159,13 +151,38 @@ public class MapPresenter extends Presenter implements }; IntentFilter inputFilter = new IntentFilter(); - inputFilter.addAction(AUTONAVI_STANDARD_BROADCAST_RECV); - getContext().registerReceiver(broadcastReceiver, inputFilter); + inputFilter.addAction( AUTONAVI_STANDARD_BROADCAST_RECV ); + getContext().registerReceiver( broadcastReceiver, inputFilter ); + } + + private void zoomMap( boolean zoomIn ) { + boolean isLocked = mMogoMapService.getMapUIController().isCarLocked(); + MapControlResult result = mView.getUIController().changeZoom( zoomIn ); + if ( result == MapControlResult.TARGET ) { + UiThreadHandler.postDelayed( () -> { + if ( zoomIn ) { + AIAssist.getInstance( getContext() ).speakTTSVoice( "地图已是最大", VoicePreemptType.PREEMPT_TYPE_NEXT, null ); + } else { + AIAssist.getInstance( getContext() ).speakTTSVoice( "地图已是最小", VoicePreemptType.PREEMPT_TYPE_NEXT, null ); + } + }, 1_000L ); // 避免小智障播放完毕之前播报 + return; + } + if ( isLocked ) { + // 保持锁车状态 + UiThreadHandler.postDelayed( () -> { + mView.getUIController().setLockZoom( ( ( int ) mMogoMapService.getMapUIController().getZoomLevel() ) ); + mMogoMapService.getMapUIController().recoverLockMode();//缩放地图会导致锁车发生改变,这里强制锁车 + }, 1_000 ); + } else { + // 20s后锁车刷新 + mRefreshStrategyController.restartAutoRefreshAtTime( 20_000 ); + } } @Override - public void onCreate(@NonNull LifecycleOwner owner) { - super.onCreate(owner); + public void onCreate( @NonNull LifecycleOwner owner ) { + super.onCreate( owner ); IMogoServiceApis apis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( getContext() ); mMogoMapService = apis.getMapServiceApi(); @@ -173,104 +190,99 @@ public class MapPresenter extends Presenter implements mSearchManager = apis.getSearchManagerApi(); mRefreshStrategyController = apis.getRefreshStrategyControllerApi(); - IMogoNavi mogoNavi = mMogoMapService.getNavi(getContext()); - mogoNavi.setCalculatePathDisplayBounds(new Rect( - ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.module_map_display_overview_left_margin), - ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.module_map_display_overview_top_margin), - ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.module_map_display_overview_right_margin), - ResourcesHelper.getDimensionPixelSize(getContext(), R.dimen.module_map_display_overview_bottom_margin) - )); + IMogoNavi mogoNavi = mMogoMapService.getNavi( getContext() ); + mogoNavi.setCalculatePathDisplayBounds( new Rect( + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_display_overview_left_margin ), + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_display_overview_top_margin ), + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_display_overview_right_margin ), + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_display_overview_bottom_margin ) + ) ); } @Override - public void onResume(@NonNull LifecycleOwner owner) { - super.onResume(owner); + public void onResume( @NonNull LifecycleOwner owner ) { + super.onResume( owner ); registerVoiceCmd(); } @Override - public void onPause(@NonNull LifecycleOwner owner) { - super.onPause(owner); + public void onPause( @NonNull LifecycleOwner owner ) { + super.onPause( owner ); unregisterVoiceCmd(); } private void registerVoiceCmd() { - for (Map.Entry entry : VoiceConstants.sVoiceCmds.entrySet()) { - AIAssist.getInstance(getContext()) - .registerUnWakeupCommand(entry.getKey(), entry.getValue(), this); + for ( Map.Entry< String, String[] > entry : VoiceConstants.sVoiceCmds.entrySet() ) { + AIAssist.getInstance( getContext() ) + .registerUnWakeupCommand( entry.getKey(), entry.getValue(), this ); } - for (String cmd : VoiceConstants.sCmds) { - mMogoIntentManager.registerIntentListener(cmd, this); + for ( String cmd : VoiceConstants.sCmds ) { + mMogoIntentManager.registerIntentListener( cmd, this ); } } private void unregisterVoiceCmd() { - for (Map.Entry entry : VoiceConstants.sVoiceCmds.entrySet()) { - AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(entry.getKey(), this); + for ( Map.Entry< String, String[] > entry : VoiceConstants.sVoiceCmds.entrySet() ) { + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( entry.getKey(), this ); } - for (String cmd : VoiceConstants.sCmds) { - mMogoIntentManager.unregisterIntentListener(cmd, this); + for ( String cmd : VoiceConstants.sCmds ) { + mMogoIntentManager.unregisterIntentListener( cmd, this ); } } @Override - public void onIntentReceived(String command, Intent intent) { - if (TextUtils.isEmpty(command)) { + public void onIntentReceived( String command, Intent intent ) { + if ( TextUtils.isEmpty( command ) ) { return; } - onCmdSelected(command); + onCmdSelected( command ); } @Override - public void onCmdSelected(String cmd) { - Logger.d(TAG, cmd); - switch (cmd) { + public void onCmdSelected( String cmd ) { + Logger.d( TAG, cmd ); + switch ( cmd ) { case VoiceConstants.CMD_MAP_TRAFFIC_MODE_UN_WAKEUP: case VoiceConstants.CMD_MAP_TRAFFIC_MODE: - AIAssist.getInstance(getContext()).speakTTSVoice("已打开", null); - mView.getUIController().setTrafficEnabled(true); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已打开", null ); + mView.getUIController().setTrafficEnabled( true ); mSearchManager.showSearch(); break; case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE_UN_WAKEUP: case VoiceConstants.CMD_MAP_UN_TRAFFIC_MODE: - AIAssist.getInstance(getContext()).speakTTSVoice("已关闭", null); - mView.getUIController().setTrafficEnabled(false); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已关闭", null ); + mView.getUIController().setTrafficEnabled( false ); mSearchManager.showMain(); break; case VoiceConstants.CMD_MAP_ZOOM_IN_UN_WAKEUP: - AIAssist.getInstance(getContext()).speakTTSVoice("已放大", null); case VoiceConstants.CMD_MAP_ZOOM_IN: - mView.getUIController().changeZoom(true); + zoomMap( true ); break; case VoiceConstants.CMD_MAP_ZOOM_OUT_UN_WAKEUP: - AIAssist.getInstance(getContext()).speakTTSVoice("已缩小", null); case VoiceConstants.CMD_MAP_ZOOM_OUT: - mView.getUIController().changeZoom(false); + zoomMap( false ); break; case VoiceConstants.CMD_MAP_2D_UN_WAKEUP: case VoiceConstants.CMD_MAP_2D: case VoiceConstants.CMD_MAP_NORTH_UP_MODE_UN_WAKEUP: - AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); case VoiceConstants.CMD_MAP_NORTH_UP_MODE: - mView.getUIController().changeMapMode(EnumMapUI.NorthUP_2D); - //AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); - + mView.getUIController().changeMapMode( EnumMapUI.NorthUP_2D ); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_3D_UN_WAKEUP: - AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); case VoiceConstants.CMD_MAP_3D: - mView.getUIController().changeMapMode(EnumMapUI.CarUp_3D); - AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); + mView.getUIController().changeMapMode( EnumMapUI.CarUp_3D ); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP: - AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); case VoiceConstants.CMD_MAP_DAY_TIME_MODE: - mView.getUIController().changeMapMode(EnumMapUI.Type_Light); + mView.getUIController().changeMapMode( EnumMapUI.Type_Light ); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; //case VoiceConstants.CMD_MAP_GO_COMPANY_UN_WAKEUP: @@ -294,29 +306,29 @@ public class MapPresenter extends Presenter implements break; case VoiceConstants.CMD_MAP_NIGHT_MODE_UN_WAKEUP: - AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); case VoiceConstants.CMD_MAP_NIGHT_MODE: - mView.getUIController().changeMapMode(EnumMapUI.Type_Night); + mView.getUIController().changeMapMode( EnumMapUI.Type_Night ); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE_UN_WAKEUP: - AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); case VoiceConstants.CMD_MAP_AUTO_LIGHT_NIGHT_MODE: - mView.getUIController().changeMapMode(EnumMapUI.Type_AUTO_LIGHT_Night); + mView.getUIController().changeMapMode( EnumMapUI.Type_AUTO_LIGHT_Night ); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE_UN_WAKEUP: - AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); case VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE: //mView.getUIController().displayOverview(); break; case VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE_UN_WAKEUP: - AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); case VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE: mView.getUIController().recoverLockMode(); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_CAR_UP_MODE_UN_WAKEUP: - AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); case VoiceConstants.CMD_MAP_CAR_UP_MODE: - mView.getUIController().changeMapMode(EnumMapUI.CarUp_2D); + mView.getUIController().changeMapMode( EnumMapUI.CarUp_2D ); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; //case VoiceConstants.CMD_MAP_GEO_NEARBY: @@ -328,14 +340,14 @@ public class MapPresenter extends Presenter implements case VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE: case VoiceConstants.CMD_MAP_SPEAK_DRAFT_MODE_UN_WAKEUP: mSearchManager.speakDraft(); - AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE: case VoiceConstants.CMD_MAP_SPEAK_DETAIL_MODE_UN_WAKEUP: mSearchManager.speakDetail(); - AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); + AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_SPEAK_REMAIN: @@ -346,22 +358,22 @@ public class MapPresenter extends Presenter implements } @Override - public void onCmdAction(String speakText) { + public void onCmdAction( String speakText ) { } @Override - public void onCmdCancel(String speakText) { + public void onCmdCancel( String speakText ) { } @Override - public void onSpeakEnd(String speakText) { + public void onSpeakEnd( String speakText ) { } @Override - public void onSpeakSelectTimeOut(String speakText) { + public void onSpeakSelectTimeOut( String speakText ) { } }