2014-11-04 9 views
25

Używam Text to speech w mojej aplikacji na Androida. Działa dobrze z Google TT i espeak, Ale kiedy użyłem z Samsung TTS daje następujący wyjątek.IllegalArgumentException: Invalid int: "OS" z 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

Dla mnie urządzenie Samsung zwraca true isLanguageAvailable ale nie z dokładnie tego wyjątku później podczas setLanguage() –

+2

@MartinVysny czy szczęście znalazłeś obejście? Mam taki sam problem z setLanguage (...). – Dogcat

+0

Bez powodzenia, przepraszam. Wszystko, co myślałem, to głoszenie użytkownikom, spamowanie Samsunga w celu rozwiązania tego problemu;) –

Odpowiedz

3

odkryłem, że mam również ten wyjątek, gdy próbuję coś zrobić jak TextToSpeech.getDefaultVoice lub TextToSpeech.getVoices() lub TextToSpeech.getVoice(). Pracowałem nad tym, nie wołając ich, a zamiast tego pracowałem poprzez domyślne Locale, aby uzyskać to, co próbowałem dostać za pośrednictwem obiektu Voices.

Więc w moim przypadku chciałem poznać Locale więc mogłem wybrać język, więc zrobiłem następujące

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