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