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

onUtteranceCompletedOnUtteranceProgressは、通話の進行状況を追跡するのに役立ちます。それに応じて finish() を配置します。

于 2012-11-24T01:55:51.523 に答える
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 に答える