From 553ecfd053663f8d0e99ad73886f8ed1a23499b9 Mon Sep 17 00:00:00 2001 From: zhangyuanzhen Date: Thu, 5 Mar 2020 22:18:44 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=AF=BC=E8=88=AA=E8=AF=AD=E9=9F=B3?= =?UTF-8?q?=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extensions/entrance/EntranceFragment.java | 206 ++++++++++-------- .../res/layout/module_ext_layout_entrance.xml | 9 + .../mogo/module/navi/manager/NaviManager.kt | 40 +++- .../navi/ui/search/CategorySearchFragment.kt | 64 +++++- .../module/navi/ui/search/SearchFragment.java | 189 +++++++++++++++- .../navi/ui/search/SearchPresenter.java | 12 +- .../mogo/module/navi/uitls/StringUtils.java | 34 +++ .../src/main/res/values/strings.xml | 1 + 8 files changed, 430 insertions(+), 125 deletions(-) create mode 100644 modules/mogo-module-search/src/main/java/com/mogo/module/navi/uitls/StringUtils.java 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 @@ 去设置公司 日夜模式 设置刷新帧率 + 清空历史记录,确定还是取消 From fb26ecdfbab06c351d825583ebf19b02a60c870c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Fri, 6 Mar 2020 16:02:31 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E4=BA=86=E9=9F=B3=E4=B9=90=E7=B1=BB=E5=9E=8B=E7=9A=84?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=9B=BE=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/module/service/marker/MapMarkerInfoView.java | 3 +++ .../java/com/mogo/module/service/marker/MapMarkerManager.java | 1 - .../java/com/mogo/module/service/marker/MapMarkerView.java | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java index 386a05742f..18b413195b 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java @@ -179,6 +179,9 @@ public class MapMarkerInfoView extends MapMarkerBaseView { case 3: ivIcon.setImageResource(R.drawable.icon_map_marker_news); break; + default: + ivIcon.setImageResource(R.drawable.icon_map_marker_misic); + break; } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index f5b063f986..dcc23e26fa 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -310,7 +310,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag // 绘制Marker public synchronized void drawMapMarker(MarkerResponse response) { - JSONArray array = new JSONArray(); // 解析不同的Marker类型,然后对应的进行绘制 diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java index cd73724614..b2661dc363 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java @@ -155,6 +155,9 @@ public class MapMarkerView extends MapMarkerBaseView { case 3: ivIcon.setImageResource(R.drawable.icon_map_marker_news); break; + default: + ivIcon.setImageResource(R.drawable.icon_map_marker_misic); + break; } } break; From ef84f73895e02bee0492d33cd478e782d317eef1 Mon Sep 17 00:00:00 2001 From: zhangyuanzhen Date: Fri, 6 Mar 2020 22:12:15 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=AF=BC=E8=88=AA=E8=AF=AD=E9=9F=B3?= =?UTF-8?q?=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../map/impl/amap/AMapNaviViewWrapper.java | 2 + .../amap/uicontroller/AMapUIController.java | 97 +++++++++--------- .../uicontroller/IMogoMapUIController.java | 55 ++++------ .../com/mogo/map/MogoMapUIController.java | 1 + .../extensions/entrance/EntranceFragment.java | 9 +- .../main/res/drawable-ldpi/icon_car_up.png | Bin 0 -> 577 bytes .../main/res/drawable-ldpi/icon_north_up.png | Bin 0 -> 316 bytes .../main/res/drawable-xhdpi/icon_car_up.png | Bin 0 -> 1098 bytes .../main/res/drawable-xhdpi/icon_north_up.png | Bin 0 -> 609 bytes .../res/drawable/selector_icon_north_up.xml | 6 ++ .../res/drawable/shape_react_gray_round.xml | 11 ++ .../res/layout/module_ext_layout_entrance.xml | 20 ++-- .../src/main/res/values/strings.xml | 4 +- .../navi/ui/search/CategorySearchFragment.kt | 6 +- .../navi/ui/search/ChoosePathFragment.kt | 7 +- .../module/navi/ui/search/SearchFragment.java | 47 +++++++-- 16 files changed, 155 insertions(+), 110 deletions(-) create mode 100755 modules/mogo-module-extensions/src/main/res/drawable-ldpi/icon_car_up.png create mode 100755 modules/mogo-module-extensions/src/main/res/drawable-ldpi/icon_north_up.png create mode 100755 modules/mogo-module-extensions/src/main/res/drawable-xhdpi/icon_car_up.png create mode 100755 modules/mogo-module-extensions/src/main/res/drawable-xhdpi/icon_north_up.png create mode 100644 modules/mogo-module-extensions/src/main/res/drawable/selector_icon_north_up.xml create mode 100644 modules/mogo-module-extensions/src/main/res/drawable/shape_react_gray_round.xml diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java index edb635f11a..e99dcebf0c 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/AMapNaviViewWrapper.java @@ -416,6 +416,8 @@ public class AMapNaviViewWrapper implements IMogoMapView, } } + + private boolean checkAMapView() { if ( mMapView == null ) { Logger.e( TAG, "高德mapView实例为空,请检查" ); diff --git a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java index 5d653eefbc..a36a0ecb88 100644 --- a/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java +++ b/libraries/map-amap/src/main/java/com/mogo/map/impl/amap/uicontroller/AMapUIController.java @@ -31,9 +31,9 @@ public class AMapUIController implements IMogoMapUIController { } public static AMapUIController getInstance() { - if ( sInstance == null ) { - synchronized ( AMapUIController.class ) { - if ( sInstance == null ) { + if (sInstance == null) { + synchronized (AMapUIController.class) { + if (sInstance == null) { sInstance = new AMapUIController(); } } @@ -41,7 +41,7 @@ public class AMapUIController implements IMogoMapUIController { return sInstance; } - public void initClient( IMogoMapUIController client ) { + public void initClient(IMogoMapUIController client) { this.mClient = client; } @@ -50,71 +50,71 @@ public class AMapUIController implements IMogoMapUIController { } @Override - public void setTrafficEnabled( boolean visible ) { - if ( mClient != null ) { - mClient.setTrafficEnabled( visible ); + public void setTrafficEnabled(boolean visible) { + if (mClient != null) { + mClient.setTrafficEnabled(visible); } } @Override - public void changeZoom( boolean zoom ) { - if ( mClient != null ) { - mClient.changeZoom( zoom ); + public void changeZoom(boolean zoom) { + if (mClient != null) { + mClient.changeZoom(zoom); } } @Override - public void changeZoom( float zoom ) { - if ( mClient != null ) { - mClient.changeZoom( zoom ); + public void changeZoom(float zoom) { + if (mClient != null) { + mClient.changeZoom(zoom); } } @Override - public void changeMapMode( EnumMapUI mode ) { - if ( mClient != null ) { - mClient.changeMapMode( mode ); + public void changeMapMode(EnumMapUI mode) { + if (mClient != null) { + mClient.changeMapMode(mode); } } @Override - public void moveToCenter( MogoLatLng latLng ) { - if ( mClient != null ) { - mClient.moveToCenter( latLng ); + public void moveToCenter(MogoLatLng latLng) { + if (mClient != null) { + mClient.moveToCenter(latLng); } } @Override - public void showMyLocation( boolean visible ) { - if ( mClient != null ) { - mClient.showMyLocation( visible ); + public void showMyLocation(boolean visible) { + if (mClient != null) { + mClient.showMyLocation(visible); } } @Override public void recoverLockMode() { - if ( mClient != null ) { + if (mClient != null) { mClient.recoverLockMode(); } } @Override public void setLockZoom(int var1) { - if ( mClient != null ) { + if (mClient != null) { mClient.setLockZoom(var1); } } @Override public void displayOverview() { - if ( mClient != null ) { + if (mClient != null) { mClient.displayOverview(); } } @Override public float getScalePerPixel() { - if ( mClient != null ) { + if (mClient != null) { return mClient.getScalePerPixel(); } return 0; @@ -122,7 +122,7 @@ public class AMapUIController implements IMogoMapUIController { @Override public float getZoomLevel() { - if ( mClient != null ) { + if (mClient != null) { return mClient.getZoomLevel(); } return 0; @@ -130,7 +130,7 @@ public class AMapUIController implements IMogoMapUIController { @Override public MogoLatLng getCameraNorthEastPosition() { - if ( mClient != null ) { + if (mClient != null) { return mClient.getCameraNorthEastPosition(); } return null; @@ -138,66 +138,67 @@ public class AMapUIController implements IMogoMapUIController { @Override public MogoLatLng getCameraSouthWestPosition() { - if ( mClient != null ) { + if (mClient != null) { return mClient.getCameraSouthWestPosition(); } return null; } @Override public MogoLatLng getWindowCenterLocation() { - if ( mClient != null ) { + if (mClient != null) { return mClient.getWindowCenterLocation(); } return null; } @Override - public void setPointToCenter( double mapCenterX, double mapCenterY ) { - if ( mClient != null ) { - mClient.setPointToCenter( mapCenterX, mapCenterY ); + public void setPointToCenter(double mapCenterX, double mapCenterY) { + if (mClient != null) { + mClient.setPointToCenter(mapCenterX, mapCenterY); } } @Override - public Point getLocationPointInScreen( MogoLatLng latLng ) { - if ( mClient != null ) { - return mClient.getLocationPointInScreen( latLng ); + public Point getLocationPointInScreen(MogoLatLng latLng) { + if (mClient != null) { + return mClient.getLocationPointInScreen(latLng); } return null; } @Override public MogoLatLng getLocationMogoLatLngInScreen(Point point) { - if ( mClient != null ) { - return mClient.getLocationMogoLatLngInScreen( point ); + if (mClient != null) { + return mClient.getLocationMogoLatLngInScreen(point); } return null; } @Override - public void startJumpAnimation( IMogoMarker marker, float high, Interpolator interpolator, long duration ) { - if ( mClient != null ) { - mClient.startJumpAnimation( marker, high, interpolator, duration ); + public void startJumpAnimation(IMogoMarker marker, float high, Interpolator interpolator, + long duration) { + if (mClient != null) { + mClient.startJumpAnimation(marker, high, interpolator, duration); } } @Override - public void setRenderFps( int fps ) { - if ( mClient != null ) { - mClient.setRenderFps( fps ); + public void setRenderFps(int fps) { + if (mClient != null) { + mClient.setRenderFps(fps); } } @Override - public void showBounds( List< MogoLatLng > lonLats, Rect bound ) { - if ( mClient != null ) { - mClient.showBounds( lonLats, bound ); + public void showBounds(List lonLats, Rect bound) { + if (mClient != null) { + mClient.showBounds(lonLats, bound); } } @Override public void forceRender() { - if ( mClient != null ) { + if (mClient != null) { mClient.forceRender(); } } diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java index b424b85395..b0733dd597 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/uicontroller/IMogoMapUIController.java @@ -19,43 +19,39 @@ public interface IMogoMapUIController { /** * 实时路况 - * - * @param visible */ - void setTrafficEnabled( boolean visible ); + void setTrafficEnabled(boolean visible); /** * 地图缩放 * * @param zoomIn true - 方法 false - 缩小 */ - void changeZoom( boolean zoomIn ); + void changeZoom(boolean zoomIn); /** * 修改缩放级别 - * - * @param zoom */ - void changeZoom( float zoom ); + void changeZoom(float zoom); /** * 切换2D/3D模式 * * @param mode true - 3D模式 false - 2D模式 */ - void changeMapMode( EnumMapUI mode ); + void changeMapMode(EnumMapUI mode); /** * 将地图移动至当前位置 */ - void moveToCenter( MogoLatLng latLng ); + void moveToCenter(MogoLatLng latLng); /** * 显示我的位置 * * @param visible true - 显示 false - 不显示 */ - void showMyLocation( boolean visible ); + void showMyLocation(boolean visible); /** * 解锁锁车 @@ -67,7 +63,7 @@ public interface IMogoMapUIController { * * @param var1 级别 3-20 */ - void setLockZoom( int var1 ); + void setLockZoom(int var1); /** * 预览全程 @@ -83,29 +79,21 @@ public interface IMogoMapUIController { /** * 获取缩放比例 - * - * @return */ float getZoomLevel(); /** * 获取视图东北角坐标 - * - * @return */ MogoLatLng getCameraNorthEastPosition(); /** * 获取视图西南角坐标 - * - * @return */ MogoLatLng getCameraSouthWestPosition(); /** * 获取视图中心点坐标 - * - * @return */ MogoLatLng getWindowCenterLocation(); @@ -115,46 +103,39 @@ public interface IMogoMapUIController { * @param mapCenterX x 点位置x值与地图宽度的比例 * @param mapCenterY y 点位置x值与地图高度的比例 */ - void setPointToCenter( double mapCenterX, double mapCenterY ); + void setPointToCenter(double mapCenterX, double mapCenterY); /** * 获取经纬度对应的屏幕的位置 - * - * @param latLng - * @return */ - Point getLocationPointInScreen( MogoLatLng latLng ); + Point getLocationPointInScreen(MogoLatLng latLng); /** * 获取像素点对应的经纬度 - * - * @param point - * @return */ - MogoLatLng getLocationMogoLatLngInScreen( Point point ); + MogoLatLng getLocationMogoLatLngInScreen(Point point); /** * marker 跳跃动画 * - * @param marker 跳跃的 marker - * @param high 跳跃的高度 + * @param marker 跳跃的 marker + * @param high 跳跃的高度 * @param interpolator 插值器 - * @param duration 动画时间 + * @param duration 动画时间 */ - void startJumpAnimation( IMogoMarker marker, float high, Interpolator interpolator, long duration ); + void startJumpAnimation(IMogoMarker marker, float high, Interpolator interpolator, + long duration); /** * 设置刷新帧率 - * - * @param fps */ - void setRenderFps( int fps ); + void setRenderFps(int fps); /** * @param lonLats 经纬度围成的范围 - * @param bound 地图上可显示的范围 + * @param bound 地图上可显示的范围 */ - void showBounds( List< MogoLatLng > lonLats, Rect bound ); + void showBounds(List lonLats, Rect bound); /** * 强制刷新地图 diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java index eba856a3f6..5b4d71f51b 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java @@ -70,6 +70,7 @@ public class MogoMapUIController implements IMogoMapUIController { } } + @Override public void moveToCenter(MogoLatLng latLng) { if (mDelegate != null) { 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 c007332caf..28f98f53f8 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 @@ -91,7 +91,7 @@ public class EntranceFragment extends MvpFragment1r;P)Px$`$KP*N6r1Cp{L zv65mzY!o)+Ekr_Mfrzf(8P9W_?#%E^LrG5kJ8%DU&NJt^_co!>zx>$^c%GLE`oTGP z0k00YhqC}m5?%~N1Hj57#)AXoU?OKA(|IW5bZ`qq8eI$FW`Zp#Lb_b*LXhhsC7!qM zTx5vU^_bd4=UNITP0_G((Z|37Q!96#7pzaS0g|2AmBw!{ddB8mbvPV8q1Oidaxjj4 zh`tAdjA6KB~*{y>7V-VU2UpMpUUy$VGNm{<5iU{=L5 zu>BS5J1ix!t%$|!ecv2pop=Qp0c(n5&3cSBP({s(1gV=t)ryTw5pNa4e=V>JBw*wj zeJnOaY9k*2890rtHYezYK1ATt0gX-eG%OvO|J?N9rzO zu2eojccz!m>3Bie+A-_^G; P00000NkvXXu0mjfFg^RH literal 0 HcmV?d00001 diff --git a/modules/mogo-module-extensions/src/main/res/drawable-ldpi/icon_north_up.png b/modules/mogo-module-extensions/src/main/res/drawable-ldpi/icon_north_up.png new file mode 100755 index 0000000000000000000000000000000000000000..2c88c8d9a137a176d9aaa0bdfa4828a922840fb5 GIT binary patch literal 316 zcmV-C0mJ@@P)Px#_DMuRR7ef&l)(*xFcgM~C(llxlgJ28;S_pg0bN3;&@~*vyWULd_e>ul4V4yJ z5+g79Ln-g|%LfTXG1Xtb0b@)_)}zS-yOPT&Kx@b4Q)PB27_rmJYY9cZom=@VAvNt3 zoX3*W+w2sY-qK^Iz_gYfb_z{r*`Z6*jGjX O0000Px(1W80eRA>e5nb~U;K@f+tIgAHJNsI`h1VuapiXv(}K~V5`P=k3;gCL^llLrWj z3O?w6pyG>ff(mMU@Ib^Dg(yPApn1`VcZgAm5)C=lugFZcrqi>Tb$2!^PQfo-Rb5qG zT|M2?JITw7D5^kIfv5se1^%H5#L~$%9*-}@e-P&>7}TjM!&Gn-l|;ffi%HY=|3!PO31dp<}m`cD(XwfjK3`W}$Ug2>hF&1flr&Q6_U!!7Dz@f=)B?@SZ~`b;Y1AffkU9kH8$FM z#Oln&X=RQ~z?Q~-o6>he7>EDk%9c@Z-42RA&NR192t(PB=H1Qo9cp5U>z&s!UKY~nB7s1YeB|zRU7l0qFHaiAfeH?>jrlBK0rmf<1 z>2_qfu-<}y4)j&&H?kb*L2l!-u^R(iswMs38kj*5iVWJcjaV%SN7D{U&5{6rJoF8)^MWO1Rl(WYb|=iC!K%p-SX}J~r_e zT?ta)RZn<290Bz2dBlEdhVvYi$P0k&vz9y}KLY?051r5n(UT7@dMv!c7H#i$C}Oe850gFK(vfkwg*owDjB?3ho8l!6V*j0Dv zRQHhUm$Pj&p`2YBC$Ury1#y#GK(=)+cjNiu+6t_c^GcrTDI{+hZFwkNEz$1!d>c&U?d_(!zz^6e+Z?vYauZA4K8q6$P6h$;|OASWvD2kq+*k$f(8 Q2><{907*qoM6N<$f>)#PS^xk5 literal 0 HcmV?d00001 diff --git a/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/icon_north_up.png b/modules/mogo-module-extensions/src/main/res/drawable-xhdpi/icon_north_up.png new file mode 100755 index 0000000000000000000000000000000000000000..ca77810e0c169de496727438ae15680b7dbe3570 GIT binary patch literal 609 zcmV-n0-pVeP)Px%8%ab#RA>e5nLkPcK@^8$3W?a6LTvT2F28as?1YUX&1-Ei4U6^IQ+(DOK?cB=ZFxOJew zb|kpkl64?V>*5Z`wJH-`I7N{IEPpGtLm}DE>(6+ zhp%C$Qtp;m;kO;ru_Msj<}JNc4`a_=xPebF + + + + + \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/drawable/shape_react_gray_round.xml b/modules/mogo-module-extensions/src/main/res/drawable/shape_react_gray_round.xml new file mode 100644 index 0000000000..e142369865 --- /dev/null +++ b/modules/mogo-module-extensions/src/main/res/drawable/shape_react_gray_round.xml @@ -0,0 +1,11 @@ + + + + + + + + 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 cdcb723a5e..ca5c13aed2 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 @@ -113,13 +113,21 @@ app:layout_constraintTop_toTopOf="parent" /> - + android:layout_width="@dimen/dp_120" + android:text="@string/mode_car_up" + android:paddingTop="@dimen/dp_14" + android:visibility="gone" + android:textColor="@color/white" + android:textSize="@dimen/dp_28" + android:gravity="center_horizontal" + android:layout_marginTop="@dimen/dp_33" + android:background="@drawable/shape_react_gray_round" + android:drawableTop="@drawable/selector_icon_north_up" + app:layout_constraintTop_toBottomOf="@+id/module_entrance_id_navi_info_panel" + app:layout_constraintLeft_toLeftOf="@+id/module_entrance_id_navi_info_panel" + android:layout_height="@dimen/dp_120"/> 退出导航 继续导航 退出全览 + 车头 + 正北 - + 你好小智,播放音乐 你好小智,我要听音乐 你好小智,播放赵磊的歌 diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt index a85cb3cd1b..9d54267cdd 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt @@ -20,6 +20,7 @@ import com.mogo.module.navi.constants.SearchServiceHolder 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 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 @@ -81,11 +82,10 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa .longitude(datums[index].point?.lng ?: 0.0) arrayList.add(options) - - + var int2String = StringUtils.int2String(index) AIAssist.getInstance(context) .registerUnWakeupCommand( - "position" + index, arrayOf("第" + index + "个", "第" + index + "条"), this + "position" + index, arrayOf("第" + int2String + "个", "第" + int2String + "条"), this ) cmds.add("position" + index) } diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt index cb6effbd3b..9dbae3bfcd 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt @@ -200,8 +200,6 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB SearchServiceHolder.getMarkerManger() .removeMarkers() - - AIAssist.getInstance(context) .registerUnWakeupCommand("firstPath", arrayOf(firstPath), this) AIAssist.getInstance(context) @@ -210,8 +208,6 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB .registerUnWakeupCommand("thirdPath", arrayOf(thirdPath), this) AIAssist.getInstance(context) .registerUnWakeupCommand("startNavi", arrayOf(startNavi), this) - AIAssist.getInstance(context) - .registerUnWakeupCommand("cancel", arrayOf("取消", "退出", "返回", "退出导航", "取消导航"), this) } @@ -255,8 +251,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB .unregisterUnWakeupCommand("thirdPath") AIAssist.getInstance(context) .unregisterUnWakeupCommand("startNavi") - AIAssist.getInstance(context) - .unregisterUnWakeupCommand("cancel") + } 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 bfd79529df..f0ba2135b1 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 @@ -28,6 +28,7 @@ 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; @@ -44,7 +45,8 @@ import java.util.List; */ @Route(path = MogoModulePaths.PATH_FRAGMENT_SEARCH) public class SearchFragment extends BaseSearchFragment - implements SearchView, View.OnClickListener, IMogoVoiceCmdCallBack { + implements SearchView, View.OnClickListener, IMogoVoiceCmdCallBack, + FragmentStackTransactionListener { public static final String TAG = "search"; @@ -183,7 +185,8 @@ public class SearchFragment extends BaseSearchFragment } }); - registerVoidCmd(); + AIAssist.getInstance(getContext()) + .registerUnWakeupCommand(BACK_CMD, new String[] { "关闭", "返回" }, this); } private void goSetting() { @@ -222,15 +225,13 @@ public class SearchFragment extends BaseSearchFragment AIAssist.getInstance(getContext()) .registerUnWakeupCommand(RESTAURANT_CMD, new String[] { "餐馆" }, this); AIAssist.getInstance(getContext()) - .registerUnWakeupCommand(TOILET_CMD, new String[] { "卫生间","厕所" }, this); + .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); } @@ -339,11 +340,19 @@ public class SearchFragment extends BaseSearchFragment } showHistory(); mHistoryAdapter.setDatas(datums); + registerHistory(); + } + + private void registerHistory() { + List 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); } } @@ -480,6 +489,7 @@ public class SearchFragment extends BaseSearchFragment SearchServiceHolder.INSTANCE.getMapUIController().showMyLocation(true); moveMapToRight(); unRegisterVoice(); + AIAssist.getInstance(getContext()).unregisterUnWakeupCommand(BACK_CMD); } private void unRegisterVoice() { @@ -503,12 +513,33 @@ public class SearchFragment extends BaseSearchFragment 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 onPause() { + // super.onPause(); + // unRegisterVoice(); + //} + // + //@Override public void onResume() { + // super.onResume(); + // registerVoidCmd(); + // registerHistory(); + //} + + + @Override public void onHiddenChanged(boolean hidden) { + super.onHiddenChanged(hidden); + if (hidden) { + unRegisterVoice(); + } else { + registerVoidCmd(); + registerHistory(); + } + } + @Override public void onCmdSelected(String cmd) { if (!TextUtils.isEmpty(cmd) && cmd.startsWith("history")) { String index = cmd.substring(7); @@ -584,4 +615,8 @@ public class SearchFragment extends BaseSearchFragment @Override public void onSpeakSelectTimeOut(String speakText) { } + + @Override public void onTransaction(int size) { + + } } From 705321658a05e84a77ca458ebc39f5bc27351132 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Sun, 8 Mar 2020 12:40:14 +0800 Subject: [PATCH 4/4] add upload voice --- .idea/misc.xml | 2 +- .../extensions/ExtensionsModuleConst.java | 20 +++++ .../entrance/EntrancePresenter.java | 90 +++++++++++++++++++ 3 files changed, 111 insertions(+), 1 deletion(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 2dc54c489f..707ee6e613 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsModuleConst.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsModuleConst.java index 0fdb0b1fb5..56ab9dc58f 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsModuleConst.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/ExtensionsModuleConst.java @@ -32,4 +32,24 @@ public class ExtensionsModuleConst { public static final String CLOSE_PAGE = "com.zhidao.launcher.close.page"; public static final String CLOSE = "com.zhidao.launcher.close"; + + + public static final String[] CMD_UPLOAD_BLOCK = {"上报拥堵"}; + public static final String[] CMD_TRAFFIC_CHECK = {"上报交通检查"}; + public static final String[] CMD_ROAD_CLOSURE = {"上报封路"}; + + //上报拥堵 + public static final String UPLOAD_ROAD_BLOCK = "command_upload_block"; + //上报交通检查 + public static final String UPLOAD_TRAFFIC_CHECK = "command_upload_traffic_check"; + //上报封路 + public static final String UPLOAD_ROAD_CLOSURE = "command_upload_road_closure"; + + //埋点 + //分享分类 1:路况,2:油价,3:交通检查,4:封路 + public static final String LAUNCHER_SHARE_TYPE = "Launcher_Share_type"; + //分享/上报按钮点击 from=1 手动点击 from=2 语音打开 + public static final String LAUNCHER_SHARE_CLICK = "Launcher_Share_Click"; + public static final String CARNET_USER_UPLOAD = "CarNet_user_upload"; + } diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java index 94d0616fbf..24c38b66b4 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntrancePresenter.java @@ -1,11 +1,20 @@ package com.mogo.module.extensions.entrance; import android.content.Context; +import android.content.Intent; + +import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.mvp.Presenter; import com.mogo.commons.voice.AIAssist; import com.mogo.commons.voice.IMogoVoiceCmdCallBack; import com.mogo.module.extensions.ExtensionsModuleConst; import com.mogo.module.share.ShareControl; +import com.mogo.service.MogoServicePaths; +import com.mogo.service.analytics.IMogoAnalytics; +import com.mogo.utils.logger.Logger; + +import java.util.HashMap; +import java.util.Map; /** * @author congtaowang @@ -16,10 +25,13 @@ import com.mogo.module.share.ShareControl; public class EntrancePresenter extends Presenter { private Context mContext; + private IMogoAnalytics mAnalytics; public EntrancePresenter(Context context, EntranceView view) { super(view); mContext = context; + mAnalytics = (IMogoAnalytics) ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_ANALYTICS).navigation(getContext()); + registerUnWake(); } @@ -28,6 +40,14 @@ public class EntrancePresenter extends Presenter { ExtensionsModuleConst.CMD_CLOSE, mogoVoiceListener); AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.CANCLE_SHARE, ExtensionsModuleConst.CMD_CANCLE_SHARE, mogoVoiceListener); + //探路相关上报 + AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK, + ExtensionsModuleConst.CMD_UPLOAD_BLOCK, mogoVoiceListener); + AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK, + ExtensionsModuleConst.CMD_TRAFFIC_CHECK, mogoVoiceListener); + AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE, + ExtensionsModuleConst.CMD_ROAD_CLOSURE, mogoVoiceListener); + } /** @@ -39,6 +59,12 @@ public class EntrancePresenter extends Presenter { if (cmd.equals(ExtensionsModuleConst.CANCLE_SHARE) || cmd.equals(ExtensionsModuleConst.CLOSE)) { //取消分享,关闭页面 ShareControl.getInstance(mContext).dismissDialog(); + } else if (cmd.equals(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK)) { //上报拥堵 + uploadRoadCondition(); + } else if (cmd.equals(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK)) { //上报交通检查 + uploadTrfficCheck(); + } else if (cmd.equals(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE)) { //上报封路 + uploadRoadClosed(); } } @@ -60,9 +86,73 @@ public class EntrancePresenter extends Presenter { }; + private void uploadRoadCondition() { + traceTanluData("2"); + sendShareReceiver("1"); + Logger.d("EntrancePresenter", "mogoIntentListener 上报路况 ----> "); + traceTypeData("1"); + ShareControl.getInstance(mContext).dismissDialog(); + } + + private void uploadTrfficCheck() { + sendShareReceiver("2"); + Logger.d("EntrancePresenter", "mogoIntentListener 分享交通检查 ----> "); + traceTypeData("3"); + ShareControl.getInstance(mContext).dismissDialog(); + } + + private void uploadRoadClosed() { + sendShareReceiver("3"); + Logger.d("EntrancePresenter", "mogoIntentListener 分享封路 ----> "); + traceTypeData("4"); + ShareControl.getInstance(mContext).dismissDialog(); + } + + /** + * 发送广播 1拥堵,2交通检查,3封路 + */ + private void sendShareReceiver(String type) { + Logger.d("EntrancePresenter", "TanluCardViewFragment sendShareReceiver ---->"); + Intent intent = new Intent(); + intent.setAction("com.zhidao.roadcondition.share"); + intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + intent.putExtra("type", type); + getContext().sendBroadcast(intent); + } + + /** + * type=1 路况 + *

+ * type=2 油价 + *

+ * type=3 交通检查 + *

+ * type=4 封路 + * + * @param type + */ + private void traceTypeData(String type) { + Map properties = new HashMap<>(); + properties.put("type", type); + mAnalytics.track(ExtensionsModuleConst.LAUNCHER_SHARE_TYPE, properties); + } + + private void traceTanluData(String type) { + Map properties = new HashMap<>(); + properties.put("type", type); + mAnalytics.track(ExtensionsModuleConst.CARNET_USER_UPLOAD, properties); + } + + private void unregisterUnWake() { AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.CANCLE_SHARE); AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.CLOSE); + + AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_BLOCK); + AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.UPLOAD_TRAFFIC_CHECK); + AIAssist.getInstance(mContext).unregisterUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE); + } }