Android-Google API语音识别-线程第二次执行失败

问题描述

我正根据此示例尝试为Android编写语音助手:

https://github.com/GoogleCloudPlatform/android-docs-samples/blob/master/speech/Speech/app/src/main/java/com/google/cloud/android/speech/VoiceRecorder.java

我不时需要关闭语音识别以播放一些音频文件(因为我不希望它们被捕获)。第一轮一切正常,但是当我第二次尝试启动语音识别时,出现以下错误

W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'void java.lang.ThreadGroup.addUnstarted()' on a null object reference
        at java.lang.Thread.init(Thread.java:411)
        at java.lang.Thread.<init>(Thread.java:469)
        at com.vivai.de.vivaivoice.tools.tools.continuous.speechRecognition.AudioRecorder.start(AudioRecorder.java:96)
        at com.vivai.de.vivaivoice.tools.tools.continuous.AudioServiceManager.recordAudio(AudioServiceManager.java:174)
        at com.vivai.de.vivaivoice.tools.tools.continuous.AudioServiceManager.run(AudioServiceManager.java:123)
        at java.lang.Thread.run(Thread.java:776)

以下几行会产生错误调用new Thread()时将引发该事件。

public void start() {
        // Stop recording if it is currently ongoing.
        stop();
        // Try to create a new recording session.
        mAudioRecord = createAudioRecord();
        if (mAudioRecord == null) {
            throw new RuntimeException("Cannot instantiate VoiceRecorder");
        }
        // Start recording.
        mAudioRecord.startRecording();
        // Start processing the captured audio.
        ProcessVoice processVoice = new ProcessVoice();
        mThread = new Thread(processVoice);
        mThread.start();
        Log.i(TAG,"started");
    }

我认为引发了错误,因为它不想执行相同的Thread / Runnable两次,但是我创建了一个新的Hole对象,因此应该不成问题?我已经尝试编写一个包装类,从该包装类创建一个新对象,但这也没有帮助。 是否有人知道如何处理该问题或如何绕过? 预先感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...