gpt4 book ai didi

android - UtteranceProgressListener 未在 21 以上的 api 级别中被调用

转载 作者:行者123 更新时间:2023-11-30 00:05:23 24 4
gpt4 key购买 nike

我想知道为什么我的 UtteranceProgressListener 没有被调用。这是我尝试这样做的方式

 private UtteranceProgressListener progressListener=new UtteranceProgressListener() {
@Override
public void onStart(String utteranceId) {
Log.d("modroid", "speech started");

}

@Override
public void onDone(String utteranceId) {
Log.d("modroid", "done");
}

@Override
public void onError(String utteranceId) {
Log.d("modroid", "error");

}
};

private void prepareTxtToSpeech() {
textToSpeech = new TextToSpeech(context, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
if (textToSpeech.isLanguageAvailable(Locale.US) == TextToSpeech.LANG_AVAILABLE) {
textToSpeech.setLanguage(Locale.ENGLISH);
textToSpeech.setSpeechRate(0.8f);
textToSpeech.setOnUtteranceProgressListener(progressListener);
}
} else if (status == TextToSpeech.ERROR) {
Toast.makeText(context, context.getString(R.string.txttospeech_error), Toast.LENGTH_LONG).show();
}
}
});
}

这里是我调用speaking方法的方式

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

Log.d("modroid", "speaking: ");
textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, null, "some id");
}
}

我知道以前有人问过这类问题,但没有任何帮助。请让我知道我哪里做错了。

最佳答案

如果一种语言可用以及它是否设置正确,您必须小心如何“验证”:

    switch (textToSpeech.isLanguageAvailable(Locale.US)){

case TextToSpeech.LANG_AVAILABLE:
break;
case TextToSpeech.LANG_COUNTRY_AVAILABLE:
break;
case TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE:
break;
case TextToSpeech.LANG_MISSING_DATA:
break;
case TextToSpeech.LANG_NOT_SUPPORTED:
break;
}

您还应该以同样的方式检查 textToSpeech.setLanguage(Locale.ENGLISH) 的响应。

您可能会接受前三名之一。否则,您将需要处理该问题。

setLanguage()

isLanguageAvailable()

关于android - UtteranceProgressListener 未在 21 以上的 api 级别中被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49123564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com