From 45e480cefae0d2713dc87d511d2f5c11caa54fec Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Mon, 13 Apr 2020 09:52:40 +0800 Subject: [PATCH] opt --- .../module/apps/AppNavigatorFragment.java | 11 - modules/mogo-module-common/build.gradle | 5 + .../mogo/module/common/MogoModulePaths.java | 52 -- .../mogo/module/common/map/Interrupter.java | 16 + .../module/common/map/MapCenterPoint.java | 19 + .../common/map/MapCenterPointStrategy.java | 125 +++++ .../com/mogo/module/common/map/Scene.java | 40 ++ .../extensions/entrance/EntranceFragment.java | 42 +- .../com/mogo/module/main/MainActivity.java | 4 +- .../module/navi/constants/AMapConstants.java | 7 + .../navi/constants/SearchServiceHolder.kt | 33 +- .../module/navi/manager/AddressManager.kt | 260 +++++----- .../navi/manager/MogoAddressManager.java | 24 +- .../navi/manager/MogoSearchManager.java | 10 +- .../mogo/module/navi/manager/NaviManager.kt | 133 +++-- .../com/mogo/module/navi/ui/NaviActivity.kt | 5 - .../module/navi/ui/base/BaseFragment.java | 23 - .../navi/ui/search/CategorySearchFragment.kt | 14 +- .../navi/ui/search/ChoosePathFragment.kt | 463 ++++++++---------- .../module/navi/ui/search/SearchFragment.java | 22 +- .../ui/search/SearchFragmentProvider.java | 92 ---- .../navi/ui/setting/NaviSettingFragment.kt | 1 - .../navi/ui/setting/SettingAddressFragment.kt | 48 +- .../com/mogo/module/service/MogoServices.java | 15 +- .../service/module/IMogoAddressManager.java | 27 + .../statusmanager/IMogoStatusManager.java | 13 + .../statusmanager/StatusDescriptor.java | 7 +- .../impl/statusmanager/MogoStatusManager.java | 13 + 28 files changed, 768 insertions(+), 756 deletions(-) create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Interrupter.java create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPoint.java create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java delete mode 100644 modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragmentProvider.java diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java index f1f0822e3e..3092323b9d 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java @@ -144,17 +144,6 @@ public class AppNavigatorFragment extends MvpFragment + * 拦截器 + */ +public interface Interrupter { + + /** + * 是否拦截 + * @return true - 拦截, false - 不拦截 + */ + boolean interrupt(); +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPoint.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPoint.java new file mode 100644 index 0000000000..7d153e3bc9 --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPoint.java @@ -0,0 +1,19 @@ +package com.mogo.module.common.map; + +/** + * @author congtaowang + * @since 2020-04-10 + *

+ * 地图视图中心点 + */ +public class MapCenterPoint { + + public final double x; + public final double y; + + public MapCenterPoint( double x, double y ) { + this.x = x; + this.y = y; + } + +} 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 new file mode 100644 index 0000000000..62c4a193ad --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java @@ -0,0 +1,125 @@ +package com.mogo.module.common.map; + +import com.mogo.map.uicontroller.IMogoMapUIController; +import com.mogo.module.common.utils.CarSeries; +import com.mogo.utils.UiThreadHandler; +import com.mogo.utils.logger.Logger; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author congtaowang + * @since 2020-04-10 + *

+ * 地图中心点策略 + */ +public class MapCenterPointStrategy { + + private static final String TAG = "MapCenterPointStrategy"; + + private static Map< Integer, Map< Integer, MapCenterPoint > > sStrategies = new HashMap<>(); + + public static final MapCenterPoint DEFAULT = new MapCenterPoint( 0.677734D, 0.5733333D ); + + static { + // 普通场景,使用高德内部值 + Map< Integer, MapCenterPoint > common = new HashMap<>(); + common.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.5D, 0.666666666D ) ); + common.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.5D, 0.666666666D ) ); + sStrategies.put( Scene.COMMON, common ); + + // 选点场景,定位中心点 + Map< Integer, MapCenterPoint > choosePoint = new HashMap<>(); + choosePoint.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.5D, 0.5D ) ); + choosePoint.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.5D, 0.5D ) ); + sStrategies.put( Scene.CHOOSE_POINT, choosePoint ); + + + // 导航场景,定位视图右下角偏下 + 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 ) ); + 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 ) ); + sStrategies.put( Scene.AIMLESS, aimless ); + + + // 规划路线,定位视图右边 + Map< Integer, MapCenterPoint > calculatePath = new HashMap<>(); + calculatePath.put( CarSeries.CAR_SERIES_D80X, new MapCenterPoint( 0.733398D, 0.610833D ) ); + calculatePath.put( CarSeries.CAR_SERIES_F80X, new MapCenterPoint( 0.703125D, 0.6083333D ) ); + sStrategies.put( Scene.CALCULATE_PATH, calculatePath ); + + // 分类搜索,定位视图右边 + Map< Integer, MapCenterPoint > categorySearch = new HashMap<>(); + 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 ); + } + + public static void addScene( int scene, Map< Integer, MapCenterPoint > config ) { + if ( sStrategies.containsKey( scene ) ) { + Logger.w( TAG, "scene has already defined, append config..." ); + } + if ( sStrategies.get( scene ) != null ) { + sStrategies.get( scene ).putAll( config ); + } else { + sStrategies.put( scene, config ); + } + } + + /** + * 根据场景触发地图视图改变 + * + * @param controller + * @param scene + */ + public static void setMapCenterPointByScene( IMogoMapUIController controller, int scene ) { + if ( controller == null ) { + return; + } + if ( !sStrategies.containsKey( scene ) ) { + Logger.w( TAG, "no strategy for scene: %s, use DEFAULT", scene ); + controller.setPointToCenter( DEFAULT.x, DEFAULT.y ); + return; + } + Map< Integer, MapCenterPoint > points = sStrategies.get( scene ); + int car = CarSeries.getSeries(); + if ( !points.containsKey( car ) ) { + Logger.w( TAG, "no strategy for series: %s, use DEFAULT", scene ); + controller.setPointToCenter( DEFAULT.x, DEFAULT.y ); + return; + } + MapCenterPoint point = points.get( car ); + if ( point == null ) { + Logger.w( TAG, "no strategy config for series: %s, use DEFAULT", scene ); + controller.setPointToCenter( DEFAULT.x, DEFAULT.y ); + return; + } + controller.setPointToCenter( point.x, point.y ); + } + + /** + * 根据场景触发地图视图改变 + * + * @param controller + * @param scene + */ + public static void setMapCenterPointBySceneAndDelay( final IMogoMapUIController controller, final int scene, long delay, final Interrupter interrupter ) { + UiThreadHandler.postDelayed( () -> { + if ( interrupter != null ) { + if ( interrupter.interrupt() ) { + return; + } + } + setMapCenterPointByScene( controller, scene ); + }, delay ); + } + +} 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 new file mode 100644 index 0000000000..4def37a007 --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/Scene.java @@ -0,0 +1,40 @@ +package com.mogo.module.common.map; + +/** + * @author congtaowang + * @since 2020-04-10 + *

+ * 描述 + */ +public interface Scene { + + /** + * 普通场景 + */ + int COMMON = 0; + + /** + * 选点 + */ + int CHOOSE_POINT = 1; + + /** + * 导航 + */ + int NAVI = 2; + + /** + * 巡航 + */ + int AIMLESS = 3; + + /** + * 路线规划 + */ + int CALCULATE_PATH = 4; + + /** + * 分类搜索 + */ + int CATEGORY_SEARCH = 5; +} 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 9c0c026454..cb63ec5906 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 @@ -1,10 +1,7 @@ package com.mogo.module.extensions.entrance; import android.content.Intent; -import android.graphics.Color; -import android.graphics.Rect; import android.os.Bundle; -import android.text.TextUtils; import android.util.Log; import android.view.MotionEvent; import android.view.View; @@ -29,16 +26,14 @@ 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.overlay.MogoPolylineOptions; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant; -import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant; -import com.mogo.module.authorize.authprovider.invoke.IMogoAuthorizeContentListener; -import com.mogo.module.authorize.authprovider.invoke.IMogoAuthorizeRegister; import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListener; import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager; import com.mogo.module.common.MogoModulePaths; +import com.mogo.module.common.map.MapCenterPointStrategy; +import com.mogo.module.common.map.Scene; import com.mogo.module.extensions.ExtensionsModuleConst; import com.mogo.module.extensions.R; import com.mogo.module.extensions.dialog.NaviNoticeDialog; @@ -55,16 +50,10 @@ import com.mogo.service.module.IMogoAddressManager; import com.mogo.service.module.IMogoModuleProvider; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.statusmanager.IMogoStatusManager; -import com.mogo.utils.WindowUtils; -import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; -import java.util.List; import java.util.Map; -import retrofit2.http.HEAD; - import static com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.AUTHORIZE_TYPE_LAUNCHER_SHARE; /** @@ -118,7 +107,6 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent /** * 搜索莫模块 */ - private IMogoModuleProvider mSearchProvider; private boolean mIsLock = true; private TextView ivMode; @@ -145,22 +133,12 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mSearch = findViewById( R.id.module_entrance_id_search ); mSearch.setOnClickListener( view -> { - setMarkerStatus( true ); - mSearchProvider = ( IMogoModuleProvider ) ARouter.getInstance() - .build( MogoModulePaths.PATH_MODULE_SEARCH ) - .navigation(); - final Fragment fragment = mSearchProvider.createFragment( getContext(), null ); - mMogoFragmentManager.push( new FragmentDescriptor.Builder().fragment( fragment ) - .tag( MogoModulePaths.PATH_FRAGMENT_SEARCH ) - .notifyMainModule( true ) - .build() ); - + mApis.getAddressManagerApi().goSearch(); mApis.getAdasControllerApi().closeADAS(); } ); mHome = findViewById( R.id.module_entrance_id_home ); mHome.setOnClickListener( view -> { - setMarkerStatus( true ); mMogoAddressManager.goHome(); mApis.getAdasControllerApi().closeADAS(); @@ -168,7 +146,6 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mCompany = findViewById( R.id.module_entrance_id_company ); mCompany.setOnClickListener( view -> { - setMarkerStatus( true ); mMogoAddressManager.goCompany(); mApis.getAdasControllerApi().closeADAS(); @@ -210,6 +187,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent NaviNoticeDialog naviNoticeDialog = new NaviNoticeDialog( getContext() ); naviNoticeDialog.show(); } else { + MapCenterPointStrategy.setMapCenterPointByScene( mMApUIController, Scene.NAVI ); mMApUIController.recoverLockMode(); } } @@ -254,12 +232,6 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent } - - protected void setMarkerStatus( boolean show ) { - mMogoStatusManager.setSearchUIShow( MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY, show ); - } - - private static final String AUTONAVI_STANDARD_BROADCAST_RECV = "AUTONAVI_STANDARD_BROADCAST_RECV"; @NonNull @@ -342,8 +314,10 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent mNaviInfo.setVisibility( View.VISIBLE ); ivMode.setVisibility( View.VISIBLE ); mExitNavi.setVisibility( View.VISIBLE ); - mMApUIController.setPointToCenter( 0.675926, 0.77552 ); mMApUIController.changeMapMode( ivMode.isSelected() ? EnumMapUI.NorthUP_2D : EnumMapUI.CarUp_2D ); + MapCenterPointStrategy.setMapCenterPointBySceneAndDelay( mMApUIController, Scene.NAVI, 500, () -> { + return !mMogoNavi.isNaviing(); + } ); } @Override @@ -353,8 +327,8 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent ivMode.setVisibility( View.GONE ); mExitNavi.setVisibility( View.GONE ); mSpeedLimit.setVisibility( View.GONE ); - mMApUIController.setPointToCenter( 0.66145, 0.590688 ); mMApUIController.changeMapMode( EnumMapUI.NorthUP_2D ); + MapCenterPointStrategy.setMapCenterPointByScene( mMApUIController, Scene.AIMLESS ); } @Override 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 287ce94802..9e9a8846fe 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 @@ -21,6 +21,8 @@ import com.mogo.map.marker.IMogoMarkerClickListener; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.module.common.MogoModule; import com.mogo.module.common.MogoModulePaths; +import com.mogo.module.common.map.MapCenterPointStrategy; +import com.mogo.module.common.map.Scene; import com.mogo.module.main.cards.CardIntroduceConfigs; import com.mogo.module.main.cards.CardModulesAdapter; import com.mogo.module.main.cards.HorizentalStackTransformer; @@ -261,7 +263,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme // 右移地图中心点 mMogoMapUIController = mMogoMapService.getMapUIController(); - mMogoMapUIController.setPointToCenter( 0.66145, 0.590688 ); + MapCenterPointStrategy.setMapCenterPointByScene( mMogoMapUIController, Scene.AIMLESS ); // 开启定位 startLocation(); diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/AMapConstants.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/AMapConstants.java index 5c75c27f04..6092bc523d 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/AMapConstants.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/AMapConstants.java @@ -34,4 +34,11 @@ public class AMapConstants { public static final float AMAP_ROUTE_OVERLAY_TRANSPARENCY_SELECTED = 1f; public static final float AMAP_ROUTE_OVERLAY_TRANSPARENCY_UNSELECTED = 0.3f; + + public static final String PATH_FRAGMENT_SEARCH = "PATH_FRAGMENT_SEARCH"; + public static final String PATH_FRAGMENT_CHOOSE_PATH = "PATH_FRAGMENT_CHOOSE_PATH"; + public static final String PATH_FRAGMENT_SEARCH_CATEGORY = "PATH_FRAGMENT_SEARCH_CATEGORY"; + public static final String PATH_FRAGMENT_SETTING = "PATH_FRAGMENT_SETTING"; + public static final String PATH_FRAGMENT_NAVI_SETTING = "PATH_FRAGMENT_NAVI_SETTING"; + public static final String PATH_FRAGMENT_SETTING_HOME = "PATH_FRAGMENT_SETTING_HOME"; } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchServiceHolder.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchServiceHolder.kt index 75dc3bf40d..119ae65f6d 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchServiceHolder.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/constants/SearchServiceHolder.kt @@ -16,6 +16,7 @@ import com.mogo.service.MogoServicePaths import com.mogo.service.analytics.IMogoAnalytics import com.mogo.service.fragmentmanager.FragmentDescriptor import com.mogo.service.fragmentmanager.IMogoFragmentManager +import com.mogo.service.launcher.IMogoLauncher import com.mogo.service.map.IMogoMapService import com.mogo.service.module.IMogoRegisterCenter import com.mogo.service.statusmanager.IMogoStatusManager @@ -28,24 +29,14 @@ import com.mogo.service.statusmanager.IMogoStatusManager object SearchServiceHolder{ // 单例对象,要使用Application Context private lateinit var context: Context - val fragmentManager: IMogoFragmentManager = ARouter.getInstance().build( - MogoServicePaths.PATH_FRAGMENT_MANAGER - ).navigation() as IMogoFragmentManager - val mapService: IMogoMapService = ARouter.getInstance().build( - MogoServicePaths.PATH_SERVICES_MAP - ).navigation() as IMogoMapService - val listenerCenter: IMogoRegisterCenter = ARouter.getInstance().build( - MogoServicePaths.PATH_REGISTER_CENTER - ).navigation() as IMogoRegisterCenter - val statusManager: IMogoStatusManager = ARouter.getInstance().build( - MogoServicePaths.PATH_STATUS_MANAGER - ).navigation() as IMogoStatusManager - val analyticsManager: IMogoAnalytics = ARouter.getInstance().build( - MogoServicePaths.PATH_UTILS_ANALYTICS - ).navigation() as IMogoAnalytics - val guideShowProvider: IGuideShowProvider = ARouter.getInstance().build( - GuideShowProviderConstant.GUIDE_SHOW_PROVIDER - ).navigation() as IGuideShowProvider + + val fragmentManager: IMogoFragmentManager = ARouter.getInstance().build(MogoServicePaths.PATH_FRAGMENT_MANAGER).navigation() as IMogoFragmentManager + val mapService: IMogoMapService = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICES_MAP).navigation() as IMogoMapService + val listenerCenter: IMogoRegisterCenter = ARouter.getInstance().build(MogoServicePaths.PATH_REGISTER_CENTER).navigation() as IMogoRegisterCenter + val statusManager: IMogoStatusManager = ARouter.getInstance().build(MogoServicePaths.PATH_STATUS_MANAGER).navigation() as IMogoStatusManager + val analyticsManager: IMogoAnalytics = ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_ANALYTICS).navigation() as IMogoAnalytics + val guideShowProvider: IGuideShowProvider = ARouter.getInstance().build(GuideShowProviderConstant.GUIDE_SHOW_PROVIDER).navigation() as IGuideShowProvider + val mogoLauncher: IMogoLauncher = ARouter.getInstance().build(MogoServicePaths.PATH_LAUNCHER_API).navigation() as IMogoLauncher var geoSearch: IMogoGeoSearch? = null fun init(context: Context) { @@ -86,10 +77,4 @@ object SearchServiceHolder{ return geoSearch!! } - fun setMarkerStatus(show: Boolean) { - statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY, show - ) - } - } \ No newline at end of file diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt index b779530976..7e57736dad 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/AddressManager.kt @@ -2,20 +2,25 @@ package com.mogo.module.navi.manager import android.annotation.SuppressLint import android.content.Context +import com.mogo.map.MogoLatLng import com.mogo.module.common.MogoModulePaths +import com.mogo.module.common.map.MapCenterPointStrategy +import com.mogo.module.common.map.Scene import com.mogo.module.navi.bean.EntityConvertUtils import com.mogo.module.navi.bean.SearchPoi +import com.mogo.module.navi.constants.AMapConstants import com.mogo.module.navi.constants.DataConstants import com.mogo.module.navi.constants.SearchServiceHolder import com.mogo.module.navi.cp.AddressHelper import com.mogo.module.navi.dao.SearchPoiDao import com.mogo.module.navi.database.AppDataBase +import com.mogo.module.navi.ui.search.CategorySearchFragment import com.mogo.module.navi.ui.search.ChoosePathFragment +import com.mogo.module.navi.ui.search.SearchFragment +import com.mogo.module.navi.ui.setting.NaviSettingFragment import com.mogo.module.navi.ui.setting.SettingAddressFragment import com.mogo.service.fragmentmanager.FragmentDescriptor -import com.mogo.utils.UiThreadHandler import io.reactivex.Observable -import io.reactivex.ObservableEmitter import io.reactivex.ObservableOnSubscribe import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers @@ -27,124 +32,153 @@ import org.greenrobot.eventbus.EventBus */ @SuppressLint("StaticFieldLeak") object AddressManager { - var homeAddress: SearchPoi? = null - var companyAddress: SearchPoi? = null - private lateinit var poiDao:SearchPoiDao - fun goHome() { - if (homeAddress == null) { - pushSettingAddress( - DataConstants.TYPE_HOME_ADDRESS - ) - } else { - var newInstance = ChoosePathFragment.newInstance( - EntityConvertUtils.poi2MogoTip( - homeAddress - ).point - ) - SearchServiceHolder.push( - newInstance, MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT - ) - } - } - fun goCompany() { - if (companyAddress == null) { - pushSettingAddress( - DataConstants.TYPE_COMPANY_ADDRESS - ) - } else { - var newInstance = - ChoosePathFragment.newInstance( - EntityConvertUtils.poi2MogoTip( - companyAddress - ).point + val TAG: String = "AddressManager.kt" + + var homeAddress: SearchPoi? = null + var companyAddress: SearchPoi? = null + private lateinit var poiDao: SearchPoiDao + + fun hasHome(): Boolean { + return homeAddress != null + } + + fun hasCompany(): Boolean { + return companyAddress != null + } + + private fun choosePoint(type: Int){ + MapCenterPointStrategy.setMapCenterPointByScene(SearchServiceHolder.getMapUIController(), Scene.CHOOSE_POINT) + val builder = FragmentDescriptor.Builder() + builder.fragment(SettingAddressFragment.newInstance(type)) + val build = builder.tag(AMapConstants.PATH_FRAGMENT_SETTING_HOME).build() + SearchServiceHolder.fragmentManager.push(build) + } + + private lateinit var context: Context + @SuppressLint("CheckResult") + fun init(context: Context) { + + this.context = context + poiDao = AppDataBase.getDatabase(context).poiDao() + poiDao.companyAddress + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { t1, t2 -> + if (t1.size > 0) { + companyAddress = t1[0] + } + } + + poiDao.homeAddress + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { t1, t2 -> + if (t1.size > 0) { + homeAddress = t1[0] + } + } + } + + fun insert(searchPoi: SearchPoi) { + + EventBus.getDefault().post(searchPoi) + if (searchPoi.type == DataConstants.TYPE_COMPANY_ADDRESS) { + companyAddress = searchPoi + } else { + homeAddress = searchPoi + } + } + + fun deleteHome(context: Context) { + Observable.create( + ObservableOnSubscribe { + poiDao.delete(homeAddress) + homeAddress?.name = "" + AddressHelper.notifyAddressChanged(1) + + homeAddress = null + }) + .subscribeOn(Schedulers.io()) + .subscribe() + + + } + + fun deleteCompany(context: Context) { + Observable.create( + ObservableOnSubscribe { + poiDao.delete(companyAddress) + companyAddress?.name = "" + AddressHelper.notifyAddressChanged(0) + + companyAddress = null + }) + .subscribeOn(Schedulers.io()) + .subscribe() + } + + /** + * 回家 + */ + fun goHome() { + SearchServiceHolder.statusManager.setSearchUIShow(TAG, true) + if (homeAddress == null) { + choosePoint(DataConstants.TYPE_HOME_ADDRESS) + } else { + calculatePath(EntityConvertUtils.poi2MogoTip(homeAddress).point) + } + } + + /** + * 去公司 + */ + fun goCompany() { + SearchServiceHolder.statusManager.setSearchUIShow(TAG, true) + if (companyAddress == null) { + choosePoint( DataConstants.TYPE_COMPANY_ADDRESS) + } else { + calculatePath(EntityConvertUtils.poi2MogoTip(companyAddress).point) + } + } + + /** + * 搜索 + */ + fun goSearch() { + SearchServiceHolder.statusManager.setSearchUIShow(TAG, true) + SearchServiceHolder.fragmentManager.push( + FragmentDescriptor.Builder().fragment(SearchFragment()) + .tag(AMapConstants.PATH_FRAGMENT_SEARCH) + .notifyMainModule(true) + .build() ) - SearchServiceHolder.push( - newInstance, MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT - ) - } - } - fun hasHome(): Boolean { - return homeAddress != null - } - - fun hasCompany(): Boolean { - return companyAddress != null - } - - private fun pushSettingAddress(type: Int) { - - val builder = FragmentDescriptor.Builder() - builder.fragment(SettingAddressFragment.newInstance(type)) - val build = builder.tag(MogoModulePaths.PATH_FRAGMENT_SETTING_HOME) - .build() - SearchServiceHolder.fragmentManager.push(build) - } - - private lateinit var context: Context - @SuppressLint("CheckResult") fun init(context: Context) { - - this.context=context - poiDao = AppDataBase.getDatabase(context) - .poiDao() - poiDao - .companyAddress - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { t1, t2 -> - if (t1.size > 0) { - companyAddress = t1[0] - } + /** + * 路径规划 + */ + fun calculatePath(destination: MogoLatLng?) { + destination?.let { + var newInstance = ChoosePathFragment.newInstance(destination) + SearchServiceHolder.push(newInstance, AMapConstants.PATH_FRAGMENT_CHOOSE_PATH) } - - poiDao - .homeAddress - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { t1, t2 -> - if (t1.size > 0) { - homeAddress = t1[0] - } - } - } - - fun insert(searchPoi: SearchPoi) { - - EventBus.getDefault().post(searchPoi) - if (searchPoi.type == DataConstants.TYPE_COMPANY_ADDRESS) { - companyAddress = searchPoi - } else { - homeAddress = searchPoi } - } - fun deleteHome(context: Context){ - Observable.create( - ObservableOnSubscribe { - poiDao.delete(homeAddress) - homeAddress?.name="" - AddressHelper.notifyAddressChanged( 1) + fun categorySearch(category: String){ + val searchFragment = CategorySearchFragment.newInstance(category) + SearchServiceHolder.fragmentManager.push(FragmentDescriptor.Builder().fragment(searchFragment) + .tag(AMapConstants.PATH_FRAGMENT_SEARCH_CATEGORY) + .notifyMainModule(true) + .build()) + } - homeAddress=null - }) - .subscribeOn(Schedulers.io()) - .subscribe() + fun goSettings(){ + val naviSettingFragment = NaviSettingFragment() + SearchServiceHolder.fragmentManager.push(FragmentDescriptor.Builder().fragment(naviSettingFragment) + .tag(AMapConstants.PATH_FRAGMENT_NAVI_SETTING) + .notifyMainModule(true) + .build()) + } - - } - - fun deleteCompany(context: Context){ - Observable.create( - ObservableOnSubscribe { - poiDao.delete(companyAddress) - companyAddress?.name="" - AddressHelper.notifyAddressChanged( 0) - - companyAddress=null - }) - .subscribeOn(Schedulers.io()) - .subscribe() - } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoAddressManager.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoAddressManager.java index 90939630d2..27790e3ad2 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoAddressManager.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoAddressManager.java @@ -2,6 +2,7 @@ package com.mogo.module.navi.manager; import android.content.Context; import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.map.MogoLatLng; import com.mogo.module.navi.constants.SearchServiceHolder; import com.mogo.service.MogoServicePaths; import com.mogo.service.module.IMogoAddressManager; @@ -12,6 +13,7 @@ import com.mogo.service.module.IMogoAddressManager; */ @Route( path = MogoServicePaths.PATH_ADDRESS_MANAGER ) public class MogoAddressManager implements IMogoAddressManager { + @Override public void goHome() { AddressManager.INSTANCE.goHome(); } @@ -20,7 +22,27 @@ public class MogoAddressManager implements IMogoAddressManager { AddressManager.INSTANCE.goCompany(); } - @Override public void init(Context context) { + @Override + public void goSearch() { + AddressManager.INSTANCE.goSearch(); + } + + @Override + public void calculatePath( MogoLatLng destination ) { + AddressManager.INSTANCE.calculatePath( destination ); + } + + @Override + public void categorySearch( String category ) { + AddressManager.INSTANCE.categorySearch( category ); + } + + @Override + public void goSettings() { + AddressManager.INSTANCE.goSettings(); + } + + @Override public void init( Context context) { AddressManager.INSTANCE.init(context); SearchServiceHolder.INSTANCE.init(context); SettingManager.INSTANCE.init(context); diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManager.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManager.java index 0fa0593bde..010ab585cd 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManager.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/manager/MogoSearchManager.java @@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.map.constants.BroadcastMode; import com.mogo.module.common.MogoModulePaths; +import com.mogo.module.navi.constants.AMapConstants; import com.mogo.module.navi.constants.SearchServiceHolder; import com.mogo.module.navi.ui.search.CategorySearchFragment; import com.mogo.module.navi.ui.search.SearchFragment; @@ -30,7 +31,7 @@ public class MogoSearchManager implements IMogoSearchManager { SearchFragment searchFragment = new SearchFragment(); SearchServiceHolder.INSTANCE.getFragmentManager() .push(new FragmentDescriptor.Builder().fragment(searchFragment) - .tag(MogoModulePaths.PATH_FRAGMENT_SEARCH) + .tag( AMapConstants.PATH_FRAGMENT_SEARCH) .notifyMainModule(true) .build()); } @@ -49,12 +50,7 @@ public class MogoSearchManager implements IMogoSearchManager { } @Override public void showCategory(String keyword) { - Fragment searchFragment = CategorySearchFragment.Companion.newInstance(keyword); - SearchServiceHolder.INSTANCE.getFragmentManager() - .push(new FragmentDescriptor.Builder().fragment(searchFragment) - .tag(MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY) - .notifyMainModule(true) - .build()); + AddressManager.INSTANCE.categorySearch( keyword ); } @Override public void init(Context context) { 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 d6fd55670e..e67b538fc0 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 @@ -1,109 +1,90 @@ package com.mogo.module.navi.manager -import android.app.SearchManager import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter import android.text.TextUtils import com.mogo.map.MogoLatLng +import com.mogo.map.navi.MogoNaviConfig import com.mogo.module.common.MogoModulePaths import com.mogo.module.navi.constants.SearchServiceHolder import com.mogo.module.navi.ui.search.ChoosePathFragment -import com.mogo.utils.logger.Logger -import androidx.core.content.ContextCompat.startActivity -import com.mogo.map.navi.MogoNaviConfig import com.mogo.module.navi.ui.search.SearchFragment import com.mogo.service.fragmentmanager.FragmentDescriptor +import com.mogo.utils.logger.Logger /** *@author zyz * 2020-01-18. */ object NaviManager { - private lateinit var mReceiver: BroadcastReceiver - private val AUTONAVI_STANDARD_BROADCAST_RECV = "AUTONAVI_STANDARD_BROADCAST_RECV" + private lateinit var mReceiver: BroadcastReceiver + private val AUTONAVI_STANDARD_BROADCAST_RECV = "AUTONAVI_STANDARD_BROADCAST_RECV" - fun init(context: Context) { - mReceiver = object : BroadcastReceiver() { - override fun onReceive( - context: Context, - intent: Intent - ) { - val action = intent.action - if (TextUtils.equals(action, AUTONAVI_STANDARD_BROADCAST_RECV)) { - val key_type = intent.getIntExtra("KEY_TYPE", 0) - Logger.d("NaviManager", "key_type" + key_type, null) - if (key_type == 10038 || key_type == 10007) { - val lat: Double - val lon: Double + fun init(context: Context) { + mReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + val action = intent.action + if (TextUtils.equals(action, AUTONAVI_STANDARD_BROADCAST_RECV)) { + val key_type = intent.getIntExtra("KEY_TYPE", 0) + Logger.d("NaviManager", "key_type" + key_type, null) + if (key_type == 10038 || key_type == 10007) { + SearchServiceHolder.mogoLauncher.backToLauncher(context) + choosePath(intent, key_type) + } else if (key_type == 10021) { + SearchServiceHolder.getNavi().stopNavi() + } else if (key_type == 20009) { + SearchServiceHolder.mogoLauncher.backToLauncher(context) + gotoSearch() - if (key_type == 10007) { - lat = intent.getDoubleExtra("ENTRY_LAT", 0.0) - lon = intent.getDoubleExtra("ENTRY_LON", 0.0) - } else { - lat = intent.getDoubleExtra("LAT", 0.0) - lon = intent.getDoubleExtra("LON", 0.0) - - } - showHome() - - SearchServiceHolder.setMarkerStatus(true) - var newInstance = - ChoosePathFragment.newInstance( - MogoLatLng(lat, lon) - ) - SearchServiceHolder.push( - newInstance, MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT - ) - } else if (key_type == 10021) { - SearchServiceHolder.getNavi() - .stopNavi() - } else if (key_type == 20009) { - showHome() - SearchServiceHolder.setMarkerStatus(true) - SearchServiceHolder.fragmentManager - .clearAll() - - val searchFragment = SearchFragment() - SearchServiceHolder.fragmentManager - .push( - FragmentDescriptor.Builder().fragment(searchFragment) - .tag(MogoModulePaths.PATH_FRAGMENT_SEARCH) - .notifyMainModule(true) - .build() - ) - - } else if (key_type == 10005) { + } else if (key_type == 10005) { // * 仅在导航场景下,⽀持第三⽅进⾏路线偏好的重新选择。 // * `避免收费` |`1` `多策略算路` |`2` `不走高速` |`3` ` 躲避拥堵` |`4` `不走高速且避免收费` |`5` `不走高速且躲避拥堵` |`6` // * `躲避收费和拥堵` |`7` `不走高速躲避收费和拥堵` |`8` `高速优先` |`20` `躲避拥堵且高速优先` |`24` // * - var prefer = intent.getIntExtra("NAVI_ROUTE_PREFER", 0) + var prefer = intent.getIntExtra("NAVI_ROUTE_PREFER", 0) - var avoidSpeed = MogoNaviConfig().congestion(prefer == 4) - .cost(prefer == 1||prefer == 7) - .highSpeed(prefer == 20) - .avoidSpeed(prefer == 3) - SearchServiceHolder.getNavi() - .reCalculateRoute(avoidSpeed) + var avoidSpeed = MogoNaviConfig().congestion(prefer == 4) + .cost(prefer == 1 || prefer == 7) + .highSpeed(prefer == 20) + .avoidSpeed(prefer == 3) + SearchServiceHolder.getNavi().reCalculateRoute(avoidSpeed) - } + } + } + } + + /** + * 打开地图 + */ + private fun gotoSearch() { + AddressManager.goSearch() + } + + /** + * 唤醒指令导航去哪里 + */ + private fun choosePath(intent: Intent, type: Int) { + val lat: Double + val lon: Double + + if (type == 10007) { + lat = intent.getDoubleExtra("ENTRY_LAT", 0.0) + lon = intent.getDoubleExtra("ENTRY_LON", 0.0) + } else { + lat = intent.getDoubleExtra("LAT", 0.0) + lon = intent.getDoubleExtra("LON", 0.0) + + } + AddressManager.calculatePath(MogoLatLng(lat, lon)) + } } - } + val inputFilter = IntentFilter() + inputFilter.addAction(AUTONAVI_STANDARD_BROADCAST_RECV) + context.registerReceiver(mReceiver, inputFilter) - private fun showHome() { - val intent = Intent(Intent.ACTION_MAIN) - intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK - intent.addCategory(Intent.CATEGORY_HOME) - context.startActivity(intent) - } } - val inputFilter = IntentFilter() - inputFilter.addAction(AUTONAVI_STANDARD_BROADCAST_RECV) - context.registerReceiver(mReceiver, inputFilter) - - } } \ No newline at end of file diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/NaviActivity.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/NaviActivity.kt index 108f47990b..70eb32f28f 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/NaviActivity.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/NaviActivity.kt @@ -1,16 +1,11 @@ package com.mogo.module.navi.ui -import android.app.Activity -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.fragment.app.Fragment -import com.alibaba.android.arouter.facade.annotation.Route import com.alibaba.android.arouter.launcher.ARouter -import com.mogo.module.common.MogoModulePaths import com.mogo.module.navi.R import com.mogo.module.navi.ui.base.BaseActivity -@Route(path = MogoModulePaths.PATH_MODULE_NAV_ACTIVITY) class NaviActivity : BaseActivity() { diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/base/BaseFragment.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/base/BaseFragment.java index 02bc1b9482..73b329da13 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/base/BaseFragment.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/base/BaseFragment.java @@ -72,27 +72,4 @@ public abstract class BaseFragment extends Fragment { Toast.makeText( mContext, msg, Toast.LENGTH_LONG ).show(); } } - - - protected void setMarkerStatus(boolean show){ - SearchServiceHolder.INSTANCE.getStatusManager().setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY, show - ); - } - - /** - * 移动地图中心点到屏幕中心 - */ - protected void moveMapToCenter(){ - //SearchServiceHolder.INSTANCE.getMapUIController().setPointToCenter(0.5,0.5); - } - - //mMogoMapUIController.setPointToCenter( 0.66145, 0.590688 ); - /** - * 移动地图中心点到屏幕右侧 - */ - protected void moveMapToRight(){ - SearchServiceHolder.INSTANCE.getMapUIController().setPointToCenter(0.66145, 0.661094); - } - } 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 4d81850232..40affa22cf 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 @@ -17,9 +17,13 @@ import com.mogo.map.marker.MogoMarkerOptions import com.mogo.map.search.geo.MogoPoiItem import com.mogo.map.search.inputtips.MogoTip import com.mogo.module.common.MogoModulePaths +import com.mogo.module.common.map.MapCenterPointStrategy +import com.mogo.module.common.map.Scene import com.mogo.module.navi.R import com.mogo.module.navi.bean.SearchPoi +import com.mogo.module.navi.constants.AMapConstants import com.mogo.module.navi.constants.SearchServiceHolder +import com.mogo.module.navi.manager.AddressManager import com.mogo.module.navi.ui.adapter.SearchCategoryAdapter import com.mogo.module.navi.ui.base.BaseFragment import com.mogo.module.navi.uitls.BitmapUtils @@ -175,9 +179,6 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) category = arguments?.getString("category") - SearchServiceHolder.statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY, true - ) mSearchPresenter = CategoryPresenter(this) lifecycle.addObserver(mSearchPresenter) cmds = ArrayList() @@ -223,8 +224,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa private fun goPath() { mAdapter.currentItem?.let { - var newInstance = ChoosePathFragment.newInstance(mAdapter.currentItem.point) - SearchServiceHolder.push(newInstance, MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT) + AddressManager.calculatePath(mAdapter.currentItem.point) } } @@ -279,13 +279,11 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa override fun onDestroy() { super.onDestroy() - SearchServiceHolder.statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY, false - ) } companion object { fun newInstance(category: String): Fragment { + MapCenterPointStrategy.setMapCenterPointByScene(SearchServiceHolder.getMapUIController(), Scene.CATEGORY_SEARCH) var bundle = Bundle() bundle.putString("category", category) var categorySerachFragment = CategorySearchFragment() diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt index e0f6d0aa41..1b2110e2b7 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt @@ -1,7 +1,5 @@ package com.mogo.module.navi.ui.search -import android.app.SearchManager -import android.app.Service import android.os.Bundle import android.text.TextUtils import android.view.View @@ -14,15 +12,16 @@ import com.mogo.map.navi.IMogoNaviListener import com.mogo.map.navi.MogoCalculatePath import com.mogo.map.navi.MogoNaviInfo import com.mogo.map.navi.MogoTraffic -import com.mogo.map.search.inputtips.MogoTip import com.mogo.module.common.MogoModulePaths -import com.mogo.module.navi.BuildConfig +import com.mogo.module.common.map.MapCenterPointStrategy +import com.mogo.module.common.map.Scene import com.mogo.module.navi.R import com.mogo.module.navi.constants.AMapConstants import com.mogo.module.navi.constants.SearchServiceHolder import com.mogo.module.navi.manager.SettingManager import com.mogo.module.navi.ui.adapter.CalculatePathAdapter import com.mogo.module.navi.ui.base.BaseFragment +import com.mogo.utils.UiThreadHandler import kotlinx.android.synthetic.main.fragment_search_category.group_path import kotlinx.android.synthetic.main.fragment_search_category.pb_path import kotlinx.android.synthetic.main.fragment_search_category.rv_search_result @@ -35,263 +34,233 @@ import kotlinx.android.synthetic.main.include_search_bar.iv_navi_back * 2020-01-09. */ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallBack { - override fun onCmdSelected(cmd: String?) { + override fun onCmdSelected(cmd: String?) { - when (cmd) { - "firstPath" -> { - selectItem(0) - startNavi() + when (cmd) { + "firstPath" -> { + selectItem(0) + startNavi() - } - "secondPath" -> { - selectItem(1) - startNavi() + } + "secondPath" -> { + selectItem(1) + startNavi() - } - "thirdPath" -> { - selectItem(2) - startNavi() + } + "thirdPath" -> { + selectItem(2) + startNavi() - } - "startNavi" -> { - startNavi() - } - "retry" -> { - retry() - } - "cancel" -> { - SearchServiceHolder.fragmentManager - .clearAll() - } + } + "startNavi" -> { + startNavi() + } + "retry" -> { + retry() + } + "cancel" -> { + SearchServiceHolder.fragmentManager.clearAll() + } - } - - } - - private fun selectItem(index: Int) { - - if (mAdapter.list.size > index) { - selectPath(mAdapter.list[index]) - } - } - - override fun onCmdAction(speakText: String?) { - } - - override fun onCmdCancel(speakText: String?) { - } - - override fun onSpeakEnd(speakText: String?) { - } - - override fun onSpeakSelectTimeOut(speakText: String?) { - } - - override fun onInitNaviFailure() { - } - - override fun onInitNaviSuccess() { - } - - override fun onNaviInfoUpdate(naviinfo: MogoNaviInfo?) { - } - - override fun onStartNavi() { - } - - override fun onStopNavi() { - } - - override fun onCalculateSuccess() { - var calculatedStrategies = SearchServiceHolder.getNavi() - .calculatedStrategies - if (calculatedStrategies != null && calculatedStrategies.size > 0) { - mAdapter.setDatas(calculatedStrategies) - mAdapter.selectTag = calculatedStrategies[0].tagId - } - AIAssist.getInstance(context) - .speakTTSVoice(String.format("已为你规划处%d条路线,请选择", calculatedStrategies.size)) - pb_path.visibility = View.GONE - group_path.visibility = View.GONE - tv_navi_navi.text = getString(R.string.start_navi) - - unregisterRetryVoice() - - } - - override fun onoCalculateFailed() { - group_path.visibility = View.VISIBLE - tv_navi_navi.text = "重试" - pb_path.visibility = View.GONE - - registerRetryVoice() - - } - - override fun onUpdateTraffic(traffic: MogoTraffic?) { - } - - private lateinit var mAdapter: CalculatePathAdapter - override fun getLayoutId(): Int { - return R.layout.fragment_search_category - } - - val firstPath: String = "第一个" - val secondPath: String = "第二个" - val thirdPath: String = "第三个" - val startNavi: String = "开始导航" - - var mogoTip: MogoLatLng? = null - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - mogoTip = arguments?.getParcelable(AMapConstants.KEY_PARCELABLE) - SearchServiceHolder.statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT, true - ) - - } - - // 是否开启导航 - var isStartedNavi = false - - override fun onViewCreated( - view: View, - savedInstanceState: Bundle? - ) { - super.onViewCreated(view, savedInstanceState) - iv_navi_back.setOnClickListener { - SearchServiceHolder.fragmentManager.pop() - } - - tv_navi_navi.text = getString(R.string.start_navi) - - et_navi_search.setText(getString(R.string.choose_path)) - et_navi_search.isEnabled = false - SearchServiceHolder.getNavi() - .naviTo(mogoTip) - - SearchServiceHolder.listenerCenter.registerMogoNaviListener( - MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT, this - ) - - var arrayList = ArrayList() - mAdapter = CalculatePathAdapter(activity, arrayList) - rv_search_result.layoutManager = - LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false) - - rv_search_result.adapter = mAdapter - tv_navi_navi.setOnClickListener { - - if (group_path.visibility == View.VISIBLE) { - retry() - } else { - startNavi() - } - } - - SearchServiceHolder.getNavi() - .setLineClickInteraction { - mAdapter.setSelectTag(it) } - mAdapter.setOnClickListener { - var item = it.getTag(R.id.tag_item) as MogoCalculatePath - selectPath(item) + } -// rv_search_result.scroto + private fun selectItem(index: Int) { + + if (mAdapter.list.size > index) { + selectPath(mAdapter.list[index]) + } + } + + override fun onCmdAction(speakText: String?) { + } + + override fun onCmdCancel(speakText: String?) { + } + + override fun onSpeakEnd(speakText: String?) { + } + + override fun onSpeakSelectTimeOut(speakText: String?) { + } + + override fun onInitNaviFailure() { + } + + override fun onInitNaviSuccess() { + } + + override fun onNaviInfoUpdate(naviinfo: MogoNaviInfo?) { + } + + override fun onStartNavi() { + } + + override fun onStopNavi() { + } + + override fun onCalculateSuccess() { + var calculatedStrategies = SearchServiceHolder.getNavi().calculatedStrategies + if (calculatedStrategies != null && calculatedStrategies.size > 0) { + mAdapter.setDatas(calculatedStrategies) + mAdapter.selectTag = calculatedStrategies[0].tagId + UiThreadHandler.postDelayed( { + SearchServiceHolder.getNavi().itemClickInteraction.onItemClicked(calculatedStrategies[0].tagId) + }, 500L) + } + AIAssist.getInstance(context).speakTTSVoice(String.format("已为你规划处%d条路线,请选择", calculatedStrategies.size)) + pb_path.visibility = View.GONE + group_path.visibility = View.GONE + tv_navi_navi.text = getString(R.string.start_navi) + + unregisterRetryVoice() } - SearchServiceHolder.getMarkerManger() - .removeMarkers() + override fun onoCalculateFailed() { + group_path.visibility = View.VISIBLE + tv_navi_navi.text = "重试" + pb_path.visibility = View.GONE - AIAssist.getInstance(context) - .registerUnWakeupCommand("firstPath", arrayOf(firstPath), this) - AIAssist.getInstance(context) - .registerUnWakeupCommand("secondPath", arrayOf(secondPath), this) - AIAssist.getInstance(context) - .registerUnWakeupCommand("thirdPath", arrayOf(thirdPath), this) - AIAssist.getInstance(context) - .registerUnWakeupCommand("startNavi", arrayOf(startNavi,"开始"), this) + registerRetryVoice() - } - - private fun registerRetryVoice() { - AIAssist.getInstance(context) - .registerUnWakeupCommand("retry", arrayOf("重试"), this) - } - - private fun unregisterRetryVoice() { - AIAssist.getInstance(context) - .unregisterUnWakeupCommand("retry") - - } - - private fun retry() { - SearchServiceHolder.getNavi() - .naviTo(mogoTip) - pb_path.visibility = View.VISIBLE - group_path.visibility = View.GONE - } - - private fun startNavi() { - if (TextUtils.isEmpty(mAdapter.selectTag)) { - return - } - moveMapToRight() - - SearchServiceHolder.getNavi() - .startNavi(!SettingManager.isMonitor()) - SearchServiceHolder.getMapUIController() - .recoverLockMode() - - if (SearchServiceHolder.guideShowProvider.isPlayingVideo()) { - SearchServiceHolder.guideShowProvider.closeGuideShowView() - } - isStartedNavi = true - SearchServiceHolder.fragmentManager.clearAll() - } - - private fun selectPath(item: MogoCalculatePath?) { - item?.let { - mAdapter.setSelectTag(item.tagId) - SearchServiceHolder.getNavi() - .itemClickInteraction.onItemClicked(item.tagId) - } - } - - override fun onDestroyView() { - super.onDestroyView() - SearchServiceHolder.listenerCenter.unregisterMogoNaviListener( - MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT - ) - SearchServiceHolder.statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT, false - ) - if (!isStartedNavi) { - SearchServiceHolder.getNavi() - .clearCalculatePaths() } - - AIAssist.getInstance(context) - .unregisterUnWakeupCommand("firstPath") - AIAssist.getInstance(context) - .unregisterUnWakeupCommand("secondPath") - AIAssist.getInstance(context) - .unregisterUnWakeupCommand("thirdPath") - AIAssist.getInstance(context) - .unregisterUnWakeupCommand("startNavi") - - } - - companion object { - fun newInstance(searchPoi: MogoLatLng): Fragment { - var bundle = Bundle() - bundle.putParcelable(AMapConstants.KEY_PARCELABLE, searchPoi) - var choosePathFragment = ChoosePathFragment() - choosePathFragment.arguments = bundle - return choosePathFragment + override fun onUpdateTraffic(traffic: MogoTraffic?) { + } + + private lateinit var mAdapter: CalculatePathAdapter + override fun getLayoutId(): Int { + return R.layout.fragment_search_category + } + + val firstPath: String = "第一个" + val secondPath: String = "第二个" + val thirdPath: String = "第三个" + val startNavi: String = "开始导航" + + var mogoTip: MogoLatLng? = null + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + mogoTip = arguments?.getParcelable(AMapConstants.KEY_PARCELABLE) + + } + + // 是否开启导航 + var isStartedNavi = false + + override fun onViewCreated( + view: View, + savedInstanceState: Bundle?) { + + super.onViewCreated(view, savedInstanceState) + iv_navi_back.setOnClickListener { + SearchServiceHolder.fragmentManager.pop() + } + + tv_navi_navi.text = getString(R.string.start_navi) + + et_navi_search.setText(getString(R.string.choose_path)) + et_navi_search.isEnabled = false + SearchServiceHolder.getNavi() + .naviTo(mogoTip) + + SearchServiceHolder.listenerCenter.registerMogoNaviListener(AMapConstants.PATH_FRAGMENT_CHOOSE_PATH, this) + + var arrayList = ArrayList() + mAdapter = CalculatePathAdapter(activity, arrayList) + rv_search_result.layoutManager = + LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false) + + rv_search_result.adapter = mAdapter + tv_navi_navi.setOnClickListener { + + if (group_path.visibility == View.VISIBLE) { + retry() + } else { + startNavi() + } + } + + SearchServiceHolder.getNavi().setLineClickInteraction { + mAdapter.selectTag = it + } + + mAdapter.setOnClickListener { + var item = it.getTag(R.id.tag_item) as MogoCalculatePath + selectPath(item) + } + + SearchServiceHolder.getMarkerManger().removeMarkers() + + AIAssist.getInstance(context).registerUnWakeupCommand("firstPath", arrayOf(firstPath), this) + AIAssist.getInstance(context).registerUnWakeupCommand("secondPath", arrayOf(secondPath), this) + AIAssist.getInstance(context).registerUnWakeupCommand("thirdPath", arrayOf(thirdPath), this) + AIAssist.getInstance(context).registerUnWakeupCommand("startNavi", arrayOf(startNavi, "开始"), this) + + } + + private fun registerRetryVoice() { + AIAssist.getInstance(context).registerUnWakeupCommand("retry", arrayOf("重试"), this) + } + + private fun unregisterRetryVoice() { + AIAssist.getInstance(context).unregisterUnWakeupCommand("retry") + + } + + private fun retry() { + SearchServiceHolder.getNavi().naviTo(mogoTip) + pb_path.visibility = View.VISIBLE + group_path.visibility = View.GONE + } + + private fun startNavi() { + if (TextUtils.isEmpty(mAdapter.selectTag)) { + return + } +// moveMapToRight() + + SearchServiceHolder.getNavi().startNavi(!SettingManager.isMonitor()) + SearchServiceHolder.getMapUIController().recoverLockMode() + + if (SearchServiceHolder.guideShowProvider.isPlayingVideo()) { + SearchServiceHolder.guideShowProvider.closeGuideShowView() + } + isStartedNavi = true + SearchServiceHolder.fragmentManager.clearAll() + } + + private fun selectPath(item: MogoCalculatePath?) { + item?.let { + mAdapter.setSelectTag(item.tagId) + SearchServiceHolder.getNavi().itemClickInteraction.onItemClicked(item.tagId) + } + } + + override fun onDestroyView() { + super.onDestroyView() + SearchServiceHolder.listenerCenter.unregisterMogoNaviListener(AMapConstants.PATH_FRAGMENT_CHOOSE_PATH) + if (!isStartedNavi) { + SearchServiceHolder.getNavi().clearCalculatePaths() + } + + AIAssist.getInstance(context).unregisterUnWakeupCommand("firstPath") + AIAssist.getInstance(context).unregisterUnWakeupCommand("secondPath") + AIAssist.getInstance(context).unregisterUnWakeupCommand("thirdPath") + AIAssist.getInstance(context).unregisterUnWakeupCommand("startNavi") + + } + + companion object { + fun newInstance(searchPoi: MogoLatLng): Fragment { + MapCenterPointStrategy.setMapCenterPointByScene(SearchServiceHolder.getMapUIController(), Scene.CALCULATE_PATH) + var bundle = Bundle() + bundle.putParcelable(AMapConstants.KEY_PARCELABLE, searchPoi) + var choosePathFragment = ChoosePathFragment() + choosePathFragment.arguments = bundle + return choosePathFragment + } } - } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java index 2ce8b818e3..c4ed93e604 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java @@ -20,6 +20,7 @@ import com.mogo.module.common.MogoModulePaths; import com.mogo.module.navi.R; import com.mogo.module.navi.bean.EntityConvertUtils; import com.mogo.module.navi.bean.SearchPoi; +import com.mogo.module.navi.constants.AMapConstants; import com.mogo.module.navi.manager.AddressManager; import com.mogo.module.navi.constants.SearchServiceHolder; import com.mogo.module.navi.ui.adapter.HistoryPoiAdapter; @@ -43,7 +44,6 @@ import java.util.List; * {@link SearchConstants#SEARCH_TYPE_MULTI_COMPANY} * {@link SearchConstants#SEARCH_TYPE_MULTI_HOME} */ -@Route(path = MogoModulePaths.PATH_FRAGMENT_SEARCH) public class SearchFragment extends BaseSearchFragment implements SearchView, View.OnClickListener, IMogoVoiceCmdCallBack, FragmentStackTransactionListener { @@ -92,7 +92,6 @@ public class SearchFragment extends BaseSearchFragment super.onActivityCreated(savedInstanceState); SearchServiceHolder.INSTANCE.getMarkerManger().removeMarkers(); SearchServiceHolder.INSTANCE.getMapUIController().showMyLocation(false); - moveMapToCenter(); } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { @@ -186,24 +185,18 @@ public class SearchFragment extends BaseSearchFragment goCategory(tag.getName()); } else { mSearchPresenter.insert(searchPoi); - SearchServiceHolder.INSTANCE.push( - ChoosePathFragment.Companion.newInstance(tag.getPoint()), - MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT); + AddressManager.INSTANCE.calculatePath( tag.getPoint() ); } } private void goSetting() { - SearchServiceHolder.INSTANCE.getAnalyticsManager() - .track("Navigation_button_setting", new HashMap()); - - push(new NaviSettingFragment(), MogoModulePaths.PATH_FRAGMENT_SETTING); + SearchServiceHolder.INSTANCE.getAnalyticsManager().track("Navigation_button_setting", new HashMap()); + AddressManager.INSTANCE.goSettings(); } private void goHistory(SearchPoi item) { MogoTip mogoTip = EntityConvertUtils.poi2MogoTip(item); - SearchServiceHolder.INSTANCE.push( - ChoosePathFragment.Companion.newInstance(mogoTip.getPoint()), - MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT); + AddressManager.INSTANCE.calculatePath( mogoTip.getPoint() ); } private static final String GO_HOME_CMD = "goHome"; @@ -501,8 +494,7 @@ public class SearchFragment extends BaseSearchFragment } private void goCategory(String text) { - push(CategorySearchFragment.Companion.newInstance(text), - MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY); + AddressManager.INSTANCE.categorySearch( text ); } @Override public void onResume() { @@ -517,7 +509,7 @@ public class SearchFragment extends BaseSearchFragment public void onDestroyView() { super.onDestroyView(); SearchServiceHolder.INSTANCE.getMapUIController().showMyLocation(true); - moveMapToRight(); +// moveMapToRight(); unRegisterVoice(); } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragmentProvider.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragmentProvider.java deleted file mode 100644 index 4bd1f58d00..0000000000 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragmentProvider.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.mogo.module.navi.ui.search; - -import android.content.Context; -import android.os.Bundle; -import android.view.View; -import androidx.annotation.NonNull; -import androidx.fragment.app.Fragment; -import com.alibaba.android.arouter.facade.annotation.Route; -import com.mogo.map.listener.IMogoMapListener; -import com.mogo.map.location.IMogoLocationListener; -import com.mogo.map.marker.IMogoMarkerClickListener; -import com.mogo.map.navi.IMogoNaviListener; -import com.mogo.module.common.MogoModulePaths; -import com.mogo.service.module.IMogoModuleLifecycle; -import com.mogo.service.module.IMogoModuleProvider; -import com.mogo.service.module.ModuleType; - -/** - * @author congtaowang - * @since 2019-12-30 - *

- * 描述 - */ - -@Route( path = MogoModulePaths.PATH_MODULE_SEARCH ) -public class SearchFragmentProvider implements IMogoModuleProvider { - - private SearchFragment mAppsFragment; - - @Override - public Fragment createFragment( Context context, Bundle data ) { - mAppsFragment = new SearchFragment(); - mAppsFragment.setArguments( data ); - return mAppsFragment; - } - - @Override - public View createView( Context context ) { - return null; - } - - @NonNull - @Override - public String getModuleName() { - return MogoModulePaths.PATH_MODULE_SEARCH; - } - - @Override - public IMogoModuleLifecycle getCardLifecycle() { - return null; - } - - @Override - public IMogoMapListener getMapListener() { - return null; - } - - @Override - public int getType() { - return ModuleType.TYPE_NAVI; - } - - @Override - public IMogoNaviListener getNaviListener() { - return null; - } - - @Override - public IMogoLocationListener getLocationListener() { - return null; - } - - @Override - public void init( Context context ) { - - } - - @Override - public IMogoMarkerClickListener getMarkerClickListener() { - return null; - } - - @Override - public String getAppPackage() { - return null; - } - - @Override - public String getAppName() { - return null; - } -} 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 8d2418e841..4983a545c9 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 @@ -30,7 +30,6 @@ import org.greenrobot.eventbus.ThreadMode * @author zyz * 2020-01-07. */ -@Route(path = MogoModulePaths.PATH_FRAGMENT_SETTING) class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener { private var type: Int = 0 diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt index 032a31d5e3..934fb14b82 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt @@ -17,6 +17,8 @@ import com.mogo.map.search.geo.MogoRegeocodeResult import com.mogo.map.search.geo.query.MogoRegeocodeQuery import com.mogo.module.common.MogoModulePaths import com.mogo.module.common.adapter.MogoMapListenerAdapter +import com.mogo.module.common.map.MapCenterPointStrategy +import com.mogo.module.common.map.Scene import com.mogo.module.navi.R import com.mogo.module.navi.R.string import com.mogo.module.navi.bean.EntityConvertUtils @@ -40,7 +42,6 @@ import kotlinx.android.synthetic.main.fragment_setting_address.tv_set_as_home * @author zyz * 2020-01-07. */ -@Route(path = MogoModulePaths.PATH_FRAGMENT_SETTING_HOME) class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { override fun onRegeocodeSearched(regeocodeResult: MogoRegeocodeResult?) { et_navi_search.setText(regeocodeResult?.regeocodeAddress?.formatAddress) @@ -97,22 +98,14 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) style = arguments?.getInt(AMapConstants.KEY_SET_HOME_COMPONY) ?: DataConstants.TYPE_HOME_ADDRESS - setMarkerStatus(true) SearchServiceHolder.listenerCenter.registerMogoMapListener( - MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, mapListener + AMapConstants.PATH_FRAGMENT_SETTING_HOME, mapListener ) - SearchServiceHolder.getMapUIController() - .showMyLocation(false) + SearchServiceHolder.getMapUIController().showMyLocation(false) - SearchServiceHolder.getGeoSearcher() - .setGeoSearchListener(this) + SearchServiceHolder.getGeoSearcher().setGeoSearchListener(this) - SearchServiceHolder.statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, true - ) - - SearchServiceHolder.getMarkerManger() - .removeMarkers() + SearchServiceHolder.getMarkerManger().removeMarkers() } override fun getLayoutId(): Int { @@ -155,9 +148,8 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { et_navi_search.isEnabled = false et_navi_search.setText(getString(string.drag_map_to_choose)) - var location = SearchServiceHolder.getMapUIController() - .windowCenterLocation - moveMapToCenter() + var location = SearchServiceHolder.getMapUIController().windowCenterLocation + UiThreadHandler.postDelayed({ if (!isAdded) { return@postDelayed @@ -170,10 +162,9 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { .anchor(0.5f, 1f) .longitude(location?.lng ?: 0.0) addMarker = SearchServiceHolder.getMarkerManger() - .addMarker(MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, options) + .addMarker(AMapConstants.PATH_FRAGMENT_SETTING_HOME, options) - var locationPointInScreen = SearchServiceHolder.getMapUIController() - .getLocationPointInScreen(location) + var locationPointInScreen = SearchServiceHolder.getMapUIController().getLocationPointInScreen(location) addMarker?.setPositionByPixels(locationPointInScreen) }, 500L) } @@ -190,31 +181,14 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener { }) .subscribeOn(Schedulers.io()) .subscribe() - - } override fun onDestroyView() { super.onDestroyView() -// setMarkerStatus(true) -// SearchServiceHolder.getMapUIController() -// .showMyLocation(true) SearchServiceHolder.listenerCenter.unregisterMogoMapListener( - MogoModulePaths.PATH_FRAGMENT_SETTING_HOME + AMapConstants.PATH_FRAGMENT_SETTING_HOME ) addMarker?.destroy() - - SearchServiceHolder.statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_SETTING_HOME, false - ) - - if (SearchServiceHolder.fragmentManager.stackSize == 0) { - moveMapToRight() - SearchServiceHolder.getMapUIController() - .showMyLocation(true) - } - -// moveMapToRight() } companion object { 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 d0d1e3e3b3..cea9c0ea54 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 @@ -1,7 +1,5 @@ package com.mogo.module.service; -import android.app.ActivityManager; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -36,6 +34,8 @@ import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.module.common.MogoModule; 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.marker.MapMarkerManager; import com.mogo.module.service.network.RefreshCallback; @@ -966,19 +966,18 @@ public class MogoServices implements IMogoMapListener, if ( size == 0 ) { mUiController.showMyLocation( !mNavi.isNaviing() ); AIAssist.getInstance( mContext ).unregisterUnWakeupCommand( ServiceConst.CMD_BACK ); - // 控制SearchUIShow 打点逻辑 - mStatusManager.setSearchUIShow( TAG, false ); + if ( mStatusManager.isSearchUIShow() ) { + mStatusManager.setSearchUIShow( TAG, false ); + } if ( mNavi.isNaviing() ) { - mUiController.setPointToCenter( 0.675926, 0.77552 ); + MapCenterPointStrategy.setMapCenterPointByScene(mUiController, Scene.NAVI ); } else { - mUiController.setPointToCenter( 0.66145, 0.661094 ); + MapCenterPointStrategy.setMapCenterPointByScene(mUiController, Scene.AIMLESS ); } mUiController.recoverLockMode(); } else { mUiController.showMyLocation( false ); AIAssist.getInstance( mContext ).registerUnWakeupCommand( ServiceConst.CMD_BACK, ServiceConst.CMD_BACK_WORDS, this ); - mStatusManager.setSearchUIShow( TAG, true ); - mUiController.setPointToCenter( 0.5, 0.5 ); } } } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoAddressManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoAddressManager.java index 71064c6677..617023ea53 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoAddressManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/module/IMogoAddressManager.java @@ -1,6 +1,7 @@ package com.mogo.service.module; import com.alibaba.android.arouter.facade.template.IProvider; +import com.mogo.map.MogoLatLng; /** * @author zyz @@ -8,6 +9,32 @@ import com.alibaba.android.arouter.facade.template.IProvider; */ public interface IMogoAddressManager extends IProvider { + /** + * 回家 + */ void goHome(); + + /** + * 去公司 + */ void goCompany(); + + /** + * 打开搜索 + */ + void goSearch(); + + /** + * 规划路线 + * + * @param destination 目的地 + */ + void calculatePath( MogoLatLng destination ); + + /** + * 分类搜索 + */ + void categorySearch(String category); + + void goSettings(); } 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 f749d793a6..06105ec2f5 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 @@ -84,6 +84,12 @@ public interface IMogoStatusManager extends IProvider { */ boolean isAIAssistReady(); + /** + * 求助状态 + * @return + */ + boolean isSeekHelping(); + /** * 设置小智语音UI状态 * @@ -166,6 +172,13 @@ public interface IMogoStatusManager extends IProvider { */ void setAIAssistReady( String tag, boolean ready ); + /** + * 设置求助状态 + * @param tag + * @param seekHelping + */ + void setSeekHelping(String tag, boolean seekHelping); + /** * 注册监听 * 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 0f75d8d92f..5dc6262546 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 @@ -59,5 +59,10 @@ public enum StatusDescriptor { /** * 小智语音状态 */ - AI_ASSIST_READY; + AI_ASSIST_READY, + + /** + * 求助状态 + */ + SEEK_HELPING; } 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 0ac3f099db..117f11db27 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 @@ -99,6 +99,12 @@ public class MogoStatusManager implements IMogoStatusManager { return get_bool_val( StatusDescriptor.AI_ASSIST_READY ); } + + @Override + public boolean isSeekHelping() { + return get_bool_val( StatusDescriptor.SEEK_HELPING ); + } + private boolean get_bool_val( StatusDescriptor descriptor ) { Boolean val = mStatus.get( descriptor ); return val == null ? false : val; @@ -177,6 +183,13 @@ public class MogoStatusManager implements IMogoStatusManager { recordStatusModifier( tag, StatusDescriptor.AI_ASSIST_READY ); } + @Override + public void setSeekHelping( String tag, boolean seekHelping ) { + mStatus.put( StatusDescriptor.SEEK_HELPING, seekHelping ); + invokeStatusChangedListener( StatusDescriptor.SEEK_HELPING, seekHelping ); + recordStatusModifier( tag, StatusDescriptor.SEEK_HELPING ); + } + private void invokeStatusChangedListener( StatusDescriptor descriptor, boolean status ) { if ( mListeners.containsKey( descriptor ) ) { Iterator< IMogoStatusChangedListener > iterator = mListeners.get( descriptor ).iterator();