活动开始时播放TextToSpeech

问题描述 投票:0回答:1

我希望我的应用程序在活动开始时说一句“你好,如果您的情况是紧急电话911”,但我不能这样做。

我使用了以下代码:

public class home extends AppCompatActivity  implements TextToSpeech.OnInitListener {
    Button Signin , listButton,Speak;
    EditText Text;
    Button mSpeak;
    private TextToSpeech mTTS;
    protected static final int RESULT_SPEECH = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

      //  TTS 
        mTTS = new TextToSpeech(this, this);
        mSpeak =  (Button) findViewById(R.id.mSpeak);
        mSpeak.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                speak("Hello, If Your Case Is Emergency CALL 911 , IF not Continue");
            }
        });

        speak("Hello, If Your Case Is Emergency CALL 911 , IF not Continue");
    }


    public void speak(String str) {
          mTTS.speak(str, TextToSpeech.QUEUE_FLUSH, null);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mTTS.shutdown();
    }

    @Override
    public void onInit(int status) {
        if (status == TextToSpeech.SUCCESS) {
            int result = mTTS.setLanguage(Locale.UK);
            mTTS.setPitch(0.8f);
            mTTS.setSpeechRate(1.1f);

            if (result == TextToSpeech.LANG_MISSING_DATA
                    || result == TextToSpeech.LANG_NOT_SUPPORTED) {
                Log.e("TTS", "Language not supported");
            } else {
                mSpeak.setEnabled(true);
            }
        } else {
            Log.e("TTS", "Initialization failed");
        }
    }
}

在先前的代码中,speak(str)方法用于运行TTS,并让设计者开始讲话。但是,当我按下TextToSpeech按钮时尝试运行mSpeak时,它可以正常工作。 但是,在onCreate上运行时不起作用。

我希望活动开始时应该播放TextToSpeech。任何人都可以指导我正确的方法,因为它不起作用。 TextToSpeech仅在按下按钮时起作用。

android text-to-speech
1个回答
0
投票

那是因为TTS初始化了一段时间,非常快,但是您仍然无法创建new TextToSpeech,并且在调用mTTS.speak之后几乎几乎没有几行

您必须等待status == TextToSpeech.SUCCESS,因此您应该将“欢迎”讲话方法调用移至此处)>

@Override
public void onInit(int status) {
    if (status == TextToSpeech.SUCCESS) {
        int result = mTTS.setLanguage(Locale.UK);
        mTTS.setPitch(0.8f);
        mTTS.setSpeechRate(1.1f);

        if (result == TextToSpeech.LANG_MISSING_DATA
                || result == TextToSpeech.LANG_NOT_SUPPORTED) {
            Log.e("TTS", "Language not supported");
        } else {
            mSpeak.setEnabled(true);
        }
    } else {
        Log.e("TTS", "Initialization failed");
        speak("Hello, If Your Case Is Emergency CALL 911 , IF not Continue");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.