java - 如何使 RecognizerIntent.EXTRA_PROMPT 消息粘在那里?
问题描述
我正在制作一个在 Android 中使用SpeechRecognizer
and的应用程序。RecognizerIntent
这个应用程序应该工作的方式是:用户在屏幕上看到一些文本,用户必须将这些字符串/文本大声读入手机的麦克风(这SpeechRecognizer
就是使用的方式。)语音识别工作完美!我的问题是通过意图发送的提示消息:
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "the quick brown fox jumps over the lazy dog");
dialog box
此提示消息在弹出时会显示在 google 的语音识别器中。
问题:一旦用户开始说话,上面的prompt
消息就会消失,并被用户自己的话(用户对着麦克风说的内容)替换为正在录制的内容。但是由于文本
(初始提示消息)已经消失,用户不知道该读什么/说什么了!
这背后的想法是我希望用户能够阅读屏幕上的文本,并同时对着麦克风说话(他正在阅读的内容)。
有什么办法可以让语音识别启动时对话框内的提示信息不消失?
这是简单的代码:
public void startSpeechRecognizer(){
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "the quick brown fox jumps over the lazy dog\n");
startActivityForResult(intent, SPEECH_RECOGNITION_REQUEST);
}
我已经浏览了文档,但找不到任何关于此的内容。有什么方法可以实现这一点,或者有什么解决方法吗?
解决方案
我进行了很多搜索,并意识到默认的 SpeechRecognizer 对话框(开始录制时弹出的对话框)无法赋予任何特殊的 UI 属性。
要实现不同的 UI,必须通过定义自定义视图来制作自定义对话框,可能扩展相同的 SpeechRecognizer 类以具有在语音记录弹出中显示文本或图像等功能。
因此,我要结束这个问题。
推荐阅读
- javascript - 为使用 Hls.js 管理的 HLS 视频构建音量计
- excel - 如何在不删除原始表格中的公式的情况下将带有公式的表格中的数据复制到另一张表格中?
- python - Django objects.get():精确查找的 QuerySet 值必须限制为使用切片的一个结果
- java - 如何使用 springdoc-openapi-maven-plugin 和 swagger-codegen-maven-plugin 生成客户端代码?
- c# - 为什么在异步数据库层操作中使用 ConfigureAwait(false)?
- android - Google Play 游戏服务应用程序登录卡在白屏上
- python - 将反斜杠单引号 \' 转换为 JSON 的反斜杠双引号 \"
- c# - 将 setter 限制为静态值列表
- python - 使用正则表达式拆分列
- typescript - 条件类型无法识别所有输入都会产生相同的条件结果