android 语音识别.doc_第1页
android 语音识别.doc_第2页
android 语音识别.doc_第3页
android 语音识别.doc_第4页
android 语音识别.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

海南师范大学题目:基于语音识别的android手机短信提醒 学号: 200924101115 姓名: 谢达书 专业:计算机科学与技术 导师: 何书前 学院:信息技术学院 2013年 3月目录第一章 绪论1.1 课题背景-1.2 课题研究的意义1.3 语音识别的发展历程1.4 语音识别的基本原理1.5 论文组织结构1.6 本章小结第二章 相关资料概述2.1 移动终端的人机交互2.1.1 人机交互的发展2.1.2 人机交互的特点2.2 手机主流操作系统平台2.2.1 WindowsCE系统2.2.2 Symbian 系统2.2.3 iPhone OS 系统2.2.4 Android系统2.3 本章小结第三章 Android平台框架3.1 Android平台架构3.2 Android应用程序组件3.3 Android开发环境3.3.1 android开发常用的开发工具3.3.2 android开发环境的搭建 建立Java运行环境 安装Eclipse和android SDK 安装android开发插件ADT3.3.3 Android工程文件解析3.4 本章小结第四章 基于语音识别的android手机短信提醒4.1 语音识别短信的需求分析4.1.1 功能需求4.1.2 性能需求4.2 语音识别短信的总体设计4.2.1 应用程序的架构图4.2.2 应用程序功能模块4.2.3 文件的配置4.3 语音识别短信主要模块的详细设计4.3.1 应用程序主界面详细设计4.3.2 语音识别模块详细设计4.3.3 短信提醒模块详细设计4.4 本章小结第五章 系统运行测试第六章 总结与期望5.1 总结 5.2 期望致谢参考文献第一章 绪论1.1 课题背景 现在手机越来越进入人们的生活里面,人们对手机的依赖性越来越大,无论是工作,生活,还是娱乐,大家都在使用手机,因此,人们一天中收到的短信很多,有时候看完了,可能会忘记一些重要的短信信息,比如:一些工作开会会议的时间,地点,等。人们使用手机,因为它方便,但是一些老年人不会使用手机来发短信,因为他们不会打字,也可能是他们老花,看不清楚,所以,打不了字。但是由于现在手机和人的交互越来越接近智能化,2010年8月13日,Google演示了运行android系统移动设备的语音识别技术,人们可以通过声音对手机进行控制,比如:通过声音向手机发送指令,使手机发送短信、打电话、发送电子邮件、等等。本论文主要研究基于Google的语音识别技术来开发基于语音识别的android手机短信提醒。本论文需要实现的功能是短信的语音输入和短信的会议提醒。1.2 课题研究的意义随着现代技术的发展,人们对移动终端的依赖性和期望是越来越大。短信发送,语音通讯,手机小游戏等都已经无法满足人们对移动终端的需求,这些移动终端也开始失去了市场。人们现在都想要各种机器能听懂人类的语言,并且能做到人说什么,机器就会按照人说的话,去执行命令,从而实现人机的语言交流。随着计算机科技的发展,人们的这一想法终于可以实现,这是由于语音识别技术的出现,使得机器通过识别和理解,然后把人的语音信号转变成机器相对应的命令。语音识别技术的应用已经成为当今社会上具有竞争价值的新兴高科技加高技术的产业。它在人机交互中占的比列将会越来越大。1.3 语音识别的发展历程 语音识别技术研究现状:自计算机诞生以来,让电脑认识人们写的字,听懂人们说的话,就一直是人类的一大心愿和预期。在上个世纪六七十年代,计算机语音识别技术就开始了探究。语音识别技术作为新兴的人机交互方式已经受到人们的广泛关注。 1952年,贝尔实验室的Davis,Biddulph,Balashek开发了一个针对特定人的离散数字识别系统Ardy系统。这个系统主要实现是依赖于测量数字元音区域的共振波普。1960年代,人工神经网络被引入了语音识别。这一时代的两个突破是线性预测编码Linear Predictive Coding (LPC), 及动态时间规整Dynamic Time Warp技术。国内外在这些方面已经有了很多研究成果。微软的Bill Gates 在97年世界计算机博览会主题演讲会上,率先指出:下一代操作系统和应用程序的用户界面将是语音识别。还有上个世纪90年代IBM就推出了汉字的标准普通话版本。用户只要对着电脑讲话即可输入汉字。随着科技的发展,人们也把语音技术带到了人类活动的任何范围内,人们可以对着手机讲话,可以不用打字,随便动动口,手机就能帮你完成一连串的汉字输入。1,2,3在语音识别技术发展到迄今,已达到30年之久,IBM也有动作,公司已经在95年成立了中国研究中心,中文语音信息处理正是该中心三大研究领域之一。而Intel也提出了“做语音技术的提倡者”的口号,Intel除了举办首届语音技术国际论坛之外,还在国内各地区宣传语音识别技术。要说现在最火的还是Google的android系统,Google已经发布了一个基于android的最新语音控制应用“Voice Action”。它可以让用户通过语音控制自己的手机。1,2 我国从五十年代末至今,我国对语音识别技术的研究是层层递增。近年来,语音评测技术变现的越来越大的市场需求,尤其是在教育机构领域。科大讯飞是中国最大的智能语音技术提供商和中国语音产业唯一的上市公司,科大讯飞语音评测技术是业界唯一通过国家语委鉴定并达到实用水平的成果,在国家普通话等级考试、英语四六级考试中的成功运用,不仅标志着科大讯飞智能语音核心技术和市场优势地位逐年增强,更体现出讯飞人对教育事业发展的高度关注和持续投入热情。1.4 语音识别的基本原理语音识别过程与人对语音识别处理的过程基本上是一致的。它实际上是一种模式识别系统,和常规的模式系统一样,有特征提取、模式匹配、参考模式库等三个基本单元。4 语音识别系统的基本结构如图1-1所示。它分为三个步骤:(1) 前端处理:从语音信号中提取有效的特征参数来代表语音特征,具有很好的区分性。(2) 声学模型与模式匹配:声学模型通常将获取的语音特征通过学习算法产生,在识别时将输入的语音特征与声学模型进行匹配与比较,得到最佳的识别结果。5(3) 语言处理: 语言处理可以进行语法、语义分析,通过最好有高效的算法,保证语音识别的实现。测度估计模板快识别决策预处理特征提取识别训练参考模块 图1-1语音识别的原理框图Android手机上实现语音识别的原理:android手机先将用户语音输入的信号,送至Google的云端,借助于云端技术可以识别用户的语音输入,云端搜索完毕后,将返回打印数据。 1.5 论文组织结构 本论文共有五个章节,由于本论文主要撰写在android手机上实现的功能,所以,本论文就从android平台上入手,分析了android平台的程序框架及一些应用组件。利用android自带的丰富的API,设计并实现了短信提醒和语音识别技术。具体内容和各个章节内容的安排如下:第一章:是绪论,主要介绍了课题的背景、研究意义和语音识别技术的发展历程。第二章:是相关资料的概述,首先是介绍移动终端的人机交互的一些发展和特点,然后是介绍一些当今主流的智能手机操作系统平台,最后就是本章的小结。第三章:是android平台框架,主要是介绍本论文用到的android开发技术。首先,介绍android平台的应用框架层,android函数库和运行库,然后介绍应用程序的组件,最后是本章主要讲android开发的环境搭建。最后也是对本章的内容做个简单的总结。第四章:是基于语音识别的android手机短信提醒。首先说明一下语音识别短信的需求分析,介绍它的功能需求和性能需求,然后是它的总体设计,总体设计有:应用程序的层次架构图设计、应用程序功能模块图设计和文件的设置。接着,对本论文项目的主要模块进行详细设计,主要的详细设计内容有:应用程序桌面详细设计、后台语音识别服务模块详细设计、短信提醒模块详细设计。第五章:系统运行测试。分析运行和测试的结果。第六章:对本论文做一个总结,写写在做论文期间所学到的知识和所做的工作、收获和体会,以及今后所要开展工作的展望。1.6 本章小结本章主要介绍了课题背景、研究意义和语音识别的发展历程,简单说明了下本论文的组织结构。第二章 相关资料概述2.1 移动终端的人机交互2.1.1 人机交互的发展 人机交互是指人与计算机之间使用某种语言进行交流,以一定的互动方式,进行人与计算机之间的信息交流的过程。人机交互的发展历史,从人适应计算机到计算机不断地适应人的过程里经历了几个阶段:1、 早期的手工作业阶段 由部门同事或者设计者本人进行操作计算机,采用了手工操作和依赖机器(二进制机器代码)的方法来和当时十分庞大的计算机进行互动交流。2、 作业控制语言及交互命令语言阶段 这一阶段主要是计算机使用者或者程序员采用批处理作业语言或交互命令语言的方式和计算机进行交流。3、 图形用户界面(GUI)阶段 GUI的广泛应用是当今计算机发展的重大成就之一,人们不需要死记硬背命令语言,而是可以通过图形界面来直接操作计算机,使得不懂计算机的人也可以熟练地使用计算机。它的出现使信息产业得到空前的发展。4、 网络用户界面的出现以超文本标记语言HTML及超文本传输协议HTTP为主要基础的网络浏览器是网络用户界面的代表由它形成的WWW网已经成为当今Internet的支柱这类人机交互技术的特点是发展快,新的技术不断出现,如搜索引擎、网络加速、多媒体动画、聊天工具等。35、多通道、多媒体的智能人机交互阶段以手持电脑、智能手机为代表的计算机。利用人的多种方式(感觉、动作等)与计算机进行交互。2.1.2 人机交互的特点 人机交互的特点有两个:1、 高科技 计算机是便携式、平面化、超薄式和袖珍型的。2、 自然化、人性化 随着计算机的人工智能、图形学等技术的发展,人机交互的进一步要求是能通过人类的听觉、视觉、触觉和嗅觉以及人类的动作、语言与计算机进行交流,使得人与计算机的交流更趋向于自然化和人性化。2.2 手机主流操作系统平台2.2.1 WindowsCE系统 WindowsCE系统是微软公司开发的一种用于移动设备的操作系统,它是一种嵌入式系统,拥有自己的系统结构, 具备独立开发内核,该系统具有传统的windows风格,界面与电脑的windows操作系统界面类似,系统内置与桌面windows操作系统类似的办公软件,很容易上手,它是微软公司专门用于各种便携式的个人计算机。虽然windowsCE系统便于操作,但是它与Linux相比,还是存在一些缺点,如:1、windowsCE是非开发性操作系统,这样会使第三方很难实现产品的定制。2、效率低,占用过多的RAM,应用程序庞大。3、不是一个很好的跨平台系统,支持的cpu总数很少。 由于该系统有这些缺点,满足不了人们的需求,所以至今已被竞争对手远远的抛于身后。2.2.2 Symbian 系统 2005年至2007年,这个时期里,Symbian系统在移动设备上是独占鳌头,也是它最辉煌的时候,如果你关注手机系统的发展,也许会出现在你脑海里的第一个手机系统就是Symbian系统,但是由于最近几年Google的android系统和苹果的IOS的出现,致使它进入了没落时期。 Symbian是一个合资的公司,它是专门研发手机的操作系统,所以,它的合资商是一些大型移动通讯设备商,如:摩托罗拉、西门子、诺基亚等。 Symbian是一个实时性、多任务的纯32位操作系统,具有功耗低,内存占用少等特点,很适合移动设备的使用,经过不断的完善,可以支持GPRS、蓝牙以及3G等技术。由于诺基亚对Symbian的收购手段,使得Symbian也存在一些缺点,如:想用Symbian系统的人,只能购买诺基亚手机,说明群众的可选择性低,还有Symbian的各个版本之间的软件的不兼容性等。2.2.3 iPhone OS 系统 至今,移动设备上使用的系统,主流就是android系统和iphone OS系统。IphoneOS系统的用户界面的概念基础上是能够使用多点触控直接操作,人机交互界面非常的绚丽,而且交互方式比之前的手机更加方便。它主要对界面做了很大的创新。在人的触觉和视觉上都非常有创意而且表现出来的东西非常的直观,动画效果很好。 iphone OS系统是苹果公司为iphone开发的操作系统,它主要在iPhone和iPod touch上使用。它的系统架构分为四个层次:核心操作系统层,核心服务层,媒体层和可轻触层。它和上面两个系统不一样,它是一个开放性操作系统,能让第三方容易的开发出需要的软件。但是它只对苹果品牌的移动设备使用,这应该就是它的缺点。不过,由于它的界面炫丽,操作方便,外观好看,也是不少人的选择。2.2.4 Android操作系统 目前移动设备市场上最流行的手机开发平台就是android系统,android系统成为许多手机厂商竞争和追逐的对象,最主要的原因之一就是,它依靠Google的强大开发和媒体资源。仅仅上市两年,就已经超越在移动终端上称霸十年之久的塞班系统,成为全球最受欢迎的智能手机平台之一,现在,Android系统不仅仅在智能手机上使用,也发展到了在平板电脑市场上。 Android是由Andy Rubin创立的,后来以四千万美元卖给了Google。Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统,它是运行于Linux kernel之上,但不是GNU/Linux。一般GNU/Linux里支持的功能,Android里面大多数都没有支持,该平台由操作系统、中间件、用户界面和应用软件组成,它号称是首个为移动终端打造的真正开放和完整的移动软件。移动终端可以随时随地的安装android开发的各种软件,而且各个版本之间的相容性特别强,最主要的是android系统的软件不收取任何使用费用。目前为止,采用Android系统的移动厂商主要有台湾的HTC,美国的摩托罗拉,SE等,中国的华为,中兴,联想等。2.3 本章小结 本章主要介绍了人机交互的发展和特点,单独分析了人机交互的发展前景,为本论文的主要研究内容的需求打下了基础,此外,本章对目前智能手机上主流的操作系统,一一的介绍和分析,然后得到至今最有发展前景的操作系统Android操作系统,之后针对在该平台下开展的基于语音识别的android手机短信提醒的研究和开发实现。第三章 Android平台框架3.1 android平台架构在android操作系统中,整个框架主要包括:应用层,框架层,类库层和内核层。各个层次之间相互分离又相互关联,每层都有各自的分工,互不干扰,很好的表现出各层之间的低耦合性。该框架有五个部分组成,如图:现在,我们从最上层开始分析。1、 应用程序层该层主要有移动终端常常自带的一些手机软件,如:email客户端,SMS 短消息程序,日历,地图,浏览器,联系人管理程序等。这些应用主要的开发语言是JAVA语言。因此使得熟悉JAVA开发的开发者,能很快的过渡到android系统软件的开发中。开发者开发的软件也是应用在该层上面。2、 应用程序框架层 该层提供了android系统里的所有应用程序的API,由于Android系统是完全开放性的,因此,开发人员可以完全的访问应用程序所使用的全部API框架。可以利用这些API重新编写和替换相应的应用程序,这样,简化了程序开发的架构设计而且降低了开发者的开发难度和开发时间。同时,该层有一系列的服务和系统,如下:l 可扩展而又丰富的可视视图(Views),可以用来构建应用程序,它主要包括:列表,网格,文本框,按钮,还有可嵌入的web浏览器。l 内容管理器简单的说,它就是一个使得不同程序之间可以分享数据。l 通知管理器使得应用程序可以在状态栏中显示自定义的提示信息。l 资源管理器提供应用程序所使用的各种非代码资源,如:图片,布局文件,颜色文件等。l 活动资源器管理各个应用程序的生命周期和导航退回功能。3、 系统运行库层 Android包含一个c/c+的集合,当开发者使用android应用程序架构时,android系统会通过这些集合来支持对开发者使用的各个组件,下面是一些库:l Surface Manager管理多个程序执行时候的相互存取和显示,同时也负责对2D与3D的绘图进行合成显示。l Media Framework中文是多媒体库,支持多种常用的视频,音频格式的播放和录制,比如:MPEG4、MP3、H.264、AAC、ARM等。l SQLite这是相对于Oracle、mysql、sqlserver等一些数据库还小的小型数据库,它是关系型数据引擎。l OpenGL|ES是根据OpenGL ES API的标准实现的3D绘图函数库。l FreeType提供矢量和位图。l WebKitWeb浏览引擎。每个android应用程序都是采用Java语言编写的而且,它都运行在Dalvik虚拟机上,而Dalvik虚拟机只执行“.dex”的文件,Java程序通过编译时,还需要通过android的SDK中的“dx”工具将其转化为“.dex”的后缀文件,才能正常的运行。4、 Linux内核层 Android是基于Linux2.6内核提供核心的系统服务,其中的一些系统服务如:进程管理,内存管理,安全性,驱动模型和网络协议栈等。3.2 Android应用程序组件程序员开发的android应用程序一般都是由以下四种核心构造块组件的一种或者多种组成的,它们分别是:Activity, Intent Receiver, Service和Content Provider。这些组件通过一个工程Manifest绑定在一起,使它们相互联系,下面简单介绍一下这四个组件。1、 Activity为用户展现一个可视化的用户界面,可以说,一个Activity就是一个屏幕,但是一个应用程序可能存在一个或者多个activity,可以说只要开发者开发的应用程序需要可视化的界面,就要用到Activity。2、 Intent Receiver应用程序消息传递框架,它是各个组件之间的桥梁,它可以在给特定的服务传播消息来执行你的意图。3、 Service 它是一个在后台运行的应用程序,它没有可视化界面,比如:你播放音乐的同时,也可以上网聊天或者做其他的事情。 只要你不自动关闭它,它就会一直执行。4、 Content Provider它可以实现不同应用程序之间的数据共享。应用程序可以将自己的数据保存在SQL数据库中、文件中或者一些有效的媒体中,如果你想访问其他应用程序的数据,那么你可以通过Content Provider扩展的ContentPrivider类和ContentResover类,进行有效的通信。3.3 Android开发环境因为android应用程序的开发语言是Java语言,因此,我们需要先安装JDK,由于android软件的兼容性,我们需要安装1.6版本以上的JDK。由于android系统是基于Linux的,因此,它的SDK自身会自带一系列的DOS命令,这些命令可以在CMD中执行。但是Java开发常用的工具是Eclipse,因此,android提供了针对于Eclipse的插件ADT。3.3.1 android开发常用的开发工具 Android SDK Manager:主要功能有1)、API和对应的文档资源。2)、可以查看已安装的android版本,3)、可以查看新版本和已经升级的版本。 AVD Manager:相当于一个android手机,但是它是在pc机上运行的android虚拟机,这是在android开发环境搭建好了之后才可以使用,虽然它是一个虚拟机,但是,我们可以在Eclipse里管理和创建它,可以设置AVD的名字,显示外观,内存大小等。 DDMS:是一个测试平台,开发人员常常使用的测试工具。 ADB:是一个功能强大的命令工具。可以完成PC机文件与虚拟机之间的操作。3.3.2 android开发环境的搭建 建立Java运行环境因为android软件是java语言开发的,因此,我们需要安装支持java语言开发的环境,首先,在sun公司官网下载JDK安装包,照着指示安装,安装完后设置它的变量。最后输入Java version查看jdk版本并检测是否安装成功。建议jdk版本要1.6以上的。 安装Eclipse和android SDK安装eclipse很简单,直接从官网下载,解压就可以使用,不需要安装。建议eclipse版本3.6以上。接下来就是android SDK的安装,下载,解压到任意路径,运行里面的 SDK Setup.exe,这时它会提示你需要安装的android版本,这由自己选择。 安装 ADT打开eclipse IDE 进入菜单中的“Help”-“Install New Software”点击Add 按钮,接着输入/android/eclipse,这是ADT的下载网址,根据提示一步一步安装。3.3.3 android工程文件解析安装好android环境之后,当我们建立一个android工程时,会看见工程下面出现很多个文件夹,这些文件夹都有各自的功能,他们是该工程的重要组成部分。下面简单介绍一下这些文件夹的作用。/src:这是工程的主要代码存放处,开发者写的代码都放这文件夹里。/gen:它存放的是系统自动生成的R.java文件,该文件不能人为的去修改,否则会出现错误。/res:它存放android工程的资源文件。/drawable:它存放的是工程里用到的图片。/values: 里面有个strings.xml文件,里面定义了各个控件的标签。3.4 本章小结本章主要对android平台的一些介绍,围绕这android系统进行对android的框架,组件,函数库,运行库做一个简单的介绍,最后,简单介绍了一下android平台环境的搭建。第四章 基于android语音识别的短信提醒 开发一个好的应用程序,首先就要满足用户的广大需求,用户的需求分析对于开发软件来说,是一个必不可少的重要环节,它能使得软件更加的完善,使得有更多的用户喜欢这款软件。那么需求分析这个环节那么的重要,它的任务是什么呢?软件需求分析的基本任务就是要让系统知道它要做些什么,就是对系统提出具体的用户要求。4.1 语音识别短信的需求分析 4.1.1 功能需求 本系统主要包括短信监听/停止监听、发短信、短信提醒、语音识别等功能模块。该软件因为是在android系统上运行,因此它具有美观,便捷的用户触摸界面,使得用户能方面快捷的使用。下面我们通过用例图来对该系统的这几个功能做需求分析。 1、短信监听/停止监听当用户打开软件,上面有个监听按钮,用户可以通过该按钮进行短信的监听。也可以通过停止按钮,对短信停止监听。用例说明如表4.1.1-1参与者用户概述对用户短信的监听和停止监听前置条件用户手机要有短信的接收。后置条件无 4.1.1-1表 2、发短信用例说明,表4.1.1-2.参与者用户概述进行短信的发送前置条件1、 要有接收者的手机号码2、 要有发送的短信内容后置条件无 4.1.1-2表 3、短信提醒用例说明,表4.1.1-3.参与者用户概述用android系统的功能对用户进行到点短信自动提醒功能前置条件1、 手机系统的时间必须准确。2、 短信格式要求是硬性的。3、 必须在短信里设置时间。后置条件短信有一定的标准格式。 表4.1.1-34、语音识别用例说明,表4.1.1-4.参与者用户概述对用户输入的语音进行识别。前置条件1、 手机要有输入设备。2、 要有网络连接。3、 输入语音要清晰。后置条件无 表4.1.1-44.1.2 性能需求1、由于该软件是放在android手机上使用的,而且目前,大多用户都不想等待很漫长的软件运行时间,因此,它有时间性能的要求,它的运行速度要在用户接受的范围之内才行。2、可维护性,这是对日后用户使用该软件时,发现存在漏洞时,开发人员可以进行维护工作。3、可移植性,由于android系统不断的更新,为了适应android系统,使得该软件能移植。4.2 语音识别短信的总体设计4.2.1 应用程序的架构图该软件的架构图如图4.2.1-1图界面层启动/停止监听模块短信发送模块短信提醒模块语音识别模块监听短信格式监听层短信到点提醒短信提醒层调用android语音识别,识别输入的语音语音识别层 4.2.1-1图有了程序架构图,我们从图中可以看见各个层之间的联系,下面,我们对各个层做个简单的介绍。1、 界面层:包含了系统的主要模块。包含了启动的主模块,该主模块决定软件的开始和终止,然而一切的副模块都是从主模块切入进去的。2、 监听层:该层的主要组件是IncomingSMSReceiver继承BroadcastReceiver类,它用于对短信事件的广播,然后进行监听。之后用一个Toast类,做为提醒消息,对监听的事件进行提示给用户。Toast是android中实现提示信息的类。3、 短信提醒层:该层的主要组件是ShowDialogActivity类,它是一个副模块,主要显示短信内容的提醒。4、 语音识别层:该层我把它直接嵌入在了界面层,但是它运行语音识别时,会调用android自身的一些语音识别类,然后,在界面层中加多了一个列表,用于管理语音识别的结果。4.2.2 应用程序功能模块有了程序架构图之后,我们可以进一步的分析程序的功能模块,该软件的功能比较简单,就是发短信、短信监听、提醒和语音识别四个功能。下面,我来对这几个功能模块进行一一分析。1、 发短信模块:android系统有个SmsManager类,它里面包含了短信的一切信息,开发者可以调用该类对信息进行操作。发短信有两个文本框,一个是输入接收者的手机号,一个是输入发送的内容。2、 短信监听、提醒模块:这里把两个模块合在一起,因为它们都是关联的。短信监听模块,继承了BroadcastReceiver类,如果监听接收的短信格式正确,则对短信进行解析,获取时间,再进一步提醒;提醒模块调用了android系统的Calender类,然后对该类进行时间修改的操作,使得系统到了短信解析的时间就自动弹出一个提示框。这时软件也又调用了android系统的AlertDialog类,该类就是弹出提示框。3、 语音识别模块:在主界面用一个按钮事件来管理语音识别,通过android系统的PackageManager类进行对语音设备的检查手机是否存在语音识别设备,然后通过广播的方式对手机进行语音识别的过滤,获取语音识别的数据,接着用一个列表视图对语音识别的数据进行管理,然后显示在主界面上。由于我们是语音识别的短信发送,因此,我们可以在语音识别的数据中,选中我们需要发送的文本内容,这样,我们就可以通过用户的语音输入进行语音发短信了。4.2.3 文件的配置 在第三章的时候已经说过android系统中各个层次之间相互分离又相互关联,每层都有各自的分工,互不干扰,各个组件也是如此,组件的启用和调用都需要在android系统中进行注册才能进行运行,那么,我们用什么作为各个组件相互关联的桥梁呢?这就是我们要讲的文件的配置,它在工程里是用一个XML文件写的,一般命名为AndroidManifest.xml,一般格式如下代码,现在,我对这个文件具体说明一下: 应用程序块 ( android:icon=drawable/ic_launcher android:label=string/app_name 程序类 ( 软件图标=string/app_name 工程类名=.Android_speakActivity ) )1、这是该文件的根元素,它必须包含一个元素而且要指定一个包属性和一个xmlns:android属性,包属性为命名应用程序的java包,这是开发程序必须用到的程序包,它也用来避免命名空间发生冲突,而xmlns:android为android指定了android的命名空间,一般我们把它的值设为“http://apk/res/android”。2、它是指定android应用程序中所需要使用的sdk版本。3、它是位于下,描述了应用程序的组件-活动,服务,广播接受者,等各个组件,以及组成应用程序的内容提供器。它下层有、这些都是应用程序活动的属性。在它里面的组件顺序,也决定了哪个组件优先运行。4、在android软件开发中,往往我们需要访问android系统的一些内部权限,因此,我们需要在配置文件中添加一个这个元素里写入我们需要访问的权限,比如:打电话权限、发短信权限、蓝牙权限等。这样我们就可以得到我们需要的权限。5、由于android系统中很多消息,如果我们的应用程序仅仅需要一条或者规定的几条消息的时候,我们可以在中的、等组件元素中添加,因为该元素能过滤掉不需要的消息,得到开发人员需要的消息。4.3 语音识别短信主要模块的详细设计该软件主要有三个模块的设计,即主界面模块设计,语音识别模块设计和短信提醒模块设计。下面,我们对这三个设计进行一个详细的设计说明。4.3.1 应用程序主界面详细设计 一个美观的主界面,能让该软件得到更多用户的肯定,控制该软件的主界面的核心代码组件是TestSmsActivity,该类实现了显示软件的界面,它也是整个应用程序的核心组件,我们来看下TestSmsActivity的详细设计。图4.3.1-1是该类的设计思路图。 主线程主界面设计发信息短信提醒语音识别 图4.3.1-1TestSmsActivity被创建时,android系统默认它就是一个主线程,从图上可知,所有的事件都发生在这个主线程里,因此TestSmsActivity的总体设计可以从两个方面考虑,一方面是界面的视觉效果,用户都喜欢界面美观,易操作。该软件的界面比较简单,一个界面占据了一个当前的窗口,响应所有的窗口事件,其中包括按钮控件、文本控件、列表控件、菜单等界面属性。另一方面是TestSmsActivity为了保持软件的持久性,当程序做一些跳转时,需要管理它的生命周期。比如:一个Activity跳转到另一个Activity或则跳转到别的组件,都需要保证主线程不间断,这样才能保证软件的稳定性。TestSmsActivity在设计的过程中,它可以细分为以下几个部分:1、处理主界面各种视图控件及控件发生时的响应事件,下面我写出了处理控件和控件响应事件的方法:(1)不管是怎样的控件,都需要对它初始化才能使用它,因此,我们需要为每个视图控件声明一个控件对象。(2)android系统中,视图控件的对象是与相应的xml布局文件中声明的id进行绑定的,该id可以在R.java中自动生成,然后在程序代码中,我们可以通过findViewById()函数对控件对象和xml布局文件中的id进行绑定。(3)该软件因为有按钮事件,因此,我要为我的按钮控件设置按钮监听器,在android程序代码中,为每个按钮控件设置了不同的监听器,setOnClickListener,该类是为控件绑定监听器,可以根据监听的结果,重写该监听函数的内部方法OnClick,执行不同的监听操作。 2、处理各个组件之间的通讯,把一个组件的消息或者数据转发给其他组件使用,在android开发中,我们用putExtra()函数来实现这各个组件之间的数据传递。 3、实现主界面与其他界面之间的跳转切换逻辑,即一个界面用一个控件响应事件操作,使它跳转到另一个界面。在android开发中,我们用intent机制实现各个组件之间的跳转。比如:本论文中的TestSmsActivity与时间提醒的CallAlarm类之间的跳转,可以用Intent intent=new Intent(this,CallAlarm.class)来实现这两个组件之间的跳转。4.3.2 语音识别模块详细设计在该软件中,实现语音识别的主要是通过一个按钮事件让界面,从主界面跳转至语音搜索界面,然后返回语音识别的数据。具体交互说明如下:因为现在的智能手机有些会自带语音识别设备,有些不自带,所以,我们在android系统中,首先要检查语音识别设备是否存在。我们使用android开发中的getPackageManager()函数获得语音识别设备,然后判断是否获得语音识别设备,如果获得,则按钮可用并进行按钮的响应操作;如果没有获得,则按钮设置为不可用。 当获得语音识别设备时,用户点击按钮,android系统会把消息传递给speak_bn对象,speak_bn是TestSmsActivity里声明的Button类型对象,然后触发该对象的OnClick()函数,在该函数里,intent机制命令主界面跳转至语音搜索界面,然后语音识别经过云端搜索得数据后,通过onActivityResult(int requestCode, int resultCode, Intent data)函数用列表的方式返回主界面,这是用户可以选择自己需要的数据,然后通过列表按钮控件的OnItemClickListener()函数触发该对象的OnClick()函数,该函数里调用了SmsManger的setText()函数,直接把用户选中的内容输入到文本框里,这样就完成了语音识别写短信的功能。 语音识别的时序图如图4.3.2图。speak_bnstartVoiceRecognitionActivity()onActivityResult(int requestCode, int resultCode, Intent data)1:getPackageManager()TestSmsActivity2:setEnabled(false)3:OnClick()5:setText()4:intent() 图4.3.2语音识别时序图4.3.3 短信提醒模块详细设计该软件的短信提醒功能主要有三个类构成,分别是: MyMessage、CallAlarm、ShowDialogActivity。该模块通过这四个类的相互关联,达到实现该模块的功能。具体关联如下说明:首先定义一个短信类,该类主要有短信的主要属性和该模块定义的短信格式。短信格式如:22:13,要开个关于的会议,准时到达什么地点集合。这是关于一个会议的短信格式。接着,通过Mytime()函数对短信输入的时间进行解析,提取该时间的小时和分钟,把该时间传入initCalenderByTime(int hour, int minute)函数,该函数主要设置提前一个小时向用户发出提醒功能。接着,把该时间和短信的内容传入showDialogByTimeAndAlarm(int hour, int minute, String message_content)函数,在该函数里,主要工作是获得该时间与android系统里的时间的时间差,然后通过android系统里自带的Pendingintent机制进行与CallAlarm类跳转。而CallAlarm类主要的作用是进行字符串的对比,如果对比成功,则跳转至ShowDialogActivity类,该类主要功能是为用户显示提醒的短信内容。短信提醒功能的前提是要对短信格式进行监听,如果,监听到的短信格式不对则无法对用户进行短信提醒。它的时序图如下图:MyMessageinitCalenderByTimeshowDialogByTimeAndAlarm(int hour, int minute, Strin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论