相关疑难解决方法(0)

TextToSpeech.setEngineByPackageName()不设置任何内容

继在提示这个答案,我放在一个电话setEngineByPackageNameonActivityResult(),当requestCode == REQ_TTS_STATUS_CHECK && TextToSpeech.Engine.CHECK_VOICE_DATA_PASS:

  tts = new TextToSpeech(this, this);
  tts.setEngineByPackageName("com.ivona.tts.voicebeta.eng.usa.kendra");          
Run Code Online (Sandbox Code Playgroud)

但无论是检查还是取消选中Always use my settings文本到语音设置,我总是得到pico默认引擎!

是的,我故意将微微引擎设置为默认值,以便我可以通过上述提示测试覆盖它.但是那种API方法似乎根本不起作用,或者......我错过了什么?

(我知道setEngineByPackageName已被弃用,因为它在初始化TTS引擎时不通知调用者,但我需要支持API 8,所以此方法是我目前的唯一选择)

android text-to-speech

4
推荐指数
1
解决办法
962
查看次数

TextToSpeech.setEngineByPackageName() 触发 NullPointerException

我的活动onInit()包含对TextToSpeech.setEngineByPackageName()以下内容的调用:

  tts = new TextToSpeech(this, this);
  tts.setEngineByPackageName("com.ivona.tts.voicebeta.eng.usa.kendra");
Run Code Online (Sandbox Code Playgroud)

它适用于 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)
Run Code Online (Sandbox Code Playgroud)

因为我提供了一个硬编码的字符串参数,所以我知道该参数不是导致 NullPointerException 的原因。

我也知道setEngineByPackageName()已被弃用,但这只是从 API 14 开始,所以这不是原因。

知道是什么导致了这个 NullPointerException?

编辑:如果这不会导致无休止的轰炸,我就不会关心“为什么”:

I/TextToSpeech.java(3652): initTts() successfully bound to service
Run Code Online (Sandbox Code Playgroud)

其次是调用onInit()(由系统,而不是我的代码)。

我的希望是,如果我理解为什么会发生这种情况,我可以停止对onInit()s的轰击并从错误中优雅地恢复。

android text-to-speech

3
推荐指数
1
解决办法
1091
查看次数

标签 统计

android ×2

text-to-speech ×2