关于Android利用RecognizerIntent识别语音并简单实现打电话,详细看实现代码例如以下:

  1. package com.example.recognizerintentactivity;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. import android.app.Activity;
  6. import android.content.Intent;
  7. import android.net.Uri;
  8. import android.os.Bundle;
  9. import android.speech.RecognizerIntent;
  10. import android.view.View;
  11. import android.view.View.OnClickListener;
  12. import android.widget.Button;
  13. import android.widget.Toast;
  14.  
  15. public class MainActivity extends Activity {
  16.  
  17. private Button btnReconizer;
  18. private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234;
  19.  
  20. @Override
  21. protected void onCreate(Bundle savedInstanceState) {
  22. // TODO Auto-generated method stub
  23. super.onCreate(savedInstanceState);
  24. setContentView(R.layout.activity_main);
  25.  
  26. btnReconizer = (Button) this.findViewById(R.id.btnRecognizer);
  27. btnReconizer.setOnClickListener(new OnClickListener() {
  28.  
  29. @Override
  30. public void onClick(View v) {
  31. // TODO Auto-generated method stub
  32. try {
  33. // 通过Intent传递语音识别的模式,开启语音
  34. Intent intent = new Intent(
  35. RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
  36. // 语言模式和自由模式的语音识别
  37. intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
  38. RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
  39. // 提示语音開始
  40. intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "開始语音");
  41. // 開始语音识别
  42. startActivityForResult(intent,
  43. VOICE_RECOGNITION_REQUEST_CODE);
  44. } catch (Exception e) {
  45. // TODO: handle exception
  46. e.printStackTrace();
  47. Toast.makeText(getApplicationContext(), "找不到语音设备", 1)
  48. .show();
  49. }
  50. }
  51. });
  52.  
  53. }
  54.  
  55. @Override
  56. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  57. // TODO Auto-generated method stub
  58. // 回调获取从谷歌得到的数据
  59. if (requestCode == VOICE_RECOGNITION_REQUEST_CODE
  60. && resultCode == RESULT_OK) {
  61. // 取得语音的字符
  62. ArrayList<String> results = data
  63. .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
  64.  
  65. String resultString = "";
  66. for (int i = 0; i < results.size(); i++) {
  67. resultString += results.get(i);
  68. }
  69.  
  70. if(resultString.indexOf("喂") >-1){
  71. String tel = "15100000000";
  72. Intent intent = new Intent();
  73. intent.setAction(Intent.ACTION_CALL);
  74. intent.setData(Uri.parse("tel:" + tel));
  75. startActivity(intent);
  76. Toast.makeText(this,tel, 1).show();
  77. }else{
  78. Toast.makeText(this, "没找到要拨打的电话", 1).show();
  79. }
  80. }
  81. super.onActivityResult(requestCode, resultCode, data);
  82. }
  83. }

这里,我们须要注意的是,须要用到两个权限。一个是网络资源。一个是打电话的这个动作权限,因此,我们须要改动 AndroidMainfest.xml添加两条内容。例如以下

  1. <uses-permission android:name="android.permission.CALL_PHONE" />
  2. <uses-permission android:name="android.permission.INTERNET" />

Android利用RecognizerIntent识别语音并简单实现打电话动作的更多相关文章

  1. Android之人脸识别

    **前言** 人工智能时代快速来临,其中人脸识别是当前比较热门的技术,在国内也越来越多的运用,例如刷脸打卡.刷脸App,身份识别,人脸门禁等等.当前的人脸识别技术分为WEBAPI和SDK调用两种法方式 ...

  2. Android OCR文字识别 实时扫描手机号(极速扫描单行文本方案)

    身份证识别:https://github.com/wenchaosong/OCR_identify 遇到一个需求,要用手机扫描纸质面单,获取面单上的手机号,最后决定用tesseract这个开源OCR库 ...

  3. Android利用Fiddler进行网络数据抓包

    最新最准确内容建议直接访问原文:Android利用Fiddler进行网络数据抓包 主要介绍Android及IPhone手机上如何进行网络数据抓包,比如我们想抓某个应用(微博.微信.墨迹天气)的网络通信 ...

  4. [置顶] android利用jni调用第三方库——第二篇——编写库android程序直接调用第三方库libhello.so

    0:前言 1:本文主要作为丙方android公司的身份来写 2:作者有不对的地方,请指出,谢谢 [第一篇:android利用jni调用第三方库——编写库libhello.so] [第二篇:androi ...

  5. Android利用tcpdump和wireshark抓取网络数据包

    Android利用tcpdump和wireshark抓取网络数据包 主要介绍如何利用tcpdump抓取andorid手机上网络数据请求,利用Wireshark可以清晰的查看到网络请求的各个过程包括三次 ...

  6. Android利用Fiddler进行网络数据抓包,手机抓包工具汇总

    Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...

  7. android studio无法识别含有rcs包名的jar

    http://blog.csdn.net/JingleYe/article/details/70048943     android studio无法识别含有rcs包名的jar android stu ...

  8. android设备不识别awk命令,缺少busybox

    android设备不识别awk命令,缺少busybox 一.什么是BusyBox ? BusyBox 是标准 Linux 工具的一个单个可执行实现.BusyBox 包含了一些简单的工具,例如 cat ...

  9. Android利用Fiddler进行网络数据抓包,手机抓包工具汇总,使用mono运行filddler

    Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...

随机推荐

  1. ubuntu中chown设置文件权限

    参考文献: http://yanwen.org/doc/chown.html http://www.cppblog.com/deercoder/articles/110129.html 可以通过ls ...

  2. JavaScript进阶系列04,函数参数个数不确定情况下的解决方案

    本篇主要体验函数参数个数不确定情况下的一个解决方案.先来看一段使用函数作为参数进行计算的实例. var calculate = function(x, y, fn) { return fn(x, y) ...

  3. delphi 合并两个 Wav 文件流的函数

    合并两个 Wav 文件的函数 实例一 unit Unit1; interface usesWindows, Messages, SysUtils, Variants, Classes, Graphic ...

  4. iPhone上将短信内容发送到指定邮箱的方法

    iPhone上将短信内容发送到指定邮箱的方法 迄今为止,移动应用安全基本聚焦在以下几个方面,一是移动设备管理BYOD(bring your own device),二是移动恶意软件分析,三是移动设备用 ...

  5. 解决克隆 centos虚拟机后修改克隆后的机器的ip、mac、uuid失败的问题

    解决办法:     So here's how we fix it: Remove the kernel's networking interface rules file so that it ca ...

  6. 【转】IntelliJ IDEA关联SVN

    http://blog.csdn.net/xdd19910505/article/details/52756417 问题描述: IntelliJ IDEA安装之后,使用SVN进行提交或更新以及检出代码 ...

  7. POST 和 PUT 方法区别

        Http定义了与 服务器的交互方法,其中除了一般我们用的最多的GET,POST 其实还有PUT和DELETE 根据RFC2616标准(现行的HTTP/1.1)其实还有OPTIONS,GET,H ...

  8. Java并发编程的艺术(七)——Executors

    Executors框架简介 Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.cocurrent 包下,通过该框架来控制线程的启动.执行和关闭,可以简化并发 ...

  9. 《Excel效率手册:早做完,不加班》

    <Excel效率手册:早做完,不加班> 基本信息 作者: 陈锡卢    杨明辉 出版社:清华大学出版社 ISBN:9787302350743 上架时间:2014-5-8 出版日期:2014 ...

  10. .NET零基础入门10:打老鼠之数据存储

    一:数据库设计 到此为止,打老鼠游戏还不能保存每次游戏的成绩,我们今天完成的任务就是要存储成绩到SQLSERVER的数据库中. 在上节课中,我们已经知道了如何创建数据库,所有,先创建数据库" ...