if (keyWord != null) { // 使用Stream API过滤并删除包含关键字的数据 boolean removed = routeList.removeIf(node -> node.get(0).getName().contains(keyWord)); if (removed) { List<BNRoutePlanNode> list = new ArrayList<>(); for (List<BNRoutePlanNode> ed : routeList) { list.add(ed.get(0)); } BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes(); android.util.Log.d("TAGAA", "deleteWayPoint: 数据是" + routeList.toString()); try { Thread.sleep(1800); BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list); BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4); showFullView(); isWayPoint = true; android.util.Log.d("TAGAA", "deleteWayPoint: 删除后 数据是" + list.toString()); } catch (InterruptedException e) { e.printStackTrace(); } } else { speakWithoutFollowStep("抱歉,当前没有" + keyWord + "途经点"); } } 这个代码中有一个bug,是删除了所有的途经点之后,过1.8秒去添加list中剩下的途经点。但是删除所有的之后,tts会播报“掉头”之类的语音,紧接着1.8秒后再次添加上去后,tts也还是会播报“掉头”,这个问题怎么解决?
时间: 2024-02-10 17:06:54 浏览: 133
感谢您的提问,针对这个问题,建议您可以在删除所有途经点后,先把TTS的语音播报暂停掉,然后在添加剩下的途经点之后再恢复TTS的语音播报。您可以尝试在删除途经点代码的前后加上如下代码:
```
BaiduNaviManagerFactory.getTTSManager().stop();
```
和
```
BaiduNaviManagerFactory.getTTSManager().resume();
```
这样就可以在删除所有途经点之后停止TTS的语音播报,然后在添加剩下的途经点之后恢复TTS的语音播报,避免出现重复播报的问题。
相关问题
if (keyWord != null) { // 使用Stream API过滤并删除包含关键字的数据 boolean removed = routeList.removeIf(node -> node.get(0).getName().contains(keyWord)); // 如果没有数据被删除,则提示 if (!removed) { speakWithoutFollowStep("抱歉,当前没有" + keyWord + "途经点"); } List<BNRoutePlanNode> list = new ArrayList<>(); for (List<BNRoutePlanNode> ed : routeList) { list.add(ed.get(0)); } BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes(); android.util.Log.d("TAGAA", "deleteWayPoint: 数据是"+routeList.toString()); try { Thread.sleep(1700); BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list); BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4); showFullView(); isWayPoint = true; android.util.Log.d("TAGAA", "deleteWayPoint: 删除后 数据是"+list.toString()); } catch (InterruptedException e) { e.printStackTrace(); } } else { BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes(); showFullView(); routeList.clear(); isWayPoint = true; android.util.Log.d("TAGAA", "deleteWayPoint: 删除完了 "+routeList.toString()); } 以上代码用来删除途经点和删除某个途经点,代码写的有没有问题
根据代码的逻辑,删除途经点的代码看起来是正确的。如果keyWord不为null,就会使用Stream API过滤并删除包含关键字的数据,如果没有数据被删除,则会提示没有相关的途经点。然后将剩余的途经点节点添加到list中,再通过BaiduNaviManagerFactory.getRouteGuideManager()的addViaNodes()方法将它们添加到导航管理器中。如果keyWord为null,则表示需要删除所有的途经点,这时会直接通过BaiduNaviManagerFactory.getRouteGuideManager()的deleteViaNodes()方法删除所有的途经点。但是,需要根据具体的应用场景来确定代码的正确性。
if (keyWord != null) { BaiduNaviInitHelper.setCanSpeak(false); BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes(); // 过滤并删除包含关键字的数据 boolean removed = routeList.removeIf(node -> node.get(0).getName().contains(keyWord)); if (removed) { List<BNRoutePlanNode> list = new ArrayList<>(); for (List<BNRoutePlanNode> planNodeList : routeList) { //planNodeList获取0是因为list中只有一条数据 list.add(planNodeList.get(0)); } BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list); BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4); showFullView(); isWayPoint = true; } else { speakWithoutFollowStep("抱歉,当前没有" + keyWord + "途经点"); } } 以上代码,有两个途经点,删除其中某个途经点,地图上还是显示的两个,代码逻辑帮我看看改一下
根据您提供的代码逻辑,删除途经点后需要重新设置途经点并显示全览模式。可以尝试修改以下代码:
```
if (keyWord != null) {
BaiduNaviInitHelper.setCanSpeak(false);
BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes();
// 过滤并删除包含关键字的数据
boolean removed = routeList.removeIf(node -> node.get(0).getName().contains(keyWord));
if (removed) {
List<BNRoutePlanNode> list = new ArrayList<>();
for (List<BNRoutePlanNode> planNodeList : routeList) {
list.add(planNodeList.get(0));
}
// 新增:重新设置途经点并显示全览模式
BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list);
BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(list.size());
showFullView();
isWayPoint = true;
} else {
speakWithoutFollowStep("抱歉,当前没有" + keyWord + "途经点");
}
}
```
修改后的代码中,新增了设置途经点并显示全览模式的代码。具体来说,我们在重新设置途经点时,使用`list`列表中的元素数量来设置途经点数量,然后调用`showFullView()`方法显示全览模式。同时,我们也将`isWayPoint`变量设置为`true`,表示当前已经设置了途经点。
阅读全文