android智能家居在线语音控制
对于android 智能家居项目,如果能实现语音控制,无疑会丰富项目功能,改善用户体验,android语音识别的方法有三种:一是使用intent调用语音识别程序,二 是应用程序自己调用语音识别库,三是使用service调用语音识别程序,本文重点介绍第一种方法,一言以蔽之,其主要原理就是将语音发送到google 云端,然后云端处理,匹配数据,再发送给客户端。
1、需要通过intent传递语音识别的模式:
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);需要开启一个语音活动;
2、intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);这是对语音模式和自由形式的语音识别;
3、提示用户开始输入语音:
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "开始语音");
4、开始语音识别:
startActivityForResult(intent,VOICE_RECOGNITION_REQUEST_CODE);
这里调用startActivityForResult方法,这种方法可以用onActivityResult(int requestCode, int resultCode, Intent data)方法获得请求Activity结束之后的操作。
用户在输入语音数据之后,就是用上述方法获取经google云端处理的语音数据:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
// 回调获取从谷歌得到的数据
if (requestCode == VOICE_RECOGNITION_REQUEST_CODE
&& resultCode == RESULT_OK) {
// 取得语音的字符
ArrayList<String> results = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);其中参数RecognizerIntent.EXTRA_RESULTS 的作用就是将字符串返回到一个
ArrayList<String> 的对象中
for (int i = 0; i < results.size(); i++) {
resultString += results.get(i);
}
这段代码的作用就是遍历数组,获取语音字符串;
下面是语音控制打开M0开发板上led灯的程序:
if ((resultString.indexOf("开") > -1)
| (resultString.indexOf("打") > -1)) {
if (resultString.indexOf("灯") > -1) {
if (nodeInfo.getLed() == 0) {
btn_light.setImageResource(R.drawable.light_on);
s = "正在打开电灯";
Toast toast = Toast.makeText(getApplicationContext(),
s, Toast.LENGTH_SHORT);
toast.show();
nodeInfo.setLed(1);
if (!writeThreadIsCreated) {
WriteThread = new WriteThread();
WriteThread.begin(nodeInfo.getDevNum(),
Cmd.DevCmd.LEDON);
} else
WriteThread.begin(nodeInfo.getDevNum(),
Cmd.DevCmd.LEDON);
}
}
以下是语音控制打开M0开发板上风扇的程序:
if (resultString.indexOf("风扇") > -1) {
s = "正在打开风扇";
Toast.makeText(this, s, 1).show();
if (nodeInfo.getFun() == 0) {
btn_fan.setImageResource(R.drawable.fan_on);
nodeInfo.setFun(1);
if (!writeThreadIsCreated) {
WriteThread = new WriteThread();
WriteThread.begin(nodeInfo.getDevNum(),
Cmd.DevCmd.FANON);
} else {
WriteThread.begin(nodeInfo.getDevNum(),
Cmd.DevCmd.FANON);
}
}
}
以下是语音控制打开M0开发板上蜂鸣器的程序
if ((resultString.indexOf("蜂") > -1)
| (resultString.indexOf("鸣") > -1)) {
if (nodeInfo.getBeep() == 0) {
btn_beep.setImageResource(R.drawable.beep_on);
s = "正在打开蜂鸣器";
// toast delay 3
Toast toast = Toast.makeText(getApplicationContext(),
s, Toast.LENGTH_SHORT);
// toast show
toast.show();
nodeInfo.setBeep(1);
if (!writeThreadIsCreated) {
WriteThread = new WriteThread();
WriteThread.begin(nodeInfo.getDevNum(),
Cmd.DevCmd.SPKON);
} else
WriteThread.begin(nodeInfo.getDevNum(),
Cmd.DevCmd.SPKON);
}
}
以下是语音控制打开M0开发板上数码管的程序
if (resultString.indexOf("数") > -1) {
if (nodeInfo.getNixietub() == 0) {
btn_ne.setImageResource(R.drawable.seg_on);
s = "打开数码管";
// 弹窗显示延时3秒
Toast toast = Toast.makeText(getApplicationContext(),
s, Toast.LENGTH_SHORT);
// 显示toast信息
toast.show();
nodeInfo.setNixietub(1);
if (!writeThreadIsCreated) {
WriteThread = new WriteThread();
WriteThread.begin(nodeInfo.getDevNum(),
Cmd.DevCmd.NTON);
} else
WriteThread.begin(nodeInfo.getDevNum(),
Cmd.DevCmd.NTON);
}
}
android智能家居在线语音控制的更多相关文章
- Arduino系列之智能家居蓝牙语音遥控灯(四)
用到的材料 Arduino uno hc-05 蓝牙模块 安卓手机 安卓APP AMR—voice 通过安卓手机连接Arduino的蓝牙模块Hc-05,通过语音识别软件AMR-voice识别语音, ...
- 实例源码--Android智能家居系统源码
下载源码 技术要点: 1.Android应 用开发基础框架 2.SQLITE数据库的 使用 3.网络通信 4.GOOGLE地图模块 5.源码带有非常详 细的中文注释 ...... 详细介绍: ...
- 入门智能家居,从 IFTTT 到 HomeKit 自动化(二)
入门智能家居,从 IFTTT 到 HomeKit 自动化(二) 目录 0. HomeKit.HomeBridge.HomeAssistant 分别是什么?关系是什么? 1. 开始前的准备 2. 整 ...
- 一百元的智能家居——Asp.Net Mvc Api+讯飞语音+Android+Arduino
大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说 ...
- 使用Olami SDK 语音控制一个支持HomeKit的智能家居的iOS程序
前言 HomeKit是苹果发布的智能家居平台.通过HomeKit组件,用户可以通过iphone.iPad和ipod Touch来控制智能灯泡,风扇.空调等支持HomeKit的智能家居,尤其是可以通过S ...
- Diy智能家居-1.基于esp8266的语音控制系统(开篇)
目录Diy智能家居-1.基于esp8266的语音控制系统(开篇) https://blog.csdn.net/arno1988/article/details/82628589 Diy智能家居-2.基 ...
- 智能家居-3.基于esp8266的语音控制系统(软件篇)
智能家居-1.基于esp8266的语音控制系统(开篇) 智能家居-2.基于esp8266的语音控制系统(硬件篇) 智能家居-3.基于esp8266的语音控制系统(软件篇) 赞赏支持 QQ:505645 ...
- 智能家居-1.基于esp8266的语音控制系统(开篇)
智能家居-1.基于esp8266的语音控制系统(开篇) 智能家居-2.基于esp8266的语音控制系统(硬件篇) 智能家居-3.基于esp8266的语音控制系统(软件篇) apache-apollo安 ...
- 智能家居实践(番外篇)—— 接入 HomeKit 实现用 Siri 控制家电
转载:智能家居实践(番外篇)—— 接入 HomeKit 实现用 Siri 控制家电 前面我写了一个系列共三篇的智能家居实践,用的是 Amazon Echo 实现语音控制,但是 Amazon Echo ...
随机推荐
- SET ANSI_NULLS ON
Transact-SQL 支持在与空值进行比较时,允许比较运算符返回 TRUE 或 FALSE. 通过设置 ANSI_NULLS OFF 可将此选项激活.当 ANSI_NULLS 为 OFF 时,如果 ...
- [C和指针] rearrange.c
C和指针_程序1.1_重排字符 /* ** 这个程序从标准输入(键盘)中读取输入行并按需求处理后在标准输出(屏幕)中打印, ** 每个输入行的后面一行是该行按需求处理后的输出内容. ** ** 输入的 ...
- TypeScript学习指南第一章--基础数据类型(Basic Types)
基础数据类型(Basic Types) 为了搭建应用程序,我们需要使用一些基础数据类型比如:numbers,strings,structures,boolean等等. 在TypeScript中除了Ja ...
- Java Portlet 规范概述
首先,解释几个基本的术语. 1)Portal Portal 是一种 web 应用,通常具有个性化.单点登录.来自不同源的内容聚合(aggregation)并提供信息系统表现层等特点.所谓聚合,是指将不 ...
- CF192div2-C - Purification
题意: 从给定的图中找出某些点,这些点能够消除同一行和同一列的“怪物”.求使得最少的点的位置. 关键:要想消除整张的图的妖怪,必须选中n个点(对于n行n列来说)!!!!!!!!!!! 做法:对于每一行 ...
- MongoDB实战指南(二):索引与查询优化
数据库保存记录的机制是建立在文件系统上的,索引也是以文件的形式存储在磁盘上,在数据库中用到最多的索引结构就是B树.尽管索引在数据库领域是不可缺少的,但是对一个表建立过多的索引会带来一些问题,索引的建立 ...
- mjpg-streamer on raspberrypi
http://sourceforge.net/projects/mjpg-streamer/ svn address svn checkout svn://svn.code.sf.net/p/mjpg ...
- 定时显示提示控件 TToolTip
转载过来的,文章出自: http://www.delphifans.com/infoview/Article_3640.html { 修改者:ghs 日期:20071218 功能:在 ...
- MySQL 5.6数据库配置主从同步
win7环境下mysql主从搭建 我下载的是压缩包,免安装的那种 1.简单安装 解压后把my-default.ini复制一份改为my.ini默认mysql会找这个文件,首先从system32下找,然后 ...
- 重温XML
关于什么是XML,以及XML有什么作用,网络上很多,我就在这里不班门弄斧,写博客,是我的一个习惯,究其内容无非个人情感,心得体会,转载,技术相关的,或者一时心血来潮的个人之谈,但是我是一个小心翼翼的人 ...