android_大作业_音乐播放器.doc_第1页
android_大作业_音乐播放器.doc_第2页
android_大作业_音乐播放器.doc_第3页
android_大作业_音乐播放器.doc_第4页
android_大作业_音乐播放器.doc_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件技术系列课程Android大作业( 2014 / 2015 学年 第 一 学期)题目: 音乐播放器的分析与设计 专 业 软件工程(服务外包) 学 生 姓 名 单珺瑜 班 级 学 号 B12041305 指 导 教 师 张怡婷 易磊 许鹏 指 导 单 位 南京邮电大学计算机学院 诚迈科技 日 期 2014.12.30 一、课题内容和要求音乐播放器,作为移动设备基础配备软件之一,主要功能包括从SDCard中读取音乐、显示播放音乐列表、播放音乐、显示音乐歌词、实现上一首、下一首、暂停、选择播放形式等功能。本论文的音乐播放器采用了Android开源系统技术,利用Java语言和Eclipse编辑工具对播放器进行编写。同时给出了详细的系统设计过程、主要界面设计及主要功能运行流程图二、需求分析本课题基于Android手机平台上开发的音乐播放器主要设计了四个界面,包括:欢迎界面,主界面,播放界面和关于界面。每个界面的主要功能为:欢迎界面为显示App的logo;主界面利用ListView显示读取SDCard后的App中的全部歌曲列表,通过滑动屏幕并选择可以实现与我的收藏界面、关于界面的切换,通过点击具体歌曲可以实现与播放界面的切换;我的收藏界面利用ListView显示用户收藏的歌曲列表,通过滑动屏幕并选择可以实现与主界面、关于界面的切换,通过点击具体歌曲可以实现与播放界面的切换。播放界面用以显示正在播放的歌曲的歌曲名、歌手、歌词等主要信息,并设置按钮实现前一曲、后一曲、播放暂停等功能,通过播放形式按钮可以选择单曲循环、随机播放或者是顺序播放,除此之外,界面下方利用Android自带seekbar设置的进度条可以根据用户需要调节播放进度;关于界面用以显示App的主要功能等信息。三、软件设计 (一)、系统主要功能模块包括: 1、欢迎界面:初始化Intent以实现欢迎界面开始1.5秒之后进入歌单列表界面。 2、歌单列表: a、歌曲:利用ListView类显示歌曲列表,点击歌曲名称即选定歌曲启动音乐播放器,播放选中的歌曲 b、菜单:点击关于即可跳转至关于界面,点击我的收藏即可跳转至我的收藏界面 3、我的收藏界面: a、歌曲:利用ListView类显示歌曲列表,点击歌曲名称即选定歌曲启动音乐播放器,播放选中的歌曲 b、菜单:点击关于即可跳转至关于界面,点击歌曲列表即可跳转至主界面 4、播放界面: a、播放:选择音乐后,点击播放按钮启动音乐播放器,即当 MSG=MEDIA_PLAY时,播放所选中的歌曲,执行playMusic; b、暂停:点击暂停键,即当MSG=MEDIA_PAUSE时,停止正在播放的歌曲,执行pauseMusic; c、上一曲:点击上一曲,即当MSG=MEDIA_PREVIOUS时,停止正在播放的歌曲,播放播放列表中上一 首歌曲; d、下一曲:点击下一曲,即当MSG=MEDIA_NEXT时,停止正在播放的歌曲,播放播放列表中下一首歌曲; e、播放模式:点击播放模式,利用MusicCompleteListener类可以依次改变播放模式至随机播放、列表循环或者单曲循环,进而执行randomRepeat、allRepeat或者singleRepeat; (1)随机播放:利用系统随机生成一个01之间的随机数乘当前position,再用int取整,即为下一首歌曲的position (2)列表循环:利用position变量,当position+!=NULL时,position自增,否则position=0 (3)单曲循环:position不发生任何变化 f、进度条:利用Android自带的seekbar设置进度条,用户可以根据进度条来自主控制歌曲播放进度,随意跳转; g、歌词显示:利用LyricView类完成歌词随着时间滚动显示的功能。5、关于界面:利用LinearLayout的线性布局及若干个TextView以显示App主要功能等信息(二)、App设计简要流程图如下:Smart Music欢迎界面 我的收藏歌单列表播放控制歌词显示歌曲播放歌曲暂停播放上一首播放下一首播放模式单曲循环列表循环 随机播放4、 软件实现(1) 、开发环境的搭建与配置1. 下载JDKJDK即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,按提示一步步走。6.测试是否安装成功 安装完成之后,可以用下述方法检查JDK是否安装成功:打开cmd窗口,输入java-version。7.添加环境变量 操作步骤: 计算机-属性-高级系统设置-环境变量-系统变量-Path-编辑添加JDK的bin目录的路径。8. 安装AndroidSDK 以前SDK直接下载完,在Eclipse里配置路径就可以了,现在貌似变成了一个管理器(SDKManager),用来管理下载更新,双击之前下载的installer_r22.0.1-windows.exe。9.安装SDKManager10. 安装Platform 仅仅SDKTools是不够的,我们至少还需要一个Android平台和最新的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.zip,同时给个名称,如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);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的功能、开发者、版本号等主要信息,主要代码如下:/设置文本高度/设置文本距离顶部距离/设置文本距离底部距离/设置文本大小/设置文本距离顶部距离/设置文本颜色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;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);/playMusic(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);/定义歌曲列表position = 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 (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_SEEKTO: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;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 pauseMusic()mediaPlayer.pause();/从暂停位置停止播放音乐public void stopMusic()mediaPlayer.stop();/从暂停的音乐停止播放音乐public void continueMusic()mediaPlayer.start();public class MusicPlayCompleteListener implements MediaPlayer.OnCompletionListenerOverridepublic void onCompletion(MediaPlayer mp) switch (repeatState) case 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);playMusic(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与电脑相连,打开Eclipse在项目上右键 - 运行方式 - android application 即可以直接运行进行测试。1、 进入界面的测试: 点击App后直接跳转至进入界面,1.5秒后自动跳转至歌单列表界面2、 歌单界面的测试 a、歌单界面用以显示歌曲列表及其歌曲作者,界面下方显示上次播放的歌曲信息。b、屏幕左上方为菜单,通过滑动屏幕即可展开菜单列表,可以实现与关于界面的转换3、 我的收藏界面 我的收藏界面用于显示用户收藏的歌曲列表4、 播放界面的测试界面左上角是返回键,点击可以跳转至歌单列表界面;界面上方用以显示歌曲的名称,作者姓名;界面中间部分用以显示歌曲的歌词,并随着歌曲进度而滑动,正在演唱的歌词变红;歌词下方是进度条,两侧显示歌曲已经播放时间和歌曲总长,用户可以随意拉动进度条以调整歌曲进度,当进度条到达最后时,自动跳转至下一首;界面最下方是功能键,依次为:上一首、暂停(播放)、下一首和播放形式,点击上一首按钮即可跳转至上一首歌曲界面,点击暂停按钮即可歌曲暂停且暂停按钮变成播放按钮,点击下一首按钮即可跳转至下一首歌曲界面,点击播放形式按钮可依次改变至随机播放、列表循环和单曲循环,按钮也会依次改变。5、 关于界面的测试关于界面用于显示APP的功能、开发者、版本号等主要信息6、 软件总结本次实验旨在利用JAVA编程,实现音乐播放器的基本功能。这次的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论