如何在 Android 手机中使用语音识别而不出现烦人的对话框

2023-12-29

不修改android API 可以实现吗? 我找到了一篇关于此的文章。 有人评论说我应该对 android API 进行修改。 但没有说如何修改。 有人可以给我一些关于如何做到这一点的建议吗? 谢谢!


我找到了这篇文章;语音识别器 https://stackoverflow.com/questions/4559930/speechrecognizer-causes-anr-i-need-help-with-android-speech-api他的需求和我几乎一样。 对我来说是一个很好的参考!


我已经完全解决了这个问题。
我用谷歌搜索了可用的示例代码来自这个中国网站 http://blog.sina.com.cn/s/blog_6f8d8d8e0100t7t7.html这是我的源代码

package voice.recognition.test;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.speech.RecognitionListener;
import android.speech.RecognizerIntent;
import android.speech.SpeechRecognizer;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
import android.util.Log;



public class voiceRecognitionTest extends Activity implements OnClickListener 
{

   private TextView mText;
   private SpeechRecognizer sr;
   private static final String TAG = "MyStt3Activity";
   @Override
   public void onCreate(Bundle savedInstanceState) 
   {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            Button speakButton = (Button) findViewById(R.id.btn_speak);     
            mText = (TextView) findViewById(R.id.textView1);     
            speakButton.setOnClickListener(this);
            sr = SpeechRecognizer.createSpeechRecognizer(this);       
            sr.setRecognitionListener(new listener());        
   }

   class listener implements RecognitionListener          
   {
            public void onReadyForSpeech(Bundle params)
            {
                     Log.d(TAG, "onReadyForSpeech");
            }
            public void onBeginningOfSpeech()
            {
                     Log.d(TAG, "onBeginningOfSpeech");
            }
            public void onRmsChanged(float rmsdB)
            {
                     Log.d(TAG, "onRmsChanged");
            }
            public void onBufferReceived(byte[] buffer)
            {
                     Log.d(TAG, "onBufferReceived");
            }
            public void onEndOfSpeech()
            {
                     Log.d(TAG, "onEndofSpeech");
            }
            public void onError(int error)
            {
                     Log.d(TAG,  "error " +  error);
                     mText.setText("error " + error);
            }
            public void onResults(Bundle results)                   
            {
                     String str = new String();
                     Log.d(TAG, "onResults " + results);
                     ArrayList data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
                     for (int i = 0; i < data.size(); i++)
                     {
                               Log.d(TAG, "result " + data.get(i));
                               str += data.get(i);
                     }
                     mText.setText("results: "+String.valueOf(data.size()));        
            }
            public void onPartialResults(Bundle partialResults)
            {
                     Log.d(TAG, "onPartialResults");
            }
            public void onEvent(int eventType, Bundle params)
            {
                     Log.d(TAG, "onEvent " + eventType);
            }
   }
   public void onClick(View v) {
            if (v.getId() == R.id.btn_speak) 
            {
                Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);        
                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
                intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"voice.recognition.test");

                intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,5); 
                     sr.startListening(intent);
                     Log.i("111111","11111111");
            }
   }
}

调试完后一定要删除烦人的Logs!


Use the 语音识别器 http://developer.android.com/reference/android/speech/SpeechRecognizer.html界面。您的应用程序需要具有 RECORD_AUDIO 权限,然后您可以创建一个 SpeechRecognizer,给它一个识别监听器 http://developer.android.com/reference/android/speech/RecognitionListener.html然后调用它的startListening方法。当语音识别器准备好开始侦听语音以及接收语音并将其转换为文本时,您将收到对侦听器的回调。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Android 手机中使用语音识别而不出现烦人的对话框 的相关文章

随机推荐

  • 在开发模式之外调试 GWT 应用程序?

    我似乎记得在截屏视频中看到有人将 Java 调试器附加到已编译 部署的 GWT 应用程序 这可能吗 我发现一些关于配置一个特殊的 调试模块 来扩展常规模块的稀疏提及 但细节很少 Thanks 您可以使用开发模式来调试已部署的应用程序 但您将
  • Ipython 笔记本:导入脚本函数的名称错误

    我有两个脚本sources py and nest py 他们是这样的 来源 py import numpy as np from nest import def make source rest of the code def detec
  • 如何使当前片段保持在屏幕旋转上

    我试图在一项活动中使用 3 个片段 其中一个片段被设置为默认片段onCreate 方法和其他片段正在通过某些操作进行调用 因此当我旋转屏幕时onCreate 方法再次调用 我当前的片段丢失 默认片段再次开始 但我必须在onCreate 方法
  • 写入csv文件 - python 3.7

    在此输入图像描述 https i stack imgur com xu0F8 png在此输入图像描述 https i stack imgur com uxN1W png在此输入图像描述 https i stack imgur com 0r0
  • 日期减去秒总是返回相同的[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 echo date Y m d H m s strtotime 15 minutes ago br echo date Y m d
  • 在 Qt 中显示解码视频帧的最有效方法是什么?

    将图像显示到 Qt 小部件的最快方法是什么 我已经使用 libavformat 和 libavcodec 解码了视频 因此我已经有了原始 RGB 或 YCbCr 4 2 0 帧 我目前正在使用 QGraphicsView 和包含 QGrap
  • 如何在单击时将 href 设置为复选框?

    1 如何在单击时将 href 设置为复选框 a href Demo sense show 4 a
  • 使用 post-receive 挂钩创建 zip

    我已经玩 Hooks有一段时间了 但我似乎无法理解post receivehook 以我需要的方式工作 我正在尝试获取post receive在我将更改推送到存储库后 创建一个 zip 文件夹并将其放置在 git 存储库文件夹之外的某个位置
  • 在 emacs 中定义键绑定

    我想将 emacs 中的命令映射到键绑定 我想要命令Control l与命令具有相同的效果Alt x goto line随后是一个返回 因为该命令首先需要调用一个返回 然后是一个行号 我修改了init文件如下 define key M x
  • Xamarin Forms、Sqlite、EF Core 3、迁移和许多混乱

    我有一个 Xamarin Forms 应用程序 我已从仅使用 Restful API 切换为使用本地 SQLite DB 它将使用此进行同步Dotmim Sync 数据库同步框架 https mimetis github io Dotmim
  • 原子基团和非捕获基团有什么区别?

    什么是原子团 gt expr 以及它的用途是什么 在https www regular expressions info atomic html https www regular expressions info atomic html
  • 如何在 JavaScript 中迭代数组并删除元素[重复]

    这个问题在这里已经有答案了 我有一个元素数组 需要从中删除某些元素 问题是 JavaScript 似乎没有 foreach 循环 如果我使用 for 循环 我会遇到问题 它基本上试图检查超出数组边界的元素 或者由于索引更改而丢失数组中的元素
  • Python 将对象列表序列化为 JSON [重复]

    这个问题在这里已经有答案了 我正在尝试序列化为 JSON dict 一个对象的实例 工作正常 直到我将对象附加到第一个对象的实例属性之一 from json import dumps class A object def init self
  • 将 Spring Boot 应用程序部署到 Elastic Beanstalk 时出现 502 Bad Gateway

    免责声明 我知道对此有很多问题 我已经查看了它们并应用了答案 但它仍然不起作用 我使用 jar 不是 war 文件将 Spring Boot 应用程序部署到 Elastic Beanstalk 我正在使用Java 1 8 我将 applic
  • yii2 - 模型加载函数未设置某些模型属性

    我正在开发 PHP Yii2 应用程序 我在 yii2 上遇到了一个奇怪的问题yii base Model load功能 这是我的问题 我有一个名为的表单模型PaymentIncreaseBalanceForm像下面这样 class Pay
  • 如何获得 Elm 风格

    我从 Elm 开始 当你想设置样式时 你可以简单地将它嵌入到你的组件中 Html Attribute style List String String 但我找不到办法get样式而不是设置 其实我需要的是line height特定的 CSS
  • Vue SSR 将 Express 服务器与 vue 应用程序捆绑在一起,以便可以从复制到主机服务器的 build dist 文件夹运行该应用程序

    我创建了一个 Vue SSR 应用程序 我读过的所有说明 wiki 博客仅告诉您如何在开发环境中运行该应用程序 他们不会告诉您如何在生产环境中运行应用程序 我之前在 React SSR 应用程序中编写过相同的应用程序 在该应用程序中 构建会
  • 使用 OpenAL 在 iOS 上离线录音

    我正在使用 openAL 以特定的时间间隔播放声音样本 我想将其导出到文件 无论是 caf 或 aac 或其他文件 如何使用 OpenAL 做到这一点 而不需要通过扬声器 耳机实时播放我的样本 如果您正在谈论将乐谱导出为完整的音频片段 Op
  • 如何在 ajax 调用完成之前阻止页面导航

    因此 我有一个 ajax 调用来获取几十个大小为几兆字节的数据块 然后通过 html5 文件系统 api 将数据存储在本地 我想阻止用户在 ajax 调用完成之前离开页面 我决定探索onbeforeunload事件 让它通知用户应该停留在页
  • 如何在 Android 手机中使用语音识别而不出现烦人的对话框

    不修改android API 可以实现吗 我找到了一篇关于此的文章 有人评论说我应该对 android API 进行修改 但没有说如何修改 有人可以给我一些关于如何做到这一点的建议吗 谢谢 我找到了这篇文章 语音识别器 https stac