我创建了一个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 发现了这一行。上面没有 log.d 注册的 tts.speak 代码。
请帮助我调试问题。
提前感谢一吨。
您已经演示了声明变量的过程:
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);
...
}