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);