diff --git a/config.gradle b/config.gradle index 1d47272fe2..1b9170ba35 100644 --- a/config.gradle +++ b/config.gradle @@ -48,6 +48,8 @@ ext { fresco : 'com.facebook.fresco:fresco:1.1.0', // 公司服务 - 语音 aiassist : "com.zhidaoauto.common:service:1.0.4.10", + // 语音替换方案 暂时只用TTS 解决焦点问题 + aiassistReplace : "com.zhidao.mogoVoicesdk:voice:1.0.4", // 公司服务 - 埋点 analytics : "com.elegant.analytics:analytics:1.1.19", @@ -139,7 +141,7 @@ ext { // gps 模拟 gpssimulator : "com.mogo.module:module-gps-simulator:${MOGO_MODULE_GPS_SIMULATOR_VERSION}", - gpssimulatordebug : "com.mogo.module:mogo-module-gps-simulator-debug:${MOGO_MODULE_GPS_SIMULATOR_DEBUG_VERSION}", - gpssimulatornoop : "com.mogo.module:mogo-module-gps-simulator-noop:${MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION}", + gpssimulatordebug : "com.mogo.module:module-gps-simulator-debug:${MOGO_MODULE_GPS_SIMULATOR_DEBUG_VERSION}", + gpssimulatornoop : "com.mogo.module:module-gps-simulator-noop:${MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION}", ] } \ No newline at end of file diff --git a/foudations/mogo-commons/build.gradle b/foudations/mogo-commons/build.gradle index 682617dd4d..0f2fc4036c 100644 --- a/foudations/mogo-commons/build.gradle +++ b/foudations/mogo-commons/build.gradle @@ -37,6 +37,7 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) api rootProject.ext.dependencies.aiassist + api rootProject.ext.dependencies.aiassistReplace api rootProject.ext.dependencies.androidxappcompat api rootProject.ext.dependencies.analytics implementation rootProject.ext.dependencies.arouter diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java index 785c282c6c..f12e737695 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/AbsMogoApplication.java @@ -1,6 +1,12 @@ package com.mogo.commons; import android.app.Application; +import android.content.Context; +import android.text.TextUtils; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; import com.alibaba.android.arouter.launcher.ARouter; import com.elegant.analytics.Analytics; @@ -57,13 +63,40 @@ public class AbsMogoApplication extends Application { asyncInit(); } - private void syncInit(){ + private void syncInit() { // 初始化 arouter if ( DebugConfig.isDebug() ) { ARouter.openDebug(); ARouter.openLog(); } ARouter.init( sApp ); + TipToast.init( this, new TipToast.ToastViewGenerator() { + @Override + public View make( Context context, String message ) { + if ( TextUtils.isEmpty( message ) ) { + return null; + } + View contentView = LayoutInflater.from( context ).inflate( R.layout.module_commons_layout_toast, null ); + TextView txt = contentView.findViewById( R.id.module_commons_toast_msg ); + txt.setText( message ); + return contentView; + } + + @Override + public int gravity() { + return Gravity.TOP | Gravity.CENTER_HORIZONTAL; + } + + @Override + public int yOffset() { + return sApp.getResources().getDimensionPixelSize( R.dimen.module_commons_toast_y_offset ); + } + + @Override + public int xOffset() { + return 0; + } + } ); } /** @@ -79,12 +112,11 @@ public class AbsMogoApplication extends Application { return sc; } - private void asyncInit(){ - ThreadPoolService.execute( ()->{ + private void asyncInit() { + ThreadPoolService.execute( () -> { initNetConfig(); initAccountSdk(); // 初始化toast - TipToast.init( sApp, null ); // 初始化埋点 Analytics.getInstance().start( sApp ); Analytics.getInstance().setAppKey( "6bbe7e0e1ecd8e2f8dc336e1678a2791" ); diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java index c8a7924de0..295fd6d847 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java @@ -8,6 +8,10 @@ import android.text.TextUtils; import com.mogo.utils.logger.Logger; import com.zhidao.auto.platform.voice.VoiceClient; +import com.zhidao.voicesdk.MogoVoiceManager; +import com.zhidao.voicesdk.MogoVoiceManagerImpl; +import com.zhidao.voicesdk.callback.OnConnStatusListener; +import com.zhidao.voicesdk.callback.OnTtsListener; import java.util.ArrayList; import java.util.HashMap; @@ -22,13 +26,14 @@ import java.util.concurrent.ConcurrentHashMap; *

* 语音助手通信助手 */ -public class AIAssist implements VoiceClient.VoiceCmdCallBack { +public class AIAssist implements VoiceClient.VoiceCmdCallBack , OnTtsListener { private static final String TAG = "AIAssist"; private static volatile AIAssist sInstance; private String mLastQAndASpeakText; private boolean mHasFlush = false; + private boolean mInitReady = false; public static AIAssist getInstance( Context context ) { if ( sInstance == null ) { @@ -56,6 +61,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack { } private final VoiceClient mVoiceClient; + private MogoVoiceManager mogoVoiceManager; // 免唤醒指令 private Map< String, List< IMogoVoiceCmdCallBack > > mCmdMap = new HashMap<>(); // 问答指令 @@ -70,7 +76,7 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack { mVoiceClient = new VoiceClient( context.getApplicationContext() ); mVoiceClient.setCallBack( this ); initFlushStatus( context ); - + initSpeech( context ); Logger.w( TAG, "voice is ready = %s", mHasFlush ); } @@ -78,6 +84,24 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack { mHasFlush = isVoiceServiceReady( context ); } + /** + * 初始化 + */ + private void initSpeech( Context context ){ + mogoVoiceManager = MogoVoiceManagerImpl.getInstance(); + mogoVoiceManager.init(context, new OnConnStatusListener() { + @Override + public void onSuccess() { + mInitReady = true; + } + + @Override + public void onFailed() { + + } + }); + } + /** * 是否语音注册成功 * @return @@ -185,7 +209,6 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack { } } - /** * 语音播报 * @@ -402,4 +425,36 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack { return false; } + public void speakTTSAndDuck(String text ){ + speakTTSAndDuck(text,null); + } + + public void speakTTSAndDuck( String text, IMogoVoiceCmdCallBack callBack ){ + try { + if( mInitReady ){ + mSpeakVoiceMap.put( text, callBack ); + mogoVoiceManager.toSpeak( text, -3, this); + } + } catch ( Exception e ) { + } + } + + @Override + public void onTtsStart(String ext) { + + } + + @Override + public void onTtsFinish(String speakText) { + IMogoVoiceCmdCallBack callBack = mSpeakVoiceMap.remove( speakText ); + if ( callBack != null ) { + callBack.onSpeakEnd( speakText ); + } + } + + @Override + public void onTtsError(String ext) { + + } + } diff --git a/foudations/mogo-commons/src/main/res/drawable/module_commons_toast_bkg.xml b/foudations/mogo-commons/src/main/res/drawable/module_commons_toast_bkg.xml new file mode 100644 index 0000000000..58389abf7c --- /dev/null +++ b/foudations/mogo-commons/src/main/res/drawable/module_commons_toast_bkg.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/foudations/mogo-commons/src/main/res/layout/module_commons_layout_toast.xml b/foudations/mogo-commons/src/main/res/layout/module_commons_layout_toast.xml new file mode 100644 index 0000000000..0b01115f63 --- /dev/null +++ b/foudations/mogo-commons/src/main/res/layout/module_commons_layout_toast.xml @@ -0,0 +1,27 @@ + + + + + \ No newline at end of file diff --git a/foudations/mogo-commons/src/main/res/values-ldpi/dimens.xml b/foudations/mogo-commons/src/main/res/values-ldpi/dimens.xml new file mode 100644 index 0000000000..54534fb37b --- /dev/null +++ b/foudations/mogo-commons/src/main/res/values-ldpi/dimens.xml @@ -0,0 +1,11 @@ + + + 30px + 30px + 16px + 16px + 22px + 371px + 500px + 72px + \ No newline at end of file diff --git a/foudations/mogo-commons/src/main/res/values-xhdpi/dimens.xml b/foudations/mogo-commons/src/main/res/values-xhdpi/dimens.xml new file mode 100644 index 0000000000..c1558d9ba0 --- /dev/null +++ b/foudations/mogo-commons/src/main/res/values-xhdpi/dimens.xml @@ -0,0 +1,13 @@ + + + 50px + 50px + 32px + 32px + 40px + 698px + 900px + 130px + + + diff --git a/foudations/mogo-commons/src/main/res/values/dimens.xml b/foudations/mogo-commons/src/main/res/values/dimens.xml new file mode 100644 index 0000000000..c1558d9ba0 --- /dev/null +++ b/foudations/mogo-commons/src/main/res/values/dimens.xml @@ -0,0 +1,13 @@ + + + 50px + 50px + 32px + 32px + 40px + 698px + 900px + 130px + + + diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/TipToast.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/TipToast.java index 93af03bbae..540fa45017 100644 --- a/foudations/mogo-utils/src/main/java/com/mogo/utils/TipToast.java +++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/TipToast.java @@ -9,6 +9,7 @@ package com.mogo.utils; import android.content.Context; import android.os.Handler; import android.text.TextUtils; +import android.view.Gravity; import android.view.View; import android.widget.Toast; @@ -144,10 +145,6 @@ public final class TipToast { sToast.cancel(); } - if ( sGenerator == null ) { - sToast = Toast.makeText( context, msg, duration ); - } - if ( sGenerator == null ) { sToast = Toast.makeText( context, msg, duration ); } else { @@ -155,6 +152,7 @@ public final class TipToast { final View view = sGenerator.make( context, msg ); if ( view != null ) { sToast.setView( view ); + sToast.setGravity( sGenerator.gravity(), sGenerator.xOffset(), sGenerator.yOffset() ); sToast.setDuration( duration ); } else { sToast = Toast.makeText( context, msg, duration ); @@ -171,6 +169,12 @@ public final class TipToast { public interface ToastViewGenerator { View make( Context context, String message ); + + int gravity(); + + int yOffset(); + + int xOffset(); } } diff --git a/gradle.properties b/gradle.properties index fff8943382..f8d5fe5ffb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -27,38 +27,38 @@ PASSWORD=xintai2018 RELEASE=false # 模块版本 ## 工程内模块 -MOGO_COMMONS_VERSION=1.0.3.1 -MOGO_UTILS_VERSION=1.0.3.1 -MAP_AMAP_VERSION=1.0.3.1 -MOGO_MAP_VERSION=1.0.3.1 -MOGO_MAP_API_VERSION=1.0.3.1 -MOGO_SERVICE_VERSION=1.0.3.1 -MOGO_SERVICE_API_VERSION=1.0.3.1 -MOGO_CONNECTION_VERSION=1.0.3.1 -MOGO_MODULE_APPS_VERSION=1.0.3.1 -MOGO_MODULE_NAVI_VERSION=1.0.3.1 -MOGO_MODULE_SHARE_VERSION=1.0.3.1 -MOGO_MODULE_COMMON_VERSION=1.0.3.2 -MOGO_MODULE_MAIN_VERSION=1.0.3.1 -MOGO_MODULE_MAP_VERSION=1.0.3.1 -MOGO_MODULE_SERVICE_VERSION=1.0.3.1 -MOGO_MODULE_EXTENSIONS_VERSION=1.0.3.1 -MOGO_MODULE_SEARCH_VERSION=1.0.3.1 -MOGO_MODULE_BACK_VERSION=1.0.3.1 -MOGO_MODULE_GPS_SIMULATOR_VERSION=1.0.3.1 -MOGO_MODULE_GPS_SIMULATOR_DEBUG_VERSION=1.0.3.1 -MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION=1.0.3.1 +MOGO_COMMONS_VERSION=1.0.3.8 +MOGO_UTILS_VERSION=1.0.3.8 +MAP_AMAP_VERSION=1.0.3.8 +MOGO_MAP_VERSION=1.0.3.8 +MOGO_MAP_API_VERSION=1.0.3.8 +MOGO_SERVICE_VERSION=1.0.3.8 +MOGO_SERVICE_API_VERSION=1.0.3.8 +MOGO_CONNECTION_VERSION=1.0.3.8 +MOGO_MODULE_APPS_VERSION=1.0.3.8 +MOGO_MODULE_NAVI_VERSION=1.0.3.8 +MOGO_MODULE_SHARE_VERSION=1.0.3.8 +MOGO_MODULE_COMMON_VERSION=1.0.3.8 +MOGO_MODULE_MAIN_VERSION=1.0.3.8 +MOGO_MODULE_MAP_VERSION=1.0.3.8 +MOGO_MODULE_SERVICE_VERSION=1.0.3.8 +MOGO_MODULE_EXTENSIONS_VERSION=1.0.3.8 +MOGO_MODULE_SEARCH_VERSION=1.0.3.8 +MOGO_MODULE_BACK_VERSION=1.0.3.8 +MOGO_MODULE_GPS_SIMULATOR_VERSION=1.0.3.8 +MOGO_MODULE_GPS_SIMULATOR_DEBUG_VERSION=1.0.3.8 +MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION=1.0.3.8 +MOGO_MODULE_AUTHORIZE_VERSION=1.0.3.8 +MOGO_MODULE_GUIDE_VERSION=1.0.3.8 -MOGO_MODULE_AUTHORIZE_VERSION=1.0.0 -MOGO_MODULE_GUIDE_VERSION=1.0.0 ## 工程外部模块 # 探路 -MOGO_MODULE_TANLU_VERSION=1.0.3.2 +MOGO_MODULE_TANLU_VERSION=1.0.4.2 # 车聊聊 -CARCHATTING_VERSION=1.0.3 +CARCHATTING_VERSION=1.0.3.2-SNAPSHOT # 车聊聊接口 -CARCHATTINGPROVIDER_VERSION=1.0.3 +CARCHATTINGPROVIDER_VERSION=1.0.3.2-SNAPSHOT # 视频引导 MOGO_MODULE_GUIDESHOW_VERSION=1.0.2-SNAPSHOT # 视频引导接口 @@ -66,13 +66,12 @@ MOGO_MODULE_GUIDESHOW_PROVIDER_VERSION=1.0.2-SNAPSHOT # 在线车辆F MOGO_MODULE_ONLINECAR_VERSION=1.0.3.1 # v2x -MOGO_MODULE_V2X_VERSION=1.0.3.2 +MOGO_MODULE_V2X_VERSION=1.0.3.3-SNAPSHOT # 媒体卡片 -MOGO_MODULE_MEDIA_VERSION=1.0.3 +MOGO_MODULE_MEDIA_VERSION=1.0.4.1 # 推送 MOGO_MODULE_PUSH_VERSION=1.0.1 # 广告资源位 MOGO_MODULE_AD_CARD_VERSION=1.0.1 # 新鲜事 -MOGO_MODULE_FRESH_NEWS_VERSION=1.0.3.1 - +MOGO_MODULE_FRESH_NEWS_VERSION=1.0.3.2 diff --git a/libraries/map-amap/build.gradle b/libraries/map-amap/build.gradle index 555ca0b60e..780c7af6f6 100644 --- a/libraries/map-amap/build.gradle +++ b/libraries/map-amap/build.gradle @@ -39,10 +39,12 @@ dependencies { implementation rootProject.ext.dependencies.mogoutils implementation rootProject.ext.dependencies.mogomapapi implementation rootProject.ext.dependencies.mogocommons + implementation rootProject.ext.dependencies.mogomapapi } else { implementation project(':foudations:mogo-utils') implementation project(':libraries:mogo-map-api') implementation project(':foudations:mogo-commons') + implementation project(':services:mogo-service-api') } } 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 99ccd4db65..26f0836020 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 @@ -601,11 +601,11 @@ public class AMapNaviViewWrapper implements IMogoMapView, } @Override - public void displayOverview() { + public void displayOverview( Rect bounds ) { if ( checkAMapView() ) { if ( NaviClient.getInstance( getContext() ).isNaviing() ) { loseLockMode(); - NaviClient.getInstance( getContext() ).displayOverview(); + NaviClient.getInstance( getContext() ).displayOverview( bounds ); } } } @@ -633,6 +633,7 @@ public class AMapNaviViewWrapper implements IMogoMapView, if ( checkAMapView() ) { mMapView.setCarOverlayVisible( false ); showMyLocation( true ); + NaviClient.getInstance( getContext() ).startAimlessMode(); } } @@ -823,12 +824,16 @@ public class AMapNaviViewWrapper implements IMogoMapView, @Override public void setCarCursorOption( CarCursorOption option ) { - if ( mCarCursorOption != null ) { + if ( mCarCursorOption != null && mCarCursorOption != DEFAULT_OPTION ) { mCarCursorOption.destroy(); } - try { - mCarCursorOption = option.clone(); - } catch ( CloneNotSupportedException e ) { + if ( option != null ) { + try { + mCarCursorOption = option.clone(); + } catch ( Exception e ) { + mCarCursorOption = DEFAULT_OPTION; + } + } else { mCarCursorOption = DEFAULT_OPTION; } if ( !checkAMapView() ) { @@ -837,8 +842,10 @@ public class AMapNaviViewWrapper implements IMogoMapView, AMapNaviViewOptions options = mMapView.getViewOptions(); if ( options != null && mCarCursorOption.getNaviCursorRes() != 0 ) { options.setCarBitmap( BitmapFactory.decodeResource( getContext().getResources(), mCarCursorOption.getNaviCursorRes() ) ); - mMapView.setViewOptions( options ); + } else { + options.setCarBitmap( BitmapFactory.decodeResource( getContext().getResources(), DEFAULT_OPTION.getNaviCursorRes() ) ); } + mMapView.setViewOptions( options ); if ( mMapView.getMap() == null ) { return; @@ -849,6 +856,8 @@ public class AMapNaviViewWrapper implements IMogoMapView, } else { if ( mCarCursorOption.getCarCursorRes() != 0 ) { style.myLocationIcon( BitmapDescriptorFactory.fromResource( mCarCursorOption.getCarCursorRes() ) ); + } else { + style.myLocationIcon( BitmapDescriptorFactory.fromResource( DEFAULT_OPTION.getCarCursorRes() ) ); } } mMapView.getMap().setMyLocationStyle( style ); 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 b851ca258c..5e1eff04c3 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 @@ -15,6 +15,8 @@ import com.amap.api.navi.model.AimLessModeCongestionInfo; import com.amap.api.navi.model.AimLessModeStat; import com.amap.api.navi.model.NaviInfo; import com.autonavi.tbt.TrafficFacilityInfo; +import com.mogo.commons.AbsMogoApplication; +import com.mogo.commons.voice.AIAssist; import com.mogo.map.MogoLatLng; import com.mogo.utils.logger.Logger; import java.util.List; @@ -64,6 +66,7 @@ public abstract class AMapNaviListenerAdapter implements AMapNaviListener { public void onGetNavigationText( String s ) { mLastSpeakWord = s; Logger.d( TAG, s ); + AIAssist.getInstance(AbsMogoApplication.getApp()).speakTTSAndDuck(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 5d6afc5cfe..e9a150116b 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 @@ -11,17 +11,20 @@ import com.amap.api.navi.enums.AimLessMode; import com.amap.api.navi.enums.NaviType; import com.amap.api.navi.model.NaviLatLng; import com.mogo.commons.AbsMogoApplication; +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; import com.mogo.map.impl.amap.utils.ObjectUtils; import com.mogo.map.navi.IMogoCarLocationChangedListener; +import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.map.navi.IMogoNavi; import com.mogo.map.navi.MogoCalculatePath; import com.mogo.map.navi.MogoNaviConfig; import com.mogo.map.navi.MogoNaviListenerHandler; import com.mogo.map.navi.OnCalculatePathItemClickInteraction; import com.mogo.utils.logger.Logger; +import com.mogo.utils.storage.SharedPrefsMgr; import java.util.ArrayList; import java.util.Arrays; @@ -35,7 +38,13 @@ import java.util.List; */ public class NaviClient implements IMogoNavi { + /** + * 巡航状态控制 + */ + public static final String KEY_AIMLESS_STATUS = "KEY_AIMLESS_STATUS"; + private static final String TAG = "NaviClient"; + private final Context mContext; private AMapNavi mAMapNavi; private final NaviListenerAdapter mAMapNaviListener; @@ -53,10 +62,20 @@ public class NaviClient implements IMogoNavi { private boolean mIsRealNavi; private Location mCarLocation; - private IMogoCarLocationChangedListener mCarLocationChangedListener; + private IMogoCarLocationChangedListener2 mCarLocationChangedListener; private LocationSource.OnLocationChangedListener mOnLocationChangedListener; + /** + * 巡航模式配置状态 + */ + private boolean mAimlessModeStatus; + + /** + * 巡航状态 + */ + private boolean mAimlessStatus; private NaviClient( Context context ) { + mContext = context; mAMapNavi = AMapNavi.getInstance( context ); mAMapNavi.setEmulatorNaviSpeed( 120 ); mAMapNavi.setUseInnerVoice( false, true ); @@ -65,6 +84,7 @@ public class NaviClient implements IMogoNavi { }; mAMapNavi.addAMapNaviListener( mAMapNaviListener ); mAMapNavi.addAimlessModeListener( mAimlessModeListener ); + mAimlessModeStatus = SharedPrefsMgr.getInstance( mContext ).getBoolean( KEY_AIMLESS_STATUS, false ); } public static NaviClient getInstance( Context context ) { @@ -151,7 +171,7 @@ public class NaviClient implements IMogoNavi { return; } mIsRealNavi = isRealNavi; - + stopAimlessMode(); boolean isNaving = isNaviing(); boolean result = mAMapNavi.startNavi( isRealNavi ? NaviType.GPS : NaviType.EMULATOR ); if ( isNaving && !result ) { @@ -241,7 +261,12 @@ public class NaviClient implements IMogoNavi { } @Override - public void registerCarLocationChangedListener( IMogoCarLocationChangedListener listener ) { + public Location getCarLocation2() { + return mCarLocation; + } + + @Override + public void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener ) { mCarLocationChangedListener = listener; } @@ -250,7 +275,7 @@ public class NaviClient implements IMogoNavi { public void syncCarLocation( Location location ) { mCarLocation = location; if ( mCarLocationChangedListener != null ) { - mCarLocationChangedListener.onCarLocationChanged( getCarLocation() ); + mCarLocationChangedListener.onCarLocationChanged2( mCarLocation ); } } @@ -274,18 +299,42 @@ public class NaviClient implements IMogoNavi { @Override public void startAimlessMode() { - mAMapNavi.startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED ); + if ( mAimlessModeStatus && !isNaviing() ) { + mAMapNavi.startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED ); + mAimlessStatus = true; + Logger.d( TAG, "开启巡航成功" ); + } else { + mAimlessStatus = false; + Logger.d( TAG, "开启巡航失败" ); + } } @Override public void stopAimlessMode() { mAMapNavi.stopAimlessMode(); + mAimlessStatus = false; + Logger.d( TAG, "关闭巡航成功" ); } @Override - public void displayOverview() { + public void setAimlessModeStatus( boolean open ) { + this.mAimlessModeStatus = open; + SharedPrefsMgr.getInstance( mContext ).putBoolean( KEY_AIMLESS_STATUS, open ); + if ( open ) { + if ( !mAimlessStatus ) { + startAimlessMode(); + } + } else { + if ( mAimlessStatus ) { + stopAimlessMode(); + } + } + } + + @Override + public void displayOverview( Rect bounds ) { if ( mAMapNaviListener != null ) { - mAMapNaviListener.displayOverview(); + mAMapNaviListener.displayOverview( bounds ); } } 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 dfd56d70de..c402fdc0a4 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 @@ -95,6 +95,7 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { @Override public void onInitNaviSuccess() { MogoNaviListenerHandler.getInstance().onInitNaviSuccess(); + NaviClient.getInstance( mContext ).startAimlessMode(); } @Override @@ -245,9 +246,10 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { public void handleClickedPolyline( Polyline polyline ) { if ( mNaviOverlayHelper != null ) { + mNaviOverlayHelper.handleClickedPolyline( polyline, isNaviing() ); mAMapNavi.selectRouteId( mNaviOverlayHelper.getSelectedPathId() ); - mNaviOverlayHelper.showBounds(); + mNaviOverlayHelper.showBoundsWithSettingBounds(); } } @@ -291,9 +293,9 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { } } - public void displayOverview(){ + public void displayOverview( Rect bounds ) { if ( mNaviOverlayHelper != null ) { - mNaviOverlayHelper.displayOverview(); + mNaviOverlayHelper.displayOverview( bounds ); } } } 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 19cd0dabfb..9448f2b296 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 @@ -99,7 +99,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { if ( after != null ) { after.run(); } - } ); + }, mBoundRect ); } private LatLngBounds getBounds() { @@ -169,25 +169,32 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { } } - public void showBounds() { + public void showBoundsWithSettingBounds() { + showBounds( mBoundRect ); + } + + public void showBounds( Rect bounds ) { Logger.d( TAG, "showBounds" ); - showPathsBound( getBounds(), null ); + showPathsBound( getBounds(), null, bounds ); } /** * 将规划好的路径显示在视野内 */ - private void showPathsBound( LatLngBounds bounds, Runnable after ) { + private void showPathsBound( LatLngBounds bounds, Runnable after, Rect rect ) { if ( bounds == null ) { return; } + if ( rect == null ) { + rect = new Rect(); + } checkAMapInstance(); mAMap.moveCamera( CameraUpdateFactory.newLatLngBoundsRect( bounds, - mBoundRect.left, - mBoundRect.right, - mBoundRect.top, - mBoundRect.bottom )); + rect.left, + rect.right, + rect.top, + rect.bottom ) ); if ( after != null ) { after.run(); } @@ -431,7 +438,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { public void onItemClicked( String tagId ) { handleClickedPolyline( tagId ); mAMapNavi.selectRouteId( getSelectedPathId() ); - showBounds(); + showBounds( mBoundRect ); } public OnCalculatePathItemClickInteraction getItemClickInteraction() { @@ -451,7 +458,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction { /** * 展示全程 */ - public void displayOverview(){ - showBounds(); + public void displayOverview( Rect bounds ) { + showBounds( bounds ); } } 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 6e395ec1ba..b5f5c7da96 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 @@ -126,9 +126,9 @@ public class AMapUIController implements IMogoMapUIController { } @Override - public void displayOverview() { + public void displayOverview( Rect bounds ) { if (mClient != null) { - mClient.displayOverview(); + mClient.displayOverview(bounds); } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoCarLocationChangedListener2.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoCarLocationChangedListener2.java new file mode 100644 index 0000000000..fe2bf33422 --- /dev/null +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoCarLocationChangedListener2.java @@ -0,0 +1,14 @@ +package com.mogo.map.navi; + +import android.location.Location; + +/** + * @author congtaowang + * @since 2020-03-14 + *

+ * 车辆位置变化 + */ +public interface IMogoCarLocationChangedListener2 extends IMogoCarLocationChangedListener { + + void onCarLocationChanged2( Location latLng ); +} diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java index 4a780f8b61..de314483b5 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNavi.java @@ -144,12 +144,19 @@ public interface IMogoNavi { */ MogoLatLng getCarLocation(); + /** + * 获取车标经纬度 + * + * @return + */ + Location getCarLocation2(); + /** * 注册车辆位置变化监听,非业务使用 * * @param listener */ - void registerCarLocationChangedListener( IMogoCarLocationChangedListener listener ); + void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener ); /** * 打开巡航模式 @@ -161,10 +168,17 @@ public interface IMogoNavi { */ void stopAimlessMode(); + /** + * 设置巡航模式状态 + * + * @param open + */ + void setAimlessModeStatus( boolean open ); + /** * 查看全程 */ - void displayOverview(); + void displayOverview( Rect bounds ); /** * 设置使用外部定位源 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 053ae1b848..e8a557dd79 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 @@ -7,6 +7,7 @@ import android.view.View; import android.view.animation.Interpolator; import androidx.annotation.DrawableRes; +import androidx.annotation.Nullable; import com.mogo.map.MogoLatLng; import com.mogo.map.marker.IMogoMarker; @@ -88,8 +89,10 @@ public interface IMogoMapUIController { /** * 预览全程 + * + * @param bounds 显示范围 */ - void displayOverview(); + void displayOverview( Rect bounds ); /** * 获取比例尺数据 @@ -192,7 +195,7 @@ public interface IMogoMapUIController { /** * 配置自车图标样式 * - * @param option + * @param option 为空时使用默认配置 */ - void setCarCursorOption( CarCursorOption option ); + void setCarCursorOption( @Nullable CarCursorOption option ); } 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 e430a33b65..286b7aec12 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 @@ -120,9 +120,9 @@ public class MogoMapUIController implements IMogoMapUIController { } @Override - public void displayOverview() { + public void displayOverview( Rect bounds ) { if (mDelegate != null) { - mDelegate.displayOverview(); + mDelegate.displayOverview(bounds); } } diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java index b3d7c0c75c..74e6615a7c 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoNavi.java @@ -6,6 +6,7 @@ import android.location.Location; import com.mogo.map.impl.amap.navi.NaviClient; import com.mogo.map.navi.IMogoCarLocationChangedListener; +import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.map.navi.IMogoNavi; import com.mogo.map.navi.MogoCalculatePath; import com.mogo.map.navi.MogoNaviConfig; @@ -176,7 +177,15 @@ public class MogoNavi implements IMogoNavi { } @Override - public void registerCarLocationChangedListener( IMogoCarLocationChangedListener listener ) { + public Location getCarLocation2() { + if ( mDelegate != null ) { + return mDelegate.getCarLocation2(); + } + return null; + } + + @Override + public void registerCarLocationChangedListener( IMogoCarLocationChangedListener2 listener ) { if ( mDelegate != null ) { mDelegate.registerCarLocationChangedListener( listener ); } @@ -197,9 +206,16 @@ public class MogoNavi implements IMogoNavi { } @Override - public void displayOverview() { + public void setAimlessModeStatus( boolean open ) { if ( mDelegate != null ) { - mDelegate.displayOverview(); + mDelegate.setAimlessModeStatus( open ); + } + } + + @Override + public void displayOverview( Rect bounds ) { + if ( mDelegate != null ) { + mDelegate.displayOverview(bounds); } } diff --git a/map-upload.sh b/map-upload.sh index a53d5d66df..eeb258a13e 100755 --- a/map-upload.sh +++ b/map-upload.sh @@ -1,5 +1,5 @@ #!/bin/bash -./gradlew :libraries:mogo-map-api:clean :libraries:mogo-map-api:uploadArchives -./gradlew :libraries:map-amap:clean :libraries:map-amap:uploadArchives -./gradlew :libraries:mogo-map:clean :libraries:mogo-map:uploadArchives \ No newline at end of file +./gradlew :services:mogo-service-api:clean :services:mogo-service-api:uploadArchives +./gradlew :services:mogo-service:clean :services:mogo-service:uploadArchives +./gradlew :modules:mogo-module-extensions:clean :modules:mogo-module-extensions:uploadArchives \ No newline at end of file diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java index 62c4a193ad..03d6f72ae3 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java @@ -39,14 +39,14 @@ public class MapCenterPointStrategy { // 导航场景,定位视图右下角偏下 Map< Integer, MapCenterPoint > navi = new HashMap<>(); navi.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.7734375D, 0.65D ) ); - navi.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.775521D, 0.6759259D ) ); + navi.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.775521D, 0.661165D ) ); sStrategies.put( Scene.NAVI, navi ); // 巡航场景,定位视图右下角偏下 Map< Integer, MapCenterPoint > aimless = new HashMap<>(); aimless.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.677734375D, 0.54D ) ); - aimless.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.6963541D, 0.6833333D ) ); + aimless.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.6963541D, 0.558737D ) ); sStrategies.put( Scene.AIMLESS, aimless ); @@ -61,6 +61,13 @@ public class MapCenterPointStrategy { categorySearch.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.733398D, 0.610833D ) ); categorySearch.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.733594D, 0.596759D ) ); sStrategies.put( Scene.CATEGORY_SEARCH, categorySearch ); + + + // V2X,场景视图右边 + Map< Integer, MapCenterPoint > categoryV2XEvent = new HashMap<>(); + categoryV2XEvent.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.677734375D, 0.7D ) ); + categoryV2XEvent.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.6963541D, 0.65D ) ); + sStrategies.put( Scene.CATEGORY_V2X_EVENT, categoryV2XEvent ); } public static void addScene( int scene, Map< Integer, MapCenterPoint > config ) { diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java index 4def37a007..c37810ae50 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java @@ -37,4 +37,9 @@ public interface Scene { * 分类搜索 */ int CATEGORY_SEARCH = 5; + + /** + * V2X触发了预警场景 + */ + int CATEGORY_V2X_EVENT = 6; } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java index 3cb221d814..ffe850df7a 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java @@ -24,8 +24,6 @@ import com.mogo.map.navi.IMogoNaviListener; import com.mogo.map.navi.MogoCongestionInfo; import com.mogo.map.navi.MogoNaviInfo; import com.mogo.map.navi.MogoTraffic; -import com.mogo.map.overlay.IMogoPolyline; -import com.mogo.map.uicontroller.CarCursorOption; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant; @@ -41,12 +39,14 @@ import com.mogo.module.share.ShareControl; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; import com.mogo.service.analytics.IMogoAnalytics; +import com.mogo.service.entrance.ButtonIndex; import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.map.IMogoMapService; import com.mogo.service.module.IMogoAddressManager; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.statusmanager.IMogoStatusManager; +import com.mogo.utils.logger.Logger; import java.util.HashMap; import java.util.Map; @@ -222,6 +222,8 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent } } } ); + MogoEntranceButtons.save( ButtonIndex.BUTTON1, findViewById( R.id.module_entrance_id_button1 ) ); + MogoEntranceButtons.save( ButtonIndex.BUTTON2, findViewById( R.id.module_entrance_id_button2 ) ); } @@ -303,6 +305,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent @Override public void onStartNavi() { + mSearch.setVisibility( View.GONE ); mCommonAddress.setVisibility( View.GONE ); mNaviInfo.setVisibility( View.VISIBLE ); mCameraMode.setVisibility( View.VISIBLE ); @@ -315,6 +318,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent @Override public void onStopNavi() { + mSearch.setVisibility( View.VISIBLE ); mCommonAddress.setVisibility( View.VISIBLE ); mNaviInfo.setVisibility( View.GONE ); mCameraMode.setVisibility( View.GONE ); @@ -345,7 +349,8 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mSpeedLimit.setVisibility( View.INVISIBLE ); mSpeedLimitValue.setText( "--" ); } else { - mSpeedLimit.setVisibility( View.VISIBLE ); + // 暂时不显示限速,等有好的显示方案在放开 + mSpeedLimit.setVisibility( View.INVISIBLE ); mSpeedLimitValue.setText( String.valueOf( traffic.getSpeedLimit() ) ); } } @@ -380,6 +385,9 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mIsLock = isLock; if ( isLock ) { mExitNavi.setText( R.string.module_ext_str_exit_navi ); + if ( mMogoStatusManager.isDisplayOverview() ) { + mMogoStatusManager.setDisplayOverview( TAG, false ); + } } else { mExitNavi.setText( R.string.module_ext_str_continue_navi ); } @@ -400,4 +408,32 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent properties.put( "from", from ); mAnalytics.track( "Launcher_Share_Click", properties ); } + + @Override + public void showNaviPanelWidgets() { + if ( !mMogoNavi.isNaviing() ) { + return; + } + mNaviInfo.setVisibility( View.VISIBLE ); + mCameraMode.setVisibility( View.VISIBLE ); + try { + mApis.getWindowManagerApi().showAll(); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + + @Override + public void hideNaviPanelWidgets() { + if ( !mMogoNavi.isNaviing() ) { + return; + } + mNaviInfo.setVisibility( View.GONE ); + mCameraMode.setVisibility( View.GONE ); + try { + mApis.getWindowManagerApi().hideAll(); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java index c998dcc7ab..7662f0ac2a 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java @@ -6,6 +6,9 @@ import android.net.Uri; import android.text.TextUtils; import android.util.Log; +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; @@ -14,10 +17,14 @@ import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant; import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager; import com.mogo.module.extensions.ExtensionsModuleConst; import com.mogo.module.share.ShareControl; +import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; import com.mogo.service.analytics.IMogoAnalytics; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.service.intent.IMogoIntentManager; +import com.mogo.service.statusmanager.IMogoStatusChangedListener; +import com.mogo.service.statusmanager.IMogoStatusManager; +import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.logger.Logger; import org.json.JSONObject; @@ -33,7 +40,7 @@ import static com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerCons *

* 描述 */ -public class EntrancePresenter extends Presenter { +public class EntrancePresenter extends Presenter< EntranceView > implements IMogoStatusChangedListener { private Context mContext; private IMogoAnalytics mAnalytics; @@ -42,32 +49,28 @@ public class EntrancePresenter extends Presenter { private IMogoAuthorizeModuleManager mIMogoAuthorizeModuleManager; private String mVoiceCmdType; //一级命令 private String mVoiceCmdShareType; //对某些一级命令里面细分的类型做处理 + private IMogoStatusManager mStatusManager; - public EntrancePresenter(Context context, EntranceView view, IMogoAuthorizeModuleManager authorizeModuleManager) { - super(view); + public EntrancePresenter( Context context, EntranceView view, IMogoAuthorizeModuleManager authorizeModuleManager ) { + super( view ); mContext = context; - mAnalytics = (IMogoAnalytics) ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_ANALYTICS).navigation(getContext()); - mogoIntentManager = (IMogoIntentManager) ARouter.getInstance().build(MogoServicePaths.PATH_INTENT_MANAGER).navigation(getContext()); + IMogoServiceApis apis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( mContext ); + mAnalytics = apis.getAnalyticsApi(); + mogoIntentManager = apis.getIntentManagerApi(); mIMogoAuthorizeModuleManager = authorizeModuleManager; - + mStatusManager = apis.getStatusManagerApi(); registerUnWake(); registerAwakeVoice(); } - private void registerUnWake() { - AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.CLOSE, - ExtensionsModuleConst.CMD_CLOSE, mogoVoiceListener); - AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.CANCLE_SHARE, - ExtensionsModuleConst.CMD_CANCLE_SHARE, mogoVoiceListener); + AIAssist.getInstance( mContext ).registerUnWakeupCommand( ExtensionsModuleConst.CLOSE, ExtensionsModuleConst.CMD_CLOSE, mogoVoiceListener ); + AIAssist.getInstance( mContext ).registerUnWakeupCommand( ExtensionsModuleConst.CANCLE_SHARE, ExtensionsModuleConst.CMD_CANCLE_SHARE, mogoVoiceListener ); //探路相关上报 - AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK, - ExtensionsModuleConst.CMD_UPLOAD_BLOCK, mogoVoiceListener); - AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK, - ExtensionsModuleConst.CMD_TRAFFIC_CHECK, mogoVoiceListener); - AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE, - ExtensionsModuleConst.CMD_ROAD_CLOSURE, mogoVoiceListener); + AIAssist.getInstance( mContext ).registerUnWakeupCommand( ExtensionsModuleConst.UPLOAD_ROAD_BLOCK, ExtensionsModuleConst.CMD_UPLOAD_BLOCK, mogoVoiceListener ); + AIAssist.getInstance( mContext ).registerUnWakeupCommand( ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK, ExtensionsModuleConst.CMD_TRAFFIC_CHECK, mogoVoiceListener ); + AIAssist.getInstance( mContext ).registerUnWakeupCommand( ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE, ExtensionsModuleConst.CMD_ROAD_CLOSURE, mogoVoiceListener ); } /** @@ -75,31 +78,31 @@ public class EntrancePresenter extends Presenter { */ private IMogoVoiceCmdCallBack mogoVoiceListener = new IMogoVoiceCmdCallBack() { @Override - public void onCmdSelected(String cmd) { - Log.d(TAG, "免唤醒 mogoVoiceListener needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE) + " >>>cmd = " + cmd); + public void onCmdSelected( String cmd ) { + Log.d( TAG, "免唤醒 mogoVoiceListener needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) + " >>>cmd = " + cmd ); mVoiceCmdType = cmd; - if (cmd.equals(ExtensionsModuleConst.CANCLE_SHARE) - || cmd.equals(ExtensionsModuleConst.CLOSE)) { //取消分享,关闭页面 - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + if ( cmd.equals( ExtensionsModuleConst.CANCLE_SHARE ) + || cmd.equals( ExtensionsModuleConst.CLOSE ) ) { //取消分享,关闭页面 + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { - ShareControl.getInstance(mContext).dismissDialog(); + ShareControl.getInstance( mContext ).dismissDialog(); } - } else if (cmd.equals(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK)) { //上报拥堵 - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + } else if ( cmd.equals( ExtensionsModuleConst.UPLOAD_ROAD_BLOCK ) ) { //上报拥堵 + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { uploadRoadCondition(); } - } else if (cmd.equals(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK)) { //上报交通检查 - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + } else if ( cmd.equals( ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK ) ) { //上报交通检查 + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { uploadTrfficCheck(); } - } else if (cmd.equals(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE)) { //上报封路 - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + } else if ( cmd.equals( ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE ) ) { //上报封路 + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { uploadRoadClosed(); } @@ -107,32 +110,38 @@ public class EntrancePresenter extends Presenter { } @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 ) { } }; + @Override + public void onCreate( @NonNull LifecycleOwner owner ) { + super.onCreate( owner ); + mStatusManager.registerStatusChangedListener( TAG, StatusDescriptor.DISPLAY_OVERVIEW, this ); + } + /** * 注册唤醒命令 */ private void registerAwakeVoice() { - mogoIntentManager.registerIntentListener(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION, mogoIntentListener); + mogoIntentManager.registerIntentListener( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION, mogoIntentListener ); - mogoIntentManager.registerIntentListener(ExtensionsModuleConst.GO_TO_SHARE, mogoIntentListener); - mogoIntentManager.registerIntentListener(ExtensionsModuleConst.SHARE_DIALOG_CLOSE, mogoIntentListener); - mogoIntentManager.registerIntentListener(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN, mogoIntentListener); - mogoIntentManager.registerIntentListener(ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE, mogoIntentListener); + mogoIntentManager.registerIntentListener( ExtensionsModuleConst.GO_TO_SHARE, mogoIntentListener ); + mogoIntentManager.registerIntentListener( ExtensionsModuleConst.SHARE_DIALOG_CLOSE, mogoIntentListener ); + mogoIntentManager.registerIntentListener( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN, mogoIntentListener ); + mogoIntentManager.registerIntentListener( ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE, mogoIntentListener ); } /** @@ -140,81 +149,81 @@ public class EntrancePresenter extends Presenter { */ private IMogoIntentListener mogoIntentListener = new IMogoIntentListener() { @Override - public void onIntentReceived(String intentStr, Intent intent) { + public void onIntentReceived( String intentStr, Intent intent ) { mVoiceCmdType = intentStr; EntranceFragment.isClickShare = false; - String data = intent.getStringExtra("data"); - Log.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data + " >>> needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)); - if (intentStr.equals(ExtensionsModuleConst.GO_TO_SHARE)) { //我要分享 --ok - String conditionData = intent.getStringExtra("data"); - Log.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>conditionData =" + conditionData); + String data = intent.getStringExtra( "data" ); + Log.d( TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data + " >>> needAuthorize = " + mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ); + if ( intentStr.equals( ExtensionsModuleConst.GO_TO_SHARE ) ) { //我要分享 --ok + String conditionData = intent.getStringExtra( "data" ); + Log.d( TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>conditionData =" + conditionData ); try { - JSONObject jsonObject = new JSONObject(data); - String typeString = jsonObject.get("ob").toString(); - Log.d(TAG, "mogoIntentListener specified typeString = " + typeString); + JSONObject jsonObject = new JSONObject( data ); + String typeString = jsonObject.get( "ob" ).toString(); + Log.d( TAG, "mogoIntentListener specified typeString = " + typeString ); mVoiceCmdShareType = typeString; - if (!TextUtils.isEmpty(typeString)) { - if (typeString.equals("封路")) { - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + if ( !TextUtils.isEmpty( typeString ) ) { + if ( typeString.equals( "封路" ) ) { + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { - Log.d(TAG, "mogoIntentListener 封路 -------> "); + Log.d( TAG, "mogoIntentListener 封路 -------> " ); uploadRoadClosed(); } - } else if (typeString.equals("油价")) { - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + } else if ( typeString.equals( "油价" ) ) { + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { - Log.d(TAG, "mogoIntentListener 油价 -------> "); + Log.d( TAG, "mogoIntentListener 油价 -------> " ); shareOilPrice(); } - } else if (typeString.equals("交通检查")) { - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + } else if ( typeString.equals( "交通检查" ) ) { + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { - Log.d(TAG, "mogoIntentListener 交通检查 -------> "); + Log.d( TAG, "mogoIntentListener 交通检查 -------> " ); uploadTrfficCheck(); } } } else { - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { - ShareControl.getInstance(mContext).showDialog(); - Log.d(TAG, "mogoIntentListener 我要分享 ----> "); - traceData("2"); + ShareControl.getInstance( mContext ).showDialog(); + Log.d( TAG, "mogoIntentListener 我要分享 ----> " ); + traceData( "2" ); } } - } catch (Exception e) { + } catch ( Exception e ) { e.printStackTrace(); } - } else if (intentStr.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN)) { + } else if ( intentStr.equals( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN ) ) { //分享路况/上报路况/上报拥堵 唤醒 - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { uploadRoadCondition(); - Log.d(TAG, "mogoIntentListener 分享路况 唤醒 ----> "); + Log.d( TAG, "mogoIntentListener 分享路况 唤醒 ----> " ); } - } else if (intentStr.equals(ExtensionsModuleConst.SHARE_DIALOG_CLOSE)) { //关闭分享框 唤醒 - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + } else if ( intentStr.equals( ExtensionsModuleConst.SHARE_DIALOG_CLOSE ) ) { //关闭分享框 唤醒 + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { - ShareControl.getInstance(mContext).dismissDialog(); - Log.d(TAG, "mogoIntentListener 关闭分享框 唤醒 ----> "); + ShareControl.getInstance( mContext ).dismissDialog(); + Log.d( TAG, "mogoIntentListener 关闭分享框 唤醒 ----> " ); } - } else if (intentStr.equals(ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE)) { + } else if ( intentStr.equals( ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE ) ) { // 两次未回复关闭对话框 - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { - ShareControl.getInstance(mContext).dismissDialog(); - Logger.d(TAG, "mogoIntentListener 两次未回复关闭对话框"); + ShareControl.getInstance( mContext ).dismissDialog(); + Logger.d( TAG, "mogoIntentListener 两次未回复关闭对话框" ); } - } else if (intentStr.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION)) { //上报路况 免唤醒 --ok - if (mIMogoAuthorizeModuleManager.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_SHARE)) { - mIMogoAuthorizeModuleManager.invokeAuthorization(AUTHORIZE_TYPE_LAUNCHER_SHARE); + } else if ( intentStr.equals( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION ) ) { //上报路况 免唤醒 --ok + if ( mIMogoAuthorizeModuleManager.needAuthorize( AUTHORIZE_TYPE_LAUNCHER_SHARE ) ) { + mIMogoAuthorizeModuleManager.invokeAuthorization( AUTHORIZE_TYPE_LAUNCHER_SHARE ); } else { uploadRoadCondition(); } @@ -227,65 +236,65 @@ public class EntrancePresenter extends Presenter { * 处理需要授权的命令 TODO */ public void handleNeedAuthorizeCmd() { - Log.e(TAG, "handleNeedAuthorizeCmd mVoiceCmdType = " + mVoiceCmdType + " >>> mVoiceCmdShareType = " + mVoiceCmdShareType); - if (!TextUtils.isEmpty(mVoiceCmdType)) { - if (mVoiceCmdType.equals(ExtensionsModuleConst.CANCLE_SHARE) || mVoiceCmdType.equals(ExtensionsModuleConst.CLOSE) - || mVoiceCmdType.equals(ExtensionsModuleConst.SHARE_DIALOG_CLOSE) || mVoiceCmdType.equals(ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE)) { //关闭分享弹框 - ShareControl.getInstance(mContext).dismissDialog(); - } else if (mVoiceCmdType.equals(ExtensionsModuleConst.GO_TO_SHARE)) { //打开分享弹框 - if (!TextUtils.isEmpty(mVoiceCmdShareType)) { - if (mVoiceCmdShareType.equals("封路")) { - Log.d(TAG, "handleNeedAuthorizeCmd 封路 -------> "); + Log.e( TAG, "handleNeedAuthorizeCmd mVoiceCmdType = " + mVoiceCmdType + " >>> mVoiceCmdShareType = " + mVoiceCmdShareType ); + if ( !TextUtils.isEmpty( mVoiceCmdType ) ) { + if ( mVoiceCmdType.equals( ExtensionsModuleConst.CANCLE_SHARE ) || mVoiceCmdType.equals( ExtensionsModuleConst.CLOSE ) + || mVoiceCmdType.equals( ExtensionsModuleConst.SHARE_DIALOG_CLOSE ) || mVoiceCmdType.equals( ExtensionsModuleConst.NO_REPLY_SHARE_DIALOG_CLOSE ) ) { //关闭分享弹框 + ShareControl.getInstance( mContext ).dismissDialog(); + } else if ( mVoiceCmdType.equals( ExtensionsModuleConst.GO_TO_SHARE ) ) { //打开分享弹框 + if ( !TextUtils.isEmpty( mVoiceCmdShareType ) ) { + if ( mVoiceCmdShareType.equals( "封路" ) ) { + Log.d( TAG, "handleNeedAuthorizeCmd 封路 -------> " ); uploadRoadClosed(); - } else if (mVoiceCmdShareType.equals("油价")) { - Log.d(TAG, "handleNeedAuthorizeCmd 油价 -------> "); + } else if ( mVoiceCmdShareType.equals( "油价" ) ) { + Log.d( TAG, "handleNeedAuthorizeCmd 油价 -------> " ); shareOilPrice(); - } else if (mVoiceCmdShareType.equals("交通检查")) { - Log.d(TAG, "handleNeedAuthorizeCmd 交通检查 -------> "); + } else if ( mVoiceCmdShareType.equals( "交通检查" ) ) { + Log.d( TAG, "handleNeedAuthorizeCmd 交通检查 -------> " ); uploadTrfficCheck(); } } else { - ShareControl.getInstance(mContext).showDialog(); - Log.d(TAG, "handleNeedAuthorizeCmd 我要分享 ----> "); - traceData("2"); + ShareControl.getInstance( mContext ).showDialog(); + Log.d( TAG, "handleNeedAuthorizeCmd 我要分享 ----> " ); + traceData( "2" ); } - } else if (mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK)) { //上报交通检查 - Log.d(TAG, "handleNeedAuthorizeCmd 上报交通检查 ----> "); + } else if ( mVoiceCmdType.equals( ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK ) ) { //上报交通检查 + Log.d( TAG, "handleNeedAuthorizeCmd 上报交通检查 ----> " ); uploadTrfficCheck(); - } else if (mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE)) { //上报封路 - Log.d(TAG, "handleNeedAuthorizeCmd 上报封路 ----> "); + } else if ( mVoiceCmdType.equals( ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE ) ) { //上报封路 + Log.d( TAG, "handleNeedAuthorizeCmd 上报封路 ----> " ); uploadRoadClosed(); - } else if (mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK) - || mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN) - || mVoiceCmdType.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION)) { //上报拥堵, 分享路况, 上报路况 - Log.d(TAG, "handleNeedAuthorizeCmd 上报路况 ----> "); + } else if ( mVoiceCmdType.equals( ExtensionsModuleConst.UPLOAD_ROAD_BLOCK ) + || mVoiceCmdType.equals( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN ) + || mVoiceCmdType.equals( ExtensionsModuleConst.UPLOAD_ROAD_CONDITION ) ) { //上报拥堵, 分享路况, 上报路况 + Log.d( TAG, "handleNeedAuthorizeCmd 上报路况 ----> " ); uploadRoadCondition(); } } else { - Log.e(TAG, "handleNeedAuthorizeCmd mVoiceCmdType == null "); + Log.e( TAG, "handleNeedAuthorizeCmd mVoiceCmdType == null " ); } } private void uploadRoadCondition() { - traceTanluData("2"); - sendShareReceiver("1"); - Logger.d("EntrancePresenter", "mogoIntentListener 上报路况 ----> "); - traceTypeData("1"); - ShareControl.getInstance(mContext).dismissDialog(); + traceTanluData( "2" ); + sendShareReceiver( "1" ); + Logger.d( "EntrancePresenter", "mogoIntentListener 上报路况 ----> " ); + traceTypeData( "1" ); + ShareControl.getInstance( mContext ).dismissDialog(); } private void uploadTrfficCheck() { - sendShareReceiver("2"); - Logger.d("EntrancePresenter", "mogoIntentListener 分享交通检查 ----> "); - traceTypeData("3"); - ShareControl.getInstance(mContext).dismissDialog(); + sendShareReceiver( "2" ); + Logger.d( "EntrancePresenter", "mogoIntentListener 分享交通检查 ----> " ); + traceTypeData( "3" ); + ShareControl.getInstance( mContext ).dismissDialog(); } private void uploadRoadClosed() { - sendShareReceiver("3"); - Logger.d("EntrancePresenter", "mogoIntentListener 分享封路 ----> "); - traceTypeData("4"); - ShareControl.getInstance(mContext).dismissDialog(); + sendShareReceiver( "3" ); + Logger.d( "EntrancePresenter", "mogoIntentListener 分享封路 ----> " ); + traceTypeData( "4" ); + ShareControl.getInstance( mContext ).dismissDialog(); } /** @@ -293,10 +302,10 @@ public class EntrancePresenter extends Presenter { * * @param from */ - private void traceData(String from) { - Map properties = new HashMap<>(); - properties.put("from", from); - mAnalytics.track(ExtensionsModuleConst.LAUNCHER_SHARE_CLICK, properties); + private void traceData( String from ) { + Map< String, Object > properties = new HashMap<>(); + properties.put( "from", from ); + mAnalytics.track( ExtensionsModuleConst.LAUNCHER_SHARE_CLICK, properties ); } private void shareOilPrice() { @@ -310,14 +319,14 @@ public class EntrancePresenter extends Presenter { /** * 发送广播 1拥堵,2交通检查,3封路 */ - private void sendShareReceiver(String type) { - Logger.d("EntrancePresenter", "TanluCardViewFragment sendShareReceiver ---->"); + private void sendShareReceiver( String type ) { + Logger.d( "EntrancePresenter", "TanluCardViewFragment sendShareReceiver ---->" ); Intent intent = new Intent(); - intent.setAction("com.zhidao.roadcondition.share"); - intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); - intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); - intent.putExtra("type", type); - getContext().sendBroadcast(intent); + intent.setAction( "com.zhidao.roadcondition.share" ); + intent.addFlags( Intent.FLAG_RECEIVER_FOREGROUND ); + intent.addFlags( Intent.FLAG_INCLUDE_STOPPED_PACKAGES ); + intent.putExtra( "type", type ); + getContext().sendBroadcast( intent ); } /** @@ -331,27 +340,35 @@ public class EntrancePresenter extends Presenter { * * @param type */ - private void traceTypeData(String type) { - Map properties = new HashMap<>(); - properties.put("type", type); - mAnalytics.track(ExtensionsModuleConst.LAUNCHER_SHARE_TYPE, properties); + private void traceTypeData( String type ) { + Map< String, Object > properties = new HashMap<>(); + properties.put( "type", type ); + mAnalytics.track( ExtensionsModuleConst.LAUNCHER_SHARE_TYPE, properties ); } - private void traceTanluData(String type) { - Map properties = new HashMap<>(); - properties.put("type", type); - mAnalytics.track(ExtensionsModuleConst.CARNET_USER_UPLOAD, properties); + private void traceTanluData( String type ) { + Map< String, Object > properties = new HashMap<>(); + properties.put( "type", type ); + mAnalytics.track( ExtensionsModuleConst.CARNET_USER_UPLOAD, properties ); } public void unregisterUnWake() { - AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.CANCLE_SHARE); - AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.CLOSE); - - AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK); - AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK); - AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE); - + AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ExtensionsModuleConst.CANCLE_SHARE ); + AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ExtensionsModuleConst.CLOSE ); + AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ExtensionsModuleConst.UPLOAD_ROAD_BLOCK ); + AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK ); + AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE ); } + @Override + public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) { + if ( descriptor == StatusDescriptor.DISPLAY_OVERVIEW ) { + if ( isTrue ) { + mView.hideNaviPanelWidgets(); + } else { + mView.showNaviPanelWidgets(); + } + } + } } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceView.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceView.java index 9ea2e13101..6309e1b02c 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceView.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceView.java @@ -9,4 +9,8 @@ import com.mogo.commons.mvp.IView; * 描述 */ public interface EntranceView extends IView { + + void showNaviPanelWidgets(); + + void hideNaviPanelWidgets(); } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java new file mode 100644 index 0000000000..2b4f032948 --- /dev/null +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtonControllerImpl.java @@ -0,0 +1,29 @@ +package com.mogo.module.extensions.entrance; + +import android.content.Context; +import android.widget.TextView; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.service.MogoServicePaths; +import com.mogo.service.entrance.ButtonIndex; +import com.mogo.service.entrance.IMogoEntranceButtonController; + +/** + * @author congtaowang + * @since 2020-04-16 + *

+ * 描述 + */ +@Route( path = MogoServicePaths.PATH_ENTRANCE_BUTTON_API ) +public class MogoEntranceButtonControllerImpl implements IMogoEntranceButtonController { + + @Override + public TextView getButton( ButtonIndex index ) { + return MogoEntranceButtons.getButton( index ); + } + + @Override + public void init( Context context ) { + + } +} diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtons.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtons.java new file mode 100644 index 0000000000..686d01e72e --- /dev/null +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/MogoEntranceButtons.java @@ -0,0 +1,31 @@ +package com.mogo.module.extensions.entrance; + +import android.widget.TextView; + +import com.mogo.service.entrance.ButtonIndex; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author congtaowang + * @since 2020-04-16 + *

+ * 描述 + */ +public class MogoEntranceButtons { + + private static Map< ButtonIndex, TextView > sButtons = new HashMap<>(); + + public static void save( ButtonIndex index, TextView btn ) { + sButtons.put( index, btn ); + } + + public static TextView getButton( ButtonIndex index ) { + return sButtons.get( index ); + } + + public static void clear() { + sButtons.clear(); + } +} diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml index 2fb0371afd..4dac1458fd 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml @@ -80,8 +80,8 @@ android:layout_marginRight="@dimen/module_ext_speed_limit_marginRight" android:background="@drawable/module_ext_dw_speed_limit_bkg" android:gravity="center" - android:visibility="invisible" android:orientation="vertical" + android:visibility="invisible" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"> @@ -116,18 +116,18 @@ + app:layout_constraintTop_toBottomOf="@+id/module_entrance_id_navi_info_panel" /> - + app:layout_constraintLeft_toLeftOf="parent"> + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/values-ldpi/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-ldpi/dimens.xml index 1436b11965..57dca9bae6 100644 --- a/modules/mogo-module-extensions/src/main/res/values-ldpi/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values-ldpi/dimens.xml @@ -46,11 +46,14 @@ 20px - 130px - 58px + 64px + 64px 20px 32px + 20px + 30px 22px + 8px 64px diff --git a/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml index faf483cc84..c4c5d9e9a2 100644 --- a/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml @@ -44,11 +44,14 @@ 32px 32px - 200px - 90px + 120px + 120px 32px 60px + 32px + 60px 32px + 20px 120px diff --git a/modules/mogo-module-extensions/src/main/res/values/dimens.xml b/modules/mogo-module-extensions/src/main/res/values/dimens.xml index 5e54d8ef68..027c19d25e 100644 --- a/modules/mogo-module-extensions/src/main/res/values/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values/dimens.xml @@ -44,11 +44,14 @@ 32px 32px - 200px - 90px + 120px + 120px 32px 60px + 32px + 60px 32px + 20px 120px diff --git a/modules/mogo-module-gps-simulator-debug/build.gradle b/modules/mogo-module-gps-simulator-debug/build.gradle index 2382df5823..12fbf4774d 100644 --- a/modules/mogo-module-gps-simulator-debug/build.gradle +++ b/modules/mogo-module-gps-simulator-debug/build.gradle @@ -51,3 +51,5 @@ dependencies { implementation project(':services:mogo-service-api') } } + +apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString() diff --git a/modules/mogo-module-gps-simulator-noop/build.gradle b/modules/mogo-module-gps-simulator-noop/build.gradle index 7427dc421a..4e4194af0d 100644 --- a/modules/mogo-module-gps-simulator-noop/build.gradle +++ b/modules/mogo-module-gps-simulator-noop/build.gradle @@ -46,3 +46,5 @@ dependencies { implementation project(':modules:mogo-module-gps-simulator') } } + +apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString() diff --git a/modules/mogo-module-gps-simulator/build.gradle b/modules/mogo-module-gps-simulator/build.gradle index b3a5b2a6a6..df36963bb0 100644 --- a/modules/mogo-module-gps-simulator/build.gradle +++ b/modules/mogo-module-gps-simulator/build.gradle @@ -37,3 +37,5 @@ dependencies { implementation project(':modules:mogo-module-authorize') } } + +apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString() 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 9e9a8846fe..6cfa8e244b 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 @@ -30,7 +30,7 @@ import com.mogo.module.main.cards.MogoModulesHandler; import com.mogo.module.main.cards.MogoModulesManager; import com.mogo.module.main.cards.OnPageChangeListenerAdapter; import com.mogo.module.main.cards.OrientedViewPager; -import com.mogo.module.main.windowview.WindowViewHandler; +import com.mogo.module.main.windowview.FloatingViewHandler; import com.mogo.module.service.ServiceConst; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; @@ -192,7 +192,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme // 避免事件穿透导致地图被滑动 mLeftShadowFrame.setOnClickListener( view -> { } ); - WindowViewHandler.init( mFloatingLayout ); + FloatingViewHandler.init( mFloatingLayout ); } // 隐藏布局 diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java index 06f4296965..08c8f4417e 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesHandler.java @@ -7,6 +7,7 @@ import com.mogo.map.marker.IMogoMarker; import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.navi.IMogoAimlessModeListener; import com.mogo.map.navi.IMogoCarLocationChangedListener; +import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.map.navi.IMogoNaviListener; import com.mogo.service.module.IMogoModuleProvider; @@ -26,7 +27,7 @@ public interface MogoModulesHandler extends IMogoMapListener, IMogoLocationListener, IMogoMarkerClickListener, IMogoAimlessModeListener, - IMogoCarLocationChangedListener { + IMogoCarLocationChangedListener2 { /** * 地图加载完成回调 diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java index 11476ac886..e2876f8737 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/MogoModulesManager.java @@ -2,6 +2,7 @@ package com.mogo.module.main.cards; import android.content.Context; import android.content.Intent; +import android.location.Location; import android.text.TextUtils; import android.view.MotionEvent; @@ -17,6 +18,7 @@ import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.model.MogoPoi; import com.mogo.map.navi.IMogoAimlessModeListener; import com.mogo.map.navi.IMogoCarLocationChangedListener; +import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.map.navi.IMogoNaviListener; import com.mogo.map.navi.IMogoNaviListener2; import com.mogo.map.navi.MogoCongestionInfo; @@ -109,7 +111,7 @@ public class MogoModulesManager implements MogoModulesHandler, final List< MogoModule > modules = MogoModulePaths.getModules(); if ( modules != null && !modules.isEmpty() ) { for ( MogoModule module : modules ) { - Logger.d(TAG,"module.getPath():" + module.getPath() + " name: " + module.getName()); + Logger.d( TAG, "module.getPath():" + module.getPath() + " name: " + module.getName() ); IMogoModuleProvider provider = load( module.getPath() ); if ( provider != null ) { mModuleProviders.put( module, provider ); @@ -655,15 +657,30 @@ public class MogoModulesManager implements MogoModulesHandler, @Override public void onCarLocationChanged( MogoLatLng latLng ) { + // do nothing. + } + + @Override + public void onCarLocationChanged2( Location latLng ) { Iterator< IMogoCarLocationChangedListener > iterator = MogoRegisterCenterHandler.getInstance().getCarLocationChangedListener(); if ( iterator == null ) { return; } + MogoLatLng target = null; while ( iterator.hasNext() ) { IMogoCarLocationChangedListener listener = iterator.next(); - if ( listener != null ) { + if ( listener instanceof IMogoCarLocationChangedListener2 ) { try { - listener.onCarLocationChanged( latLng ); + ( ( IMogoCarLocationChangedListener2 ) listener ).onCarLocationChanged2( latLng ); + } catch ( Exception e ) { + e.printStackTrace(); + } + } else { + try { + if ( target == null ) { + target = new MogoLatLng( latLng.getLatitude(), latLng.getLongitude() ); + } + listener.onCarLocationChanged( target ); } catch ( Exception e ) { e.printStackTrace(); } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/WindowViewHandler.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/FloatingViewHandler.java similarity index 50% rename from modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/WindowViewHandler.java rename to modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/FloatingViewHandler.java index 1b37bea1c9..5485f4778d 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/WindowViewHandler.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/FloatingViewHandler.java @@ -13,7 +13,7 @@ import com.mogo.utils.logger.Logger; *

* 描述 */ -public class WindowViewHandler { +public class FloatingViewHandler { private static final String TAG = "WindowViewHandler"; @@ -35,9 +35,9 @@ public class WindowViewHandler { */ private static boolean sMovable = false; - public static FrameLayout sFloatingLayout = null; + private static FrameLayout sFloatingLayout = null; - public static void init(FrameLayout frameLayout) { + public static void init( FrameLayout frameLayout ) { sFloatingLayout = frameLayout; } @@ -49,20 +49,20 @@ public class WindowViewHandler { * @param y * @param movable */ - public static void addView(View view, int x, int y, boolean movable) { - if (view == null) { + public static void addView( View view, int x, int y, boolean movable ) { + if ( view == null ) { return; } - if (sFloatingLayout == null) { - Logger.e(TAG, "no floating frame. "); + if ( sFloatingLayout == null ) { + Logger.e( TAG, "no floating frame. " ); return; } - FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT ); params.leftMargin = x; params.topMargin = y; - sFloatingLayout.addView(view, params); + sFloatingLayout.addView( view, params ); } /** @@ -72,16 +72,16 @@ public class WindowViewHandler { * @param params * @param movable */ - public static void addView(View view, FrameLayout.LayoutParams params, boolean movable) { - if (view == null) { + public static void addView( View view, FrameLayout.LayoutParams params, boolean movable ) { + if ( view == null ) { return; } - if (sFloatingLayout == null) { - Logger.e(TAG, "no floating frame. "); + if ( sFloatingLayout == null ) { + Logger.e( TAG, "no floating frame. " ); return; } - sFloatingLayout.addView(view, params); + sFloatingLayout.addView( view, params ); } /** @@ -93,27 +93,27 @@ public class WindowViewHandler { * @param y * @param movable */ - public static void addView(View view, int priority, int x, int y, boolean movable) { - if (view == null) { + public static void addView( View view, int priority, int x, int y, boolean movable ) { + if ( view == null ) { return; } - if (sFloatingLayout == null) { - Logger.e(TAG, "no floating frame. "); + if ( sFloatingLayout == null ) { + Logger.e( TAG, "no floating frame. " ); return; } - if (sView == view) { - Logger.w(TAG, "改布局已添加且没有移除,不操作"); + if ( sView == view ) { + Logger.w( TAG, "改布局已添加且没有移除,不操作" ); return; } - if (sView != null) { - if (priority < sPriority) { - Logger.w(TAG, "过滤低优先级布局"); + if ( sView != null ) { + if ( priority < sPriority ) { + Logger.w( TAG, "过滤低优先级布局" ); return; } - sFloatingLayout.removeView(sView); + sFloatingLayout.removeView( sView ); } sView = view; sMovable = movable; @@ -131,27 +131,27 @@ public class WindowViewHandler { * @param params * @param movable */ - public static void addView(View view, int priority, FrameLayout.LayoutParams params, boolean movable) { - if (view == null) { + public static void addView( View view, int priority, FrameLayout.LayoutParams params, boolean movable ) { + if ( view == null ) { return; } - if (sFloatingLayout == null) { - Logger.e(TAG, "no floating frame. "); + if ( sFloatingLayout == null ) { + Logger.e( TAG, "no floating frame. " ); return; } - if (sView == view) { - Logger.w(TAG, "改布局已添加且没有移除,不操作"); + if ( sView == view ) { + Logger.w( TAG, "改布局已添加且没有移除,不操作" ); return; } - if (sView != null) { - if (priority < sPriority) { - Logger.w(TAG, "过滤低优先级布局"); + if ( sView != null ) { + if ( priority < sPriority ) { + Logger.w( TAG, "过滤低优先级布局" ); return; } - sFloatingLayout.removeView(sView); + sFloatingLayout.removeView( sView ); } sView = view; sMovable = movable; @@ -160,15 +160,15 @@ public class WindowViewHandler { addView(); } - public static void removeView(View view) { - if (sFloatingLayout == null) { + public static void removeView( View view ) { + if ( sFloatingLayout == null ) { return; } - if (view == null) { + if ( view == null ) { return; } - sFloatingLayout.removeView(view); - if (sView == view) { + sFloatingLayout.removeView( view ); + if ( sView == view ) { sView = null; sPriority = Integer.MIN_VALUE; sMovable = false; @@ -177,29 +177,35 @@ public class WindowViewHandler { } private static void addView() { - if (sView == null) { + if ( sView == null ) { return; } FrameLayout.LayoutParams params = sParams; - if (params == null) { - params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + if ( params == null ) { + params = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT ); params.leftMargin = sX; params.topMargin = sY; } - sFloatingLayout.addView(sView, params); + sFloatingLayout.addView( sView, params ); } - public static void attachMovementEvent(View view, WindowManager.LayoutParams params) { - if (view == null) { + public static void attachMovementEvent( View view, WindowManager.LayoutParams params ) { + if ( view == null ) { return; } - view.setOnTouchListener((v, event) -> { + view.setOnTouchListener( ( v, event ) -> { DispatchTouchEventWrapper.getInstance() - .attach(view, params) - .handle(event); + .attach( view, params ) + .handle( event ); return false; - }); + } ); + } + + public static void setVisible( boolean visible ) { + if ( sFloatingLayout != null ) { + sFloatingLayout.setVisibility( visible ? View.VISIBLE : View.INVISIBLE ); + } } } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/MogoWindowManager.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/MogoWindowManager.java index 2357701d68..f7b69a8dd2 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/MogoWindowManager.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/windowview/MogoWindowManager.java @@ -14,36 +14,46 @@ import com.mogo.service.windowview.IMogoWindowManager; *

* 根据优先级控制显示 window view. */ -@Route(path = MogoServicePaths.PATH_WINDOW_MANAGER) +@Route( path = MogoServicePaths.PATH_WINDOW_MANAGER ) public class MogoWindowManager implements IMogoWindowManager { @Override - public void addView(View view, int x, int y, boolean movable) { - WindowViewHandler.addView(view, x, y, movable); + public void addView( View view, int x, int y, boolean movable ) { + FloatingViewHandler.addView( view, x, y, movable ); } @Override - public void addView(View view, FrameLayout.LayoutParams params, boolean movable) { - WindowViewHandler.addView(view, params, movable); + public void addView( View view, FrameLayout.LayoutParams params, boolean movable ) { + FloatingViewHandler.addView( view, params, movable ); } @Override - public void addView(int priority, View view, int x, int y, boolean movable) { - WindowViewHandler.addView(view, priority, x, y, movable); + public void addView( int priority, View view, int x, int y, boolean movable ) { + FloatingViewHandler.addView( view, priority, x, y, movable ); } @Override - public void addView(int priority, View view, FrameLayout.LayoutParams params, boolean movable) { - WindowViewHandler.addView(view, priority, params, movable); + public void addView( int priority, View view, FrameLayout.LayoutParams params, boolean movable ) { + FloatingViewHandler.addView( view, priority, params, movable ); } @Override - public void removeView(View view) { - WindowViewHandler.removeView(view); + public void removeView( View view ) { + FloatingViewHandler.removeView( view ); } @Override - public void init(Context context) { + public void hideAll() { + FloatingViewHandler.setVisible( false ); + } + + @Override + public void showAll() { + FloatingViewHandler.setVisible( true ); + } + + @Override + public void init( Context context ) { } } 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 cc2ca88ad3..d5db0d506d 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 @@ -21,7 +21,8 @@ import com.mogo.map.navi.MogoNaviInfo; import com.mogo.map.navi.MogoTraffic; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.MapControlResult; -import com.mogo.module.common.MogoModulePaths; +import com.mogo.module.common.map.MapCenterPointStrategy; +import com.mogo.module.common.map.Scene; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; import com.mogo.service.intent.IMogoIntentListener; @@ -32,12 +33,8 @@ import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.module.IMogoSearchManager; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.service.strategy.IMogoRefreshStrategyController; -import com.mogo.service.voice.IMogoVoiceListener; -import com.mogo.service.voice.IMogoVoiceManager; -import com.mogo.utils.AppUtils; import com.mogo.utils.ResourcesHelper; import com.mogo.utils.UiThreadHandler; -import com.mogo.utils.WindowUtils; import com.mogo.utils.logger.Logger; import java.util.Map; @@ -62,6 +59,7 @@ public class MapPresenter extends Presenter< MapView > implements private IMogoStatusManager mStatusManager; private IMogoRegisterCenter mRegisterCenter; private IMogoLauncher mLauncher; + private Rect mDisplayOverviewBounds; public MapPresenter( MapView view ) { super( view ); @@ -99,11 +97,8 @@ public class MapPresenter extends Presenter< MapView > implements 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 ); - //AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null); } } @@ -123,18 +118,14 @@ public class MapPresenter extends Presenter< MapView > implements //intent.putExtra("EXTRA_ENDURANCE_DATA", continueNavi); //继续导航 } else if ( key_type == 10049 ) { - boolean extra_endurance_data = - intent.getBooleanExtra( "EXTRA_ENDURANCE_DATA", false ); + boolean extra_endurance_data = intent.getBooleanExtra( "EXTRA_ENDURANCE_DATA", false ); if ( extra_endurance_data ) { onContinueNavigation(); } } else if ( key_type == 10006 ) { - int extra_is_show = intent.getIntExtra( "EXTRA_IS_SHOW", 0 ); - if ( extra_is_show == 0 ) { - mStatusManager.setUserInteractionStatus( TAG, true, false ); - mView.getUIController().displayOverview(); + onDisplayOverview(); } else { onContinueNavigation(); } @@ -173,13 +164,16 @@ public class MapPresenter extends Presenter< MapView > implements /** * 继续导航 */ - private void onContinueNavigation(){ + private void onContinueNavigation() { + if ( mStatusManager.isMainPageOnResume() ) { + mStatusManager.setDisplayOverview( TAG, false ); mView.getUIController().recoverLockMode(); } else { mLauncher.backToLauncher( getContext() ); UiThreadHandler.postDelayed( () -> { try { + mStatusManager.setDisplayOverview( TAG, false ); mView.getUIController().recoverLockMode(); } catch ( Exception e ) { e.printStackTrace(); @@ -188,6 +182,16 @@ public class MapPresenter extends Presenter< MapView > implements } } + private void onDisplayOverview() { + if ( !mMogoMapService.getNavi( getContext() ).isNaviing() ) { + Logger.d( TAG, "未开始导航." ); + return; + } + mStatusManager.setUserInteractionStatus( TAG, true, false ); + mStatusManager.setDisplayOverview( TAG, true ); + mView.getUIController().displayOverview( mDisplayOverviewBounds ); + } + private void zoomMap( boolean zoomIn ) { boolean isLocked = mMogoMapService.getMapUIController().isCarLocked(); MapControlResult result = mView.getUIController().changeZoom( zoomIn ); @@ -229,11 +233,18 @@ public class MapPresenter extends Presenter< MapView > implements IMogoNavi mogoNavi = mMogoMapService.getNavi( getContext() ); mogoNavi.setCalculatePathDisplayBounds( new Rect( + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_calculate_path_display_overview_left_margin ), + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_calculate_path_display_overview_top_margin ), + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_calculate_path_display_overview_right_margin ), + ResourcesHelper.getDimensionPixelSize( getContext(), R.dimen.module_map_calculate_path_display_overview_bottom_margin ) + ) ); + + mDisplayOverviewBounds = 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 @@ -259,8 +270,7 @@ public class MapPresenter extends Presenter< MapView > implements private void registerVoiceCmd() { for ( Map.Entry< String, String[] > entry : VoiceConstants.sVoiceCmds.entrySet() ) { - AIAssist.getInstance( getContext() ) - .registerUnWakeupCommand( entry.getKey(), entry.getValue(), this ); + AIAssist.getInstance( getContext() ).registerUnWakeupCommand( entry.getKey(), entry.getValue(), this ); } for ( String cmd : VoiceConstants.sCmds ) { @@ -293,12 +303,10 @@ public class MapPresenter extends Presenter< MapView > implements 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 ); 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 ); break; case VoiceConstants.CMD_MAP_ZOOM_IN_UN_WAKEUP: @@ -314,12 +322,10 @@ public class MapPresenter extends Presenter< MapView > implements case VoiceConstants.CMD_MAP_NORTH_UP_MODE_UN_WAKEUP: case VoiceConstants.CMD_MAP_NORTH_UP_MODE: mView.getUIController().changeMapMode( EnumMapUI.NorthUP_2D ); - AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_3D_UN_WAKEUP: case VoiceConstants.CMD_MAP_3D: mView.getUIController().changeMapMode( EnumMapUI.CarUp_3D ); - AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_DAY_TIME_MODE_UN_WAKEUP: @@ -359,7 +365,7 @@ public class MapPresenter extends Presenter< MapView > implements AIAssist.getInstance( getContext() ).speakTTSVoice( "已切换", null ); break; case VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE: - mView.getUIController().displayOverview(); + onDisplayOverview(); break; case VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE: onContinueNavigation(); diff --git a/modules/mogo-module-map/src/main/res/values-ldpi/dimens.xml b/modules/mogo-module-map/src/main/res/values-ldpi/dimens.xml index 7f51191319..bcf618205a 100644 --- a/modules/mogo-module-map/src/main/res/values-ldpi/dimens.xml +++ b/modules/mogo-module-map/src/main/res/values-ldpi/dimens.xml @@ -1,7 +1,13 @@ - 558px - 174px - 32px - 80px + 558px + 174px + 32px + 80px + + + 534px + 100px + 68px + 32px \ No newline at end of file diff --git a/modules/mogo-module-map/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-map/src/main/res/values-xhdpi/dimens.xml index 275b7ffcd1..2d58420a11 100644 --- a/modules/mogo-module-map/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-map/src/main/res/values-xhdpi/dimens.xml @@ -1,7 +1,13 @@ - 977px - 249px - 61px - 80px + 977px + 249px + 61px + 80px + + + 952px + 170px + 122px + 61px \ No newline at end of file diff --git a/modules/mogo-module-map/src/main/res/values/dimens.xml b/modules/mogo-module-map/src/main/res/values/dimens.xml index 275b7ffcd1..4cf55c67a5 100644 --- a/modules/mogo-module-map/src/main/res/values/dimens.xml +++ b/modules/mogo-module-map/src/main/res/values/dimens.xml @@ -1,7 +1,13 @@ - 977px - 249px - 61px - 80px + + 977px + 249px + 61px + 80px + + 952px + 170px + 122px + 61px \ No newline at end of file diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/NaviManager.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/NaviManager.kt index e67b538fc0..13428466a1 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/NaviManager.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/NaviManager.kt @@ -36,8 +36,6 @@ object NaviManager { SearchServiceHolder.getNavi().stopNavi() } else if (key_type == 20009) { SearchServiceHolder.mogoLauncher.backToLauncher(context) - gotoSearch() - } else if (key_type == 10005) { // * 仅在导航场景下,⽀持第三⽅进⾏路线偏好的重新选择。 diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/SettingManager.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/SettingManager.kt index 66c998b9f9..4237428e43 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/SettingManager.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/SettingManager.kt @@ -12,186 +12,195 @@ import com.mogo.service.module.IMogoSettingManager * 2020-01-12. */ object SettingManager : IMogoSettingManager { - private val KEY_PAHT_PREFER = "keyPath" - private val KEY_VOLUME = "keyVolume" - private val KEY_VOICE_STYLE = "keyVoice" - private val KEY_MAP_TYPE = "keyMapType" - private lateinit var settings: SharedPreferences + private val KEY_PAHT_PREFER = "keyPath" + private val KEY_VOLUME = "keyVolume" + private val KEY_VOICE_STYLE = "keyVoice" + private val KEY_MAP_TYPE = "keyMapType" + private val KEY_AIMLESS_MODE_TYPE = "keyAimlessModeType" + private lateinit var settings: SharedPreferences - /** - * 是否躲避拥堵 - */ - private var congestion = false + /** + * 是否躲避拥堵 + */ + private var congestion = false - /** - * 不走高速 - */ - private var avoidSpeed = false + /** + * 不走高速 + */ + private var avoidSpeed = false - /** - * 避免收费 - */ - private var cost = false + /** + * 避免收费 + */ + private var cost = false - /** - * 高速优先 - */ - private var highSpeed = false - /** - * 模拟导航 - */ - private var isMonitor: Boolean = false + /** + * 高速优先 + */ + private var highSpeed = false + /** + * 模拟导航 + */ + private var isMonitor: Boolean = false - /** - * GPS 模拟 - */ - private var isGpsSimulator: Boolean = false + /** + * GPS 模拟 + */ + private var isGpsSimulator: Boolean = false - override fun getPathPrefer(): Int { - return settings!!.getInt(KEY_PAHT_PREFER, 0) - } - - override fun getVolume(): Int { - return settings!!.getInt(KEY_VOLUME, 0) - } - - override fun getVoiceStyle(): Int { - return settings!!.getInt(KEY_VOICE_STYLE, R.id.rb_navi_detail) - } - - override fun getMapType(): Int { - return settings!!.getInt(KEY_MAP_TYPE, R.id.rb_navi_day) - } - - fun setPathPrefer(type: Int) { - settings!!.edit() - .putInt(KEY_PAHT_PREFER, type) - .apply() - } - - fun setVolume(type: Int) { - settings!!.edit() - .putInt(KEY_VOLUME, type) - .apply() - } - - fun setVoiceStyle(type: Int) { - settings!!.edit() - .putInt(KEY_VOICE_STYLE, type) - .apply() - } - - fun setMapType(type: Int) { - settings!!.edit() - .putInt(KEY_MAP_TYPE, type) - .apply() - } - - fun setMonitor(type: Boolean) { - isMonitor = type - } - - fun isMonitor(): Boolean { - return isMonitor - } - - fun setGpsSimulator(type:Boolean){ - isGpsSimulator = type - } - - fun isGpsSimulator(): Boolean { - return isGpsSimulator - } - - /** - * 是否躲避拥堵 - */ - fun congestion(congestion: Boolean) { - this.congestion = congestion - save() - } - - /** - * 不走高速 - */ - fun avoidSpeed(avoidSpeed: Boolean) { - this.avoidSpeed = avoidSpeed - if (avoidSpeed) { - this.highSpeed = false + override fun getPathPrefer(): Int { + return settings!!.getInt(KEY_PAHT_PREFER, 0) } - save() - } - - /** - * 避免收费 - */ - fun cost(cost: Boolean) { - this.cost = cost - if (cost) { - this.highSpeed = false + override fun getVolume(): Int { + return settings!!.getInt(KEY_VOLUME, 0) } - save() - } - - /** - * 高速优先 - */ - fun highSpeed(highSpeed: Boolean) { - this.highSpeed = highSpeed - if (highSpeed) { - this.avoidSpeed = false - this.cost = false + override fun getVoiceStyle(): Int { + return settings!!.getInt(KEY_VOICE_STYLE, R.id.rb_navi_detail) } - save() - } + override fun getMapType(): Int { + return settings!!.getInt(KEY_MAP_TYPE, R.id.rb_navi_day) + } - fun isCongestion(): Boolean { - return congestion - } + fun setPathPrefer(type: Int) { + settings!!.edit() + .putInt(KEY_PAHT_PREFER, type) + .apply() + } - fun isAvoidSpeed(): Boolean { - return avoidSpeed - } + fun setVolume(type: Int) { + settings!!.edit() + .putInt(KEY_VOLUME, type) + .apply() + } - fun isCost(): Boolean { - return cost - } + fun setVoiceStyle(type: Int) { + settings!!.edit() + .putInt(KEY_VOICE_STYLE, type) + .apply() + } - fun isHighSpeed(): Boolean { - return highSpeed - } + fun setMapType(type: Int) { + settings!!.edit() + .putInt(KEY_MAP_TYPE, type) + .apply() + } - private fun save() { - settings.edit() - .putBoolean("congestion", congestion) - .putBoolean("avoidSpeed", avoidSpeed) - .putBoolean("cost", cost) - .putBoolean("highSpeed", highSpeed) - .apply() - updateConfig() + fun setMonitor(type: Boolean) { + isMonitor = type + } - } + fun isMonitor(): Boolean { + return isMonitor + } - override fun init(context: Context) { - settings = context.getSharedPreferences("settings", Context.MODE_PRIVATE) + fun setGpsSimulator(type: Boolean) { + isGpsSimulator = type + } - congestion = settings.getBoolean("congestion", false) - avoidSpeed = settings.getBoolean("avoidSpeed", false) - cost = settings.getBoolean("cost", false) - highSpeed = settings.getBoolean("highSpeed", false) - updateConfig() - } + fun isGpsSimulator(): Boolean { + return isGpsSimulator + } - private fun updateConfig() { - SearchServiceHolder.getNavi() - .naviConfig - .cost(cost) - .avoidSpeed(avoidSpeed) - .highSpeed(highSpeed) - .congestion(congestion) - } + /** + * 是否躲避拥堵 + */ + fun congestion(congestion: Boolean) { + this.congestion = congestion + save() + } + + /** + * 不走高速 + */ + fun avoidSpeed(avoidSpeed: Boolean) { + this.avoidSpeed = avoidSpeed + if (avoidSpeed) { + this.highSpeed = false + } + save() + + } + + /** + * 避免收费 + */ + fun cost(cost: Boolean) { + this.cost = cost + if (cost) { + this.highSpeed = false + } + save() + + } + + /** + * 高速优先 + */ + fun highSpeed(highSpeed: Boolean) { + this.highSpeed = highSpeed + if (highSpeed) { + this.avoidSpeed = false + this.cost = false + } + save() + + } + + fun isCongestion(): Boolean { + return congestion + } + + fun isAvoidSpeed(): Boolean { + return avoidSpeed + } + + fun isCost(): Boolean { + return cost + } + + fun isHighSpeed(): Boolean { + return highSpeed + } + + private fun save() { + settings.edit() + .putBoolean("congestion", congestion) + .putBoolean("avoidSpeed", avoidSpeed) + .putBoolean("cost", cost) + .putBoolean("highSpeed", highSpeed) + .apply() + updateConfig() + + } + + override fun init(context: Context) { + settings = context.getSharedPreferences("settings", Context.MODE_PRIVATE) + + congestion = settings.getBoolean("congestion", false) + avoidSpeed = settings.getBoolean("avoidSpeed", false) + cost = settings.getBoolean("cost", false) + highSpeed = settings.getBoolean("highSpeed", false) + updateConfig() + } + + private fun updateConfig() { + SearchServiceHolder.getNavi() + .naviConfig + .cost(cost) + .avoidSpeed(avoidSpeed) + .highSpeed(highSpeed) + .congestion(congestion) + } + + fun setAimlessMode(type: Int){ + settings.edit().putInt(KEY_AIMLESS_MODE_TYPE, type).apply() + } + + fun getAimlessMode():Int { + return settings.getInt(KEY_AIMLESS_MODE_TYPE, R.id.aimlessModeClose) + } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt index 40affa22cf..3fbb093871 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt @@ -40,255 +40,225 @@ import kotlinx.android.synthetic.main.fragment_search_category.tv_navi_navi * @author zyz * 2020-01-09. */ -class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBack { +class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBack, IMogoMarkerClickListener { // override fun onMarkerClicked(marker: IMogoMarker?): Boolean { // // return true // } - override fun onCmdSelected(cmd: String?) { - if (cmd?.startsWith("position") == true) { - var index = cmd.substring(8) - mAdapter.setCurrent(index.toInt()) - updateMarker() - goPath() + override fun onCmdSelected(cmd: String?) { + if (cmd?.startsWith("position") == true) { + var index = cmd.substring(8) + mAdapter.current = index.toInt() + updateMarker(false) + goPath() + } } - } - override fun onCmdAction(speakText: String?) { - } + override fun onCmdAction(speakText: String?) { + } - override fun onCmdCancel(speakText: String?) { - } + override fun onCmdCancel(speakText: String?) { + } - override fun onSpeakEnd(speakText: String?) { - } + override fun onSpeakEnd(speakText: String?) { + } - override fun onSpeakSelectTimeOut(speakText: String?) { - } + override fun onSpeakSelectTimeOut(speakText: String?) { + } - private val TAG: String = "CategorySearchFragment" - private var addMarkers: ArrayList = ArrayList() - var arrayList = ArrayList() - var locationList = ArrayList() + private val TAG: String = "CategorySearchFragment" + private var addMarkers: ArrayList = ArrayList() + var arrayList = ArrayList() + var locationList = ArrayList() - private lateinit var cmds: ArrayList - override fun renderSearchPoiResult(datums: List?) { - mAdapter.setDatas(datums) - cv_search_result.visibility = View.VISIBLE - pb_path.visibility = View.GONE - AIAssist.getInstance(context) - .speakTTSVoice(String.format("搜索到%d个位置,请选择", datums?.size)) + private lateinit var cmds: ArrayList + override fun renderSearchPoiResult(datums: List?) { + mAdapter.setDatas(datums) + cv_search_result.visibility = View.VISIBLE + pb_path.visibility = View.GONE + AIAssist.getInstance(context).speakTTSVoice(String.format("搜索到%d个位置,请选择", datums?.size)) - arrayList.clear() - locationList.clear() + arrayList.clear() + locationList.clear() - for (index in 0 until datums!!.size) { - var decodeResource = - BitmapFactory.decodeResource( - resources, - if (mAdapter.current == index) R.mipmap.icon_search_category_checked else R.mipmap.icon_search_category_unchecked - ) + for (index in 0 until datums!!.size) { + var decodeResource = BitmapFactory.decodeResource( + resources, + if (mAdapter.current == index) R.mipmap.icon_search_category_checked else R.mipmap.icon_search_category_unchecked + ) - var createWaterMask = - BitmapUtils.createWaterMask( - context, decodeResource, (index + 1).toString(), R.color.white, 18 - ) - val options = MogoMarkerOptions() - .icon(createWaterMask) - .latitude(datums[index].point?.lat ?: 0.0) - .owner("CategorySearchFragment") - .`object`(index) + var createWaterMask = BitmapUtils.createWaterMask( + context, decodeResource, (index + 1).toString(), R.color.white, 18 + ) + val options = MogoMarkerOptions() + .icon(createWaterMask) + .latitude(datums[index].point?.lat ?: 0.0) + .owner("CategorySearchFragment") + .`object`(index) // .anchor(0.5f, 1f) - .longitude(datums[index].point?.lng ?: 0.0) - arrayList.add(options) - locationList.add(datums[index].point) + .longitude(datums[index].point?.lng ?: 0.0) + arrayList.add(options) + locationList.add(datums[index].point) - var int2String = StringUtils.int2String(index + 1) - AIAssist.getInstance(context) - .registerUnWakeupCommand( - "position" + index, arrayOf("第" + int2String + "个", "第" + int2String + "条"), this - ) - cmds.add("position" + index) + var int2String = StringUtils.int2String(index + 1) + AIAssist.getInstance(context).registerUnWakeupCommand("position${index}", arrayOf("第${int2String}个", "第${int2String}条"), this) + cmds.add("position" + index) + } + addMarkers() } - addMarkers() - } - private fun addMarkers() { - addMarkers.clear() - var marginBounder = resources.getDimensionPixelSize(R.dimen.dp_60) * 2 - SearchServiceHolder.getMapUIController() - .showBounds( - TAG, null, locationList, Rect( - cv_search_result.width + marginBounder, marginBounder, marginBounder, marginBounder - ), false + private fun addMarkers() { + addMarkers.clear() + var marginBounder = resources.getDimensionPixelSize(R.dimen.dp_60) * 2 + SearchServiceHolder.getMapUIController().showBounds(TAG, + null, + locationList, + Rect(cv_search_result.width + marginBounder, marginBounder, marginBounder, marginBounder), + false ) - for (options in arrayList) { - var addMarker = SearchServiceHolder.getMarkerManger() - .addMarker(TAG, options) - addMarkers.add(addMarker) - } - addClick() - } - - private fun registerVoice() { - - for (index in 0 until cmds.size) { - var int2String = StringUtils.int2String(index + 1) - AIAssist.getInstance(context) - .registerUnWakeupCommand( - "position" + index, arrayOf("第" + int2String + "个", "第" + int2String + "条"), this - ) + for (options in arrayList) { + var addMarker = SearchServiceHolder.getMarkerManger().addMarker(TAG, options) + addMarker.onMarkerClickListener = this + addMarkers.add(addMarker) + } } - } - - override fun onHiddenChanged(hidden: Boolean) { - super.onHiddenChanged(hidden) - if (!hidden) { - registerVoice() - addMarkers() - } else { - unRegisterVoice() + private fun registerVoice() { + for (index in 0 until cmds.size) { + var int2String = StringUtils.int2String(index + 1) + AIAssist.getInstance(context).registerUnWakeupCommand("position${index}", arrayOf("第${int2String}个", "第${int2String}条"), this) + } } - } - private fun addClick() { - if (addMarkers != null) { - for (item in addMarkers!!) { - item.setOnMarkerClickListener { + override fun onHiddenChanged(hidden: Boolean) { + super.onHiddenChanged(hidden) + if (!hidden) { + registerVoice() + addMarkers() + } else { + unRegisterVoice() + } + } - var index = it.mogoMarkerOptions.`object` as Int - mAdapter.current = index - rv_search_result.smoothScrollToPosition(index) - updateMarker() - true + override fun onMarkerClicked(marker: IMogoMarker?): Boolean { + var index = marker?.mogoMarkerOptions?.`object` as Int + mAdapter.current = index + rv_search_result.smoothScrollToPosition(index) + updateMarker() + return true + } + + private lateinit var mAdapter: SearchCategoryAdapter + + private lateinit var mSearchPresenter: CategoryPresenter + private var category: String? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + category = arguments?.getString("category") + mSearchPresenter = CategoryPresenter(this) + lifecycle.addObserver(mSearchPresenter) + cmds = ArrayList() + } + + override fun getLayoutId(): Int { + return R.layout.fragment_search_category + } + + override fun onViewCreated( + view: View, + savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + mAdapter = SearchCategoryAdapter(activity, ArrayList()) + + rv_search_result.layoutManager = LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false) + rv_search_result.adapter = mAdapter + et_navi_search.setText(category) + + + iv_navi_back.setOnClickListener { + SearchServiceHolder.fragmentManager.pop() } - } + tv_navi_navi.setOnClickListener { + goPath() + } + mAdapter.setOnClickListener { + var position = it.getTag(R.id.tag_position) as Int + mAdapter.current = position + updateMarker() + } + + AIAssist.getInstance(context).registerUnWakeupCommand("back", arrayOf("关闭", "返回"), this) } - } - - private lateinit var mAdapter: SearchCategoryAdapter - - private lateinit var mSearchPresenter: CategoryPresenter - private var category: String? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - category = arguments?.getString("category") - mSearchPresenter = CategoryPresenter(this) - lifecycle.addObserver(mSearchPresenter) - cmds = ArrayList() - } - - override fun getLayoutId(): Int { - return R.layout.fragment_search_category - } - - override fun onViewCreated( - view: View, - savedInstanceState: Bundle? - ) { - super.onViewCreated(view, savedInstanceState) - mAdapter = SearchCategoryAdapter(activity, ArrayList()) - - rv_search_result.layoutManager = - LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false) - - rv_search_result.adapter = mAdapter - - et_navi_search.setText(category) - - - iv_navi_back.setOnClickListener { - SearchServiceHolder.fragmentManager.pop() + private fun goPath() { + mAdapter.currentItem?.let { + AddressManager.calculatePath(mAdapter.currentItem.point) + } } - tv_navi_navi.setOnClickListener { + private fun updateMarker(moveToCenter:Boolean = true) { - goPath() - } - mAdapter.setOnClickListener { - var position = it.getTag(R.id.tag_position) as Int - mAdapter.setCurrent(position) - updateMarker() + addMarkers?.get(mAdapter.lastPosition)?.setIcon(getMarkerIcon(mAdapter.lastPosition)) + var current = addMarkers?.get(mAdapter.current) + current?.setIcon(getMarkerIcon(mAdapter.current)) + current?.setToTop() + arrayList.get(mAdapter.lastPosition).icon(getMarkerIcon(mAdapter.lastPosition)) + arrayList.get(mAdapter.current).icon(getMarkerIcon(mAdapter.current)) + if (moveToCenter) { + SearchServiceHolder.statusManager.setUserInteractionStatus(TAG, true, false) + SearchServiceHolder.getMapUIController().moveToCenter(current.position) + } } - AIAssist.getInstance(context) - .registerUnWakeupCommand("back", arrayOf("关闭", "返回"), this) + private fun getMarkerIcon(index: Int): Bitmap { + var decodeResource = BitmapFactory.decodeResource( + resources, + if (mAdapter.current == index) R.mipmap.icon_search_category_checked else R.mipmap.icon_search_category_unchecked + ) - } - - private fun goPath() { - mAdapter.currentItem?.let { - AddressManager.calculatePath(mAdapter.currentItem.point) + var createWaterMask = BitmapUtils.createWaterMask( + context, decodeResource, (index + 1).toString(), R.color.white, 18 + ) + return createWaterMask } - } - private fun updateMarker() { - - addMarkers?.get(mAdapter.lastPosition) - ?.setIcon(getMarkerIcon(mAdapter.lastPosition)) - var current = addMarkers?.get(mAdapter.current) - current?.setIcon(getMarkerIcon(mAdapter.current)) - current?.setToTop() - arrayList.get(mAdapter.lastPosition) - .icon(getMarkerIcon(mAdapter.lastPosition)) - arrayList.get(mAdapter.current) - .icon(getMarkerIcon(mAdapter.current)) - } - - private fun getMarkerIcon(index: Int): Bitmap { - var decodeResource = - BitmapFactory.decodeResource( - resources, - if (mAdapter.current == index) R.mipmap.icon_search_category_checked else R.mipmap.icon_search_category_unchecked - ) - - var createWaterMask = - BitmapUtils.createWaterMask( - context, decodeResource, (index + 1).toString(), R.color.white, 18 - ) - return createWaterMask - } - - override fun onActivityCreated(savedInstanceState: Bundle?) { - super.onActivityCreated(savedInstanceState) - mSearchPresenter.startSearchLocalPoiByInput(category) - } - - override fun onDestroyView() { - super.onDestroyView() - mSearchPresenter.onDestroy(viewLifecycleOwner) - lifecycle.removeObserver(mSearchPresenter) - SearchServiceHolder.getMarkerManger() - .removeMarkers(TAG) - - unRegisterVoice() - } - - private fun unRegisterVoice() { - cmds.forEach { - AIAssist.getInstance(context) - .unregisterUnWakeupCommand(it) + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + mSearchPresenter.startSearchLocalPoiByInput(category) } - } - override fun onDestroy() { - super.onDestroy() - } + override fun onDestroyView() { + super.onDestroyView() + mSearchPresenter.onDestroy(viewLifecycleOwner) + lifecycle.removeObserver(mSearchPresenter) + SearchServiceHolder.getMarkerManger().removeMarkers(TAG) - companion object { - fun newInstance(category: String): Fragment { - MapCenterPointStrategy.setMapCenterPointByScene(SearchServiceHolder.getMapUIController(), Scene.CATEGORY_SEARCH) - var bundle = Bundle() - bundle.putString("category", category) - var categorySerachFragment = CategorySearchFragment() - categorySerachFragment.arguments = bundle - return categorySerachFragment + unRegisterVoice() + } + + private fun unRegisterVoice() { + cmds.forEach { + AIAssist.getInstance(context).unregisterUnWakeupCommand(it) + } + } + + override fun onDestroy() { + super.onDestroy() + } + + companion object { + fun newInstance(category: String): Fragment { + MapCenterPointStrategy.setMapCenterPointByScene(SearchServiceHolder.getMapUIController(), Scene.CATEGORY_SEARCH) + var bundle = Bundle() + bundle.putString("category", category) + var categorySerachFragment = CategorySearchFragment() + categorySerachFragment.arguments = bundle + return categorySerachFragment + } } - } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt index 07d9b1c445..ac06e82a34 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt @@ -9,6 +9,7 @@ import android.widget.SeekBar import android.widget.SeekBar.OnSeekBarChangeListener import com.alibaba.android.arouter.facade.annotation.Route import com.mogo.commons.debug.DebugConfig +import com.mogo.commons.voice.AIAssist import com.mogo.map.constants.BroadcastMode import com.mogo.map.uicontroller.EnumMapUI import com.mogo.module.common.MogoModulePaths @@ -79,9 +80,6 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - iv_back.setOnClickListener { - SearchServiceHolder.fragmentManager.pop() - } initViews() initEvent() EventBus.getDefault().register(this) @@ -101,7 +99,8 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { rb_navi_auto.isChecked = SettingManager.mapType == R.id.rb_navi_auto rb_navi_detail.isChecked = SettingManager.voiceStyle == R.id.rb_navi_detail rb_navi_draft.isChecked = SettingManager.voiceStyle == R.id.rb_navi_draft - + aimlessModeClose.isChecked = SettingManager.getAimlessMode() == aimlessModeClose.id + aimlessModeOpen.isChecked = SettingManager.getAimlessMode() == aimlessModeOpen.id updateHome() updateCompany() @@ -109,6 +108,9 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { } private fun initEvent() { + rl_navi_setting_title.setOnClickListener { + SearchServiceHolder.fragmentManager.pop() + } iv_sound_plus.setOnClickListener { VolumeManager.getInstance(context).incVolume() sb_navi_volume_progress.progress = sb_navi_volume_progress.progress.plus(10) @@ -177,6 +179,21 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { } } + aimlessModeGroup.setOnCheckedChangeListener { group, checkedId -> + + SettingManager.setAimlessMode(checkedId) + when (checkedId){ + R.id.aimlessModeClose -> { + SearchServiceHolder.getNavi().setAimlessModeStatus(false) + AIAssist.getInstance(mContext).speakTTSVoice("已为您关闭巡航模式") + } + R.id.aimlessModeOpen -> { + SearchServiceHolder.getNavi().setAimlessModeStatus(true) + AIAssist.getInstance(mContext).speakTTSVoice("已为您开启巡航模式") + } + } + } + tv_navi_clear_home_address.setOnClickListener { AddressManager.deleteHome(context!!) diff --git a/modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml b/modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml index 1c4a00bfa9..821c7aafa5 100644 --- a/modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml +++ b/modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml @@ -313,6 +313,47 @@ + + + + + + + + + + + diff --git a/modules/mogo-module-search/src/main/res/layout/fragment_search_category.xml b/modules/mogo-module-search/src/main/res/layout/fragment_search_category.xml index 1b2b1d6786..10e1904bb2 100644 --- a/modules/mogo-module-search/src/main/res/layout/fragment_search_category.xml +++ b/modules/mogo-module-search/src/main/res/layout/fragment_search_category.xml @@ -125,7 +125,8 @@ android:layout_height="wrap_content" android:layout_weight="1" android:ellipsize="end" - + android:enabled="false" + android:inputType="none" android:textSize="@dimen/module_search_et_text_size" android:imeOptions="actionDone" android:hint="@string/hint_map_search" diff --git a/modules/mogo-module-search/src/main/res/values/strings.xml b/modules/mogo-module-search/src/main/res/values/strings.xml index 7ecb774534..469b899192 100644 --- a/modules/mogo-module-search/src/main/res/values/strings.xml +++ b/modules/mogo-module-search/src/main/res/values/strings.xml @@ -42,4 +42,7 @@ 日夜模式 设置刷新帧率 清空历史记录,确定还是取消 + 巡航播报设置 + 开启 + 关闭 diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java index 7d843891ca..089851d54e 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java @@ -82,6 +82,10 @@ public class MarkerServiceHandler { mMapMarkerManager.init( context ); } + public static IMogoServiceApis getApis(){ + return mApis; + } + public static IMogoMapService getMapService() { return mMapService; } 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 b1c9b4c84b..a4f9a98b66 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 @@ -8,7 +8,6 @@ import android.location.LocationManager; import android.os.Handler; import android.os.Looper; import android.os.Message; -import android.os.Trace; import android.text.TextUtils; import android.util.Log; import android.view.MotionEvent; @@ -37,6 +36,7 @@ import com.mogo.module.common.MogoModulePaths; import com.mogo.module.common.map.MapCenterPointStrategy; import com.mogo.module.common.map.Scene; import com.mogo.module.service.carinfo.CarStateInfo; +import com.mogo.module.service.intent.IntentHandlerFactory; import com.mogo.module.service.marker.MapMarkerManager; import com.mogo.module.service.network.RefreshCallback; import com.mogo.module.service.network.RefreshModel; @@ -44,6 +44,7 @@ import com.mogo.module.service.receiver.MogoReceiver; import com.mogo.module.service.refresh.AutoRefreshStrategy; import com.mogo.module.service.refresh.CustomRefreshStrategy; import com.mogo.module.service.refresh.RefreshObject; +import com.mogo.module.service.strategy.CarIconDisplayStrategy; import com.mogo.service.adas.IMogoADASController; import com.mogo.service.cardmanager.IMogoCardManager; import com.mogo.service.fragmentmanager.FragmentStackTransactionListener; @@ -58,13 +59,11 @@ import com.mogo.service.module.MogoAction; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.service.statusmanager.StatusDescriptor; -import com.mogo.utils.AppUtils; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.WorkThreadHandler; import com.mogo.utils.logger.Logger; import com.mogo.utils.network.utils.GsonUtil; -import org.json.JSONException; import org.json.JSONObject; import java.util.List; @@ -207,8 +206,7 @@ public class MogoServices implements IMogoMapListener, mUiController.setLockZoom( ServiceConst.DEFAULT_LOCK_CAR_ZOOM_LEVEL ); mStatusManager.setUserInteractionStatus( TAG, true, false ); mUiController.recoverLockMode(); - notifyRefreshData( mLastAutoRefreshLocation, - ServiceConst.DEFAULT_AUTO_REFRESH_DATA_RADIUS, mAutoRefreshCallback ); + notifyRefreshData( mLastAutoRefreshLocation, ServiceConst.DEFAULT_AUTO_REFRESH_DATA_RADIUS, mAutoRefreshCallback ); } }; private Context mContext; @@ -508,6 +506,8 @@ public class MogoServices implements IMogoMapListener, return; } + Logger.d( TAG, "mLastZoomLevel = %s, zoom = %s", mLastZoomLevel, zoom ); + // 手动刷新触发 if ( mLastZoomLevel - zoom > mCustomRefreshStrategy.getZoomOutLevel() ) { // 缩放级别缩小 @@ -522,6 +522,7 @@ public class MogoServices implements IMogoMapListener, msg.what = ServiceConst.MSG_MAP_CHANGED; msg.obj = new RefreshObject( mCustomRefreshCallback, getQueryRadius(), latLng, 0 ); mThreadHandler.sendMessage( msg ); + Logger.d( TAG, "平移触发" ); } } @@ -539,7 +540,6 @@ public class MogoServices implements IMogoMapListener, */ private boolean invokeRefreshWhenTranslationByUser( MogoLatLng latLng ) { try { - Trace.beginSection( "timer.invokeRefreshWhenTranslationByUser" ); float factor = 0.0f; if ( mIsVertical ) { factor = getMapCameraFactWidth(); @@ -550,7 +550,7 @@ public class MogoServices implements IMogoMapListener, return false; } float distance = Utils.calculateLineDistance( latLng, mLastCustomRefreshCenterLocation ); - Trace.endSection(); + Logger.d( TAG, "move distance = %s, factor = %s", distance, factor ); return distance > factor; } catch ( Exception e ) { Logger.e( TAG, e, "warming. " ); @@ -669,17 +669,18 @@ public class MogoServices implements IMogoMapListener, } break; case SEEK_HELPING: + CarIconDisplayStrategy.getInstance().changeCarIconStatus( mUiController, isTrue ); notifySeekHelpingStatusChanged( isTrue ); break; } } - private void notifySeekHelpingStatusChanged( boolean open ) { + private void notifySeekHelpingStatusChanged( boolean seekHelpingStatus ) { Intent intent = new Intent( "com.mogo.launcher.adas.app" ); try { JSONObject data = new JSONObject(); data.put( "object", "辅助驾驶" ); - data.put( "action", open ? "2" : "1" ); + data.put( "action", seekHelpingStatus ? "2" : "1" ); data.put( "des", "自身故障报警" ); data.put( "v2x_warning_type", "20007" );// 后台返回 intent.putExtra( "data", data.toString() ); @@ -787,33 +788,14 @@ public class MogoServices implements IMogoMapListener, } } else if ( ServiceConst.COMMAND_NEXT.equals( command ) ) { if ( mStatusManager.isMainPageOnResume() ) { - mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(), - MogoAction.Next ); + mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(), MogoAction.Next ); } } else if ( ServiceConst.COMMAND_PREVIOUS.equals( command ) ) { if ( mStatusManager.isMainPageOnResume() ) { - mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(), - MogoAction.Prev ); + mActionManager.invoke( MapMarkerManager.getInstance().getCurrentModuleName(), MogoAction.Prev ); } } else if ( ServiceConst.COMMAND_SWITCH_CARD.equals( command ) ) { - String data = intent.getStringExtra( "data" ); - try { - JSONObject jsonObject = new JSONObject( data ); - String card = jsonObject.getString( "card" ); - if ( TextUtils.equals( "多媒体卡片", card ) - || TextUtils.equals( "媒体中心卡片", card ) - || TextUtils.equals( "音乐卡片", card ) ) { - switchCard2( ServiceConst.CARD_TYPE_SHARE_MUSIC ); - } else if ( TextUtils.equals( "探路卡片", card ) ) { - switchCard2( ServiceConst.CARD_TYPE_ROAD_CONDITION ); - } else if ( TextUtils.equals( "在线车辆卡片", card ) ) { - switchCard2( ServiceConst.CARD_TYPE_USER_DATA ); - } else if ( TextUtils.equals( "新鲜事卡片", card ) ) { - switchCard2( ServiceConst.CARD_TYPE_NOVELTY ); - } - } catch ( JSONException e ) { - e.printStackTrace(); - } + IntentHandlerFactory.getInstance().handle( mContext, command, intent ); } else if ( MogoReceiver.ACTION_ADAS_STATUS.equals( command ) ) { String msg = intent.getStringExtra( "adasMsg" ); if ( TextUtils.isEmpty( msg ) ) { @@ -825,62 +807,14 @@ public class MogoServices implements IMogoMapListener, // changeMyLocation( stateInfo.getValues() ); } } else if ( ServiceConst.COMMAND_OPERATION.equals( command ) ) { - try { - JSONObject object = new JSONObject( intent.getStringExtra( "data" ) ); - String app = object.optString( "object" ); - String operation = object.optString( "operation" ); - if ( TextUtils.equals( app, "车聊聊" ) ) { - if ( TextUtils.equals( "打开", operation ) ) { - switchCard2( ServiceConst.CARD_TYPE_CARS_CHATTING ); - } - } else { - if ( TextUtils.equals( app, "探路" ) ) { - if ( TextUtils.equals( "打开", operation ) ) { - switchCard2( ServiceConst.CARD_TYPE_ROAD_CONDITION ); - } - } - } - } catch ( JSONException e ) { - e.printStackTrace(); - } + IntentHandlerFactory.getInstance().handle( mContext, command, intent ); } else if ( MogoReceiver.ACTION_VOICE_READY.equals( command ) ) { AIAssist.getInstance( mContext ).flush(); mStatusManager.setAIAssistReady( TAG, true ); } else if ( ServiceConst.COMMAND_MY_LOCATION.equals( command ) ) { - if ( mStatusManager.isSearchUIShow() ) { - return; - } - if ( mStatusManager.isMainPageOnResume() ) { - mUiController.recoverLockMode(); - } + IntentHandlerFactory.getInstance().handle( mContext, command, intent ); } else if ( MogoReceiver.ACTION_MOCK.equals( command ) ) { - final int oper = intent.getIntExtra( "oper", -1 ); - switch ( oper ) { - case 1: - mUiController.showMyLocation( true ); - break; - } - } - } - - /** - * 切换卡片 - */ - private void switchCard2( String card ) { - if ( AppUtils.isApplicationBroughtToBackground( mContext ) ) { - mLauncher.backToLauncher( mContext ); - UiThreadHandler.postDelayed( () -> { - if ( mStatusManager.isADASShow() ) { - mADASController.closeADAS(); - } - mCardManager.switch2( card, true ); - }, 2000L ); - } else { - mFragmentManager.clearAll(); - if ( mStatusManager.isADASShow() ) { - mADASController.closeADAS(); - } - mCardManager.switch2( card, true ); + IntentHandlerFactory.getInstance().handle( mContext, command, intent ); } } @@ -894,11 +828,13 @@ public class MogoServices implements IMogoMapListener, if ( !mStatusManager.isMainPageOnResume() ) { return; } + if ( mStatusManager.isSeekHelping() ) { + return; + } if ( mUiController.getCurrentUiMode() != EnumMapUI.NorthUP_2D ) { return; } UiThreadHandler.post( () -> { - mUiController.showMyLocation( inflateCursorView( degree ) ); } ); } 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 10250b21ab..967f8e7155 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 @@ -78,7 +78,7 @@ public class ServiceConst { public static final int DEFAULT_LOCK_CAR_ZOOM_LEVEL = 16; /** - * 自动酸辛默认半径 + * 自动刷新默认半径 */ public static final int DEFAULT_AUTO_REFRESH_DATA_RADIUS = 2_000; diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/AppOperationIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/AppOperationIntentHandler.java new file mode 100644 index 0000000000..66ca68b304 --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/AppOperationIntentHandler.java @@ -0,0 +1,41 @@ +package com.mogo.module.service.intent; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; + +import com.mogo.module.service.ServiceConst; + +import org.json.JSONException; +import org.json.JSONObject; + +/** + * @author congtaowang + * @since 2020-04-17 + *

+ * 描述 + */ +public class AppOperationIntentHandler implements IntentHandler { + + @Override + public void handle( Context context, Intent intent ) { + try { + JSONObject object = new JSONObject( intent.getStringExtra( "data" ) ); + String app = object.optString( "object" ); + String operation = object.optString( "operation" ); + if ( TextUtils.equals( app, "车聊聊" ) ) { + if ( TextUtils.equals( "打开", operation ) ) { + SwitchCardIntentHandler.switchCard2( context, ServiceConst.CARD_TYPE_CARS_CHATTING ); + } + } else { + if ( TextUtils.equals( app, "探路" ) ) { + if ( TextUtils.equals( "打开", operation ) ) { + SwitchCardIntentHandler.switchCard2( context, ServiceConst.CARD_TYPE_ROAD_CONDITION ); + } + } + } + } catch ( JSONException e ) { + e.printStackTrace(); + } + } +} diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/EmptyIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/EmptyIntentHandler.java new file mode 100644 index 0000000000..64d6edd24a --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/EmptyIntentHandler.java @@ -0,0 +1,22 @@ +package com.mogo.module.service.intent; + +import android.content.Context; +import android.content.Intent; + +import com.mogo.utils.logger.Logger; + +/** + * @author congtaowang + * @since 2020-04-17 + *

+ * 描述 + */ +public class EmptyIntentHandler implements IntentHandler { + + private static final String TAG = "EmptyIntentHandler"; + + @Override + public void handle( Context context, Intent intent ) { + Logger.w( TAG, "空实现." ); + } +} diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandler.java new file mode 100644 index 0000000000..cf040875d5 --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandler.java @@ -0,0 +1,15 @@ +package com.mogo.module.service.intent; + +import android.content.Context; +import android.content.Intent; + +/** + * @author congtaowang + * @since 2020-04-17 + *

+ * 描述 + */ +public interface IntentHandler { + + void handle( Context context, Intent intent ); +} diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandlerFactory.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandlerFactory.java new file mode 100644 index 0000000000..fbba17c7b6 --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/IntentHandlerFactory.java @@ -0,0 +1,59 @@ +package com.mogo.module.service.intent; + +import android.content.Context; +import android.content.Intent; + +import com.mogo.module.service.ServiceConst; +import com.mogo.module.service.receiver.MogoReceiver; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author congtaowang + * @since 2020-04-17 + *

+ * 描述 + */ +public class IntentHandlerFactory { + + private IntentHandlerFactory() { + // private constructor + mHandlers.put( MogoReceiver.ACTION_MOCK, new MockIntentHandler() ); + mHandlers.put( ServiceConst.COMMAND_SWITCH_CARD, new SwitchCardIntentHandler() ); + mHandlers.put( ServiceConst.COMMAND_OPERATION, new AppOperationIntentHandler() ); + mHandlers.put( ServiceConst.COMMAND_MY_LOCATION, new MyLocationHandler() ); + } + + private static final class InstanceHolder { + private static final IntentHandlerFactory INSTANCE = new IntentHandlerFactory(); + } + + public static IntentHandlerFactory getInstance() { + return InstanceHolder.INSTANCE; + } + + private Object readResolve() { + // 阻止反序列化,必须实现 Serializable 接口 + return InstanceHolder.INSTANCE; + } + + private Map< String, IntentHandler > mHandlers = new HashMap<>(); + + private IntentHandler DEFAULT = new EmptyIntentHandler(); + + private IntentHandler getIntentHandler( String intent ) { + if ( mHandlers.containsKey( intent ) && mHandlers.get( intent ) != null ) { + return mHandlers.get( intent ); + } + return DEFAULT; + } + + public void handle( Context context, String intent, Intent obj ) { + IntentHandler handler = getIntentHandler( intent ); + if ( handler != null ) { + handler.handle( context, obj ); + } + } + +} diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java new file mode 100644 index 0000000000..cc1ccbd4fa --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java @@ -0,0 +1,65 @@ +package com.mogo.module.service.intent; + +import android.content.Context; +import android.content.Intent; +import android.graphics.Color; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import com.mogo.commons.debug.DebugConfig; +import com.mogo.module.service.MarkerServiceHandler; +import com.mogo.service.entrance.ButtonIndex; +import com.mogo.utils.TipToast; + +/** + * @author congtaowang + * @since 2020-04-17 + *

+ * 描述 + */ +public class MockIntentHandler implements IntentHandler { + + private static final String TAG = "MockIntentHandler"; + + @Override + public void handle( Context context, Intent intent ) { + if ( !DebugConfig.isDebug() ) { + return; + } + + final int oper = intent.getIntExtra( "oper", -1 ); + switch ( oper ) { + case 1: + MarkerServiceHandler.getMapUIController().showMyLocation( true ); + break; + case 2: + boolean status = intent.getBooleanExtra( "status", false ); + MarkerServiceHandler.getMogoStatusManager().setSeekHelping( TAG, status ); + break; + case 3: + String msg = intent.getStringExtra( "msg" ); + if ( !TextUtils.isEmpty( msg ) ) { + TipToast.shortTip( msg ); + } + break; + case 4: + TextView button1 = MarkerServiceHandler.getApis().getEntranceButtonController().getButton( ButtonIndex.BUTTON1 ); + if ( button1 != null ) { + button1.setVisibility( View.VISIBLE ); + button1.setBackgroundColor( Color.RED ); + button1.setOnClickListener( view -> { + TipToast.shortTip( "测试" ); + } ); + } + break; + case 5: + TextView button2 = MarkerServiceHandler.getApis().getEntranceButtonController().getButton( ButtonIndex.BUTTON1 ); + if ( button2 != null ) { + button2.setOnClickListener( null ); + button2.setVisibility( View.GONE ); + } + break; + } + } +} diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MyLocationHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MyLocationHandler.java new file mode 100644 index 0000000000..4504dd7e01 --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MyLocationHandler.java @@ -0,0 +1,31 @@ +package com.mogo.module.service.intent; + +import android.content.Context; +import android.content.Intent; + +import com.mogo.module.service.MarkerServiceHandler; +import com.mogo.utils.UiThreadHandler; + +/** + * @author congtaowang + * @since 2020-04-17 + *

+ * 语音指令:定位我的位置等处理 + */ +public class MyLocationHandler implements IntentHandler { + + @Override + public void handle( Context context, Intent intent ) { + if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) { + return; + } + if ( MarkerServiceHandler.getMogoStatusManager().isMainPageOnResume() ) { + MarkerServiceHandler.getMapUIController().recoverLockMode(); + } else { + MarkerServiceHandler.getLauncher().backToLauncher( context ); + UiThreadHandler.postDelayed( () -> { + MarkerServiceHandler.getMapUIController().recoverLockMode(); + }, 2_000L ); + } + } +} diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/SwitchCardIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/SwitchCardIntentHandler.java new file mode 100644 index 0000000000..1c3e56567a --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/SwitchCardIntentHandler.java @@ -0,0 +1,65 @@ +package com.mogo.module.service.intent; + +import android.content.Context; +import android.content.Intent; +import android.text.TextUtils; + +import com.mogo.module.service.MarkerServiceHandler; +import com.mogo.module.service.ServiceConst; +import com.mogo.utils.AppUtils; +import com.mogo.utils.UiThreadHandler; + +import org.json.JSONException; +import org.json.JSONObject; + +/** + * @author congtaowang + * @since 2020-04-17 + *

+ * 描述 + */ +public class SwitchCardIntentHandler implements IntentHandler { + + @Override + public void handle( Context context, Intent intent ) { + String data = intent.getStringExtra( "data" ); + try { + JSONObject jsonObject = new JSONObject( data ); + String card = jsonObject.getString( "card" ); + if ( TextUtils.equals( "多媒体卡片", card ) + || TextUtils.equals( "媒体中心卡片", card ) + || TextUtils.equals( "音乐卡片", card ) ) { + switchCard2( context, ServiceConst.CARD_TYPE_SHARE_MUSIC ); + } else if ( TextUtils.equals( "探路卡片", card ) ) { + switchCard2( context, ServiceConst.CARD_TYPE_ROAD_CONDITION ); + } else if ( TextUtils.equals( "在线车辆卡片", card ) ) { + switchCard2( context, ServiceConst.CARD_TYPE_USER_DATA ); + } else if ( TextUtils.equals( "新鲜事卡片", card ) ) { + switchCard2( context, ServiceConst.CARD_TYPE_NOVELTY ); + } + } catch ( JSONException e ) { + e.printStackTrace(); + } + } + + /** + * 切换卡片 + */ + public static void switchCard2( Context context, String card ) { + if ( AppUtils.isApplicationBroughtToBackground( context ) ) { + MarkerServiceHandler.getLauncher().backToLauncher( context ); + UiThreadHandler.postDelayed( () -> { + if ( MarkerServiceHandler.getMogoStatusManager().isADASShow() ) { + MarkerServiceHandler.getADASController().closeADAS(); + } + MarkerServiceHandler.getMogoCardManager().switch2( card, true ); + }, 2000L ); + } else { + MarkerServiceHandler.getFragmentManager().clearAll(); + if ( MarkerServiceHandler.getMogoStatusManager().isADASShow() ) { + MarkerServiceHandler.getADASController().closeADAS(); + } + MarkerServiceHandler.getMogoCardManager().switch2( card, true ); + } + } +} diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index 08304c9da5..2828c1b12c 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -12,7 +12,6 @@ import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.marker.IMogoMarkerManager; import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.map.marker.MogoMarkersHandler; -import com.mogo.module.common.entity.MarkerCarPois; import com.mogo.module.common.entity.MarkerCardResult; import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.MarkerLocation; @@ -25,8 +24,6 @@ import com.mogo.module.common.entity.MarkerShowEntity; import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.ServiceConst; import com.mogo.module.service.Utils; -import com.mogo.module.service.network.RefreshCallback; -import com.mogo.module.service.network.RefreshModel; import com.mogo.module.service.utils.ViewUtils; import com.mogo.service.cardmanager.IMogoCardChangedListener; import com.mogo.service.connection.IMogoOnMessageListener; @@ -52,7 +49,8 @@ import java.util.Map; * version: 1.0 */ public class MapMarkerManager implements IMogoMarkerClickListener, - IMogoOnMessageListener, IMogoCardChangedListener, + IMogoOnMessageListener< MarkerResponse >, + IMogoCardChangedListener, IMogoBizActionDoneListener { private static final String TAG = "MapMarkerManager"; // 是否选中在线卡片及气泡,语音搜索触发 @@ -65,25 +63,20 @@ public class MapMarkerManager implements IMogoMarkerClickListener, private String mCurrentModuleName = ServiceConst.CARD_TYPE_BUSINESS_OPERATION; // 记录其它已经缩小的Marker - public ArrayList alreadySmallMarker = new ArrayList<>(); - // 存储所有汽车marker - public ArrayList carMarkers = new ArrayList<>(); + public ArrayList< String > alreadySmallMarker = new ArrayList<>(); // 距离用户最近的Marker private IMogoMarker mNearlyMarker = null; // 记录上次请求数据,切换卡片时做数据处理 private MarkerCardResult mLastDataResult; private boolean mIsMarkerClicked = false; - private RefreshModel mRefreshModel; - private MogoLatLng mCarLatLng; - private int mCarSmoothDuration = 5; private MapMarkerManager() { } public static synchronized MapMarkerManager getInstance() { - synchronized (MapMarkerManager.class) { - if (mMarkerManager == null) { + synchronized ( MapMarkerManager.class ) { + if ( mMarkerManager == null ) { mMarkerManager = new MapMarkerManager(); } } @@ -96,38 +89,36 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param context */ - public void init(Context context) { + public void init( Context context ) { mContext = context; - mRefreshModel = new RefreshModel(mContext); - // 长连接 - MarkerServiceHandler.getMogoSocketManager().registerOnMessageListener(401001, this); - MarkerServiceHandler.getMogoCardManager().registerCardChangedListener( - "LAUNCHER_MARKER_MODULE", this); - MarkerServiceHandler.getActionManager().registerBizActionDoneListener(this); + MarkerServiceHandler.getMogoSocketManager().registerOnMessageListener( 401001, this ); + MarkerServiceHandler.getMogoCardManager().registerCardChangedListener( "LAUNCHER_MARKER_MODULE", this ); + MarkerServiceHandler.getActionManager().registerBizActionDoneListener( this ); } // ACC ON 的时候重置为true,ACC OFF 设置为 false // 保留 - 外部模块调用 - public void setCheckOn(boolean checkOnLineData) { - Logger.e(TAG, "do not invoke anymore."); + public void setCheckOn( boolean checkOnLineData ) { + Logger.e( TAG, "do not invoke anymore." ); } @Override - public void onSwitched(int position, String moduleName) { - Logger.d(TAG, "当前C位卡片:" + moduleName); - if ((TextUtils.isEmpty(mCurrentModuleName) || TextUtils.equals(mCurrentModuleName, - ServiceConst.CARD_TYPE_BUSINESS_OPERATION)) && mIsMarkerClicked) { + public void onSwitched( int position, String moduleName ) { + Logger.d( TAG, "当前C位卡片:" + moduleName ); + if ( ( TextUtils.isEmpty( mCurrentModuleName ) + || TextUtils.equals( mCurrentModuleName, ServiceConst.CARD_TYPE_BUSINESS_OPERATION ) ) + && mIsMarkerClicked ) { mIsMarkerClicked = false; // 在广告位(默认位置)点击marker造成卡片切换的,还是现实全部marker 【需求:os2.0.2-2.5-4】 - highlightedMarker(moduleName, false); + highlightedMarker( moduleName, false ); mCurrentModuleName = moduleName; } else { mCurrentModuleName = moduleName; - runOnTargetThread(() -> { + runOnTargetThread( () -> { MarkerServiceHandler.getMarkerManager().removeMarkers(); - drawMarkerByCurrentType(mLastDataResult); - }); + drawMarkerByCurrentType( mLastDataResult ); + } ); } } @@ -135,58 +126,58 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * 地图上的Marker点击回调 */ @Override - public boolean onMarkerClicked(IMogoMarker marker) { + public boolean onMarkerClicked( IMogoMarker marker ) { mIsMarkerClicked = true; - Logger.d(TAG, "onMarkerClicked 点击了大而全中的Marker:" + marker); + Logger.d( TAG, "onMarkerClicked 点击了大而全中的Marker:" + marker ); try { - boolean result = switchMarkerOpenStatus(marker); - if (!result) { + boolean result = switchMarkerOpenStatus( marker ); + if ( !result ) { return false; } // 数据统计代码 - final Map properties = new HashMap<>(); - switch (mLastCheckMarker.getOwner()) { + final Map< String, Object > properties = new HashMap<>(); + switch ( mLastCheckMarker.getOwner() ) { case ServiceConst.CARD_TYPE_CARS_CHATTING: - properties.put("type", 3); + properties.put( "type", 3 ); break; case ServiceConst.CARD_TYPE_USER_DATA: - properties.put("type", 5); + properties.put( "type", 5 ); break; case ServiceConst.CARD_TYPE_ROAD_CONDITION: - properties.put("type", 2); + properties.put( "type", 2 ); break; case ServiceConst.CARD_TYPE_NOVELTY: - MarkerShowEntity showEntity = (MarkerShowEntity) mLastCheckMarker.getObject(); + MarkerShowEntity showEntity = ( MarkerShowEntity ) mLastCheckMarker.getObject(); Object bindObj = showEntity.getBindObj(); - if (bindObj instanceof MarkerNoveltyInfo) { - switch (((MarkerNoveltyInfo) bindObj).getPoiType()) { + if ( bindObj instanceof MarkerNoveltyInfo ) { + switch ( ( ( MarkerNoveltyInfo ) bindObj ).getPoiType() ) { case MarkerPoiTypeEnum.GAS_STATION: - properties.put("type", 4); + properties.put( "type", 4 ); break; case MarkerPoiTypeEnum.TRAFFIC_CHECK: - properties.put("type", 8); + properties.put( "type", 8 ); break; case MarkerPoiTypeEnum.ROAD_CLOSED: - properties.put("type", 7); + properties.put( "type", 7 ); break; case MarkerPoiTypeEnum.SHOP_DISCOUNT: - properties.put("type", 9); + properties.put( "type", 9 ); break; case MarkerPoiTypeEnum.FOURS_4S: - properties.put("type", 10); + properties.put( "type", 10 ); break; } } break; case ServiceConst.CARD_TYPE_SHARE_MUSIC: - properties.put("type", 6); + properties.put( "type", 6 ); break; } - MarkerServiceHandler.getMogoAnalytics().track("Launcher_Icon_Click", properties); + MarkerServiceHandler.getMogoAnalytics().track( "Launcher_Icon_Click", properties ); - } catch (Exception e) { + } catch ( Exception e ) { e.printStackTrace(); } return false; @@ -198,103 +189,99 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param marker * @return */ - private boolean switchMarkerOpenStatus(IMogoMarker marker) { - if (mLastCheckMarker != null) { + private boolean switchMarkerOpenStatus( IMogoMarker marker ) { + if ( mLastCheckMarker != null ) { // 判断点击的是否是同一个 - if (marker.equals(mLastCheckMarker)) { - Logger.d(TAG, "onMarkerClicked 与上一次点击的Marker一样,不做处理:" + marker); + if ( marker.equals( mLastCheckMarker ) ) { + Logger.d( TAG, "onMarkerClicked 与上一次点击的Marker一样,不做处理:" + marker ); return false; } // 将上次选中 Marker 设置为未选中状态 - closeMarker(mLastCheckMarker); + closeMarker( mLastCheckMarker ); } // 将当前的Marker设置为选中 - openMarker(marker); + openMarker( marker ); return true; } // 对指定类型高亮处理 - public synchronized void highlightedMarker(final String typeTag) { - highlightedMarker(typeTag, false); + public synchronized void highlightedMarker( final String typeTag ) { + highlightedMarker( typeTag, false ); } - public synchronized void highlightedMarker(final String typeTag, final boolean netDataRefresh) { + public synchronized void highlightedMarker( final String typeTag, final boolean netDataRefresh ) { try { - Logger.e(TAG, "上一次选中的卡片类型:mCurrentModuleName==" + mCurrentModuleName); - if (!TextUtils.isEmpty(mCurrentModuleName) && TextUtils.equals(mCurrentModuleName, - typeTag) && !netDataRefresh) { + Logger.e( TAG, "上一次选中的卡片类型:mCurrentModuleName==" + mCurrentModuleName ); + if ( !TextUtils.isEmpty( mCurrentModuleName ) && TextUtils.equals( mCurrentModuleName, typeTag ) && !netDataRefresh ) { return; } // 从已经缩小的记录删除 - alreadySmallMarker.remove(typeTag); - List currentHighLightList = - MarkerServiceHandler.getMarkerManager().getMarkers(typeTag); + alreadySmallMarker.remove( typeTag ); + List< IMogoMarker > currentHighLightList = MarkerServiceHandler.getMarkerManager().getMarkers( typeTag ); - if (currentHighLightList == null || currentHighLightList.size() == 0) { + if ( currentHighLightList == null || currentHighLightList.size() == 0 ) { alreadySmallMarker.clear(); // 放大所有的气泡 - Map> lastHighLightList = - MarkerServiceHandler.getMarkerManager().getAllMarkers(); - for (String markerName : lastHighLightList.keySet()) { - setMarkersBig(lastHighLightList.get(markerName)); + Map< String, List< IMogoMarker > > lastHighLightList = MarkerServiceHandler.getMarkerManager().getAllMarkers(); + for ( String markerName : lastHighLightList.keySet() ) { + setMarkersBig( lastHighLightList.get( markerName ) ); } } else { // 缩小其他的气泡 - Map> lastHighLightList = - MarkerServiceHandler.getMarkerManager().getAllMarkers(); - for (String markerName : lastHighLightList.keySet()) { - if (!markerName.equals(typeTag)) { - if (!alreadySmallMarker.contains(markerName)) { - alreadySmallMarker.add(markerName); - setMarkersSmall(lastHighLightList.get(markerName)); + Map< String, List< IMogoMarker > > lastHighLightList = MarkerServiceHandler.getMarkerManager().getAllMarkers(); + for ( String markerName : lastHighLightList.keySet() ) { + if ( !markerName.equals( typeTag ) ) { + if ( !alreadySmallMarker.contains( markerName ) ) { + alreadySmallMarker.add( markerName ); + setMarkersSmall( lastHighLightList.get( markerName ) ); } } } // 将当前卡片选中的气泡放大 - setMarkersBig(currentHighLightList); + setMarkersBig( currentHighLightList ); } - } catch (Exception e) { + } catch ( Exception e ) { e.printStackTrace(); } } - private static void setMarkersBig(List markers) { - if (markers == null || markers.isEmpty()) { + private static void setMarkersBig( List< IMogoMarker > markers ) { + if ( markers == null || markers.isEmpty() ) { return; } - for (IMogoMarker mogoMarker : markers) { - if (mogoMarker == null || mogoMarker.isDestroyed()) { + for ( IMogoMarker mogoMarker : markers ) { + if ( mogoMarker == null || mogoMarker.isDestroyed() ) { continue; } try { - mogoMarker.startScaleAnimation(0.6f, 1f, 0.6f, 1f, 1000, new BounceInterpolator()); - } catch (Exception e) { - Logger.e(TAG, e, "error."); + mogoMarker.startScaleAnimation( 0.6f, 1f, 0.6f, 1f, 1000, new BounceInterpolator() ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); } } } - private static void setMarkersSmall(List markers) { - if (markers == null || markers.isEmpty()) { + private static void setMarkersSmall( List< IMogoMarker > markers ) { + if ( markers == null || markers.isEmpty() ) { return; } - for (IMogoMarker mogoMarker : markers) { - smallMarker(mogoMarker); + for ( IMogoMarker mogoMarker : markers ) { + smallMarker( mogoMarker ); } } - private static void smallMarker(IMogoMarker mogoMarker) { - if (mogoMarker == null || mogoMarker.isDestroyed()) { + private static void smallMarker( IMogoMarker mogoMarker ) { + if ( mogoMarker == null || mogoMarker.isDestroyed() ) { return; } try { - mogoMarker.startScaleAnimation(1f, 0.6f, 1f, 0.6f, 300, new OvershootInterpolator()); - } catch (Exception e) { - Logger.e(TAG, e, "error."); + mogoMarker.startScaleAnimation( 1f, 0.6f, 1f, 0.6f, 300, new OvershootInterpolator() ); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); } } @@ -303,85 +290,83 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param marker 要关闭的Marker */ - public synchronized void closeMarkerSelect(IMogoMarker marker) { + public synchronized void closeMarkerSelect( IMogoMarker marker ) { // 将上次选中 Marker 设置为未选中状态 - if (marker != null) { - Logger.i(TAG, "closeMarkerSelect 将出Marker详情关闭:" + marker); - closeMarker(marker); + if ( marker != null ) { + Logger.i( TAG, "closeMarkerSelect 将出Marker详情关闭:" + marker ); + closeMarker( marker ); mLastCheckMarker = null; } } // 展开气泡 - private void openMarker(IMogoMarker mogoMarker) { - if (mogoMarker == null) { + private void openMarker( IMogoMarker mogoMarker ) { + if ( mogoMarker == null ) { return; } - if (mLastCheckMarker != null) { - closeMarker(mLastCheckMarker); + if ( mLastCheckMarker != null ) { + closeMarker( mLastCheckMarker ); } mLastCheckMarker = mogoMarker; Object object = mogoMarker.getObject(); - if (object != null) { - MarkerShowEntity markerShowEntity = (MarkerShowEntity) object; - markerShowEntity.setChecked(true); - IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, - mogoMarker.getMogoMarkerOptions()); - mogoMarker.setIcon(ViewUtils.fromView(markerView.getView())); + if ( object != null ) { + MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) object; + markerShowEntity.setChecked( true ); + IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions() ); + mogoMarker.setIcon( ViewUtils.fromView( markerView.getView() ) ); mogoMarker.setToTop(); } } // 折叠气泡 - private void closeMarker(IMogoMarker mogoMarker) { - if (mogoMarker == null) { + private void closeMarker( IMogoMarker mogoMarker ) { + if ( mogoMarker == null ) { return; } Object object = mogoMarker.getObject(); - if (object != null) { - MarkerShowEntity markerShowEntity = (MarkerShowEntity) object; - markerShowEntity.setChecked(false); - IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, - mogoMarker.getMogoMarkerOptions()); - mogoMarker.setIcon(ViewUtils.fromView(markerView.getView())); + if ( object != null ) { + MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) object; + markerShowEntity.setChecked( false ); + IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions() ); + mogoMarker.setIcon( ViewUtils.fromView( markerView.getView() ) ); } } // 绘制Marker - public synchronized void drawMapMarker(MarkerResponse response) { + public synchronized void drawMapMarker( MarkerResponse response ) { - if (response == null || response.getResult() == null) { + if ( response == null || response.getResult() == null ) { return; } - if (MarkerServiceHandler.getMogoStatusManager().isSearchUIShow()) { + if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) { return; } // 解析不同的Marker类型,然后对应的进行绘制 - Logger.d(TAG, "draw marker"); + Logger.d( TAG, "draw marker" ); mLastDataResult = response.getResult(); - UiThreadHandler.post(() -> { + UiThreadHandler.post( () -> { dispatchDataToBiz(); - }); + } ); // 语音触发的在线车辆搜索,采用增量的形式绘制 - if (mIsAISearchOnlineData = isOnlineCarDataOnly(mLastDataResult)) { - MarkerServiceHandler.getMarkerManager().removeMarkers(ServiceConst.CARD_TYPE_USER_DATA); - MarkerServiceHandler.getMogoCardManager().switch2(ServiceConst.CARD_TYPE_USER_DATA); + if ( mIsAISearchOnlineData = isOnlineCarDataOnly( mLastDataResult ) ) { + MarkerServiceHandler.getMarkerManager().removeMarkers( ServiceConst.CARD_TYPE_USER_DATA ); + MarkerServiceHandler.getMogoCardManager().switch2( ServiceConst.CARD_TYPE_USER_DATA ); } else { mLastCheckMarker = null; // 清空所有地图上绘制的Marker MarkerServiceHandler.getMarkerManager().removeMarkers(); } - drawMarkerByCurrentType(mLastDataResult); + drawMarkerByCurrentType( mLastDataResult ); // 同步新绘制的气泡状态 alreadySmallMarker.clear(); // highlightedMarker( mCurrentModuleName, true ); - trackData(mLastDataResult); + trackData( mLastDataResult ); } /** @@ -390,8 +375,11 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param markerCardResult * @return */ - private boolean isOnlineCarDataOnly(MarkerCardResult markerCardResult) { - if (markerCardResult != null && markerCardResult.getDataType() != null && markerCardResult.getDataType().size() == 1 && markerCardResult.getDataType().contains(ServiceConst.CARD_TYPE_USER_DATA)) { + private boolean isOnlineCarDataOnly( MarkerCardResult markerCardResult ) { + if ( markerCardResult != null && + markerCardResult.getDataType() != null && + markerCardResult.getDataType().size() == 1 && + markerCardResult.getDataType().contains( ServiceConst.CARD_TYPE_USER_DATA ) ) { return true; } return false; @@ -402,42 +390,42 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param markerCardResult */ - private synchronized void drawMarkerByCurrentType(MarkerCardResult markerCardResult) { + private synchronized void drawMarkerByCurrentType( MarkerCardResult markerCardResult ) { - if (markerCardResult == null) { + if ( markerCardResult == null ) { return; } - if (MarkerServiceHandler.getMogoStatusManager().isSearchUIShow()) { + if ( MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() ) { return; } - if (TextUtils.isEmpty(mCurrentModuleName)) { + if ( TextUtils.isEmpty( mCurrentModuleName ) ) { // 默认大而全 mCurrentModuleName = ServiceConst.CARD_TYPE_BUSINESS_OPERATION; } -// List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); - List exploreWayList = markerCardResult.getExploreWay(); - List shareMusicList = markerCardResult.getShareMusic(); - List noveltyInfoList = markerCardResult.getNoveltyInfo(); + List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); + List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay(); + List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic(); + List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo(); - switch (mCurrentModuleName) { + switch ( mCurrentModuleName ) { case ServiceConst.CARD_TYPE_BUSINESS_OPERATION: - drawAllMarker(markerCardResult); + drawAllMarker( markerCardResult ); break; case ServiceConst.CARD_TYPE_NOVELTY: - drawNoveltyMarker(noveltyInfoList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); + drawNoveltyMarker( noveltyInfoList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); break; case ServiceConst.CARD_TYPE_CARS_CHATTING: case ServiceConst.CARD_TYPE_USER_DATA: -// drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); + drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); break; case ServiceConst.CARD_TYPE_ROAD_CONDITION: - drawRoadConditionMarker(exploreWayList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); + drawRoadConditionMarker( exploreWayList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); break; case ServiceConst.CARD_TYPE_SHARE_MUSIC: - drawShareMusicMarker(shareMusicList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); + drawShareMusicMarker( shareMusicList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); break; } } @@ -447,16 +435,16 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param markerCardResult */ - private void drawAllMarker(MarkerCardResult markerCardResult) { - List onlineCarList = markerCardResult.getOnlineCar(); - List exploreWayList = markerCardResult.getExploreWay(); - List shareMusicList = markerCardResult.getShareMusic(); - List noveltyInfoList = markerCardResult.getNoveltyInfo(); + private void drawAllMarker( MarkerCardResult markerCardResult ) { + List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); + List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay(); + List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic(); + List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo(); -// drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_ALL ); - drawRoadConditionMarker(exploreWayList, ServiceConst.MAX_AMOUNT_ALL); - drawShareMusicMarker(shareMusicList, ServiceConst.MAX_AMOUNT_ALL); - drawNoveltyMarker(noveltyInfoList, ServiceConst.MAX_AMOUNT_ALL); + drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_ALL ); + drawRoadConditionMarker( exploreWayList, ServiceConst.MAX_AMOUNT_ALL ); + drawShareMusicMarker( shareMusicList, ServiceConst.MAX_AMOUNT_ALL ); + drawNoveltyMarker( noveltyInfoList, ServiceConst.MAX_AMOUNT_ALL ); } /** @@ -464,92 +452,61 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param onlineCarList */ - private void drawOnlineCarMarkers(List onlineCarList, int maxAmount) { + private void drawOnlineCarMarkers( List< MarkerOnlineCar > onlineCarList, int maxAmount ) { // 将数据同步给在线车辆,避免每次 perform 的时候去拉取,造成消耗 - if (onlineCarList == null || onlineCarList.isEmpty()) { + if ( onlineCarList == null || onlineCarList.isEmpty() ) { return; } - - for (int i = 0; i < carMarkers.size(); i++) { - IMogoMarker marker = carMarkers.get(i); - marker.destroy(); - } - double nearlyDistance = Float.MAX_VALUE; - int size = getAppropriateSize(maxAmount, onlineCarList); - for (int i = 0; i < size; i++) { - MarkerOnlineCar markerOnlineCar = onlineCarList.get(i); + int size = getAppropriateSize( maxAmount, onlineCarList ); + for ( int i = 0; i < size; i++ ) { + MarkerOnlineCar markerOnlineCar = onlineCarList.get( i ); MarkerLocation markerLocation = markerOnlineCar.getLocation(); MarkerShowEntity markerShowEntity = new MarkerShowEntity(); - markerShowEntity.setBindObj(markerOnlineCar); - markerShowEntity.setMarkerLocation(markerLocation); - markerShowEntity.setMarkerType(markerOnlineCar.getType()); - - if (markerOnlineCar.getCarInfo() != null) { - markerShowEntity.setTextContent(markerOnlineCar.getUserInfo().getUserName()); - markerShowEntity.setIconUrl(markerOnlineCar.getUserInfo().getUserHead()); - } - - IMogoMarker iMogoMarker = drawMapMarker(markerShowEntity); - - carMarkers.add(iMogoMarker); - List poisList = markerOnlineCar.getPois(); - if (poisList.size() > 0){ - List points = new ArrayList<>(); - - if (poisList.size() == 1){ - points.add(new MogoLatLng(markerLocation.getLat(),markerLocation.getLon())); - } - for (int j = 0; j < poisList.size(); j++) { - MarkerCarPois pois = poisList.get(j); - double lat = pois.getCoordinates()[1]; - double lng = pois.getCoordinates()[0]; - points.add(new MogoLatLng(lat,lng)); - - } - iMogoMarker.startSmooth(points,mCarSmoothDuration); - } - + markerShowEntity.setBindObj( markerOnlineCar ); + markerShowEntity.setMarkerLocation( markerLocation ); + markerShowEntity.setMarkerType( markerOnlineCar.getType() ); + markerShowEntity.setTextContent( markerOnlineCar.getUserInfo().getUserName() ); + markerShowEntity.setIconUrl( markerOnlineCar.getUserInfo().getUserHead() ); + IMogoMarker iMogoMarker = drawMapMarker( markerShowEntity ); // 计算在线车辆距离当前车辆的距离,每次都与最后一次距离最近的进行比较,保留距离最近的车辆,进行卡片展示 try { // 当前车辆的位置 - MogoLocation currentLocation = - MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation(); + MogoLocation currentLocation = MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation(); // 计算车辆距离指定气泡的距离 - float calculateDistance = - Utils.calculateLineDistance(new MogoLatLng(markerLocation.getLat(), - markerLocation.getLon()), - new MogoLatLng(currentLocation.getLatitude(), - currentLocation.getLongitude())); + float calculateDistance = Utils.calculateLineDistance( + new MogoLatLng( markerLocation.getLat(), markerLocation.getLon() ), + new MogoLatLng( currentLocation.getLatitude(), currentLocation.getLongitude() ) + ); // 进行比较,保留最近的一个数据 - if (calculateDistance < nearlyDistance) { + if ( calculateDistance < nearlyDistance ) { nearlyDistance = calculateDistance; mNearlyMarker = iMogoMarker; } - } catch (Exception e) { + } catch ( Exception e ) { e.printStackTrace(); } } - Logger.d(TAG, "距离当前车辆位置最近的距离为:" + nearlyDistance); + Logger.d( TAG, "距离当前车辆位置最近的距离为:" + nearlyDistance ); try { // 在ACC on 之后第一次获取到了在线车辆数据,选中最近的一个Marker - if (mIsAISearchOnlineData) { - if (mNearlyMarker != null) { - Logger.d(TAG, "语音搜索触发,默认选中最近的在线车辆:" + mNearlyMarker); + if ( mIsAISearchOnlineData ) { + if ( mNearlyMarker != null ) { + Logger.d( TAG, "语音搜索触发,默认选中最近的在线车辆:" + mNearlyMarker ); // 移动地图到指定位置 - MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus(ServiceConst.TYPE, true, false); - MarkerServiceHandler.getMapUIController().moveToCenter(mNearlyMarker.getPosition()); - onMarkerClicked(mNearlyMarker); - MogoMarkersHandler.getInstance().onMarkerClicked(mNearlyMarker); + MarkerServiceHandler.getMogoStatusManager().setUserInteractionStatus( ServiceConst.TYPE, true, false ); + MarkerServiceHandler.getMapUIController().moveToCenter( mNearlyMarker.getPosition() ); + onMarkerClicked( mNearlyMarker ); + MogoMarkersHandler.getInstance().onMarkerClicked( mNearlyMarker ); mIsAISearchOnlineData = false; } } - } catch (Exception e) { + } catch ( Exception e ) { e.printStackTrace(); } } @@ -559,24 +516,24 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param exploreWayList */ - private void drawRoadConditionMarker(List exploreWayList, int maxAmount) { + private void drawRoadConditionMarker( List< MarkerExploreWay > exploreWayList, int maxAmount ) { // 将数据同步给探路,避免探路每次 perform 的时候去拉取,造成消耗 - if (exploreWayList == null || exploreWayList.isEmpty()) { + if ( exploreWayList == null || exploreWayList.isEmpty() ) { return; } - int size = getAppropriateSize(maxAmount, exploreWayList); - for (int i = 0; i < size; i++) { - MarkerExploreWay markerExploreWay = exploreWayList.get(i); - if (!markerExploreWay.getCanLive()) { + int size = getAppropriateSize( maxAmount, exploreWayList ); + for ( int i = 0; i < size; i++ ) { + MarkerExploreWay markerExploreWay = exploreWayList.get( i ); + if ( !markerExploreWay.getCanLive() ) { MarkerLocation markerLocation = markerExploreWay.getLocation(); MarkerShowEntity markerShowEntity = new MarkerShowEntity(); - markerShowEntity.setBindObj(markerExploreWay); - markerShowEntity.setMarkerLocation(markerLocation); - markerShowEntity.setMarkerType(markerExploreWay.getType()); - markerShowEntity.setTextContent(markerExploreWay.getAddr()); + markerShowEntity.setBindObj( markerExploreWay ); + markerShowEntity.setMarkerLocation( markerLocation ); + markerShowEntity.setMarkerType( markerExploreWay.getType() ); + markerShowEntity.setTextContent( markerExploreWay.getAddr() ); - drawMapMarker(markerShowEntity); + drawMapMarker( markerShowEntity ); } } } @@ -586,22 +543,22 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param shareMusicList */ - private void drawShareMusicMarker(List shareMusicList, int maxAmount) { - if (shareMusicList == null) { + private void drawShareMusicMarker( List< MarkerShareMusic > shareMusicList, int maxAmount ) { + if ( shareMusicList == null ) { return; } - int size = getAppropriateSize(maxAmount, shareMusicList); - for (int i = 0; i < size; i++) { - MarkerShareMusic markerShareMusic = shareMusicList.get(i); + int size = getAppropriateSize( maxAmount, shareMusicList ); + for ( int i = 0; i < size; i++ ) { + MarkerShareMusic markerShareMusic = shareMusicList.get( i ); MarkerLocation markerLocation = markerShareMusic.getLocation(); MarkerShowEntity markerShowEntity = new MarkerShowEntity(); - markerShowEntity.setBindObj(markerShareMusic); - markerShowEntity.setMarkerLocation(markerLocation); - markerShowEntity.setMarkerType(markerShareMusic.getType()); - markerShowEntity.setTextContent(markerShareMusic.getMediaName()); - markerShowEntity.setIconUrl(markerShareMusic.getMediaImg()); + markerShowEntity.setBindObj( markerShareMusic ); + markerShowEntity.setMarkerLocation( markerLocation ); + markerShowEntity.setMarkerType( markerShareMusic.getType() ); + markerShowEntity.setTextContent( markerShareMusic.getMediaName() ); + markerShowEntity.setIconUrl( markerShareMusic.getMediaImg() ); - drawMapMarker(markerShowEntity); + drawMapMarker( markerShowEntity ); } } @@ -610,20 +567,20 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param noveltyInfoList */ - private void drawNoveltyMarker(List noveltyInfoList, int maxAmount) { - if (noveltyInfoList == null) { + private void drawNoveltyMarker( List< MarkerNoveltyInfo > noveltyInfoList, int maxAmount ) { + if ( noveltyInfoList == null ) { return; } - int size = getAppropriateSize(maxAmount, noveltyInfoList); - for (int i = 0; i < size; i++) { - MarkerNoveltyInfo noveltyInfo = noveltyInfoList.get(i); + int size = getAppropriateSize( maxAmount, noveltyInfoList ); + for ( int i = 0; i < size; i++ ) { + MarkerNoveltyInfo noveltyInfo = noveltyInfoList.get( i ); MarkerLocation markerLocation = noveltyInfo.getLocation(); MarkerShowEntity markerShowEntity = new MarkerShowEntity(); - markerShowEntity.setBindObj(noveltyInfo); - markerShowEntity.setMarkerLocation(markerLocation); - markerShowEntity.setMarkerType(noveltyInfo.getType()); - markerShowEntity.setTextContent(noveltyInfo.getLocation().getAddress()); - drawMapMarker(markerShowEntity); + markerShowEntity.setBindObj( noveltyInfo ); + markerShowEntity.setMarkerLocation( markerLocation ); + markerShowEntity.setMarkerType( noveltyInfo.getType() ); + markerShowEntity.setTextContent( noveltyInfo.getLocation().getAddress() ); + drawMapMarker( markerShowEntity ); } } @@ -632,11 +589,11 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param list * @return */ - private int getAppropriateSize(int maxAmount, List list) { - if (list == null) { + private int getAppropriateSize( int maxAmount, List list ) { + if ( list == null ) { return 0; } - return Math.min(maxAmount, list.size()); + return Math.min( maxAmount, list.size() ); } @@ -645,22 +602,22 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * * @param markerCardResult */ - private void trackData(MarkerCardResult markerCardResult) { - if (markerCardResult == null) { + private void trackData( MarkerCardResult markerCardResult ) { + if ( markerCardResult == null ) { return; } JSONArray array = new JSONArray(); - List onlineCarList = markerCardResult.getOnlineCar(); - List exploreWayList = markerCardResult.getExploreWay(); - List shareMusicList = markerCardResult.getShareMusic(); - List noveltyInfoList = markerCardResult.getNoveltyInfo(); + List< MarkerOnlineCar > onlineCarList = markerCardResult.getOnlineCar(); + List< MarkerExploreWay > exploreWayList = markerCardResult.getExploreWay(); + List< MarkerShareMusic > shareMusicList = markerCardResult.getShareMusic(); + List< MarkerNoveltyInfo > noveltyInfoList = markerCardResult.getNoveltyInfo(); int size = onlineCarList == null ? 0 : onlineCarList.size(); - fillNumberTrackEventBody(array, 3, size); + fillNumberTrackEventBody( array, 3, size ); size = exploreWayList == null ? 0 : exploreWayList.size(); - fillNumberTrackEventBody(array, 1, size); + fillNumberTrackEventBody( array, 1, size ); size = shareMusicList == null ? 0 : shareMusicList.size(); - fillNumberTrackEventBody(array, 4, size); + fillNumberTrackEventBody( array, 4, size ); int num_gas_station = 0; int num_traffic_check = 0; @@ -668,12 +625,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener, int num_shop_discount = 0; int num_fours_shop = 0; - if (noveltyInfoList != null) { - for (MarkerNoveltyInfo markerNoveltyInfo : noveltyInfoList) { - if (markerNoveltyInfo == null) { + if ( noveltyInfoList != null ) { + for ( MarkerNoveltyInfo markerNoveltyInfo : noveltyInfoList ) { + if ( markerNoveltyInfo == null ) { continue; } - switch (markerNoveltyInfo.getPoiType()) { + switch ( markerNoveltyInfo.getPoiType() ) { case MarkerPoiTypeEnum.GAS_STATION: num_gas_station++; break; @@ -693,20 +650,20 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } } - fillNumberTrackEventBody(array, 2, num_gas_station); - fillNumberTrackEventBody(array, 6, num_road_closed); - fillNumberTrackEventBody(array, 5, num_traffic_check); - fillNumberTrackEventBody(array, 7, num_shop_discount); - fillNumberTrackEventBody(array, 8, num_fours_shop); + fillNumberTrackEventBody( array, 2, num_gas_station ); + fillNumberTrackEventBody( array, 6, num_road_closed ); + fillNumberTrackEventBody( array, 5, num_traffic_check ); + fillNumberTrackEventBody( array, 7, num_shop_discount ); + fillNumberTrackEventBody( array, 8, num_fours_shop ); try { - if (array.length() == 0) { + if ( array.length() == 0 ) { return; } - final Map properties = new HashMap<>(); - properties.put("data", array.toString()); - MarkerServiceHandler.getMogoAnalytics().track("Launcher_Data_Get", properties); - } catch (Exception e) { + final Map< String, Object > properties = new HashMap<>(); + properties.put( "data", array.toString() ); + MarkerServiceHandler.getMogoAnalytics().track( "Launcher_Data_Get", properties ); + } catch ( Exception e ) { e.printStackTrace(); } } @@ -717,18 +674,15 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * 仅在数据刷新的时候分发 */ private void dispatchDataToBiz() { - if (mLastDataResult == null) { + if ( mLastDataResult == null ) { return; } - List onlineCarList = mLastDataResult.getOnlineCar(); - List exploreWayList = mLastDataResult.getExploreWay(); - List noveltyInfoList = mLastDataResult.getNoveltyInfo(); - dispatchDataToBis(ServiceConst.CARD_TYPE_USER_DATA, onlineCarList == null ? - new ArrayList<>() : onlineCarList); - dispatchDataToBis(ServiceConst.CARD_TYPE_ROAD_CONDITION, exploreWayList == null ? - new ArrayList<>() : exploreWayList); - dispatchDataToBis(ServiceConst.CARD_TYPE_NOVELTY, noveltyInfoList == null ? - new ArrayList<>() : noveltyInfoList); + List< MarkerOnlineCar > onlineCarList = mLastDataResult.getOnlineCar(); + List< MarkerExploreWay > exploreWayList = mLastDataResult.getExploreWay(); + List< MarkerNoveltyInfo > noveltyInfoList = mLastDataResult.getNoveltyInfo(); + dispatchDataToBis( ServiceConst.CARD_TYPE_USER_DATA, onlineCarList == null ? new ArrayList<>() : onlineCarList ); + dispatchDataToBis( ServiceConst.CARD_TYPE_ROAD_CONDITION, exploreWayList == null ? new ArrayList<>() : exploreWayList ); + dispatchDataToBis( ServiceConst.CARD_TYPE_NOVELTY, noveltyInfoList == null ? new ArrayList<>() : noveltyInfoList ); } /** @@ -737,14 +691,14 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param biz * @param object */ - private void dispatchDataToBis(String biz, Object object) { - if (TextUtils.isEmpty(biz)) { + private void dispatchDataToBis( String biz, Object object ) { + if ( TextUtils.isEmpty( biz ) ) { return; } try { - Logger.d(TAG, "dispatch data to %s", biz); - MarkerServiceHandler.getDataManager().syncData(biz, object); - } catch (Exception e) { + Logger.d( TAG, "dispatch data to %s", biz ); + MarkerServiceHandler.getDataManager().syncData( biz, object ); + } catch ( Exception e ) { e.printStackTrace(); } } @@ -752,15 +706,15 @@ public class MapMarkerManager implements IMogoMarkerClickListener, /** * 统计埋点 */ - private synchronized static void fillNumberTrackEventBody(JSONArray arr, int type, int size) { + private synchronized static void fillNumberTrackEventBody( JSONArray arr, int type, int size ) { JSONObject object = new JSONObject(); try { - object.put("type", type); - object.put("num", size); - if (arr != null) { - arr.put(object); + object.put( "type", type ); + object.put( "num", size ); + if ( arr != null ) { + arr.put( object ); } - } catch (JSONException e) { + } catch ( JSONException e ) { e.printStackTrace(); } } @@ -771,143 +725,75 @@ public class MapMarkerManager implements IMogoMarkerClickListener, * @param markerShowEntity marker 绘制数据实体 * @return 绘制的Marker */ - public synchronized IMogoMarker drawMapMarker(MarkerShowEntity markerShowEntity) { + public synchronized IMogoMarker drawMapMarker( MarkerShowEntity markerShowEntity ) { try { - return drawMapMarker(markerShowEntity, isSmallType()); - } catch (Exception e) { + return drawMapMarker( markerShowEntity, isSmallType() ); + } catch ( Exception e ) { e.printStackTrace(); return null; } } private boolean isSmallType() { - return !TextUtils.isEmpty(mCurrentModuleName) && mLastCheckMarker != null && !mLastCheckMarker.isDestroyed() && TextUtils.equals(mCurrentModuleName, mLastCheckMarker.getOwner()); + return !TextUtils.isEmpty( mCurrentModuleName ) + && mLastCheckMarker != null + && !mLastCheckMarker.isDestroyed() + && TextUtils.equals( mCurrentModuleName, mLastCheckMarker.getOwner() ); } - private IMogoMarker drawMapMarker(MarkerShowEntity markerShowEntity, boolean isSmall) { - if (markerShowEntity == null || markerShowEntity.getMarkerLocation() == null) { + private IMogoMarker drawMapMarker( MarkerShowEntity markerShowEntity, boolean isSmall ) { + if ( markerShowEntity == null || markerShowEntity.getMarkerLocation() == null ) { return null; } - MogoMarkerOptions options = - new MogoMarkerOptions().owner(markerShowEntity.getMarkerType()).object(markerShowEntity).latitude(markerShowEntity.getMarkerLocation().getLat()).longitude(markerShowEntity.getMarkerLocation().getLon()); - IMarkerView markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity, - options); - options.icon(markerView.getView()); + MogoMarkerOptions options = new MogoMarkerOptions() + .owner( markerShowEntity.getMarkerType() ) + .object( markerShowEntity ) + .latitude( markerShowEntity.getMarkerLocation().getLat() ) + .longitude( markerShowEntity.getMarkerLocation().getLon() ); + IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, options ); + options.icon( markerView.getView() ); - IMogoMarker marker = - MarkerServiceHandler.getMarkerManager().addMarker(markerShowEntity.getMarkerType(), options); - marker.setOwner(markerShowEntity.getMarkerType()); - markerView.setMarker(marker); - marker.setOnMarkerClickListener(this); + IMogoMarker marker = MarkerServiceHandler.getMarkerManager().addMarker( markerShowEntity.getMarkerType(), options ); + marker.setOwner( markerShowEntity.getMarkerType() ); + markerView.setMarker( marker ); + marker.setOnMarkerClickListener( this ); - if (isSmall) { - List markers = new ArrayList<>(); - markers.add(marker); - setMarkersSmall(markers); + if ( isSmall ) { + List< IMogoMarker > markers = new ArrayList<>(); + markers.add( marker ); + setMarkersSmall( markers ); } - markerShowEntity.setMarker(marker); + markerShowEntity.setMarker( marker ); return marker; } @Override - public Class target() { + public Class< MarkerResponse > target() { return MarkerResponse.class; } @Override - public void onMsgReceived(final MarkerResponse response) { - if (ignoreDrawRequest()) { + public void onMsgReceived( final MarkerResponse response ) { + if ( ignoreDrawRequest() ) { return; } - Logger.d(TAG, "接收到了地图大而全数据"); - runOnTargetThread(() -> { - drawMapMarker(response); - }); + Logger.d( TAG, "接收到了地图大而全数据" ); + runOnTargetThread( () -> { + drawMapMarker( response ); + } ); } - public void getOnlineCarData(MogoLatLng latlng) { -// if (mCurrentModuleName.equals(ServiceConst.CARD_TYPE_USER_DATA)){ - mCarLatLng = latlng; - getOnlineCarList(); - UiThreadHandler.removeCallbacks(runnable); - UiThreadHandler.postDelayed(runnable, mCarSmoothDuration * 1000); -// } - } - - private Runnable runnable = new Runnable() { - @Override - public void run() { - getOnlineCarList(); - UiThreadHandler.postDelayed(this, mCarSmoothDuration * 1000); - } - }; - - private double lat = 39.969161; - private double lng = 116.412334; - private int a = 0; - - private void getOnlineCarList() { - mRefreshModel.queryOnLineCarWithRoute(mCarLatLng, false, false, new RefreshCallback() { - @Override - public void onSuccess(Object o) { - Logger.i(TAG, "11111111211" + o.toString()); - -// MarkerResponse data = (MarkerResponse)o; -// MarkerCardResult result = data.getResult(); -// if (result == null) { -// return; -// } -// -// List onlineCarList = result.getOnlineCar(); -// drawOnlineCarMarkers( onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD ); - - a++; - if (a == 3){ - return; - } - - MarkerLocation location = new MarkerLocation(); - location.setLat(lat); - location.setLon(lng); - - - lng += 0.003; - double[] coor2 = {lng,lat}; - MarkerCarPois pois2 = new MarkerCarPois(); - pois2.setCoordinates(coor2); - - List pois = new ArrayList<>(); - pois.add(pois2); - MarkerOnlineCar onlineCar = new MarkerOnlineCar(); - onlineCar.setLocation(location); - onlineCar.setType(ServiceConst.CARD_TYPE_USER_DATA); - onlineCar.setPois(pois); - - List onlineCarList = new ArrayList<>(); - onlineCarList.add(onlineCar); - - drawOnlineCarMarkers(onlineCarList, ServiceConst.MAX_AMOUNT_SINGLE_CARD); - - } - - @Override - public void onFail() { - - } - }); - } - - private boolean ignoreDrawRequest() { - return MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() || MarkerServiceHandler.getMogoStatusManager().isADASShow(); + return MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() + || MarkerServiceHandler.getMogoStatusManager().isADASShow(); } - private void runOnTargetThread(Runnable runnable) { - if (runnable == null) { + private void runOnTargetThread( Runnable runnable ) { + if ( runnable == null ) { return; } - ThreadPoolService.execute(runnable); + ThreadPoolService.execute( runnable ); } public String getCurrentModuleName() { @@ -915,19 +801,20 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } @Override - public void onBizActionDone(String biz, int position, Object data) { - Logger.d(TAG, "biz = %s, position = %s", biz, position); - if (data instanceof MarkerShowEntity && ((MarkerShowEntity) data).getMarker() != null) { - switchMarkerOpenStatus(((MarkerShowEntity) data).getMarker()); + public void onBizActionDone( String biz, int position, Object data ) { + Logger.d( TAG, "biz = %s, position = %s", biz, position ); + if ( data instanceof MarkerShowEntity && + ( ( MarkerShowEntity ) data ).getMarker() != null ) { + switchMarkerOpenStatus( ( ( MarkerShowEntity ) data ).getMarker() ); } else { IMogoMarkerManager markerManager = MarkerServiceHandler.getMarkerManager(); - List markers = markerManager.getMarkers(biz); - if (markers != null) { + List< IMogoMarker > markers = markerManager.getMarkers( biz ); + if ( markers != null ) { try { - IMogoMarker marker = markers.get(position); - switchMarkerOpenStatus(marker); - } catch (Exception e) { - Logger.e(TAG, e, "occur error."); + IMogoMarker marker = markers.get( position ); + switchMarkerOpenStatus( marker ); + } catch ( Exception e ) { + Logger.e( TAG, e, "occur error." ); } } } 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 new file mode 100644 index 0000000000..2dc942e40d --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/CarIconDisplayStrategy.java @@ -0,0 +1,179 @@ +package com.mogo.module.service.strategy; + +import android.os.Handler; +import android.os.Message; + +import com.mogo.map.uicontroller.CarCursorOption; +import com.mogo.map.uicontroller.IMogoMapUIController; +import com.mogo.module.common.utils.CarSeries; +import com.mogo.module.service.R; +import com.mogo.utils.WorkThreadHandler; + + +/** + * @author congtaowang + * @since 2020-04-16 + *

+ * 上报故障求助之后自车的图标显示策略 + */ +public class CarIconDisplayStrategy { + + public static final int MSG_SEEK_HELPING_ANIM = 2000; + + // F 系列才有这个帧动画 + public static final int[] sFrame = { + R.drawable.module_service_ic_seek_helping_00000, + R.drawable.module_service_ic_seek_helping_00001, + R.drawable.module_service_ic_seek_helping_00002, + R.drawable.module_service_ic_seek_helping_00003, + R.drawable.module_service_ic_seek_helping_00004, + R.drawable.module_service_ic_seek_helping_00005, + R.drawable.module_service_ic_seek_helping_00006, + R.drawable.module_service_ic_seek_helping_00007, + R.drawable.module_service_ic_seek_helping_00008, + R.drawable.module_service_ic_seek_helping_00009, + R.drawable.module_service_ic_seek_helping_00010, + R.drawable.module_service_ic_seek_helping_00011, + R.drawable.module_service_ic_seek_helping_00012, + R.drawable.module_service_ic_seek_helping_00013, + R.drawable.module_service_ic_seek_helping_00014, + R.drawable.module_service_ic_seek_helping_00015, + R.drawable.module_service_ic_seek_helping_00016, + R.drawable.module_service_ic_seek_helping_00017, + R.drawable.module_service_ic_seek_helping_00018, + R.drawable.module_service_ic_seek_helping_00019, + R.drawable.module_service_ic_seek_helping_00020, + R.drawable.module_service_ic_seek_helping_00021, + R.drawable.module_service_ic_seek_helping_00022, + R.drawable.module_service_ic_seek_helping_00023, + R.drawable.module_service_ic_seek_helping_00024, + R.drawable.module_service_ic_seek_helping_00025, + R.drawable.module_service_ic_seek_helping_00026, + R.drawable.module_service_ic_seek_helping_00027, + R.drawable.module_service_ic_seek_helping_00028, + R.drawable.module_service_ic_seek_helping_00029, + R.drawable.module_service_ic_seek_helping_00030, + R.drawable.module_service_ic_seek_helping_00031, + R.drawable.module_service_ic_seek_helping_00032, + R.drawable.module_service_ic_seek_helping_00033, + R.drawable.module_service_ic_seek_helping_00034, + R.drawable.module_service_ic_seek_helping_00035, + R.drawable.module_service_ic_seek_helping_00036, + R.drawable.module_service_ic_seek_helping_00037, + R.drawable.module_service_ic_seek_helping_00038, + R.drawable.module_service_ic_seek_helping_00039, + R.drawable.module_service_ic_seek_helping_00040, + R.drawable.module_service_ic_seek_helping_00041, + R.drawable.module_service_ic_seek_helping_00042, + R.drawable.module_service_ic_seek_helping_00043, + R.drawable.module_service_ic_seek_helping_00044, + R.drawable.module_service_ic_seek_helping_00045, + R.drawable.module_service_ic_seek_helping_00046, + R.drawable.module_service_ic_seek_helping_00047, + R.drawable.module_service_ic_seek_helping_00048, + R.drawable.module_service_ic_seek_helping_00049, + R.drawable.module_service_ic_seek_helping_00050, + R.drawable.module_service_ic_seek_helping_00051, + R.drawable.module_service_ic_seek_helping_00052, + R.drawable.module_service_ic_seek_helping_00053, + R.drawable.module_service_ic_seek_helping_00054, + R.drawable.module_service_ic_seek_helping_00055, + R.drawable.module_service_ic_seek_helping_00056, + R.drawable.module_service_ic_seek_helping_00057, + R.drawable.module_service_ic_seek_helping_00058, + R.drawable.module_service_ic_seek_helping_00059, + R.drawable.module_service_ic_seek_helping_00060, + R.drawable.module_service_ic_seek_helping_00061, + R.drawable.module_service_ic_seek_helping_00062, + R.drawable.module_service_ic_seek_helping_00063, + R.drawable.module_service_ic_seek_helping_00064 + }; + + private static volatile CarIconDisplayStrategy sInstance; + private IMogoMapUIController mController; + + private CarIconDisplayStrategy() { + mOption = new CarCursorOption.Builder().carCursorRes( R.drawable.module_service_ic_seek_helping ).build(); + } + + public static CarIconDisplayStrategy getInstance() { + if ( sInstance == null ) { + synchronized ( CarIconDisplayStrategy.class ) { + if ( sInstance == null ) { + sInstance = new CarIconDisplayStrategy(); + } + } + } + return sInstance; + } + + public synchronized void release() { + sInstance = null; + } + + private Handler mSeekHelpingHandler; + private int mCounter = 0; + private boolean mStopStatus = true; + private CarCursorOption mOption; + + public void changeCarIconStatus( IMogoMapUIController controller, boolean seekHelpingStatus ) { + mController = controller; + if ( CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ) { + if ( seekHelpingStatus ) { + playSeekHelpingAnim(); + } else { + stopSeekHelpingAnim(); + } + } else { + if ( seekHelpingStatus ) { + controller.setCarCursorOption( mOption ); + } else { + controller.setCarCursorOption( null ); + } + } + } + + private void playSeekHelpingAnim() { + initHandler(); + mStopStatus = false; + Message msg = Message.obtain(); + msg.what = MSG_SEEK_HELPING_ANIM; + msg.arg1 = mCounter++; + mSeekHelpingHandler.sendMessageDelayed( msg, 100 ); + } + + private void initHandler() { + if ( mSeekHelpingHandler != null ) { + return; + } + mSeekHelpingHandler = new Handler( WorkThreadHandler.getInstance().getLooper() ) { + @Override + public void handleMessage( Message msg ) { + super.handleMessage( msg ); + if ( mStopStatus ) { + mSeekHelpingHandler.removeMessages( MSG_SEEK_HELPING_ANIM ); + mCounter = 0; + mController.setCarCursorOption( null ); + return; + } + switch ( msg.what ) { + case MSG_SEEK_HELPING_ANIM: + mOption.setCarCursorRes( sFrame[msg.arg1 % sFrame.length] ); + mController.setCarCursorOption( mOption ); + playSeekHelpingAnim(); + break; + } + } + }; + } + + private void stopSeekHelpingAnim() { + mStopStatus = true; + if ( mSeekHelpingHandler == null ) { + return; + } + mCounter = 0; + mSeekHelpingHandler.removeMessages( MSG_SEEK_HELPING_ANIM ); + mController.setCarCursorOption( null ); + } +} diff --git a/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_seek_helping.png b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_seek_helping.png new file mode 100755 index 0000000000..ed3ff999dd Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-ldpi/module_service_ic_seek_helping.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping.png new file mode 100755 index 0000000000..aa6eb75043 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00000.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00000.png new file mode 100755 index 0000000000..91ef580142 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00000.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00001.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00001.png new file mode 100755 index 0000000000..035c1dc64e Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00001.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00002.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00002.png new file mode 100755 index 0000000000..be7329b427 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00002.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00003.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00003.png new file mode 100755 index 0000000000..477ae463a1 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00003.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00004.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00004.png new file mode 100755 index 0000000000..1e9174360a Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00004.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00005.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00005.png new file mode 100755 index 0000000000..1f5662e952 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00005.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00006.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00006.png new file mode 100755 index 0000000000..99f9c399c7 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00006.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00007.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00007.png new file mode 100755 index 0000000000..51c2854387 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00007.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00008.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00008.png new file mode 100755 index 0000000000..e85fbc19bf Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00008.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00009.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00009.png new file mode 100755 index 0000000000..f2843ce176 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00009.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00010.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00010.png new file mode 100755 index 0000000000..2d03318e75 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00010.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00011.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00011.png new file mode 100755 index 0000000000..ad788d3c68 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00011.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00012.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00012.png new file mode 100755 index 0000000000..dc52364e7b Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00012.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00013.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00013.png new file mode 100755 index 0000000000..b8ea0b316c Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00013.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00014.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00014.png new file mode 100755 index 0000000000..8abb4ccf51 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00014.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00015.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00015.png new file mode 100755 index 0000000000..41549be007 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00015.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00016.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00016.png new file mode 100755 index 0000000000..9fb488f78a Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00016.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00017.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00017.png new file mode 100755 index 0000000000..de08a87e4c Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00017.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00018.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00018.png new file mode 100755 index 0000000000..8a257850cc Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00018.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00019.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00019.png new file mode 100755 index 0000000000..938c6485e0 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00019.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00020.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00020.png new file mode 100755 index 0000000000..41bf443f4d Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00020.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00021.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00021.png new file mode 100755 index 0000000000..f3f8aa9264 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00021.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00022.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00022.png new file mode 100755 index 0000000000..5a12355914 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00022.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00023.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00023.png new file mode 100755 index 0000000000..c189afaf82 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00023.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00024.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00024.png new file mode 100755 index 0000000000..a5e9a3a255 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00024.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00025.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00025.png new file mode 100755 index 0000000000..030107cd78 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00025.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00026.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00026.png new file mode 100755 index 0000000000..6267571bff Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00026.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00027.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00027.png new file mode 100755 index 0000000000..abec499d36 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00027.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00028.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00028.png new file mode 100755 index 0000000000..eba6b2bcbf Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00028.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00029.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00029.png new file mode 100755 index 0000000000..a67c5f9cec Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00029.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00030.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00030.png new file mode 100755 index 0000000000..3f33fb9c3a Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00030.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00031.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00031.png new file mode 100755 index 0000000000..0f3fd7a901 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00031.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00032.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00032.png new file mode 100755 index 0000000000..5a9fd6fbd0 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00032.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00033.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00033.png new file mode 100755 index 0000000000..3ded233972 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00033.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00034.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00034.png new file mode 100755 index 0000000000..3cdb8c6e34 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00034.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00035.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00035.png new file mode 100755 index 0000000000..182a4ba602 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00035.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00036.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00036.png new file mode 100755 index 0000000000..ea15361039 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00036.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00037.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00037.png new file mode 100755 index 0000000000..a8d2759378 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00037.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00038.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00038.png new file mode 100755 index 0000000000..162dc6d8cc Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00038.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00039.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00039.png new file mode 100755 index 0000000000..cd55a2012c Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00039.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00040.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00040.png new file mode 100755 index 0000000000..fb2bf1d674 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00040.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00041.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00041.png new file mode 100755 index 0000000000..b9c1d75d70 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00041.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00042.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00042.png new file mode 100755 index 0000000000..592a4fa684 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00042.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00043.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00043.png new file mode 100755 index 0000000000..2bf047529a Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00043.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00044.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00044.png new file mode 100755 index 0000000000..1e6b1c62ca Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00044.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00045.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00045.png new file mode 100755 index 0000000000..0ef8052522 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00045.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00046.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00046.png new file mode 100755 index 0000000000..ddf515a0cc Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00046.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00047.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00047.png new file mode 100755 index 0000000000..32804bc40f Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00047.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00048.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00048.png new file mode 100755 index 0000000000..e79bb3147b Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00048.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00049.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00049.png new file mode 100755 index 0000000000..5d2e4c32a7 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00049.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00050.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00050.png new file mode 100755 index 0000000000..b710ad29b0 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00050.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00051.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00051.png new file mode 100755 index 0000000000..a3e2f3e5bc Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00051.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00052.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00052.png new file mode 100755 index 0000000000..c5fd7137d8 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00052.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00053.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00053.png new file mode 100755 index 0000000000..975e1d8fca Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00053.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00054.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00054.png new file mode 100755 index 0000000000..f9e8bf57cc Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00054.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00055.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00055.png new file mode 100755 index 0000000000..3bc6fd7222 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00055.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00056.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00056.png new file mode 100755 index 0000000000..d4e83d833b Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00056.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00057.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00057.png new file mode 100755 index 0000000000..28d16d7b2f Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00057.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00058.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00058.png new file mode 100755 index 0000000000..fabcdee32f Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00058.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00059.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00059.png new file mode 100755 index 0000000000..6bd5034043 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00059.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00060.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00060.png new file mode 100755 index 0000000000..ce803618bc Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00060.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00061.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00061.png new file mode 100755 index 0000000000..973c84895e Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00061.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00062.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00062.png new file mode 100755 index 0000000000..9f2edaa2d8 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00062.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00063.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00063.png new file mode 100755 index 0000000000..dfe6bb88bf Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00063.png differ diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00064.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00064.png new file mode 100755 index 0000000000..c4eeda5a13 Binary files /dev/null and b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_service_ic_seek_helping_00064.png differ diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java index c5b20b8269..5307736cd1 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java @@ -1,7 +1,6 @@ package com.mogo.module.share; import android.content.Context; -import android.util.Log; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.module.share.dialog.LaucherShareDialog; diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareVoiceCmdReceiver.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareVoiceCmdReceiver.kt index 3b2cd1e96e..5a0d662a84 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareVoiceCmdReceiver.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareVoiceCmdReceiver.kt @@ -4,16 +4,19 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import com.mogo.module.share.constant.ShareConstants +import com.mogo.module.share.constant.ShareConstants.VOICE_CMD_PUB_TROUBLE_HELP +import com.mogo.utils.logger.Logger /** * 用于接收唤醒词指令,现在只接收 com.zhidao.speech.awake.notify 这一条广播 */ class ShareVoiceCmdReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { - // todo 接收唤醒词指令 + // 接收唤醒词指令 val command = intent.getStringExtra("command") - if (command == "zhunbeishangbao") { - //todo 开启服务,准备上报求助 + Logger.d("ShareCmdReceiver", "收到唤醒词指令: $command") + if (command == VOICE_CMD_PUB_TROUBLE_HELP) { + // 开启服务,准备上报求助 val seekHelp = Intent(context, VoiceCmdService::class.java) seekHelp.putExtra(ShareConstants.VOICE_CMD_SERVICE_EVENT_KEY, ShareConstants.VOICE_CMD_SERVICE_SEEK_HELP) context.startService(seekHelp) diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/VoiceCmdService.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/VoiceCmdService.kt index c7cd4e464b..ae1c6924c9 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/VoiceCmdService.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/VoiceCmdService.kt @@ -42,7 +42,7 @@ class VoiceCmdService:Service() { if (intent.getIntExtra(ShareConstants.VOICE_CMD_SERVICE_EVENT_KEY,0) == ShareConstants.VOICE_CMD_SERVICE_SEEK_HELP) { // 收到语音指令,准备上报求助 Logger.i(TAG, "收到语音指令,准备上报求助") - SeekHelpManager.seekHelp(this,seekListener,false) + SeekHelpManager.seekHelp(this,seekListener) } } return super.onStartCommand(intent, flags, startId) diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java index 139081e11f..a0134b5feb 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/constant/ShareConstants.java @@ -18,4 +18,6 @@ public class ShareConstants { public static final String VOICE_CMD_SERVICE_EVENT_KEY = "type"; public static final int VOICE_CMD_SERVICE_SEEK_HELP = 1; + + public static final String VOICE_CMD_PUB_TROUBLE_HELP = "com.zhidao.auxiliaryDriving.pubTroubleHelp"; } diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java index a56664a2e3..a2fbf3cc96 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/dialog/LaucherShareDialog.java @@ -10,7 +10,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; import android.widget.TextView; -import android.widget.Toast; import androidx.annotation.NonNull; diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt index 19142774ef..bcc2b3cd73 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/manager/SeekHelpManager.kt @@ -3,8 +3,6 @@ package com.mogo.module.share.manager import android.annotation.SuppressLint import android.content.Context import android.os.SystemClock -import android.widget.Toast -import com.alibaba.android.arouter.launcher.ARouter import com.mogo.commons.data.BaseData import com.mogo.commons.network.SubscribeImpl import com.mogo.commons.voice.AIAssist @@ -15,12 +13,9 @@ import com.mogo.module.share.bean.SeekRequest import com.mogo.module.share.bean.getJson import com.mogo.module.share.constant.HttpConstant import com.mogo.module.share.net.ShareApiService -import com.mogo.service.IMogoServiceApis -import com.mogo.service.MogoServicePaths -import com.mogo.utils.DeviceIdUtils +import com.mogo.utils.TipToast import com.mogo.utils.logger.Logger import com.mogo.utils.network.RequestOptions -import com.mogo.utils.network.utils.GsonUtil import com.zhidao.auto.platform.util.DeviceUtil import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers @@ -42,12 +37,13 @@ object SeekHelpManager { private const val SEEK_RECORD_LIMIT_AMOUNT = 2 const val VOICE_WILL_SEEK_HELP = "将发布故障求助" - private var context:Context? = null - private var aiAssist:AIAssist? = null + private var context: Context? = null + private var aiAssist: AIAssist? = null private val seekRecordList = mutableListOf() private val seekListenerList = mutableListOf() private var isSeekHelp = false + private var isSeeking = false private val voiceCallback = object : IMogoVoiceCmdCallBack { override fun onCmdSelected(cmd: String?) { @@ -82,34 +78,36 @@ object SeekHelpManager { * * @param useLocalVoiceNotice 使用自己的语音播报,如果是从语音助手过来的请求,语音助手可能会走自己的播报,默认是使用自己的播报 */ - fun seekHelp(context: Context, seekHelpListener: ISeekHelpListener,useLocalVoiceNotice:Boolean = true) { - // context初始化 - if (this.context == null) { - this.context = context - aiAssist = AIAssist.getInstance(context) - } - isSeekHelp = ShareControl.getInstance(SeekHelpManager.context).mogoServiceApis.statusManagerApi.isSeekHelping - Logger.d(TAG, "开始故障求助上报---${isSeekHelp}") - seekListenerList.add(seekHelpListener) - when { - isSeekHelp -> { - // 正在求助中,进行异常提示 - toast("已发布故障求助,请耐心等待") - aiAssist?.speakTTSVoice("已发布故障求助,请耐心等待") + fun seekHelp(context: Context, seekHelpListener: ISeekHelpListener, useLocalVoiceNotice: Boolean = true) { + if(!isSeeking) { + isSeeking = true + if (this.context == null) { + this.context = context + aiAssist = AIAssist.getInstance(context) } - getSeekAmountByLimitTime() >= SEEK_RECORD_LIMIT_AMOUNT -> { - // 超过限制时间内的限制次数,进行异常提示 - toast("已在求助状态,请勿连续发布哦") - aiAssist?.speakTTSVoice("已在求助状态,请勿连续发布哦") - } - else -> { - // 没有异常情况,开始故障求助 - if(useLocalVoiceNotice) { - // 语音说完再请求,要不然可能请求的太快 - aiAssist?.speakTTSVoice(VOICE_WILL_SEEK_HELP, voiceCallback) - }else{ - Logger.d(TAG,"不使用本地语音播报,直接开始发起求助") - realSeekHelp() + isSeekHelp = ShareControl.getInstance(SeekHelpManager.context).mogoServiceApis.statusManagerApi.isSeekHelping + Logger.d(TAG, "开始故障求助上报---${isSeekHelp}") + seekListenerList.add(seekHelpListener) + when { + isSeekHelp -> { + // 正在求助中,进行异常提示 + toast("已发布故障求助,请耐心等待") + aiAssist?.speakTTSVoice("已发布故障求助,请耐心等待") + } + getSeekAmountByLimitTime() >= SEEK_RECORD_LIMIT_AMOUNT -> { + // 超过限制时间内的限制次数,进行异常提示 + toast("已在求助状态,请勿连续发布哦") + aiAssist?.speakTTSVoice("已在求助状态,请勿连续发布哦") + } + else -> { + // 没有异常情况,开始故障求助 + if (useLocalVoiceNotice) { + // 语音说完再请求,要不然可能请求的太快 + aiAssist?.speakTTSVoice(VOICE_WILL_SEEK_HELP, voiceCallback) + } else { + Logger.d(TAG, "不使用本地语音播报,直接开始发起求助") + realSeekHelp() + } } } } @@ -121,7 +119,7 @@ object SeekHelpManager { } private fun toast(msg: String) { - Toast.makeText(context, msg, Toast.LENGTH_LONG).show() + TipToast.tip(msg) } /** @@ -149,12 +147,12 @@ object SeekHelpManager { // 请求故障求助接口 val seekRequest = SeekRequest(DeviceUtil.getSn()) val param = mutableMapOf("data" to seekRequest.getJson()) - + ShareControl.getInstance(context).mogoServiceApis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendHelpSignal(param).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(object : SubscribeImpl(RequestOptions.create(context)) { override fun onSuccess(o: BaseData?) { super.onSuccess(o) // 接口请求成功,内部同步v2x状态,通知adas,改变自车图标 - ShareControl.getInstance(context).mogoServiceApis.statusManagerApi.setSeekHelping("ShareDialog",true) + ShareControl.getInstance(context).mogoServiceApis.statusManagerApi.setSeekHelping("ShareDialog", true) isSeekHelp = true aiAssist?.speakTTSVoice("已发布求助信息,将为你通知其他车主") toast("已发布求助信息,将为你通知其他车主") @@ -162,6 +160,7 @@ object SeekHelpManager { seekListenerList.forEach { it.onSeekHelpSuccess() } + isSeeking = false } override fun onError(e: Throwable) { @@ -170,6 +169,7 @@ object SeekHelpManager { Logger.e(TAG, "上报求助失败,网络异常") e.printStackTrace() seekHelpFail() + isSeeking = false } override fun onError(message: String?, code: Int) { @@ -177,6 +177,7 @@ object SeekHelpManager { // 接口请求失败 Logger.e(TAG, "上报求助失败") seekHelpFail() + isSeeking = false } }) } @@ -190,4 +191,30 @@ object SeekHelpManager { aiAssist?.speakTTSVoice("求助上报失败,请稍后重试") } + fun debugCancelSeek() { + val seekRequest = SeekRequest(DeviceUtil.getSn(), 0) + val param = mutableMapOf("data" to seekRequest.getJson()) + ShareControl.getInstance(context).mogoServiceApis.networkApi.create(ShareApiService::class.java, HttpConstant.getNetHost()).sendHelpSignal(param).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(object : SubscribeImpl(RequestOptions.create(context)) { + override fun onSuccess(o: BaseData?) { + super.onSuccess(o) + // 接口请求成功,内部同步v2x状态,通知adas,改变自车图标 + ShareControl.getInstance(context).mogoServiceApis.statusManagerApi.setSeekHelping("ShareDialog", false) + isSeekHelp = false + } + + override fun onError(e: Throwable) { + super.onError(e) + // 接口请求失败 + Logger.e(TAG, "上报求助失败,网络异常") + e.printStackTrace() + } + + override fun onError(message: String?, code: Int) { + super.onError(message, code) + // 接口请求失败 + Logger.e(TAG, "上报求助失败") + } + }) + } + } \ No newline at end of file diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_block_up.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_block_up.png index ab5e22a384..d2f7197cce 100644 Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_block_up.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_block_up.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_closure.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_closure.png index 0e20d530b5..f6e8d2b499 100644 Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_closure.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_road_closure.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_seek_help.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_seek_help.png new file mode 100644 index 0000000000..c87f75fd0d Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_seek_help.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_traffic_check.png b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_traffic_check.png index 3fe74d1514..737a4c75a8 100644 Binary files a/modules/mogo-module-share/src/main/res/drawable-ldpi/share_traffic_check.png and b/modules/mogo-module-share/src/main/res/drawable-ldpi/share_traffic_check.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_block_up.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_block_up.png index aa80dfe42f..0d33d14d6c 100644 Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_block_up.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_block_up.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_closure.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_closure.png index 7726fc04d4..0356075b5d 100644 Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_closure.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_road_closure.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_seek_help.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_seek_help.png new file mode 100644 index 0000000000..018f787003 Binary files /dev/null and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_seek_help.png differ diff --git a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_traffic_check.png b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_traffic_check.png index 18e28e06f7..d9139b14e3 100644 Binary files a/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_traffic_check.png and b/modules/mogo-module-share/src/main/res/drawable-xhdpi/share_traffic_check.png differ diff --git a/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share_2.xml b/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share_2.xml index 06ea3db506..7c4e60d6bc 100644 --- a/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share_2.xml +++ b/modules/mogo-module-share/src/main/res/layout/launcher_dialog_share_2.xml @@ -39,10 +39,12 @@ android:drawablePadding="@dimen/share_module_tv_margin_top" android:gravity="center" android:text="上报拥堵" + app:layout_constraintHorizontal_chainStyle="spread_inside" + android:layout_marginStart="@dimen/dp_76" android:textColor="@color/white" android:textSize="@dimen/share_module_item" android:textStyle="bold" - android:layout_marginTop="@dimen/dp_30" + android:layout_marginTop="@dimen/dp_64" app:layout_constraintLeft_toLeftOf="@+id/vBg" app:layout_constraintRight_toLeftOf="@+id/tvTrafficCheck" app:layout_constraintTop_toBottomOf="@+id/btn_share_title" /> @@ -83,11 +85,12 @@ android:id="@+id/tvNeedHelp" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:drawableTop="@drawable/share_oil_price" + android:drawableTop="@drawable/share_seek_help" android:drawablePadding="@dimen/share_module_tv_margin_top" android:gravity="center" - android:text="故障求助" + android:text="发起求助" android:textColor="@color/white" + android:layout_marginEnd="@dimen/dp_76" android:textSize="@dimen/share_module_item" android:textStyle="bold" app:layout_constraintLeft_toRightOf="@+id/tvClosure" @@ -98,11 +101,11 @@ diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java index 829f3c866b..b2c827db12 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java @@ -8,6 +8,7 @@ import com.mogo.service.analytics.IMogoAnalytics; import com.mogo.service.cardmanager.IMogoCardManager; import com.mogo.service.connection.IMogoSocketManager; import com.mogo.service.datamanager.IMogoDataManager; +import com.mogo.service.entrance.IMogoEntranceButtonController; import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.imageloader.IMogoImageloader; import com.mogo.service.intent.IMogoIntentManager; @@ -170,4 +171,11 @@ public interface IMogoServiceApis extends IProvider { * @return */ IMogoLauncher getLauncherApi(); + + /** + * 获取入口按钮控制器 + * + * @return + */ + IMogoEntranceButtonController getEntranceButtonController(); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java index c422f05b1a..ca78173ea3 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java @@ -160,4 +160,10 @@ public class MogoServicePaths { */ @Deprecated public static final String PATH_LAUNCHER_API = "/launcher/api"; + + /** + * 入口按钮 + */ + @Deprecated + public static final String PATH_ENTRANCE_BUTTON_API = "/entrancebutton/api"; } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/entrance/ButtonIndex.java b/services/mogo-service-api/src/main/java/com/mogo/service/entrance/ButtonIndex.java new file mode 100644 index 0000000000..1c4e955019 --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/entrance/ButtonIndex.java @@ -0,0 +1,20 @@ +package com.mogo.service.entrance; + +/** + * @author congtaowang + * @since 2020-04-16 + *

+ * 入口按钮顺序:从上到下 + */ +public enum ButtonIndex { + + /** + * 第一个 + */ + BUTTON1, + + /** + * 第二个 + */ + BUTTON2; +} diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/entrance/IMogoEntranceButtonController.java b/services/mogo-service-api/src/main/java/com/mogo/service/entrance/IMogoEntranceButtonController.java new file mode 100644 index 0000000000..254109c16b --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/entrance/IMogoEntranceButtonController.java @@ -0,0 +1,22 @@ +package com.mogo.service.entrance; + +import android.widget.TextView; + +import com.alibaba.android.arouter.facade.template.IProvider; + +/** + * @author congtaowang + * @since 2020-04-16 + *

+ * 入口按钮 + */ +public interface IMogoEntranceButtonController extends IProvider { + + /** + * 获取入口按钮实例 + * + * @param index + * @return + */ + TextView getButton( ButtonIndex index ); +} diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java index 06105ec2f5..b5abb42654 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java @@ -86,10 +86,18 @@ public interface IMogoStatusManager extends IProvider { /** * 求助状态 + * * @return */ boolean isSeekHelping(); + /** + * 是否在查看全程状态 + * + * @return + */ + boolean isDisplayOverview(); + /** * 设置小智语音UI状态 * @@ -174,10 +182,19 @@ public interface IMogoStatusManager extends IProvider { /** * 设置求助状态 + * * @param tag * @param seekHelping */ - void setSeekHelping(String tag, boolean seekHelping); + void setSeekHelping( String tag, boolean seekHelping ); + + /** + * 设置展示全程状态 + * + * @param tag + * @param display + */ + void setDisplayOverview( String tag, boolean display ); /** * 注册监听 diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java index 5dc6262546..f6f078d542 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java @@ -64,5 +64,10 @@ public enum StatusDescriptor { /** * 求助状态 */ - SEEK_HELPING; + SEEK_HELPING, + + /** + * 展示全程 + */ + DISPLAY_OVERVIEW; } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/windowview/IMogoWindowManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/windowview/IMogoWindowManager.java index e3d86b0ae3..6ef9929854 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/windowview/IMogoWindowManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/windowview/IMogoWindowManager.java @@ -22,7 +22,7 @@ public interface IMogoWindowManager extends IProvider { * @param y 左上角y坐标 * @param movable 是否可移动(无效) */ - void addView(View view, int x, int y, boolean movable); + void addView( View view, int x, int y, boolean movable ); /** @@ -32,7 +32,7 @@ public interface IMogoWindowManager extends IProvider { * @param params 布局参数 * @param movable 是否可移动(无效) */ - void addView(View view, FrameLayout.LayoutParams params, boolean movable); + void addView( View view, FrameLayout.LayoutParams params, boolean movable ); /** * 向window中添加指定的布局,优先级大的展示 @@ -43,7 +43,7 @@ public interface IMogoWindowManager extends IProvider { * @param y 左上角y坐标 * @param movable 是否可移动(无效) */ - void addView(int priority, View view, int x, int y, boolean movable); + void addView( int priority, View view, int x, int y, boolean movable ); /** * 向window中添加指定的布局,优先级大的展示 @@ -53,12 +53,22 @@ public interface IMogoWindowManager extends IProvider { * @param params 布局参数 * @param movable 是否可移动(无效) */ - void addView(int priority, View view, FrameLayout.LayoutParams params, boolean movable); + void addView( int priority, View view, FrameLayout.LayoutParams params, boolean movable ); /** * 移除对应的 view * * @param view */ - void removeView(View view); + void removeView( View view ); + + /** + * 隐藏所有 + */ + void hideAll(); + + /** + * 显示所有 + */ + void showAll(); } diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java index b23dddd85a..462e799b7a 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java @@ -13,6 +13,7 @@ import com.mogo.service.analytics.IMogoAnalytics; import com.mogo.service.cardmanager.IMogoCardManager; import com.mogo.service.connection.IMogoSocketManager; import com.mogo.service.datamanager.IMogoDataManager; +import com.mogo.service.entrance.IMogoEntranceButtonController; import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.imageloader.IMogoImageloader; import com.mogo.service.impl.analytics.impl.MogoAnalyticsImpl; @@ -153,6 +154,11 @@ public class MogoServiceApis implements IMogoServiceApis { return getApiInstance( IMogoLauncher.class, MogoServicePaths.PATH_LAUNCHER_API ); } + @Override + public IMogoEntranceButtonController getEntranceButtonController() { + return getApiInstance( IMogoEntranceButtonController.class, MogoServicePaths.PATH_ENTRANCE_BUTTON_API ); + } + private static < T extends IProvider > T getApiInstance( Class< T > clazz, String path ) { T inst = SingletonsHolder.get( clazz ); if ( inst == null ) { diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java index 117f11db27..47202f552c 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java @@ -105,6 +105,11 @@ public class MogoStatusManager implements IMogoStatusManager { return get_bool_val( StatusDescriptor.SEEK_HELPING ); } + @Override + public boolean isDisplayOverview() { + return get_bool_val( StatusDescriptor.DISPLAY_OVERVIEW ); + } + private boolean get_bool_val( StatusDescriptor descriptor ) { Boolean val = mStatus.get( descriptor ); return val == null ? false : val; @@ -190,6 +195,13 @@ public class MogoStatusManager implements IMogoStatusManager { recordStatusModifier( tag, StatusDescriptor.SEEK_HELPING ); } + @Override + public void setDisplayOverview( String tag, boolean display ) { + mStatus.put( StatusDescriptor.DISPLAY_OVERVIEW, display ); + invokeStatusChangedListener( StatusDescriptor.DISPLAY_OVERVIEW, display ); + recordStatusModifier( tag, StatusDescriptor.DISPLAY_OVERVIEW ); + } + private void invokeStatusChangedListener( StatusDescriptor descriptor, boolean status ) { if ( mListeners.containsKey( descriptor ) ) { Iterator< IMogoStatusChangedListener > iterator = mListeners.get( descriptor ).iterator(); diff --git a/upload.sh b/upload.sh index 317bc3cf79..69ea42b918 100755 --- a/upload.sh +++ b/upload.sh @@ -15,11 +15,11 @@ ./gradlew :modules:mogo-module-share:clean :modules:mogo-module-share:uploadArchives ./gradlew :modules:mogo-module-authorize:clean :modules:mogo-module-authorize:uploadArchives ./gradlew :modules:mogo-module-extensions:clean :modules:mogo-module-extensions:uploadArchives +./gradlew :modules:mogo-module-gps-simulator:clean :modules:mogo-module-gps-simulator:uploadArchives ./gradlew :modules:mogo-module-search:clean :modules:mogo-module-search:uploadArchives ./gradlew :modules:mogo-module-main:clean :modules:mogo-module-main:uploadArchives ./gradlew :modules:mogo-module-back:clean :modules:mogo-module-back:uploadArchives ./gradlew :modules:mogo-module-guide:clean :modules:mogo-module-guide:uploadArchives -./gradlew :modules:mogo-module-gps-simulator:clean :modules:mogo-module-gps-simulator:uploadArchives ./gradlew :modules:mogo-module-gps-simulator-debug:clean :modules:mogo-module-gps-simulator-debug:uploadArchives ./gradlew :modules:mogo-module-gps-simulator-noop:clean :modules:mogo-module-gps-simulator-noop:uploadArchives