导航语音的bugs
卡片切换
This commit is contained in:
@@ -142,6 +142,18 @@ public class AIAssist implements VoiceClient.VoiceCmdCallBack {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 语音播报
|
||||
*
|
||||
* @param text
|
||||
*/
|
||||
public void speakTTSVoice( String text ) {
|
||||
try {
|
||||
mVoiceClient.speakDefault( text );
|
||||
} catch ( Exception e ) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 语音播报
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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)
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user