diff --git a/android/app/src/main/java/app/organicmaps/MwmActivity.java b/android/app/src/main/java/app/organicmaps/MwmActivity.java
index 0ba3f0077..8e34bd461 100644
--- a/android/app/src/main/java/app/organicmaps/MwmActivity.java
+++ b/android/app/src/main/java/app/organicmaps/MwmActivity.java
@@ -107,6 +107,7 @@ import app.organicmaps.sdk.routing.RoutingOptions;
import app.organicmaps.sdk.search.SearchEngine;
import app.organicmaps.sdk.settings.RoadType;
import app.organicmaps.sdk.settings.UnitLocale;
+import app.organicmaps.sdk.sound.TtsPlayer;
import app.organicmaps.sdk.util.Config;
import app.organicmaps.sdk.util.LocationUtils;
import app.organicmaps.sdk.util.PowerManagment;
@@ -1813,6 +1814,17 @@ public class MwmActivity extends BaseMwmFragmentActivity
return false;
}
+ private void deliverTtsMessage() {
+ if(Config.isTtsMessageDelivered())
+ return;
+
+ String navigationStartMessage = getResources().getString(R.string.navigation_start_tts_message);
+ navigationStartMessage += TtsPlayer.INSTANCE.getLanguageDisplayName();
+ Toast.makeText(this, navigationStartMessage, Toast.LENGTH_LONG).show();
+
+ Config.setTtsMessageDelivered();
+ }
+
private boolean showStartPointNotice()
{
final RoutingController controller = RoutingController.get();
@@ -2189,6 +2201,8 @@ public class MwmActivity extends BaseMwmFragmentActivity
if (!showRoutingDisclaimer())
return;
+ deliverTtsMessage();
+
closeFloatingPanels();
setFullscreen(false);
RoutingController.get().start();
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index 2273c8658..f91f649fb 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -932,6 +932,7 @@
Share Track
Delete %s?
No text-to-speech engine found, check the app settings
+ "Starting Navigation, voice instruction language: "
unknown
Type 2 (no cable)
Type 2 (w/ cable)
diff --git a/android/sdk/src/main/java/app/organicmaps/sdk/sound/TtsPlayer.java b/android/sdk/src/main/java/app/organicmaps/sdk/sound/TtsPlayer.java
index 2b293428a..8a3dd1020 100644
--- a/android/sdk/src/main/java/app/organicmaps/sdk/sound/TtsPlayer.java
+++ b/android/sdk/src/main/java/app/organicmaps/sdk/sound/TtsPlayer.java
@@ -275,9 +275,14 @@ public enum TtsPlayer
return (INSTANCE.mTts != null && !INSTANCE.mUnavailable && !INSTANCE.mInitializing);
}
+ public Locale getVoiceLocale()
+ {
+ return mTts.getVoice().getLocale();
+ }
+
public String getLanguageDisplayName()
{
- Locale locale = mTts.getVoice().getLocale();
+ Locale locale = getVoiceLocale();
return locale.getDisplayName(locale);
}
diff --git a/android/sdk/src/main/java/app/organicmaps/sdk/util/Config.java b/android/sdk/src/main/java/app/organicmaps/sdk/util/Config.java
index e540ee577..74bfe8d7d 100644
--- a/android/sdk/src/main/java/app/organicmaps/sdk/util/Config.java
+++ b/android/sdk/src/main/java/app/organicmaps/sdk/util/Config.java
@@ -36,6 +36,7 @@ public final class Config
private static final String KEY_PREF_USE_GS = "UseGoogleServices";
private static final String KEY_MISC_DISCLAIMER_ACCEPTED = "IsDisclaimerApproved";
+ private static final String KEY_MISC_TTS_MESSAGE_DELIVERED = "TtsMessageDelivered";
private static final String KEY_MISC_LOCATION_REQUESTED = "LocationRequested";
private static final String KEY_MISC_USE_MOBILE_DATA = "UseMobileData";
private static final String KEY_MISC_USE_MOBILE_DATA_TIMESTAMP = "UseMobileDataTimestamp";
@@ -237,6 +238,16 @@ public final class Config
setBool(KEY_MISC_DISCLAIMER_ACCEPTED);
}
+ public static boolean isTtsMessageDelivered()
+ {
+ return getBool(KEY_MISC_TTS_MESSAGE_DELIVERED);
+ }
+
+ public static void setTtsMessageDelivered()
+ {
+ setBool(KEY_MISC_TTS_MESSAGE_DELIVERED);
+ }
+
public static boolean isLocationRequested()
{
return getBool(KEY_MISC_LOCATION_REQUESTED);