diff --git a/brouter-core/src/main/java/btools/router/VoiceHintProcessor.java b/brouter-core/src/main/java/btools/router/VoiceHintProcessor.java index 6b4f37e..1a63a0a 100644 --- a/brouter-core/src/main/java/btools/router/VoiceHintProcessor.java +++ b/brouter-core/src/main/java/btools/router/VoiceHintProcessor.java @@ -250,8 +250,10 @@ public final class VoiceHintProcessor { if (input.cmd == VoiceHint.C && !input.goodWay.isLinktType()) { int badWayPrio = 0; - for (MessageData md : input.badWays) { - badWayPrio = Math.max(badWayPrio, md.getPrio()); + if (input.badWays != null) { + for (MessageData md : input.badWays) { + badWayPrio = Math.max(badWayPrio, md.getPrio()); + } } if (input.goodWay.getPrio() < badWayPrio) { results.add(input); diff --git a/brouter-expressions/src/main/java/btools/expressions/BExpressionContext.java b/brouter-expressions/src/main/java/btools/expressions/BExpressionContext.java index feb86a1..f4fafa9 100644 --- a/brouter-expressions/src/main/java/btools/expressions/BExpressionContext.java +++ b/brouter-expressions/src/main/java/btools/expressions/BExpressionContext.java @@ -588,7 +588,7 @@ public abstract class BExpressionContext implements IByteArrayUnifier { } value = String.format(Locale.US, "%3.1f", foot * 0.3048f); } - if (value.toLowerCase().contains("'")) { + if (value.contains("'")) { float foot = 0f; int inch = 0; String[] sa = value.toLowerCase().trim().split("'"); @@ -601,9 +601,9 @@ public abstract class BExpressionContext implements IByteArrayUnifier { foot += inch / 12f; } value = String.format(Locale.US, "%3.1f", foot * 0.3048f); - } else if (value.contains("in") || value.contains("\"")) { + } else if (value.toLowerCase().contains("in") || value.contains("\"")) { float inch = 0f; - if (value.indexOf("in") > 0) value = value.substring(0, value.indexOf("in")); + if (value.toLowerCase().indexOf("in") > 0) value = value.substring(0, value.toLowerCase().indexOf("in")); if (value.indexOf("\"") > 0) value = value.substring(0, value.indexOf("\"")); inch = Float.parseFloat(value.trim()); value = String.format(Locale.US, "%3.1f", inch * 0.0254f); @@ -613,20 +613,18 @@ public abstract class BExpressionContext implements IByteArrayUnifier { feet = Float.parseFloat(s.trim()); value = String.format(Locale.US, "%3.1f", feet * 0.3048f); } else if (value.toLowerCase().contains("fathom") || value.toLowerCase().contains("fm")) { - float fathom = 0f; String s = value.substring(0, value.toLowerCase().indexOf("f")); - fathom = Float.parseFloat(s.trim()); + float fathom = Float.parseFloat(s.trim()); value = String.format(Locale.US, "%3.1f", fathom * 1.8288f); - } else if (value.contains("cm")) { - String[] sa = value.trim().split("cm"); - if (sa.length == 1) value = sa[0].trim(); + } else if (value.toLowerCase().contains("cm")) { + String[] sa = value.toLowerCase().trim().split("cm"); + if (sa.length >= 1) value = sa[0].trim(); float cm = Float.parseFloat(value.trim()); - value = String.format(Locale.US, "%3.1f", cm * 100f); + value = String.format(Locale.US, "%3.1f", cm / 100f); } else if (value.toLowerCase().contains("meter")) { String s = value.substring(0, value.toLowerCase().indexOf("m")); value = s.trim(); } else if (value.toLowerCase().contains("mph")) { - value = value.replace("_", ""); String[] sa = value.trim().toLowerCase().split("mph"); if (sa.length >= 1) value = sa[0].trim(); float mph = Float.parseFloat(value.trim()); @@ -636,10 +634,10 @@ public abstract class BExpressionContext implements IByteArrayUnifier { if (sa.length >= 1) value = sa[0].trim(); float nm = Float.parseFloat(value.trim()); value = String.format(Locale.US, "%3.1f", nm * 1.852f); - } else if (value.contains("kmh") || value.contains("km/h") || value.contains("kph")) { - String[] sa = value.trim().split("k"); - if (sa.length == 1) value = sa[0].trim(); - } else if (value.contains("m")) { + } else if (value.toLowerCase().contains("kmh") || value.toLowerCase().contains("km/h") || value.toLowerCase().contains("kph")) { + String[] sa = value.toLowerCase().trim().split("k"); + if (sa.length > 1) value = sa[0].trim(); + } else if (value.toLowerCase().contains("m")) { String s = value.substring(0, value.toLowerCase().indexOf("m")); value = s.trim(); } else if (value.contains("(")) { diff --git a/brouter-routing-app/src/main/AndroidManifest.xml b/brouter-routing-app/src/main/AndroidManifest.xml index a2f9dfa..e210ef7 100644 --- a/brouter-routing-app/src/main/AndroidManifest.xml +++ b/brouter-routing-app/src/main/AndroidManifest.xml @@ -92,6 +92,7 @@ android:name=".RoutingParameterDialog" android:exported="true" android:launchMode="singleTask" + android:configChanges="orientation|screenSize|keyboardHidden" /> String with a number of seconds for the routing timeout, default = 60 // "turnInstructionFormat"-->String selecting the format for turn-instructions values: osmand, locus // "trackFormat"-->[kml|gpx|json] default = gpx + // "acceptCompressedResult"-->[true] sends a compressed result when output format is gpx // "lats"-->double[] array of latitudes; 2 values at least. // "lons"-->double[] array of longitudes; 2 values at least. // "nogoLats"-->double[] array of nogo latitudes; may be null. diff --git a/brouter-routing-app/src/main/java/btools/routingapp/BRouterView.java b/brouter-routing-app/src/main/java/btools/routingapp/BRouterView.java index e2ea815..ff50885 100644 --- a/brouter-routing-app/src/main/java/btools/routingapp/BRouterView.java +++ b/brouter-routing-app/src/main/java/btools/routingapp/BRouterView.java @@ -845,8 +845,13 @@ public class BRouterView extends View { for (int i = 0; i < 6; i++) { if (checkedModes[i]) { writeRawTrackToMode(routingModes[i]); - String s = map.get(routingModes[i]).params; - String p = map.get(routingModes[i]).profile; + ServiceModeConfig sm = map.get(routingModes[i]); + String s = null; + String p = null; + if (sm != null) { + s = sm.params; + p = sm.profile; + } if (s == null || !p.equals(profileName)) s = "noparams"; ServiceModeConfig smc = new ServiceModeConfig(routingModes[i], profileName, s); for (OsmNodeNamed nogo : nogoVetoList) { diff --git a/brouter-routing-app/src/main/java/btools/routingapp/BRouterWorker.java b/brouter-routing-app/src/main/java/btools/routingapp/BRouterWorker.java index e140561..7e37818 100644 --- a/brouter-routing-app/src/main/java/btools/routingapp/BRouterWorker.java +++ b/brouter-routing-app/src/main/java/btools/routingapp/BRouterWorker.java @@ -64,7 +64,7 @@ public class BRouterWorker { if ("osmand".equalsIgnoreCase(tiFormat)) { rc.turnInstructionMode = 3; } else if ("locus".equalsIgnoreCase(tiFormat)) { - rc.turnInstructionMode = 7; + rc.turnInstructionMode = 2; } } if (params.containsKey("timode")) { diff --git a/brouter-routing-app/src/main/java/btools/routingapp/RoutingParameterDialog.java b/brouter-routing-app/src/main/java/btools/routingapp/RoutingParameterDialog.java index 4f892c6..8eb4365 100644 --- a/brouter-routing-app/src/main/java/btools/routingapp/RoutingParameterDialog.java +++ b/brouter-routing-app/src/main/java/btools/routingapp/RoutingParameterDialog.java @@ -4,6 +4,7 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.content.res.Configuration; import android.os.Build; import android.os.Bundle; import android.window.OnBackInvokedCallback; @@ -202,6 +203,11 @@ public class RoutingParameterDialog extends AppCompatActivity { } } + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + } + public static class MyPreferenceFragment extends PreferenceFragmentCompat { diff --git a/brouter-routing-app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/brouter-routing-app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index bbd3e02..93542a7 100644 --- a/brouter-routing-app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/brouter-routing-app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -2,4 +2,5 @@ - \ No newline at end of file + + diff --git a/brouter-routing-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/brouter-routing-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index bbd3e02..93542a7 100644 --- a/brouter-routing-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/brouter-routing-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -2,4 +2,5 @@ - \ No newline at end of file + +