有时麦克风不会被其他应用程序发布

时间:2017-06-21 23:12:59

标签: android speech-recognition android-lifecycle microphone pocketsphinx

我在android中使用pocketsphinx语音识别器处理个人助理。这是我的应用程序每次听到特殊单词时的工作方式,个人助理会回答并执行任务。我一直在释放麦克风时遇到一些问题。我不知道这是不是一个bug。只有当我关闭应用程序时麦克风仍在寻找该单词并使用文本到语音进行回答时,才会发生这种情况。即使屏幕关闭。当我试图录制视频时,它说麦克风被另一个应用程序使用。所以我必须再次打开我的应用程序并关闭应用程序以释放麦克风。据我所知,释放资源的唯一生命周期是onStop,onPause和onDestroy。它不能是我的手机发生故障我用两个不同的手机测试了应用程序,有时它发生在他们的机器人。任何帮助,将不胜感激。 这是我释放麦克风,相机和文本到语音的方式。提前致谢

private edu.cmu.pocketsphinx.SpeechRecognizer recognizer;



   @Override
            public void onPause() {
                super.onPause();
           if (tts != null) {
              tts.shutdown();
               }
                if (camera != null) {
                    camera.release();
                    camera = null;
                }
                if (recognizer != null) {
                    recognizer.stop();
                    recognizer.cancel();
                    recognizer.shutdown();
                    recognizer = null;
                }

            }

        @Override
            protected void onStop() {
                super.onStop();
           if (tts != null) {
                tts.shutdown();
                 }
                if (camera != null) {
                    camera.release();
                    camera = null;
                }
                if (recognizer != null) {
                    recognizer.cancel();
                    recognizer.shutdown();
                    recognizer = null;
                }
            }
   @Override
    public void onDestroy() {
        super.onDestroy();
        if (tts != null) {
            tts.shutdown();
        }
        if (camera != null) {
            camera.release();
            camera = null;
        }
        if (recognizer != null) {
            recognizer.cancel();
            recognizer.shutdown();
        }

    }

1 个答案:

答案 0 :(得分:1)

尝试覆盖onbackpressed方法并在那里发布记录器停止代码。然后最后加入youractivity.finish; 一旦按下后,这将破坏你的活动并且应该停止录音机