- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试在 tts 上放置一个 onUtteranceProgressListener。我已经浏览了 stackoverflow 上的其他相关问题并关注了它们。但即使通过 Hashmap 或 Bundle 传递话语 id 字符串(因为 Hashmap 在 api21 后已弃用),utteranceProgressListener 也不会被调用。我用 toast 来验证,但没有 toast 输出。我正在获取音频输出,但无法让 ProgressListener 对其进行处理。
@Override
public void onInit(int initStatus) {
if (initStatus == TextToSpeech.SUCCESS) {
myTTS.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override
public void onStart(String utteranceId) {
Toast.makeText(InvisibleActivity.this,"listener Started",Toast.LENGTH_SHORT).show();
}
@Override
public void onDone(String utteranceId) {
if (utteranceId.equals("utteranceId")) {
myTTS.stop();
Toast.makeText(InvisibleActivity.this,"mytts stopped",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onError(String utteranceId) {
}
});
myTTS.setLanguage(Locale.US);
} else if (initStatus == TextToSpeech.ERROR) {
Toast.makeText(this, "Sorry,Text To speech not supported", Toast.LENGTH_SHORT).show();
}
Bundle bundle = new Bundle();
bundle.putString(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,"utteranceId");
myTTS.speak(outText, TextToSpeech.QUEUE_FLUSH, bundle,null);
chan();
}
我使用过的 HashMap 代码(已弃用的 talk())是:
HashMap<String,String> params = new HashMap<>();
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,"utteranceId");
myTTS.speak(outText,TextToSpeech.QUEUE_FLUSH, params);
我尝试了 QUEUE_ADD
和 QUEUE_FLUSH
,但结果是相同的。
最佳答案
这是因为它在另一个线程上工作。您需要使用 runOnUiThread 才能使其工作:
tts.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override
public void onStart(String s) {
final String keyword = s;
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Started " + keyword, Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onDone(String s) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Done ", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onError(String s) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Error ", Toast.LENGTH_SHORT).show();
}
});
}
});
确保在 speak
方法之前调用此方法。
关于java - 即使传递 hashmap 字符串后也不会调用 UtteranceProgressListener(在标记为重复之前读取),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43499938/
我正在尝试制作一个语音驱动的应用程序,但是我遇到了一个主要问题。 无论我将 Speak 方法放在哪里,我的 UtteranceProgressListener 类都不会调用任何给定的方法。 这是我的代
我有一个带有两个 ImageButton(播放、停止)的 FrameLayout。默认情况下 播放 按钮是VISIBLE,停止 按钮是GONE 单击播放 会启动读取文本的 TTS 引擎。阅读完文本后,
我正在编写一个 Android 应用程序来从文件夹中获取最新的电子邮件并使用 TTS 播放。我希望能够在开车时使用它,所以它必须大部分是自动的。到目前为止一切正常,直到我 try catch Text
当我调用其类的 speak 函数时,调用了 UtteranceProgressListener 但未调用监听器的方法,即 onStart()、onDone() 和 onError()。 最终,我们想要
我不想把我所有的代码都放在这里,所以我只是放了相关的部分。如果您需要更多,请随时询问。 我正在使用文本转语音 (TTS),它在提出问题后会导致语音监听器...我通过日志输出发现 TTS 的 onIni
我正在使用 Android 的 TTS 功能,TextToSpeech 类有这个方法来设置一个监听器,一旦 TextToSpeech 完成播放就会得到通知: public int setOnUtter
我在 TextToSpeech 实例上设置了一个 UtteranceProgressListener。它被调用并且运行良好,但是当用户使用 Talkback 时,它可能会中断我的语音请求并且我的 Ut
我正在尝试使用 Android 的 TTS 功能,TextToSpeech 类有这个方法来设置一个监听器,一旦 TextToSpeech 播放完毕,该监听器就会收到通知: public int set
我正在制作一个应用程序,每次触发 broadcastreceiver 时都使用 tts 合成 wav 文件。我正在使用 AndroidStudio(最新)并在 15 分钟内使用 API 级别 19。
我正在尝试在 tts 上放置一个 onUtteranceProgressListener。我已经浏览了 stackoverflow 上的其他相关问题并关注了它们。但即使通过 Hashmap 或 Bun
我的代码: import java.math.BigInteger; import java.security.SecureRandom; import java.util.HashMap; impo
我想知道为什么我的 UtteranceProgressListener 没有被调用。这是我尝试这样做的方式 private UtteranceProgressListener progressLis
自 2 天以来,我一直在尝试让 UtteranceProgressListener 工作。我一直在尝试 Stackoverflow 和其他一些网站上的很多代码 - 对我来说没有任何效果。这是我当前的代
我是一名优秀的程序员,十分优秀!