From ad6be2aa69314673176439c4038c415326e8bc34 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Thu, 16 Jan 2020 15:12:55 +0800 Subject: [PATCH] opt --- .../amap/navi/AMapNaviListenerAdapter.java | 28 ++- .../amap/navi/AimlessModeListenerAdapter.java | 204 ++++++++++++++++++ .../mogo/map/impl/amap/navi/NaviClient.java | 21 +- .../impl/amap/navi/NaviListenerAdapter.java | 89 +++++++- .../java/com/mogo/map/navi/IMogoNavi.java | 3 +- .../com/mogo/map/navi/IMogoNaviListener.java | 5 + .../map/navi/MogoNaviListenerHandler.java | 7 + .../java/com/mogo/map/navi/MogoTraffic.java | 76 +++++++ .../extensions/entrance/EntranceFragment.java | 37 +++- .../module_ext_dw_speed_limit_bkg.xml | 9 + .../res/layout/module_ext_layout_entrance.xml | 31 +++ .../layout/module_ext_layout_extensions.xml | 4 +- .../src/main/AndroidManifest.xml | 2 +- .../com/mogo/module/main/MainActivity.java | 8 +- .../module/main/cards/MogoModulesManager.java | 19 ++ .../module/main/receiver/MogoReceiver.java | 40 ---- .../res/layout/module_main_activity_main.xml | 2 +- .../navi/ui/search/ChoosePathFragment.kt | 6 +- .../module/service/MogoServiceProvider.java | 42 ++-- .../module/service/receiver/MogoReceiver.java | 8 +- .../tanlu/fragment/TanluCardViewFragment.java | 9 +- .../service/intent/IMogoIntentManager.java | 2 +- 22 files changed, 559 insertions(+), 93 deletions(-) create mode 100644 libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AimlessModeListenerAdapter.java create mode 100644 libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoTraffic.java create mode 100644 modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_speed_limit_bkg.xml delete mode 100644 modules/mogo-module-main/src/main/java/com/mogo/module/main/receiver/MogoReceiver.java 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 03d7ccb4d3..f870148573 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 @@ -109,20 +109,20 @@ public abstract class AMapNaviListenerAdapter implements AMapNaviListener { @Override public void updateCameraInfo( AMapNaviCameraInfo[] aMapNaviCameraInfos ) { - if ( aMapNaviCameraInfos != null ) { - for ( AMapNaviCameraInfo aMapNaviCameraInfo : aMapNaviCameraInfos ) { - if ( aMapNaviCameraInfo != null ) { - Logger.i( TAG, "current camera speed: %d", aMapNaviCameraInfo.getCameraSpeed() ); - } - } - } + } @Override public void updateIntervalCameraInfo( AMapNaviCameraInfo aMapNaviCameraInfo, AMapNaviCameraInfo aMapNaviCameraInfo1, int i ) { - + if ( aMapNaviCameraInfo != null ) { + Logger.i( TAG, "current camera speed: %d, status = %d", aMapNaviCameraInfo.getCameraSpeed(), i ); + } + if ( aMapNaviCameraInfo1 != null ) { + Logger.i( TAG, "current camera speed: %d, status = %d", aMapNaviCameraInfo1.getCameraSpeed(), i ); + } } + @Override public void onServiceAreaUpdate( AMapServiceAreaInfo[] aMapServiceAreaInfos ) { @@ -188,11 +188,23 @@ public abstract class AMapNaviListenerAdapter implements AMapNaviListener { } + /** + * 巡航回调 + * 连续5个点速度大于15km/h后触发 updateAimlessModeStatistics 回调,通过 AimLessModeStat 对象可获取巡航的连续行驶距离和连续启用时间 + * + * @param aimLessModeStat + */ @Override public void updateAimlessModeStatistics( AimLessModeStat aimLessModeStat ) { } + /** + * 巡航回调 + * 出现拥堵长度大于500米且拥堵时间大于5分钟时,会进到 updateAimlessModeCongestionInfo 回调中,通过 AimLessModeCongestionInfo 对象,可获取到道路拥堵信息(如:导致拥堵的事件类型、拥堵的状态等) + * + * @param aimLessModeCongestionInfo + */ @Override public void updateAimlessModeCongestionInfo( AimLessModeCongestionInfo aimLessModeCongestionInfo ) { diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AimlessModeListenerAdapter.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AimlessModeListenerAdapter.java new file mode 100644 index 0000000000..9b9f45e1ef --- /dev/null +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/navi/AimlessModeListenerAdapter.java @@ -0,0 +1,204 @@ +package com.mogo.map.impl.amap.navi; + +import com.amap.api.navi.AimlessModeListener; +import com.amap.api.navi.model.AMapNaviTrafficFacilityInfo; +import com.amap.api.navi.model.AimLessModeCongestionInfo; +import com.amap.api.navi.model.AimLessModeStat; +import com.mogo.map.navi.MogoNaviListenerHandler; +import com.mogo.map.navi.MogoTraffic; + +/** + * @author congtaowang + * @since 2020-01-16 + *

+ * 巡航监听 + */ +public class AimlessModeListenerAdapter implements AimlessModeListener { + + @Override + public void onUpdateTrafficFacility( AMapNaviTrafficFacilityInfo[] aMapNaviTrafficFacilityInfos ) { + if ( aMapNaviTrafficFacilityInfos == null || aMapNaviTrafficFacilityInfos.length == 0 ) { + return; + } + int speedLimit = 0; + for ( AMapNaviTrafficFacilityInfo aMapNaviTrafficFacilityInfo : aMapNaviTrafficFacilityInfos ) { + if ( aMapNaviTrafficFacilityInfo == null ) { + continue; + } + speedLimit = aMapNaviTrafficFacilityInfo.getLimitSpeed(); + if ( aMapNaviTrafficFacilityInfo.getBroadcastType() == 4 && aMapNaviTrafficFacilityInfo.getLimitSpeed() > 0 ) { + MogoTraffic traffic = new MogoTraffic( MogoTraffic.TYPE_AIM ); + traffic.setDistance( aMapNaviTrafficFacilityInfo.getDistance() ); + traffic.setSpeedLimit( aMapNaviTrafficFacilityInfo.getLimitSpeed() ); + traffic.setDesc( "测速摄像头、测速雷达" ); + MogoNaviListenerHandler.getInstance().onUpdateTraffic( traffic ); + } + } + if ( speedLimit <= 0 ) { + MogoTraffic traffic = new MogoTraffic( MogoTraffic.TYPE_AIM ); + traffic.setDistance( 0 ); + traffic.setSpeedLimit( 0 ); + traffic.setDesc( "测速摄像头、测速雷达" ); + MogoNaviListenerHandler.getInstance().onUpdateTraffic( traffic ); + } +// MogoTraffic traffic = new MogoTraffic( MogoTraffic.TYPE_AIM ); +// traffic.setDistance( aMapNaviTrafficFacilityInfos[0].getDistance() ); +// traffic.setSpeedLimit( aMapNaviTrafficFacilityInfos[0].getLimitSpeed() ); +// switch ( aMapNaviTrafficFacilityInfos[0].getBroadcastType() ) { +// case 0: +// traffic.setDesc( "未知道路设施" ); +// break; +// case 4: +// traffic.setDesc( "测速摄像头、测速雷达" ); +// break; +// case 5: +// traffic.setDesc( "违章摄像头" ); +// break; +// case 10: +// traffic.setDesc( "请谨慎驾驶" ); +// break; +// case 11: +// traffic.setDesc( "有连续拍照" ); +// break; +// case 12: +// traffic.setDesc( "铁路道口" ); +// break; +// case 13: +// traffic.setDesc( "注意落石(左侧)" ); +// break; +// case 14: +// traffic.setDesc( "事故易发地段" ); +// break; +// case 15: +// traffic.setDesc( "易滑" ); +// break; +// case 16: +// traffic.setDesc( "村庄" ); +// break; +// case 18: +// traffic.setDesc( "前方学校" ); +// break; +// case 19: +// traffic.setDesc( "有人看管的铁路道口" ); +// break; +// case 20: +// traffic.setDesc( "无人看管的铁路道口" ); +// break; +// case 21: +// traffic.setDesc( "两侧变窄" ); +// break; +// case 22: +// traffic.setDesc( "向左急弯路" ); +// break; +// case 23: +// traffic.setDesc( "向右急弯路" ); +// break; +// case 24: +// traffic.setDesc( "反向弯路" ); +// break; +// case 25: +// traffic.setDesc( "连续弯路" ); +// break; +// case 26: +// traffic.setDesc( "左侧合流标识牌" ); +// break; +// case 27: +// traffic.setDesc( "右侧合流标识牌" ); +// break; +// case 28: +// traffic.setDesc( "监控摄像头" ); +// break; +// case 29: +// traffic.setDesc( "专用道摄像头" ); +// break; +// case 31: +// traffic.setDesc( "禁止超车" ); +// break; +// case 36: +// traffic.setDesc( "右侧变窄" ); +// break; +// case 37: +// traffic.setDesc( "左侧变窄" ); +// break; +// case 38: +// traffic.setDesc( "窄桥" ); +// break; +// case 39: +// traffic.setDesc( "左右绕行" ); +// break; +// case 40: +// traffic.setDesc( "左侧绕行" ); +// break; +// case 41: +// traffic.setDesc( "右侧绕行" ); +// break; +// case 42: +// traffic.setDesc( "注意落石(右侧)" ); +// break; +// case 43: +// traffic.setDesc( "傍山险路(左侧)" ); +// break; +// case 44: +// traffic.setDesc( "傍山险路(右侧)" ); +// break; +// case 47: +// traffic.setDesc( "上陡坡" ); +// break; +// case 48: +// traffic.setDesc( "下陡坡" ); +// break; +// case 49: +// traffic.setDesc( "过水路面" ); +// break; +// case 50: +// traffic.setDesc( "路面不平" ); +// break; +// case 52: +// traffic.setDesc( "慢行" ); +// break; +// case 53: +// traffic.setDesc( "注意危险" ); +// break; +// case 58: +// traffic.setDesc( "隧道" ); +// break; +// case 59: +// traffic.setDesc( "渡口" ); +// break; +// case 92: +// traffic.setDesc( "闯红灯" ); +// break; +// case 93: +// traffic.setDesc( "应急车道" ); +// break; +// case 94: +// traffic.setDesc( "非机动车道" ); +// break; +// case 100: +// traffic.setDesc( "不绑定电子眼高发地" ); +// break; +// case 101: +// traffic.setDesc( "车道违章" ); +// break; +// case 102: +// traffic.setDesc( "超速违章" ); +// break; +// } + + } + + @Override + public void onUpdateAimlessModeElecCameraInfo( AMapNaviTrafficFacilityInfo[] aMapNaviTrafficFacilityInfos ) { + + } + + @Override + public void updateAimlessModeStatistics( AimLessModeStat aimLessModeStat ) { + + } + + @Override + public void updateAimlessModeCongestionInfo( AimLessModeCongestionInfo aimLessModeCongestionInfo ) { + + } +} 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 1675ec9d3f..5af6826e99 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 @@ -5,6 +5,7 @@ import android.graphics.Rect; import com.amap.api.maps.model.Polyline; import com.amap.api.navi.AMapNavi; +import com.amap.api.navi.enums.AimLessMode; import com.amap.api.navi.enums.NaviType; import com.amap.api.navi.model.NaviLatLng; import com.mogo.map.MogoLatLng; @@ -32,6 +33,9 @@ public class NaviClient implements IMogoNavi { private AMapNavi mAMapNavi; private final NaviListenerAdapter mAMapNaviListener; + + private final AimlessModeListenerAdapter mAimlessModeListener; + /** * 导航策略配置 */ @@ -45,7 +49,10 @@ public class NaviClient implements IMogoNavi { mAMapNavi.setEmulatorNaviSpeed( 120 ); mAMapNavi.setUseInnerVoice( true ); mAMapNaviListener = new NaviListenerAdapter( context, mAMapNavi, this ); + mAimlessModeListener = new AimlessModeListenerAdapter() { + }; mAMapNavi.addAMapNaviListener( mAMapNaviListener ); + mAMapNavi.addAimlessModeListener( mAimlessModeListener ); } public static NaviClient getInstance( Context context ) { @@ -123,6 +130,8 @@ public class NaviClient implements IMogoNavi { if ( mAMapNaviListener != null ) { mAMapNaviListener.stopNavi(); } + // 开启巡航 巡航时返回电子眼和特殊道路设施信息 + mAMapNavi.startAimlessMode( AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED ); } @@ -131,6 +140,8 @@ public class NaviClient implements IMogoNavi { if ( mAMapNaviListener.isStopped() ) { return; } + // 关闭巡航 + mAMapNavi.stopAimlessMode(); mIsRealNavi = isRealNavi; mAMapNavi.startNavi( isRealNavi ? NaviType.GPS : NaviType.EMULATOR ); } @@ -176,16 +187,18 @@ public class NaviClient implements IMogoNavi { @Override public void setCalculatePathDisplayBounds( Rect bounds ) { if ( mAMapNaviListener != null ) { - mAMapNaviListener.setCalculatePathDisplayBounds(bounds); + mAMapNaviListener.setCalculatePathDisplayBounds( bounds ); } } - @Override public MogoNaviConfig getNaviConfig() { + @Override + public MogoNaviConfig getNaviConfig() { return mMogoNaviConfig; } - @Override public boolean setBroadcastMode(int mode) { - return mAMapNavi.setBroadcastMode(mode); + @Override + public boolean setBroadcastMode( int mode ) { + return mAMapNavi.setBroadcastMode( mode ); } // -- end 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 7330664e18..572380b7d1 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 @@ -5,8 +5,13 @@ import android.graphics.Rect; import com.amap.api.maps.model.Polyline; import com.amap.api.navi.AMapNavi; +import com.amap.api.navi.AimlessModeListener; +import com.amap.api.navi.enums.AimLessMode; +import com.amap.api.navi.enums.CameraType; +import com.amap.api.navi.enums.CarEnterCameraStatus; import com.amap.api.navi.enums.NaviType; import com.amap.api.navi.model.AMapCalcRouteResult; +import com.amap.api.navi.model.AMapNaviCameraInfo; import com.amap.api.navi.model.AMapNaviInfo; import com.amap.api.navi.model.AMapNaviLocation; import com.amap.api.navi.model.NaviInfo; @@ -15,6 +20,7 @@ import com.mogo.map.impl.amap.message.AMapMessageManager; import com.mogo.map.impl.amap.utils.ObjectUtils; import com.mogo.map.navi.MogoCalculatePath; import com.mogo.map.navi.MogoNaviListenerHandler; +import com.mogo.map.navi.MogoTraffic; import com.mogo.map.navi.OnCalculatePathItemClickInteraction; import com.mogo.utils.logger.Logger; @@ -86,14 +92,77 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { } @Override - public void onStartNavi( int i ) { - setStopped( false ); - setNaviing( true ); - if ( mAMapNavi != null ) { - mAMapNavi.startSpeak(); + public void updateCameraInfo( AMapNaviCameraInfo[] aMapNaviCameraInfos ) { + super.updateCameraInfo( aMapNaviCameraInfos ); + if ( aMapNaviCameraInfos == null || aMapNaviCameraInfos.length == 0 ) { + return; + } + int limitSpeed = 0; + for ( AMapNaviCameraInfo aMapNaviCameraInfo : aMapNaviCameraInfos ) { + if ( aMapNaviCameraInfo == null ) { + continue; + } + limitSpeed = aMapNaviCameraInfo.getCameraSpeed(); + if ( limitSpeed > 0 && aMapNaviCameraInfo.getCameraType() == CameraType.SPEED ) { + MogoTraffic traffic = new MogoTraffic( MogoTraffic.TYPE_NAVI ); + traffic.setDistance( aMapNaviCameraInfo.getCameraDistance() ); + traffic.setSpeedLimit( aMapNaviCameraInfo.getCameraSpeed() ); + traffic.setDesc( "测速摄像" ); + MogoNaviListenerHandler.getInstance().onUpdateTraffic( traffic ); + } + +// switch ( aMapNaviCameraInfo.getCameraType() ) { +// case CameraType.SPEED: +// +// break; +// case CameraType.SURVEILLANCE: +// traffic.setDesc( "监控摄像" ); +// break; +// case CameraType.TRAFFICLIGHT: +// traffic.setDesc( "闯红灯拍照" ); +// break; +// case CameraType.BREAKRULE: +// traffic.setDesc( "违章拍照" ); +// break; +// case CameraType.BUSWAY: +// traffic.setDesc( "公交专用道摄像头" ); +// break; +// case CameraType.EMERGENCY: +// traffic.setDesc( "应急车道拍照" ); +// break; +// case CameraType.BICYCLE: +// traffic.setDesc( "非机动车道" ); +// break; +// case CameraType.INTERVALVELOCITYSTART: +// traffic.setDesc( "区间测速起始" ); +// break; +// case CameraType.INTERVALVELOCITYEND: +// traffic.setDesc( "区间测速解除" ); +// break; +// } + } + if ( limitSpeed <= 0 ) { + MogoTraffic traffic = new MogoTraffic( MogoTraffic.TYPE_NAVI ); + traffic.setDistance( 0 ); + traffic.setSpeedLimit( 0 ); + traffic.setDesc( "测速摄像" ); + MogoNaviListenerHandler.getInstance().onUpdateTraffic( traffic ); + } + } + + @Override + public void onStartNavi( int type ) { + + // 巡航 + if ( type != NaviType.CRUISE ) { + setStopped( false ); + setNaviing( true ); + if ( mAMapNavi != null ) { + mAMapNavi.startSpeak(); + } + MogoNaviListenerHandler.getInstance().onStartNavi(); + AMapMessageManager.getInstance().postNaviStarted(); } - MogoNaviListenerHandler.getInstance().onStartNavi(); - AMapMessageManager.getInstance().postNaviStarted(); } @Override @@ -175,15 +244,15 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter { } } - public void clearCalculatePaths(){ + public void clearCalculatePaths() { if ( mNaviOverlayHelper != null ) { mNaviOverlayHelper.clearCalculatedOverlay(); } } - public void setCalculatePathDisplayBounds( Rect bounds ){ + public void setCalculatePathDisplayBounds( Rect bounds ) { if ( mNaviOverlayHelper != null ) { - mNaviOverlayHelper.setCalculatePathDisplayBounds(bounds); + mNaviOverlayHelper.setCalculatePathDisplayBounds( bounds ); } } } 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 73fcb2d307..74f7579b07 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 @@ -63,7 +63,8 @@ public interface IMogoNavi { * * @param isRealNavi true - 实时导航 false - 模拟导航 */ - void startNavi( boolean isRealNavi ); + void + startNavi( boolean isRealNavi ); /** * 是否正在导航 diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNaviListener.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNaviListener.java index 762e5d4f91..3047900c0e 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNaviListener.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/IMogoNaviListener.java @@ -44,4 +44,9 @@ public interface IMogoNaviListener { * 路径规划失败 */ void onoCalculateFailed(); + + /** + * 巡航信息发生改变 + */ + void onUpdateTraffic(MogoTraffic traffic); } 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 f3a29328f9..f627910fe6 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 @@ -91,4 +91,11 @@ public class MogoNaviListenerHandler implements IMogoNaviListener, IMogoNaviList mDelegateListener.onoCalculateFailed(); } } + + @Override + public void onUpdateTraffic( MogoTraffic traffic ) { + if ( mDelegateListener != null ) { + mDelegateListener.onUpdateTraffic( traffic ); + } + } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoTraffic.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoTraffic.java new file mode 100644 index 0000000000..a331207c91 --- /dev/null +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/navi/MogoTraffic.java @@ -0,0 +1,76 @@ +package com.mogo.map.navi; + +/** + * @author congtaowang + * @since 2020-01-16 + *

+ * 巡航信息、导航信息 + */ +public class MogoTraffic { + + /** + * 导航 + */ + public static final int TYPE_NAVI = 1; + + /** + * 巡航 + */ + public static final int TYPE_AIM = 2; + + /** + * 导航 or 巡航 + */ + private int mFromType; + + /** + * 距离 + */ + private int mDistance; + + /** + * 限速 + */ + private int mSpeedLimit; + + /** + * 描述 + */ + private String mDesc; + + public MogoTraffic( int fromType ) { + mFromType = fromType; + } + + public int getFromType() { + return mFromType; + } + + public void setFromType( int fromType ) { + this.mFromType = fromType; + } + + public int getDistance() { + return mDistance; + } + + public void setDistance( int distance ) { + this.mDistance = distance; + } + + public int getSpeedLimit() { + return mSpeedLimit; + } + + public void setSpeedLimit( int speedLimit ) { + this.mSpeedLimit = speedLimit; + } + + public String getDesc() { + return mDesc; + } + + public void setDesc( String desc ) { + this.mDesc = desc; + } +} 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 f02dad8dff..e9bbd2e69f 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 @@ -23,6 +23,7 @@ import com.mogo.map.model.MogoPoi; import com.mogo.map.navi.IMogoNavi; import com.mogo.map.navi.IMogoNaviListener; import com.mogo.map.navi.MogoNaviInfo; +import com.mogo.map.navi.MogoTraffic; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.module.common.MogoModulePaths; @@ -41,6 +42,7 @@ import com.mogo.service.module.IMogoModuleProvider; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.windowview.IMogoWindowManager; import com.mogo.utils.TipToast; + import java.util.HashMap; /** @@ -67,6 +69,10 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent private NaviInfoView mNaviInfo; private TextView mExitNavi; + private View mSpeedLimit; + private TextView mSpeedLimitValue; + private View mSpeedLimitUnit; + private IMogoMapService mService; private IMogoMapUIController mMApUIController; private IMogoLocationClient mMogoLocationClient; @@ -91,7 +97,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent @Override protected void initViews() { mMogoFragmentManager = ( IMogoFragmentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_FRAGMENT_MANAGER ).navigation(); - mMogoAddressManager = (IMogoAddressManager) ARouter.getInstance().build( MogoServicePaths.PATH_ADDRESS_MANAGER ).navigation(); + mMogoAddressManager = ( IMogoAddressManager ) ARouter.getInstance().build( MogoServicePaths.PATH_ADDRESS_MANAGER ).navigation(); mCommonAddress = findViewById( R.id.module_entrance_id_common_address ); mSearch = findViewById( R.id.module_entrance_id_search ); @@ -135,7 +141,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mExitNavi.setOnClickListener( view -> { if ( mMogoNavi != null ) { if ( mIsLock ) { - NaviNoticeDialog naviNoticeDialog = new NaviNoticeDialog(getContext()); + NaviNoticeDialog naviNoticeDialog = new NaviNoticeDialog( getContext() ); naviNoticeDialog.show(); } else { mMApUIController.recoverLockMode(); @@ -143,6 +149,10 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent } } ); + mSpeedLimit = findViewById( R.id.module_entrance_id_speed_limit_container ); + mSpeedLimitValue = findViewById( R.id.module_entrance_id_speed_limit_value ); + mSpeedLimitUnit = findViewById( R.id.module_entrance_id_speed_limit_unit ); + } @NonNull @@ -188,9 +198,9 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mCommonAddress.setVisibility( View.GONE ); mNaviInfo.setVisibility( View.VISIBLE ); mExitNavi.setVisibility( View.VISIBLE ); - AnalyticsUtils.track("Navigation_guide_type", new HashMap<>()); + AnalyticsUtils.track( "Navigation_guide_type", new HashMap<>() ); - mMApUIController.setPointToCenter(0.675926, 0.77552); + mMApUIController.setPointToCenter( 0.675926, 0.77552 ); } @Override @@ -198,9 +208,10 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mCommonAddress.setVisibility( View.VISIBLE ); mNaviInfo.setVisibility( View.GONE ); mExitNavi.setVisibility( View.GONE ); - AnalyticsUtils.track("Navigation_guide_type", new HashMap<>()); + mSpeedLimit.setVisibility( View.GONE ); + AnalyticsUtils.track( "Navigation_guide_type", new HashMap<>() ); - mMApUIController.setPointToCenter(0.66145, 0.590688); + mMApUIController.setPointToCenter( 0.66145, 0.590688 ); } @@ -212,6 +223,20 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent public void onoCalculateFailed() { } + @Override + public void onUpdateTraffic( MogoTraffic traffic ) { + if ( traffic == null ) { + return; + } + if ( traffic.getSpeedLimit() <= 0 ) { + mSpeedLimit.setVisibility( View.INVISIBLE ); + mSpeedLimitValue.setText( "--" ); + } else { + mSpeedLimit.setVisibility( View.VISIBLE ); + mSpeedLimitValue.setText( String.valueOf( traffic.getSpeedLimit() ) ); + } + } + @Override public void onMapLoaded() { diff --git a/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_speed_limit_bkg.xml b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_speed_limit_bkg.xml new file mode 100644 index 0000000000..290a36041c --- /dev/null +++ b/modules/mogo-module-extensions/src/main/res/drawable/module_ext_dw_speed_limit_bkg.xml @@ -0,0 +1,9 @@ + + + + + + /> + + + \ No newline at end of file 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 d21d892790..ac2d2f671c 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 @@ -1,6 +1,7 @@ @@ -71,6 +72,36 @@ + + + + + + + + android:paddingLeft="@dimen/dp_60" + android:paddingRight="@dimen/dp_60"> impleme @Override public void onPageSelected( int position ) { try { + IMogoModuleProvider provider = mCardModulesAdapter.getProvider( mCurrentPosition ); + trackLastCardShowEvent( provider ); + mCurrentPosition = position; - final IMogoModuleProvider provider = mCardModulesAdapter.getProvider( position ); + provider = mCardModulesAdapter.getProvider( mCurrentPosition ); mMogoModuleHandler.setEnable( provider.getModuleName() ); if ( !isClickMarker ) { mMogoCardManager.invoke( position, mMogoModuleHandler.getCurrentModuleName() ); } - trackCardSelectedEvent( provider ); } catch ( Exception e ) { e.printStackTrace(); } @@ -129,7 +131,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme * 卡片展示时长埋点 * @param provider */ - private void trackCardSelectedEvent( IMogoModuleProvider provider ) { + private void trackLastCardShowEvent( IMogoModuleProvider provider ) { if ( provider == null ) { return; } 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 5e2f28c330..6cc2f7d8ee 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.marker.IMogoMarkerClickListener; import com.mogo.map.model.MogoPoi; import com.mogo.map.navi.IMogoNaviListener; import com.mogo.map.navi.MogoNaviInfo; +import com.mogo.map.navi.MogoTraffic; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.module.common.MogoModule; import com.mogo.module.common.MogoModulePaths; @@ -462,6 +463,24 @@ public class MogoModulesManager implements MogoModulesHandler, } } + @Override + public void onUpdateTraffic( MogoTraffic traffic ) { + Iterator< IMogoNaviListener > iterator = MogoRegisterCenterHandler.getInstance().getNaviListeners(); + if ( iterator == null ) { + return; + } + while ( iterator.hasNext() ) { + IMogoNaviListener listener = iterator.next(); + if ( listener != null ) { + try { + listener.onUpdateTraffic(traffic); + } catch ( Exception e ) { + Logger.e( TAG, e, "error." ); + } + } + } + } + @Override public void onLocationChanged( MogoLocation location ) { Iterator< IMogoLocationListener > iterator = MogoRegisterCenterHandler.getInstance().getLocationListeners(); diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/receiver/MogoReceiver.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/receiver/MogoReceiver.java deleted file mode 100644 index 129523cbbb..0000000000 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/receiver/MogoReceiver.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.mogo.module.main.receiver; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.text.TextUtils; - -/** - * @author congtaowang - * @since 2020-01-02 - *

- * 广播接收者 - *

- * {@link Intent#ACTION_POWER_CONNECTED} - * {@link Intent#ACTION_POWER_DISCONNECTED} - */ -public class MogoReceiver extends BroadcastReceiver { - - public static void register( Context context ) { - if ( context == null ) { - return; - } - IntentFilter inputFilter = new IntentFilter(); - inputFilter.addAction( Intent.ACTION_POWER_CONNECTED ); - inputFilter.addAction( Intent.ACTION_POWER_DISCONNECTED ); - context.getApplicationContext().registerReceiver( new MogoReceiver(), inputFilter ); - } - - @Override - public void onReceive( Context context, Intent intent ) { - final String action = intent.getAction(); - if ( TextUtils.equals( action, Intent.ACTION_POWER_CONNECTED ) ) { - - } - if ( TextUtils.equals( action, Intent.ACTION_POWER_DISCONNECTED ) ) { - - } - } -} diff --git a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml index 299315a101..f9e8a40907 100644 --- a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml +++ b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml @@ -41,7 +41,7 @@ + android:layout_marginLeft="@dimen/dp_60"> > public void onoCalculateFailed() { } + + @Override + public void onUpdateTraffic( MogoTraffic traffic ) { + + } }); //监听marker点击 @@ -799,7 +804,7 @@ public class TanluCardViewFragment extends MvpFragment> getViewLifecycleOwner().getLifecycle().removeObserver(mPresenter); TanluServiceHandler.getLocationClient().removeLocationListener(this); mMogoRegisterCenter.unregisterMogoNaviListener(TanluConstants.MODEL_NAME); - mogoIntentManager.unregisterIntentListener(MogoReceiver.ADAS_ACTION); + mogoIntentManager.unregisterIntentListener(MogoReceiver.ACTIION_ADAS ); } /** diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/intent/IMogoIntentManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/intent/IMogoIntentManager.java index 1a978d1b25..cb3538048f 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/intent/IMogoIntentManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/intent/IMogoIntentManager.java @@ -8,7 +8,7 @@ import com.alibaba.android.arouter.facade.template.IProvider; * @author congtaowang * @since 2020-01-09 *

- * 免唤醒语音控制 + * 唤醒语音控制 */ public interface IMogoIntentManager extends IProvider {