2014-11-04 6 views
25

Ich benutze Text zu Sprache in meiner Android-Anwendung.Es funktioniert gut mit Google TTs und espeak, aber wenn ich mit Samsung TTS verwendet gibt es folgende Ausnahme.IllegalArgumentException: Ungültige int: "OS" mit Samsung tts

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) 
+3

Für mich Samsung-Gerät auf isLanguageAvailable true zurück, doch irgendwie genau diese späten Ausnahme während der setLanguage() –

+2

@MartinVysny Haben Sie Glück, einen Workaround zu finden? Ich habe das gleiche Problem mit setLanguage (...). – Dogcat

+0

Kein Glück, sorry. Alles was ich dachte, ist, den Benutzern zu predigen, Samsung zu spammen, um dieses Problem zu beheben;) –

Antwort

3

Ich habe festgestellt, dass ich diese Ausnahme erhalten auch wenn ich versuche, so etwas wie TextToSpeech.getDefaultVoice zu tun, oder TextToSpeech.getVoices() oder TextToSpeech.getVoice(). Ich habe daran gearbeitet, indem ich sie nicht aufgerufen habe, und stattdessen das Standardgebietsschema bearbeitet habe, um zu erhalten, was ich über das Voices-Objekt abrufen wollte.

Also in meinem Fall wollte ich die Locale wissen, so konnte ich eine Sprache auswählen, so habe ich die folgenden

  Locale lTest = Locale.getDefault(); 
      res = mTTS.isLanguageAvailable(lTest);