2015-09-25 68 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(); 
     } 
    } 

什么是不好的是,用户可以进入设置,但不会改变任何在旧的情况下会被破坏的东西,并且不会因为没有生产原因而造成新的东西