java - 如何在我的应用程序中实现 Google 语音输入?

标签 java android

我正在尝试在我的应用程序中添加一个启动 Google 语音输入(或默认语音识别)的按钮。我试过关注 this tutorial .本教程令我非常困惑。我导入了 .jar,并将必要的权限、服务和 Activity 添加到我的 list 中。但我似乎无法弄清楚如何“把它们放在一起”。我想知道:

  1. 我是否应该通过单击主 Activity 中的按钮来调用 inputMethodService?还是我的 inputMethodService 本质上变成了我的主 Activity ?
  2. 输入法是什么意思?我试着用谷歌搜索它,但它给我的定义对我的理解没有帮助。
  3. 当我尝试将整个 DemoInputMethodService 代码复制并粘贴到我当前的 Activity 中时,我收到一条错误消息,提示我无法在此 Activity 中扩展 InputMethodService。 (这导致回到问题一。)

我怎样才能让它发挥作用?

最佳答案

如果您想按照您提到的教程进行操作,那么您需要先实现一个 IME(输入法编辑器),请参阅 http://developer.android.com/guide/topics/text/creating-input-method.html

此 IME 可以具有常规的键盘外观或仅包含一个麦克风按钮。

您的应用程序的用户首先必须单击文本字段才能启动 IME。 (请注意,设备上可以安装多个 IME,并且必须在“设置”中明确启用它们。)然后用户必须单击麦克风按钮以触发语音识别。

本教程提供了一个 jar,可以让您直接调用 Google 的识别器。如果改为通过 SpeechRecognizer 接口(interface) ( http://developer.android.com/reference/android/speech/SpeechRecognizer.html ) 调用识别器会更好,这样用户可以决定是使用 Google 的还是其他的。

SpeechRecognizer 被赋予一个支持方法 onPartialResults 的监听器,它允许您在用户说话时监控识别假设。这取决于您如何显示它们。但是请注意,SpeechRecognizer 的规范并不保证会调用此方法。这取决于识别器服务的实现。关于 Google 的实现:它支持的内容不断变化,没有宣布,它没有公共(public) API,甚至没有发行说明。

您可以重用我的项目 Kõnele ( http://kaljurand.github.io/K6nele/about/ ),它包含 SpeechRecognizer 的两个实现和一个使用它们的 IME。其中一个实现使用 Kaldi GStreamer 服务器 (https://github.com/alumae/kaldi-gstreamer-server) 提供对任意长音频输入的连续识别。您需要设置自己的服务器实例,将其移植到您想要识别的语言(除非您想使用 Kõnele 默认使用的爱沙尼亚服务器)。

关于java - 如何在我的应用程序中实现 Google 语音输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28413692/

相关文章:

javax.validation ORDER of failures-entries 作为验证方法的结果

java - 为什么实体名称必须紧跟在为 XML 出现的实体引用中的 '&' 之后?

java - 在 Spring 过滤器中解决多部分/表单数据请求

java - 无法从 Jython 模块导入 Java 类

java - JSF 和 xhtml 文件的自动重新加载

java - Android同时加分

android - java.lang.ClassCastException : android. graphics.drawable.LayerDrawable 无法转换为 android.graphics.drawable.GradientDrawable

java - CalenderView 不存在 - 试图实现 DatePickerDialog

android - 无法在手机上滚动我的网页

java - Android/Java 中的 OOP