diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/dialog/NaviNoticeDialog.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/dialog/NaviNoticeDialog.java index 594bd06e89..e0705fa171 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/dialog/NaviNoticeDialog.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/dialog/NaviNoticeDialog.java @@ -26,7 +26,7 @@ public class NaviNoticeDialog extends Dialog implements View.OnClickListener { private IMogoMapService mMogoMapService; public NaviNoticeDialog(@NonNull Context context) { - super(context); + super(context, R.style.Theme_AppCompat_Dialog); this.mContext = context; mMogoMapService = (IMogoMapService) ARouter.getInstance() .build(MogoServicePaths.PATH_SERVICES_MAP) diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/adapter/base/RecycleBaseAdapter.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/adapter/base/RecycleBaseAdapter.java index 7b495a2e06..2608b12d68 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/adapter/base/RecycleBaseAdapter.java +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/adapter/base/RecycleBaseAdapter.java @@ -115,4 +115,8 @@ public abstract class RecycleBaseAdapter extends } return list.get(position); } + + public List getList() { + return list; + } } 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 8657696fd6..faf0f44ac4 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 @@ -2,9 +2,12 @@ package com.mogo.module.navi.ui.search import android.app.Service import android.os.Bundle +import android.text.TextUtils import android.view.View import androidx.fragment.app.Fragment import androidx.recyclerview.widget.LinearLayoutManager +import com.mogo.commons.voice.AIAssist +import com.mogo.commons.voice.IMogoVoiceCmdCallBack import com.mogo.map.MogoLatLng import com.mogo.map.navi.IMogoNaviListener import com.mogo.map.navi.MogoCalculatePath @@ -26,7 +29,52 @@ import kotlinx.android.synthetic.main.include_search_bar.iv_navi_back * @author zyz * 2020-01-09. */ -class ChoosePathFragment : BaseFragment(), IMogoNaviListener { +class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallBack { + override fun onCmdSelected(cmd: String?) { + + when (cmd) { + "firstPath" -> { + selectItem(0) + startNavi() + + } + "secondPath" -> { + selectItem(1) + startNavi() + + } + "thirdPath" -> { + selectItem(2) + startNavi() + + } + "startNavi" -> { + startNavi() + } + + } + + } + + private fun selectItem(index: Int) { + + if (mAdapter.list.size > index) { + selectPath(mAdapter.list[index]) + } + } + + override fun onCmdAction(speakText: String?) { + } + + override fun onCmdCancel(speakText: String?) { + } + + override fun onSpeakEnd(speakText: String?) { + } + + override fun onSpeakSelectTimeOut(speakText: String?) { + } + override fun onInitNaviFailure() { } @@ -54,14 +102,19 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener { override fun onoCalculateFailed() { } - override fun onUpdateTraffic(traffic: MogoTraffic?) { -} + override fun onUpdateTraffic(traffic: MogoTraffic?) { + } - private lateinit var mAdapter: CalculatePathAdapter + private lateinit var mAdapter: CalculatePathAdapter override fun getLayoutId(): Int { return R.layout.fragment_search_category } + val firstPath: String = "第一个" + val secondPath: String = "第二个" + val thirdPath: String = "第三个" + val startNavi: String = "开始导航" + var mogoTip: MogoLatLng? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -69,6 +122,16 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener { SearchServiceHolder.statusManager.setSearchUIShow( MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT, true ) + + AIAssist.getInstance(context) + .registerUnWakeupCommand("firstPath", arrayOf(firstPath), this) + AIAssist.getInstance(context) + .registerUnWakeupCommand("secondPath", arrayOf(secondPath), this) + AIAssist.getInstance(context) + .registerUnWakeupCommand("thirdPath", arrayOf(thirdPath), this) + AIAssist.getInstance(context) + .registerUnWakeupCommand("startNavi", arrayOf(startNavi), this) + } // 是否开启导航 @@ -101,11 +164,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener { rv_search_result.adapter = mAdapter tv_navi_navi.setOnClickListener { - SearchServiceHolder.getNavi() - .startNavi(false) - SearchServiceHolder.getMapUIController().recoverLockMode() - isStartedNavi = true - SearchServiceHolder.fragmentManager.clearAll() + startNavi() } SearchServiceHolder.getNavi() @@ -115,28 +174,55 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener { mAdapter.setOnClickListener { var item = it.getTag(R.id.tag_item) as MogoCalculatePath + selectPath(item) + } + + SearchServiceHolder.getMarkerManger() + .removeMarkers() + } + + private fun startNavi() { + SearchServiceHolder.getNavi() + .startNavi(false) + SearchServiceHolder.getMapUIController() + .recoverLockMode() + isStartedNavi = true + SearchServiceHolder.fragmentManager.clearAll() + } + + private fun selectPath(item: MogoCalculatePath?) { + item?.let { mAdapter.setSelectTag(item.tagId) SearchServiceHolder.getNavi() .itemClickInteraction.onItemClicked(item.tagId) } - - SearchServiceHolder.getMarkerManger().removeMarkers() } override fun onDestroyView() { super.onDestroyView() SearchServiceHolder.listenerCenter.unregisterMogoNaviListener( - MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT + MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT ) SearchServiceHolder.statusManager.setSearchUIShow( - MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT, false + MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT, false ) if (!isStartedNavi) { - SearchServiceHolder.getNavi().clearCalculatePaths() + SearchServiceHolder.getNavi() + .clearCalculatePaths() } - } + AIAssist.getInstance(context) + .unregisterUnWakeupCommand("firstPath") + AIAssist.getInstance(context) + .unregisterUnWakeupCommand("secondPath") + AIAssist.getInstance(context) + .unregisterUnWakeupCommand("thirdPath") + AIAssist.getInstance(context) + .unregisterUnWakeupCommand("startNavi") + + } + companion object { fun newInstance(searchPoi: MogoLatLng): Fragment { var bundle = Bundle() diff --git a/modules/mogo-module-search/src/main/res/layout/fragment_search.xml b/modules/mogo-module-search/src/main/res/layout/fragment_search.xml index 7967fdd99c..9a9f1b6b1e 100644 --- a/modules/mogo-module-search/src/main/res/layout/fragment_search.xml +++ b/modules/mogo-module-search/src/main/res/layout/fragment_search.xml @@ -22,6 +22,7 @@ android:layout_marginRight="@dimen/module_search_btn_right_margin" android:gravity="center" android:id="@+id/tv_navi_search" + android:visibility="gone" android:textColor="@color/white" android:textSize="@dimen/module_search_txt_big" android:background="@drawable/shape_round_blue_grident"