Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
7823409fdf
11 changed files with 101 additions and 48 deletions
|
@ -12,7 +12,8 @@ public class TurnType {
|
||||||
public static final String KR = "KR"; // keep right//$NON-NLS-1$
|
public static final String KR = "KR"; // keep right//$NON-NLS-1$
|
||||||
public static final String TU = "TU"; // U-turn //$NON-NLS-1$
|
public static final String TU = "TU"; // U-turn //$NON-NLS-1$
|
||||||
public static final String TRU = "TRU"; // Right U-turn //$NON-NLS-1$
|
public static final String TRU = "TRU"; // Right U-turn //$NON-NLS-1$
|
||||||
public static String[] predefinedTypes = new String[] { C, KL, KR, TL, TSLL, TSHL, TR, TSLR, TSHR, TU, TRU };
|
public static final String OFFR = "OFFR"; // Off route //$NON-NLS-1$
|
||||||
|
public static String[] predefinedTypes = new String[] { C, KL, KR, TL, TSLL, TSHL, TR, TSLR, TSHR, TU, TRU, OFFR };
|
||||||
|
|
||||||
public static TurnType sraight() {
|
public static TurnType sraight() {
|
||||||
return valueOf(C, false);
|
return valueOf(C, false);
|
||||||
|
@ -138,6 +139,8 @@ public class TurnType {
|
||||||
return "Keep left";
|
return "Keep left";
|
||||||
} else if(value.equals(KR)) {
|
} else if(value.equals(KR)) {
|
||||||
return "Keep right";
|
return "Keep right";
|
||||||
|
} else if(value.equals(OFFR)) {
|
||||||
|
return "Off route";
|
||||||
}
|
}
|
||||||
return super.toString();
|
return super.toString();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1794,7 +1794,7 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz
|
||||||
<string name="osmo_session_not_available">Sessione non disponibile, per favore controllare che \'Invia posizioni\' sia attivo.</string>
|
<string name="osmo_session_not_available">Sessione non disponibile, per favore controllare che \'Invia posizioni\' sia attivo.</string>
|
||||||
<string name="osmo_share_session">Condividi sessione</string>
|
<string name="osmo_share_session">Condividi sessione</string>
|
||||||
<string name="osmo_session_id_share">Url della sessione per tracciare il dispositivo (%1$s)</string>
|
<string name="osmo_session_id_share">Url della sessione per tracciare il dispositivo (%1$s)</string>
|
||||||
<string name="osmo_tracker_id_share">Per collegarsi al dispositivo desiderato %2$s, cliccare sul link %3$ o specificarne l\'id di monitoraggio (%1$s)</string>
|
<string name="osmo_tracker_id_share">Per collegarsi al dispositivo desiderato %2$s, cliccare sul link %3$s o specificarne l\'id di monitoraggio (%1$s)</string>
|
||||||
<string name="osmo_track_interval">Intervallo di registrazione</string>
|
<string name="osmo_track_interval">Intervallo di registrazione</string>
|
||||||
<string name="osmo_track_interval_descr">Scegli l\'intervallo di tempo per l\'invio della posizione</string>
|
<string name="osmo_track_interval_descr">Scegli l\'intervallo di tempo per l\'invio della posizione</string>
|
||||||
<string name="int_days">giorni</string>
|
<string name="int_days">giorni</string>
|
||||||
|
|
|
@ -1199,7 +1199,7 @@
|
||||||
<string name="background_service_is_enabled_question">OsmAnd 休眠模式服務仍在執行。您想要關閉它嗎?</string>
|
<string name="background_service_is_enabled_question">OsmAnd 休眠模式服務仍在執行。您想要關閉它嗎?</string>
|
||||||
<string name="osmand_play_title_30_chars">OsmAnd 地圖和導航</string>
|
<string name="osmand_play_title_30_chars">OsmAnd 地圖和導航</string>
|
||||||
<string name="osmand_plus_play_title_30_chars">OsmAnd+ 地圖和導航</string>
|
<string name="osmand_plus_play_title_30_chars">OsmAnd+ 地圖和導航</string>
|
||||||
<string name="native_app_allocated_memory_descr">原生記憶體總計由應用程式 %1$s MB (Dalvik %2$s MB,其它 %3$s MB) 。Proportional memory %4$s MB (Android 限制 %5$s MB,Dalvik %6$ MB)分配佔用。</string>
|
<string name="native_app_allocated_memory_descr">原生記憶體總計由應用程式 %1$s MB (Dalvik %2$s MB,其它 %3$s MB) 。Proportional memory %4$s MB (Android 限制 %5$s MB,Dalvik %6$s MB)分配佔用。</string>
|
||||||
<string name="context_menu_item_destination_point">設定為目的地</string>
|
<string name="context_menu_item_destination_point">設定為目的地</string>
|
||||||
<string name="please_select_address">首先選擇城市或街道</string>
|
<string name="please_select_address">首先選擇城市或街道</string>
|
||||||
<string name="available_downloads_left">還可下載 %1$d 個檔案</string>
|
<string name="available_downloads_left">還可下載 %1$d 個檔案</string>
|
||||||
|
|
|
@ -71,8 +71,8 @@ public class RoutingHelper {
|
||||||
private RouteProvider provider = new RouteProvider();
|
private RouteProvider provider = new RouteProvider();
|
||||||
private VoiceRouter voiceRouter;
|
private VoiceRouter voiceRouter;
|
||||||
|
|
||||||
private boolean makeUturnWhenPossible = false;
|
private boolean isDeviatedFromRoute = false;
|
||||||
private long makeUTwpDetected = 0;
|
private long deviateFromRouteDetected = 0;
|
||||||
//private long wrongMovementDetected = 0;
|
//private long wrongMovementDetected = 0;
|
||||||
|
|
||||||
private RouteCalculationProgressCallback progressRoute;
|
private RouteCalculationProgressCallback progressRoute;
|
||||||
|
@ -80,11 +80,10 @@ public class RoutingHelper {
|
||||||
// private ProgressBar progress;
|
// private ProgressBar progress;
|
||||||
// private Handler progressHandler;
|
// private Handler progressHandler;
|
||||||
|
|
||||||
public boolean makeUturnWhenPossible() {
|
public boolean isDeviatedFromRoute() {
|
||||||
return makeUturnWhenPossible;
|
return isDeviatedFromRoute;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public RoutingHelper(OsmandApplication context, CommandPlayer player){
|
public RoutingHelper(OsmandApplication context, CommandPlayer player){
|
||||||
this.app = context;
|
this.app = context;
|
||||||
settings = context.getSettings();
|
settings = context.getSettings();
|
||||||
|
@ -125,7 +124,7 @@ public class RoutingHelper {
|
||||||
|
|
||||||
public synchronized void clearCurrentRoute(LatLon newFinalLocation, List<LatLon> newIntermediatePoints) {
|
public synchronized void clearCurrentRoute(LatLon newFinalLocation, List<LatLon> newIntermediatePoints) {
|
||||||
route = new RouteCalculationResult("");
|
route = new RouteCalculationResult("");
|
||||||
makeUturnWhenPossible = false;
|
isDeviatedFromRoute = false;
|
||||||
evalWaitInterval = 3000;
|
evalWaitInterval = 3000;
|
||||||
app.runInUIThread(new Runnable() {
|
app.runInUIThread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -211,10 +210,20 @@ public class RoutingHelper {
|
||||||
return setCurrentLocation(currentLocation, returnUpdatedLocation, route);
|
return setCurrentLocation(currentLocation, returnUpdatedLocation, route);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double getRouteDeviation(){
|
||||||
|
if (route == null ||
|
||||||
|
route.getImmutableAllDirections().size() < 2 ||
|
||||||
|
route.currentRoute == 0){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
List<Location> routeNodes = route.getImmutableAllLocations();
|
||||||
|
return getOrthogonalDistance(lastFixedLocation, routeNodes.get(route.currentRoute -1), routeNodes.get(route.currentRoute));
|
||||||
|
}
|
||||||
|
|
||||||
private Location setCurrentLocation(Location currentLocation, boolean returnUpdatedLocation, RouteCalculationResult previousRoute) {
|
private Location setCurrentLocation(Location currentLocation, boolean returnUpdatedLocation, RouteCalculationResult previousRoute) {
|
||||||
Location locationProjection = currentLocation;
|
Location locationProjection = currentLocation;
|
||||||
if (finalLocation == null || currentLocation == null) {
|
if (finalLocation == null || currentLocation == null) {
|
||||||
makeUturnWhenPossible = false;
|
isDeviatedFromRoute = false;
|
||||||
return locationProjection;
|
return locationProjection;
|
||||||
}
|
}
|
||||||
float posTolerance = POSITION_TOLERANCE;
|
float posTolerance = POSITION_TOLERANCE;
|
||||||
|
@ -261,10 +270,10 @@ public class RoutingHelper {
|
||||||
// don't update in route planing mode
|
// don't update in route planing mode
|
||||||
announceGpxWaypoints(currentLocation);
|
announceGpxWaypoints(currentLocation);
|
||||||
boolean inRecalc = calculateRoute || isRouteBeingCalculated();
|
boolean inRecalc = calculateRoute || isRouteBeingCalculated();
|
||||||
if (!inRecalc && !uTurnIsNeeded && !wrongMovementDirection) {
|
if (!inRecalc && !wrongMovementDirection) {
|
||||||
voiceRouter.updateStatus(currentLocation, false);
|
voiceRouter.updateStatus(currentLocation, false);
|
||||||
} else if (uTurnIsNeeded) {
|
} else if(isDeviatedFromRoute){
|
||||||
voiceRouter.makeUTStatus();
|
voiceRouter.interruptRouteCommands();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -463,10 +472,10 @@ public class RoutingHelper {
|
||||||
|
|
||||||
public boolean identifyUTurnIsNeeded(Location currentLocation, float posTolerance) {
|
public boolean identifyUTurnIsNeeded(Location currentLocation, float posTolerance) {
|
||||||
if (finalLocation == null || currentLocation == null || !route.isCalculated()) {
|
if (finalLocation == null || currentLocation == null || !route.isCalculated()) {
|
||||||
this.makeUturnWhenPossible = false;
|
this.isDeviatedFromRoute = false;
|
||||||
return makeUturnWhenPossible;
|
return isDeviatedFromRoute;
|
||||||
}
|
}
|
||||||
boolean makeUturnWhenPossible = false;
|
boolean isOffRoute = false;
|
||||||
if (currentLocation.hasBearing()) {
|
if (currentLocation.hasBearing()) {
|
||||||
float bearingMotion = currentLocation.getBearing() ;
|
float bearingMotion = currentLocation.getBearing() ;
|
||||||
Location nextRoutePosition = route.getNextRouteLocation();
|
Location nextRoutePosition = route.getNextRouteLocation();
|
||||||
|
@ -479,19 +488,19 @@ public class RoutingHelper {
|
||||||
// 60m tolerance to allow for GPS inaccuracy
|
// 60m tolerance to allow for GPS inaccuracy
|
||||||
if (d > posTolerance) {
|
if (d > posTolerance) {
|
||||||
// require x sec continuous since first detection
|
// require x sec continuous since first detection
|
||||||
if (makeUTwpDetected == 0) {
|
if (deviateFromRouteDetected == 0) {
|
||||||
makeUTwpDetected = System.currentTimeMillis();
|
deviateFromRouteDetected = System.currentTimeMillis();
|
||||||
} else if ((System.currentTimeMillis() - makeUTwpDetected > 10000)) {
|
} else if ((System.currentTimeMillis() - deviateFromRouteDetected > 10000)) {
|
||||||
makeUturnWhenPossible = true;
|
isOffRoute = true;
|
||||||
//log.info("bearingMotion is opposite to bearingRoute"); //$NON-NLS-1$
|
//log.info("bearingMotion is opposite to bearingRoute"); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
makeUTwpDetected = 0;
|
deviateFromRouteDetected = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.makeUturnWhenPossible = makeUturnWhenPossible;
|
this.isDeviatedFromRoute = isOffRoute;
|
||||||
return makeUturnWhenPossible;
|
return isOffRoute;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -201,17 +201,6 @@ public class VoiceRouter {
|
||||||
return currentStatus <= statusToCheck;
|
return currentStatus <= statusToCheck;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void makeUTStatus() {
|
|
||||||
// Mechanism via STATUS_UTWP_TOLD: Until turn in the right direction, or route is re-calculated in forward direction
|
|
||||||
if (currentStatus != STATUS_UTWP_TOLD) {
|
|
||||||
if (playMakeUTwp()) {
|
|
||||||
currentStatus = STATUS_UTWP_TOLD;
|
|
||||||
playGoAheadDist = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void announceOffRoute(double dist) {
|
public void announceOffRoute(double dist) {
|
||||||
long ms = System.currentTimeMillis();
|
long ms = System.currentTimeMillis();
|
||||||
if(waitAnnouncedOffRoute == 0 || ms - lastAnnouncedOffRoute > waitAnnouncedOffRoute) {
|
if(waitAnnouncedOffRoute == 0 || ms - lastAnnouncedOffRoute > waitAnnouncedOffRoute) {
|
||||||
|
@ -683,6 +672,12 @@ public class VoiceRouter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void interruptRouteCommands() {
|
||||||
|
if (player != null){
|
||||||
|
player.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Command to wait until voice player is initialized
|
* Command to wait until voice player is initialized
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -150,6 +150,26 @@ public class TurnPathHelper {
|
||||||
pathForTurn.rQuadTo(0, -quadShiftX, b *quadShiftX, -quadShiftY);
|
pathForTurn.rQuadTo(0, -quadShiftX, b *quadShiftX, -quadShiftY);
|
||||||
pathForTurn.rQuadTo(b * quadShiftX, 0, b * quadShiftX, quadShiftY);
|
pathForTurn.rQuadTo(b * quadShiftX, 0, b * quadShiftX, quadShiftY);
|
||||||
pathForTurn.rLineTo(0, h);
|
pathForTurn.rLineTo(0, h);
|
||||||
|
} else if (TurnType.OFFR.equals(turnType.getValue())){
|
||||||
|
int h = (int) (ha - hpartArrowL - 16);
|
||||||
|
pathForTurn.rMoveTo(th, 0); //12 0
|
||||||
|
//first square
|
||||||
|
pathForTurn.rLineTo(0, -h / 4); //0 -7
|
||||||
|
pathForTurn.rLineTo(-th, 0); //-12 0
|
||||||
|
pathForTurn.rLineTo(0, h / 4); //0 7
|
||||||
|
pathForTurn.rLineTo(th, 0); //12 0
|
||||||
|
pathForTurn.rMoveTo(0, -h / 2); //12 0
|
||||||
|
//second square
|
||||||
|
pathForTurn.rLineTo(0, -h / 4); //0 -7
|
||||||
|
pathForTurn.rLineTo(-th, 0); //-12 0
|
||||||
|
pathForTurn.rLineTo(0, h / 4); //0 7
|
||||||
|
pathForTurn.rLineTo(th, 0); //12 0
|
||||||
|
pathForTurn.rMoveTo(0, -h / 2 + 1); //31 0
|
||||||
|
//arrow
|
||||||
|
pathForTurn.rLineTo(hpartArrowL, 0); //9 0
|
||||||
|
pathForTurn.rLineTo(-harrowL / 2, -harrowL / 2); // center -15 -15
|
||||||
|
pathForTurn.rLineTo(-harrowL / 2, harrowL / 2); // -15 15
|
||||||
|
pathForTurn.rLineTo(hpartArrowL + th, 0); //9 0
|
||||||
} else if (turnType != null && turnType.isRoundAbout()) {
|
} else if (turnType != null && turnType.isRoundAbout()) {
|
||||||
float t = turnType.getTurnAngle();
|
float t = turnType.getTurnAngle();
|
||||||
if (t >= 170 && t < 220) {
|
if (t >= 170 && t < 220) {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package net.osmand.plus.views.mapwidgets;
|
package net.osmand.plus.views.mapwidgets;
|
||||||
|
|
||||||
import net.osmand.plus.OsmAndFormatter;
|
import net.osmand.plus.OsmAndFormatter;
|
||||||
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.views.MapInfoLayer;
|
import net.osmand.plus.views.MapInfoLayer;
|
||||||
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
|
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
|
||||||
|
@ -22,6 +23,8 @@ public class NextTurnInfoWidget extends BaseMapWidget {
|
||||||
private float height ;
|
private float height ;
|
||||||
private static final float miniCoeff = 2.5f;
|
private static final float miniCoeff = 2.5f;
|
||||||
|
|
||||||
|
protected double deviatedPath = 0;
|
||||||
|
|
||||||
protected Path pathForTurn = new Path();
|
protected Path pathForTurn = new Path();
|
||||||
|
|
||||||
protected TurnType turnType = null;
|
protected TurnType turnType = null;
|
||||||
|
@ -34,7 +37,7 @@ public class NextTurnInfoWidget extends BaseMapWidget {
|
||||||
private Paint paintBlack;
|
private Paint paintBlack;
|
||||||
private Paint paintRouteDirection;
|
private Paint paintRouteDirection;
|
||||||
|
|
||||||
protected boolean makeUturnWhenPossible;
|
protected boolean deviatedFromRoute;
|
||||||
protected int turnImminent;
|
protected int turnImminent;
|
||||||
protected boolean horisontalMini;
|
protected boolean horisontalMini;
|
||||||
|
|
||||||
|
@ -94,7 +97,10 @@ public class NextTurnInfoWidget extends BaseMapWidget {
|
||||||
protected void onDraw(Canvas canvas) {
|
protected void onDraw(Canvas canvas) {
|
||||||
super.onDraw(canvas);
|
super.onDraw(canvas);
|
||||||
if (pathForTurn != null) {
|
if (pathForTurn != null) {
|
||||||
if (turnImminent > 0) {
|
//if user deviates from route that we should draw grey arrow
|
||||||
|
if (deviatedFromRoute){
|
||||||
|
paintRouteDirection.setColor(getResources().getColor(R.color.nav_arrow_distant));
|
||||||
|
} else if (turnImminent > 0) {
|
||||||
paintRouteDirection.setColor(getResources().getColor(R.color.nav_arrow));
|
paintRouteDirection.setColor(getResources().getColor(R.color.nav_arrow));
|
||||||
} else if (turnImminent == 0) {
|
} else if (turnImminent == 0) {
|
||||||
paintRouteDirection.setColor(getResources().getColor(R.color.nav_arrow_imminent));
|
paintRouteDirection.setColor(getResources().getColor(R.color.nav_arrow_imminent));
|
||||||
|
@ -105,15 +111,15 @@ public class NextTurnInfoWidget extends BaseMapWidget {
|
||||||
canvas.translate(0, 3 * scaleCoefficient);
|
canvas.translate(0, 3 * scaleCoefficient);
|
||||||
canvas.drawPath(pathForTurn, paintRouteDirection);
|
canvas.drawPath(pathForTurn, paintRouteDirection);
|
||||||
canvas.drawPath(pathForTurn, paintBlack);
|
canvas.drawPath(pathForTurn, paintBlack);
|
||||||
if (exitOut != null && !horisontalMini && !makeUturnWhenPossible) {
|
if (exitOut != null && !horisontalMini && !deviatedFromRoute) {
|
||||||
drawShadowText(canvas, exitOut, width / 2 - 7 * scaleCoefficient,
|
drawShadowText(canvas, exitOut, width / 2 - 7 * scaleCoefficient,
|
||||||
height / 2 + textPaint.getTextSize() / 2 - 3 * scaleCoefficient, textPaint);
|
height / 2 + textPaint.getTextSize() / 2 - 3 * scaleCoefficient, textPaint);
|
||||||
}
|
}
|
||||||
String text = OsmAndFormatter.getFormattedDistance(nextTurnDirection, getClientContext());
|
String text = OsmAndFormatter.getFormattedDistance(nextTurnDirection, getClientContext());
|
||||||
String subtext = null;
|
String subtext = null;
|
||||||
|
|
||||||
if (makeUturnWhenPossible) {
|
if (deviatedFromRoute) {
|
||||||
text = getResources().getString(R.string.asap);
|
text = OsmAndFormatter.getFormattedDistance((float) deviatedPath, (OsmandApplication)getContext().getApplicationContext());
|
||||||
}
|
}
|
||||||
|
|
||||||
int ls = text.lastIndexOf(' ');
|
int ls = text.lastIndexOf(' ');
|
||||||
|
|
|
@ -60,12 +60,13 @@ public class RouteInfoWidgetsFactory {
|
||||||
boolean visible = false;
|
boolean visible = false;
|
||||||
boolean followingMode = routingHelper.isFollowingMode() || ctx.getLocationProvider().getLocationSimulation().isRouteAnimating();
|
boolean followingMode = routingHelper.isFollowingMode() || ctx.getLocationProvider().getLocationSimulation().isRouteAnimating();
|
||||||
if (routingHelper != null && routingHelper.isRouteCalculated() && followingMode) {
|
if (routingHelper != null && routingHelper.isRouteCalculated() && followingMode) {
|
||||||
makeUturnWhenPossible = routingHelper.makeUturnWhenPossible() ;
|
deviatedFromRoute = routingHelper.isDeviatedFromRoute() ;
|
||||||
if (makeUturnWhenPossible) {
|
if (deviatedFromRoute) {
|
||||||
visible = true;
|
visible = true;
|
||||||
turnImminent = 0;
|
turnImminent = 0;
|
||||||
turnType = TurnType.valueOf(TurnType.TU, settings.DRIVING_REGION.get().leftHandDriving);
|
turnType = TurnType.valueOf(TurnType.OFFR, settings.DRIVING_REGION.get().leftHandDriving);
|
||||||
TurnPathHelper.calcTurnPath(pathForTurn, turnType, pathTransform);
|
TurnPathHelper.calcTurnPath(pathForTurn, turnType, pathTransform);
|
||||||
|
deviatedPath = routingHelper.getRouteDeviation();
|
||||||
invalidate();
|
invalidate();
|
||||||
} else {
|
} else {
|
||||||
boolean showStraight = false;
|
boolean showStraight = false;
|
||||||
|
@ -147,9 +148,9 @@ public class RouteInfoWidgetsFactory {
|
||||||
boolean visible = false;
|
boolean visible = false;
|
||||||
boolean followingMode = routingHelper.isFollowingMode() || ctx.getLocationProvider().getLocationSimulation().isRouteAnimating();
|
boolean followingMode = routingHelper.isFollowingMode() || ctx.getLocationProvider().getLocationSimulation().isRouteAnimating();
|
||||||
if (routingHelper != null && routingHelper.isRouteCalculated() && followingMode) {
|
if (routingHelper != null && routingHelper.isRouteCalculated() && followingMode) {
|
||||||
boolean uturnWhenPossible = routingHelper.makeUturnWhenPossible() ;
|
boolean devitedFromRoute = routingHelper.isDeviatedFromRoute() ;
|
||||||
NextDirectionInfo r = routingHelper.getNextRouteDirectionInfo(calc1, true);
|
NextDirectionInfo r = routingHelper.getNextRouteDirectionInfo(calc1, true);
|
||||||
if (!uturnWhenPossible) {
|
if (!devitedFromRoute) {
|
||||||
if (r != null) {
|
if (r != null) {
|
||||||
// next turn is very close (show next next with false to speak)
|
// next turn is very close (show next next with false to speak)
|
||||||
// if (r.imminent >= 0 && r.imminent < 2) {
|
// if (r.imminent >= 0 && r.imminent < 2) {
|
||||||
|
|
|
@ -21,4 +21,6 @@ public interface CommandPlayer {
|
||||||
public String getLanguage();
|
public String getLanguage();
|
||||||
|
|
||||||
public boolean supportsStructuredStreetNames();
|
public boolean supportsStructuredStreetNames();
|
||||||
|
|
||||||
|
public void stop();
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,16 @@ public class MediaCommandPlayerImpl extends AbstractPrologCommandPlayer implemen
|
||||||
mediaPlayer = null;
|
mediaPlayer = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stop(){
|
||||||
|
if (filesToPlay != null){
|
||||||
|
filesToPlay.clear();
|
||||||
|
}
|
||||||
|
if (mediaPlayer != null){
|
||||||
|
mediaPlayer.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Called from the calculating route thread.
|
// Called from the calculating route thread.
|
||||||
@Override
|
@Override
|
||||||
public synchronized void playCommands(CommandBuilder builder) {
|
public synchronized void playCommands(CommandBuilder builder) {
|
||||||
|
|
|
@ -111,6 +111,13 @@ public class TTSCommandPlayerImpl extends AbstractPrologCommandPlayer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stop(){
|
||||||
|
if (mTts != null){
|
||||||
|
mTts.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void sendAlertToPebble(String message) {
|
public void sendAlertToPebble(String message) {
|
||||||
final Intent i = new Intent("com.getpebble.action.SEND_NOTIFICATION");
|
final Intent i = new Intent("com.getpebble.action.SEND_NOTIFICATION");
|
||||||
final Map<String, Object> data = new HashMap<String, Object>();
|
final Map<String, Object> data = new HashMap<String, Object>();
|
||||||
|
|
Loading…
Reference in a new issue