




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计(论文) 论文题目Android手机语音录入软件设计 (英文) Design of Voice Record Software for Android Phone 所在学院 专业班级 学生姓名 学号 指导教师 职称 教授 完成日期 20XX 年 4 月 17 日摘 要Android系统是基于Linux内核的一个操作系统。而它采用的Linux内核,这套系统的开源性有及其良好的拓展性,任何的开放手机联盟的成员都可以任意的使用它的SDK包。它不仅仅具有出色的开发、调试环境,而且还有很多强大的多媒体技术的支持和扩展,在很多方面都为用户提供了非常方便的使用环境和功能。Android平台作为一个新兴的手机开发平台在当今这个迅速发展的时代里,其显著而优秀的能力。本文阐述了一种Android手机平台的录音播放器的设计方案。首先是介绍了Android的技术背景和意义,描述了Android的关键技术和在未来的发展趋势。然后在介绍了如何在计算机上搭建Android的开发平台,是一套基于Android平台的手机录音与播放软件的设计方案,这个软件分为录音界面和播放器验证界面。在软件系统上使用AVD虚拟机成功的编码和测试了Android录音播放软件,实验的结果充分的表明了以Android系统为基础的开发程序是拥有非常优秀能力,而且在真机上的成功安装使用更是表明了Android程序在日常生活中能够起到的作用,在未来的开发和应用上,Android的平台更是能够作出更大的贡献。关键字:Android;智能手机平台;录音软件AbstractAndroid platform as an emerging mobile development platform in todays era of rapid development, significant and outstanding ability. The Android system is 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 are many powerful multimedia 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 the 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 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 demonstrated the development program is based on the Android system has a very good ability, and successful installation on the 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概述11.1 课题的研究背景和意义11.2 研究开发内容21.2.1主要开发内容21.2.2论文内容32 系统开发环境及相关技术42.1 Android开发环境介绍42.2 Android开发平台搭建42.3 Android的API53 系统分析和设计83.1 系统分析83.1.1 研究目标83.1.2 需求分析83.1.3 性能分析83.2 界面设计83.3 Activity切换93.4 musicplayer的常用方法介绍113.5 程序模块设计124 程序开发134.1 Activity分类134.1.1 语音播放器134.1.2 语音的录入164.2 用户界面185 系统测试与结论195.1 系统测试195.2 结论21致 谢22参考文献23附录1 真机测试图24附录2 毕业设计作品说明书25附录3 系统主要源代码26浙江大学本科毕业论文 -32-1概述1.1 课题的研究背景和意义Android平台因为开放性使得这个平台具有非常好的发展前景。开发商在网上评测出使用的全球移动手机开发使用最多的平台调查结果显示:市场上最为火热的是Linux平台,这款移动平台是大家最主要选择的开发平台,它在全球的市场份额占到了30%,当然这与Android的开放性有很大的关系。而且Android智能手机的市场份额在2011年9月份的时候就已经一举超过了iPhone平台,成为了仅次于Symbian平台的全球第二大手机操作系统,而这一历史性时刻比一些专家的预测缩短了两年多的时间1。2010年已经成为了Android元年,而且这个势头已经蔓延到了中国市场。IOS平台在赚钱方面对许多的开发者而言吸引力是相当巨大的,很多开发者毫不犹豫的投身到了Android平台开发,虽然现在在开放式的开发平台上的赚钱机会已经变得越来越小,但是这个平台已经平稳的度过了高峰期,很多开发者和开发商都在酝酿在这个平台做出具备杀伤力的产品,投身平台的开发者都已经做足了充分的准备,所以这个平台在未来的前景是非常可观的,因此Android在最新的开发研究上的排名第一已经是不足为奇2。Strategy Analytics分析师亚历克斯-斯贝克特(Alex Spektor)表示:“今年第二季度,Android智能手机出货量达到了创记录的6000万部,在整个手机市场上占到了19%的份额,去年第二季度全球智能手机出货量为4200万部,相比增长了43%。运营商加大购机补贴力度、高端厂商之间的竞争以及使用Symbian和Android等操作系统的低成本机型不断涌现促进了智能手机市场的增长速度超过了手机市场的平均增长速度,这个部分充分的体现了当前的世界格局中的Android的优势和能力是非常迅速的在增长,如下图1-1所示3。图1-1 android手机涨幅从这个报表大家可以看到08年度第四季度与09年度第四季度的对比,Android智能手机市场的销售量已经上涨了15%,从报表上面我们看到整个09年度整个智能手机市场都是呈现出一片上涨趋势,全年的出货量达到1.738亿部手机。而且从10年开始,单单从第一季度和第二季度我们就能看出来上涨速度变得非常迅速,从09年第一季度跟10年的第一季度同期相比增长比就已经到达了1.487:1,从10年第二季度跟09年第二季度对比我们就能看出来比例依然是1.43:1,所以从这个趋势来看未来肯定是智能手机占主导方向地位 4。安卓在全球市场的成长壮大,而塞班在全球市场份额不断下跌已经成为不争的事实。安卓操作系统发展迅猛主要得益于免费、开源和良好的产业运作策略,这三点为安卓在智能手机市场赢得更多的发展机遇。代码的开源让更多的开发者开始进行应用开发;应用的丰富吸引到了更多用户选择Android平台。此外,谷歌通过OHA联合众多厂商进行系统研发,将系统应用推广到更多的终端产品中,确保用户体验的持续改善。1.2 研究开发内容1.2.1主要开发内容Android平台3G手机录音软件是基于Android手机平台,运用Java语言,从手机上直接录取原音文件,可以进行重要信息的存入,也可以在会议中使用,非常方便。Android平台3G手机录音软件的开发可以把原有的录音工具丢弃,只需要随身携带一只小巧的Android手机,就可以随时随地的进行语音的录入,同时也可以增强对社会语音资料方面的重视,提供在公共场合的一些方便措施,能够为日常的会议,开幕式做好防范,随时可以代替专业的录音笔等器材。想一想,随身携带一只具备了多种功能的手机,远远要比携带一台巨大的设备要方便很多。在Android的录音写入文件当中,存在着MediaRecorder和MediaPlayer类,还有AudioRecord和AudioTrack类。由于在封装的使用和录音的播放上AudioRecord和AudioTrack类的使用比较麻烦,而且不是都能够获得成功,所以就采取了MediaRecorder和MediaPlayer类作为本次代码编写的首选方案。1.2.2论文内容本文共分为五章,主要介绍了关于录音软件在Android平台上的开发使用,通过MediaRecorder和MediaPlayer类实现外部录音的功能。第一章介绍了Android最近几年以来的发展趋势和未来前景;第二章介绍了Android开发平台的搭建和API的部分模块介绍;第三章对Android语音录入播放器的可实现性进行了分析和大致上的规划,在Activity切换的行为上进行了叙述;第四章介绍了软件的设计思路和整体软件的过程;第五章对Android录音播放器进行了测试和验证,并且给出了实验过程中的经验和心得想法。2 系统开发环境及相关技术2.1 Android开发环境介绍Android的上层应用程序是使用的Java语言开发,同时还需要基于Dalvik虚拟机。所以,Google公司推荐使用主流的Java去继承开发环境Eclipse。不过只有Eclipse还是远远不够的,因为是使用Java语言进行开发,所以这部分还应该有由SUN公司提供的Java SDK(其中包括JRE:Java Runtime Environment)。此外,Android的应用程序开发和Java开发有较大区别的,所以还需要有Google提供的Android SDK。在Eclipse上安装一个AVD的虚拟机也是必要的。同时,还需要在Eclipse安装ADT,使得在有更新程序的时候可以能够为Android开发提供开发工具的升级或者变更,也是Eclipse下开发工具的升级下载的工具5。简言之,需要以下软件,才能搭建Android开发环境,从而进行Android应用程序的开发。(1) Java SDK(2) Eclipse(3) Android SDK(4) ADT2.2 Android开发平台搭建Android开发平台搭建步骤:在配置安卓的环境是要先搞定里面的ADT和SDK的安装,所以首先要先进行的是ADT的安装。启动Eclipse后,然后选择菜单里面的Help-Install New Software;在弹出窗口中,点击Add按钮,Name随便填写(比如Android),Location一栏填写(ADT 的plus-in网址),/android/eclipse/,然后点击OK;等待在线更新可用列表,然后会跳出一个对话框,在下面的列表框中的Developer Tools中选择并安装Android DDMS(Android Dalvik Debug Moniter Server)和Android Development Tools(ADT);选择Next后,接受安装协议,点击Finish,进入漫长的等待时间,然后就安装完成。完成后界面会提示重启Eclipse,这个时候只需要点击Restart Now就可以了。完成了ADT的安装之后就可以开始配置SDK:点击Eclipse菜单,Windows-Preferences,然后点击左侧的Android设置项;在右侧的SDK Location里填入我们上文解压的SDK目录C:Program Filesandroid-sdk-windows,点击确定,然后再继续选择刚才解压完的Android SDK文件夹所在目录;点击菜单Window-Android SDK and AVD Manager;在弹出窗口中,点击Update All按钮,会弹出可选的程序包版本,不过不用全部都安装,只需要安装以下几个就可以了:Android SDK Tools, revision x;Android SDK Platform-tools, revision x;Documentation for Android SDK, API xx, revision x;SDK Platform Android x, API x, revision x;Samples for SDK API x, revision x;Android Compatibility package, revision x。上面的这些都完成之后就可以开始配置虚拟机了。点击菜单Window-Android SDK and AVD Manager;点击左侧的Virtual Devices,新建AVD(Android Virtual Devices = AVD,Android虚拟设备);点击“New.”按钮,弹出“Create new Android Virtual Device(AVD)”对话框;在Name中输入:Android-AVD,Target中选择(这个API版本要选对,跟上文对应):Android 2.2 - API Level 8;Skin里Build-in屏幕大小建议选的小一点,尽量不要选择那些大屏幕的,不然在读取的时候可以能会要很长的等待时间,甚至导致无法读取出虚拟机,笔记本可能会满屏高度,但是满屏会导致不好操作;其它选项按照默认即可(后续仍可以随时修改,点击右侧的Edit按钮)点击“Create AVD”按钮即可;可以点击右侧的Start.进行测试,弹出窗口中点击Launch启动虚拟机,AVD加载很慢,所以一般花费2.3分钟也是很正常的事情6。2.3 Android的APIManifest element:开发Android应用程序时,了解该平台API变更管理的基本方法和概念是很有帮助的。同样的,在知道了API级别标识以及该标识如何保障应用与实际硬件设备相兼容对于开发及后续的发布、维护都是有益的。Android里面的API级别取值都是一个整数值,而且它是唯一一个标识了一个具体版本的Android平台,以及框架的API的版本。Android平台为广大的研发者提供了一整套完整框架的API,使得Android平台上的应用程序可以与系统底层进行交互。API由以下一些模块组成:(1) 一组核心的包和类;(2) 清单(Manifest)文件的XML元素和属性声明;(3) 资源文件的XML元素和属性声明及访问形式;(4) 各类意图(Intents);(5) 应用程序可以请求的各类授权,以及系统中包含的授权执行。每个Android平台的后续版本会包括它提供的更新的Android应用程序框架的API。该框架的API的更新设计,使高版本的API与早期版本兼容。也就是说,在新版本API中大多数都是新增功能,和引进新的或替代的功能。作为API的部分升级,老的替换的部分已过时,但不会从新版本中删除,使得已有的应用程序仍然可以使用它们。在极少数情况下,旧版本API的部分可能被修改或删除,通常这种变化是为了保障API的稳定性及应用程序或系统的安全。所有其他早期版本的API将不做修改的保留。Android:minSdkVersion指明该应用程序可以运行的API最低版本,默认是“1”。Android:targetSdkVersion指明该应用程序设计时期望运行的目标API版本。在某些情况下,这允许应用程序使用目标API级别下定义的清单元素或行为,而不是只限于使用最低API级别定义的内容。Android:maxSdkVersion指明该应用程序可以运行的最高API级别。重要声明: 使用该属性之前请阅读文档。比如,要指明一个应用程序能够运行的最低API级别,应当在该应用程序的清单文件的元素中加入Android:minSdkVersion属性。Android:minSdkVersion的值是一个正整数,对应的是该应用程序能够运行的最低平台的API级别标识。用户尝试安装一个应用程序,或者在系统升级后重验证应用程序的时候,Android系统首先会检查应用程序的清单文件中的属性,将其与系统内部API级别对比。系统只有在满足下列情况时才允许进行应用程序安装。如果声明了Android:minSdkVersion属性,那么其属性值就必须要小于或等于该系统的API级别对应的值。如果系统没有发表声明,那么系统就会默认该应用Android的程序运行需要的最低API级别是1。如果声明了Android:maxSdkVersion属性,那么其属性值就要必须等于或大于该系统的API级对应的值。如果系统没有发表声明,那么系统会默认该应用程序没有最高API的级别限制。3 方案设计3.1 系统分析3.1.1 研究目标(1)学习、了解Android应用程序的设计并且基础掌握其开发过程。(2) 掌握和使用Android代码进行Android 平台上的3G手机录音软件开发。本软件是基于Eclipse的开发环境,直接在Eclipse进行编程和调试过程,最终下载到手机上可以实现功能。3.1.2 需求分析本软件是一个设计界面简洁干净的录音软件,具有双向的Activity操作,一个是语音播放界面可以点击按钮进入到录音界面,另外一个是可以从录音界面返回到语音播放界面。并且音乐库是设定在SD卡的根目录下,每次打开程序都会自动更新音乐库,并且显示所有amr后缀的音乐文件。从上面的描述中可以基本了解软件的功能需求:(1) 启动主菜单应用程序;(2) 设置界面:进行语音、播放界面的切换,能够简单的对程序进行操作;(3) 显示界面:通过文字显示当前的录音情况和保存地址。3.1.3 性能分析要求能够迅速简洁的使用录音软件,到达使用方便,检验简单的程度,无论何时何地都可以自由应用。3.2 界面设计根据软件程序的需求分析,这个应用程序应该要包含两个主要的用户界面,在这里,就是更进一步的来分析在这两个的用户界面里面,每一个用户界面需要包括哪一些的内容,应该怎么样的来添加使用。每次进入播放界面时,播放程序都会自动搜索手机的SD卡根目录下面的音乐文件,由于代码设置的过滤模式,所以只能够看见有AMR后缀的文件的文件名。在录音界面中,在录音的过程中程序需要提示用户此次录音文件的保存地址和文件的保存文件名,以方便用户寻找和使用关于此次录音的播放文件。在进入录音界面之后,可以点击实现录音的效果,在录音界面的Activity按钮可以返回播放界面,同时还设立了返回值,可以回到首页面去进行播放的验证,相当是设置了一条快捷通道。在音乐播放器中,需要在列表里显示出所有的在手机SD卡根目录下的音乐,所以需要划分一块区域来显示,其中就显示为文件名加音乐文件格式的后缀。在录音的程序里面,设置了给用户看的录音文件的保存提示界面,可以让用户看见文件的自动保存文件名以及录音文件的保存地址,让用户在使用录音文件的时候更加的方便,也使录音程序更加的贴心,下面就是根据对用户界面显示内容的分析,绘制出用户界面的草图,如图3-1所示。 (a) 播放界面 (b) 录音界面图3-1 用户界面草图3.3 Activity切换一个应用程序通常都是由多个Activity组成。因此当用户启动一个应用程序时见到的第一个交互界面(Activity)就叫做主Activity。为了完成相应的动作,一个Activity的操作界面里可以启动另一个Activity,每当启动一个新的Activity,前一个另外的Activity就将停止,但是系统将仍然保存这个对象在后台栈(back stack)里面。当启动一个新的Activity,它就放入back stack中,并且获得用户焦点。Back stack遵循后进先出原则,所以当用户按手机上的back按钮时,当前的Activity将会从back stack中移除,前一个Activity线程就将被恢复 8。表3-1更加详细的列出了Activity生命周期中各个方法的详细描述以及系统在调用相应方法后能否杀死对应的Activity。表3-1 Activity 生命周期描述方法Killable after下个调用法描述onCreate()NOonStart()在Activity第一次创建的时候调用。在这个方法里你应当做所有全局的操作,比如创建视图,填充Activity需要的数据等。这个方法通过Bundle对象获取前一个Activity的数据。onRestart()NOonStart()在Activity停止后,再次被启动前调用活动结束后已经停止,之前被再次启动调用。onStart()NOonResume()或onStop()刚好在Activity将要被用户可见前调用,此时还不可以看到Activity所代表的界面。onResume()NOonPause()当Activity所代表的页面可见的时候调用,在这个时候,该Activity位于Activity栈顶,拥有用户输入焦点。onPause()YESonResume()或onStop()当系统启动另一个Activity时调用。这个方法通常用于持久化未保存的数据的更改,停止动画,以及一些消耗CPU的操作。尽管CPU的处理速度很快,但是它必须做上述操作,应为onPause方法没有返回的话是不能创建下一个Activity。onStop()YESonRestart()或Destory()当用户看不到该Activity所代表的界面时调用。这方法调用有两种情况:1.当该Activityon正在销毁。另一个Activity启动或恢复并覆盖当前Activity。onDestory()YES无Activity正在销毁时调用,这是一个Activity生命周期中接受的最后一个回调方法。在正在调用Activity的finish方法前调用或者是系统内存不足导致不得不回收;想知道是哪一种销毁方式可以通过isFinishing()得知。Killable after:明确指出系统是否可以在任何上述方法中执行完并返回后杀死持有当前Activity的进程。onPause,onStop,onDestory这里的三个方法被标注为YES,由于onPause方法是Activity创建后最有可能保证执行的方法,因此,当系统遇到紧急情况需要恢复内存,那么onStop,onDestory可能不被执行,因此你应当在onPause里保存一些至关重要的状态属性 9。当一个Activity启动转换到另一个Activity的时候,它们都会经历它们生命周期的转变。当另一个Activity被创建,那么第一个Activity将暂停和停止。Activity生命周期回调方法的调用顺序在上述文档中已经做了很好的定义。 3.4 musicplayer的常用方法介绍实例化一个AudioTrack同样要传入几个参数(1) StreamType:在AudioManager中有几个常量,其中一个是STREAM _MUSIC;(2) SampleRateInHz:最好和AudioRecord使用的是同一个值;(3) ChannelConfig:同上;(4) AudioFormat:同上;(5) BufferSize:通过AudioTrack的静态方法getMinBufferSize来获取;(6) Mode:可以是AudioTrack.MODE_STREAM和MODE_STATIC。然后下面就描述一些经常需要用到的方法以及其解释10:方法:create(Context context, Uri uri);解释:静态方法,通过Uri创建一个多媒体播放器。方法: getCurrentPosition();解释:返回 Int, 得到当前播放位置。方法:isLooping();解释:返回 boolean ,是否循环播放。方法:isPlaying();解释:返回 boolean,是否正在播放。方法:pause();解释:无返回值 ,暂停。方法:setDataSource(String path);解释:无返回值,设置多媒体数据来源(根据路径)。方法:start();解释:无返回值,开始播放。方法:stop();解释:无返回值,停止播放。3.5 程序模块设计从功能需求上分析可以看出,整个应用程序应划分为几个模块,分别为程序启动后的音乐播放界面,录音界面和后台的文件搜索管理。在整个的大体结构上来说,程序的播放器是整个程序的中转界面,因为在跳转和打开应用的时候都是要显示播放器的界面。播放器在打开时就已经开始进行了SD卡内根目录下AMR文件的搜索动作。而处在后台的搜索服务就进行工作。录音界面是有播放器中的Activity跳入的,在后台时是一直保持关闭状态的,只有在进入界面后才可以进行基本的录音服务而对需要的谈话进行数据的采集和保存。在完成了用户的界面设计和录音界面之后,整个程序的设计阶段也就到此基本完成了。4程序开发4.1 Activity分类4.1.1 语音播放器首先语音的播放器作为一个验证的程序,是被设置在整个程序的第一个界面的,这样我们可以很清晰的看见SD卡根目录下面所有的的录音文件的是以一张列表的形式出现在我们的眼前。而且当从语音录音切换到语音播放器的时候,播放器都会自动的重新搜索一次SD下根目录的所有录音文件,从而把最新的录音文件摆到用户们的面前。而不属于录音文件的MP3等其他格式的音乐文件则会被过滤掉不显示在语音播放器的语音文件列表中。private static final String MUSIC_PATH=new String(/sdcard/);搜寻语音文件的默认路径。private int currentListItem=0;设置当前播放歌曲的索引,并给与一个初始化,使之不会属于空值,而出现一些不必要的问题。MediaScannerReceiver这个广播接收者在接收到ACTION_BOOT_COMPLETED、ACTION_MEDIA_MOUNTED 的广播时对SD卡中的音乐播放文件进行扫描,因为扫描不能影响用户使用,这里启动了一个服务MediaScannerService能够对SD卡根目录下的录音文件进行扫描。由于考虑到关于播放器和录音之间的切换,所以在这里需要放入一个Activity的切换以及其按钮:btRecod=(Button) findViewById(R.id.btRecod);btRecod.setOnClickListener(new OnClickListener();这里是设置Activity的切换按键,并给与一个定义。public void onClick(View v) tryIntent ichange=new Intent();ichange.setClass(musicActivity.this,luying.class);startActivity(ichange);musicActivity.this.finish(); 这里是实现了从语音播放器中切换到语音录入的跳转,从播放器的界面指向到了录音,设置了按钮的点击进入语音录音器界面的事件,并且在跳转完成后设置了结束操作,使之不会发生死机的循环。在完成了两个Activity之间的切换之后,可以就开始在语音播放器界面里面的设置了,首先要能够可以播放录音文件,那么就必须在这里设置好一些播放器的那些按钮功能。void findView() viewHolder.start=(Button)findViewById(R.id.start); viewHolder.stop=(Button)findViewById(R.id.stop); viewHolder.next=(Button)findViewById(R.id.next); viewHolder.pause=(Button)findViewById(R.id.pause); viewHolder.last=(Button)findViewById(R.id.last);这里是定义了获取按钮,将播放器所需要的停止,播放,暂停,快进和快退五个按钮都一一进行了设定。void listener()是监听事件,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作。在 Android框架的设计中,以事件监听器(event listener)的方式来处理UI的使用者事件。Android框架提供了非常良好的UI事件处理机制。View是绘制UI的类别,每个 View物件都可以向Android框架注册一个事件监听器。每个事件监听器都包含一个回呼函数(callback method),这个回呼函数(callback method)主要的工作就是回应或处理使用者的操作。第一种也是最开始就接触的方式,通常在Activity组件的oncreate事件中直接定义,直接动作,这种方式每个控件都定义一次,通常不方便.;第二种通常是在Activity组件实现其接口,这样可以多外控件共享一个接口,这样相对方便;第三种类似第二种,这样的好处在于如果需要实现多个监听接口,这样更清晰11。设置好了监听事件,就可以开始设置按钮的作用了,分别给前面添加的按钮分配应该需要使用的用途。viewHolder.start.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) playMusic(MUSIC_PATH+myMusicList.get(currentListItem););/listen( )监听从代码可以看出,这个是对开始播放录音按钮的操作。另外的几个按钮的核心代码和播放键差不多,所以也就不再一一列出。void playMusic(String path) try myMediaPlayer.reset();myMediaPlayer.setDataSource(path);myMediaPlayer.prepare();myMediaPlayer.start();myMediaPlayer.setOnCompletionListener(new OnCompletionListener() Overridepublic void onCompletion(MediaPlayer mp) nextMusic(); ); 这一段代码是在对录音文件的操作,几个按钮的绑定,以及在一个文件之后可以自动跳转到下一个文件的设定,不会让播放器一直卡在一个录音文件上。使之能够在即使无人操作的情况下也可以自动播放下去。protected void onListItemClick(ListView l, View v, int position, long id) currentListItem=position;playMusic(MUSIC_PATH+myMusicList.get(currentListItem);这里处理的是用户对录音文件列表的操作,当用户点击播放列表时,播放器会对用户所需要播放的录音文件进行播放。4.1.2 语音的录入btBack.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) tryIntent ichange=new Intent();ichange.setClass(luying.this,musicActivity.class);startActivity(ichange);luying.this.finish(); 在进行录音界面之后,当然就需要一个能够返回到播放界面的按键了,所以上面的代码就是在做一个对播放器的Activity,使得用户在录音完成之后可以回到播放器去对前面的录音进行一个检查和播放,而不需要去退出程序重新再进来操作一遍。File file = new File(/sdcard/+ 录音+ new DateFormat().format(yyyyMMdd_mmss,Calendar.getInstance(Locale.CHINA) + .amr);这部分是设置了录音文件的需要保存时的名字,是以录音当时的时间来记录的,文件是AMR文件,保存在手机的SD卡根目录下。mr = new MediaRecorder(); /创建录音对象。mr.setAudioSource(MediaRecorder.AudioSource.DEFAULT);/从麦克风源进行录音。mr.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);/设置输出格式。mr.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);/设置编码格式。mr.setOutputFile(file.getAbsolutePath();/设置输出文件。以上是对录音文件的格式设置和保存位置。catch (IllegalStateException e) e.printStackTrace();catch (IOException e) e.printStackTrace();上面两句都是作用于抛出错误,用以防止运行时崩溃。括号里的是参数,不是随便写的,要看在定义这个方法的时候,括号里的参数类型是什么,你才能往里面加什么,比如定义一个方法,方法名(参数类型 参数名)在调用这个方法的同时就必须是放入那个类型的参数,actionPerformed(ActionEvent e)是监听器接口里的方法,Java定义好的,它的实属就是ActionEvent类型的,e是定义的参数名,catch同解,是异常里面的方法,参数是某个类型的异常。stopButton.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) if (mr != null) mr.stop();mr.release();mr = null;recordButton.setText(录音);Toast.makeText(getApplicationContext(), 录音完毕, Toast.LENGTH_LONG).show(););这个部分是点击停止按钮后出现的设计,在点击停止按钮的同时,界面会出现一个提示框,里面显示的文字部分为录音完毕,至此,录音的大体设计也就完成了。4.2 用户界面ConfigureActivity的布局文件是res/layout/configure.xml,采用了LinearLayout的布局方式,布局的方式如图4-1和图4-2所示。图4-1 播放界面 图4-2 录音界面在绘制用户界面的里面,可以用代码来绘制也可以直接在Android的模拟图形上进行绘制,使原本比较大的工作量也减小了不少。ListActivity可以不通过setContentView( )设置布局,也不必重载onCreate( )方法,而直接将显示列表加载到ListActivity,增加了使用的便利性。在此工程中,仍然使用setContentView( )设置布局,这样做的好处是可以在界面中设置更为复杂的显示元素。5系统测试与结论5.1 系统测试到现在为止,已经完成了全部的Android录音与播放工程的代码编写工作,从这里开始就将要对Android录音与播放工程进行测试,步骤及结果如下:(1) 首先要启动Android虚拟机,在工程名Android录音与播放上点右键,然后选择“Run As”,然后选择“Android Application”。 不过Android虚拟机的启动速度比较缓慢。如图5-1所示。图5-1 启动界面(2) 点击屏幕下面的图标,选择“Widget”,然后选择“录音播放器”。 如图5-2所示。图5-2 图标界面(3) 进入录音播放器之后,就可以根据界面上的按钮来进行操作了,操作的界面算是十分的简洁。图5-3和图5-4为录音和播放器的基础界面,图5-5为正在录音时的界面,图5-6为录音结束时的界面。图5-3 播放器界面 图5-4 录音界面 图5-5 录音开始界面 图5-6 录音结束界面5.2 结论经过数个月的努力,基于Android的语音录音和播放程序终于完成了。由于当初对于Android手机推出时的广大兴趣让我也对开源的Android程序产生了那么的一些兴趣和心动,从一开始什么都不懂一直摸索着去学习并且最终完成了这个实用的小软件。在这个过程中,我学会了很多知识,比如Android环境的搭建、Intent、Activity、Service、ContentProvider,API,在这个漫长的过程中我学会了如何的去自主学习 虽然,这个软件目前运行良好,但是我觉得我自己对这个程序的设计有点简单,在整个工程上面的构思也显得粗糙了,不足以拿去进行商业操作,用户操作界面也还不够灵活,这些问题还需要今后逐一解决。这个软件还可以进一步扩展,例如可以假如一些电话中的录音,播放器也可以多增加一些其他格式的音乐的播放,让功能变得更加的强大,带给用户更好的体验和在生活上更加快捷的服务。致 谢经过这半个多学期时间的毕业设计制作,我学到了很多的知识。从最开始只是对程序的好奇和求知,到后来有条不紊的自己查找资料,循序渐进的解决问题,一直到现在的完成最终的目标,这里面都是离不开老师的帮助和很多同学的协力,我们一起讨论,一起帮助,使得自己的设计能够顺利的完成。在这里,我要衷心的感谢我的导师*教授,在这半个多学期的时间里,由于有着他的细心指导和耐心指教,一步一步的带领着我找到了绝决问题的思路和方法,在设计上我可以有了一盏能够为我指明方向的路灯,使我逐步克服了设计上面的难题,完成了我的设计工作以及本篇论文。除了导师刘教授我还要感谢其他的几位老师,我也曾向他们请教过一些问题,他们也很友好的为我提供了解答和帮助。除了这些,还要感谢那些在我设计时遇到困难来帮助我的那些同学们,要是没有大家的帮助和关心我一定很难完成现在的设计和论文,有了大家才有了我现在的成果。这次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 分享成功人士的工作习惯计划
- 《贵州图南矿业(集团)有限公司兴仁市下山镇四海煤矿(变更)矿产资源绿色开发利用方案(三合一)》评审意见
- 《福泉市鹏盛矿业有限责任公司贵州省福泉市陆坪镇大沙坝铝土矿(变更)矿产资源绿色开发利用方案(三合一)》专家组评审意见
- 人教版初中七年级下册历史与社会 5.1.1辽阔的疆域 教学设计
- 财政与金融基础知识课件
- 第二十五教时小结本单元内容-俗称“加法定理”教学实录
- 2025年沈阳道路货运驾驶员从业资格证考试题库
- 2025年长治a2货运从业资格证考试
- 2025年淮南从业资格证应用能力考些啥
- 2025年常德货运从业资格证考试模拟考试
- 2025年黑龙江省安全员A证考试题库附答案
- 2025年公共交通卫生提升方案
- 2025届上海市高三下学期2月联考调研英语试题【含答案解析】
- 发展我国银发经济面临的挑战和优化路径研究
- 建(构)筑物消防员初级技能培训课件
- 2025年潜江市城市建设发展集团招聘工作人员【52人】高频重点提升(共500题)附带答案详解
- DB50T 441-2012 渝菜 毛血旺烹饪技术规范
- 2024年05月富德生命人寿保险股份有限公司招考笔试历年参考题库附带答案详解
- 医防融合培训
- 高速铁路设计规范
- 《电机能能效等级》课件
评论
0/150
提交评论