android_大作业_音乐播放器.doc

上传人:豆**** 文档编号:34209524 上传时间:2022-08-14 格式:DOC 页数:11 大小:263KB
返回 下载 相关 举报
android_大作业_音乐播放器.doc_第1页
第1页 / 共11页
android_大作业_音乐播放器.doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《android_大作业_音乐播放器.doc》由会员分享,可在线阅读,更多相关《android_大作业_音乐播放器.doc(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、如有侵权,请联系网站删除,仅供学习与交流android_大作业_音乐播放器【精品文档】第 9 页软件技术系列课程Android大作业( 2014 / 2015 学年 第 一 学期)题目: 音乐播放器的分析与设计 专 业 软件工程(服务外包) 学 生 姓 名 单珺瑜 班 级 学 号 B12041305 指 导 教 师 张怡婷 易磊 许鹏 指 导 单 位 南京邮电大学计算机学院 诚迈科技 日 期 2014.12.30 一、课题内容和要求音乐播放器,作为移动设备基础配备软件之一,主要功能包括从SDCard中读取音乐、显示播放音乐列表、播放音乐、显示音乐歌词、实现上一首、下一首、暂停、选择播放形式等功

2、能。本论文的音乐播放器采用了Android开源系统技术,利用Java语言和Eclipse编辑工具对播放器进行编写。同时给出了详细的系统设计过程、主要界面设计及主要功能运行流程图二、需求分析本课题基于Android手机平台上开发的音乐播放器主要设计了四个界面,包括:欢迎界面,主界面,播放界面和关于界面。每个界面的主要功能为:欢迎界面为显示App的logo;主界面利用ListView显示读取SDCard后的App中的全部歌曲列表,通过滑动屏幕并选择可以实现与我的收藏界面、关于界面的切换,通过点击具体歌曲可以实现与播放界面的切换;我的收藏界面利用ListView显示用户收藏的歌曲列表,通过滑动屏幕并

3、选择可以实现与主界面、关于界面的切换,通过点击具体歌曲可以实现与播放界面的切换。播放界面用以显示正在播放的歌曲的歌曲名、歌手、歌词等主要信息,并设置按钮实现前一曲、后一曲、播放暂停等功能,通过播放形式按钮可以选择单曲循环、随机播放或者是顺序播放,除此之外,界面下方利用Android自带seekbar设置的进度条可以根据用户需要调节播放进度;关于界面用以显示App的主要功能等信息。三、软件设计 (一)、系统主要功能模块包括: 1、欢迎界面:初始化Intent以实现欢迎界面开始1.5秒之后进入歌单列表界面。 2、歌单列表: a、歌曲:利用ListView类显示歌曲列表,点击歌曲名称即选定歌曲启动音

4、乐播放器,播放选中的歌曲 b、菜单:点击关于即可跳转至关于界面,点击我的收藏即可跳转至我的收藏界面 3、我的收藏界面: a、歌曲:利用ListView类显示歌曲列表,点击歌曲名称即选定歌曲启动音乐播放器,播放选中的歌曲 b、菜单:点击关于即可跳转至关于界面,点击歌曲列表即可跳转至主界面 4、播放界面: a、播放:选择音乐后,点击播放按钮启动音乐播放器,即当 MSG=MEDIA_PLAY时,播放所选中的歌曲,执行playMusic; b、暂停:点击暂停键,即当MSG=MEDIA_PAUSE时,停止正在播放的歌曲,执行pauseMusic; c、上一曲:点击上一曲,即当MSG=MEDIA_PREV

5、IOUS时,停止正在播放的歌曲,播放播放列表中上一 首歌曲; d、下一曲:点击下一曲,即当MSG=MEDIA_NEXT时,停止正在播放的歌曲,播放播放列表中下一首歌曲; e、播放模式:点击播放模式,利用MusicCompleteListener类可以依次改变播放模式至随机播放、列表循环或者单曲循环,进而执行randomRepeat、allRepeat或者singleRepeat; (1)随机播放:利用系统随机生成一个01之间的随机数乘当前position,再用int取整,即为下一首歌曲的position (2)列表循环:利用position变量,当position+!=NULL时,positi

6、on自增,否则position=0 (3)单曲循环:position不发生任何变化 f、进度条:利用Android自带的seekbar设置进度条,用户可以根据进度条来自主控制歌曲播放进度,随意跳转; g、歌词显示:利用LyricView类完成歌词随着时间滚动显示的功能。5、关于界面:利用LinearLayout的线性布局及若干个TextView以显示App主要功能等信息(二)、App设计简要流程图如下:Smart Music欢迎界面 我的收藏歌单列表播放控制歌词显示歌曲播放歌曲暂停播放上一首播放下一首播放模式单曲循环列表循环 随机播放四、 软件实现(一) 、开发环境的搭建与配置1. 下载JDK

7、JDK即JavaDevelopmentKit(Java开发工具包),包括JAVA运行环境,基础类库和JAVA工具,是JAVA运行的基础。2.下载Eclipse Eclipse是开发JAVA程序的软件工具。3.下载AndroidSDK SDK即SoftwareDevelopmentKit(软件开发工具包)。AndroidSDK指的是Android专属的软件开发工具包。4.下载ADT ADT,即AndroidDevelopmentTools(Android开发工具),是在eclipse中开发android应用程序的插件。5.安装JDK 运行下载好的jdk-7u25-windows-x64.exe,

8、按提示一步步走。6.测试是否安装成功 安装完成之后,可以用下述方法检查JDK是否安装成功:打开cmd窗口,输入java-version。7.添加环境变量 操作步骤: 计算机-属性-高级系统设置-环境变量-系统变量-Path-编辑添加JDK的bin目录的路径。8. 安装AndroidSDK 以前SDK直接下载完,在Eclipse里配置路径就可以了,现在貌似变成了一个管理器(SDKManager),用来管理下载更新,双击之前下载的installer_r22.0.1-windows.exe。9.安装SDKManager10. 安装Platform 仅仅SDKTools是不够的,我们至少还需要一个An

9、droid平台和最新的SDK平台工具。 启动AndroidSDKManager,如下图,勾选AndroidSDKPlatform-tools和AndroidSDKBuild-tools,Android4.2.2文件夹,Extras下的AndroidSupportLibrary。11添加环境变量 操作步骤: 计算机-属性-高级系统设置-环境变量-系统变量-新建变量名:ANDROID_SDK_HOME添加SDK目录的路径。12.安装Eclipse,选择工作空间。13.配置ADT 点击Help-InstallnewSoftware,然后Add-Archive-找到我们下载好的ADT-22.0.1.z

10、ip,同时给个名称,如ADTPlugin14.配置SDK(二)、负责的主要功能和代码1、欢迎界面欢迎界面为显示App的logo,点开App图标后出现,1.5秒后自动转入列表界面public class WelcomeActivity extends Activity /定义WelcomeActivity类Overrideprotected void onCreate(Bundle savedInstanceState) /Activity生命周期super.onCreate(savedInstanceState);setContentView(R.layout.activity_welcome

11、);new Handler().postDelayed(new Runnable() Overridepublic void run() Intent intent = new Intent(WelcomeActivity.this,MusicListActivity.class);/初始化startActivity(intent);WelcomeActivity.this.finish();,1500);/欢迎界面开始后1.5秒后自动进入列表界面2、 关于界面关于界面用于显示APP的功能、开发者、版本号等主要信息,主要代码如下:/设置文本高度/设置文本距离顶部距离/设置文本距离底部距离/设置

12、文本大小/设置文本距离顶部距离/设置文本颜色3、 MusicService功能MusicService用于实现音乐的后台播放功能public class MusicService/定义一个MusicService类 extends Service private MediaPlayer mediaPlayer;private int position;private List musicInfoList;private MusicInfo musicInfo;private int repeatState;private SharedPreferences sharedPreferences;

13、Overridepublic void onCreate()/Service的生命周期 super.onCreate();mediaPlayer = new MediaPlayer();/初始化mediaPlayer.setOnCompletionListener(new MusicPlayCompleteListener();sharedPreferences = getSharedPreferences(AppConstant.APP_DATE,MODE_PRIVATE);/MusicInfo musicInfo = musicInfoList.get(position);/playMus

14、ic(musicInfo);/Toast.makeText(this,service start,Toast.LENGTH_SHORT).show();Overridepublic IBinder onBind(Intent intent) return null;Overridepublic int onStartCommand(Intent intent, int flags, int startId)/Service生命周期 repeatState = sharedPreferences.getInt(repeatState,AppConstant.allRepeat);/定义歌曲列表p

15、osition = intent.getIntExtra(position,0);/定义位置变量SharedPreferences.Editor editor= sharedPreferences.edit();editor.putInt(lastPosition,position);mit();Log.i(repeatState-,repeatState+);musicInfoList = (List)intent.getCharSequenceArrayListExtra(musicInfoList);musicInfo = musicInfoList.get(position);if (

16、musicInfo != null)int MSG = intent.getIntExtra(MSG,0);Log.i(MSG-,MSG+);switch (MSG)case AppConstant.MEDIA_PLAY:playMusic(musicInfo);/播放音乐break;case AppConstant.MEDIA_PAUSE:pauseMusic();/停止音乐break;case AppConstant.MEDIA_NEXT:playMusic(musicInfo);pauseMusic();/播放下一首音乐break;case AppConstant.MEDIA_SEEKT

17、O:int progress = intent.getIntExtra(progress,0);mediaPlayer.seekTo(progress);continueMusic();/根据用户要求在进度条中寻找用户要求进度,再进行播放break;case AppConstant.MEDIA_CONTINUE:continueMusic();/继续播放音乐break;/playMusic(musicInfo);Log.i(posituon-,position+);Log.i(musicInfoList-,musicInfo.toString();return START_NOT_STICKY

18、;Overridepublic void onDestroy()/Service的生命周期 super.onDestroy();mediaPlayer.release();public void playMusic(MusicInfo musicInfo) mediaPlayer.reset();try mediaPlayer.setDataSource(musicInfo.getMusicPath();mediaPlayer.prepare();mediaPlayer.start(); catch (Exception e) e.printStackTrace();public void p

19、auseMusic()mediaPlayer.pause();/从暂停位置停止播放音乐public void stopMusic()mediaPlayer.stop();/从暂停的音乐停止播放音乐public void continueMusic()mediaPlayer.start();public class MusicPlayCompleteListener implements MediaPlayer.OnCompletionListenerOverridepublic void onCompletion(MediaPlayer mp) switch (repeatState) cas

20、e AppConstant.allRepeat:/实现列表循环播放if (position = musicInfoList.size() - 1) position = 0; else position += 1;break;case AppConstant.randomRepeat:/实现随机播放position = (int)(musicInfoList.size()-1)*Math.random();break;case AppConstant.singleRepeat:/实现单曲循环播放break;musicInfo = musicInfoList.get(position);play

21、Music(musicInfo);Intent sendIntent = new Intent(AppConstant.UPDATE_VIEW);/发送广播sendIntent.putExtra(position,position);SharedPreferences.Editor editor= sharedPreferences.edit();editor.putInt(lastPosition,position);mit();sendBroadcast(sendIntent);/Log.i(broadcast-,发送成功);五、软件测试将Android手机用USB与电脑相连,打开Ecli

22、pse在项目上右键 - 运行方式 - android application 即可以直接运行进行测试。1、 进入界面的测试: 点击App后直接跳转至进入界面,1.5秒后自动跳转至歌单列表界面2、 歌单界面的测试 a、歌单界面用以显示歌曲列表及其歌曲作者,界面下方显示上次播放的歌曲信息。b、屏幕左上方为菜单,通过滑动屏幕即可展开菜单列表,可以实现与关于界面的转换3、 我的收藏界面 我的收藏界面用于显示用户收藏的歌曲列表4、 播放界面的测试界面左上角是返回键,点击可以跳转至歌单列表界面;界面上方用以显示歌曲的名称,作者姓名;界面中间部分用以显示歌曲的歌词,并随着歌曲进度而滑动,正在演唱的歌词变红;

23、歌词下方是进度条,两侧显示歌曲已经播放时间和歌曲总长,用户可以随意拉动进度条以调整歌曲进度,当进度条到达最后时,自动跳转至下一首;界面最下方是功能键,依次为:上一首、暂停(播放)、下一首和播放形式,点击上一首按钮即可跳转至上一首歌曲界面,点击暂停按钮即可歌曲暂停且暂停按钮变成播放按钮,点击下一首按钮即可跳转至下一首歌曲界面,点击播放形式按钮可依次改变至随机播放、列表循环和单曲循环,按钮也会依次改变。5、 关于界面的测试关于界面用于显示APP的功能、开发者、版本号等主要信息六、 软件总结本次实验旨在利用JAVA编程,实现音乐播放器的基本功能。这次的软件设计题目,是非常贴近我们生活实际内容,这一类

24、的应用软件大大的娱乐和方便了我们的课余生活,但是亲自动手设计一个音乐播放器对我们来说却有一定的难度。随着我们对于这方面的学习,从最初的需求分析、搜集资料,到中期的代码编写和检测完善,再到后面的软件演示和文档编写,我们真正学到了不少使用的技术。本次实验我们小组三人明确分工,一人专门攻克核心代码,一人负责任务量较大、难度较轻的次核心代码,一人负责各种UI设计以及较轻松的代码;同时三人又通力合作,实验初期一起讨论课程的需求分析、共同制定概要设计、制定分工计划,实验中期针对每个人出现的问题通过交流沟通,找到解决方案,试验后期共同测试分析,集思广益不断检测完善。小组分工协作,互帮互助,在完成个人任务的同

25、时通过交流对另外成员的任务也有大致了解,使得每个人都在有限时间内收获三倍的成长。对于我个人而言,通过本次实验使得我对于JAVA编程语言的掌握有了实质性的进步,从基本不了解到基本熟悉的跨越。本次实验区别于以往上机实验的最主要一点是,本次实验是小组协作共同完成一个完整的App的制作,所以,除了简单的编程语言的掌握外,我了解到一个完整App的制作流程,了解到团队协作的重要性,以及如何在一个team扮演好自己的角色同时尽可能的帮助其他成员。遗憾的是,由于时间有限、对于JAVA语言掌握有限、对软件功能认识不足等原因,导致我们一些好的灵感和创意在软件上没有得到实现,如:联网下载歌曲等,但通过此次实验让我们提高了独立思考的能力,提高了实践动手能力,增强了团队凝聚力,增强了与人合作的能力等,受益匪浅!最后还有感谢三位指导老师对我们的悉心指导,感谢小组成员通力协作,感谢中兴公司与学校给予的机会,虽然最终结果与最初预想有些许差距,但也鼓励我继续不断进步,争取做出更优秀的作品。

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

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁