From d77b63e6fa9aaaaeb0c0b6f6ef8f4d1af097bd6b Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Thu, 26 Mar 2020 11:02:06 +0800 Subject: [PATCH] add navilisten api --- .idea/misc.xml | 2 +- gradle.properties | 36 ++++++++--------- .../impl/amap/navi/NaviListenerAdapter.java | 19 +++++---- .../com/mogo/map/navi/IMogoNaviListener2.java | 20 ++++++++++ .../map/navi/MogoNaviListenerHandler.java | 16 +++++++- .../module/main/cards/MogoModulesManager.java | 39 ++++++++++++++++++- 6 files changed, 104 insertions(+), 28 deletions(-) create mode 100644 libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNaviListener2.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 707ee6e613..2dc54c489f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index e0da3af9ed..79610a7704 100644 --- a/gradle.properties +++ b/gradle.properties @@ -27,24 +27,24 @@ PASSWORD=xintai2018 RELEASE=false # 模块版本 ## 工程内模块 -MOGO_MODULE_SHARE_VERSION=1.0.2-SNAPSHOT -MOGO_COMMONS_VERSION=1.0.2-SNAPSHOT -MOGO_UTILS_VERSION=1.0.2-SNAPSHOT -MAP_AMAP_VERSION=1.0.2-SNAPSHOT -MOGO_MAP_VERSION=1.0.2-SNAPSHOT -MOGO_MAP_API_VERSION=1.0.2-SNAPSHOT -MOGO_MODULE_COMMON_VERSION=1.0.2-SNAPSHOT -MOGO_MODULE_MAIN_VERSION=1.0.2-SNAPSHOT -MOGO_MODULE_MAP_VERSION=1.0.2-SNAPSHOT -MOGO_SERVICE_VERSION=1.0.2-SNAPSHOT -MOGO_SERVICE_API_VERSION=1.0.2-SNAPSHOT -MOGO_MODULE_APPS_VERSION=1.0.2-SNAPSHOT -MOGO_CONNECTION_VERSION=1.0.2-SNAPSHOT -MOGO_MODULE_NAVI_VERSION=1.0.2-SNAPSHOT -MOGO_MODULE_SERVICE_VERSION=1.0.2-SNAPSHOT -MOGO_MODULE_EXTENSIONS_VERSION=1.0.2-SNAPSHOT -MOGO_MODULE_SEARCH_VERSION=1.0.2-SNAPSHOT -MOGO_MODULE_BACK_VERSION=1.0.2-SNAPSHOT +MOGO_MODULE_SHARE_VERSION=1.0.3-SNAPSHOT +MOGO_COMMONS_VERSION=1.0.3-SNAPSHOT +MOGO_UTILS_VERSION=1.0.3-SNAPSHOT +MAP_AMAP_VERSION=1.0.3-SNAPSHOT +MOGO_MAP_VERSION=1.0.3-SNAPSHOT +MOGO_MAP_API_VERSION=1.0.3-SNAPSHOT +MOGO_MODULE_COMMON_VERSION=1.0.3-SNAPSHOT +MOGO_MODULE_MAIN_VERSION=1.0.3-SNAPSHOT +MOGO_MODULE_MAP_VERSION=1.0.3-SNAPSHOT +MOGO_SERVICE_VERSION=1.0.3-SNAPSHOT +MOGO_SERVICE_API_VERSION=1.0.3-SNAPSHOT +MOGO_MODULE_APPS_VERSION=1.0.3-SNAPSHOT +MOGO_CONNECTION_VERSION=1.0.3-SNAPSHOT +MOGO_MODULE_NAVI_VERSION=1.0.3-SNAPSHOT +MOGO_MODULE_SERVICE_VERSION=1.0.3-SNAPSHOT +MOGO_MODULE_EXTENSIONS_VERSION=1.0.3-SNAPSHOT +MOGO_MODULE_SEARCH_VERSION=1.0.3-SNAPSHOT +MOGO_MODULE_BACK_VERSION=1.0.3-SNAPSHOT MOGO_MODULE_AUTHORIZE_VERSION=1.0.0-SNAPSHOT MOGO_MODULE_GUIDE_VERSION=1.0.0-SNAPSHOT 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 b89eca72b5..d52c05fb59 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 @@ -171,24 +171,33 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { @Override public void onEndEmulatorNavi() { - stopNaviDelay(); + stopNaviDelay( () -> { + MogoNaviListenerHandler.getInstance().onEndEmulatorNavi(); + } ); } @Override public void onArriveDestination() { - stopNaviDelay(); + stopNaviDelay( () -> { + MogoNaviListenerHandler.getInstance().onArriveDestination(); + } ); } /** * 避免导航结束语音播报被立刻打断的情况 + * + * @param after 停止后的行为 */ - private void stopNaviDelay() { + private void stopNaviDelay( Runnable after ) { UiThreadHandler.postDelayed( () -> { if ( TextUtils.isEmpty( mLastSpeakWord ) || !mLastSpeakWord.contains( "结束" ) ) { AIAssist.getInstance( mContext ).speakTTSVoice( "到达目的地附近,本次导航结束" ); } mLastSpeakWord = ""; stopNavi(); + if ( after != null ) { + after.run(); + } }, 5_000L ); } @@ -238,10 +247,6 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { if ( mNaviOverlayHelper != null ) { mNaviOverlayHelper.handleClickedPolyline( polyline, isNaviing() ); mAMapNavi.selectRouteId( mNaviOverlayHelper.getSelectedPathId() ); -// if ( isNaviing() ) { -// mAMapNavi.stopNavi(); -// mAMapNavi.startNavi( mClient.isRealNavi() ? NaviType.GPS : NaviType.EMULATOR ); -// } } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNaviListener2.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNaviListener2.java new file mode 100644 index 0000000000..831d5d77a0 --- /dev/null +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNaviListener2.java @@ -0,0 +1,20 @@ +package com.mogo.map.navi; + +/** + * @author congtaowang + * @since 2019-12-25 + *

+ * 导航监听:区分导航结束 + */ +public interface IMogoNaviListener2 extends IMogoNaviListener { + + /** + * 实际导航结束 + */ + void onArriveDestination(); + + /** + * 模拟导航结束 + */ + void onEndEmulatorNavi(); +} diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoNaviListenerHandler.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoNaviListenerHandler.java index 7cc2f00e1a..042db244bc 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoNaviListenerHandler.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoNaviListenerHandler.java @@ -6,7 +6,7 @@ package com.mogo.map.navi; *

* 地图监听注册管理 */ -public class MogoNaviListenerHandler implements IMogoNaviListener, IMogoNaviListenerRegister, IMogoAimlessModeListener { +public class MogoNaviListenerHandler implements IMogoNaviListener2, IMogoNaviListenerRegister, IMogoAimlessModeListener { private static volatile MogoNaviListenerHandler sInstance; @@ -128,4 +128,18 @@ public class MogoNaviListenerHandler implements IMogoNaviListener, IMogoNaviList mAimlessDelegateListener.onUpdateCongestion( info ); } } + + @Override + public void onArriveDestination() { + if ( mDelegateListener instanceof IMogoNaviListener2 ) { + ( ( IMogoNaviListener2 ) mDelegateListener ).onArriveDestination(); + } + } + + @Override + public void onEndEmulatorNavi() { + if ( mDelegateListener instanceof IMogoNaviListener2 ) { + ( ( IMogoNaviListener2 ) mDelegateListener ).onEndEmulatorNavi(); + } + } } 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 b932dcf256..961aafd349 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 @@ -19,6 +19,7 @@ import com.mogo.map.model.MogoPoi; import com.mogo.map.navi.IMogoAimlessModeListener; import com.mogo.map.navi.IMogoCarLocationChangedListener; import com.mogo.map.navi.IMogoNaviListener; +import com.mogo.map.navi.IMogoNaviListener2; import com.mogo.map.navi.MogoCongestionInfo; import com.mogo.map.navi.MogoNaviInfo; import com.mogo.map.navi.MogoTraffic; @@ -59,7 +60,7 @@ import java.util.Map; */ public class MogoModulesManager implements MogoModulesHandler, IMogoMapListener, - IMogoNaviListener, + IMogoNaviListener2, IMogoLocationListener, IMogoIntentListener { @@ -671,6 +672,42 @@ public class MogoModulesManager implements MogoModulesHandler, } } + @Override + public void onArriveDestination() { + Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoNaviListener listener = iterator.next(); + if ( listener instanceof IMogoNaviListener2 ) { + try { + ( ( IMogoNaviListener2 ) listener ).onArriveDestination(); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } + + @Override + public void onEndEmulatorNavi() { + Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoNaviListener listener = iterator.next(); + if ( listener instanceof IMogoNaviListener2 ) { + try { + ( ( IMogoNaviListener2 ) listener ).onEndEmulatorNavi(); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } + @Override public String getCurrentModuleName() { return mEnableModuleName;