Android 语音助手
效果图
注:效果图是用华为荣耀2平板录制的,不支持SIM卡,没有打电话和短信的效果。但是我是用三星S3测试的,可以正常实现打电话和发短信的功能。因为三星S3不知道为什么不能用Vysor将手机画面显示在电脑上,所以我只好用华为荣耀2平板录制了,敬请见谅。
项目地址
Github地址:Android-VoiceAssistant
简介、功能等说明Github的README.md里都写了,这里不做赘述。主要说说开发中遇到的问题
开发过程中遇到的问题
1.主界面是一个ListView和一个ImageView,ListView的item代码如下:
public class ListData {public static final int SEND = 1; // 发送public static final int RECEIVER = 2; // 接收private String content;// 标识,判断是左边,还是右边。private int flag; private String time;public ListData(String content,int flag) {setContent(content);setFlag(flag);}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public int getFlag() {return flag;}public void setFlag(int flag) {this.flag = flag;}
}
这里item分成左边和右边,分别是SEND和RECEIVER,利用flag来区分。这样的话,我在写ListView的adapter的getView()时,一开始还是用正常的四步:
(1) 获取或创建viewholder
(2)获取当前item数据
(3)显示数据
(4)返回view
但是这样处理之后,发现不管是SEND还是RECIVER都会显示在ListView的左边。问题出现在下面这段代码:
//获取或创建viewholderViewHolder holder=null;if (convertView==null){holder=new ViewHolder();if (lists.get(position).getFlag() == ListData.RECEIVER) {convertView=View.inflate(mContext,R.layout.leftitem,null);holder.content= (TextView) convertView.findViewById(R.id.tv);}if (lists.get(position).getFlag() == ListData.SEND) { convertView=View.inflate(mContext,R.layout.rightitem,null);holder.content= (TextView) convertView.findViewById(R.id.tv); convertView.setTag(holder);}else {holder= (ViewHolder) convertView.getTag();}
初始化View时,convertView为null,会创建ViewHolder,此时flag是RECEIVER ,然后被setTag()进convertView,那么的后面不会再次创建ViewHolder,直接从
convertView的getTag()得到,所以flag一直都是RECEIVER,所以才会都显示在左边。要加上几个判断,最后修改为:
public View getView(int position, View convertView, ViewGroup parent) {//获取或创建viewholderViewHolder holder=null;if (convertView==null){//第一次肯定为RECEIVERholder=new ViewHolder();convertView=View.inflate(mContext,R.layout.leftitem,null);holder.content= (TextView) convertView.findViewById(R.id.tv);convertView.setTag(holder);}else {holder= (ViewHolder) convertView.getTag();if (lists.get(position).getFlag() == ListData.SEND){convertView=View.inflate(mContext,R.layout.rightitem,null);holder.content= (TextView) convertView.findViewById(R.id.tv);convertView.setTag(holder);}else {convertView=View.inflate(mContext,R.layout.leftitem,null);holder.content= (TextView) convertView.findViewById(R.id.tv);convertView.setTag(holder);}}//获取当前item数据ListData listData=lists.get(position);//显示数据if (listData.getFlag()==ListData.RECEIVER){holder.content.setText(listData.getContent());}else {holder.content.setText("\""+lists.get(position).getContent()+"\"");//如果是发送的信息,加上双引号}//返回viewreturn convertView;}
2.本来我想用语音识别返回的数据解析成JSON数据,然后再根据关键字实现各个功能,但是不知道为什么,返回数据这种格式:
02-11 23:24:28.919 22613-22613/com.tulingdemo D/tag: origin_result={"content": {"item": ["给张三打电话"]},"result": {"corpus_no": 6385871906810761080,"err_no": 0,"idx": -14,"res_type": 3,"sn": "8a6fb1d6-d6ab-48a6-935c-6f166e372b03"}}
并不是官网上说的这种格式:
{"raw_text": "给张三打电话","parsed_text": "给张三打电话","results": [{"domain": "telephone","intent": "call","object": {"name": "张三"}}]
}
问题应该是我解析的问题,那我只好采用下面的方法来根据关键字实现各种功能了
//关键词"打电话"if (res.contains("打电话")){//res为语音识别出的String结果call();return;}
后面有时间还是会解析成JSON格式来处理。
3.在实现发短信功能时,短信的内容可能有关键词,那么就要判断一下是不是短信的内容
//如果是发送的短信内容,必须写在最前面,防止短信内容里面出现关键词if (isMessage){//isMessage初始化时为falsesendContent(res);isMessage=false;return;}//关键词"发短信"if (res.contains("发短信")){sendToWho();//该方法里将isMessage置为truereturn;}
P.S.文章格式的实际效果为什么和我预览的效果不一样?
Android 语音助手相关推荐
- android 语音助手官网,breeno语音助手最新版
breeno语音助手最新版是一款手机中的导航软件,在这款软件中你能享受到非常方便的导航体验,这款软件中的指令不需要用户手动去输入,现在只需要你使用的语音就直接能对其进行操控了.感兴趣的用户就来去我下载 ...
- 打造Android的中文Siri语音助手
打造Android的中文Siri语音助手(一)--小I机器人的接口 分类: android2011-12-02 14:10 7879人阅读 评论(44) 收藏 举报 androidstringpath ...
- android 7 语音助手,等来万众期待的语音助手,一加7 Pro迎来最新版氢OS更新
原标题:等来万众期待的语音助手,一加7 Pro迎来最新版氢OS更新 在众多国产手机品牌里面,一加一直算得上是不太追随主流的哪一种,一年只做一款或者一个系列的旗舰手机,也不发布中低端新品牌,而自家的氢O ...
- Oppo语音助手java开发,[OPPO] 语音助手, NLP 算法工程师、 Java 、Android(Base 成都、深圳)...
breeno 语音助手团队~ 最高学历 211 及以上,最低学历本科及以上 欢迎找我帮忙内推: [email protected] Android 开发工程师: 岗位职责: 1.负责语音助手架构设计以 ...
- android Accessibility系统自带语音助手打开第三方应用
AccessibilityService是什么 某些用户由于视力.身体.年龄等问题致使他们不能使用触摸屏幕,为这些用户提供无障碍服务时应该更多的提供语音.触摸反馈.手势操作.模拟点击等. 为此andr ...
- android 布局中绘制语音曲线,Android仿百度地图小度语音助手的贝塞尔曲线动画
本文为大家分享了Android仿小度语音助手的贝塞尔曲线动画,供大家参考,具体内容如下 废话不多说,看下面的动图,和百度的还是有点点差别,我也不修改了,很简单,我实在是没有多余的时间,还要学习其他的东 ...
- jovi语音助手安装包_vivoJovi语音助手v3.1.1.0 Android
#软件截图 #软件简介 vivoJovi语音助手apk,专为vivo手机打造,全新智能语音助手,操作简单,使用方便,帮助您操作您的手机.vivo手机用户必备的Jovi语音,流畅又智能,带您轻松玩转手机 ...
- android手机的语音助手在哪里设置,华为语音助手在哪设置 华为语音助手唤醒具体步骤...
华为语音助手怎么唤醒?华为语音助手怎么自定义唤醒词?在如今各大品牌的手机中,都内置一个语音助手,那华为手机的语音助手该怎么唤醒呢,怎么自定义唤醒词,华为语音助手怎么唤醒,下面就和小编一起来看看吧! 1 ...
- android 转语音助手,多言文字转语音助手
多言文字转语音助手是一款安卓手机多功能文字转语音工具,可以帮助用户输入文字内容转换成音频内容,支持多国文字输入,一键即可将文本转换成语音,还有各种音频素材可以进行合成配音,支持线上试听服务,适合多场景 ...
- 手机语音助手(android)
2012.3.5版 官方下载 优亿市场 1.新增来电语音播报功能 2.新增收到短信语音提醒功能 3.新增收到短信内容朗读功能 2012.2.26版 官方下载 N多市场 appchina ...
最新文章
- 编程语言哪家强?4种数据分析领域语言优缺点对比
- 我的世界java1.15.2光影_快去打卡吧!海南首个“360光影馆”落户三亚
- div旋转 vue_详细解析:uniapp项目|vue组件形式实现的水珠晃动loading纯CSS动效
- C#趣味程序---车牌号判断
- 有抱负/初级开发人员的良好习惯-避免使用的习惯
- 国庆快乐,送3本Python书
- 用NAnt 将StarTeam中的文件CheckOut回本地计算机
- 关于python map代码理解实例
- mpvue微信小程序引入腾讯地图sdk
- 中科院信工所 考研面试经验贴
- 电源测试之输出动态响应(Output Dynamic Response Test)
- Adobe Photoshop CS5 12.0 Extend 绿色免安装版
- IT技术员的发展方向和晋升秘笈
- 供应链金融产品业务全揭秘
- Backpack VI
- 2022年电工(初级)国家题库及在线模拟考试
- 侍魂胧月传说显示服务器满了,侍魂胧月传说满级之后做什么 满级每日必做任务详解[多图]...
- Easyweb包括iframe中的页面跳转
- CSS实现水平垂直的几种方法
- STL 标准模板库—容器部分【C++】