1

我正在使用android中使用pocketsphinx语音识别器的个人助理。这是我的应用程序每次听到特殊字词时的个人助理会回复并执行任务的方式。麦克风的释放我一直有一些问题。我不知道它是否是一个错误。它仅在我关闭应用程序时才会发生,麦克风仍然在查找该单词并使用文本到语音进行回答。即使屏幕关闭。当我试图录制视频时,表示麦克风被其他应用程序使用。所以我必须再次打开我的应用程序并关闭应用程序以释放麦克风。据我所知,释放资源的唯一生命周期是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(); 
     } 

    } 
+0

停止onPause后取消可能不是一个好主意,尝试只使用取消。 –

回答

1

尝试覆盖onbackpressed方法和后ur记录器停止代码那里。然后最后加入youractivity.finish; 一旦按下后,这应该会消除你的活动,并应该停止记录器

+0

我现在就试试。我会测试它并让你知道。还有什么办法可以像homeback按下homebutton按?谢谢 – sptBot

+0

尝试onUserLeaveHint()这将需要以任何方式中断应用程序的实例,例如参加通话,按下按钮按钮等。 –

+0

我已经实现了onBackPressed方法。我将不得不在一段时间内测试onbackpressed。就像我说过的,有时候只会发生。我试图找出麦克风未被释放的地方。我认为onStop,onPause和onDestroy足以释放其他应用程序的资源。 onUserLeaveHint()它也将处理onBackpressed基于[链接](https://stackoverflow.com/questions/6612058/android-onbackpressed-onuserleavehint)@AndyW回答? – sptBot