0

您好,使用文本转语音。

我的目标是 API 16,因此我启动了此意图以在设备上启动 TTS 设置

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 实例并重新制作它,但问题的根源是我如何知道设置是否实际更改

谢谢阅读

4

1 回答 1

0

提供了一个不是很好但它似乎可以工作的解决方案,因为它遵守了这些变化

请注意我没有引入进度对话框并等到调用 onInit 但这里是逻辑

所以在这里我启动我的文本到语音设置意图并将标志设置为 true

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

然后在简历

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

请注意,destroy 这样做是因为我的 TTS 内容位于帮助程序类中

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

不好的是,用户可以进入设置,但不能更改任何会在旧实例被破坏和无生产性理由的情况下制作的新实例

于 2015-09-25T11:31:47.220 回答