您好,正在使用文字对话。
我的目标是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实例并重新制作它,但问题的根源是我如何知道设置是否实际更改
感谢您阅读
答案 0 :(得分: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();
}
}
不好的是,用户可以进入设置但不会更改旧实例中被破坏的任何内容以及因没有生产原因而生成的新内容