导航语音的bugs

卡片切换
This commit is contained in:
zhangyuanzhen
2020-03-14 18:59:06 +08:00
parent 2e8df41d65
commit 51fc5c996a
9 changed files with 82 additions and 31 deletions

View File

@@ -142,6 +142,18 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
}
}
/**
* 语音播报
*
* @param text
*/
public void speakTTSVoice( String text ) {
try {
mVoiceClient.speakDefault( text );
} catch ( Exception e ) {
}
}
/**
* 语音播报

View File

@@ -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<AppNavigatorView, AppNavig
scroller = findViewById(R.id.module_apps_id_scroller);
scroller.setRatio(330/523F);
scroller.setRatio(330 / 523F);
//scroller.setRatio(176/279F);
scroller.setSlideOnFling(true);
scroller.addOnItemChangedListener(this);
@@ -112,6 +113,10 @@ public class AppNavigatorFragment extends MvpFragment<AppNavigatorView, AppNavig
//} );
mApps.setOnClickListener(view -> {
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<AppNavigatorView, AppNavig
@Override
public void onCurrentItemChanged(@Nullable RecycleViewHolder viewHolder, int i) {
Logger.d(TAG, "onCurrentItemChanged--position--" + i % CARD_SIZE);
int currentPosition = i % CARD_SIZE - 2;
if (currentPosition < 0) {
currentPosition += CARD_SIZE;
}
this.currentPosition=currentPosition;
int currentPosition = (i - 2) % CARD_SIZE;
//this.currentPosition=currentPosition;
AppServiceHandler.getMogoCardManager().switch2(apps.get(i % CARD_SIZE).mModuleType);
//holder.showText();
@@ -204,7 +207,6 @@ public class AppNavigatorFragment extends MvpFragment<AppNavigatorView, AppNavig
//TextView tvTitle = viewHolder.getView(R.id.module_apps_id_app_name);
//tvTitle.setTextColor(getResources().getColor(R.color.white_80));
}
@Override public void onScrollEnd(@NonNull RecycleViewHolder viewHolder, int i) {
@@ -217,33 +219,50 @@ public class AppNavigatorFragment extends MvpFragment<AppNavigatorView, AppNavig
}
private int currentPosition = 0;
//private int currentPosition = 0;
@Override public void onSwitched(int position, String moduleName) {
//int index = (position - scroller.getCurrentItem() % CARD_SIZE + 2) % CARD_SIZE;
//int i = scroller.getCurrentItem() + index;
//LinearLayoutManager layoutManager =
// (LinearLayoutManager) scroller.getLayoutManager();
//
//layoutManager.smoothScrollToPosition();
DiscreteScrollLayoutManager layoutManager =
(DiscreteScrollLayoutManager) scroller.getLayoutManager();
int currentPosition = (scroller.getCurrentItem() - 2) % CARD_SIZE;
int index = position - currentPosition;
if (index == 0) {
return;
}
if (index < -2) {
if (index <= -5) {
index = 1;
} else if (index > 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;
}
}

View File

@@ -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,

View File

@@ -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

View File

@@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:angle="180"
android:angle="90"
android:endColor="#50526E"
android:startColor="#3F4057" />
<corners android:radius="@dimen/dp_15"/>

View File

@@ -116,7 +116,7 @@
<TextView
android:id="@+id/module_ext_id_north"
android:layout_width="@dimen/dp_120"
android:text="@string/mode_car_up"
android:text="@string/mode_north_up"
android:paddingTop="@dimen/dp_14"
android:visibility="gone"
android:textColor="@color/white"

View File

@@ -63,6 +63,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa
cv_search_result.visibility = View.VISIBLE
pb_path.visibility = View.GONE
var arrayList = ArrayList<MogoMarkerOptions>()
AIAssist.getInstance(context).speakTTSVoice(String.format("搜索到%d个位置请选择",datums?.size))
for (index in 0 until datums!!.size) {
var decodeResource =
BitmapFactory.decodeResource(

View File

@@ -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)
}

View File

@@ -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: