This commit is contained in:
wangcongtao
2020-05-18 17:05:58 +08:00
parent 8d7e09f81d
commit f5a1925532
34 changed files with 725 additions and 978 deletions

View File

@@ -47,9 +47,9 @@ public class DataConstants {
// 泛化语义
public static final String STRATEGY_THE_TIME_SHORTEST_PATH = "STRATEGY_THE_TIME_SHORTEST_PATH";
public static final String[] WORDS_STRATEGY_THE_TIME_SHORTEST_PATH = {"最快"};
public static final String[] WORDS_STRATEGY_THE_TIME_SHORTEST_PATH = {"最快路线"};
public static final String STRATEGY_THE_DISTANCE_SHORTEST_PATH = "STRATEGY_THE_DISTANCE_SHORTEST_PATH";
public static final String[] WORDS_STRATEGY_THE_DISTANCE_SHORTED_PATH = {"路程最短的"};
public static final String[] WORDS_STRATEGY_THE_DISTANCE_SHORTED_PATH = {"最短路线"};
// 第x个选个
public static final String STRATEGY_THE_FIRST_PATH = "STRATEGY_THE_FIRST_PATH";

View File

@@ -0,0 +1,123 @@
package com.mogo.module.navi.constants;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.navi.IMogoNavi;
import com.mogo.map.search.geo.IMogoGeoSearch;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.gps.simulator.IMogoGpsSimulatorManager;
import com.mogo.module.guideshow.provider.IGuideShowProvider;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.intent.IMogoIntentManager;
import com.mogo.service.map.IMogoMapService;
import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.module.IMogoSearchManager;
import com.mogo.service.module.IMogoSettingManager;
import com.mogo.service.statusmanager.IMogoStatusManager;
/**
* @author congtaowang
* @since 2020-05-18
* <p>
* 描述
*/
public class SearchApisHolder {
private static IMogoServiceApis sApis;
private static IMogoMapService sMapServiceApis;
private static IMogoMapUIController sUiControllerApis;
private static IMogoNavi sNaviApis;
private static IMogoMarkerManager sMarkerManagerApis;
private static IMogoFragmentManager sFragmentManagerApis;
private static IMogoAnalytics sAnalyticsApis;
private static IMogoLocationClient sLocationClientApis;
private static IMogoStatusManager sStatusManager;
private static IMogoRegisterCenter sRegisterCenterApis;
private static IMogoIntentManager sIntentManager;
private static IGuideShowProvider sGuideShowApis;
private static IMogoSettingManager sSettingManager;
private static IMogoGpsSimulatorManager sGpsSimulatorManager;
private static IMogoSearchManager sSearchManager;
static {
sApis = ARouter.getInstance().navigation( IMogoServiceApis.class );
sMapServiceApis = sApis.getMapServiceApi();
sUiControllerApis = sMapServiceApis.getMapUIController();
sNaviApis = sMapServiceApis.getNavi( AbsMogoApplication.getApp() );
sMarkerManagerApis = sMapServiceApis.getMarkerManager( AbsMogoApplication.getApp() );
sFragmentManagerApis = sApis.getFragmentManagerApi();
sAnalyticsApis = sApis.getAnalyticsApi();
sLocationClientApis = sMapServiceApis.getSingletonLocationClient( AbsMogoApplication.getApp() );
sStatusManager = sApis.getStatusManagerApi();
sRegisterCenterApis = sApis.getRegisterCenterApi();
sIntentManager = sApis.getIntentManagerApi();
sSettingManager = sApis.getSettingManagerApi();
sSearchManager = sApis.getSearchManagerApi();
sGpsSimulatorManager = ARouter.getInstance().navigation( IMogoGpsSimulatorManager.class);
sGuideShowApis = ARouter.getInstance().navigation( IGuideShowProvider.class );
}
public static IMogoServiceApis getApis() {
return sApis;
}
public static IMogoMapService getMapServiceApis() {
return sMapServiceApis;
}
public static IMogoMapUIController getUiControllerApis() {
return sUiControllerApis;
}
public static IMogoNavi getNaviApis() {
return sNaviApis;
}
public static IMogoMarkerManager getMarkerManager() {
return sMarkerManagerApis;
}
public static IMogoFragmentManager getFragmentManager() {
return sFragmentManagerApis;
}
public static IMogoAnalytics getAnalyticsApis() {
return sAnalyticsApis;
}
public static IMogoLocationClient getLocationClientApis() {
return sLocationClientApis;
}
public static IMogoStatusManager getStatusManager() {
return sStatusManager;
}
public static IMogoRegisterCenter getRegisterCenterApis() {
return sRegisterCenterApis;
}
public static IMogoIntentManager getIntentManager() {
return sIntentManager;
}
public static IGuideShowProvider getGuideShowApis() {
return sGuideShowApis;
}
public static IMogoSettingManager getSettingManager() {
return sSettingManager;
}
public static IMogoGpsSimulatorManager getGpsSimulatorManager() {
return sGpsSimulatorManager;
}
public static IMogoSearchManager getSearchManager() {
return sSearchManager;
}
}

View File

@@ -1,83 +0,0 @@
package com.mogo.module.navi.constants
import android.annotation.SuppressLint
import android.content.Context
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.map.location.IMogoLocationClient
import com.mogo.map.marker.IMogoMarkerManager
import com.mogo.map.navi.IMogoNavi
import com.mogo.map.search.geo.IMogoGeoSearch
import com.mogo.map.uicontroller.IMogoMapUIController
import com.mogo.module.common.MogoModulePaths
import com.mogo.module.gps.simulator.GpsSimulatorConstants
import com.mogo.module.gps.simulator.IMogoGpsSimulatorManager
import com.mogo.module.guideshow.provider.GuideShowProviderConstant
import com.mogo.module.guideshow.provider.IGuideShowProvider
import com.mogo.service.IMogoServiceApis
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.intent.IMogoIntentManager
import com.mogo.service.launcher.IMogoLauncher
import com.mogo.service.map.IMogoMapService
import com.mogo.service.module.IMogoRegisterCenter
import com.mogo.service.statusmanager.IMogoStatusManager
/**
*@author zyz
* 2020-01-08.
*/
@SuppressLint("StaticFieldLeak")
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 mogoLauncher: IMogoLauncher = ARouter.getInstance().build(MogoServicePaths.PATH_LAUNCHER_API).navigation() as IMogoLauncher
val gpsSimulator = ARouter.getInstance().build(GpsSimulatorConstants.API_PATH).navigation() as IMogoGpsSimulatorManager
val intentManager = ARouter.getInstance().build(MogoServicePaths.PATH_INTENT_MANAGER).navigation() as IMogoIntentManager
val apis = ARouter.getInstance().navigation(IMogoServiceApis::class.java)
var geoSearch: IMogoGeoSearch? = null
fun init(context: Context) {
this.context = context
}
fun push(fragment: Fragment, tag: String) {
val builder = FragmentDescriptor.Builder()
builder.fragment(fragment)
val build = builder.tag(tag).build()
fragmentManager.push(build)
}
fun getNavi(): IMogoNavi {
return mapService.getNavi(context)
}
fun getLocationClient(): IMogoLocationClient {
return mapService.getLocationClient(context)
}
fun getMapUIController(): IMogoMapUIController {
return mapService.mapUIController
}
fun getMarkerManger(): IMogoMarkerManager {
return mapService.getMarkerManager(context)
}
fun getGeoSearcher(): IMogoGeoSearch {
if (geoSearch == null) {
geoSearch = mapService.getGeoSearch(context)
}
return geoSearch!!
}
}

View File

@@ -2,15 +2,15 @@ package com.mogo.module.navi.manager
import android.annotation.SuppressLint
import android.content.Context
import androidx.fragment.app.Fragment
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.constants.SearchApisHolder
import com.mogo.module.navi.cp.AddressHelper
import com.mogo.module.navi.dao.SearchPoiDao
import com.mogo.module.navi.database.AppDataBase
@@ -47,14 +47,6 @@ object AddressManager {
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) {
@@ -64,7 +56,7 @@ object AddressManager {
poiDao.companyAddress
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { t1, t2 ->
.subscribe { t1, _ ->
if (t1.size > 0) {
companyAddress = t1[0]
}
@@ -73,7 +65,7 @@ object AddressManager {
poiDao.homeAddress
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { t1, t2 ->
.subscribe { t1, _ ->
if (t1.size > 0) {
homeAddress = t1[0]
}
@@ -90,7 +82,7 @@ object AddressManager {
}
}
fun deleteHome(context: Context) {
fun deleteHome() {
Observable.create(
ObservableOnSubscribe<String> {
poiDao.delete(homeAddress)
@@ -105,7 +97,7 @@ object AddressManager {
}
fun deleteCompany(context: Context) {
fun deleteCompany() {
Observable.create(
ObservableOnSubscribe<String> {
poiDao.delete(companyAddress)
@@ -122,8 +114,6 @@ object AddressManager {
* 回家
*/
fun goHome() {
closeADAS()
SearchServiceHolder.statusManager.setSearchUIShow(TAG, true)
if (homeAddress == null) {
choosePoint(DataConstants.TYPE_HOME_ADDRESS)
} else {
@@ -131,14 +121,18 @@ object AddressManager {
}
}
private fun choosePoint(type: Int) {
beforePushFragment()
MapCenterPointStrategy.setMapCenterPointByScene(SearchApisHolder.getUiControllerApis(), Scene.CHOOSE_POINT)
pushFragment(SettingAddressFragment.newInstance(type), AMapConstants.PATH_FRAGMENT_SETTING_HOME, true)
}
/**
* 去公司
*/
fun goCompany() {
closeADAS()
SearchServiceHolder.statusManager.setSearchUIShow(TAG, true)
if (companyAddress == null) {
choosePoint( DataConstants.TYPE_COMPANY_ADDRESS)
choosePoint(DataConstants.TYPE_COMPANY_ADDRESS)
} else {
calculatePath(EntityConvertUtils.poi2MogoTip(companyAddress).point)
}
@@ -148,14 +142,8 @@ object AddressManager {
* 搜索
*/
fun goSearch() {
closeADAS()
SearchServiceHolder.statusManager.setSearchUIShow(TAG, true)
SearchServiceHolder.fragmentManager.push(
FragmentDescriptor.Builder().fragment(SearchFragment())
.tag(AMapConstants.PATH_FRAGMENT_SEARCH)
.notifyMainModule(true)
.build()
)
beforePushFragment()
pushFragment(SearchFragment(), AMapConstants.PATH_FRAGMENT_SEARCH, true)
}
/**
@@ -163,34 +151,43 @@ object AddressManager {
*/
fun calculatePath(destination: MogoLatLng?) {
destination?.let {
closeADAS()
var newInstance = ChoosePathFragment.newInstance(destination)
SearchServiceHolder.push(newInstance, AMapConstants.PATH_FRAGMENT_CHOOSE_PATH)
beforePushFragment()
MapCenterPointStrategy.setMapCenterPointByScene(SearchApisHolder.getUiControllerApis(), Scene.CALCULATE_PATH)
pushFragment(ChoosePathFragment.newInstance(destination), AMapConstants.PATH_FRAGMENT_CHOOSE_PATH, true)
}
}
fun categorySearch(category: String){
closeADAS()
val searchFragment = CategorySearchFragment.newInstance(category)
SearchServiceHolder.fragmentManager.push(FragmentDescriptor.Builder().fragment(searchFragment)
.tag(AMapConstants.PATH_FRAGMENT_SEARCH_CATEGORY)
.notifyMainModule(true)
.build())
fun categorySearch(category: String) {
beforePushFragment()
pushFragment(CategorySearchFragment.newInstance(category), AMapConstants.PATH_FRAGMENT_SEARCH_CATEGORY, true)
}
fun goSettings(){
fun goSettings() {
beforePushFragment()
pushFragment(NaviSettingFragment(), AMapConstants.PATH_FRAGMENT_NAVI_SETTING, true)
}
private fun beforePushFragment() {
closeADAS()
val naviSettingFragment = NaviSettingFragment()
SearchServiceHolder.fragmentManager.push(FragmentDescriptor.Builder().fragment(naviSettingFragment)
.tag(AMapConstants.PATH_FRAGMENT_NAVI_SETTING)
.notifyMainModule(true)
.build())
if (!SearchApisHolder.getStatusManager().isSearchUIShow) {
SearchApisHolder.getStatusManager().setSearchUIShow(TAG, true)
}
}
private fun pushFragment(fragment: Fragment, tag: String, notifyMain: Boolean) {
SearchApisHolder.getFragmentManager().push(
FragmentDescriptor.Builder()
.fragment(fragment)
.tag(tag)
.notifyMainModule(notifyMain)
.build()
)
}
private fun closeADAS() {
try {
SearchServiceHolder.apis.adasControllerApi.closeADAS()
SearchApisHolder.getApis().adasControllerApi.closeADAS()
} catch (e: Exception) {
e.printStackTrace()
}

View File

@@ -2,18 +2,10 @@ package com.mogo.module.navi.manager;
import android.content.Context;
import androidx.fragment.app.Fragment;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.map.MogoLatLng;
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;
import com.mogo.module.navi.constants.SearchApisHolder;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.fragmentmanager.FragmentDescriptor;
import com.mogo.service.module.IMogoSearchManager;
/**
@@ -34,24 +26,12 @@ public class MogoSearchManager implements IMogoSearchManager {
@Override
public void showSearch() {
if ( SearchApisHolder.getNaviApis().isNaviing() ) {
return;
}
AddressManager.INSTANCE.goSearch();
}
@Override
public void showMain() {
SearchServiceHolder.INSTANCE.getFragmentManager().clearAll();
}
@Override
public void speakDraft() {
SearchServiceHolder.INSTANCE.getNavi().setBroadcastMode( BroadcastMode.CONCISE );
}
@Override
public void speakDetail() {
SearchServiceHolder.INSTANCE.getNavi().setBroadcastMode( BroadcastMode.DETAIL );
}
@Override
public void categorySearch( String keyword ) {
AddressManager.INSTANCE.categorySearch( keyword );
@@ -70,7 +50,6 @@ public class MogoSearchManager implements IMogoSearchManager {
@Override
public void init( Context context ) {
AddressManager.INSTANCE.init( context );
SearchServiceHolder.INSTANCE.init( context );
SettingManager.INSTANCE.init( context );
}
}

View File

@@ -1,7 +1,7 @@
package com.mogo.module.navi.manager;
import android.content.Context;
import android.content.SharedPreferences;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.module.IMogoSettingManager;
@@ -14,23 +14,49 @@ import com.mogo.service.module.IMogoSettingManager;
@Route( path = MogoServicePaths.PATH_SETTING_MANAGER )
public class MogoSettingManager implements IMogoSettingManager {
@Override public int getPathPrefer() {
@Override
public int getPathPrefer() {
return SettingManager.INSTANCE.getPathPrefer();
}
@Override public int getVolume() {
@Override
public int getVolume() {
return SettingManager.INSTANCE.getVolume();
}
@Override public int getVoiceStyle() {
@Override
public int getVoiceStyle() {
return SettingManager.INSTANCE.getVoiceStyle();
}
@Override public int getMapType() {
@Override
public int getMapType() {
return SettingManager.INSTANCE.getMapType();
}
@Override public void init(Context context) {
SettingManager.INSTANCE.init(context);
@Override
public void init( Context context ) {
SettingManager.INSTANCE.init( context );
}
@Override
public void speakDraft() {
SettingManager.INSTANCE.speakDraft();
}
@Override
public void speakDetail() {
SettingManager.INSTANCE.speakDetail();
}
@Override
public void openAimlessMode() {
SettingManager.INSTANCE.openAimlessMode();
}
@Override
public void closeAimlessMode() {
SettingManager.INSTANCE.closeAimlessMode();
}
}

View File

@@ -2,9 +2,9 @@ package com.mogo.module.navi.manager
import android.content.Context
import android.content.SharedPreferences
import com.mogo.map.navi.MogoNaviConfig
import com.mogo.map.constants.BroadcastMode
import com.mogo.module.navi.R
import com.mogo.module.navi.constants.SearchServiceHolder
import com.mogo.module.navi.constants.SearchApisHolder
import com.mogo.service.module.IMogoSettingManager
/**
@@ -187,7 +187,7 @@ object SettingManager : IMogoSettingManager {
}
private fun updateConfig() {
SearchServiceHolder.getNavi()
SearchApisHolder.getNaviApis()
.naviConfig
.cost(cost)
.avoidSpeed(avoidSpeed)
@@ -195,12 +195,31 @@ object SettingManager : IMogoSettingManager {
.congestion(congestion)
}
fun setAimlessMode(type: Int){
fun setAimlessMode(type: Int) {
settings.edit().putInt(KEY_AIMLESS_MODE_TYPE, type).apply()
}
fun getAimlessMode():Int {
fun getAimlessMode(): Int {
return settings.getInt(KEY_AIMLESS_MODE_TYPE, R.id.aimlessModeClose)
}
override fun speakDraft() {
voiceStyle = R.id.rb_navi_draft
SearchApisHolder.getNaviApis().setBroadcastMode(BroadcastMode.CONCISE)
}
override fun speakDetail() {
voiceStyle = R.id.rb_navi_detail
SearchApisHolder.getNaviApis().setBroadcastMode(BroadcastMode.DETAIL)
}
override fun openAimlessMode() {
setAimlessMode(R.id.aimlessModeOpen)
SearchApisHolder.getNaviApis().setAimlessModeStatus(true)
}
override fun closeAimlessMode() {
setAimlessMode(R.id.aimlessModeClose)
SearchApisHolder.getNaviApis().setAimlessModeStatus(false)
}
}

View File

@@ -1,20 +0,0 @@
package com.mogo.module.navi.ui
import android.os.Bundle
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.module.navi.R
import com.mogo.module.navi.ui.base.BaseActivity
class NaviActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_navi)
var fragment = ARouter.getInstance()
.build("/navi/search")
.navigation() as Fragment
supportFragmentManager.beginTransaction().replace(R.id.fl_container,fragment).commitNow()
}
}

View File

@@ -6,12 +6,12 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import androidx.annotation.IdRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.mogo.module.common.MogoModulePaths;
import com.mogo.module.navi.constants.SearchServiceHolder;
import com.mogo.utils.NetworkUtils;
/**

View File

@@ -101,10 +101,6 @@ public abstract class BaseSearchFragment extends BaseFragment implements SearchV
return mSearchType;
}
@Override public void startJumpAnimation() {
}
//@Override
//public void renderChoicePointResult( RegeocodeAddress address ) {
// if ( address == null ) {

View File

@@ -1,41 +1,17 @@
package com.mogo.module.navi.ui.search;
import android.app.AlertDialog;
import android.text.Editable;
import android.text.TextUtils;
import android.widget.EditText;
import androidx.annotation.NonNull;
import androidx.lifecycle.LifecycleOwner;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.mvp.Presenter;
import com.mogo.map.search.geo.MogoPoiItem;
import com.mogo.map.search.inputtips.IMogoInputtipsListener;
import com.mogo.map.search.inputtips.IMogoInputtipsSearch;
import com.mogo.map.search.inputtips.MogoTip;
import com.mogo.map.search.inputtips.query.MogoInputtipsQuery;
import com.mogo.map.search.poisearch.IMogoPoiSearch;
import com.mogo.map.search.poisearch.IMogoPoiSearchListener;
import com.mogo.map.search.poisearch.MogoPoiResult;
import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery;
import com.mogo.module.common.TextWatcherAdapter;
import com.mogo.module.navi.bean.EntityConvertUtils;
import com.mogo.module.navi.bean.SearchPoi;
import com.mogo.module.navi.constants.DataConstants;
import com.mogo.module.navi.constants.SearchServiceHolder;
import com.mogo.module.navi.database.AppDataBase;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.map.IMogoMapService;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Single;
import io.reactivex.SingleEmitter;
import io.reactivex.android.schedulers.AndroidSchedulers;
import com.mogo.module.navi.constants.SearchApisHolder;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
import java.util.List;
/**
* @author congtaowang
@@ -43,55 +19,50 @@ import java.util.List;
* <p>
* 搜搜页逻辑处理
*/
public class CategoryPresenter extends Presenter<CategoryView> {
public class CategoryPresenter extends Presenter< CategoryView > {
private CompositeDisposable mCompositeDisposable;
private IMogoMapService mMapService;
public CategoryPresenter(CategoryView view) {
super(view);
public CategoryPresenter( CategoryView view ) {
super( view );
mCompositeDisposable = new CompositeDisposable();
}
@Override
public void onCreate(@NonNull LifecycleOwner owner) {
super.onCreate(owner);
mMapService = (IMogoMapService) ARouter.getInstance()
.build(MogoServicePaths.PATH_SERVICES_MAP)
.navigation(getContext());
public void onCreate( @NonNull LifecycleOwner owner ) {
super.onCreate( owner );
}
public void startSearchLocalPoiByInput(String keyword) {
MogoPoiSearchQuery mogoInputtipsQuery = new MogoPoiSearchQuery(keyword, keyword);
mogoInputtipsQuery.setPageSize(10);
mogoInputtipsQuery.setLocation(
SearchServiceHolder.INSTANCE.getMapUIController().getWindowCenterLocation());
IMogoPoiSearch inputtipsSearch =
mMapService.getPoiSearch(getContext(), mogoInputtipsQuery);
public void startSearchLocalPoiByInput( String keyword ) {
inputtipsSearch.setPoiSearchListener(new IMogoPoiSearchListener() {
@Override public void onPoiSearched(MogoPoiResult result, int errorCode) {
MogoPoiSearchQuery poiSearchQuery = new MogoPoiSearchQuery( keyword, keyword );
poiSearchQuery.setPageSize( 10 );
poiSearchQuery.setLocation( SearchApisHolder.getUiControllerApis().getWindowCenterLocation() );
IMogoPoiSearch poiSearch = SearchApisHolder.getMapServiceApis().getPoiSearch( getContext(), poiSearchQuery );
poiSearch.setPoiSearchListener( new IMogoPoiSearchListener() {
@Override
public void onPoiSearched( MogoPoiResult result, int errorCode ) {
if ( result != null ) {
mView.renderSearchPoiResult(result.getPois());
mView.renderSearchPoiResult( result.getPois() );
}
}
@Override public void onPoiItemSearched(MogoPoiItem item, int errorCode) {
@Override
public void onPoiItemSearched( MogoPoiItem item, int errorCode ) {
}
});
inputtipsSearch.searchPOIAsyn();
} );
poiSearch.searchPOIAsyn();
}
@Override
public void onDestroy(@NonNull LifecycleOwner owner) {
super.onDestroy(owner);
if (mCompositeDisposable != null && !mCompositeDisposable.isDisposed()) {
public void onDestroy( @NonNull LifecycleOwner owner ) {
super.onDestroy( owner );
if ( mCompositeDisposable != null && !mCompositeDisposable.isDisposed() ) {
mCompositeDisposable.dispose();
mCompositeDisposable = null;
}
//CameraChangedLiveData.getInstance().removeAllObserver();
}
}

View File

@@ -4,7 +4,6 @@ import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.Rect
import android.os.Bundle
import android.text.TextUtils
import android.view.View
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
@@ -15,26 +14,16 @@ import com.mogo.map.marker.IMogoMarker
import com.mogo.map.marker.IMogoMarkerClickListener
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.constants.SearchApisHolder
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
import com.mogo.module.navi.uitls.StringUtils
import com.mogo.utils.UiThreadHandler
import kotlinx.android.synthetic.main.fragment_search_category.cv_search_result
import kotlinx.android.synthetic.main.fragment_search_category.et_navi_search
import kotlinx.android.synthetic.main.fragment_search_category.iv_navi_back
import kotlinx.android.synthetic.main.fragment_search_category.pb_path
import kotlinx.android.synthetic.main.fragment_search_category.rv_search_result
import kotlinx.android.synthetic.main.fragment_search_category.tv_navi_navi
import kotlinx.android.synthetic.main.fragment_search_category.*
/**
* @author zyz
@@ -112,7 +101,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa
private fun addMarkers() {
addMarkers.clear()
var marginBounder = resources.getDimensionPixelSize(R.dimen.dp_60) * 2
SearchServiceHolder.getMapUIController().showBounds(TAG,
SearchApisHolder.getUiControllerApis().showBounds(TAG,
null,
locationList,
Rect(cv_search_result.width + marginBounder, marginBounder, marginBounder, marginBounder),
@@ -120,7 +109,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa
)
for (options in arrayList) {
var addMarker = SearchServiceHolder.getMarkerManger().addMarker(TAG, options)
var addMarker = SearchApisHolder.getMarkerManager().addMarker(TAG, options)
addMarker.onMarkerClickListener = this
addMarkers.add(addMarker)
}
@@ -180,7 +169,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa
iv_navi_back.setOnClickListener {
SearchServiceHolder.fragmentManager.pop()
SearchApisHolder.getFragmentManager().pop()
}
tv_navi_navi.setOnClickListener {
@@ -210,8 +199,8 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa
arrayList.get(mAdapter.lastPosition).icon(getMarkerIcon(mAdapter.lastPosition))
arrayList.get(mAdapter.current).icon(getMarkerIcon(mAdapter.current))
if (moveToCenter) {
SearchServiceHolder.statusManager.setUserInteractionStatus(TAG, true, false)
SearchServiceHolder.getMapUIController().moveToCenter(current.position)
SearchApisHolder.getStatusManager().setUserInteractionStatus(TAG, true, false)
SearchApisHolder.getUiControllerApis().moveToCenter(current.position, true)
}
}
@@ -236,7 +225,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa
super.onDestroyView()
mSearchPresenter.onDestroy(viewLifecycleOwner)
lifecycle.removeObserver(mSearchPresenter)
SearchServiceHolder.getMarkerManger().removeMarkers(TAG)
SearchApisHolder.getMarkerManager().removeMarkers(TAG)
unRegisterVoice()
}
@@ -253,7 +242,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa
companion object {
fun newInstance(category: String): Fragment {
MapCenterPointStrategy.setMapCenterPointByScene(SearchServiceHolder.getMapUIController(), Scene.CATEGORY_SEARCH)
MapCenterPointStrategy.setMapCenterPointByScene(SearchApisHolder.getUiControllerApis(), Scene.CATEGORY_SEARCH)
var bundle = Bundle()
bundle.putString("category", category)
var categorySerachFragment = CategorySearchFragment()

View File

@@ -11,13 +11,10 @@ import com.mogo.commons.voice.IMogoVoiceCmdCallBack
import com.mogo.map.MogoLatLng
import com.mogo.map.navi.IMogoNaviListener
import com.mogo.map.navi.MogoCalculatePath
import com.mogo.map.navi.MogoNaviConfig
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.DataConstants
import com.mogo.module.navi.constants.SearchServiceHolder
import com.mogo.module.navi.constants.SearchApisHolder
import com.mogo.module.navi.manager.SettingManager
import com.mogo.module.navi.ui.adapter.CalculatePathAdapter
import com.mogo.module.navi.ui.base.BaseFragment
@@ -72,7 +69,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
retry()
}
"cancel" -> {
SearchServiceHolder.fragmentManager.clearAll()
SearchApisHolder.getFragmentManager().clearAll()
}
}
}
@@ -84,7 +81,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
}
override fun onCalculateSuccess() {
var calculatedStrategies = SearchServiceHolder.getNavi().calculatedStrategies
var calculatedStrategies = SearchApisHolder.getNaviApis().calculatedStrategies
if (calculatedStrategies != null && calculatedStrategies.size > 0) {
mAdapter.setDatas(calculatedStrategies)
mAdapter.selectTag = calculatedStrategies[0].tagId
@@ -95,7 +92,9 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
if (calculatedStrategies.isNullOrEmpty()) {
return@postDelayed
}
SearchServiceHolder.getNavi().itemClickInteraction.onItemClicked(calculatedStrategies[0].tagId)
if (SearchApisHolder.getNaviApis().itemClickInteraction != null) {
SearchApisHolder.getNaviApis().itemClickInteraction.onItemClicked(calculatedStrategies[0].tagId)
}
if (calculatedStrategies.size == 1) {
// 一条路线,自动开启导航
@@ -157,16 +156,16 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
super.onViewCreated(view, savedInstanceState)
iv_navi_back.setOnClickListener {
SearchServiceHolder.fragmentManager.pop()
SearchApisHolder.getFragmentManager().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)
SearchApisHolder.getNaviApis().naviTo(mogoTip)
SearchServiceHolder.listenerCenter.registerMogoNaviListener(AMapConstants.PATH_FRAGMENT_CHOOSE_PATH, this)
SearchApisHolder.getRegisterCenterApis().registerMogoNaviListener(AMapConstants.PATH_FRAGMENT_CHOOSE_PATH, this)
var arrayList = ArrayList<MogoCalculatePath>()
mAdapter = CalculatePathAdapter(activity, arrayList)
@@ -181,7 +180,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
}
}
SearchServiceHolder.getNavi().setLineClickInteraction {
SearchApisHolder.getNaviApis().setLineClickInteraction {
mAdapter.selectTag = it
}
@@ -190,7 +189,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
selectPath(item)
}
SearchServiceHolder.getMarkerManger().removeMarkers()
SearchApisHolder.getMarkerManager().removeMarkers()
DataConstants.sCmds.entries.filter {
it != null && !TextUtils.isEmpty(it.key) && (it.value?.isNotEmpty() ?: false)
@@ -198,8 +197,8 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
AIAssist.getInstance(mContext).registerUnWakeupCommand(it.key, it.value, this@ChoosePathFragment)
}
SearchServiceHolder.intentManager.registerIntentListener(AMapConstants.COMMAND_START_NAVI, this)
SearchServiceHolder.intentManager.registerIntentListener(AMapConstants.COMMAND_CHOOSE_PATH, this)
SearchApisHolder.getIntentManager().registerIntentListener(AMapConstants.COMMAND_START_NAVI, this)
SearchApisHolder.getIntentManager().registerIntentListener(AMapConstants.COMMAND_CHOOSE_PATH, this)
}
private fun registerRetryVoice() {
@@ -211,7 +210,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
}
private fun retry() {
SearchServiceHolder.getNavi().naviTo(mogoTip)
SearchApisHolder.getNaviApis().naviTo(mogoTip)
pb_path.visibility = View.VISIBLE
group_path.visibility = View.GONE
}
@@ -221,28 +220,30 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
return
}
SearchServiceHolder.getNavi().startNavi(!SettingManager.isMonitor())
SearchServiceHolder.getMapUIController().recoverLockMode()
SearchApisHolder.getNaviApis().startNavi(!SettingManager.isMonitor())
SearchApisHolder.getUiControllerApis().recoverLockMode()
if (SearchServiceHolder.guideShowProvider.isPlayingVideo()) {
SearchServiceHolder.guideShowProvider.closeGuideShowView()
if (SearchApisHolder.getGuideShowApis().isPlayingVideo()) {
SearchApisHolder.getGuideShowApis().closeGuideShowView()
}
isStartedNavi = true
SearchServiceHolder.fragmentManager.clearAll()
SearchApisHolder.getFragmentManager().clearAll()
}
private fun selectPath(item: MogoCalculatePath?) {
item?.let {
mAdapter.setSelectTag(item.tagId)
SearchServiceHolder.getNavi().itemClickInteraction.onItemClicked(item.tagId)
if (SearchApisHolder.getNaviApis().itemClickInteraction != null) {
SearchApisHolder.getNaviApis().itemClickInteraction.onItemClicked(item.tagId)
}
}
}
override fun onDestroyView() {
super.onDestroyView()
SearchServiceHolder.listenerCenter.unregisterMogoNaviListener(AMapConstants.PATH_FRAGMENT_CHOOSE_PATH)
SearchApisHolder.getRegisterCenterApis().unregisterMogoNaviListener(AMapConstants.PATH_FRAGMENT_CHOOSE_PATH)
if (!isStartedNavi) {
SearchServiceHolder.getNavi().clearCalculatePaths()
SearchApisHolder.getNaviApis().clearCalculatePaths()
}
DataConstants.sCmds.entries.filter {
@@ -251,8 +252,8 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
AIAssist.getInstance(mContext).unregisterUnWakeupCommand(it.key)
}
SearchServiceHolder.intentManager.unregisterIntentListener(AMapConstants.COMMAND_START_NAVI, this)
SearchServiceHolder.intentManager.unregisterIntentListener(AMapConstants.COMMAND_CHOOSE_PATH, this)
SearchApisHolder.getIntentManager().unregisterIntentListener(AMapConstants.COMMAND_START_NAVI, this)
SearchApisHolder.getIntentManager().unregisterIntentListener(AMapConstants.COMMAND_CHOOSE_PATH, this)
}
override fun onIntentReceived(intentStr: String?, intent: Intent?) {
@@ -294,7 +295,6 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB
val TAG: String = "ChoosePathFragment"
fun newInstance(searchPoi: MogoLatLng): Fragment {
MapCenterPointStrategy.setMapCenterPointByScene(SearchServiceHolder.getMapUIController(), Scene.CALCULATE_PATH)
var bundle = Bundle()
bundle.putParcelable(AMapConstants.KEY_PARCELABLE, searchPoi)
var choosePathFragment = ChoosePathFragment()

View File

@@ -2,34 +2,29 @@ package com.mogo.module.navi.ui.search;
import android.content.Context;
import android.os.Bundle;
import android.os.health.ServiceHealthStats;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.analytics.AnalyticsUtils;
import com.mogo.commons.voice.AIAssist;
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
import com.mogo.map.search.inputtips.MogoTip;
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.constants.SearchApisHolder;
import com.mogo.module.navi.manager.AddressManager;
import com.mogo.module.navi.constants.SearchServiceHolder;
import com.mogo.module.navi.ui.adapter.HistoryPoiAdapter;
import com.mogo.module.navi.ui.adapter.SearchPoiAdapter;
import com.mogo.module.navi.ui.base.UiController;
import com.mogo.module.navi.ui.setting.NaviSettingFragment;
import com.mogo.module.navi.uitls.StringUtils;
import com.mogo.service.fragmentmanager.FragmentDescriptor;
import com.mogo.service.fragmentmanager.FragmentStackTransactionListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -45,8 +40,8 @@ import java.util.List;
* {@link SearchConstants#SEARCH_TYPE_MULTI_HOME}
*/
public class SearchFragment extends BaseSearchFragment
implements SearchView, View.OnClickListener, IMogoVoiceCmdCallBack,
FragmentStackTransactionListener {
implements SearchView, View.OnClickListener, IMogoVoiceCmdCallBack,
FragmentStackTransactionListener {
public static final String TAG = "search";
@@ -72,14 +67,15 @@ public class SearchFragment extends BaseSearchFragment
private TextView tvEmpty;
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof UiController) {
public void onAttach( Context context ) {
super.onAttach( context );
if ( context instanceof UiController ) {
}
}
@Override public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@Override
public void onCreate( @Nullable Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
}
@Override
@@ -88,114 +84,117 @@ public class SearchFragment extends BaseSearchFragment
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
SearchServiceHolder.INSTANCE.getMarkerManger().removeMarkers();
SearchServiceHolder.INSTANCE.getMapUIController().showMyLocation(false);
public void onActivityCreated( @Nullable Bundle savedInstanceState ) {
super.onActivityCreated( savedInstanceState );
SearchApisHolder.getMarkerManager().removeMarkers();
SearchApisHolder.getUiControllerApis().showMyLocation( false );
}
@Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mSearchResult = view.findViewById(R.id.rv_navi_search);
rvHistory = view.findViewById(R.id.rv_navi_history);
rlHistory = view.findViewById(R.id.rl_navi_history);
@Override
public void onViewCreated( @NonNull View view, @Nullable Bundle savedInstanceState ) {
super.onViewCreated( view, savedInstanceState );
mSearchResult = view.findViewById( R.id.rv_navi_search );
rvHistory = view.findViewById( R.id.rv_navi_history );
rlHistory = view.findViewById( R.id.rl_navi_history );
LinearLayoutManager linearManager =
new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
new LinearLayoutManager( getActivity(), LinearLayoutManager.VERTICAL, false );
rvHistory.setLayoutManager(linearManager);
rvHistory.setLayoutManager( linearManager );
LinearLayoutManager linearLayoutManager =
new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
mSearchResult.setLayoutManager(linearLayoutManager);
new LinearLayoutManager( getActivity(), LinearLayoutManager.VERTICAL, false );
mSearchResult.setLayoutManager( linearLayoutManager );
mPoiAdapter = new SearchPoiAdapter(getActivity(), new ArrayList<>());
mSearchResult.setAdapter(mPoiAdapter);
mPoiAdapter = new SearchPoiAdapter( getActivity(), new ArrayList<>() );
mSearchResult.setAdapter( mPoiAdapter );
mHistoryAdapter = new HistoryPoiAdapter(getActivity(), new ArrayList<>());
rvHistory.setAdapter(mHistoryAdapter);
mHistoryAdapter = new HistoryPoiAdapter( getActivity(), new ArrayList<>() );
rvHistory.setAdapter( mHistoryAdapter );
tvEmpty = findViewById(R.id.tv_navi_list_empty);
tvEmpty = findViewById( R.id.tv_navi_list_empty );
findViewById(R.id.iv_navi_back).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
SearchServiceHolder.INSTANCE.getFragmentManager().pop();
findViewById( R.id.iv_navi_back ).setOnClickListener( v -> {
SearchApisHolder.getFragmentManager().pop();
} );
mHistoryAdapter.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick( View v ) {
SearchApisHolder.getAnalyticsApis().track( "Navigation_History_destination", new HashMap< String, Object >() );
SearchPoi item = ( SearchPoi ) v.getTag( R.id.tag_item );
goHistory( item );
}
});
} );
mHistoryAdapter.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
SearchServiceHolder.INSTANCE.getAnalyticsManager()
.track("Navigation_History_destination", new HashMap<String, Object>());
SearchPoi item = (SearchPoi) v.getTag(R.id.tag_item);
goHistory(item);
mPoiAdapter.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick( View v ) {
MogoTip tag = ( MogoTip ) v.getTag( R.id.tag_position );
goResult( tag );
}
});
} );
mPoiAdapter.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
MogoTip tag = (MogoTip) v.getTag(R.id.tag_position);
goResult(tag);
}
});
findViewById(R.id.tv_navi_history_clear).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
findViewById( R.id.tv_navi_history_clear ).setOnClickListener( new View.OnClickListener() {
@Override
public void onClick( View v ) {
mSearchPresenter.deleteAllCachedPoi();
}
});
} );
findViewById(R.id.tv_navi_setting).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
findViewById( R.id.tv_navi_setting ).setOnClickListener( new View.OnClickListener() {
@Override
public void onClick( View v ) {
goSetting();
}
});
} );
findViewById(R.id.tv_navi_company).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
findViewById( R.id.tv_navi_company ).setOnClickListener( new View.OnClickListener() {
@Override
public void onClick( View v ) {
AddressManager.INSTANCE.goCompany();
}
});
} );
findViewById(R.id.tv_navi_home).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
findViewById( R.id.tv_navi_home ).setOnClickListener( new View.OnClickListener() {
@Override
public void onClick( View v ) {
AddressManager.INSTANCE.goHome();
}
});
} );
findViewById(R.id.tv_navi_wash).setOnClickListener(this);
findViewById(R.id.tv_navi_toilet).setOnClickListener(this);
findViewById(R.id.tv_navi_gas).setOnClickListener(this);
findViewById(R.id.tv_navi_restaurant).setOnClickListener(this);
findViewById(R.id.tv_navi_park).setOnClickListener(this);
findViewById( R.id.tv_navi_wash ).setOnClickListener( this );
findViewById( R.id.tv_navi_toilet ).setOnClickListener( this );
findViewById( R.id.tv_navi_gas ).setOnClickListener( this );
findViewById( R.id.tv_navi_restaurant ).setOnClickListener( this );
findViewById( R.id.tv_navi_park ).setOnClickListener( this );
findViewById(R.id.tv_navi_search).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
SearchServiceHolder.INSTANCE.getAnalyticsManager()
.track("Navigation_button_search", new HashMap<String, Object>());
mSearchPresenter.startSearchPoiByInput(mSearchBox.getText().toString());
findViewById( R.id.tv_navi_search ).setOnClickListener( new View.OnClickListener() {
@Override
public void onClick( View v ) {
SearchApisHolder.getAnalyticsApis().track( "Navigation_button_search", new HashMap< String, Object >() );
mSearchPresenter.startSearchPoiByInput( mSearchBox.getText().toString() );
}
});
} );
registerVoidCmd();
registerVoidCmd();
}
private void goResult(MogoTip tag) {
SearchPoi searchPoi = EntityConvertUtils.tipToPoi(tag);
if (tag.getPoint() == null) {
goCategory(tag.getName());
private void goResult( MogoTip tag ) {
SearchPoi searchPoi = EntityConvertUtils.tipToPoi( tag );
if ( tag.getPoint() == null ) {
goCategory( tag.getName() );
} else {
mSearchPresenter.insert(searchPoi);
mSearchPresenter.insert( searchPoi );
AddressManager.INSTANCE.calculatePath( tag.getPoint() );
}
}
private void goSetting() {
SearchServiceHolder.INSTANCE.getAnalyticsManager().track("Navigation_button_setting", new HashMap<String, Object>());
SearchApisHolder.getAnalyticsApis().track( "Navigation_button_setting", new HashMap< String, Object >() );
AddressManager.INSTANCE.goSettings();
}
private void goHistory(SearchPoi item) {
MogoTip mogoTip = EntityConvertUtils.poi2MogoTip(item);
private void goHistory( SearchPoi item ) {
MogoTip mogoTip = EntityConvertUtils.poi2MogoTip( item );
AddressManager.INSTANCE.calculatePath( mogoTip.getPoint() );
}
@@ -211,99 +210,95 @@ public class SearchFragment extends BaseSearchFragment
private void registerVoidCmd() {
AIAssist.getInstance(getContext())
.registerUnWakeupCommand(GO_HOME_CMD, new String[] { "回家" }, this);
AIAssist.getInstance(getContext())
.registerUnWakeupCommand(GO_COMPANY_CMD, new String[] { "去公司" }, this);
AIAssist.getInstance(getContext())
.registerUnWakeupCommand(GAS_CMD, new String[] { "加油站" }, this);
AIAssist.getInstance(getContext())
.registerUnWakeupCommand(RESTAURANT_CMD, new String[] { "餐馆" }, this);
AIAssist.getInstance(getContext())
.registerUnWakeupCommand(TOILET_CMD, new String[] { "卫生间", "厕所" }, this);
AIAssist.getInstance(getContext())
.registerUnWakeupCommand(PARK_CMD, new String[] { "停车场" }, this);
AIAssist.getInstance(getContext())
.registerUnWakeupCommand(NAVI_SETTING_CMD, new String[] { "导航设置" }, this);
AIAssist.getInstance(getContext())
.registerUnWakeupCommand(CLEAN_CMD, new String[] { "清空历史目的地" }, this);
AIAssist.getInstance(getContext())
.registerUnWakeupCommand(WASH_CMD, new String[] { "洗车" }, this);
AIAssist.getInstance( getContext() )
.registerUnWakeupCommand( GO_HOME_CMD, new String[]{"回家"}, this );
AIAssist.getInstance( getContext() )
.registerUnWakeupCommand( GO_COMPANY_CMD, new String[]{"去公司"}, this );
AIAssist.getInstance( getContext() )
.registerUnWakeupCommand( GAS_CMD, new String[]{"加油站"}, this );
AIAssist.getInstance( getContext() )
.registerUnWakeupCommand( RESTAURANT_CMD, new String[]{"餐馆"}, this );
AIAssist.getInstance( getContext() )
.registerUnWakeupCommand( TOILET_CMD, new String[]{"卫生间", "厕所"}, this );
AIAssist.getInstance( getContext() )
.registerUnWakeupCommand( PARK_CMD, new String[]{"停车场"}, this );
AIAssist.getInstance( getContext() )
.registerUnWakeupCommand( NAVI_SETTING_CMD, new String[]{"导航设置"}, this );
AIAssist.getInstance( getContext() )
.registerUnWakeupCommand( CLEAN_CMD, new String[]{"清空历史目的地"}, this );
AIAssist.getInstance( getContext() )
.registerUnWakeupCommand( WASH_CMD, new String[]{"洗车"}, this );
}
@Override
public void renderSearchPoiResult(List<MogoTip> datums, boolean showDelete) {
if (datums == null || datums.isEmpty()) {
showEmpty(getString(R.string.search_empty));
public void renderSearchPoiResult( List< MogoTip > datums, boolean showDelete ) {
if ( datums == null || datums.isEmpty() ) {
showEmpty( getString( R.string.search_empty ) );
return;
}
showResult();
mPoiAdapter.setDatas(datums);
mPoiAdapter.setDatas( datums );
registerResult();
}
@Override public void showHistory(List<SearchPoi> datums) {
@Override
public void showHistory( List< SearchPoi > datums ) {
if (datums == null || datums.isEmpty()) {
showEmpty(getString(R.string.history_empty));
if ( datums == null || datums.isEmpty() ) {
showEmpty( getString( R.string.history_empty ) );
return;
}
showHistory();
mHistoryAdapter.setDatas(datums);
mHistoryAdapter.setDatas( datums );
registerHistory();
}
private void registerHistory() {
List<SearchPoi> datums = mHistoryAdapter.getList();
for (int i = 0; i < datums.size(); i++) {
String s = StringUtils.int2String(i + 1);
AIAssist.getInstance(getContext())
.registerUnWakeupCommand("history" + i,
new String[] { "" + s + "", "" + s + "" }, this);
if (cmds.contains("history" + i)) {
List< SearchPoi > datums = mHistoryAdapter.getList();
for ( int i = 0; i < datums.size(); i++ ) {
String s = StringUtils.int2String( i + 1 );
AIAssist.getInstance( getContext() )
.registerUnWakeupCommand( "history" + i,
new String[]{"" + s + "", "" + s + ""}, this );
if ( cmds.contains( "history" + i ) ) {
continue;
}
cmds.add("history" + i);
cmds.add( "history" + i );
}
}
private void registerResult() {
List<MogoTip> datums = mPoiAdapter.getList();
for (int i = 0; i < datums.size(); i++) {
String s = StringUtils.int2String(i + 1);
AIAssist.getInstance(getContext())
.registerUnWakeupCommand("history" + i,
new String[] { "" + s + "", "" + s + "" }, this);
if (cmds.contains("history" + i)) {
List< MogoTip > datums = mPoiAdapter.getList();
for ( int i = 0; i < datums.size(); i++ ) {
String s = StringUtils.int2String( i + 1 );
AIAssist.getInstance( getContext() )
.registerUnWakeupCommand( "history" + i,
new String[]{"" + s + "", "" + s + ""}, this );
if ( cmds.contains( "history" + i ) ) {
continue;
}
cmds.add("history" + i);
cmds.add( "history" + i );
}
}
private List<String> cmds = new ArrayList<String>();
private List< String > cmds = new ArrayList< String >();
@Override
public int getSearchType() {
return mSearchType;
}
@Override public void startJumpAnimation() {
}
/**
* 退出搜索,进行清理
*/
private void exitSearch() {
switch (mSearchType) {
switch ( mSearchType ) {
case SearchConstants.SEARCH_TYPE_COMMON:
try {
} catch (Exception e) {
} catch ( Exception e ) {
e.printStackTrace();
}
break;
@@ -313,97 +308,79 @@ public class SearchFragment extends BaseSearchFragment
}
private void showResult() {
rlHistory.setVisibility(View.GONE);
mSearchResult.setVisibility(View.VISIBLE);
tvEmpty.setVisibility(View.GONE);
rlHistory.setVisibility( View.GONE );
mSearchResult.setVisibility( View.VISIBLE );
tvEmpty.setVisibility( View.GONE );
}
private void showHistory() {
rlHistory.setVisibility(View.VISIBLE);
mSearchResult.setVisibility(View.GONE);
tvEmpty.setVisibility(View.GONE);
rlHistory.setVisibility( View.VISIBLE );
mSearchResult.setVisibility( View.GONE );
tvEmpty.setVisibility( View.GONE );
}
private void showEmpty(String str) {
rlHistory.setVisibility(View.GONE);
tvEmpty.setText(str);
mSearchResult.setVisibility(View.GONE);
tvEmpty.setVisibility(View.VISIBLE);
private void showEmpty( String str ) {
rlHistory.setVisibility( View.GONE );
tvEmpty.setText( str );
mSearchResult.setVisibility( View.GONE );
tvEmpty.setVisibility( View.VISIBLE );
}
private boolean isHistory(){
return rlHistory.getVisibility()==View.VISIBLE;
private boolean isHistory() {
return rlHistory.getVisibility() == View.VISIBLE;
}
/**
* 类别
*/
@Override public void onClick(View v) {
TextView category = (TextView) v;
@Override
public void onClick( View v ) {
TextView category = ( TextView ) v;
String text = category.getText().toString();
goCategory(text);
goCategory( text );
}
private void goCategory(String text) {
private void goCategory( String text ) {
AddressManager.INSTANCE.categorySearch( text );
}
@Override public void onResume() {
@Override
public void onResume() {
super.onResume();
}
@Override public void onPause() {
@Override
public void onPause() {
super.onPause();
}
@Override
public void onDestroyView() {
super.onDestroyView();
SearchServiceHolder.INSTANCE.getMapUIController().showMyLocation(true);
// moveMapToRight();
SearchApisHolder.getUiControllerApis().showMyLocation( true );
unRegisterVoice();
}
private void unRegisterVoice() {
//private static final String GO_HOME_CMD="goHome";
//private static final String GO_COMPANY_CMD="goCompany";
//private static final String GAS_CMD="gas";
//private static final String RESTAURANT_CMD="restaurant";
//private static final String TOILET_CMD="toilet";
//private static final String PARK_CMD="park";
//private static final String WASH_CMD="wash";
//private static final String NAVI_SETTING_CMD="setting";
//private static final String CLEAN_CMD="clean";
//private static final String BACK_CMD="back";
AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(GO_HOME_CMD);
AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(GO_COMPANY_CMD);
AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(GAS_CMD);
AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(RESTAURANT_CMD);
AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(TOILET_CMD);
AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(PARK_CMD);
AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(WASH_CMD);
AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(NAVI_SETTING_CMD);
AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(CLEAN_CMD);
for (String cmd : cmds) {
AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(cmd);
AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( GO_HOME_CMD );
AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( GO_COMPANY_CMD );
AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( GAS_CMD );
AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( RESTAURANT_CMD );
AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( TOILET_CMD );
AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( PARK_CMD );
AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( WASH_CMD );
AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( NAVI_SETTING_CMD );
AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( CLEAN_CMD );
for ( String cmd : cmds ) {
AIAssist.getInstance( getContext() ).unregisterUnWakeupCommand( cmd );
}
}
//@Override public void onPause() {
// super.onPause();
// unRegisterVoice();
//}
//
//@Override public void onResume() {
// super.onResume();
// registerVoidCmd();
// registerHistory();
//}
@Override public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (hidden) {
@Override
public void onHiddenChanged( boolean hidden ) {
super.onHiddenChanged( hidden );
if ( hidden ) {
unRegisterVoice();
} else {
registerVoidCmd();
@@ -411,36 +388,37 @@ public class SearchFragment extends BaseSearchFragment
}
}
@Override public void onCmdSelected(String cmd) {
if (!TextUtils.isEmpty(cmd) && cmd.startsWith("history")) {
String index = cmd.substring(7);
Integer integer = Integer.valueOf(index);
if (isHistory()){
if (integer < mHistoryAdapter.getItemCount()) {
SearchPoi item = mHistoryAdapter.getItem(integer);
goHistory(item);
}
}else {
if (integer < mPoiAdapter.getItemCount()) {
MogoTip item = mPoiAdapter.getItem(integer);
goResult(item);
@Override
public void onCmdSelected( String cmd ) {
if ( !TextUtils.isEmpty( cmd ) && cmd.startsWith( "history" ) ) {
String index = cmd.substring( 7 );
Integer integer = Integer.valueOf( index );
if ( isHistory() ) {
if ( integer < mHistoryAdapter.getItemCount() ) {
SearchPoi item = mHistoryAdapter.getItem( integer );
goHistory( item );
}
} else {
if ( integer < mPoiAdapter.getItemCount() ) {
MogoTip item = mPoiAdapter.getItem( integer );
goResult( item );
}
}
return;
}
switch (cmd) {
switch ( cmd ) {
case CLEAN_CMD:
mSearchPresenter.deleteAllCachedPoi();
AIAssist.getInstance(getContext())
.speakQAndACmd(getString(R.string.notice_clean_history),
new String[] { "确定","立即清空" }, new String[] { "取消" }, this);
AIAssist.getInstance( getContext() )
.speakQAndACmd( getString( R.string.notice_clean_history ),
new String[]{"确定", "立即清空"}, new String[]{"取消"}, this );
break;
case GAS_CMD:
goCategory(getString(R.string.navi_gas));
goCategory( getString( R.string.navi_gas ) );
break;
case GO_COMPANY_CMD:
@@ -455,20 +433,20 @@ public class SearchFragment extends BaseSearchFragment
break;
case PARK_CMD:
goCategory(getString(R.string.navi_park));
goCategory( getString( R.string.navi_park ) );
break;
case RESTAURANT_CMD:
goCategory(getString(R.string.navi_restrant));
goCategory( getString( R.string.navi_restrant ) );
break;
case TOILET_CMD:
goCategory(getString(R.string.navi_toilet));
goCategory( getString( R.string.navi_toilet ) );
break;
case WASH_CMD:
goCategory(getString(R.string.navi_wash));
goCategory( getString( R.string.navi_wash ) );
break;
@@ -477,26 +455,31 @@ public class SearchFragment extends BaseSearchFragment
}
}
@Override public void onCmdAction(String speakText) {
@Override
public void onCmdAction( String speakText ) {
mSearchPresenter.hideDialog();
mSearchPresenter.deleteAllCachedPoiImpl();
}
@Override public void onCmdCancel(String speakText) {
@Override
public void onCmdCancel( String speakText ) {
mSearchPresenter.hideDialog();
}
@Override public void onSpeakEnd(String speakText) {
@Override
public void onSpeakEnd( String speakText ) {
}
@Override public void onSpeakSelectTimeOut(String speakText) {
@Override
public void onSpeakSelectTimeOut( String speakText ) {
}
@Override public void onTransaction(int size) {
@Override
public void onTransaction( int size ) {
}
}

View File

@@ -1,39 +1,36 @@
package com.mogo.module.navi.ui.search;
import android.app.AlertDialog;
import android.text.Editable;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import androidx.annotation.NonNull;
import androidx.lifecycle.LifecycleOwner;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.mvp.Presenter;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.search.geo.MogoPoiItem;
import com.mogo.map.search.inputtips.IMogoInputtipsListener;
import com.mogo.map.search.inputtips.IMogoInputtipsSearch;
import com.mogo.map.search.inputtips.MogoTip;
import com.mogo.map.search.inputtips.query.MogoInputtipsQuery;
import com.mogo.map.search.poisearch.IMogoPoiSearch;
import com.mogo.map.search.poisearch.IMogoPoiSearchListener;
import com.mogo.map.search.poisearch.MogoPoiResult;
import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery;
import com.mogo.module.common.TextWatcherAdapter;
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.DataConstants;
import com.mogo.module.navi.constants.SearchServiceHolder;
import com.mogo.module.navi.constants.SearchApisHolder;
import com.mogo.module.navi.database.AppDataBase;
import com.mogo.module.navi.dialog.NoticeDialog;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.map.IMogoMapService;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.Scheduler;
import io.reactivex.Single;
import io.reactivex.SingleEmitter;
import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -41,7 +38,6 @@ import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
import java.util.List;
/**
* @author congtaowang
@@ -105,8 +101,7 @@ public class SearchPresenter extends Presenter<SearchView> {
MogoInputtipsQuery mogoInputtipsQuery = new MogoInputtipsQuery();
mogoInputtipsQuery.setKeyword(keyword);
MogoLocation lastKnowLocation =
SearchServiceHolder.INSTANCE.getLocationClient().getLastKnowLocation();
MogoLocation lastKnowLocation = SearchApisHolder.getLocationClientApis().getLastKnowLocation();
mogoInputtipsQuery.setCity(lastKnowLocation.getCityName());
mogoInputtipsQuery.setCityLimit(true);
IMogoInputtipsSearch inputtipsSearch =

View File

@@ -1,39 +0,0 @@
package com.mogo.module.navi.ui.search;
/**
* @author congtaowang
* @since 2019-12-08
* <p>
* 搜索工具类
*/
public class SearchUtils {
/**
* @param searchType
* @return
*/
public static int checkAndResetSearchType( int searchType ) {
switch ( searchType ) {
case SearchConstants.SEARCH_TYPE_COMMON:
case SearchConstants.SEARCH_TYPE_MULTI_HOME:
case SearchConstants.SEARCH_TYPE_MULTI_COMPANY:
break;
default:
searchType = SearchConstants.SEARCH_TYPE_COMMON;
break;
}
return searchType;
}
public static String getSearchTypeActionName( int searchType ) {
switch ( searchType ) {
case SearchConstants.SEARCH_TYPE_COMMON:
return null;
case SearchConstants.SEARCH_TYPE_MULTI_HOME:
return "设为家";
case SearchConstants.SEARCH_TYPE_MULTI_COMPANY:
return "设为公司";
}
return null;
}
}

View File

@@ -1,9 +1,11 @@
package com.mogo.module.navi.ui.search;
import android.widget.EditText;
import com.mogo.commons.mvp.IView;
import com.mogo.map.search.inputtips.MogoTip;
import com.mogo.module.navi.bean.SearchPoi;
import java.util.List;
/**
@@ -20,25 +22,11 @@ public interface SearchView extends IView {
* @param datums
* @param showDelete 是否显示清空历史记录项
*/
void renderSearchPoiResult(List<MogoTip> datums, boolean showDelete);
void renderSearchPoiResult( List< MogoTip > datums, boolean showDelete );
void showHistory(List<SearchPoi> datums);
void showHistory( List< SearchPoi > datums );
int getSearchType();
///**
// * 显示逆地理位置编码结果
// *
// * @param address
// */
//void renderChoicePointResult(RegeocodeAddress address);
/**
* 选点完毕后marker动画
*/
void startJumpAnimation();
}

View File

@@ -4,25 +4,19 @@ import android.os.Bundle
import android.view.View
import android.widget.CompoundButton
import android.widget.CompoundButton.OnCheckedChangeListener
import android.widget.CompoundButton.VISIBLE
import android.widget.SeekBar
import android.widget.SeekBar.OnSeekBarChangeListener
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.commons.debug.DebugConfig
import com.mogo.commons.voice.AIAssist
import com.mogo.map.constants.BroadcastMode
import com.mogo.map.uicontroller.EnumMapUI
import com.mogo.module.common.MogoModulePaths
import com.mogo.module.navi.R
import com.mogo.module.navi.bean.SearchPoi
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.constants.SearchApisHolder
import com.mogo.module.navi.manager.AddressManager
import com.mogo.module.navi.manager.SettingManager
import com.mogo.module.navi.manager.VolumeManager
import com.mogo.module.navi.ui.base.BaseFragment
import com.mogo.utils.UiThreadHandler
import kotlinx.android.synthetic.main.fragment_navi_setting.*
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
@@ -66,7 +60,7 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener {
}
if (isChecked) {
SearchServiceHolder.analyticsManager.track("Navigation_preference", mapOf("type" to type))
SearchApisHolder.getAnalyticsApis().track("Navigation_preference", mapOf("type" to type))
}
}
@@ -109,7 +103,7 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener {
private fun initEvent() {
rl_navi_setting_title.setOnClickListener {
SearchServiceHolder.fragmentManager.pop()
SearchApisHolder.getFragmentManager().pop()
}
iv_sound_plus.setOnClickListener {
VolumeManager.getInstance(context).incVolume()
@@ -134,8 +128,7 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener {
sb_navi_volume_progress.setOnSeekBarChangeListener(object : OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
if (fromUser) {
VolumeManager.getInstance(context)
.setSysVolume(progress)
VolumeManager.getInstance(context).setSysVolume(progress)
SettingManager.volume = sb_navi_volume_progress.progress
}
@@ -156,39 +149,37 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener {
SettingManager.mapType = checkedId
when (checkedId) {
R.id.rb_navi_day -> {
SearchServiceHolder.getMapUIController().changeMapMode(EnumMapUI.Type_Light)
SearchApisHolder.getUiControllerApis().changeMapMode(EnumMapUI.Type_Light)
}
R.id.rb_navi_night -> {
SearchServiceHolder.getMapUIController().changeMapMode(EnumMapUI.Type_Night)
SearchApisHolder.getUiControllerApis().changeMapMode(EnumMapUI.Type_Night)
}
R.id.rb_navi_auto -> {
SearchServiceHolder.getMapUIController().changeMapMode(EnumMapUI.Type_AUTO_LIGHT_Night)
SearchApisHolder.getUiControllerApis().changeMapMode(EnumMapUI.Type_AUTO_LIGHT_Night)
}
}
}
rg_navi_sound_type.setOnCheckedChangeListener { group, checkedId ->
SettingManager.voiceStyle = checkedId
SearchServiceHolder.getNavi().setBroadcastMode(
if (checkedId == R.id.rb_navi_detail) BroadcastMode.DETAIL else BroadcastMode.CONCISE
)
if (checkedId == R.id.rb_navi_detail) {
SearchServiceHolder.analyticsManager.track("Navigation_guide_type", mapOf("type" to 1))
} else {
SearchServiceHolder.analyticsManager.track("Navigation_guide_type", mapOf("type" to 2))
when (checkedId) {
R.id.rb_navi_detail -> {
SearchApisHolder.getSettingManager().speakDetail()
SearchApisHolder.getAnalyticsApis().track("Navigation_guide_type", mapOf("type" to 1))
}
R.id.rb_navi_draft -> {
SearchApisHolder.getSettingManager().speakDraft()
SearchApisHolder.getAnalyticsApis().track("Navigation_guide_type", mapOf("type" to 2))
}
}
}
aimlessModeGroup.setOnCheckedChangeListener { group, checkedId ->
SettingManager.setAimlessMode(checkedId)
when (checkedId){
when (checkedId) {
R.id.aimlessModeClose -> {
SearchServiceHolder.getNavi().setAimlessModeStatus(false)
SearchApisHolder.getSettingManager().closeAimlessMode()
AIAssist.getInstance(mContext).speakTTSVoice("已为您关闭巡航模式")
}
R.id.aimlessModeOpen -> {
SearchServiceHolder.getNavi().setAimlessModeStatus(true)
SearchApisHolder.getSettingManager().openAimlessMode()
AIAssist.getInstance(mContext).speakTTSVoice("已为您开启巡航模式")
}
}
@@ -196,24 +187,24 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener {
tv_navi_clear_home_address.setOnClickListener {
AddressManager.deleteHome(context!!)
AddressManager.deleteHome()
clearHome()
}
tv_navi_clear_company_address.setOnClickListener {
AddressManager.deleteCompany(context!!)
AddressManager.deleteCompany()
clearCompany()
}
tv_navi_company_address.setOnClickListener {
if (!AddressManager.hasCompany()) {
AddressManager.goCompany()
SearchApisHolder.getSearchManager().goCompany()
}
}
tv_navi_home_address.setOnClickListener {
if (!AddressManager.hasHome()) {
AddressManager.goHome()
SearchApisHolder.getSearchManager().goHome()
}
}
@@ -231,9 +222,9 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener {
SettingManager.setGpsSimulator(isChecked)
if (isChecked) {
SearchServiceHolder.gpsSimulator.open()
SearchApisHolder.getGpsSimulatorManager().open()
} else {
SearchServiceHolder.gpsSimulator.close()
SearchApisHolder.getGpsSimulatorManager().close()
}
}
tb_navi.isChecked = SettingManager.isMonitor()

View File

@@ -9,6 +9,7 @@ import com.mogo.map.MogoLatLng
import com.mogo.map.listener.IMogoMapListener
import com.mogo.map.marker.IMogoMarker
import com.mogo.map.marker.MogoMarkerOptions
import com.mogo.map.search.geo.IMogoGeoSearch
import com.mogo.map.search.geo.IMogoGeoSearchListener
import com.mogo.map.search.geo.MogoGeocodeResult
import com.mogo.map.search.geo.MogoRegeocodeResult
@@ -20,7 +21,7 @@ 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.constants.SearchApisHolder
import com.mogo.module.navi.cp.AddressHelper
import com.mogo.module.navi.database.AppDataBase
import com.mogo.module.navi.manager.AddressManager
@@ -37,6 +38,8 @@ import kotlinx.android.synthetic.main.fragment_setting_address.*
* 2020-01-07.
*/
class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener {
override fun onRegeocodeSearched(regeocodeResult: MogoRegeocodeResult?) {
et_navi_search.setText(regeocodeResult?.regeocodeAddress?.formatAddress)
var formatAddress = regeocodeResult?.regeocodeAddress?.formatAddress
@@ -58,6 +61,8 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener {
private var style: Int = DataConstants.TYPE_HOME_ADDRESS
var addMarker: IMogoMarker? = null
private lateinit var mGeoSearch: IMogoGeoSearch
private var selectPoi: SearchPoi? = null
private var mapListener: IMogoMapListener = object : MogoMapListenerAdapter() {
override fun onMapChanged(
@@ -69,7 +74,7 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener {
selectPoi = EntityConvertUtils.geoToPoi(latLng?.lat ?: 0.0, latLng?.lng ?: 0.0, style)
var mogoRegeocodeQuery = MogoRegeocodeQuery()
mogoRegeocodeQuery.point = latLng
SearchServiceHolder.getGeoSearcher().getFromLocationAsyn(mogoRegeocodeQuery)
mGeoSearch.getFromLocationAsyn(mogoRegeocodeQuery)
addMarker?.startJumpAnimation(
150f,
600,
@@ -86,12 +91,13 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
style = arguments?.getInt(AMapConstants.KEY_SET_HOME_COMPONY)
?: DataConstants.TYPE_HOME_ADDRESS
SearchServiceHolder.listenerCenter.registerMogoMapListener(AMapConstants.PATH_FRAGMENT_SETTING_HOME, mapListener)
SearchServiceHolder.getMapUIController().showMyLocation(false)
SearchServiceHolder.getGeoSearcher().setGeoSearchListener(this)
SearchServiceHolder.getMarkerManger().removeMarkers()
style = arguments?.getInt(AMapConstants.KEY_SET_HOME_COMPONY) ?: DataConstants.TYPE_HOME_ADDRESS
SearchApisHolder.getRegisterCenterApis().registerMogoMapListener(AMapConstants.PATH_FRAGMENT_SETTING_HOME, mapListener)
SearchApisHolder.getUiControllerApis().showMyLocation(false)
SearchApisHolder.getMarkerManager().removeMarkers()
mGeoSearch = SearchApisHolder.getMapServiceApis().getGeoSearch(context)
mGeoSearch.setGeoSearchListener(this)
}
override fun getLayoutId(): Int {
@@ -119,7 +125,7 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener {
}
iv_navi_back.setOnClickListener {
SearchServiceHolder.fragmentManager.pop()
SearchApisHolder.getFragmentManager().pop()
}
tv_set_as_home.setOnClickListener {
if (selectPoi == null) {
@@ -127,12 +133,12 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener {
return@setOnClickListener
}
insert(selectPoi!!)
SearchServiceHolder.fragmentManager.pop()
SearchApisHolder.getFragmentManager().pop()
}
et_navi_search.isEnabled = false
et_navi_search.setText(getString(string.drag_map_to_choose))
var location = SearchServiceHolder.getMapUIController().windowCenterLocation
var location = SearchApisHolder.getUiControllerApis().windowCenterLocation
UiThreadHandler.postDelayed({
if (!isAdded) {
@@ -145,10 +151,9 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener {
.owner(TAG)
.anchor(0.5f, 1f)
.longitude(location?.lng ?: 0.0)
addMarker = SearchServiceHolder.getMarkerManger()
.addMarker(AMapConstants.PATH_FRAGMENT_SETTING_HOME, options)
addMarker = SearchApisHolder.getMarkerManager().addMarker(AMapConstants.PATH_FRAGMENT_SETTING_HOME, options)
var locationPointInScreen = SearchServiceHolder.getMapUIController().getLocationPointInScreen(location)
var locationPointInScreen = SearchApisHolder.getUiControllerApis().getLocationPointInScreen(location)
addMarker?.setPositionByPixels(locationPointInScreen)
}, 500L)
}
@@ -169,9 +174,7 @@ class SettingAddressFragment : BaseFragment(), IMogoGeoSearchListener {
override fun onDestroyView() {
super.onDestroyView()
SearchServiceHolder.listenerCenter.unregisterMogoMapListener(
AMapConstants.PATH_FRAGMENT_SETTING_HOME
)
SearchApisHolder.getRegisterCenterApis().unregisterMogoMapListener(AMapConstants.PATH_FRAGMENT_SETTING_HOME)
addMarker?.destroy()
}