summaryrefslogtreecommitdiffstats
path: root/pico
diff options
context:
space:
mode:
authorCharles Chen <clchen@google.com>2010-02-04 22:18:35 -0800
committerCharles Chen <clchen@google.com>2010-02-05 19:06:54 -0800
commit8bc57e033a49d7470407cc6da6021eb2d8dde990 (patch)
treead9b06aed4003da2decb44866371bac4ccc129a2 /pico
parentfb6d3dae347f47107e5767f1ec6e87ed0bf9875a (diff)
downloadexternal_svox-8bc57e033a49d7470407cc6da6021eb2d8dde990.zip
external_svox-8bc57e033a49d7470407cc6da6021eb2d8dde990.tar.gz
external_svox-8bc57e033a49d7470407cc6da6021eb2d8dde990.tar.bz2
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;
+ }
+
}