1

我正在开发一个 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();
}                   
4

2 回答 2

0

我不确定这是否会完全解决问题,并且您只发布了一些代码,但我注意到的第一件事是您正在使用==比较字符串,这是一种不好的做法。

尝试将其更改为:

if (item.getTitle().equals("ExitItem") {

此外,如果该say方法是异步执行的,那么finish()可能会在该say方法有机会做任何事情之前被调用和执行。

编辑:由于它是异步完成的,因此您将需要使用 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();
                }
            });
        }
    });

 }
});
于 2012-11-24T01:14:52.257 回答
0

onUtteranceCompletedOnUtteranceProgress将帮助您跟踪通话进度。相应地放置finish()。

于 2012-11-24T01:55:51.523 回答