我创建了一个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注册。
请帮我调试问题。
提前感谢。
答案 0 :(得分:1)
您已经显示声明变量:
private TextToSpeech tts;
...你已经使用变量显示了:
tts.speak(s, TextToSpeech.QUEUE_FLUSH, null);
...但你有没有初始化变量?如果您没有为其赋值,则它将始终具有默认值null
。从this tutorial判断你需要这样的东西(我假设你的代码在Activity
中):
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
tts = new TextToSpeech(this, this);
...
}