1、基于Android平台的音乐播放器设计班 级:指导老师:学 生:1目 录一、课题简介二、需求分析三、概要设计四、详细设计五、效果展示2项目背景随着计算机的广泛运用,手机市场的迅速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,选择了开发多语种的音频视频播放器,将各种性能优化,继承
2、播放器的常用功能,满足一般用户听歌的需求。3需求分析主要建设功能:导入本地歌曲文件,选择显示歌词,管理歌单等功能。交互设计:提供良好的交互设计操作简单快捷,按钮及菜单设计合理,合理引导用户使用界面颜色基调相似,操作习惯。风格相似。4名称功能播放暂停音乐在该功能中,点击播放开始播放音乐,同时图标切换成相应的暂停图标,用户可以再次点击该按钮进行暂停操作,按钮也变成播放。上一首、下一首功能当歌曲在播放或者是暂停时用户可以点击相应的上一首下一首进行歌曲的切换,在切换中,如果当歌曲位于歌曲列表的边界时可以正常切换。拖动播放进度条在播放时会有一个进度条显示播放的进度,用户可以拖动进度条来控制播放位置。选择
3、播放模式用户可以自主选择播放模式,单曲循环、随机或者是随机播放模式。下文将对本功能的核心用例进行具体的分析,如下表所示:5概要设计播放器对象之间的交互情况如图以视图树的方式展示Android中界面的布局方式6详细设计播放器主界面是一个Activity,Android工程在每个activity启动的时候会首先执行Oncreate()方法。如下代码:PublicvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.activity_main;该方法主要执行界面
4、的初始化操作,Activity有个设置布局的方法:Context.setContentView(layoutResID),参数为资源ID,该Id在工程目录res/layout下,主界面布局文件名为main。主界面主要采用相对布局(RelativeLayout)。72.播放音轨SeekBar在main.xml文件中,SeekBar的代码如下:上面代码中有参数android:thumb=drawable/pic_14为音轨游标的图片资源播放器最重要的一部分就是音轨与歌曲进度同步的实现。音轨设置了两个TextView用来显示当前歌曲播放的进度时间和歌曲的长度如右图所示8音轨对象SeekBar在歌曲刚
5、开始播放的时候调用方法SeekBar.setMax(),参数传入歌曲的长度。SeekBar.setProgress(1)设置游标的起始进度为1。然后程序运行如下代码:classMybroadextendsBroadcastReceiverOverridepublicvoidonReceive(Contextcontext,Intentintent)/TODOAuto-generatedmethodstubif(intent.getAction().equals(ACTION_MAXTIME)intmaxtime=intent.getIntExtra(maxtime,0);se.setMax(m
6、axtime);time2.setText(+settime(maxtime);if(intent.getAction().equals(ACTION_NOWTIME)intnowtime=intent.getIntExtra(nowtime,0);se.setProgress(nowtime);time.setText(+settime(nowtime);if(intent.getAction().equals(ACTION_LRC)Stringlrc=intent.getStringExtra(geci);/Toast.makeText(MainActivity.this,剧本开始+lrc
7、,Toast.LENGTH_LONG).show();showgeci.setText(+lrc);9大家有疑问的,可以询问和交流大家有疑问的,可以询问和交流可以互相讨论下,但要小声点可以互相讨论下,但要小声点可以互相讨论下,但要小声点可以互相讨论下,但要小声点10if(intent.getAction().equals(ACTION_NOWMUSIC)Stringnowmusic1=intent.getStringExtra(nowmusic);/Toast.makeText(MainActivity.this,剧本开始+lrc,Toast.LENGTH_LONG).show();nowmu
8、sic.setText(正在播放:+nowmusic1);publicStringsettime(inttime)intfen=time/60000;intmiao=time/1000%60;returnfen+:+miao;RunnablemRunnable=newRunnable()Overridepublicvoidrun()/TODOAuto-generatedmethodstubnowtime();handler.postDelayed(mRunnable,1000);113.播放调节功能实现各按钮水平放置,从左到右依次是上一首、播放、下一首功能按钮。用的是布局中的线性布局Linea
9、rLayout,;将其设置为水平,LinearLayout中依次放置播放/暂停,上一首、下一首按钮属性。配置文件代码结构如下:12主要按钮功能实现代码:(1)“上一首”按钮并实现功能OverridepublicvoidonClick(Viewv)/TODOAuto-generatedmethodstubswitch(v.getId()caseR.id.shang:nextmusic(0);lastm.setImageResource(R.drawable.dianji_22);break;(2)“播放”按钮并实现功能caseR.id.play:isplay=!isplay;if(isplay=
10、true)playm.setImageResource(R.drawable.dainji_20);elseplaym.setImageResource(R.drawable.dianji_19);musicplay(isplay);break;(3)“下一首”并实现功能caseR.id.xia:nextmusic(1);nextm.setImageResource(R.drawable.dianji_25);break;134.歌曲列表界面ListView同样有一个监听器list.setOnItemClickListener(newOnItemClickListener()OverridepublicvoidonItemClick(AdapterViewarg0,Viewarg1,intarg2,longarg3);,我们只要实现这个方法,就可以监听鼠标的点击事件,当鼠标点击到每一行时,可以通过publicObjectgetItem(intposition)得到该行上的信息。这样就可以通过Intent将数据传入到其它的Activity。14效果展示音乐播放器在手机上的运行情况音乐播放器在模拟器运行情况15谢 谢16