2023年7月11日发(作者:)
XXXX大学堂下考查报告
2012-2013 学年 第 2 学期
课程名称
姓 名
年 级
专 业
2013年 6 月 24 日
目录
第一章 引言·····················································3
1.1课题研究目的·····················································3
1.2课题研究意义·····················································3
1.3课题可行性分析···················································3
1.3.1课题调研····················································3
1.3.2可行性分析··················································3
第二章 开发环境安装和配置··································4
2.1开发包及其工具介绍···············································4
2.2Android开发平台搭建步骤··········································4
第三章 程序逻辑架构··········································5
3.1程序工程结构图···················································5
3.2工程各文件简介···················································5
3.2.1程序源文件夹src简介·········································5
3.2.2程序外部资源文件夹res简介···································6
3.2.3其他文件简介················································7
第四章 程序设计················································8
4.1主界面musicActivity设计···········································8
4.1.1onCreat函数··················································8
4.1.2关键代码讲解················································8
4.2音乐播放服务LocalService设计·····································10
4.2.1onCreat函数·················································10
4.2.2关键代码讲解···············································10
4.3数据库Helper类MusicListdbHelper设计······························11
4.3.1构造函数MusicListdbHelper···································11
4.3.2关键代码讲解···············································11
4.4歌词同步显示控件设计············································12
4.4.1歌词类SongLyric设计········································12
4.4.2歌词控件LyricView设计······································13
第五章 程序测试···············································14
第六章 分工与总结············································18
2
第一章 引言
1.1 课题研究的目的
1.熟悉一下eclipse工具和安卓的环境配置及开发的过程;
2.熟练掌握java的组件如button,textview,listView,menu等组件的灵活应用;
3.熟练掌握安卓的一个关于数据保存的方式SQLite3;
4.锻炼一下自己遇到问题,然后解决问题的能力。
1.2 课题研究的意义
随着3G技术的成熟和智能手机的不断普及,移动应用的需求与日俱增,移动应用开发成为当下最热门的技术之一。在google和android手机联盟的共同推动下,android在众多移动应用开发平台中脱颖而出。
Android操作系统是google最具杀伤力的武器之一。苹果以其天才的创新,是的iphone在全球迅速拥有了数百万忠实的“粉丝”,而android作为第一个完整,开放,免费的手机平台,使开发者在为其开发程序时拥有更大的自由。与windows mobile,symbian等厂商不同的是,android操作系统是免费向开发人员提供,这样可节省近三层得成本。
我们知道,无论是产品还是技术,商业应用都是它最大的发展动力。android如此受到厂商与开发者的青睐,它的前景一片光明。国内对于安卓这方面的市场还没有完全开发出来。
只要我们努力学习android,对理想,对生活都会有很大的补益。
因此,开发这样一套很简单的音乐播放器软件对我们来讲是一件很有必要的事情,在下面的各章中我们将以开发安卓音乐播放器软件为例,谈谈其开发过程和所涉及到的问题及解决方法。
本文中所做的主要工作如下:
开发环境及开发工具的安装及配置;
阐述整个音乐播放器的系统结构及工作原理;
设计实现“主界面activity设计”,“播放器Service设计”,“数据库设计”,“歌词同步显示设计”这四个主要的功能模块;
分析并解决实现中的若干技术问题,像组件的选择以及保存方式的选择;
进行测试并分析结果。
1.3 课题的可行性分析
1.3.1 课题调研
(1)与实践活动和相关的文件和资料由作者本人网络查找,以及老师帮助;
(2)具有遇到问题,具有独立思考,耐心钻研,向老师虚心求教的良好态度;
(3)关于技术方面的难题,跟指导老师面谈。
1.3.2 可行性分析
1)技术可行性-----本项目仅需要一台装有eclipse及配置好android开发环境的计算机即可,对计算机本身有一定的要求,它可以使用windows xp及其以上版本,mac os,linux等操作系统;
2) 经济可行性-----由于本软件开发只需要一台电脑就行,基本不需要太大的成本。在经济上完全可行;
3) 操作可行性-----界面设计时充分考虑用户的习惯以及手机方面的局限性,程序必须要很简单;本程序只涉及到开发环境配置,安卓组件的熟悉,以及安卓平台上的数据存储。并没有太大的难度,所以,该项目完全有可操作性。
3
第二章 开发环境的安装和配置
2.1 开发包及其工具的介绍
Android以java作为开发语言,jdk是进行java开发时必需的开发包.eclipse是一款非常优秀的开源IDE,在大量插件的“配合”下,完全可以满足从企业级java应用到手机终端java游戏的开发.Google官方也提供了基于Eclipse的android开发插件ADT,所以本软件开发选择Eclipse作为开发IDE.
2.2 Android开发平台搭建步骤
首先到/downloads/下载Eclipse集成开发环境并且解压,这里推荐下载Java EE 集成版本,可以为平台的搭建省下不少工作。接着再去/javase/downloads/ 站点下载SDK后安装,下载/android/android-sdk-windows-1.5_,Android SDK1.5后解压。第一步下载工序就结束了。
②双击Eclipse解压后目录中的然后启动,选择Eclipse菜单中的Help->
Install New Software-> 选项卡上的Available Software,点击右侧的“Add”输入/android/eclipse/后确定,然后在“Work with”下拉菜单中选择刚才输入的网址。过一会就会出现一个Developer Tools选项,勾上以后点击Next以后Eclipse会自动网上查找Android 开发工具插件,然后找到Android DDMS和Android
Development Tools,选中这两个点击Finish,Eclipse就会自动下载并安装Android插件了,最后会提示重启Eclipse。
③重启后选择Eclipse菜单中的Windows-> Preferences 在左侧的Android项目中SDK
Location中填入Android SDK解压后的目录,然后点击Apply。
④在Windows的系统变量中的path变量中添加一个值,该值指向解压后的Android SDK目录下的tools文件夹。
4
第三章 程序逻辑架构
3.1 程序工程结构图
下放两图即为程序的整个工程的结构图,左方为工程的整体结构图,右方为res文件中的各类用到的资源文件视图。
3.2 工程各文件简介
3.2.1 程序源文件夹src简介
源文件夹src下包含两个包与,分别用于程序主要功能的实现和提供歌词同步显示的控件。
先分析歌词包。其中设计了一个歌词显示的View控件LyricView,提供给主程序并作为一个控件显示出来;设计了歌词类用以从sd卡中寻找到响应歌词文件并进行初始化操作。
主程序类包中,musicActivity和SdCardList均为Activity,前者为播放器的主界面进行各种播放控制操作,后者用来从SD卡中选择MP3文件添加到播放列表中;LocalService是音乐播放的Service,用于进行音乐播放并在通知栏中显示消息;MusicListdbHelper为自定义的数据库Helper类,将歌曲的名字和路径存入数据库,提供对歌5
曲数据库的增加和删除的操作;另外两个均为辅助类,一个用于从文件夹中选择后缀名为mp3的文件(),另一个用于整合控件(),代码如下:
3.2.2 程序外部资源文件夹res简介
外部资源文件夹主要为程序提供各种外部资源,如图片等,这里主要介绍一下我们用到的布局文件夹Layout中的各种xml文件。
layout_、layout_、 layout_
这三个xml文件被主界面调用viewGroup整合在主界面中,即程序中出现的左右滑动效果,其中gridview显示了歌曲的专辑图片,listview显示了歌曲播放列表,lyricview显示了同步歌词。
、
主程序的主界面资源文件,同上述三个xml一样,整合在viewGroup中由musicActivity设定为当前界面。其中main决定了各view的布局,main1则是程序下方的进度条及简单控制按钮。
、
均被用于SdCardList这个Activity的布局,sdcard提供了SDCardList的主界面,musicitme提供了SDCardList中ListView的样式。
6
由LocalService调用,通知信息栏的布局文件。
3.2.3 其他文件简介
引入的外部JAR:
为程序了viewGroup以实现左右滑动展示不同的View的效果。
应用的配置文件,描述应用程序的名称、权限、能力和运行方式等。
gen文件夹
这是必需的,为应用程序自动生成的资源文件夹,它所包含的应用程序资源管理源文件R文件定义了该项目所有资源的索引,不能被编辑。
Android 2.1–update1
这是Android 2.1的系统类库,在编译该项目时用到的环境。我们可以通过相应的配置来选择所需的系统类库。
assets文件夹
主要用于放置多媒体等数据文件。
ties
这是自动创建的工程文件,定义了应用程序的target和其所需的选项。
7
第四章 程序设计
4.1 主界面musicActivity设计
4.1.1 养成良好习惯,先看看onCreat函数
如下图所示即为作为程序入口的musicActivity的onCreat函数。大致的流程是调用父类onCreat函数,隐藏标题栏,设置布局,寻找布局控件,初始化应用,刷新歌词文件,刷新播放列表,绑定监听器,开启标志位检测线程,设定空歌词,启动服务。
4.1.2 关键代码讲解
设置布局函数setView()中,先初始化ListView、GridView还有歌词布局lyricview的内容,完毕后再将其添加到viewPager中从而可以进行滑动切换显示。
8
初始化程序initApp()
如果程序是第一次启动(没有数据库文件),那么就自动初始化一次歌曲播放列表,默认路径为SD卡根目录,将歌曲文件信息添加到数据库并且添加到播放列表中。如果有数据库文件则不进行操作。
初始化程序完成之后就需要开启刷新歌词的线程了,refreshLyric()开启了刷新的线程使用已经定义好的handler hand发送刷新信息并进行相应的响应。
下一步就是列表的刷新显示,当前的播放列表中虽然存储有歌曲信息却没有将它显示出来,所以我们需要刷新并显示一次播放列表,refreshlist()即可做到这一点,并且在每次对播放列表进行操作后都需要调用一次它。
9
4.2 音乐播放服务LocalService设计
4.2.1 仍然先看一下onCreat函数
播放服务的流程就比较简单,实例化MediaPlayer对象,从musicActivity中得到音乐列表,开启刷新通知栏和musicActivity中progressbar的线程,设置并显示通知栏信息。
4.2.2 关键代码讲解
启动流程中的函数几乎没有什么需要讲解的,音乐播放器的Service中的关键代码当然是播放音乐和对切换歌曲的处理。
进度条更新函数progressbar()
这个函数启动了一个更新进度条的线程,同时更新了musicActivity中和通知栏中的进度条。
播放音乐的函数playMusic(String path)
函数中的参数为歌曲的路径(包含歌曲的文件名和后缀),返回类型为空,它的作用就是播放该路径的歌曲并且有一个播放完毕的监听器。所有的歌曲控制指令都写在musicActivity中,Service本身并不负责对歌曲列表的操作,所以,如果播放完毕,则给musicActivity一个切换歌曲的指令。
10
切换歌曲后需要调用的函数changeSong()
切换歌曲以后需要重新设定一下progressbar还有正在播放的文件名,专辑图片,歌词信息等。这个函数在musicActivity中被大量调用从而实现对音乐播放的安全控制。
4.3 数据库Helper类MusicListdbHelper设计
4.3.1 构造函数MusicListdbHelper(Context _context)
MusicListdbHelper是一个类,类对象的实例化都需要构造函数,数据库的Helper类的构造很简单,就是建立或者打开一个自己定义的数据库
4.3.2 关键代码讲解
需要被应用开始时调用的函数FirstStart()以判断应用是否需要初始化,返回类型为boolean
FirstStart()中建立了一个游标查询数据库中的名为“colaconfig”的表,该表也仅作为初11
始化查询而特别建立,如果该表不存在,则说明数据库中不存在歌曲信息表,则创建该表和歌曲信息表“musicitem”,如果该表存在,则返回false并不进行任何操作。
其他函数及其作用:
CreateTable_musicitem() 创建歌曲信息表
CreateTable_colaconfig() 创建配置表
Musicitem_insitem(String name, String path) 添加歌曲到歌曲信息表,返回类型为boolean
Musicitem_delitem(String name) 从歌曲信息表中删除名为name的条目
getMusicItem() 得到歌曲信息表的游标用以查询表中歌曲信息,返回值为Cursor
4.4 歌词同步显示控件设计
4.4.1 歌词类SongLyric的设计
构造函数SongLyric(String url),url为歌词路径包括歌词文件名加后缀。
其中关键在于处理歌词行的函数dealLine(String line)的使用。
先判断改行是否为歌词的标题、歌手、专辑等,如果均不是则为歌词行,那么就得到该行内容,然后再得到该行歌词的时间点和时间点后的内容。
12
4.4.2 歌词控件LyricView的设计
该歌词控件不可以写在xml配置文件中,必须使用一个layout布局控件存放,使用的时候先从Activity中得到layout,然后再将该歌词控件通过layout的getContext的参数实例化,最后添加到layout中,并且将对应的歌词对象SongLyric设置到歌词控件中。最后,歌词控件要做到与音乐同步的效果,还得时时刷新歌词控件,这样就有了歌词同步以及滚动的效果。
我们的构造方法不需要重写,所以。
onDraw()的设计
13
第五章 程序的测试
1.第一次运行程序的主界面
2.左右滑动的界面
14 3.选定歌曲播放后的歌词显示(需将歌词文件放在/sdcard/Music/下并且与歌曲文件同名)
4.选定的歌曲在通知栏中显示播放进度
15
5.使用返回键退出程序后Service仍在后台运行
6.从列表中删除歌曲Numb
16
7.按menu键进入SD卡目录然后添加歌曲Numb
8.添加后的界面(新添加的歌曲出现在列表顶端)
17 9.通过menu键呼出的菜单的退出键退出应用程序,服务一并被杀死(完全退出)
第六章 分工与总结
6.1 人员分工
XX:musicActivity、SdCardList的编写以及数据库的建立,同时负责软件后期的调试和修改;
XX:主要负责Service的编写,包括通知栏和主Activity中控件的同步,同时负责报告的书写;
XX:负责歌词控件ListView的编写,即建立包并提供了歌词显示的自定义控件。
6.2 课程总结
通信软件设计设计是一门紧跟时代步伐的课程,顺应了当下移动互联网的发展浪潮,通过这门课程使我们大学生将课堂所学的知识逐步转化为社会所需要的才能,令我们获益匪浅。这次的作品在一个月内,虽然并非顺利,但也算磕磕绊绊地完成了。途中遇到过难以解决的问题,虽然厌烦但还是逼着自己搞定了。说几个具体的吧,通过这次的堂下作业,主要得到了这么几个经验。首先,在开发之前,如果是比较生疏的领域最好将资料准备完备,否则在做扩展的时候将会后悔莫及;其次,效率永远是第一位的,如果想睡了的话就不要勉强自己继续工作;最后,询问别人并自己进行思考永远是最快捷的成长途径。总而言之,通过这次的软件开发,通过这门课程,我们培养了自己独立思考和独立作业的能力,更加能够自信地面对即将踏入的社会。
18
发布者:admin,转转请注明出处:http://www.yc00.com/news/1689064883a202127.html
评论列表(0条)