1

我创建了一个 TTS 模块。它在独立的基础上完美地工作,但是当我尝试将它作为我的项目的一个类来实现时,它行为不端并引发空指针异常。

我计划实现的目标:

1) 从 /res/raw 文件夹中读取一个文本文件。2) 通过 TTS 将文本文件转换为语音。字符串 s 通过 BufferReader 类捕获了整个文件。

我用于 TTS 的代码是 -

private TextToSpeech tts;
tts.speak(s, TextToSpeech.QUEUE_FLUSH, null);
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
    startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);

错误出现在 tts.speak..... 行。我通过在整个代码中添加 log.d 发现了这一行。上面的 tts.speak 代码没有 log.d 注册帖子。

请帮助我调试问题。

提前致谢。

4

1 回答 1

1

您已经展示了声明变量:

private TextToSpeech tts;

...并且您已经使用变量显示:

tts.speak(s, TextToSpeech.QUEUE_FLUSH, null);

...但你有没有初始化变量?如果您不为其分配值,它将始终具有默认值null. 从本教程来看,您需要这样的东西(我假设您的代码位于 中Activity):

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    tts = new TextToSpeech(this, this);
    ...
}
于 2012-08-05T19:08:12.090 回答