I'm using Text to speech in my android application.It is working Fine with Google TTs and espeak, But when i used with Samsung TTS it gives following Exception.
java.lang.IllegalArgumentException: Invalid int: "OS"
at android.os.Parcel.readException(Parcel.java:1429)
at android.os.Parcel.readException(Parcel.java:1379)
at android.speech.tts.ITextToSpeechService$Stub$Proxy.isLanguageAvailable(ITextToSpeechService.java:482)
at android.speech.tts.TextToSpeech$10.run(TextToSpeech.java:1084)
at android.speech.tts.TextToSpeech$10.run(TextToSpeech.java:1081)
at android.speech.tts.TextToSpeech$Connection.runAction(TextToSpeech.java:1329)
at android.speech.tts.TextToSpeech.runAction(TextToSpeech.java:570)
at android.speech.tts.TextToSpeech.runAction(TextToSpeech.java:561)
at android.speech.tts.TextToSpeech.isLanguageAvailable(TextToSpeech.java:1081)
I have found that I get this exception also when I try to do something like TextToSpeech.getDefaultVoice
, or TextToSpeech.getVoices()
, or TextToSpeech.getVoice()
. I worked around this by not calling them, and instead working through the default Locale to get what I was trying to get via the Voices object.
So in my case I wanted to know the Locale so I could select a language, so I did the following
Locale lTest = Locale.getDefault();
res = mTTS.isLanguageAvailable(lTest);
I used this to avoid raising the exception.
int result = mTts.isLanguageAvailable(Locale.US);
if(result >= 0)
result = mTts.setLanguage(Locale.US);
else {
Locale def = Locale.getDefault();
result = mTts.isLanguageAvailable(def);
if(result >=0 )
result = mTts.setLanguage(def);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With