【问题标题】:Text to Speech - Null pointer Exception文本转语音 - 空指针异常
【发布时间】:2012-08-02 21:21:16
【问题描述】:

我创建了一个 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注册帖子。

请帮助我调试问题。

提前非常感谢。

【问题讨论】:

    标签: android exception pointers null text-to-speech


    【解决方案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);
        ...
    }
    

    【讨论】:

    • 是的,你猜对了,tts 是作为一个活动来实现的。谢谢我没有初始化变量。今天会试试。顺便说一句,代码确实在没有初始化的情况下独立工作。
    • 谢谢。现在我现在没有得到异常,但是引擎没有播放任何东西。
    • @user1576339:你读过我链接的教程吗? (我不确定您所说的“代码确实在没有初始化的情况下独立工作”是什么意思——如果您在空引用上调用方法,您得到一个异常......)跨度>
    • 嗨,我从javacodegeeks.com/2010/09/…阅读了教程
    猜你喜欢
    • 1970-01-01
    • 2016-08-01
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    相关资源
    最近更新 更多