开源是一种精神,开源是一种境界。上面的教程已经教大家学习如何搭建app的开发环境和app工程的基本框架,如果你没有看,不要紧,点击下面代码,按照步骤学习一下吧。
请大家跟随我一起DIY属于我们自己的app吧!在前面的入帖问候中,我曾经提到,怎么让家居智能起来,“智能”二字如何体现?难道我们拿着手机,打开看看家里温湿度多少,这就算智能吗?出门办事,眼睛时时盯着手机上的烟雾报警器数据和红外人体探测数据吗?答案显然是否定的!传感器数据不仅仅是为了给我们查看而存在的,如何运用它们,并且智能地做出反应和提醒,实现智能联动,给传感器们配上一个大脑,这才是我们的终极目标。有人会说:别扯这些没用的,你就告诉我怎么弄吧!{:soso_e143:}好吧,接下来,就教大家如何把手机app转换成自己的管家机器人,陪它说说话,陪它聊聊天,陪它唠唠嗑!
作为管家机器人,不能说话你说着急不着急,还好创客提供的app里面有语音控制这个模块,但是大部分人点进去之后会发现:童话里都是骗人的!你跟它说话,它也不回答你,你说什么,它就只能识别出你说的话,然后显示出来。没关系,之所以是这样,是创客想让我们自己设计,自由发挥,别问我怎么知道的,因为,我也是猜的!
首先,我们先进入语音控制的模块,看一下里面的代码是怎么写的吧!找到下图的文件,双击打开:
打开后,其他的你先不要管,找到如图的代码位置
现在你就找到处理语言的地方了,你会发现,在里面已经写了这么几行代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | String cmdstr= "" ; //当前命令类型 cmdstr= "卧室开灯" ; //当前命令类型 if ( yuyin.contains( "开" ) && yuyin.contains( "灯" ) && yuyin.contains( "卧室" )) { WebApi znckWebapi = new WebApi(IatDemo. this ); //声明云端操作api类 znckWebapi.sid= "003" ; //修改成云端对应的sid znckWebapi.nid= "001" ; //修改成云端对应的nid String mode= "yysetdata" ; //语音数据模式 String data= "1" ; //上传的数据,1代表开灯 znckWebapi.SetDate(mode,data); //调用SetDate数据函数发送。 return ; } cmdstr= "卧室关灯" ; //当前命令类型 if ( yuyin.contains( "关" ) && yuyin.contains( "灯" ) && yuyin.contains( "卧室" )) { WebApi znckWebapi = new WebApi(IatDemo. this ); //声明云端操作api类 znckWebapi.sid= "003" ; //修改成云端对应的sid znckWebapi.nid= "001" ; //修改成云端对应的nid String mode= "yysetdata" ; //语音数据模式 String data= "0" ; //上传的数据,0代表关灯 znckWebapi.SetDate(mode,data); //调用SetDate数据函数发送。 return ; } |
如果你看得懂中文,就会发现,噢,原来语音就是在这个地方识别和进行控制的啊!是的!但是现在,机器人都不开口说话,怎么办呢?别着急,接着往下看。
让手机说话,其实是通过android里面的TextToSpeech类实现的,不需要知道它是什么的,你跟着教程一步步做就行了。
一、新建m_speeck变量,位置放着跟下图一样就行了
1 | TextToSpeech m_speech; |
二、复制如下代码,将其放入制定位置,主要是初始化TextToSpeech。
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 | m_speech = new TextToSpeech(IatDemo. this , new TextToSpeech.OnInitListener() { @Override public void onInit( int arg0) { if (arg0 == TextToSpeech.SUCCESS) { //下面这句代码是主要的,设置语言,如果是英文的话,就用Locale.ENGLISH int result = m_speech.setLanguage(Locale.CHINA); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { Log.e( "lanageTag" , "not use" ); } } } }); |
注意上面的红框,这个是复制的位置哦,别复制错了。
三、找到上面的鼠标选中里面的代码,然后Ctrl+/,将它们全部注释掉
然后在里面添加
1 | m_speech.speak(yuyin, TextToSpeech.QUEUE_FLUSH, null ); |
Ctrl+S保存后,插上你的安卓手机,点击上面的绿色小爬虫运行。
以上就是实现你说什么,手机就说什么,复读机模式!
运行后,有人会发现,就算在app的语音控制对着手机说话,它也还是一样不说话,咋回事呢?别着急,主要是因为你手机上没有中文的语音包,那怎么办呢?
首先,通过手机应用市场:应用宝,豌豆荚之类的,在里面搜索:讯飞语音+,搜到后安装,安装完啥也别干,退出来,打开手机设置,找到“语言和输入法”,往下找,找到“文字转语音(TTS)输出”,
找到“讯飞语音+”选中就行了。
最后,重新打开app,点击开始说一句话,是不是说话啦!是不是很神奇?
到这里,有的创友会问:我搞到现在弄一个复读机干什么呢?别着急,你现在可以在里添加自己想要的语音命令了,比如说做一个类似iphone的SIRI下面接一段示例代码,相信你们一定能看懂
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 | if (yuyin.contains( "你好" ) || yuyin.contains( "哈喽" ) || yuyin.contains( "hello" )){ speakString = "你好!很高兴认识你!" ; m_speech.speak(speakString, TextToSpeech.QUEUE_FLUSH, null ); return ; } if (yuyin.contains( "介绍" ) && yuyin.contains( "你" )){ speakString = "你好!我是这个家的管家机器人!你可以叫我瓦力!" ; m_speech.speak(speakString, TextToSpeech.QUEUE_FLUSH, null ); return ; } if (yuyin.contains( "操" )|| yuyin.contains( "草" ) ){ speakString = "不能骂人,不然我会不高兴的!" ; m_speech.speak(speakString, TextToSpeech.QUEUE_FLUSH, null ); return ; } |
下面,你可以编制属于自己的语音命令了哦。在接下来的教程中,我会依据语音命令继续给大家做拓展,让机器人更加智能,实现不间断对话,启动各种自定义模式,并且进行消息推送等功能,敬请期待!大神勿喷!