版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、浙江大学电子信息学院本科毕业设计(论文)(2012 届)论文题目 Android手机语音录入软件设计(英文) Design of Voice RecordSoftware for Android Phone所在学院专业班级学生姓名学号指导教师职称 教授完成日期 2012年 4 月17 日Android 手机语音录入软件的设计2012年4月摘要Android 系统是基于 Linux 内核的一个操作系统。而它采用的 Linux 内核, 这套系统的开源性有及其良好的拓展性, 任何的开放手机联盟的成员都可以任意 的使用它的 SDK 包。它不仅仅具有出色的开发、调试环境,而且还有很多强大 的多媒体技术的
2、支持和扩展, 在很多方面都为用户提供了非常方便的使用环境和 功能。An droid平台作为一个新兴的手机开发平台在当今这个迅速发展的时代里, 其显著而优秀的能力。本文阐述了一种 Android 手机平台的录音播放器的设计方案。 首先是介绍了 Android 的技术背景和意义,描述了 Android 的关键技术和在未来的发展趋势。 然后在介绍了如何在计算机上搭建 Android 的开发平台,是一套基于 Android 平 台的手机录音与播放软件的设计方案,这个软件分为录音界面和播放器验证界 面。在软件系统上使用 AVD 虚拟机成功的编码和测试了 Android 录音播放软件, 实验的结果充分的表
3、明了以 Android 系统为基础的开发程序是拥有非常优秀能 力,而且在真机上的成功安装使用更是表明了 Android 程序在日常生活中能够起 到的作用,在未来的开发和应用上, Android 的平台更是能够作出更大的贡献。关键字:An droid;智能手机平台;录音软件AbstractAndroid platform as an emerging mobile development platform in todays era of rapid development, significant and outstanding ability . The Android system is
4、the kernel of a Linux-based operating system. It uses the Linux kernel, the open source nature of this system and its expansion, the any of the Open Handset Alliance members can use its SDK package. It not only has excellent development and debugging environment, and there aremany powerful multimedi
5、a technology support and expansion in many ways to provide users with a very easy to use environment and function.This paper describes the design of the recording of an Android mobile phone platform player. The first is to introduce the Android technical background and significance, and describes th
6、e Android critical technology and the development trend in the future. And then describes how to set up Android development platform on your computer is set based on the Android platform for mobile recording and playback software design, software verification interface is divided into the recording
7、interface and player. Use the success of the AVD virtual machine coding and testing Android recording playback software on the software system, the experimental results fully demonstratedthe development program is based on the Android system has a very good ability, and successful installation on th
8、e real machine is that the Android application role it plays in their daily lives, Future development and application of the Android platform is able to make greater contribution.Keywords:Android ; Smart phone platform; Recording Software目录1 概述 1.1.1 课题的研究背景和意义 1.1.2 研究开发内容 主要开发内容 论文
9、内容 3.2 系统开发环境及相关技术 4.2.1 Android 开发环境介绍 4.2.2 Android 开发平台搭建 4.2.3 An droid 的 API5.3 方案设计 8.3.1 系统分析 研究目标 需求分析 性能分析 8.3.2 界面设计 8.3.3 Activity 切换 9.3.4 musicplayer的常用方法介绍 113.5 程序模块设计 1.2.4 程序开发 Activity 分类 .1 语音播放器 .2 语音的录入 用户界面 1.8.5 系统测试与结论 1.9
10、.5.1 系统测试 结论 2.1.致 谢2.2.参考文献 2.3.附录 1 真机测试图 2.4.附录 2 毕业设计作品说明书 2.5附录 3 系统主要源代码 2.6浙江大学本科毕业论文-3-1概述1.1课题的研究背景和意义An droid平台因为开放性使得这个平台具有非常好的发展前景。开发商在网 上评测出使用的全球移动手机开发使用最多的平台调查结果显示:市场上最为火热的是Linux平台,这款移动平台是大家最主要选择的开发平台,它在全球的市场份额占到了 30%,当然这与An droid的开放性有很大的关系。而且 An droid智 能手机的市场份额在2011年9月份的时候就已经一
11、举超过了 iPhone平台,成为 了仅次于Symbian平台的全球第二大手机操作系统,而这一历史性时刻比一些专 家的预测缩短了两年多的时间 。2010年已经成为了 An droid元年,而且这个势头已经蔓延到了中国市场。I0S 平台在赚钱方面对许多的开发者而言吸引力是相当巨大的,很多开发者毫不犹豫的投身到了 An droid平台开发,虽然现在在开放式的开发平台上的赚钱机会已经 变得越来越小,但是这个平台已经平稳的度过了高峰期,很多开发者和开发商都在酝酿在这个平台做出具备杀伤力的产品,投身平台的开发者都已经做足了充分的准备,所以这个平台在未来的前景是非常可观的,因此An droid在最新的开发研
12、究上的排名第一已经是不足为奇 。Strategy Analytics分析师亚历克斯-斯贝克特(Alex Spektor)表示:“今年第 二季度,An droid智能手机出货量达到了创记录的 6000万部,在整个手机市场上 占到了 19%的份额,去年第二季度全球智能手机出货量为4200万部,相比增长了 43%。运营商加大购机补贴力度、高端厂商之间的竞争以及使用Symbian和An droid等操作系统的低成本机型不断涌现促进了智能手机市场的增长速度超过 了手机市 场的平均增长速度,这个 部分充分的体现了当前的世界格局中的 An droid的优势和能力是非常迅速的在增长,如下图1-1所示3。08年
13、第四季度0. 41 亿09年第一季度0. 3652 亿09年第二季度0. 420 亿09年第三季度CL 4139 亿09年第四季度0. 530 亿10年第一季度0. 543 亿10年第季度CL 6亿图1-1 an droid手机涨幅从这个报表大家可以看到08年度第四季度与 09年度第四季度的对比,An droid智能手机市场的销售量已经上涨了15%,从报表上面我们看到整个 09年度整个智能手机市场都是呈现出一片上涨趋势,全年的出货量达到1.738亿部手机。而且从10年开始,单单从第一季度和第二季度我们就能看出来上涨速度 变得非常迅速,从09年第一季度跟10年的第一季度同期相比增长比就已经到达
14、了 1.487: 1,从10年第二季度跟09年第二季度对比我们就能看出来比例依然是 1.43: 1,所以从这个趋势来看未来肯定是智能手机占主导方向地位o安卓在全球市场的成长壮大,而塞班在全球市场份额不断下跌已经成为不争 的事实。安卓操作系统发展迅猛主要得益于免费、开源和良好的产业运作策略, 这三点为安卓在智能手机市场赢得更多的发展机遇。代码的开源让更多的开发者 开始进行应用开发;应用的丰富吸引到了更多用户选择 An droid平台。此外,谷 歌通过OHA联合众多厂商进行系统研发,将系统应用推广到更多的终端产品中, 确保用户体验的持续改善。1.2研究开发内容1.2.1主要开发内容An droid
15、平台3G手机录音软件是基于 An droid手机平台,运用Java语言, 从手机上直接录取原音文件,可以进行重要信息的存入,也可以在会议中使用, 非常方便。An droid平台3G手机录音软件的开发可以把原有的录音工具丢弃, 只需要随身携带一只小巧的An droid手机,就可以随时随地的进行语音的录入,同时也可以增强对社会语音资料方面的重视,提供在公共场合的一些方便措施, 能够为日常的会议,开幕式做好防范,随时可以代替专业的录音笔等器材。想一想,随身携带一只具备了多种功能的手机,远远要比携带一台巨大的设备要方便 很多。在An droid的录音写入文件当中,存在着 MediaRecorder和M
16、ediaPlayer类, 还有AudioRecord和AudioTrack类。由于在圭寸装的使用和录音的播放上 AudioRecord和AudioTrack类的使用比较麻烦,而且不是都能够获得成功,所以 就采取了 MediaRecorder和MediaPlayer类作为本次代码编写的首选方案。1.2.2论文内容本文共分为五章,主要介绍了关于录音软件在An droid平台上的开发使用,通过 MediaRecorder和 MediaPlayer类实现外部录音的功能。第一章介绍了 An droid最近几年以来的发展趋势和未来前景;第二章介绍了An droid开发平台的搭建和API的部分模块介绍;第三
17、章对An droid语音录入播放器的可实现性进 行了分析和大致上的规划,在 Activity切换的行为上进行了叙述;第四章介绍了 软件的设计思路和整体软件的过程;第五章对An droid录音播放器进行了测试和 验证,并且给出了实验过程中的经验和心得想法。浙江大学本科毕业论文-7-2系统开发环境及相关技术2.1 Android开发环境介绍An droid的上层应用程序是使用的 Java语言开发,同时还需要基于 Dalvik 虚拟机。所以,Google公司推荐使用主流的Java去继承开发环境Eclipse。不过 只有Eclipse还是远远不够的,因为是使用 Java语言进行开发,所以这部分还应 该
18、有由 SUN 公司提供的 Java SDK(其中包括 JRE: Java Run time En viro nment)。 此外,An droid的应用程序开发和Java开发有较大区别的,所以还需要有Google 提供的An droid SDK。在Eclipse上安装一个AVD的虚拟机也是必要的。同时, 还需要在Eclipse安装ADT,使得在有更新程序的时候可以能够为An droid开发提供开发工具的升级或者变更,也是Eclipse下开发工具的升级下载的工具5。简言之,需要以下软件,才能搭建 An droid开发环境,从而进行An droid应 用程序的开发。 Java SDK(2) Ecl
19、ipse(3) An droid SDKADT2.2 Android开发平台搭建An droid开发平台搭建步骤:在配置安卓的环境是要先搞定里面的 ADT和SDK的安装,所以首先要先进 行的是ADT的安装。启动Eclipse后,然后选择菜单里面的 Help-lnstall New Software ;在弹出窗 口中,点击Add按钮,Name随便填写(比如An droid),Location 一栏填写(ADT 的 plus-in 网址),http:/dl-ssl.google.eom/android/eclipse/,然后点击 OK ;等待在 线更新可用列表,然后会跳出一个对话框,在下面的列表框
20、中的Developer Tools 中选择并安装 An droid DDMS ( An droid Dalvik Debug Mo niter Server)和 An droid Development Tools (ADT);选择Next后,接受安装协议,点击 Finish,进入漫长的等待时间,然后就安装完成。完成后界面会提示重启Eclipse,这个时候只需要点击Restart Now就可以了。完成了 ADT的安装之后就可以开始配置SDK :点击Eclipse菜单, Win dows-Prefere nces然后点击左侧的 An droid设置项;在右侧的SDK Location 里填入我们
21、上文解压的SDK目录C:Program Filesandroid-sdk-windows,点击确 定,然后再继续选择刚才解压完的An droid SDK文件夹所在目录;点击菜单Window-Android SDK and AVD Manager;在弹出窗口中,点击 Update All 按钮, 会弹出可选的程序包版本,不过不用全部都安装,只需要安装以下几个就可以了:An droid SDK Tools, revisi on x ;An droid SDK Platform-tools, revisio n x ;Docume ntati on for An droid SDK, API xx,
22、 revisio n x ;SDK Platform An droid x, API x, revision x ;Samples for SDK API x, revision x;An droid Compatibility package, revisi on x。上面的这些都完成之后就可以开始配置虚拟机了。点击菜单 Window-Android SDK and AVD Manager;点击左侧的 Virtual Devices,新建 AVD ( An droid Virtual Devices = AVD,An droid 虚拟设备);点击“ New.” 按钮,弹出 “ Create
23、new An droid Virtual Device (AVD)” 对话框;在 Name 中输入:Android-AVD,Target中选择(这个 API版本要选对,跟上文对应): An droid 2.2 - API Level 8 ; Ski n里Build-i n屏幕大小建议选的小一点,尽量不要 选择那些大屏幕的,不然在读取的时候可以能会要很长的等待时间,甚至导致无法读取出虚拟机,笔记本可能会满屏高度,但是满屏会导致不好操作;其它选项 按照默认即可(后续仍可以随时修改,点击右侧的Edit按钮)点击“Create A/D” 按钮即可;可以点击右侧的 Start.进行测试,弹出窗口中点击
24、Launch启动虚拟 机,AVD加载很慢,所以一般花费2.3分钟也是很正常的事情。2.3 Android 的 APIMa nifest eleme nt:开发An droid应用程序时,了解该平台API变更管理的基 本方法和概念是很有帮助的。同样的,在知道了API级别标识以及该标识如何 保障应用与实际硬件设备相兼容对于开发及后续的发布、维护都是有益的。An droid里面的API级别取值都是一个整数值,而且它是唯一一个标识了一 个具体版本的An droid平台,以及框架的API的版本。An droid平台为广大的研发者提供了一整套完整框架的API,使得An droid平台上的应用程序可以与系统
25、底层进行交互。API由以下一些模块组成:(1) 一组核心的包和类; 清单(Manifest)文件的XML元素和属性声明;(3)资源文件的XML元素和属性声明及访问形式; 各类意图(Intents);(5)应用程序可以请求的各类授权,以及系统中包含的授权执行。每个An droid平台的后续版本会包括它提供的更新的An droid应用程序框架的API。该框架的API的更新设计,使高版本的API与早期版本兼容。也就是说, 在新版本API中大多数都是新增功能,和引进新的或替代的功能。作为API的部分升级,老的替换的部分已过时,但不会从新版本中删除,使得已有的应用程 序仍然可以使用它们。在极少数情况下,
26、旧版本 API的部分可能被修改或删除, 通常这种变化是为了保障 API的稳定性及应用程序或系统的安全。所有其他早 期版本的API将不做修改的保留。Android:minSdkVersion指明该应用程序可以运行的 API最低版本,默认是 “1”。Android:targetSdkVersion指明该应用程序设计时期望运行的目标API版本。在某些情况下,这允许应用程序使用目标API级别下定义的清单元素或行为,而不是只限于使用最低 API级别定义的内容。Android:maxSdkVersion指明该应用程序可以运行的最高 API级别。重要声 明:使用该属性之前请阅读文档。比如,要指明一个应用程序
27、能够运行的最低 API级别,应当在该应用程序的清单文件的元素中加入Android:minSdkVersion属性。Android:minSdkVersion的值是一个正整数,对应的是该应用程序能够运行 的最低平台的API级别标识。用户尝试安装一个应用程序,或者在系统升级后 重验证应用程序的时候,An droid系统首先会检查应用程序的清单文件中的属性, 将其与系统内部 API级别对比。系统只有在满足下列情况时才允许进行应用程序安装如果声明了 Android:minSdkVersion属性,那么其属性值就必须要小于或等 于该系统的API级别对应的值。如果系统没有发表声明,那么系统就会默认该 应用
28、An droid的程序运行需要的最低 API级别是1。如果声明了 Android:maxSdkVersion属性,那么其属性值就要必须等于或大 于该系统的API级对应的值。如果系统没有发表声明,那么系统会默认该应用 程序没有最咼API的级别限制。浙江大学本科毕业论文-13-3方案设计3.1系统分析3.1.1研究目标(1) 学习、了解An droid应用程序的设计并且基础掌握其开发过程。掌握和使用An droid代码进行An droid平台上的3G手机录音软件开发。本软件是基于Eclipse的开发环境,直接在Eclipse进行编程和调试过程,最 终下载到手机上可以实现功能。3.1.2需求分析本软
29、件是一个设计界面简洁干净的录音软件,具有双向的Activity操作,一个是语音播放界面可以点击按钮进入到录音界面,另外一个是可以从录音界面返 回到语音播放界面。并且音乐库是设定在SD卡的根目录下,每次打开程序都会自动更新音乐库,并且显示所有amr后缀的音乐文件。从上面的描述中可以基本了解软件的功能需求:(1) 启动主菜单应用程序;(2) 设置界面:进行语音、播放界面的切换,能够简单的对程序进行操作;(3) 显示界面:通过文字显示当前的录音情况和保存地址。3.1.3性能分析要求能够迅速简洁的使用录音软件,到达使用方便,检验简单的程度,无论何时何地都可以自由应用。3.2界面设计根据软件程序的需求分
30、析,这个应用程序应该要包含两个主要的用户界面,在这里,就是更进一步的来分析在这两个的用户界面里面,每一个用户界面需要包括哪一些的内容,应该怎么样的来添加使用。每次进入播放界面时,播放程序都会自动搜索手机的SD卡根目录下面的音 乐文件,由于代码设置的过滤模式,所以只能够看见有 AMR后缀的文件的文件在录音界面中,在录音的过程中程序需要提示用户此次录音文件的保存地址 和文件的保存文件名,以方便用户寻找和使用关于此次录音的播放文件。在进入录音界面之后,可以点击实现录音的效果,在录音界面的Activity按钮可以返回播放界面,同时还设立了返回值,可以回到首页面去进行播放的验证,相当是设置了一条快捷通道
31、。在音乐播放器中,需要在列表里显示出所有的在手机 SD卡根目录下的音乐, 所以需要划分一块区域来显示,其中就显示为文件名加音乐文件格式的后缀。在录音的程序里面,设置了给用户看的录音文件的保存提示界面,可以让用 户看见文件的自动保存文件名以及录音文件的保存地址, 让用户在使用录音文件 的时候更加的方便,也使录音程序更加的贴心,下面就是根据对用户界面显示内容的分析,绘制出用户界面的草图,如图3-1所示音乐播放器播放列表1 | activity 11(a) 播放界面(b)图3-1用户界面草图录音按钮activity录音提示界面录音界面3.3 Activity 切换一个应用程序通常都是由多个Activ
32、ity组成。因此当用户启动一个应用程序时见到的第一个交互界面(Activity )就叫做主 Activity。为了完成相应的动作, 一个Activity的操作界面里可以启动另一个 Activity,每当启动一个新的Activity, 前一个另外的Activity就将停止,但是系统将仍然保存这个对象在后台栈(back stack)里面。当启动一个新的Activity,它就放入back stack中,并且获得用户焦点。Back stack遵循后进先出原则,所以当用户按手机上的back按钮时,当前 的Activity将会从back stack中移除,前一个Activity线程就将被恢复 。表3-1更
33、加详细的列出了 Activity生命周期中各个方法的详细描述以及系统 在调用相应方法后能否杀死对应的Activity 。表3-1Activity生命周期描述方法Killableafter下个调用法描述on Create()NOon Start()在Activity第一次创建的时候调用。在这个方法 里你应当做所有全局的操作,比如创建视图,填充Activity需要的数据等。这个方法通过Bundle 对象获取前一个 Activity的数据。on Restart()NOon Start()在Activity停止后,再次被启动前调用活动结束 后已经停止,之前被再次启动调用。on Start()NOon
34、Resume。 或 onStop()刚好在Activity将要被用户可见前调用,此时还 不可以看到 Activity所代表的界面。on Resume()NOon Pause()当Activity所代表的页面可见的时候调用,在这个时候,该 Activity位于Activity栈顶,拥有用 户输入焦点。on Pause()YESon Resume() 或 onStop()当系统启动另一个 Activity时调用。这个方法通 常用于持久化未保存的数据的更改,停止动画, 以及一些消耗CPU的操作。尽管CPU的处理速 度很快,但是它必须做上述操作,应为on Pause方法没有返回的话是不能创建下一个Ac
35、tivity oon Stop()YESon Restart() 或 Destory()当用户看不到该Activity所代表的界面时调用。 这方法调用有两种情况:1.当该Activityon正在 销毁。另一个 Activity启动或恢复并覆盖当前Activity 。on Destory()YES无Activity正在销毁时调用,这是一个Activity生命周期中接受的最后一个回调方法。在正在调用Activity的finish方法前调用或者是系统内存不 足导致不得不回收;想知道是哪一种销毁方式可 以通过isFinishing()得知。Killable after:明确指出系统是否可以在任何上述方
36、法中执行完并返回后杀 死持有当前Activity的进程。on Pause,。nStop,o nDestor这里的三个方法被标注为 YES,由于on Pause方法是Activity创建后最有可能保证执行的方法,因此,当 系统遇到紧急情况需要恢复内存,那么on Stop, on Destory可能不被执行,因此你应当在on Pause里保存一些至关重要的状态属性 9。当一个Activity启动转换到另一个 Activity的时候,它们都会经历它们生命 周期的转变。当另一个 Activity被创建,那么第一个 Activity将暂停和停止。 Activity生命周期回调方法的调用顺序在上述文档中已
37、经做了很好的定义。3.4 musicplayer的常用方法介绍实例化一个AudioTrack同样要传入几个参数(1) StreamType:在 AudioManager 中有几个常量,其 中一个是 STREAM_MUSIC ;(2) SampleRatelnHz最好和 AudioRecord使用的是同一个值;(3) Cha nn elCo nfig:同上; AudioFormat:同上;(5) BufferSize:通过 AudioTrack 的静态方法 getMinBufferSize 来获取;(6) Mode:可以是 AudioTrack.MODE_STREAM 和 MODE_STATIC
38、。然后下面就描述一些经常需要用到的方法以及其解释10:方法:create(C on text con text, Uri uri);解释:静态方法,通过Uri创建一个多媒体播放器。方法: getCurre ntPositi on();解释:返回Int,得到当前播放位置。方法:isLooping();解释:返回boolean,是否循环播放。方法:isPlaying();解释:返回boolean,是否正在播放。方法:pause()解释:无返回值,暂停方法:setDataSource(String path)解释:无返回值,设置多媒体数据来源(根据路径)。方法:start();解释:无返回值,开始播
39、放。方法:stop();解释:无返回值,停止播放。3.5程序模块设计从功能需求上分析可以看出,整个应用程序应划分为几个模块,分别为程序 启动后的音乐播放界面,录音界面和后台的文件搜索管理。在整个的大体结构上来说,程序的播放器是整个程序的中转界面,因为在跳转和打开应用的时候都是要显示播放器的界面。播放器在打开时就已经开始进行 了 SD卡内根目录下AMR文件的搜索动作。而处在后台的搜索服务就进行工作。录音界面是有播放器中的Activity跳入的,在后台时是一直保持关闭状态的, 只有在进入界面后才可以进行基本的录音服务而对需要的谈话进行数据的采集 和保存。在完成了用户的界面设计和录音界面之后, 整个
40、程序的设计阶段也就到此基 本完成了浙江大学本科毕业论文-22-4程序开发4.1 Activity 分类4.1.1语音播放器首先语音的播放器作为一个验证的程序,是被设置在整个程序的第一个界面 的,这样我们可以很清晰的看见 SD卡根目录下面所有的的录音文件的是以一张 列表的形式出现在我们的眼前。而且当从语音录音切换到语音播放器的时候,播放器都会自动的重新搜索一次 SD下根目录的所有录音文件,从而把最新的录音 文件摆到用户们的面前。而不属于录音文件的MP3等其他格式的音乐文件则会被过滤掉不显示在语音播放器的语音文件列表中。private static final Stri ng MUSIC_PATH
41、 =new Stri ng(/sdcard/);搜寻语音文件的默认路径。private int curre ntListltem=O;设置当前播放歌曲的索引,并给与一个初始化,使之不会属于空值,而出现 一些不必要的 问题。MediaScannerReceiver这个广播接收者在接收到 ACTION_BOOT_COMPLETED、ACTION_MEDIA_MOUNTED 的广播时对 SD 卡中的音乐播放文件进行扫描,因为扫描不能影响用户使用,这里启动了一个服 务MediaScannerService能够对SD卡根目录下的录音文件进行扫描。由于考虑到关于播放器和录音之间的切换,所以在这里需要放入一
42、个Activity的切换以及其按钮:btRecod=(Button) findViewByld(R.id. btRecod);btRecodsetOnClickListener(new OnClickListener();这里是设置Activity的切换按键,并给与一个定义。public void onClick(View v) tryIntent icha nge=new Inten t();icha nge.setClass(musicActivitythis,luyi ng.class); startActivity(icha nge); musicActivity. this.fini
43、sh();这里是实现了从语音播放器中切换到语音录入的跳转,从播放器的界面指向 到了录音,设置了按钮的点击进入语音录音器界面的事件, 并且在跳转完成后设 置了结束操作,使之不会发生死机的循环。在完成了两个Activity之间的切换之后,可以就开始在语音播放器界面里面 的设置了,首先要能够可以播放录音文件,那么就必须在这里设置好一些播放器 的那些按钮功能。void fin dView()viewHolder. start=(Button)findViewByld(R.id. start);viewHolder. stop=(Button)findViewByld(R.id. stop);viewH
44、older. next=(Button)findViewByld(R.id. next);viewHolder. pause=(Button)findViewByld(R.id. pause; viewHolder. last=(Button)findViewByld(R.id. last);这里是定义了获取按钮,将播放器所需要的停止,播放,暂停,快进和快退 五个按钮都一一进行了设定。void liste ner()是监听事件,它可以监听客户端的请求、服务端的操作等。通 过监听器,可以自动激发一些操作。在An droid框架的设计中,以事件监听器(eve nt liste ner)的方式来处理
45、UI的使用者事件。An droid框架提供了非常良好 的UI事件处理机制。View是绘制UI的类别,每个View物件都可以向An droid 框架注册一个事件监听器。每个事件监听器都包含一个回呼函数(callback method),这个回呼函数(callback method)主要的工作就是回应或处理使用者的 操作。第一种也是最开始就接触的方式,通常在Activity组件的on create事件中直接定义,直接动作,这种方式每个控件都定义一次,通常不方便.;第二种通常 是在Activity组件实现其接口,这样可以多外控件共享一个接口,这样相对方便; 第三种类似第二种,这样的好处在于如果需要实
46、现多个监听接口,这样更清晰11。设置好了监听事件,就可以开始设置按钮的作用了,分别给前面添加的按钮 分配应该需要使用的用途。viewHolder. start .setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) playMusic(MUSIC_PATH + myMusicList .get(curre ntListltem););/liste n()监听从代码可以看出,这个是对开始播放录音按钮的操作。另外的几个按钮的核 心代码和播放键差不多,所以也就不再列出。void playMusic(S
47、tri ng path)try myMediaPlayer.reset();myMediaPlayer.setDataSource(path);myMediaPlayer.prepare();myMediaPlayer.start();myMediaPlayer.set On Completi on Liste ner(new On Completio nListe ner() Overridepublic void onCompletion(MediaPlayer mp) n extMusic(););这一段代码是在对录音文件的操作,几个按钮的绑定,以及在一个文件之后可以自动跳转到下一个文件
48、的设定,不会让播放器一直卡在一个录音文件上。使之能够在即使无人操作的情况下也可以自动播放下去。protectedvoid on ListltemClick(ListView l, View v, int positi on, long id) curre ntListItem=positi on;playMusic(MUSIC_PATH +myMusicList .get(currentListltem);这里处理的是用户对录音文件列表的操作,当用户点击播放列表时,播放器会对用户所需要播放的录音文件进行播放。4.1.2语音的录入btBacksetO nClickListe ner( new V
49、iew.O nClickListe ner() Overridepublic void onClick(View v) tryIntent icha nge=new Inten t();ichange.setClass(luyingthis,musicActivity. class); startActivity(icha nge);luyi ng.this.fi nish();在进行录音界面之后,当然就需要一个能够返回到播放界面的按键了,所以上面的代码就是在做一个对播放器的Activity,使得用户在录音完成之后可以回到播放器去对前面的录音进行一个检查和播放,而不需要去退出程序重新再进来 操
50、作一遍。File file = new File(/sdcard/+ 录音+ newDateFormat().format(yyyyMMdd_mmss ,Calendar.getlnstance(LocaleCHINA ) + .amr);这部分是设置了录音文件的需要保存时的名字,是以录音当时的时间来记录的,文件是AMR文件,保存在手机的SD卡根目录下。mr = new MediaRecorder(); 创建录音对象。 mr.setAudioSource(MediaRecorder.AudioSourceDEFAULT );/从麦 克风源进 亍好仃录曰。mr.setOutputFormat(M
51、ediaRecorder.OutputFormaDEFAULT);/ 设置输出格 式。mr.setAudioE ncoder(MediaRecorder.AudioE ncoderDEFAULT);/ 设置编码格 式。mr.setOutputFile(file.getAbsolutePath();设置输出文件。以上是对录音文件的格式设置和保存位置。catch (lllegalStateExcepti on e) e.pri ntStackTrace();catch (IOExcepti on e) e.pri ntStackTrace();上面两句都是作用于抛出错误,用以防止运行时崩溃。括号里
52、的是参数,不 是随便写的,要看在定义这个方法的时候,括号里的参数类型是什么,你才能往 里面加什么,比如定义一个方法,方法名(参数类型 参数名)在调用这个方法 的同时就必须是放入那个类型的参数,actio nPerformed(Actio nEve nt e)是监听器接 口里的方法,Java定义好的,它的实属就是 ActionEvent类型的,e是定义的参 数名,catch同解,是异常里面的方法,参数是某个类型的异常。stopButt on. set On ClickListe ner(new View. On ClickListe ner() Overridepublic void onCli
53、ck(View v) if (mr != n ull) mr.stop();mr.release();mr = nu II; recordButton.setText(录音); Toast.makeText(getApplicationContext(),录音完毕, Toast.LENGTH_LONG ).show(););这个部分是点击停止按钮后出现的设计, 在点击停止按钮的同时,界面会出 现一个提示框,里面显示的文字部分为录音完毕, 至此,录音的大体设计也就完 成了。4.2用户界面ConfigureActivity 的布局文件是 res/layout/configure.xml,采用了 L
54、inearLayout的布局方式,布局的方式如图4-1和图4-2所示2;42AM录盲描葫待2:42 AMYY2011101B_HH4050.arTirYY2011YYZOlTlOU HH4117.amrYY2011101B jHH4i2f amrYY2O11101S_HH4129YY20l110W.HHl6S4.amr怜止返回VY20111019_HH1045.amr图4-1播放界面图4-2录音界面V7ni1lmi MM1fhd7 Amr在绘制用户界面的里面,可以用代码来绘制也可以直接在 An droid的模拟图 形上进行绘制,使原本比较大的工作量也减小了不少。ListActivity可以不通
55、过setC on te ntView()设置布局,也不必重载 on Create()方法,而直接将显示列表加 载到ListActivity,增加了使用的便利性。在此工程中,仍然使用setContentView() 设置布局,这样做的好处是可以在界面中设置更为复杂的显示元素。5系统测试与结论5.1系统测试到现在为止,已经完成了全部的An droid录音与播放工程的代码编写工作,从这里开始就将要对An droid录音与播放工程进行测试,步骤及结果如下:(1)首先要启动An droid虚拟机,在工程名 An droid录音与播放上点右键, 然后选择“ Run As”,然后选择“ An droid Applicatio n ”。不过An droid虚拟机的启动速度比较缓慢。如图5-1所示。图5-1 启动界面点击屏幕下面的图标,选择“ Widget”,然后选择“录音播放器”。女口图5-2所示。图5-2图标界面(3)进入录音播放器之后,就可以根据界面上的按钮来进行操作了,操作的界面算是十分的简洁。图5-3和图5-4为录音和播放器的基础界面,图5-5为正在录音时的界面,图5-6为录音结束时的界面录言YY20111 01EHH405D-amr YY20111018_HH4056Bamr YY20111O18JHH4117
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年压力性损伤防范培训课件
- 2025-2026学年六年级(下)数学期末模拟测试卷及答案
- 2026 年烈士纪念日致敬为国捐躯革命英雄课件
- 2026 年回望端午溯源感悟爱国精神课件
- 2026 年胆道梗阻术后 T 管护理个案研讨班会
- 脑卒中诊疗规范、医院环境采样操作要求、医疗质量十八项核心制度考试卷及答案
- 网络安全知识宣传教育课件(图文并茂)
- 电机测量考试题目及答案解析
- 芳烃抽提装置操作工风险评估与管理能力考核试卷含答案
- 硝基氯苯装置操作工操作规范竞赛考核试卷含答案
- DL-T1083-2019火力发电厂分散控制系统技术条件
- 神志病中西医结合临床诊疗指南-抽动障碍
- 铁路货物装卸安全技术规则课件
- 清华大学弹性力学冯西桥FXQ-Chapter-03应力理论
- 偏瘫肢体良肢位摆放流程及考核标准1康复医学
- 技术经济学概论-第六章-价值工程课件
- 颜氏家训(中华经典名著全本全注全译)
- 洱源锦泰矿业开发有限责任公司洱源县溪灯坪金矿矿山地质环境保护与土地复垦方案
- 国际商务英语综合教程课件
- GB/T 20413-2017过磷酸钙
- CB 1247-1994搭接、接地直流电阻的测量方法
评论
0/150
提交评论