| @@ -23,7 +23,7 @@ import java.util.Locale; | |||
| import java.util.Set; | |||
| import com.reecedunn.espeak.SpeechSynthesis; | |||
| import com.reecedunn.espeak.SpeechSynthesis.Voice; | |||
| import com.reecedunn.espeak.Voice; | |||
| import android.content.Intent; | |||
| import android.content.pm.ActivityInfo; | |||
| @@ -32,7 +32,6 @@ import android.speech.tts.TextToSpeech.Engine; | |||
| import android.util.Log; | |||
| import com.reecedunn.espeak.SpeechSynthesis.SynthReadyCallback; | |||
| import com.reecedunn.espeak.SpeechSynthesis.Voice; | |||
| import java.io.ByteArrayOutputStream; | |||
| import java.io.File; | |||
| @@ -27,7 +27,6 @@ package com.reecedunn.espeak; | |||
| import android.content.Context; | |||
| import android.content.res.Configuration; | |||
| import android.content.res.Resources; | |||
| import android.speech.tts.TextToSpeech; | |||
| import android.util.DisplayMetrics; | |||
| import android.util.Log; | |||
| @@ -345,51 +344,6 @@ public class SpeechSynthesis { | |||
| void onSynthDataComplete(); | |||
| } | |||
| public class Voice { | |||
| public final String name; | |||
| public final String identifier; | |||
| public final int gender; | |||
| public final int age; | |||
| public final Locale locale; | |||
| public Voice(String name, String identifier, int gender, int age, Locale locale) { | |||
| this.name = name; | |||
| this.identifier = identifier; | |||
| this.gender = gender; | |||
| this.age = age; | |||
| this.locale = locale; | |||
| } | |||
| /** | |||
| * Attempts a partial match against a query locale. | |||
| * | |||
| * @param query The locale to match. | |||
| * @return A text-to-speech availability code. One of: | |||
| * <ul> | |||
| * <li>{@link TextToSpeech#LANG_NOT_SUPPORTED} | |||
| * <li>{@link TextToSpeech#LANG_AVAILABLE} | |||
| * <li>{@link TextToSpeech#LANG_COUNTRY_AVAILABLE} | |||
| * <li>{@link TextToSpeech#LANG_COUNTRY_VAR_AVAILABLE} | |||
| * </ul> | |||
| */ | |||
| public int match(Locale query) { | |||
| if (!locale.getISO3Language().equals(query.getISO3Language())) { | |||
| return TextToSpeech.LANG_NOT_SUPPORTED; | |||
| } else if (!locale.getISO3Country().equals(query.getISO3Country())) { | |||
| return TextToSpeech.LANG_AVAILABLE; | |||
| } else if (!locale.getVariant().equals(query.getVariant())) { | |||
| return TextToSpeech.LANG_COUNTRY_AVAILABLE; | |||
| } else { | |||
| return TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE; | |||
| } | |||
| } | |||
| @Override | |||
| public String toString() { | |||
| return locale.toString().replace('_', '-'); | |||
| } | |||
| } | |||
| private static String getIanaLocaleCode(String code, final Map<String, String> javaToIana) { | |||
| final String iana = javaToIana.get(code); | |||
| if (iana != null) { | |||
| @@ -40,7 +40,6 @@ import android.speech.tts.TextToSpeechService; | |||
| import android.util.Log; | |||
| import com.reecedunn.espeak.SpeechSynthesis.SynthReadyCallback; | |||
| import com.reecedunn.espeak.SpeechSynthesis.Voice; | |||
| import java.util.List; | |||
| import java.util.Locale; | |||
| @@ -0,0 +1,67 @@ | |||
| /* | |||
| * Copyright (C) 2012-2013 Reece H. Dunn | |||
| * Copyright (C) 2011 Google Inc. | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| * You may obtain a copy of the License at | |||
| * | |||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||
| * | |||
| * Unless required by applicable law or agreed to in writing, software | |||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
| * See the License for the specific language governing permissions and | |||
| * limitations under the License. | |||
| */ | |||
| package com.reecedunn.espeak; | |||
| import java.util.Locale; | |||
| import android.speech.tts.TextToSpeech; | |||
| public class Voice { | |||
| public final String name; | |||
| public final String identifier; | |||
| public final int gender; | |||
| public final int age; | |||
| public final Locale locale; | |||
| public Voice(String name, String identifier, int gender, int age, Locale locale) { | |||
| this.name = name; | |||
| this.identifier = identifier; | |||
| this.gender = gender; | |||
| this.age = age; | |||
| this.locale = locale; | |||
| } | |||
| /** | |||
| * Attempts a partial match against a query locale. | |||
| * | |||
| * @param query The locale to match. | |||
| * @return A text-to-speech availability code. One of: | |||
| * <ul> | |||
| * <li>{@link TextToSpeech#LANG_NOT_SUPPORTED} | |||
| * <li>{@link TextToSpeech#LANG_AVAILABLE} | |||
| * <li>{@link TextToSpeech#LANG_COUNTRY_AVAILABLE} | |||
| * <li>{@link TextToSpeech#LANG_COUNTRY_VAR_AVAILABLE} | |||
| * </ul> | |||
| */ | |||
| public int match(Locale query) { | |||
| if (!locale.getISO3Language().equals(query.getISO3Language())) { | |||
| return TextToSpeech.LANG_NOT_SUPPORTED; | |||
| } else if (!locale.getISO3Country().equals(query.getISO3Country())) { | |||
| return TextToSpeech.LANG_AVAILABLE; | |||
| } else if (!locale.getVariant().equals(query.getVariant())) { | |||
| return TextToSpeech.LANG_COUNTRY_AVAILABLE; | |||
| } else { | |||
| return TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE; | |||
| } | |||
| } | |||
| @Override | |||
| public String toString() { | |||
| return locale.toString().replace('_', '-'); | |||
| } | |||
| } | |||