aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsudev <rasch@munin-soft.de>2013-08-25 17:08:54 +0200
committerrsudev <rasch@munin-soft.de>2013-08-25 17:08:54 +0200
commit56963a80c6992f5f111470852b13e32c59c95be8 (patch)
treeccb8cd5e58a1487d1e3ca1948aba4afb6533727c
parent2f791d1a60f2ac41647ee75d7b0a3ef8365a7e31 (diff)
downloadcgeo-56963a80c6992f5f111470852b13e32c59c95be8.zip
cgeo-56963a80c6992f5f111470852b13e32c59c95be8.tar.gz
cgeo-56963a80c6992f5f111470852b13e32c59c95be8.tar.bz2
Fixes #2770, TTS not starting
Fixes #3177, TTS talking compass does not uses force English as well - moving checks to SpeechService, avoiding calling the intent - set requested locale to 'en' if 'forceEnglish'
-rw-r--r--main/res/values/strings.xml1
-rw-r--r--main/src/cgeo/geocaching/CompassActivity.java18
-rw-r--r--main/src/cgeo/geocaching/speech/SpeechService.java17
3 files changed, 16 insertions, 20 deletions
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index 33eea65..da84ca2 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -1153,6 +1153,7 @@
<string name="tts_service">Talking compass</string>
<string name="tts_start">Start talking</string>
<string name="tts_stop">Stop talking</string>
+ <string name="err_tts_lang_not_supported">The current language is not supported by text-to-speech.</string>
<string name="tts_one_kilometer">one kilometer</string>
<plurals name="tts_kilometers">
<item quantity="one">%s kilometer</item>
diff --git a/main/src/cgeo/geocaching/CompassActivity.java b/main/src/cgeo/geocaching/CompassActivity.java
index 909f8bb..002f00e 100644
--- a/main/src/cgeo/geocaching/CompassActivity.java
+++ b/main/src/cgeo/geocaching/CompassActivity.java
@@ -22,7 +22,6 @@ import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.media.AudioManager;
import android.os.Bundle;
-import android.speech.tts.TextToSpeech.Engine;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
@@ -195,7 +194,7 @@ public class CompassActivity extends AbstractActivity {
finish();
return true;
case R.id.menu_tts_start:
- initTextToSpeech();
+ SpeechService.startService(this, dstCoords);
return true;
case R.id.menu_tts_stop:
SpeechService.stopService(this);
@@ -218,21 +217,6 @@ public class CompassActivity extends AbstractActivity {
return false;
}
- private void initTextToSpeech() {
- Intent intent = new Intent(Engine.ACTION_CHECK_TTS_DATA);
- startActivityForResult(intent, REQUEST_TTS_DATA_CHECK);
- }
-
- @Override
- protected void onActivityResult(int request, int result, Intent data) {
- if (request == REQUEST_TTS_DATA_CHECK && result == Engine.CHECK_VOICE_DATA_PASS) {
- SpeechService.startService(this, dstCoords);
- } else {
- Log.i("TTS failed to start. Request: " + request + " result: " + result);
- startActivity(new Intent(Engine.ACTION_INSTALL_TTS_DATA));
- }
- }
-
private void setTitle() {
if (StringUtils.isNotBlank(title)) {
setTitle(title);
diff --git a/main/src/cgeo/geocaching/speech/SpeechService.java b/main/src/cgeo/geocaching/speech/SpeechService.java
index ae289ed..1907bfc 100644
--- a/main/src/cgeo/geocaching/speech/SpeechService.java
+++ b/main/src/cgeo/geocaching/speech/SpeechService.java
@@ -1,7 +1,9 @@
package cgeo.geocaching.speech;
import cgeo.geocaching.DirectionProvider;
+import cgeo.geocaching.R;
import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.GeoDirHandler;
@@ -14,6 +16,7 @@ import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.speech.tts.TextToSpeech;
+import android.speech.tts.TextToSpeech.Engine;
import android.speech.tts.TextToSpeech.OnInitListener;
import java.util.Locale;
@@ -144,11 +147,19 @@ public class SpeechService extends Service implements OnInitListener {
return;
}
- int switchLocale = tts.setLanguage(Locale.getDefault());
+ Locale locale = Locale.getDefault();
+ if (Settings.isUseEnglish()) {
+ locale = Locale.ENGLISH;
+ }
+
+ int switchLocale = tts.setLanguage(locale);
- if (switchLocale == TextToSpeech.LANG_MISSING_DATA
- || switchLocale == TextToSpeech.LANG_NOT_SUPPORTED) {
+ if (switchLocale == TextToSpeech.LANG_MISSING_DATA) {
+ startingActivity.startActivity(new Intent(Engine.ACTION_INSTALL_TTS_DATA));
+ return;
+ } else if (switchLocale == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("Current languge not supported by text to speech.");
+ ActivityMixin.showToast(startingActivity, R.string.err_tts_lang_not_supported);
return;
}