From a83c528b5d87dd582887f503946bda02f19daf9c Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Thu, 19 Mar 2020 16:24:14 +0800 Subject: [PATCH] opt --- .../map/impl/amap/AMapNaviViewWrapper.java | 11 ++++ .../amap/navi/AMapNaviListenerAdapter.java | 4 +- .../mogo/map/impl/amap/navi/NaviClient.java | 2 +- .../impl/amap/navi/NaviListenerAdapter.java | 6 ++ .../module/apps/AppNavigatorFragment.java | 4 -- .../module/apps/AppNavigatorPresenter.java | 46 +++++++++++++- .../mogo/module/apps/AppNavigatorView.java | 5 -- .../java/com/mogo/module/apps/AppsConst.java | 12 ++-- .../mogo/module/apps/AppsListPresenter.java | 58 ++++++++++++++---- .../com/mogo/module/main/MainActivity.java | 4 +- .../com/mogo/module/main/MainPresenter.java | 2 +- .../com/mogo/module/service/MogoServices.java | 13 +++- .../com/mogo/module/service/ServiceConst.java | 12 ++++ .../drawable-ldpi/icon_map_marker_book.png | Bin 0 -> 1058 bytes .../icon_map_marker_car_gray.png | Bin 0 -> 1858 bytes .../icon_map_marker_location_blue.png | Bin 0 -> 902 bytes .../drawable-ldpi/icon_map_marker_misic.png | Bin 0 -> 883 bytes .../drawable-ldpi/icon_map_marker_news.png | Bin 0 -> 1040 bytes 18 files changed, 146 insertions(+), 33 deletions(-) create mode 100755 modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_book.png create mode 100755 modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_car_gray.png create mode 100644 modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_location_blue.png create mode 100755 modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_misic.png create mode 100755 modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_news.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 b163ede5f4..2c49f8a383 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 @@ -468,8 +468,16 @@ public class AMapNaviViewWrapper implements IMogoMapView, @Override public void showMyLocation( boolean visible ) { + Logger.d( TAG, "showMyLocation1" ); if ( checkAMapView() ) { MyLocationStyle style = mMapView.getMap().getMyLocationStyle(); + + if ( visible ) { + if ( NaviClient.getInstance( getContext() ).isNaviing() ) { + return; + } + } + style.showMyLocation( visible ); if ( visible ) { // 强制刷新一遍车标 @@ -483,6 +491,9 @@ public class AMapNaviViewWrapper implements IMogoMapView, @Override public void showMyLocation( float degree ) { + if ( NaviClient.getInstance( getContext() ).isNaviing() ) { + return; + } if ( checkAMapView() ) { mCursorView = View.inflate( getContext(), R.layout.map_amap_cursor, null ); mCursorView.setRotation( degree ); diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AMapNaviListenerAdapter.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AMapNaviListenerAdapter.java index 8584b96289..b851ca258c 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AMapNaviListenerAdapter.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AMapNaviListenerAdapter.java @@ -28,6 +28,7 @@ import java.util.List; public abstract class AMapNaviListenerAdapter implements AMapNaviListener { private static final String TAG = "AMapNaviListenerAdapter"; + protected String mLastSpeakWord; @Override public void onInitNaviFailure() { @@ -61,7 +62,8 @@ public abstract class AMapNaviListenerAdapter implements AMapNaviListener { @Override public void onGetNavigationText( String s ) { - + mLastSpeakWord = s; + Logger.d( TAG, s ); } @Override diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java index 279a4b5afa..e24f8944e7 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviClient.java @@ -51,7 +51,7 @@ public class NaviClient implements IMogoNavi { private NaviClient( Context context ) { mAMapNavi = AMapNavi.getInstance( context ); mAMapNavi.setEmulatorNaviSpeed( 120 ); - mAMapNavi.setUseInnerVoice( true ); + mAMapNavi.setUseInnerVoice( true, true ); mAMapNaviListener = new NaviListenerAdapter( context, mAMapNavi, this ); mAimlessModeListener = new AimlessModeListenerAdapter() { }; diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java index bf95e060c4..b89eca72b5 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/NaviListenerAdapter.java @@ -3,6 +3,7 @@ package com.mogo.map.impl.amap.navi; import android.content.Context; import android.graphics.Rect; import android.os.Trace; +import android.text.TextUtils; import com.amap.api.maps.model.Polyline; import com.amap.api.navi.AMapNavi; @@ -16,6 +17,7 @@ import com.amap.api.navi.model.AMapNaviCameraInfo; import com.amap.api.navi.model.AMapNaviInfo; import com.amap.api.navi.model.AMapNaviLocation; import com.amap.api.navi.model.NaviInfo; +import com.mogo.commons.voice.AIAssist; import com.mogo.map.MogoLatLng; import com.mogo.map.impl.amap.AMapWrapper; import com.mogo.map.impl.amap.message.AMapMessageManager; @@ -182,6 +184,10 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { */ private void stopNaviDelay() { UiThreadHandler.postDelayed( () -> { + if ( TextUtils.isEmpty( mLastSpeakWord ) || !mLastSpeakWord.contains( "结束" ) ) { + AIAssist.getInstance( mContext ).speakTTSVoice( "到达目的地附近,本次导航结束" ); + } + mLastSpeakWord = ""; stopNavi(); }, 5_000L ); } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java index d3f3549d29..313662e58b 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java @@ -177,10 +177,6 @@ public class AppNavigatorFragment extends MvpFragment * 描述 */ -public class AppNavigatorPresenter extends Presenter< AppNavigatorView > implements IMogoIntentListener { +public class AppNavigatorPresenter extends Presenter< AppNavigatorView > implements IMogoIntentListener, IMogoVoiceCmdCallBack { private static final String TAG = "AppNavigatorPresenter"; @@ -41,12 +43,14 @@ public class AppNavigatorPresenter extends Presenter< AppNavigatorView > impleme mIntentManager = ( IMogoIntentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_INTENT_MANAGER ).navigation( getContext() ); mMogoStatusManager = ( IMogoStatusManager ) ARouter.getInstance().build( MogoServicePaths.PATH_STATUS_MANAGER ).navigation( getContext() ); // 预加载应用列表,空间换时间 - AppsModel.getInstance(getContext()).load( null ); + AppsModel.getInstance( getContext() ).load( null ); } @Override public void onResume( @NonNull LifecycleOwner owner ) { super.onResume( owner ); + AIAssist.getInstance( getContext() ).registerUnWakeupCommand( AppsConst.CMD_UN_WAKE_OPEN_APP_LIST, AppsConst.CMD_UN_WAKE_WORDS_OPEN_APP_LIST, this ); + AIAssist.getInstance( getContext() ).registerUnWakeupCommand( AppsConst.CMD_UN_WAKE_OPEN_CAR_SETTINGS, AppsConst.CMD_UN_WAKE_WORDS_OPEN_CAR_SETTINGS, this ); mIntentManager.registerIntentListener( AppsConst.COMMAND_OPERATION, this ); } @@ -54,6 +58,8 @@ public class AppNavigatorPresenter extends Presenter< AppNavigatorView > impleme public void onPause( @NonNull LifecycleOwner owner ) { super.onPause( owner ); mIntentManager.unregisterIntentListener( AppsConst.COMMAND_OPERATION, this ); + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( AppsConst.CMD_UN_WAKE_OPEN_APP_LIST ); + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( AppsConst.CMD_UN_WAKE_OPEN_CAR_SETTINGS ); } @Override @@ -83,6 +89,42 @@ public class AppNavigatorPresenter extends Presenter< AppNavigatorView > impleme } } + @Override + public void onCmdSelected( String cmd ) { + switch ( cmd ) { + case AppsConst.CMD_UN_WAKE_OPEN_APP_LIST: + mView.openAppsPanel(); + break; + case AppsConst.CMD_UN_WAKE_OPEN_CAR_SETTINGS: + try { + LaunchUtils.launchByPkg( getContext(), AppsConst.APP_PKG_CAR_SETTINGS ); + } catch ( Exception e ) { + TipToast.shortTip( R.string.module_apps_str_no_app ); + } + break; + } + } + + @Override + public void onCmdAction( String speakText ) { + + } + + @Override + public void onCmdCancel( String speakText ) { + + } + + @Override + public void onSpeakEnd( String speakText ) { + + } + + @Override + public void onSpeakSelectTimeOut( String speakText ) { + + } + @Override public void onDestroy( @NonNull LifecycleOwner owner ) { if ( mIntentManager != null ) { diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorView.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorView.java index 52ca2e2fe0..00e75e1009 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorView.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorView.java @@ -15,9 +15,4 @@ public interface AppNavigatorView extends IView { * 打开全部应用 */ void openAppsPanel(); - - /** - * 关闭全部应用 - */ - void closeAppsPanel(); } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsConst.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsConst.java index 142822b9d5..5809924c22 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsConst.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsConst.java @@ -18,10 +18,6 @@ public class AppsConst { */ public static final int TOTAL_SIZE_EACH_PAGE = 12; - /** - * 媒体跳转 - */ - public static final String APP_PKG_MUSIC = "com.pvetec.musics"; /** * 车辆设置跳转 */ @@ -32,5 +28,13 @@ public class AppsConst { public static final String OPERATION_OPEN = "打开"; public static final String OPERATION_CLOSE = "关闭"; + public static final String CMD_UN_WAKE_OPEN_APP_LIST = "CMD_UN_WAKE_OPEN_APP_LIST"; + public static final String[] CMD_UN_WAKE_WORDS_OPEN_APP_LIST = new String[]{"打开全部应用"}; + + public static final String CMD_UN_WAKE_CLOSE_APP_LIST = "CMD_UN_WAKE_CLOSE_APP_LIST"; + public static final String[] CMD_UN_WAKE_WORDS_CLOSE_APP_LIST = new String[]{"关闭全部应用"}; + + public static final String CMD_UN_WAKE_OPEN_CAR_SETTINGS = "CMD_UN_WAKE_OPEN_CAR_SETTINGS"; + public static final String[] CMD_UN_WAKE_WORDS_OPEN_CAR_SETTINGS = new String[]{"打开快捷设置"}; } diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListPresenter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListPresenter.java index 130081f148..7b297f0a99 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListPresenter.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppsListPresenter.java @@ -1,12 +1,15 @@ package com.mogo.module.apps; import android.content.Intent; +import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.lifecycle.LifecycleOwner; 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.module.apps.utils.LaunchUtils; import com.mogo.service.MogoServicePaths; import com.mogo.service.intent.IMogoIntentListener; @@ -22,7 +25,7 @@ import org.json.JSONObject; *

* 描述 */ -public class AppsListPresenter extends Presenter< AppsListView > implements IMogoIntentListener { +public class AppsListPresenter extends Presenter< AppsListView > implements IMogoIntentListener, IMogoVoiceCmdCallBack { private static final String TAG = "AppsListPresenter"; @@ -37,30 +40,59 @@ public class AppsListPresenter extends Presenter< AppsListView > implements IMog super.onCreate( owner ); mIntentManager = ( IMogoIntentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_INTENT_MANAGER ).navigation( getContext() ); mIntentManager.registerIntentListener( AppsConst.COMMAND_OPERATION, this ); + AIAssist.getInstance( getContext() ).registerUnWakeupCommand( AppsConst.CMD_UN_WAKE_CLOSE_APP_LIST, AppsConst.CMD_UN_WAKE_WORDS_CLOSE_APP_LIST, this ); + AIAssist.getInstance( getContext() ).registerUnWakeupCommand( AppsConst.CMD_GLOBAL_UN_WAKEUP_CLOSE_APP_LIST, AppsConst.CMD_UN_WAKE_WORDS_CLOSE_APP_LIST, this ); } @Override public void onIntentReceived( String intentStr, Intent intent ) { - if ( !AppsConst.COMMAND_OPERATION.equals( intentStr ) ) { - return; - } - try { - JSONObject object = new JSONObject( intent.getStringExtra( "data" ) ); - String app = object.optString( "object" ); - String operation = object.optString( "operation" ); - if ( AppsConst.OBJECT_ALL_APPS.equals( app ) ) { - if ( AppsConst.OPERATION_CLOSE.equals( operation ) ) { - mView.closeAppsPanel(); + if ( AppsConst.COMMAND_OPERATION.equals( intentStr ) ) { + try { + JSONObject object = new JSONObject( intent.getStringExtra( "data" ) ); + String app = object.optString( "object" ); + String operation = object.optString( "operation" ); + if ( AppsConst.OBJECT_ALL_APPS.equals( app ) ) { + if ( AppsConst.OPERATION_CLOSE.equals( operation ) ) { + mView.closeAppsPanel(); + } } + } catch ( JSONException e ) { + e.printStackTrace(); } - } catch ( JSONException e ) { - e.printStackTrace(); } } + @Override + public void onCmdSelected( String cmd ) { + if ( TextUtils.equals( AppsConst.CMD_UN_WAKE_CLOSE_APP_LIST, cmd ) ) { + mView.closeAppsPanel(); + } + } + + @Override + public void onCmdAction( String speakText ) { + + } + + @Override + public void onCmdCancel( String speakText ) { + + } + + @Override + public void onSpeakEnd( String speakText ) { + + } + + @Override + public void onSpeakSelectTimeOut( String speakText ) { + + } + @Override public void onDestroy( @NonNull LifecycleOwner owner ) { super.onDestroy( owner ); mIntentManager.unregisterIntentListener( AppsConst.COMMAND_OPERATION, this ); + AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( AppsConst.CMD_UN_WAKE_CLOSE_APP_LIST ); } } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index be9d8f248c..9c2c7f16f8 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -114,7 +114,9 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme final long start = System.currentTimeMillis(); try { IMogoModuleProvider provider = mCardModulesAdapter.getProvider( mCurrentPosition ); - mPresenter.postTrackLastCardShowEvent( provider ); + if ( mCurrentPosition != position ) { + mPresenter.postTrackLastCardShowEvent( provider ); + } mCurrentPosition = position; provider = mCardModulesAdapter.getProvider( mCurrentPosition ); mMogoModuleHandler.setModuleEnable( provider.getModuleName() ); diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java index 12db43890c..7979fa545e 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainPresenter.java @@ -64,6 +64,7 @@ public class MainPresenter extends Presenter< MainView > { public MainPresenter( MainView view ) { super( view ); + mCardStartShowTime = System.currentTimeMillis(); } @Override @@ -76,7 +77,6 @@ public class MainPresenter extends Presenter< MainView > { mView.switch2Card( cardInfo.mCardName, cardInfo.mLockCar ); } ); mAnalytics = ( IMogoAnalytics ) ARouter.getInstance().build( MogoServicePaths.PATH_UTILS_ANALYTICS ).navigation( getContext() ); - mCardStartShowTime = System.currentTimeMillis(); } /** diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index 46e7b631fa..96a634bbef 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -299,6 +299,7 @@ public class MogoServices implements IMogoMapListener, mIntentManager.registerIntentListener( ServiceConst.COMMAND_NEXT, this ); mIntentManager.registerIntentListener( ServiceConst.COMMAND_PREVIOUS, this ); mIntentManager.registerIntentListener( ServiceConst.COMMAND_SWITCH_CARD, this ); + mIntentManager.registerIntentListener( ServiceConst.COMMAND_MY_LOCATION, this ); mIntentManager.registerIntentListener( MogoReceiver.ACTION_ADAS_STATUS, this ); mIntentManager.registerIntentListener( ServiceConst.COMMAND_OPERATION, this ); mIntentManager.registerIntentListener( MogoReceiver.ACTION_VOICE_READY, this ); @@ -788,8 +789,12 @@ public class MogoServices implements IMogoMapListener, } catch ( JSONException e ) { e.printStackTrace(); } - } else if( MogoReceiver.ACTION_VOICE_READY.equals( command ) ){ + } else if ( MogoReceiver.ACTION_VOICE_READY.equals( command ) ) { AIAssist.getInstance( mContext ).flush(); + } else if ( ServiceConst.COMMAND_MY_LOCATION.equals( command ) ) { + if ( mStatusManager.isMainPageOnResume() ) { + mUiController.recoverLockMode(); + } } } @@ -854,6 +859,7 @@ public class MogoServices implements IMogoMapListener, mInternalUnWakeupRegisterStatus = true; AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_UN_WAKE_PREV, ServiceConst.CMD_UN_WAKE_PREV_UN_WAKE_WORDS, this ); AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_UN_WAKE_NEXT, ServiceConst.CMD_UN_WAKE_NEXT_UN_WAKE_WORDS, this ); + AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, ServiceConst.CMD_UN_WAKEUP_WORDS_MY_LOCATION, this ); } /** @@ -866,6 +872,7 @@ public class MogoServices implements IMogoMapListener, mInternalUnWakeupRegisterStatus = false; AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKE_PREV, this ); AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKE_NEXT, this ); + AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, this ); } @Override @@ -874,6 +881,10 @@ public class MogoServices implements IMogoMapListener, mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(), MogoAction.Prev ); } else if ( TextUtils.equals( ServiceConst.CMD_UN_WAKE_NEXT, cmd ) ) { mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(), MogoAction.Next ); + } else if ( TextUtils.equals( ServiceConst.CMD_UN_WAKEUP_MY_LOCATION, cmd ) ) { + if ( mStatusManager.isMainPageOnResume() ) { + mUiController.recoverLockMode(); + } } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java index 3de1f52fd9..4e0fd3b80d 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/ServiceConst.java @@ -137,5 +137,17 @@ public class ServiceConst { */ public static final String COMMAND_OPERATION = "system.application.operation"; + /** + * 回到自车 + */ + public static final String COMMAND_MY_LOCATION = "com.zhidao.desk.backToMyLocation"; + + public static final String CMD_UN_WAKEUP_MY_LOCATION = "CMD_UN_WAKEUP_MY_LOCATION"; + public static final String[] CMD_UN_WAKEUP_WORDS_MY_LOCATION = new String[]{ + "回到我的位置", + "返回我的位置", + "定位我的位置" + }; + } diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_book.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_book.png new file mode 100755 index 0000000000000000000000000000000000000000..f081765bbecb4a7b33aaab5ef91fbeb23e3fb256 GIT binary patch literal 1058 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 literal 0 HcmV?d00001 diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_location_blue.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_location_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..34823616ee8c32d4f0fb7250193d71774127f271 GIT binary patch literal 902 zcmV;119|+3P)Px&KuJVFR9FekSWRmbK@ff2v#U!q5d#}V*Fe^gDB=f#Ab9a6c=za4Fp9q+KSCpT z_2@6~=0)%%eju6<_YfD+EGQ-#R(EIHenWbh9cQX%!mjLGrl+gw)tl++uBuTecwJpK zr7tZUG73`&v9D`TR%Mh4V>;-R6gmj-M;UA#t>VYCWz{X>LgiIHd)plDXjD5rOy;$r zURh(i+(YZ_L-jq6otMy=C3Dacsf8g9}XeDelyb=_`s;H(~F6cHB*EgTV|g|FS;c)z`g7wa$aCT!c2D#uk(SarLvDIUOrswg4`u_PsO z(JUb(C2nm=UPR`_vRpLl83~lnlUZfn1_& z&%Q|lq>LrRUP!s}!-wxU^iPI`yXI7$-iui~S)ipkW6b0&(AcxB-B(e8)~^`Z#Mye& zTf*|w+pK+Wm?bQIyO-*JAx@lJGAD-K7&=c`ciT9ATv4B#IEo?nz>d-v;7)fKclx5w zIMx6mwzqccHQ2<(l}0h9kH}Y|r5;!^=Xk7IX-8_Tel|E#ypPTAm^dkp$L5DslGtv1 cjqI1+UyQ?TKlvdqSpWb407*qoM6N<$g5Px&ElET{R9Fe^R?lk_K@@&(6O;58ZAC#4K{O~Hgi7(`NrhH~(t`*h_NpLw@gPDk zLJ|Bg1dk#p3JU%zDjpOR1QiddCD>|{w6tp4O?G$Y^G!C}meO>0b-_y~8Q#2kZ@%yC zo1J|_wAm8Q0DvLssf1y};e>P$9$vuHTE-{CSNI<3sE+IT!9hP<8r2>KyanA6_*hxq z8;rx`Uj?A%a9Jz5>XvDnJT3bqOpt+57*q)(4(!dvff_DR#}&JX8sXj^ zoiUHy-W-0ra~dKa$6cR@zf;0Rr>xa`_9SLdMrUHcQGv`>*b{hZ7c}gz7>l}YwO??MSI@;7 z*9yqXar|Juh&kqcyq~Az0L1$atb?4(a{*cklA`t{Mc3DH*>LKg0+208*W_hPchD;+ z{z4v&EPleF4H=U#dKH|J@;jyLT5DIqbZ17P`W~h~OM;^%hFifsxI*j*akHzYT>Px@ z>#auh9R^zhtTDve0y*zDIirWw60x?4w9So<<~XxmO0)d6OV`%$v{WOX0u->zX-83R z8&diNZ{->ws=16vX_lY*$>fwlS&Q?zBRtWPxoL=8j%#%q<&-cOvc^5Ymj*{lvCR3B zGep)F3BsXcVoELmRinHiGR-`xskweCB;^fqnKM~2nP?;O7TGgeSc{wivT52U5Xd!K zu)H0O03?JOdnt<^gpnJ2&9ui8J?+%TN4dIUXg!J*fV_Ox{C&D5aAzB5!4L+`A3x19o$DOt zQZOARV+9a^&EG|z6rc-a(P4S}>yq|2mh5@&DIO1eHf7Wd`~mM~kabLB#>@Z!002ov JPDHLkV1lErlDhx^ literal 0 HcmV?d00001 diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_news.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/icon_map_marker_news.png new file mode 100755 index 0000000000000000000000000000000000000000..24fa29d7398a193b45020bef3595e4b03c7bdca5 GIT binary patch literal 1040 zcmV+r1n>KaP)Px&%1J~)R9Fe^R!wUZK@hF(-kHtrCX#hQ@gQCl5xgjZ;K6?*f@eX5c=IoK_Uy%* z7yp0?9&%QUVlHZk8e&Y=o$2gmlg>3pCU!Spg+J=NV+uU=J8ugGybX5e3BAk^V* zsQi|n)ZtGa?EMKFOGk;#wJF3nYGZAO{kkvtZY;N*zozo_46cC-9{aM|C z3qmdO;mJgN6~uOo7=1*HYma3*KfD;E91_8-oBhXm0G<(u?0gRL@#$D>X~lKnv@{q) zVw~O`bzKV`K$IfIKxB9VAY*b5g^>ji003_Ai<03GkVXZ|(RN&sJfvcZ>kL!Cb!mEE z3bFvi!vKFi?QftktfbNvh}zh=7JBf2dF;i$1an`{%|sSJa!e)&gzh7!@S@zRChBzx z?i$XqTm<`?HierMZJ7lS4Zum0irr0&kZ(*0LGYbp3cgd~1^YbKY%G7jwf1^V;aKr2 zqid(1>!O)13xJWc(N=8HkvfcilnAmTNWqkD%ozfq8XG4&lSdqJT%liowSHrCee|L+ zsv--3HNah+zLDM;78LSZz>rovsvf)S9G2juTRf%=!qZ@iAO-gD_-d=US7EA++SX^G zKLP+aBnu8l>*~XSZl0zX2AOZA8rIS{)qv_*h*;+dq!}}!8g|<)%Rov27k_zKDHvsd zA0kE#V2kHTY)TUy>MOc5HsU8q838$bz}hVj0LU5f_-l~2k9WiktaR{DI#5j6KjoyH z*K{*mOnYn`G>X9EtVfblU?8O?uGBsYK&^qg?xK-PcX}`aiw-83d$2$T3S3o*sj2g1 zxKRXNL$Ko;dTh#LS_hd2fc$IeKyI$oT2y)u0E7?#y!@pffO1^qNAgq8$>Vry+CqW&y-w zgd?>ea^=Ci7L&5a&LVOHlaMTwsMjHMBIN*ctbF8NPXQz|pr<7B&ma$gg`<{5x+l3A zH1C!<;(>E*jIG_^9MtRa1pR`-<5!X?)w`m#JPQC{voZXk)YzEMDE0M_PVW(brwllT zdJNpizvtH?^4pAG28vuW1n9}%|tv3EF0Hk;c zbOrsc!&s91lqrZta?H6TXUEj_7Uz;<*288fyRX^+QZn0m*?tplBEtKK