资源描述
基于Android音乐播放器详细设计【实用文档】doc
文档可直接使用可编辑,欢迎下载
项
目
详
细
设
计
3组:梁锦 21209010417 王燕 21209010414
李雪飞 21209010415 卫妙珠 21209010419
雷宁 21209010418 曹项飞 21209010416
目录
1音乐播放器设计18
1。1项目介绍18
1.1。1播放器的基本控制需求18
1.1.2项目流程19
1.1。3UI界面设计20
1.1.4项目程序结构21
1。1。5项目Manifest.xml文件22
1。2创建项目及具体结构分析25
1.2.1项目的创建25
1.2。2界面设置25
1.2.3结构分析26
1。3 设计成果及分析26
1。3.1 设计成果27
1。3。2问题及分析29
1。1项目介绍
本论文的音乐播放器采用了Android开源系统技术,利用Java语言和Eclipse编辑工具对播放器进行编写。同时给出了详细的系统设计过程、部分界面图及主要功能运行流程图,本文还对设计过程中遇到的问题和解决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、上一首、下一首、音量调节、等功能于一体,性能良好,在Android系统中能独立运行.本设计简单实用,没有过于花哨的功能与界面,简单的功能不仅仅操作方便,还为系统资源节省空间。
在Android系统下开发一款多媒体播放器,并学习多媒体技术,熟悉软件开发流程。Android多媒体框架播放机制,包括:OpenCore,PacketVideo(PV).UI设计与制作,包括动态界面布局,浮动控制栏,自定义对话框等.媒体文件播放与控制,包括音视频文件的播放,后台播放媒体文件等。媒体文件的信息管理,包括媒体文件信息的扫描,存取与获取,数据库操作等。播放信息和用户配置参数的保存与加载。在Android模拟器/真机上实现对媒体文件的播放。
1.1.1播放器的基本控制需求
根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用如下图4—1来描述,系统的功能需求。
(图4-1)
从以上图4—1中我们可以一目了然地看出本项目的控制需求,其中主要包括了播放、暂停、音量调节、新增、上一首,下一首等功能。
1。1.2项目流程
下图4-2是项目设计的流程图,是本项目设计的重要关键点之一,此流程图展示了整个项目的逻辑与算法。是本项目的核心技术之一。
(图4-2)
不难看出,本项目使用到了3个主要用户界面,分别是播放主界面,播放列表界面以及播放界面.通过图4-2,我们可以清晰的,一目了然的读懂整个设计的思路以及各个功能的定位。从而,此流程图更加方便读者了解该项目的功能实现,设计思路,层次结构以及各个程序之间的关系等。
1.1.3UI界面设计
Android的四大基本组件:Activity(活动),Service(服务),BroadcastReceiver(广播),ContentProvider(内容提供者),各组件之间要进行切换需要一个意图或企图Intent类,通过启动StartIntent()方法来使各组件进行跳转[20]
Android的五大布局方式:LinearLayout(线性布局) FrameLayout(帧布局) TableLayout(表格布局) AbsoluteLayout(绝对布局) RelativeLayout(相对布局)。[21]
五种布局方式可以相互嵌套,Android各种漂亮的界面都是通过嵌套布局而实现的。
Android的线程,以及线程之间通信的中介:Handler类
Android数据库:在第三章已经介绍过了.这里不再介绍
Android配置文件:AndroidManifest.Xml及res资源文件中各种属性 布局方式 引用的资源等.
Android系统将插件ADT集成到了Eclipse工具上,因此,一个Android程序启动后,系统会启动一个模拟器(Emulator),该模拟器是一款手机板的样式,拥有手机硬件的基本操作。我们也可以将右边的键盘通过代码属性设置将其隐藏,界面的大小可自由设定,目前最大支持800X600的分辨率。
1.1.4项目程序结构
Android工程基本结构目录包括:src (源代码)、gen(Android系统自动生成的常量)、Res(资源文件):主要存放程序界面的布局配置(。xml)文件和图片资源。AndroidMainfes.xml 是四大组件的驱动配置文件,有它的存在,Android程序的四大组件才可以正常的跳转.如图4。3,写明了Android资源的类型和布局
(图 4。3)
下图4.4—4。7为音乐播放器代码结构和各界面的配置文件,图像资源等,图4。4 为一个Android工程所必须的结构,图4.5为该播放器的.Java文件,图4.6为播放器所用到的字符串,字体大小,字的颜色等配置文件,图4.7为该播放器的图片资源。
(图 4。4) (图 4.5)
(图 4.6)(图 4.7)
1.1.5项目Manifest.xml文件
Android系统的任何一个程序启动都需要AndroidManifest.xml来启动程序,任何一个新建的工程目录都会自动生成一个AndroidManifest.xml文件,此配置文件是整个程序能够正常运行的核心,它里面包含了AndroidSDK的版本,程序运行的默认Activity,当程序中的任何一个组件触发事件后,系统都会自动的去AndroidManifest。xml中寻找标识来作出相应的操作.任何一个AndroidManifest。Xml文件的格式都应为:
<?xmlversion=”1.0"encoding=”utf—8"?〉
〈manifest >
〈application 〉
ﻩﻩ<activity 〉
ﻩ〈intent-filter>
ﻩﻩ <action/><category/>
〈intent—filter>
ﻩ〈activity 〉
<application 〉
ﻩ<user-sdk /><user-permission /〉
〈/manifest〉
Android系统有一个编码的规定,支持的编码是”utf-8",当程序中出现乱码是,我们须将其编码格式转化为"utf-8”.在 AndroidManifest。xml中会在第一行声明一句:<?xmlversion=”1.0" encoding=”utf-8”?〉。它是该系统支持的版本和编码。在第二行定义了我们需要使用的架构,该架构来自xmlns:android=”http://schemas.android。com/apk/res/android”
xmlns(XMLnamespace)是一个命名空间,它就像一条河的源头一样能让我们找到系统架构,每一个配置文件必须有这个xmlns,否则程序中的所使用的所有资源将无法找到。
如下程序,在application元素我们定义android:icon="@drawable/icon"
android:label="@string/app_name",android:icon是程序在手机中显示的图片,我们运用@drawable/icon表示了对res/drawable目录下的icon.png的引用。@string/app_name表示了对res/value目录下string。Xml中定义的app_name参数的引用。
<application
android:icon=”@drawable/music"
android:label="@string/app_name" >
<activity
android:label=”@string/app_name"
android:name=”.MainActivity” 〉
〈intent-filter 〉
<actionandroid:name="android.intent。action.MAIN” />
〈categoryandroid:name=”android.intent.category。LAUNCHER” />
<actionandroid:name="android.intent.action.CREATE_SHORTCUT"〉〈/action〉
<actionandroid:name=”cn.com.karl.music。MainActivity"></action〉
</intent—filter〉
</activity〉
这是系统确定的首先要启动的Activity是PlayRackActivity.
在intent—filter选项中,有action和category等等属性,我们需要定义action的值为android.intent。action.MAIN,category的值为android。intent.category。LAUNCHER,它们是系统的值,程序在解析到这些常用后就可以确定首先要启动的Activity。当我们需要通过一个组件触发另一个组件时,我们将设定action和category的其它属性值,系统会根据我们设定的属性值去AndroidManifest。Xml的application 中寻找标识,任何一个Activity的action和category是唯一,所以程序在任何时候都能唯一启动一个Activity,这样,不同的Activity之间的跳转就实现了。
在AndroidManifest。Xml中有一个根结点〈uses-sdk>,它是我们需要定义的ADT版本,例如我们将其值设定为android:minSdkVersion="8",则表示此Android工程所用的版本为1.6,Android还有1。1、1.5、1.6、2.0、2.1这几个版本。
如果我们需要对网络进行访问,比如打开一个网页,刚我还需要设置一个网络访问权限uses—permission,将其的值设置为android:name="android.permission.INTERNET,我们就可以访问网络了。当然uses—permission还有很多其它的权限,例如GPS定位权限,浏览器数据存取权限com.android.browser。permission。READ_HISTORY_BOOKMARKS等等。
当程序的任何一个组件要用到时,都必须在AndroidManifest。Xml文件中声明.四大组件要使用前都需要声明,其声明方式如下:
<service></service>
〈provider></provider>
〈activity></activity>
〈receiver></receiver>
其中声明provider时还需要声明其授权 authorities。每个组件里面还有很多的属性,会根据程序的具体需要定义不同的属性.过滤器intent-filter 有两种启动方式来启动界面:
(1) 显示方式
显示方式是在代码中的直接启动组件,启动时会声明Intent,在它的构造方法Intent(组件1,组件2)中直接指定一个组件的名字,然后调用方法startIntent(intent)以启动指定的组件.
(2)隐式方式
隐式方式是通过过滤器来过滤完成的,启动的组件必须满足action和category的条件才能够启动该组件。这些属性是在AndroidManifest.Xml文件中声明的。两种启动方式都可以通过程序setAction(ACTION常量)和startActivity(intent)或配置文件两种方式来实现组件的跳转。
1.2创建项目及具体结构分析
本节着重分析项目结构中每一个功能的功能设计与创建方法。包括了项目的创建,界面的设计以及对项目结构的分析.
1。2.1项目的创建
可以使用Eclipse插件创建一个简单的Android程序。
在创建新项目时需要注意输入以下信息:
Projectname(项目名称): chengchengMusicPlayer
BuildTarget(需要的版本): Android1.5
Applicationname(应用名称): MusicPlayer1
Packagename(包名): cn。com.karl.music
CreateActivity(Java项目名称): MusicPlayer
在实际程序中,我们可以定义自己的名称。其中软件包名称尤为重要。系统中的每个应用程序都必须具有唯一的软件包名.因为在很多地方都会用到软件包名,所以一旦设定好软件包名就不要随意修改它。
1.2。2界面设置
配置文件setting.Xml布局结构如下:
<?xmlversion="1.0" encoding="utf-8”?>
ﻩ<LinearLayout>
<RadioGroup>
ﻩﻩ 〈RadioButton 〉</RadioButton>
ﻩﻩ<RadioButton ></RadioButton>
<RadioButton >〈/RadioButton>
ﻩ〈/RadioGroup〉
</LinearLayout>
〈ToggleButton/〉
<AbsoluteLayout>
<ImageButton/>
ﻩ 〈ImageButton/>
ﻩ</AbsoluteLayout>
最外层的LinearLayout里面嵌套多层LineaLayout,子LinearLayout里面嵌套着单选按钮RatioGroup 和开关按钮ToggleButton。RatioGroup 里面嵌套着3个RatioButton,即界面上显示的(单曲循环、随机播放、顺序播放)。
播放模式用的是一个组件RadioGroup,这个组件有单项选择的功能,里面有RadioButton项,多个RadioButton项只能同时选中一个,该 播放器播放模式有单曲循环,随机播放,顺序播放等功能。MediaPlayer有一个监听器,它监听着歌曲是否正在播放或者是否播放完成,当歌曲播放完成时,会触发方法OnCompletionListener(),在该方法里面可以处理歌曲播放完成后的操作。RadioGroup可以进行单项选择操作。
通过RadioButton。isChecked(),如果返回true,刚该项被选中。
1.2.3 结构分析
(1)播放器的。Java文件
.Java文件是本项目的主要功能实现程序。在cn.com.karl.music程序包中的以下文件:
AlbumsActivity。java, ArtistActivity.java, ItemActivity.java, MainActivity.java, MusicActivity.java, MusicService.java, SongActivity.java
其中,AlbumsActivity。java文件主要描述并定义了专辑的视图界面以及功能作用。ArtistActivity。java文件主要描述并定义了艺术家的视图界面以及功能作用。ItemActivity。java文件主要描述并定义了歌曲项目的视图界面以及功能作用。MainActivity.java定义并实现了记忆上一次运行该项目的动作,在下一次打开运行后继续该操作。MusicActivity.java文件主要描述并定义了音乐播放器主界面的视图界面以及功能作用。MusicService.java是音乐播放器在后台运行的程序.SongActivity。java文件主要描述并定义了最近播放歌曲的记忆功能。
(2)播放器的图片资源
播放器的图片资源主要在res文件夹中。当然也可以通过更换res中的图片来更换音乐播放器各个UI界面的背景或其他按钮图片。
对于不同的界面,比如播放界面,歌曲列表界面,艺术家界面或者最近播放界面,都快可以设置不同的背景图片,这就使整个播放器在色调方面不显得那么单一了。
1.3设计成果及分析
在经过多次的程序调试及模拟器和真机测试后,本音乐播放器的设计成果及界面效果图会在本节中做概要介绍。
1.3。1 设计成果
(1)音乐播放界面如下图5.1所示:
(图5.1)
(2)歌曲列表界面如下图5.2所示
(图5。2)
(3)艺术家界面如下图5。3所示
(图5。3)
上述便是在经过多次的程序调试及模拟器和真机测试后,本音乐播放器的设计成果及界面效果图.
1.3.2问题及分析
(1)模拟器占用内存问题
在一开始对程序进行调试的时候,偶尔会遇到计算机提示:系统C盘空间不足之类的信息,这是由于Android模拟器每次运行时都会临时生成几个。tmp临时文件。一段时间后,其可能占用几GB的磁盘空间。所以,需要手工定期清理一下,清理目录为C:\DocumentsandSetting\Administrator\LocalSetting\Temp\AndroidEmulator 文件夹下的内容。在遇见此内存问题时,清理此目录临时文件后,模拟器便能正常运行了。
(2)程序问题
在调试程序过程中,总是遇见Activity与Manifest之间通信有故障的相关问题,后经与老师同学讨论后,发现是AndroidManifest。xml文件中,漏了将MusicActivity定义入Manifest程序中。
〈/activity>
〈activityandroid:name=”.ArtistActivity">〈/activity>
〈activityandroid:name="。SongsActivity"〉</activity〉
<activityandroid:name=”。ItemActivity”></activity〉
〈activityandroid:name="。AlbumsActivity"></activity>
<activityandroid:name=”。MusicActivity”〉</activity〉
<serviceandroid:name="。MusicService"></service>
〈/application>
(3)歌曲名称及SD文件夹不能显示的问题
ﻩ在运行程序后,有时歌曲名称,专辑,表演者等信息会出现乱码,预测估计是模拟器自带的字符串有错误。但由于时间问题,此问题到现在还未解决。
另外,有时在运行程序的时候,会显示SD卡未能读取的错误,但时而又会正常工作,推测可能是模拟器稳定性问题。
以上这两点问题都需要在之后慢慢的去琢磨推敲原因。
6 结论
(1) 通过对Android手机平台的音乐播放器软件的开发,使我对Android音乐播放器系统的整体设计有一个深入的了解,对整个流程也会有一个清晰的认识。开发Android音乐播放器,要抓住开发的核心部分,音乐播放器大体由播放主界面、播放列表、菜单、播放设置、文件浏览、歌曲搜索六大核心组成,只要掌握了这六部分的开发,音乐播放器就能初具规模。而其它的功能都是在这六个功能的基础上去补充添加的,但是这是功能的确是必不可少的功能,否则就不能算是音乐播放器了。
(2) 音乐播放器系统实现了播放器的基本功能:播放,暂停、停止、上/下一首、音量调节、文件浏览器、播放列表查询等功能.运用的系统平台是现今最热门的Android系统,是一个开源的基于Linux系统的手机平台。是以Java语言编写+SQLite数据库支持+SharePreference配置文件的组合方式进行数据管理.实现了音乐播放器的系统编程。
(3) 本次程序设计,对播放器的系统结构框架做了精心的构思与设计,采用主要开发工具是Eclipse1.5+Java语言的支持,AndroidDevelopmentTool的插件,和AndroidSDK2.2版本的全面结合,才使整个音乐播放器系统得以实现。
(4) 总之,经过几个月的Android系统技术知识的学习和对音乐播放器的构思与设计,使我对Android系统有了一定的了解,让我对Android系统上的开发流程和开发模式有了深入的了解,这对我以后的Android项目开发有很大的帮助。
谢辞
值此论文完成之际,衷心感谢我的导师金一鸣老师,在毕业设计的过程中给予我悉心的指导和帮助,他对待学识的严谨态度和作风让我感触颇深。感谢陈雯老师,作为我班的辅导员,在大学生活期间,给予同学们的帮助和教导。感谢2008届电子科学与技术的全体同学,和我一起度过了难忘的四年时光.感谢我的爸爸妈妈,将我培养成人,教育我,帮助我。最后,对审批此论文的老师表示深深地谢意。
参考文献
[1] 雍俊海编著。Java程序设计习题集[M].北京:清华大学出版社,2006
[2]JasminBlanchette,MarkSummerfield. C++ GUIProgrammingwithJava.[M]Publisher:PrenticeHallPTR,January152004。 15~25
[3] 朱福喜编著.Java语言习题与解析[M].北京:清华大学出版社,2006
[4] 赵文靖编著。Java程序设计基础与上机指导[M].北京:清华大学出版社,2006
[5] 吴其庆编著。Java程序设计实例教程[M].北京:冶金工业出版社,2006
[6]王克宏著.Java技术教程(基础篇)[M].北京:高等教育出版社,2002。04
[7] JavaEye论坛.http://www.javaeye.com/forums. 2010—04—15.
[8]TrolltechInc。Android ReferenceDocumentation3.3。2. http://qt.nokia。com/title-cn. 2004年
[9]耿祥义,Java大学实用教程[M],北京:电子工业出版社,2005.3
[10] 杨丰盛主编.Android 应用开发揭秘[M].西安:机械工业出版社,2010-01—25
[11] eoe。Android开发社区.http://www。eoeandroid。com/. 2010—04-10.
[12] 高焕堂编.Android 应用框架原理与程式设计(第三版)[M].北京:清华大学出版社,2008-10—03
[13]shaneCondor, LaurenDecry. Android移动应用开发从入门到精通[M].北京:人民邮电出版社,2010
[14]G.N.Wassef. Lipoprotein (a) inandroidobesityandNIDDM: anewmemberin‘themetabolicsyndrome'[M]. Biomedecine & Pharmacotherapy, Volume53, Issue10,December1999,Page462-465.
[15]FedericoPerfetto, RobertoTarquini, GermaineComealissen, GiorgioMello, AlessioTempestini, PaolaGaudiano, FrancescoMancuso, FranzHalberg. Circadianphasedifferenceofleptininandroidversusgynoidobesity[M]。 Peptides, Volume25, Issue8, Auguest2004, Page1297—1306.
[16]NesrineAttia, NatalieFournier, BenoitVedie, MicheleCambillau, PhilippeBeaune, OlivierZiegler, AlainGrynbery, Jean-LouisPaul, BrunoGuerci[M]。ImpactofAndroidoverweightorobesityandinsulinresistanceonbasalandpostprandialSR-BIandABCA1-mediatedserumcholesteroleffluxcapacities. Atherosclerosis, Volume209, Issue1, January1st,2008. Pages95—103.
[17]AlessandroDistefano, GianluigiMe, FrancesscoPace. Androidanti-forensicsthroughalocalparadigm[M]。 DigitalInvestigation, Volume7, Supplement1, August2010, PagesS83—S94
[18] 余志龙编著.GoogleAndroidSDK开发范例大全[M].北京:人民邮电出版社,2009-7-1.
[19] 张孝祥著. java就业培训教程[M].北京:清华大学出版社,2007.
[20] Ming-ChiaoChen, Jiann-LiangChen,Teng-Wen. Android/OSGi—basedvehicularnetworkmanagementsystem[M]。 ComputerCommunications, Volume334, Issue2, February15th2011, Pages169-183
[21]RetoMeier。 Android高级编程[M].北京:清华大学出版社,2010。
《C/C++课程设计》项目报告
目 录
1 项目简介1
1.1项目名称1
1。2功能概述1
1.3 开发人员及职责。。....。。。...。.。..。。.。.。....。。.。..。。.。.。。.。。。。.....。..。....。。。.。.。。。.。。。......。.。..。。.。。.....。..。...。.。..1
2 需求分析..。.。。...。。.。.。.。....。....。....。。.。.。.。。..。...。。。。。....。....。。...。.。。。。..。。....。......。..。。.......。..。...。.......。...。..。..。.。.1
2.1 功能需求。....。.。..。。。。。...。。。。..。..。....。....。。.。。..。..。..。.。。。..。.。.。。.。.。..。....。......。....。..。......。。..。...。。。..。...。。.1
2.2 性能需求......。.。....。...。...。.。...。.。。。。。。。.。..。.。。..........。。..。......。.。。.。....。...。....。..。...。..。。。....。.。。。。。。..。....2
3 系统设计。....。....。。。..。..。....。...。..。.。。.。。。.。.....。。.....。....。。..。...。..。。.。..。..。.。.。..。...。.。....。..。。。...。。..。。.。..。..。。。.。。.。..3
3.1 代码设计...。..。。.。...。..。.......。.。..。。..。。。..。。。。。。...。..。......。.....。....。.。.。....。....。.....。..。..。..。.。...。...。........3
3.2 流程图。.。.........。.。....。。。..。。。......。..。。.。。。.......。。.。..........。....。..。......。....。。。.。。.。。..。。..。..。。.。...。..。.。。。。.13
4 系统实现及测试.。.。。.。.。。.。。...。。。........。.。..........。。..。.。。。。.。。...。..。...。.。。。..。。。....。.。....。...。....。。.。.。....。.。。..。。。.17
5 项目总结........。。。。...。。..。。。.。....。。.......。。...。.。。.。..。.。..。.。...............。..。。.....。.。..........。.。....。。.。。。。..。.....。..。..。20
5.1 总体总结。。。。。。。...。。..。.。。..。。。..。........。。.。........。..。...。...。。。.....。。。...。。.。。.。。。...。.。。...。。...。。..。......。..。..。.20
5。2 个人总结.。。...。。。..。。。..。.。。...。.。。.。.....。..。..。.....。.。.。。。..。....。..。..。。。.。。.。.......。。。.。...。...。。。.。...。。..........。21
1 项目简介
1.1 项目名称
多媒体播放器
1.2 功能概述
此款媒体播放器项目具有以下功能:
(1)本地设定目录中包含音频文件的浏览和播放(支持mp3格式)。
(2)本地设定目录中包含图片文件的浏览(支持bmp格式).
(3)本地设定目录中包含视频文件的浏览和播放(支持mp4格式)。
(4)最近播放列表功能,保存最近播放的10个文件,保存最近追加的10个文件。视频,音频,图片是分开的,都有最近播放列表和最近追加列表。
1。3 开发人员及职责
负责视频模块,以及最后的模块整合,报告的编写
负责音频模块,报告的编写
负责图片模块,报告的编写
2 需求分析
2.1. 功能需求
本设计将要实现的是一个单机多媒体播放器,可以对音频、视频、图片进行查看。从其目标功能及特点分析,将本软件功能划分如下:
(1) 视频播放器:
可以打开MP4格式的视频文件。
在本地文件夹中将MP4格式的视频文件添加至播放列表,点击播放,或双击列表里的所选项目,就可跳转至视频播放窗口。
在播放窗口里,查看视频时,有“播放",“暂停”,“停止”功能。
播放中,还有“前进”,“后退”功能,即快进快退功能,以4秒为一个单位,这个单位也可以在代码中进行修改。
在观看视频时,还有“上一曲,下一曲”功能,即查看之前添加在播放列表里的视频项。同时,也可以选择播放模式“循环,顺序,随机",该功能也是基于播放列表实现的。
在右边功能键里,还有音量调节,静音功能。除此以外ﻩ,还可以进行全屏浏览,按“ESC”退出全屏。
在主页面,还有两个数据框“最近追加项目”和“最近播放项目”,可以直观地看到最近播放项目,且可以手动清空所有项目。这两个列表只按照时间,保存最近的项目,且最多保存10个。
(2) 音频播放器
可以打开MP3格式的音频.
在本地文件夹中将MP3格式的视频文件添加至播放列表,点击播放,或双击列表里的所选项目,就可跳转至音频播放窗口。并且,在主窗口,还有两个数据框“最近追加项目”和“最近播放项目”,可以直观地看到最近播放项目,且可以手动清空所有项目。这两个列表只按照时间,保存最近的项目,且最多保存10个.
(此处为该多媒体公共窗口,功能相同,下面的图片浏览器也是一样的.)
在播放窗口里,听取音频时,有“播放",“暂停”,“停止”功能。
同样也会有“前进,后退”功能,“上一曲,下一曲”功能,播放模式中的“循环,顺序,随机”,这些功能与上面所述的视频播放器相同。
(3) 图片浏览器
可以打开BMP格式的图片。
主窗口同视频、音频播放器一样,在此不多赘述.
在浏览图片窗口中,会有“上一张,下一张”功能键,可以在“播放列表,最近播放项目,最近追加项目”任何一个列表中循环,可以自由选择。当图片浏览到所选列表的最后一张时,会自动循环至列表第一张。
(4)在主窗口的中,在列表中已添加文件后,有两种方式可以打开文件.一是选中想要打开的文件,点击“播放文件”按钮,二是直接双击列表中的文件,便可进入到相应子窗口进行查看。
(5)当单独拿出exe文件运行时,会自动在exe所在文件里创建9个文本文档,分别存放三个模块(视频,音频,图片)的三个列表(播放列表,最近播放项目,最近追加项目)信息.
2。2. 性能需求
(1)硬件平台要求
由于本软件为单机软件,不需进行大量的数据读写和数据交换,故对系统硬件配置的要求并不高,只要能够平稳运行Windows操作系统的硬件平台,都能够使用本软件。
(2)软件开发环境
1。 OS:Microsoft Windows XP SP2
2. Complier:Visual C++ 6.0 , Visual Studio 2005 Team System或更高版本
3。 ﻩMSDN Library
3 系统设计
3。1。代码设计
(1)音频、视频模块
1。创建播放器对话框
右击Dialog,点击插入,在弹出的对话框中点击Dialog,再点击新建。
双击新建的得对话框的ID,弹出新建的对话框,删除里面所有的控件。
右击,建立类向导,此时弹出Adding a class对话框,点击ok,输入name为player, 点击确定后退出。
再在对话框中右击,选择插入ActiveX控件,选择Windows
Media Player,之后在对话框中可以看到一个视频控件。右击,选择属性,在控制中将选择模式改为None,在视频控件中也就看不到一开就有的按键了。再次右击视频控件,选择建立类向导.点击Member Variables,选择视频控件的ID(默认为ID_OCX1),
点击Add Variables。此时会弹出一个对话框。
点击确定后,弹出Comfirm Class对话框后,点击OK。此时可以看到建立了很多个类。之后为添加成员变量。Name为m_play
,Category为Control,Variable Type为CWMPPlayer4.点击确定之后可以看到下面的效果.
2.控件与函数
声明全局变量CString playname,用于记录播放地址;int ntype用于记录播放的类型;int num1,num2,num1用于记录播放的地址在播放列表中的位置,num2用于记录播放列表中总的播放地址.构建成员函数void player::Onplay(CString pname,int n,int m,int t)
{playname=pname; num1=n;num2=m;ntype=t;}
将前台所选择播放的信息通过函数传递给播放器对话框中
在对话框中放上以下几个控件。
控件
ID
标题
控件
ID
标题
Push Butt
展开阅读全文