我正在研究一个Android项目,我有一个关于关闭问题的问题。我的问题是我想在关闭应用程序之前使用文本到语音。但它只是关闭而不是谈论如何解决这种情况。这是我的代码
if (item.getTitle()== "ExitItem"){
say("Bye Master,May The Force Be With You");
finish();
我相信这很容易,但由于时间已晚,我无法正确思考:DD无论如何都有美好的一天
public void say(String text2say){
talker.speak(text2say, TextToSpeech.QUEUE_FLUSH, null);
}
@Override
public void onInit(int status) {
}
@Override
public void onDestroy() {
if (talker != null) {
talker.stop();
talker.shutdown();
}
答案 0 :(得分:0)
我不确定这是否能完全解决问题并且您只发布了一些代码,但我注意到的第一件事就是您使用==
来比较字符串糟糕的做法。
尝试将其更改为:
if (item.getTitle().equals("ExitItem") {
此外,如果say
方法异步执行,则finish()
可能会在say
方法有机会执行任何操作之前调用并执行。{/ p>
编辑:由于它是异步完成的,因此您需要使用onUtteranceCompleted来捕获文本到语音短语的时间。
TextToSpeech tts = new TextToSpeech(context, new OnInitListener() {
@Override
public void onInit(int status) {
mTts.setOnUtteranceCompletedListener(new OnUtteranceCompletedListener() {
@Override
public void onUtteranceCompleted(String utteranceId) {
runOnUiThread(new Runnable() {
@Override
public void run() {
finish();
}
});
}
});
}
});
答案 1 :(得分:0)
onUtteranceCompleted 和 OnUtteranceProgress 将帮助您跟踪通话进度。相应地放置完成()。