您当前的位置:首页 > 计算机论文>信息管理论文

基于Android平台的盲人手机系统设计系统的开发

2015-07-16 19:38 来源:学术参考网 作者:未知

 教育心理学研究表明:人们生活中获取的外界信息大约83%来自视觉,11%来自听觉,这就导致了盲人能够从外界获取的信息量很少。如何帮助盲人利用听觉、触觉等其他感官来更多地获取外界信息,更好地融入社会生活,享受科技进步带来的便利?智能手机快速的发展为这一问题找到了解决途径。它丰富的传感器、强大的网络功能和计算能力、不断扩展的连接能力,以及云计算的广泛使用,使残疾人可望更准确、实时地感知周边环境,使用适合自身的方式来表达自己,在更大范围内参与工作和生活,充分实现自己的人生价值。面向盲人开发的智能手机(盲人手机),具有极大的应用价值。
  在Android移动平台上,开发了一款盲人手机系统,该系统以语音合成及语音识别为基础,使盲人能够通过声音控制系统功能的执行,并通过触控语音提示反馈信息,以此来实现手机与盲人的交互。以方便盲人顺利完成接打电话,收发短信,语音报时等功能。这不仅是盲人的渴望,同时也是科技进步对手机发展的要求。系统设计的功能包括:1) 语音接打电话;2) 语音收发短信;3) 语音报时;4) 语音播报日期;5) 语音播报天气。
  1 系统设计
  1.1系统功能划分
  本系统业务逻辑分为语音拨号、语音接听电话、语音发送短信、语音接收短信、语音报时、语音播报日期、语音播报天气和语音搜索播放音乐等功能模块。系统功能模块图如图1所示。
  本系统中语音模块的实现拟通过标准的接口接入安徽科大讯飞的移动语音平台iFLY Mobile Speech Platform(以下简称MSP)来实现[1]。系统中语音接打电话,语音收发短信会调用手机数据库中的通讯录,进行号码与联系人之间相互匹配;同时,其中的语音播报天气模块需要调用Web Service,以此来获取天气情况。
  1.2系统流程图
  系统由一个主页面和后台功能服务构成,当用户打开软件,点击主页面语音按钮时,此时进入语音输入模块,用户说出语音指令,系统根据预先定义的语法文件,选择进入相应的功能子模块,顺利完成该功能后,程序返回继续监听用户的点击操作。系统总体流程图如图2所示。
  图2 系统总体流程图
  注:图2中*代表联系人、号码、歌曲名或城市名
  1.3系统功能模块设计
  下面对图2中几个主要子系统模块的功能和流程进行分析与设计:
  1) 拨打电话逻辑设计
  该子系统主要是为了方便用户拨打电话,当用户需要打电话的时候,只需要通过相应的语音指令告诉手机,打电话给联系人或号码,系统即可分辨出关键词“打电话”进而转入该子系统。在指令中用户有两种选择:一、打电话给联系人,此时系统调用手机数据库中的通讯录查找该联系人,如果找到该联系人则直接进行拨号,否则,提示未找到该联系人;二、打电话给电话号码,此时系统直接提取号码进行拨号。具体流程如图3所示。
  2) 发送短信逻辑设计
  该子系统主要是为了方便用户发送短信,当用户需要发送短信的时候,只需要通过相应的语音指令告诉手机,发短信给联系人或号码,系统即可分辨出关键词“发短信”进而转入该子系统。在指令中用户有两种选择:一、发短信给联系人,此时系统调用手机数据库中的通讯录查找该联系人,如果找到该联系人则提示请输入短信内容,语音输入短信内容后,系统提示短信已编辑完成发送或取消,语音输入发送或取消。若为发送,则直接发送,并提示发送成功;若取消,则提示短信已取消。如果未找到该联系人则提示未找到联系人;二、发短信给电话号码,此时系统直接提取号码进入短信编辑步骤。
  3) 播报天气逻辑设计
  该子系统主要是为了方便用户了解天气,当用户需要了解天气的时候,只需通过相应的语音指令告诉手机,某地今天/明天天气怎么样,系统即可分辨出关键词“天气”进而转入该子系统。系统通过Web Service访问www.webxml.com.cn网站获取天气情况,并将结果进行解析从而获得最终结果,最后以语音的方式向用户播报。
  4) 接听电话逻辑设计
  Android的CALL接收机制是由Broadcast Receiver(广播接收器)来完成的,当电话打进的时候会广播一个Telephony Manager. CALL_STATE_RINGING的消息,可以通过在资源文件AndroidManifest.xml的Inter Filter中拦截这个消息,也可以选择在Activity中注册这个消息来实现[2]。同时,系统获取来电号码并在手机数据库通讯录中查找该联系人,如果找到该联系人,则提示联系人打来电话请接听,否则直接播报号码打来电话请接听。
  5) 接收短信逻辑设计
  Android的SMS接收机制是由Broadcast Receiver(广播接收器)来完成的,当电话打进的时候会广播一个android. provider. Telephony. SMS_RECEIVED的消息,可以对其进行侦听拦截[2]。同时,系统获取来电号码并在手机数据库通讯录中查找该联系人,如果找到该联系人,则提示联系人发来短信请查看,否则直接播报号码发来短信请查看。
  2 系统实现
  介绍系统功能的实现过程,包括语音合成和识别功能,访问数据库和Web Service功能的实现。
  2.1语音识别功能实现
  本系统中所实现的各个功能都是基于语音合成和语音识别技术,其具体实现都是采用科大讯飞的MSP。科大讯飞的MSP移动语音云平台目前只提供一种语音识别的方法,即语音识别控件(Recognizer Dialog)[3],其函数原型为:
  public RecognizerDialog(Context context, String params);
  以下是系统中语音识别的部分关键代码:
  RecognizerDialog isrDialog=new
  RecognizerDialog(MainActivity.this,"appid=51540a3e");//创建语音识别对象
  isrDialog.setListener(recognizeListener);
  String grammar="#ABNF 1.0 gb2312;\n" +
  "language zh-CN;\n" +
  "mode voice;\n" +
  "root $main;\n" +
  "$main=现在什么时间|现在几点钟|今天几月几号|打电话给$contact|$city $date 天气怎么样|发短信给$contact |来一首$song;\n" +
  "$contact=${names} |$digit<3-11>;\n" +
  "$date=今天|明天;\n"+
  "$city=武汉|北京|上海|广州|深圳|重庆;\n"+
  "$digit=0|1|幺|2|3|4|5|6|7|8|9;\n"+
  "$song=自由飞翔;\n"; //语法文件
  grammar=grammar.replace("${names}",a);
  isrDialog.setEngine("asr","grammar_type=abnf",grammar); //进行语法文件识别
  String text= results.get(0).text; //获取结果
  2.2语音合成功能的实现
  科大讯飞的MSP移动语音平台共提供两种中文语音合成的使用方法:语音合成控件(SynthesizerDialog)及语音合成播放器(SynthesizerPlayer)[3]。本系统采用第二种语音合成方法,通过此接口可以实现在后台进行语音合成播放,而不需要通过SynthesizerDialog显示界面。其函数原型为:
 Public static SynthesizerPlayer createSynthesizer
  Player(Context context ,String params);
  以下是系统中语音合成的部分关键代码:
  SynthesizerPlayer player; //创建合成对象
  player=SynthesizerPlayer.createSynthesizerPlayer(MainActivity.this,"appid=51540a3e");
  player.setVoiceName("vixnn");//设置发音人
  player.playText("今天是"+year+"年"+month+"月"+date+"日"+",星期"+week, "tts_buffer_time=5000",null); //进行语音合成
  2.3访问数据库功能实现
  系统中接打电话,收发短信模块用到了手机系统数据库中的通讯录,需要对数据库进行访问。具体实现代码如下:
  ContentResolver contentResolver =getContentRe
  solver(); //创建数据查询对象
  cursor=contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,projection,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+"=?",new String[]{contactName}, "");[4]
  //结合查询条件进行数据查询
  Int nameFieldColumnIndex=cursor.getColumnIn
  dex(ContactsContract.CommonDataKinds.Phone.NUMBER); //获取查询结果
  String number = cursor.getString(nameFieldColu
  mnIndex); //得到联系人的电话号码
  2.4访问Web Service功能实现
  系统中查询天气模块用到了Web Service,需要访问网站获取天气情况,然后对其进行解析从而获得最终结果。具体实现代码如下:
  byte[] entity =readSoap().getBytes();
  String path="http://www.webxml.com.cn/WebS
  ervices/WeatherWebService.asmx";//查询网址
  URL url=new URL(path);
  HttpURLConnection conn=(HttpURLConnection)url.
  openConnection();//打开网络连接,进行查询[5]
  conn.getOutputStream().write(entity); //获取查询结果
  return parseSoap(conn.getInputStream());
  3 系统运行测试
  本软件的测试平台是中兴U880,CPU Marvell PXA920,CPU频率为806MHZ单核,RAM容量512MB,ROM512MB,系统为Android2.2,支持Bluetooth,GSM,TD-SCDMA 和Wifi 通信,主屏3.5英寸,分辨率为800×480 像素。利用Eclipse将本软件安装到手机上,进行测试。
  3.1系统主界面
  系统只有一个主界面,它由两部分构成,上面部分是一个ScrollView(滚动条),包括系统几项功能的提示和指令格式;下面部分
  (下转第4459页)
  (上接第4449页)
  是一个固定的ImageButton(图像按钮),用来触发语音事件,它也是用户最常使用的控件,在整个主界面上占有较大空间,以便于用户操作。主界面效果如图5所示。
  3.2语音拨打电话
  如图6所示,当触发语音按键,命令“打电话给张朋”,系统直接识别出语音命令,并进行拨号。
  
  图4 系统主界面 图5 语音拨号界面
  4 结束语
  基于Android的盲人手机系统是一款为方便盲人而开发的手机应用软件,它可使用户免于繁琐的手动输入,只需要简单地说出语音命令,即可实现相应的功能,为视力障碍人群提供了一种有效操作手机的途径。软件安装简单,安装成功后无需任何设置,打开本软件后触发语音按键即可进行各种操作。系统功能较为全面,操作方便快捷,具有一定的推广和实用价值。
  参考文献:
  [1] 安徽科大讯飞信息科技股份有限公司.讯飞语音改变移动生活[J].计算机与信息技术,2011,6(3):25-32.
  [2] 郭少豪.Android手机交互应用开发[M].北京:中国铁道出版社,2011:171-199.
  [3] 安徽科大讯飞公司.语音云Android SDK[EB/OL]. (2010).http://www.iflytek.com/.
  [4] 王世江,余志龙,陈昱勋,等.Google Android SDK开发范例大全[M].北京:人民邮电出版社,2010:21-401.
  [5] 门娜,闰蕾. 基于Android 的个性化天气预报系统的设计与软件实现[J].计算机光盘软件与应用,2012(7):155-156.

相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页