diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java index d88bc32a76..04f18a96ff 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/voice/AIAssist.java @@ -142,6 +142,18 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack { } } + /** + * 语音播报 + * + * @param text + */ + public void speakTTSVoice( String text ) { + try { + mVoiceClient.speakDefault( text ); + } catch ( Exception e ) { + } + } + /** * 语音播报 diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java index 5db59cc9b3..8bb87b70bc 100644 --- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java +++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java @@ -26,6 +26,7 @@ import com.mogo.service.fragmentmanager.FragmentDescriptor; import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.module.IMogoModuleProvider; import com.mogo.utils.logger.Logger; +import com.yarolegovich.discretescrollview.DiscreteScrollLayoutManager; import com.yarolegovich.discretescrollview.DiscreteScrollView; import java.util.ArrayList; import java.util.HashMap; @@ -75,7 +76,7 @@ public class AppNavigatorFragment extends MvpFragment { openAppsPanel(); + + //AppServiceHandler.getMogoCardManager() + // .switch2(apps.get((int) (Math.random() * 6)).mModuleType); + trackNavigatorClickEvent(4); }); AppServiceHandler.init(getContext()); @@ -177,11 +182,9 @@ public class AppNavigatorFragment extends MvpFragment 2) { + } else if (index >= 5) { index = -1; } - //很奇怪,但是位置就是相差 - if (index == -1) { - index = -3; - } + //RecyclerView 的特性,如果是否在屏幕内 + //if (index < 0) { + // index -= 2; + //} - Logger.d(TAG, "position--" + position + "index--" + index); - scroller.smoothScrollToPosition(scroller.getCurrentItem() + index); - currentPosition = position; + Logger.d(TAG, "position--" + + position + + "index--" + + index + + "scroll-->" + + scroller.getCurrentItem() + + index); + + //scroller.setPendingScroll(getResources().getDimensionPixelSize(R.dimen.dp_137)*index); + //layoutManager.scrollToPositionWithOffset(scroller.getCurrentItem() + index,0); + //scroller.smoothScrollBy(getResources().getDimensionPixelSize(R.dimen.dp_137)*index,0); + + if (Math.abs(index) == 1) { + scroller.smoothScrollBy(getResources().getDimensionPixelSize(R.dimen.dp_137) * index, + 0); + } else { + layoutManager.startSmoothPendingScroll(layoutManager.getCurrentPosition() + index); + } + //layoutManager.smoothScrollToPosition(scroller.getCurrentItem() + index); + //currentPosition = position; } } diff --git a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollLayoutManager.java b/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollLayoutManager.java index edb47a8804..2e0064216b 100644 --- a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollLayoutManager.java +++ b/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollLayoutManager.java @@ -18,6 +18,8 @@ import androidx.core.view.accessibility.AccessibilityRecordCompat; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearSmoothScroller; import androidx.recyclerview.widget.RecyclerView; +import com.alibaba.idst.nls.internal.utils.L; +import com.mogo.utils.logger.Logger; import com.yarolegovich.discretescrollview.transform.DiscreteScrollItemTransformer; import java.util.Locale; @@ -25,7 +27,7 @@ import java.util.Locale; /** * Created by yarolegovich on 17.02.2017. */ -class DiscreteScrollLayoutManager extends LinearLayoutManager { +public class DiscreteScrollLayoutManager extends LinearLayoutManager { static final int NO_POSITION = -1; @@ -73,6 +75,7 @@ class DiscreteScrollLayoutManager extends LinearLayoutManager { private float ratio=0.5F; + private static final String TAG = "DiscreteScrollLayoutMan"; @NonNull private final ScrollStateListener scrollStateListener; private DiscreteScrollItemTransformer itemTransformer; @@ -323,8 +326,9 @@ class DiscreteScrollLayoutManager extends LinearLayoutManager { if (leftToScroll <= 0) { return 0; } - int delta = direction.applyTo(Math.min(leftToScroll, Math.abs(amount))); + Logger.d(TAG,"leftToScroll--》"+leftToScroll+"---amount--》"+amount); + scrolled += delta; if (pendingScroll != 0) { pendingScroll -= delta; @@ -492,6 +496,8 @@ class DiscreteScrollLayoutManager extends LinearLayoutManager { } else { returnToCurrentPosition(); } + + Logger.d(TAG,"onFling"+newPosition); } public void returnToCurrentPosition() { @@ -532,7 +538,7 @@ class DiscreteScrollLayoutManager extends LinearLayoutManager { recyclerViewProxy.startSmoothScroll(scroller); } - private void startSmoothPendingScroll(int position) { + public void startSmoothPendingScroll(int position) { if (currentPosition == position) return; pendingScroll = -scrolled; Direction direction = Direction.fromDelta(position - currentPosition); @@ -752,6 +758,11 @@ class DiscreteScrollLayoutManager extends LinearLayoutManager { endBound, extraLayoutSpace); } + + public void setPendingScroll(int pendingScroll){ + this.pendingScroll=pendingScroll; + } + private void checkTargetPosition(RecyclerView.State state, int targetPosition) { if (targetPosition < 0 || targetPosition >= state.getItemCount()) { throw new IllegalArgumentException(String.format(Locale.US, diff --git a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollView.java b/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollView.java index 8ba378af4f..bf37a87cd7 100644 --- a/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollView.java +++ b/modules/mogo-module-common/src/main/java/com/yarolegovich/discretescrollview/DiscreteScrollView.java @@ -202,6 +202,10 @@ public class DiscreteScrollView extends RecyclerView { notifyCurrentItemChanged(currentHolder, current); } + public void setPendingScroll(int PendingScroll ) { + layoutManager.setPendingScroll(PendingScroll); + } + private class ScrollStateListener implements DiscreteScrollLayoutManager.ScrollStateListener { @Override 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 index e142369865..bb02f81c07 100644 --- 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 @@ -2,7 +2,7 @@ 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 ca5c13aed2..2fb0371afd 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 @@ -116,7 +116,7 @@ () + AIAssist.getInstance(context).speakTTSVoice(String.format("搜索到%d个位置,请选择",datums?.size)) for (index in 0 until datums!!.size) { var decodeResource = BitmapFactory.decodeResource( 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 9dbae3bfcd..9459b25520 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 @@ -107,9 +107,10 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallB mAdapter.setDatas(calculatedStrategies) mAdapter.selectTag = calculatedStrategies[0].tagId } + AIAssist.getInstance(context).speakTTSVoice(String.format("已为你规划处%d条路线,请选择",calculatedStrategies.size)) pb_path.visibility = View.GONE group_path.visibility = View.GONE - tv_navi_navi.text = getString(R.string.navi_to_there) + tv_navi_navi.text = getString(R.string.start_navi) } 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 f0ba2135b1..503452e14b 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 @@ -187,6 +187,7 @@ public class SearchFragment extends BaseSearchFragment AIAssist.getInstance(getContext()) .registerUnWakeupCommand(BACK_CMD, new String[] { "关闭", "返回" }, this); + registerVoidCmd(); } private void goSetting() { @@ -529,7 +530,6 @@ public class SearchFragment extends BaseSearchFragment // registerHistory(); //} - @Override public void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); if (hidden) { @@ -543,8 +543,11 @@ public class SearchFragment extends BaseSearchFragment @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); + Integer integer = Integer.valueOf(index); + if (integer < mHistoryAdapter.getItemCount()) { + SearchPoi item = mHistoryAdapter.getItem(integer); + goHistory(item); + } return; } switch (cmd) { @@ -556,7 +559,7 @@ public class SearchFragment extends BaseSearchFragment break; case BACK_CMD: - SearchServiceHolder.INSTANCE.getFragmentManager().pop(); + SearchServiceHolder.INSTANCE.getFragmentManager().clearAll(); break; case GAS_CMD: