版权申明:http://yarin.iteye.com/blog/453262
语音识别技术是在Android SDK1.5中才加入的(RecognizerIntent),这里我们简单的分析一下自带的api例子,其实它就是通过一个Intent的Action动作来完成的。主要有以下两种模式:
ACTION_RECOGNIZE_SPEECH:一般语音识别,在这种模式下我们可以捕捉到语音的处理后的文字列。
ACTION_WEB_SEARCH:网络搜索
该例子同样是使用ACTION_RECOGNIZE_SPEECH模式,我们需要实现onActivityResult方法,当语音识别结束之后的回调函数。
好了,废话不多说,看下面的代码,我加入了注释,重要的本来就不多几行。
package com.example.android.apis.app;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class VoiceRecognition extends Activity implements OnClickListener {
private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234;
private ListView mList;
/**
* Called with the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.voice_recognition);
Button speakButton = (Button) findViewById(R.id.btn_speak);
mList = (ListView) findViewById(R.id.list);
// Check to see if a recognition activity is present
PackageManager pm = getPackageManager();
List<ResolveInfo> activities = pm.queryIntentActivities(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
if (activities.size() != 0)
{
speakButton.setOnClickListener(this);
}
else
{
speakButton.setEnabled(false);
speakButton.setText("Recognizer not present");
}
}
public void onClick(View v)
{
if (v.getId() == R.id.btn_speak)
{
startVoiceRecognitionActivity();
}
}
private void startVoiceRecognitionActivity()
{
//通过Intent传递语音识别的模式
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
//语言模式和自由形式的语音识别
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
//提示语音开始
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech recognition demo");
//开始执行我们的Intent、语音识别
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
}
//当语音结束时的回调函数onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK)
{
// 取得语音的字符
ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
mList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, matches));
}
super.onActivityResult(requestCode, resultCode, data);
}
}
当然这里需要设备的支持,所以模拟器是没有效果的!
实际上在没有设备时会跑出ActivityNotFoundException异常。
这个例子很简单,到此为止,谢谢!
分享到:
- 2009-08-20 01:44
- 浏览 10231
- 评论(16)
- 论坛回复 / 浏览 (12 / 14971)
- 查看更多
相关推荐
《语音识别初探》这堂课是针对小学四年级学生设计的人工智能启蒙教育课程,主要探讨的是语音识别技术的基础知识及其在生活中应用。课程旨在激发学生对语音识别的兴趣,通过体验活动来理解语音识别的核心功能,并掌握...
Android是谷歌公司与2007年11月5日推出的开放手机软硬件平台,它是一个基于Linux内核的操作系统,旨在打造一个开放且统一的移动设备生态系统。开放手持装置联盟(Open Handset Alliance)由包括摩托罗拉、宏达电、...
学习Android有一段时间了,虽然前段时间对软件测试有了一些了解,不过接触android的单元测试却是头一次。这几天在物流大赛上也用了不少时间,所以对于android的单元测试没有太深入的研究,所以先写个基本入门吧!...
"入门--初探Android" Android是一个基于Linux核心(kernel)的开源手机操作系统平台。它于2007年11月5日由Google与其他33家手机制造商、手机晶片供应商、软件供应商、电信运营商所组成的开放手机联盟(Open Handset ...
语音识别模块主要由LD3320语音识别芯片和STC15F2K60S2单片机构成,使用SPI协议进行初始化配置,并通过CC2430芯片为核心的ZigBee模块实现数据的无线传输。上位机部分负责接收用户的语音指令,并通过C#编写的串口通信...
【Android开发与实践详解】 Android开发是移动应用开发领域中的重要组成部分,主要使用Eclipse集成开发环境(IDE)进行。本章将深入探讨如何利用Eclipse创建Android应用程序,理解Android虚拟设备(AVD)的创建,...
1.初探Android 2.Android开发环境搭建与编译 3.Android编译过程分析 4.android.mk初识 5.Android.mk学习1 6.Android.mk学习2 7.Android.mk学习3 8.Android启动课程大纲 9.Android启动模式 10.init启动分析 11.走入...
9.2 语音识别 9.3 GoogleMap 9.3.1 GoogleMap概述 9.3.2 准备工作 9.3.3 GoogleMapAPI的使用 9.3.4 定位系统 9.4 桌面组件 9.4.1 快捷方式 9.4.2 实时文件夹 9.4.3 Widget开发 9.5 账户管理 9.6 小结 第三部分 实例...
### Kotlin初探与集成Android项目 #### 一、了解Kotlin **Kotlin的背景:** Kotlin 是一种由 JetBrains 开发的静态类型编程语言,它最初发布于 2011 年,并且在 2017 年被 Google 宣布成为 Android 的官方开发...
。。。
Android Apk解密工程初探
在"OpenCV初探:二、Android程序示例 源代码"中,我们可以预期获得一些关于如何在Android应用中集成OpenCV的实例代码。这些源代码将帮助开发者理解如何在Android环境下设置和使用OpenCV库,从而实现各种视觉任务。 ...
Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明 Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明 Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明
在Android开发中,桌面组件(Widget)是一种可以让用户在手机或平板电脑的主屏幕上直接查看和操作的应用小部件。本文将深入探讨如何在Android中创建和使用Widget,以及相关的框架类和方法。 首先,我们来看App...
9、Android09--Fragment初探 10、Android09--Android程序界面 11、Android11--基本布局 12、Android12--常见控件(一) 13、Android13--常见控件(二) 14、Android14--Adapter 15、Android15--ListView 16、Android16--...
在Android应用开发中,Fragment是Activity的一个模块化组件,它允许开发者将屏幕的不同部分独立管理。"Android fragment懒加载"是指在用户实际需要时才加载Fragment中的数据或视图,而不是在Fragment创建时立即加载...
Android源码_安卓WIFI密码破解工具编写初探 本资料共包含以下附件: Android源码_安卓WIFI密码破解工具编写初探.rar