呼叫需要API级别21(当前为14)

时间:2017-07-21 00:34:41

标签: android android-studio

Android Studio有点新鲜。尝试设置一个基本的TTS应用程序,并在此行中得到上述错误:

t1.speak(toSpeak,TextToSpeech.QUEUE_FLUSH,null,null);

正如我所说的,我对Android Studio有些陌生,因此我不确定人们需要查看哪些其他文件才能解决此问题,所以请告诉我,如果我提供更多信息,请提供更多信息。需要的。

1 个答案:

答案 0 :(得分:1)

试试这个。

用t1替换tts,用toSpeak替换文本,它应该适用于21以上和以下的API。

public void speak(String text) {
    if (tts != null) {

        if (tts.isSpeaking()) {
            tts.stop();
        }

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            ttsGreater21(text);
        } else {
            ttsUnder20(text);
        }

    }
}

@SuppressWarnings("deprecation")
private void ttsUnder20(String text) {
    HashMap<String, String> map = new HashMap<>();
    map.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "MessageId");
    tts.speak(text, TextToSpeech.QUEUE_FLUSH, map);
}

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void ttsGreater21(String text) {
    String utteranceId = this.hashCode() + "";

    tts.speak(text, TextToSpeech.QUEUE_FLUSH, null, utteranceId);
}