效果图

注:效果图是用华为荣耀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 语音助手相关推荐

  1. android 语音助手官网,breeno语音助手最新版

    breeno语音助手最新版是一款手机中的导航软件,在这款软件中你能享受到非常方便的导航体验,这款软件中的指令不需要用户手动去输入,现在只需要你使用的语音就直接能对其进行操控了.感兴趣的用户就来去我下载 ...

  2. 打造Android的中文Siri语音助手

    打造Android的中文Siri语音助手(一)--小I机器人的接口 分类: android2011-12-02 14:10 7879人阅读 评论(44) 收藏 举报 androidstringpath ...

  3. android 7 语音助手,等来万众期待的语音助手,一加7 Pro迎来最新版氢OS更新

    原标题:等来万众期待的语音助手,一加7 Pro迎来最新版氢OS更新 在众多国产手机品牌里面,一加一直算得上是不太追随主流的哪一种,一年只做一款或者一个系列的旗舰手机,也不发布中低端新品牌,而自家的氢O ...

  4. Oppo语音助手java开发,[OPPO] 语音助手, NLP 算法工程师、 Java 、Android(Base 成都、深圳)...

    breeno 语音助手团队~ 最高学历 211 及以上,最低学历本科及以上 欢迎找我帮忙内推: [email protected] Android 开发工程师: 岗位职责: 1.负责语音助手架构设计以 ...

  5. android Accessibility系统自带语音助手打开第三方应用

    AccessibilityService是什么 某些用户由于视力.身体.年龄等问题致使他们不能使用触摸屏幕,为这些用户提供无障碍服务时应该更多的提供语音.触摸反馈.手势操作.模拟点击等. 为此andr ...

  6. android 布局中绘制语音曲线,Android仿百度地图小度语音助手的贝塞尔曲线动画

    本文为大家分享了Android仿小度语音助手的贝塞尔曲线动画,供大家参考,具体内容如下 废话不多说,看下面的动图,和百度的还是有点点差别,我也不修改了,很简单,我实在是没有多余的时间,还要学习其他的东 ...

  7. jovi语音助手安装包_vivoJovi语音助手v3.1.1.0 Android

    #软件截图 #软件简介 vivoJovi语音助手apk,专为vivo手机打造,全新智能语音助手,操作简单,使用方便,帮助您操作您的手机.vivo手机用户必备的Jovi语音,流畅又智能,带您轻松玩转手机 ...

  8. android手机的语音助手在哪里设置,华为语音助手在哪设置 华为语音助手唤醒具体步骤...

    华为语音助手怎么唤醒?华为语音助手怎么自定义唤醒词?在如今各大品牌的手机中,都内置一个语音助手,那华为手机的语音助手该怎么唤醒呢,怎么自定义唤醒词,华为语音助手怎么唤醒,下面就和小编一起来看看吧! 1 ...

  9. android 转语音助手,多言文字转语音助手

    多言文字转语音助手是一款安卓手机多功能文字转语音工具,可以帮助用户输入文字内容转换成音频内容,支持多国文字输入,一键即可将文本转换成语音,还有各种音频素材可以进行合成配音,支持线上试听服务,适合多场景 ...

  10. 手机语音助手(android)

    2012.3.5版 官方下载  优亿市场 1.新增来电语音播报功能 2.新增收到短信语音提醒功能 3.新增收到短信内容朗读功能 2012.2.26版 官方下载    N多市场     appchina ...

最新文章

  1. 编程语言哪家强?4种数据分析领域语言优缺点对比
  2. 我的世界java1.15.2光影_快去打卡吧!海南首个“360光影馆”落户三亚
  3. div旋转 vue_详细解析:uniapp项目|vue组件形式实现的水珠晃动loading纯CSS动效
  4. C#趣味程序---车牌号判断
  5. 有抱负/初级开发人员的良好习惯-避免使用的习惯
  6. 国庆快乐,送3本Python书
  7. 用NAnt 将StarTeam中的文件CheckOut回本地计算机
  8. 关于python map代码理解实例
  9. mpvue微信小程序引入腾讯地图sdk
  10. 中科院信工所 考研面试经验贴
  11. 电源测试之输出动态响应(Output Dynamic Response Test)
  12. Adobe Photoshop CS5 12.0 Extend 绿色免安装版
  13. IT技术员的发展方向和晋升秘笈
  14. 供应链金融产品业务全揭秘
  15. Backpack VI
  16. 2022年电工(初级)国家题库及在线模拟考试
  17. 侍魂胧月传说显示服务器满了,侍魂胧月传说满级之后做什么 满级每日必做任务详解[多图]...
  18. Easyweb包括iframe中的页面跳转
  19. CSS实现水平垂直的几种方法
  20. STL 标准模板库—容器部分【C++】

热门文章

  1. 电子商务网络购物平台实例运营分析+电子商务概述及阿里巴巴集团模式五大核心内容[连载之电子商务网络营销]...
  2. 十九种Elasticsearch字符串搜索方式终极介绍
  3. canal 全量数据
  4. EPLAN史上最全部件库,部件宏,EDZ格式
  5. 服务器上系统使用排行,服务器操作系统使用排行榜
  6. 三极管共射放大电路的放大倍数怎么设计?
  7. Cake slicing
  8. python输入三个数形成各种三角形
  9. echarts——饼图
  10. -XX:SurvivorRatio 命令解释