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 5c12f60e1a..c007332caf 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 @@ -50,12 +50,12 @@ import java.util.Map; *

* 描述 */ -public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresenter > implements EntranceView, - IMogoNaviListener, IMogoMapListener { +public class EntranceFragment extends MvpFragment + implements EntranceView, + IMogoNaviListener, IMogoMapListener { private static final String TAG = "EntranceFragment"; - private View mSearch; private View mCommonAddress; @@ -91,6 +91,7 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent */ private IMogoModuleProvider mSearchProvider; private boolean mIsLock = true; + private View ivMode; @Override protected int getLayoutId() { @@ -99,92 +100,119 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent @Override protected void initViews() { - mMogoFragmentManager = ( IMogoFragmentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_FRAGMENT_MANAGER ).navigation(); - mMogoAddressManager = ( IMogoAddressManager ) ARouter.getInstance().build( MogoServicePaths.PATH_ADDRESS_MANAGER ).navigation(); + mMogoFragmentManager = (IMogoFragmentManager) ARouter.getInstance() + .build(MogoServicePaths.PATH_FRAGMENT_MANAGER) + .navigation(); + mMogoAddressManager = (IMogoAddressManager) ARouter.getInstance() + .build(MogoServicePaths.PATH_ADDRESS_MANAGER) + .navigation(); - mCommonAddress = findViewById( R.id.module_entrance_id_common_address ); + mCommonAddress = findViewById(R.id.module_entrance_id_common_address); - mSearch = findViewById( R.id.module_entrance_id_search ); + mSearch = findViewById(R.id.module_entrance_id_search); - mSearch.setOnClickListener( view -> { - 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() ); - } ); + mSearch.setOnClickListener(view -> { + 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()); + }); - mHome = findViewById( R.id.module_entrance_id_home ); - mHome.setOnClickListener( view -> { + mHome = findViewById(R.id.module_entrance_id_home); + mHome.setOnClickListener(view -> { mMogoAddressManager.goHome(); - } ); + }); - mCompany = findViewById( R.id.module_entrance_id_company ); - mCompany.setOnClickListener( view -> { + mCompany = findViewById(R.id.module_entrance_id_company); + mCompany.setOnClickListener(view -> { mMogoAddressManager.goCompany(); - } ); + }); - mUploadRoadCondition = findViewById( R.id.module_entrance_id_upload_road_condition ); - mUploadRoadCondition.setOnClickListener( view -> { - ShareControl.getInstance( getActivity() ).showDialog(); - traceData( "1" ); - } ); + mUploadRoadCondition = findViewById(R.id.module_entrance_id_upload_road_condition); + mUploadRoadCondition.setOnClickListener(view -> { + ShareControl.getInstance(getActivity()).showDialog(); + traceData("1"); + }); - mVRMode = findViewById( R.id.module_entrance_id_vr_mode ); - mVRMode.setOnClickListener( view -> { - } ); + mVRMode = findViewById(R.id.module_entrance_id_vr_mode); + mVRMode.setOnClickListener(view -> { + }); - mMove2CurrentLocation = findViewById( R.id.module_entrance_id_move2_current_location ); - mMove2CurrentLocation.setOnClickListener( view -> { + mMove2CurrentLocation = findViewById(R.id.module_entrance_id_move2_current_location); + mMove2CurrentLocation.setOnClickListener(view -> { final MogoLocation location = mMogoLocationClient.getLastKnowLocation(); - if ( location != null ) { - mMogoStatusManager.setUserInteractionStatus( TAG, true, false ); - mMApUIController.changeZoom( 16.0f ); - mMogoStatusManager.setUserInteractionStatus( TAG, true, false ); + if (location != null) { + mMogoStatusManager.setUserInteractionStatus(TAG, true, false); + mMApUIController.changeZoom(16.0f); + mMogoStatusManager.setUserInteractionStatus(TAG, true, false); mMApUIController.recoverLockMode(); } - } ); + }); - mNaviInfo = findViewById( R.id.module_entrance_id_navi_info_panel ); - mExitNavi = findViewById( R.id.module_entrance_id_exit_navi ); - mExitNavi.setOnClickListener( view -> { - if ( mMogoNavi != null ) { + mNaviInfo = findViewById(R.id.module_entrance_id_navi_info_panel); + mExitNavi = findViewById(R.id.module_entrance_id_exit_navi); + mExitNavi.setOnClickListener(view -> { + if (mMogoNavi != null) { //if ( mIsLock ) { - NaviNoticeDialog naviNoticeDialog = new NaviNoticeDialog( getContext() ); + NaviNoticeDialog naviNoticeDialog = new NaviNoticeDialog(getContext()); naviNoticeDialog.show(); //} else { // mMApUIController.recoverLockMode(); //} } - } ); + }); - mSpeedLimit = findViewById( R.id.module_entrance_id_speed_limit_container ); - mSpeedLimitValue = findViewById( R.id.module_entrance_id_speed_limit_value ); - mSpeedLimitUnit = findViewById( R.id.module_entrance_id_speed_limit_unit ); + ivMode = findViewById(R.id.module_ext_id_north); + ivMode.setOnClickListener(new View.OnClickListener() { + @Override public void onClick(View v) { + if (ivMode.isSelected()) { + mMApUIController.changeMapMode(EnumMapUI.NorthUP_2D); + } else { + mMApUIController.changeMapMode(EnumMapUI.CarUp_2D); + } + ivMode.setSelected(!ivMode.isSelected()); + } + }); + mSpeedLimit = findViewById(R.id.module_entrance_id_speed_limit_container); + mSpeedLimitValue = findViewById(R.id.module_entrance_id_speed_limit_value); + mSpeedLimitUnit = findViewById(R.id.module_entrance_id_speed_limit_unit); } @NonNull @Override protected EntrancePresenter createPresenter() { - return new EntrancePresenter( getContext(), this ); + return new EntrancePresenter(getContext(), this); } @Override - public void onActivityCreated( @Nullable Bundle savedInstanceState ) { - super.onActivityCreated( savedInstanceState ); - mService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( getContext() ); - mMogoRegisterCenter = ( IMogoRegisterCenter ) ARouter.getInstance().build( MogoServicePaths.PATH_REGISTER_CENTER ).navigation( getContext() ); + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + mService = (IMogoMapService) ARouter.getInstance() + .build(MogoServicePaths.PATH_SERVICES_MAP) + .navigation(getContext()); + mMogoRegisterCenter = (IMogoRegisterCenter) ARouter.getInstance() + .build(MogoServicePaths.PATH_REGISTER_CENTER) + .navigation(getContext()); mMApUIController = mService.getMapUIController(); - mMogoLocationClient = mService.getSingletonLocationClient( getContext() ); - mMogoNavi = mService.getNavi( getContext() ); - mAnalytics = ( IMogoAnalytics ) ARouter.getInstance().build( MogoServicePaths.PATH_UTILS_ANALYTICS ).navigation( getContext() ); - mMogoStatusManager = ( IMogoStatusManager ) ARouter.getInstance().build( MogoServicePaths.PATH_STATUS_MANAGER ).navigation( getContext() ); + mMogoLocationClient = mService.getSingletonLocationClient(getContext()); + mMogoNavi = mService.getNavi(getContext()); + mAnalytics = (IMogoAnalytics) ARouter.getInstance() + .build(MogoServicePaths.PATH_UTILS_ANALYTICS) + .navigation(getContext()); + mMogoStatusManager = (IMogoStatusManager) ARouter.getInstance() + .build(MogoServicePaths.PATH_STATUS_MANAGER) + .navigation(getContext()); - mMogoRegisterCenter.registerMogoNaviListener( ExtensionsModuleConst.TYPE_ENTRANCE, this ); - mMogoRegisterCenter.registerMogoMapListener( ExtensionsModuleConst.TYPE_ENTRANCE, this ); + mMogoRegisterCenter.registerMogoNaviListener(ExtensionsModuleConst.TYPE_ENTRANCE, this); + mMogoRegisterCenter.registerMogoMapListener(ExtensionsModuleConst.TYPE_ENTRANCE, this); - mMogoMarkerManager = mService.getMarkerManager( getContext() ); + mMogoMarkerManager = mService.getMarkerManager(getContext()); } - @Override public void onInitNaviFailure() { } @@ -194,28 +222,30 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent } @Override - public void onNaviInfoUpdate( MogoNaviInfo naviinfo ) { - if ( naviinfo == null ) { + public void onNaviInfoUpdate(MogoNaviInfo naviinfo) { + if (naviinfo == null) { return; } - mNaviInfo.notifyChanged( naviinfo ); + mNaviInfo.notifyChanged(naviinfo); } @Override public void onStartNavi() { - mCommonAddress.setVisibility( View.GONE ); - mNaviInfo.setVisibility( View.VISIBLE ); - mExitNavi.setVisibility( View.VISIBLE ); - mMApUIController.setPointToCenter( 0.675926, 0.77552 ); + mCommonAddress.setVisibility(View.GONE); + mNaviInfo.setVisibility(View.VISIBLE); + ivMode.setVisibility(View.VISIBLE); + mExitNavi.setVisibility(View.VISIBLE); + mMApUIController.setPointToCenter(0.675926, 0.77552); } @Override public void onStopNavi() { - mCommonAddress.setVisibility( View.VISIBLE ); - mNaviInfo.setVisibility( View.GONE ); - mExitNavi.setVisibility( View.GONE ); - mSpeedLimit.setVisibility( View.GONE ); - mMApUIController.setPointToCenter( 0.66145, 0.590688 ); + mCommonAddress.setVisibility(View.VISIBLE); + mNaviInfo.setVisibility(View.GONE); + ivMode.setVisibility(View.GONE); + mExitNavi.setVisibility(View.GONE); + mSpeedLimit.setVisibility(View.GONE); + mMApUIController.setPointToCenter(0.66145, 0.590688); } @Override @@ -227,16 +257,16 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent } @Override - public void onUpdateTraffic( MogoTraffic traffic ) { - if ( traffic == null ) { + public void onUpdateTraffic(MogoTraffic traffic) { + if (traffic == null) { return; } - if ( traffic.getSpeedLimit() <= 0 ) { - mSpeedLimit.setVisibility( View.INVISIBLE ); - mSpeedLimitValue.setText( "--" ); + if (traffic.getSpeedLimit() <= 0) { + mSpeedLimit.setVisibility(View.INVISIBLE); + mSpeedLimitValue.setText("--"); } else { - mSpeedLimit.setVisibility( View.VISIBLE ); - mSpeedLimitValue.setText( String.valueOf( traffic.getSpeedLimit() ) ); + mSpeedLimit.setVisibility(View.VISIBLE); + mSpeedLimitValue.setText(String.valueOf(traffic.getSpeedLimit())); } } @@ -246,45 +276,43 @@ public class EntranceFragment extends MvpFragment< EntranceView, EntrancePresent } @Override - public void onTouch( MotionEvent motionEvent ) { + public void onTouch(MotionEvent motionEvent) { } @Override - public void onPOIClick( MogoPoi poi ) { + public void onPOIClick(MogoPoi poi) { } @Override - public void onMapClick( MogoLatLng latLng ) { + public void onMapClick(MogoLatLng latLng) { } @Override - public void onLockMap( boolean isLock ) { + public void onLockMap(boolean isLock) { mIsLock = isLock; - if ( isLock ) { - mExitNavi.setText( R.string.module_ext_str_exit_navi ); + if (isLock) { + mExitNavi.setText(R.string.module_ext_str_exit_navi); } else { - mExitNavi.setText( R.string.module_ext_str_exit_navi ); + mExitNavi.setText(R.string.module_ext_str_exit_navi); } } @Override - public void onMapModeChanged( EnumMapUI ui ) { + public void onMapModeChanged(EnumMapUI ui) { } @Override - public void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing ) { + public void onMapChanged(MogoLatLng latLng, float zoom, float tilt, float bearing) { } - - private void traceData( String from ) { - Map< String, Object > properties = new HashMap<>(); - properties.put( "from", from ); - mAnalytics.track( "Launcher_Share_Click", properties ); + private void traceData(String from) { + Map properties = new HashMap<>(); + properties.put("from", from); + mAnalytics.track("Launcher_Share_Click", properties); } - } diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml index 73a1e40567..cdcb723a5e 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml @@ -112,6 +112,15 @@ app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + + ? = null + + private lateinit var cmds: ArrayList override fun renderSearchPoiResult(datums: List?) { mAdapter.setDatas(datums) cv_search_result.visibility = View.VISIBLE - pb_path.visibility=View.GONE + pb_path.visibility = View.GONE var arrayList = ArrayList() for (index in 0 until datums!!.size) { var decodeResource = @@ -55,14 +80,20 @@ class CategorySearchFragment : BaseFragment(), CategoryView { // .anchor(0.5f, 1f) .longitude(datums[index].point?.lng ?: 0.0) arrayList.add(options) + + + + AIAssist.getInstance(context) + .registerUnWakeupCommand( + "position" + index, arrayOf("第" + index + "个", "第" + index + "条"), this + ) + cmds.add("position" + index) } addMarkers = SearchServiceHolder.getMarkerManger() .addMarkers(TAG, arrayList, true) moveMapToRight() } - - private lateinit var mAdapter: SearchCategoryAdapter private lateinit var mSearchPresenter: CategoryPresenter @@ -75,8 +106,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView { ) mSearchPresenter = CategoryPresenter(this) lifecycle.addObserver(mSearchPresenter) - - + cmds=ArrayList() } override fun getLayoutId(): Int { @@ -104,16 +134,22 @@ class CategorySearchFragment : BaseFragment(), CategoryView { tv_navi_navi.setOnClickListener { - var newInstance = ChoosePathFragment.newInstance(mAdapter.currentItem.point) - - SearchServiceHolder.push(newInstance, MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT) + goPath() } mAdapter.setOnClickListener { var position = it.getTag(R.id.tag_position) as Int mAdapter.setCurrent(position) - updateMarker() } + + AIAssist.getInstance(context) + .registerUnWakeupCommand("back", arrayOf("关闭", "返回"), this) + + } + + private fun goPath() { + var newInstance = ChoosePathFragment.newInstance(mAdapter.currentItem.point) + SearchServiceHolder.push(newInstance, MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT) } private fun updateMarker() { @@ -124,7 +160,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView { ?.setIcon(getMarkerIcon(mAdapter.current)) } - private fun getMarkerIcon(index :Int): Bitmap { + private fun getMarkerIcon(index: Int): Bitmap { var decodeResource = BitmapFactory.decodeResource( resources, @@ -133,7 +169,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView { var createWaterMask = BitmapUtils.createWaterMask( - context, decodeResource, (index+1).toString(), R.color.white, 18 + context, decodeResource, (index + 1).toString(), R.color.white, 18 ) return createWaterMask } @@ -149,6 +185,10 @@ class CategorySearchFragment : BaseFragment(), CategoryView { lifecycle.removeObserver(mSearchPresenter) SearchServiceHolder.getMarkerManger() .removeMarkers(TAG) + + cmds.forEach { + AIAssist.getInstance(context).unregisterUnWakeupCommand(it) + } } override fun onDestroy() { 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 1255bb8b01..bfd79529df 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 @@ -2,6 +2,8 @@ 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; @@ -11,6 +13,8 @@ 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; @@ -22,6 +26,7 @@ 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 java.util.ArrayList; import java.util.HashMap; @@ -38,7 +43,8 @@ import java.util.List; * {@link SearchConstants#SEARCH_TYPE_MULTI_HOME} */ @Route(path = MogoModulePaths.PATH_FRAGMENT_SEARCH) -public class SearchFragment extends BaseSearchFragment implements SearchView, View.OnClickListener { +public class SearchFragment extends BaseSearchFragment + implements SearchView, View.OnClickListener, IMogoVoiceCmdCallBack { public static final String TAG = "search"; @@ -119,10 +125,7 @@ public class SearchFragment extends BaseSearchFragment implements SearchView, Vi SearchServiceHolder.INSTANCE.getAnalyticsManager() .track("Navigation_History_destination", new HashMap()); SearchPoi item = (SearchPoi) v.getTag(R.id.tag_item); - MogoTip mogoTip = EntityConvertUtils.poi2MogoTip(item); - SearchServiceHolder.INSTANCE.push( - ChoosePathFragment.Companion.newInstance(mogoTip.getPoint()), - MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT); + goHistory(item); } }); @@ -131,8 +134,7 @@ public class SearchFragment extends BaseSearchFragment implements SearchView, Vi MogoTip tag = (MogoTip) v.getTag(R.id.tag_position); SearchPoi searchPoi = EntityConvertUtils.tipToPoi(tag); if (tag.getPoint() == null) { - push(CategorySearchFragment.Companion.newInstance(tag.getName()), - MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY); + goCategory(tag.getName()); } else { mSearchPresenter.insert(searchPoi); SearchServiceHolder.INSTANCE.push( @@ -150,10 +152,7 @@ public class SearchFragment extends BaseSearchFragment implements SearchView, Vi findViewById(R.id.tv_navi_setting).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - SearchServiceHolder.INSTANCE.getAnalyticsManager() - .track("Navigation_button_setting", new HashMap()); - - push(new NaviSettingFragment(), MogoModulePaths.PATH_FRAGMENT_SETTING); + goSetting(); } }); @@ -183,6 +182,57 @@ public class SearchFragment extends BaseSearchFragment implements SearchView, Vi mSearchPresenter.startSearchPoiByInput(mSearchBox.getText().toString()); } }); + + registerVoidCmd(); + } + + private void goSetting() { + SearchServiceHolder.INSTANCE.getAnalyticsManager() + .track("Navigation_button_setting", new HashMap()); + + push(new NaviSettingFragment(), MogoModulePaths.PATH_FRAGMENT_SETTING); + } + + private void goHistory(SearchPoi item) { + MogoTip mogoTip = EntityConvertUtils.poi2MogoTip(item); + SearchServiceHolder.INSTANCE.push( + ChoosePathFragment.Companion.newInstance(mogoTip.getPoint()), + MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT); + } + + 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"; + + 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(BACK_CMD, new String[] { "关闭", "返回" }, this); + AIAssist.getInstance(getContext()) + .registerUnWakeupCommand(WASH_CMD, new String[] { "洗车" }, this); } private void push(Fragment fragment, String tag) { @@ -289,8 +339,17 @@ public class SearchFragment extends BaseSearchFragment implements SearchView, Vi } showHistory(); mHistoryAdapter.setDatas(datums); + 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); + cmds.add("history" + i); + } } + private List cmds = new ArrayList(); + @Override public int getSearchType() { return mSearchType; @@ -407,6 +466,10 @@ public class SearchFragment extends BaseSearchFragment implements SearchView, Vi @Override public void onClick(View v) { TextView category = (TextView) v; String text = category.getText().toString(); + goCategory(text); + } + + private void goCategory(String text) { push(CategorySearchFragment.Companion.newInstance(text), MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY); } @@ -416,5 +479,109 @@ public class SearchFragment extends BaseSearchFragment implements SearchView, Vi super.onDestroyView(); SearchServiceHolder.INSTANCE.getMapUIController().showMyLocation(true); moveMapToRight(); + 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); + AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(BACK_CMD); + for (String cmd : cmds) { + AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(cmd); + } + } + + @Override public void onCmdSelected(String cmd) { + if (!TextUtils.isEmpty(cmd) && cmd.startsWith("history")) { + String index = cmd.substring(7); + SearchPoi item = mHistoryAdapter.getItem(Integer.valueOf(index)); + goHistory(item); + return; + } + switch (cmd) { + case CLEAN_CMD: + mSearchPresenter.deleteAllCachedPoi(); + AIAssist.getInstance(getContext()) + .speakQAndACmd(getString(R.string.notice_clean_history), + new String[] { "确定" }, new String[] { "取消" }, this); + break; + + case BACK_CMD: + SearchServiceHolder.INSTANCE.getFragmentManager().pop(); + break; + case GAS_CMD: + + goCategory(getString(R.string.navi_gas)); + + break; + case GO_COMPANY_CMD: + AddressManager.INSTANCE.goCompany(); + + break; + case GO_HOME_CMD: + AddressManager.INSTANCE.goHome(); + break; + case NAVI_SETTING_CMD: + goSetting(); + break; + + case PARK_CMD: + goCategory(getString(R.string.navi_park)); + + break; + case RESTAURANT_CMD: + goCategory(getString(R.string.navi_restrant)); + + break; + + case TOILET_CMD: + goCategory(getString(R.string.navi_toilet)); + break; + + case WASH_CMD: + goCategory(getString(R.string.navi_wash)); + + break; + + default: + break; + } + } + + @Override public void onCmdAction(String speakText) { + + mSearchPresenter.deleteAllCachedPoi(); + mSearchPresenter.hideDialog(); + } + + @Override public void onCmdCancel(String speakText) { + + mSearchPresenter.hideDialog(); + } + + @Override public void onSpeakEnd(String speakText) { + + } + + @Override public void onSpeakSelectTimeOut(String speakText) { + } } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchPresenter.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchPresenter.java index c58e8b30c9..c50fde48ec 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchPresenter.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchPresenter.java @@ -136,6 +136,8 @@ public class SearchPresenter extends Presenter { mCompositeDisposable.add(disposable); } + private NoticeDialog noticeDialog; + public void deleteAllCachedPoi() { //new AlertDialog.Builder( getContext() ) @@ -150,7 +152,7 @@ public class SearchPresenter extends Presenter { // .create() // .show(); - NoticeDialog noticeDialog = new NoticeDialog(getContext(),"清空历史记录?","立即清空"); + noticeDialog = new NoticeDialog(getContext(),"清空历史记录?","立即清空"); //noticeDialog.setContent("清空历史记录?"); //noticeDialog.setPositiveButton("立即清空"); @@ -165,7 +167,13 @@ public class SearchPresenter extends Presenter { noticeDialog.show(); } - private void deleteAllCachedPoiImpl() { + public void hideDialog(){ + if (noticeDialog != null) { + noticeDialog.dismiss(); + } + } + + public void deleteAllCachedPoiImpl() { final Disposable disposable = AppDataBase.getDatabase(getContext()) .poiDao() .getAll() diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/uitls/StringUtils.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/uitls/StringUtils.java new file mode 100644 index 0000000000..e7f5b58ab7 --- /dev/null +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/uitls/StringUtils.java @@ -0,0 +1,34 @@ +package com.mogo.module.navi.uitls; + +/** + * @author zyz + * 2020-03-05. + */ +public class StringUtils { + + public static String int2String(int index){ + switch (index){ + case 1: + return "一"; + case 2: + return "二"; + case 3: + return "三"; + case 4: + return "四"; + case 5: + return "五"; + case 6: + return "六"; + case 7: + return "七"; + case 8: + return "八"; + case 9: + return "九"; + default: + return "十"; + + } + } +} diff --git a/modules/mogo-module-search/src/main/res/values/strings.xml b/modules/mogo-module-search/src/main/res/values/strings.xml index e29a469f1e..7ecb774534 100644 --- a/modules/mogo-module-search/src/main/res/values/strings.xml +++ b/modules/mogo-module-search/src/main/res/values/strings.xml @@ -41,4 +41,5 @@ 去设置公司 日夜模式 设置刷新帧率 + 清空历史记录,确定还是取消