2015-09-25 82 views
0

您好使用文本到語音。Android:用於更改文本到語音設置的監聽器

我指定的API 16,所以我推出這個意圖設備

public Intent launchTTSSettings(){ 
     Intent TTSSettings = new Intent(); 
     TTSSettings.setAction("com.android.settings.TTS_SETTINGS"); 
     TTSSettings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     return TTSSettings; 
    } 

我的應用程序去背景上啓動TTS設置。

我改變一些TTS設置

我的應用程序回來到前臺,我發現我的應用程序仍然使用舊的TTS設置,除非我再次關閉並重新打開應用程序。

我想方式來聽任何更改TTS設置可能是廣播接收器,但我找不到任何相關的東西。

那麼有沒有什麼辦法可以對TTS設置中的變化作出適當的迴應?

我想我可以毀了我的TTS實例,並重新做它,但問題的根源在於我怎麼知道,如果設置實際上是改變

感謝您閱讀

+0

添加了答案。請查閱。 –

回答

0

想出了一個解決方案這是不是真的很大,但它似乎工作,因爲它恪守的變化

請注意,我還沒有出臺一個進度對話框,然後等待的OnInit調用,但這裏的邏輯

所以我在這裏發佈我的文字言語設置意圖和設置一個標誌,真正

startActivity(mTextToSpeechHelper.launchTTSSettings()); 
mTTSSettingsHasChanged = true; 

然後在簡歷

 @Override 
     protected void onResume() { 
      super.onResume(); 
      if(mTTSSettingsHasChanged){ 
      mTTSSettingsHasChanged = false; 
      mTextToSpeechHelper.destroy(); 
      mTextToSpeechHelper = null; 
      mTextToSpeechHelper = new TextToSpeechHelper(); 
      } 
     } 

注意,摧毀這樣做,因爲我的TTS的東西是一個輔助類

public void destroy(){ 
     if(mTextToSpeech != null){ 
      mTextToSpeech.stop(); 
      mTextToSpeech.shutdown(); 
     } 
    } 

什麼是不好的是,用戶可以進入設置,但不會改變任何在舊的情況下會被破壞的東西,並且不會因爲沒有生產原因而造成新的東西