TextToSpeech stop() 不起作用

Gho*_*t46 5 java android text-to-speech

TextToSpeech当按下后退按钮时,我正试图停止。但即使我关闭我的应用程序,讲话也不会停止。仅当我清除缓存时,语音才会停止。我该如何解决这个问题?请帮助我理解。

\n\n
private boolean mShouldSpeak = true;\nTextToSpeech tts;\n @Override\nprotected void onCreate(Bundle savedInstanceState) {\n    super.onCreate(savedInstanceState);\n    setContentView(R.layout.activity_cat);\n\n    tts = new TextToSpeech(this, new TextToSpeech.OnInitListener() {\n        @Override\n        public void onInit(int status) {\n            if (status == TextToSpeech.SUCCESS) {\n                tts.setEngineByPackageName(enginePackageName);\n                tts.setLanguage(Locale.getDefault());\n                tts.setPitch(0);\n                tts.setSpeechRate(1);\n               speak();\n            }\n        }\n    });\n}\n private void speak() {\n\n    if (mShouldSpeak == true)\n    {\n        tts.speak("\xd0\x90\xd0\xb2\xd1\x82\xd0\xbe\xd1\x80: " +getResources().getString(R.string.catAuthor), TextToSpeech.QUEUE_ADD, null);\n        tts.playSilence(1000, TextToSpeech.QUEUE_ADD, null);\n        tts.speak(getResources().getString(R.string.catName), TextToSpeech.QUEUE_ADD, null);\n        tts.playSilence(1000, TextToSpeech.QUEUE_ADD, null);\n        tts.speak(getResources().getString(R.string.catDesc), TextToSpeech.QUEUE_ADD, null);\n        tts.playSilence(1000, TextToSpeech.QUEUE_ADD, null);\n    }\n\n}\n @Override\nprotected void onDestroy() {\n    if (tts != null)\n    {\n        tts.stop();\n        tts.shutdown();\n    }\n    super.onDestroy();\n}\npublic void onBackPressed() {\n\n    onDestroy();\n    super.onBackPressed();\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n

bra*_*all 1

除了评论之外,您还需要确保:

tts.setEngineByPackageName(enginePackageName)

包含设备上安装的文本转语音引擎的有效包名称,例如com.google.android.ttscom.svox.pico

要检查有关已安装引擎的信息,请在此处查看我的答案

不应用此参数将绑定在“文本转语音设置”中选择为设备默认值的引擎。