媒体播放器——项目

上传人:woxinch****an2018 文档编号:45552115 上传时间:2018-06-17 格式:PPT 页数:75 大小:880KB
返回 下载 相关 举报
媒体播放器——项目_第1页
第1页 / 共75页
媒体播放器——项目_第2页
第2页 / 共75页
媒体播放器——项目_第3页
第3页 / 共75页
媒体播放器——项目_第4页
第4页 / 共75页
媒体播放器——项目_第5页
第5页 / 共75页
点击查看更多>>
资源描述

《媒体播放器——项目》由会员分享,可在线阅读,更多相关《媒体播放器——项目(75页珍藏版)》请在金锄头文库上搜索。

1、第27章 媒体播放器项目完整实践在本书前面的章节已介绍了C语言的语法和Linux系统 中各种常用的函数库,利用这些知识已可开发一些基本的应 用程序。本章将这些知识综合应用到媒体播放器项目中,通 过一个严格的项目管理制度对项目进行规划,并补充媒体播 放器未实现的功能。如果该项目由多个人协同开发,则可以 尝试分工协作,培养协同开发的经验。27.1 软件工程实战软件开发的过程中离不开软件工程思想的指导,即使在 学习过程中也应该时刻将软件工程方法放在重要位置。如果 在学习程序开发过程中就遭遇了项目失败,对于学习者来说 ,所造成的挫败感一直会影响到将来的实际工作中。而实践 软件工程思想又能为将来实际工作

2、打下扎实的基础,因此本 节结合媒体播放器项目来进行软件工程的实战。27.1.1 项目需求分析项目需求分析经常被作为一个独立的课题来研究,但对 于开发人员来说,了解项目需求分析方法也是必不可少的。 在朴素软件工程思想中,项目需求分析的方法使用的是实例 分析法。27.1.2 软件需求说明软件需求说明(Software Requirement Specification, 简称SRS)是项目需求分析所得到的文档。它的作用是提出 需要解决的问题,作为下一步软件设计和编码的基础。 1引言 2任务概述 3需求规定 4运行环境规定 5附录27.1.3 项目视图的解决方案项目视图指的是项目的实际需求,开发者在

3、软件需求说 明文档完成后即可针对项目视图提出解决方案。在给出解决 方案的同时也要陈述自己的理由,但应该避免在这个阶段进 行软件设计。下面列举媒体播放器项目中主要问题的解决方 啊。 1媒体播放器界面设计 2数据库的选择 3读取MP3文件信息 4媒体播放功能27.2 软件设计软件设计的内容很广泛,但结果只是总结出项目需求所 列出功能的实现方法。这个实现方法必须清晰易懂,能够被 所有参与项目的开发人员理解。因此,最终获得的应该是数 据字典和流程图。本书前面部分已经对媒体库中大部分功能 的实现进行了分步讲解,所以,这里讨论另外两个重要话题 。第一是需求分析方法,即根据软件需求说明进行详细分析 。第二是

4、制订开发计划和分工,目的是帮助读者按步骤实现 软件。27.2.1 需求分析需求分析是指理解项目的需求,就软件的功能进行深入 理解,并且给出明确的解决方案。27.2.2 制订开发计划媒体播放器中,首先应定义程序的主体结构,即实现核心控制模块 。该模块是其他所有模块操作的基础,缺少该模块则难以进行后面的工作 。然后在第二步可以同时进行媒体库模块和播放控制模块的实现,第三步 进行用户界面模块和媒体文件解码模块的设计。最后的步骤是系统集成, 把所有的模块关联起来,如图27.4所示。27.2.3 分工协作一个较大的项目往往需要分工协作,如何进行项目分配和如 何执行分配到自身的计划也是开发者必须具备的能力

5、。在这里需 要引入一种称之为甘特图的图表,它是以图示的方式通过活动列 表和时间刻度形象地表示出软件项目的活动顺序与持续时间。27.3 版本控制无论是独立开发的软件项目还是协作开发,都需要进行 版本控制。版本控制的作用是保护源代码,将每次对源代码 的修改都记录起来。这样一方面能保证可以回溯到指定的时 间点,另一方面在多人同时编辑一个源代码文件时不会相互 覆盖对方的工作成果。目前版本控制工具有很多,Linux系 统上使用最广泛的版本控制工具是CVS。该工具不仅能很好 的支持C语言项目,而且能被Eclipse集成开发工具集成使用 。27.3.1 CVS服务器配置CVS服务器是托管源代码的仓库,开发者

6、通过访问CVS 服务器获得源代码资源。在修改了相应的源代码后,源代码 及其改动信息又被存回到CVS服务器中。多人参与的项目只 用建立一个CVS服务器,开发者通过网络访问该服务器。27.3.2 CVS服务器管理CVS是功能齐备的版本控制工具,在使用CVS服务器之 前有几个重要概念必须了解。下面分别介绍这几个概念和操 作方法。 1仓库 2模块 3导入 4签出 5签入 6添加和删除 7历史 8冲突解决 9标记 10分支 11远程访问 12局限性27.4 在Eclipse中使用CVS客户端Eclipse集成开发环境内置了CVS客户端插件,因此可直接使 用Eclipse管理CVS服务器中的资源。对于Ec

7、lipse来说,CVS用于 支持团队开发,是很多大型软件开发团队所选用的工具。在 Eclipse中使用CVS客户端的优势在于: Eclipse与CVS无缝连接,可直接通过Eclipse的界面和菜单进 行CVS操作。 Eclipse为CVS提供了图形用户接口,无需记忆复杂的操作命 令。 Eclipse支持将CVS模块作为项目操作。27.4.1 从CVS服务器签出模块并创建项目无论CVS服务器是在本地,还是在远端,都可以直接从 CVS服务器中签出模块并创建项目。27.4.2 签入文件每一个文件名后显示该文件的版本号,如果文件在本地被改 动过,文件名前面会显示一个小箭头,如图27.13所示。27.4

8、.3 使用Eclipse项目创建CVS模块在Eclipse中可以将本地项目导入到CVS服务器中,创 建新的模块或签入到已有的模块中。该功能类似于CVS的导 入操作和签入操作的集合。27.4.4 比较文件Eclipse可以比较本地文件与CVS仓库中文件的差异。在Eclipse主界 面选择Window|Team Synchronize命令,将进入到团队同步界面,如图 27.20所示。27.4.5 管理CVS服务器Eclipse提供了专门的界面管理CVS服务器。如图27.21所示。27.4.6 断开项目与CVS服务器之间的关联如果某一项目不在需要与CVS服务器关联起来,可以在 项目浏览器中右击该项目

9、,选择Team|Disconnect命令。这 时,将弹出Confirm Disconnect from CVS对话框,如图 27.22所示。27.5 音量控制对话框音量控制对话框的作用是调节系统音量。单击媒体播放 器主界面上的音量调节开关按钮后,如果开关按钮的状态为 按下,音量调节对话框将显示出来。如果开关按钮处于原始 状态,音量调节对话框被隐藏。相关代码放在“interface.c” 文件中。27.5.1 创建对话框音量调节对话框的类型属于弹出式窗口,因此它没有普 通窗体的标题栏和边框。 音量调节对话框出现的位置非常重要,按照GNOME桌 面环境约定俗成的规则,通常显示在鼠标指针当前的位置。

10、 宏GTK_WIN_POS_MOUSE可返回鼠标当前的位置,它可 作为gtk_window_set_position()函数的实际参数。这样,每 次音量调节对话框都会显示在鼠标光标指向的位置。 。27.5.2 添加垂直比例尺音量调节对话框内的主要部件是一个垂直比例尺,该比 例尺用于调节音量和显示音量的比例。 对话框中默认有一个活动区域,实际上它是横向按钮盒 。音量调节对话框中没有任何按钮,因此要将活动区域屏蔽 起来。本例屏蔽活动区域的方法为,先获得活动区域的地址 ,其后使用gtk_widget_set_sensitive()函数使活动区域不显示 。但是,必须用gtk_button_box_se

11、t_layout()函数结束活动 区域设置,否则会造成GTK+错误。 最后,使用gtk_widget_grab_default()函数让GTK+获 得焦点。在创建音量控制对话框函数结尾处还要将 diaVolume指针返回。27.5.3 测试下面用一个例子测试音量控制对话框的显示效果。在编 写代码前,先要在媒体播放器源代码目录中添加C语言源代 码文件“callback.c”和头文件“callback.h”。这两个文件用于 放置所有回调函数的代码,在后面的开发过程中还将用到。27.6 播放列表对话框播放列表对话框由一组工具条按钮、一个树视图和一组 按钮构成,下面分别介绍播放列表对话框中这几个部件的

12、实 现方法。27.6.1 创建对话框播放列表对话框是一个非模式对话框,可以在该对话框 显示的同时操作媒体播放器主界面。它与普通窗体的构件区 别在于,非模式对话框没有最小化和最大化按钮。非模式对 话框与模式对话框的区别在于,前者使用gtk_widget_show() 函数显示,后者使用gtk_dialog_run显示。27.6.2 创建工具条和工具条按钮播放列表对话框的各种操作都放在工具栏中,对应有7 个工具栏按钮。 为了便于显示控制,工具条中使用的是工具条按钮。其 中“添加”、“打开”、“保存”和“删除”按钮可直接通过图像库 创建。但“添加目录”、“删除全部”和“排序”按钮并没有图像 库中对于

13、的项目,需要进行自定义。27.6.3 创建树视图播放列表的内容显示在树视图中,因此树视图被放置在 播放列表对话框的主要位置。 播放列表的内容可能不能完全显示在播放列表对胡框中 ,所以在创建树视图前先要创建一个滚动条窗体容器。将滚 动条窗体的水平滚动条屏蔽,设置其垂直滚动条为自动显示 。代码中,滚动条窗体的阴影风格被设置为向内,与其他对 话框保存统一。然后新建一个树视图,将树视图装入滚动条 窗体容器中。27.6.4 创建对话框按钮播放列表对话框只需要放置一个按钮,用于关闭对话框。这时需要 用到对话框的活动区域部分,代码如下所示:GtkWidget *dialog_action_area2;/ 用

14、于保存活动区域地址dialog_action_area2 = GTK_DIALOG (diaPlaylist)-action_area; / 获得活动区域地址gtk_widget_show (dialog_action_area2);/ 显示活动区域gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area2),GTK_BUTTONBOX_END); / 结束活动区域设置27.6.5 测试播放列表的实现与隐藏由媒体播放器主界面上的“播放 列表”按钮控制。因此首先要为该按钮的clicked事件连接回 调函数。27.7 媒体库对话框媒

15、体库对话框的实现方法相对于播放列表对话框略为复 杂,主要区别是媒体库对话框使用了2个树视图,一个用于 显示分类,另一个用于显示媒体信息。媒体库以标题、艺术 家、专辑和流派作为分类的条件,因此需要在原型中显示出 来。本例中将介绍树视图的初步实现方法。27.7.1 创建对话框媒体库对话框使用的是非模式对话框,很多时候还需要 与播放列表对话框同时显示。 但是代码量的多少并非是衡量开发者编码水平重要因素 ,程序清晰易读才是必须遵循的原则。有些时候增加代码复 用会加大编码难度,这样将造成更多的编码错误,反而降低 了效率。27.7.2 创建工具条和工具条按钮媒体库对话框的工具条中共有6个工具条按钮,下列源 代码用于创建工具条和工具条按钮:GtkWidget *toolbar;/ 用于保存工具条容器地址toolbar = gtk_toolbar_new ();/ 创建工具条容器gtk_widget_show (toolbar);/ 显示工具条容器gtk_box_pack_start (GTK_BOX (vbMedialib), toolbar, FALSE, FALSE, 0);/ 将工具条容器装入纵向组装盒27.7.3 创建分类部件和媒体信息显示

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号