summaryrefslogtreecommitdiffstats
path: root/pico
diff options
context:
space:
mode:
authorCharles Chen <clchen@google.com>2010-02-08 09:38:10 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-02-08 09:38:10 -0800
commit97854c75b5cf88fd708f2fb444c6bd5c3a8613b5 (patch)
tree7128d809eccf2aa16de84e493d15da7ea166e184 /pico
parent8fe40e09a5488b39bba460caccd685d907a78bd1 (diff)
parent8bc57e033a49d7470407cc6da6021eb2d8dde990 (diff)
downloadexternal_svox-97854c75b5cf88fd708f2fb444c6bd5c3a8613b5.zip
external_svox-97854c75b5cf88fd708f2fb444c6bd5c3a8613b5.tar.gz
external_svox-97854c75b5cf88fd708f2fb444c6bd5c3a8613b5.tar.bz2
Merge "Adding support to check voice data and return lists of available and unavailable voices."
Diffstat (limited to 'pico')
-rwxr-xr-xpico/src/com/svox/pico/CheckVoiceData.java63
1 files changed, 57 insertions, 6 deletions
diff --git a/pico/src/com/svox/pico/CheckVoiceData.java b/pico/src/com/svox/pico/CheckVoiceData.java
index 036be3b..abd85ab 100755
--- a/pico/src/com/svox/pico/CheckVoiceData.java
+++ b/pico/src/com/svox/pico/CheckVoiceData.java
@@ -21,8 +21,12 @@ import java.io.File;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
+import android.os.Environment;
import android.speech.tts.TextToSpeech;
+import java.util.ArrayList;
+import java.util.HashMap;
+
/*
* Checks if the voice data for the SVOX Pico Engine is present on the
* sd card.
@@ -31,7 +35,8 @@ public class CheckVoiceData extends Activity {
// The following constants are the same path constants as the ones defined
// in external/svox/pico/tts/com_svox_picottsengine.cpp
- private final static String PICO_LINGWARE_PATH = "/sdcard/svox/";
+ private final static String PICO_LINGWARE_PATH =
+ Environment.getExternalStorageDirectory() + "/svox/";
private final static String PICO_SYSTEM_LINGWARE_PATH = "/system/tts/lang_pico/";
private final static String[] dataFiles = {
@@ -45,29 +50,75 @@ public class CheckVoiceData extends Activity {
"spa-ESP", "spa-ESP", "fra-FRA", "fra-FRA", "ita-ITA", "ita-ITA"
};
+ private final static String[] supportedLanguages = {
+ "deu-DEU", "eng-GBR", "eng-USA", "spa-ESP", "fra-FRA", "ita-ITA"
+ };
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int result = TextToSpeech.Engine.CHECK_VOICE_DATA_PASS;
+ boolean foundMatch = false;
+
+ ArrayList<String> available = new ArrayList<String>();
+ ArrayList<String> unavailable = new ArrayList<String>();
+
+ HashMap<String, Boolean> languageCountry = new HashMap<String, Boolean>();
+
+ Bundle bundle = getIntent().getExtras();
+ if (bundle != null){
+ // TODO (clchen): Add this intent to TextToSpeech.Engine
+ ArrayList<String> langCountryVars = bundle.getStringArrayList(
+ "TextToSpeech.Engine.EXTRA_CHECK_VOICE_DATA_FOR");
+ if (langCountryVars != null){
+ for (int i = 0; i < langCountryVars.size(); i++){
+ if (langCountryVars.get(i).length() > 0){
+ languageCountry.put(langCountryVars.get(i), true);
+ }
+ }
+ }
+ }
// Check for files
- for (int i = 0; i < dataFiles.length; i++) {
- File tempFile = new File(PICO_LINGWARE_PATH + dataFiles[i]);
- File tempFileSys = new File(PICO_SYSTEM_LINGWARE_PATH + dataFiles[i]);
- if ((!tempFile.exists()) && (!tempFileSys.exists())) {
- result = TextToSpeech.Engine.CHECK_VOICE_DATA_MISSING_DATA;
+ for (int i = 0; i < supportedLanguages.length; i++){
+ if ((languageCountry.size() < 1) ||
+ (languageCountry.containsKey(supportedLanguages[i]))){
+ if (!fileExists(dataFiles[2 * i]) ||
+ !fileExists(dataFiles[(2 * i) + 1])){
+ result = TextToSpeech.Engine.CHECK_VOICE_DATA_MISSING_DATA;
+ unavailable.add(supportedLanguages[i]);
+ } else {
+ available.add(supportedLanguages[i]);
+ foundMatch = true;
+ }
}
}
+ if ((languageCountry.size() > 0) && !foundMatch){
+ result = TextToSpeech.Engine.CHECK_VOICE_DATA_FAIL;
+ }
+
// Put the root directory for the sd card data + the data filenames
Intent returnData = new Intent();
returnData.putExtra(TextToSpeech.Engine.EXTRA_VOICE_DATA_ROOT_DIRECTORY, PICO_LINGWARE_PATH);
returnData.putExtra(TextToSpeech.Engine.EXTRA_VOICE_DATA_FILES, dataFiles);
returnData.putExtra(TextToSpeech.Engine.EXTRA_VOICE_DATA_FILES_INFO, dataFilesInfo);
+ // TODO (clchen): Add these intents to TextToSpeech.Engine
+ returnData.putStringArrayListExtra("TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES", available);
+ returnData.putStringArrayListExtra("TextToSpeech.Engine.EXTRA_UNAVAILABLE_VOICES", unavailable);
setResult(result, returnData);
finish();
}
+ private boolean fileExists(String filename){
+ File tempFile = new File(PICO_LINGWARE_PATH + filename);
+ File tempFileSys = new File(PICO_SYSTEM_LINGWARE_PATH + filename);
+ if ((!tempFile.exists()) && (!tempFileSys.exists())) {
+ return false;
+ }
+ return true;
+ }
+
}