Моя активность onInit()
содержит вызов TextToSpeech.setEngineByPackageName()
:
tts = new TextToSpeech(this, this);
tts.setEngineByPackageName("com.ivona.tts.voicebeta.eng.usa.kendra");
Он работает на устройстве Android 2.2.2, но на устройстве Android 2.3.4 он генерирует исключение NullPointerException со следующей трассировкой стека:
E/TextToSpeech.java - setEngineByPackageName(3423): NullPointerException
W/System.err(3423): java.lang.NullPointerException
W/System.err(3423): at android.os.Parcel.readException(Parcel.java:1328)
W/System.err(3423): at android.os.Parcel.readException(Parcel.java:1276)
W/System.err(3423): at android.speech.tts.ITts$Stub$Proxy.setEngineByPackageName(ITts.java:654)
W/System.err(3423): at android.speech.tts.TextToSpeech.setEngineByPackageName(TextToSpeech.java:1356)
Поскольку я предоставляю жестко запрограммированный строковый параметр, я знаю, что этот параметр не является причиной того, что вызывает исключение NullPointerException.
Я также знаю, что setEngineByPackageName () устарела, но это только после API 14, так что это не может быть причиной.
Есть идеи, что может вызвать это исключение NullPointerException?
РЕДАКТИРОВАТЬ : Меня не волновало бы «почему», если бы это не привело к бесконечной бомбардировке:
I/TextToSpeech.java(3652): initTts() successfully bound to service
Далее следуют звонки на onInit()
(системой, а не моим кодом).
Я надеюсь, что если я пойму, почему это происходит, я могу остановить бомбардировку onInit()
с и изящно восстановиться после ошибки.