资源描述
,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,基于,Android,平台的音乐播放器设计,班 级:,指导老师:,学 生:,1,基于Android平台的音乐播放器设计班 级:1,目 录,一、课题简介,二、需求分析,三、概要设计,四、详细设计,五、效果展示,2,目 录一、课题简介2,项目背景,随着计算机的广泛运用,手机市场的迅速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如,CPU,,内存等的占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,选择了开发多语种的音频视频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户听歌的需求,。,3,项目背景随着计算机的广泛运用,手机市场的迅速发展,各种音频视,需求分析,主要建设功能:导入本地歌曲文件,选择显示歌词,管理歌单等功能。,交互设计:提供良好的交互设计操作简单快捷,按钮及菜单设计合理,合理引导用户使用,界面颜色基调相似,操作习惯。风格相似。,4,需求分析主要建设功能:导入本地歌曲文件,选择显示歌词,管理歌,下文将对本功能的核心用例进行具体的分析,如下表所示:,5,下文将对本功能的核心用例进行具体的分析,如下表所示:5,概要设计,播放器对象之间的交互情况如图,以视图树的方式展示,Android,中界面的布局方式,6,概要设计播放器对象之间的交互情况如图以视图树的方式展示And,详细设计,播放器主界面是一个,Activity,,,Android,工程在每个,activity,启动的时候会首先执行,Oncreate(),方法。,如下代码:,Public void onCreate(Bundle savedInstanceState),super.onCreate(savedInstanceState);,setContentView(R.layout.activity_main;,该方法主要执行界面的初始化操作,,Activity,有个设置布局的方法:,Context.setContentView(layoutResID),参数为资源,ID,,该,Id,在工程目录,res/layout,下,主界面布局文件名为,main,。,主界面主要采用相对布局,(RelativeLayout),。,7,详细设计播放器主界面是一个Activity,Android工,2.,播放音轨,SeekBar,在,main.xml,文件中,,SeekBar,的代码如下:,上面代码中有参数,android:thumb=,drawable/pic_14,为音轨游标的图片资源,播放器最重要的一部分就是音轨与歌曲进度同步的实现。音轨设置了两个,TextView,用来显示当前歌曲播放的进度时间和歌曲的长度,如右图所示,8,2.播放音轨SeekBar在main.xml文件中,Seek,音轨对象,SeekBar,在歌曲刚开始播放的时候调用方法,SeekBar.setMax(),,参数传入歌曲的长度。,SeekBar.setProgress(1),设置游标的起始进度为,1,。然后程序运行如下代码:,class,Mybroad,extends,BroadcastReceiver,Override,public,void,onReceive(Context context,Intent intent),/,TODO,Auto-generated method stub,if,(intent.getAction().equals(ACTION_MAXTIME),int,maxtime=intent.getIntExtra(maxtime,0);,se.setMax(maxtime);,time2.setText(+settime(maxtime);,if,(intent.getAction().equals(ACTION_NOWTIME),int,nowtime=intent.getIntExtra(nowtime,0);,se.setProgress(nowtime);,time.setText(+settime(nowtime);,if,(intent.getAction().equals(ACTION_LRC),String lrc=intent.getStringExtra(geci);,/Toast.makeText(MainActivity.this,剧本开始,+,lrc,Toast.LENGTH_LONG).show();,showgeci.setText(+lrc);,9,音轨对象SeekBar在歌曲刚开始播放的时候调用方法See,大家有疑问的,可以询问和交流,可以互相讨论下,但要小声点,10,大家有疑问的,可以询问和交流可以互相讨论下,但要小声点10,if,(intent.getAction().equals(ACTION_NOWMUSIC),String nowmusic1=intent.getStringExtra(nowmusic);,/Toast.makeText(MainActivity.this,剧本开始,+,lrc,Toast.LENGTH_LONG).show();,nowmusic.setText(,正在播放:,+nowmusic1);,public,String settime(,int,time),int,fen=time/60000;,int,miao=time/1000%60;,return,fen+:+miao;,Runnable mRunnable=,new,Runnable(),Override,public,void,run(),/,TODO,Auto-generated method stub,nowtime();,handler.postDelayed(mRunnable,1000);,;,11,if(intent.getAction().equal,3.,播放调节功能实现,各按钮水平放置,从左到右依次是上一首、播放、下一首功能按钮。用的是布局中的线性布局,LinearLayout,,,;,将其设置为水平,,LinearLayout,中依次放置播放,/,暂停,上一首、下一首按钮属性。配置文件代码结构如下:,12,3.播放调节功能实现各按钮水平放置,从左到右依次是上一首、播,主要按钮功能实现代码:,(1)“,上一首,”,按钮并实现功能,Override,public,void,onClick(View v),/,TODO,Auto-generated method stub,switch,(v.getId(),case,R.id.,shang,:,nextmusic(0);,lastm.setImageResource(R.drawable.,dianji_22,);,break,;,(2)“,播放,”,按钮并实现功能,case,R.id.,play,:,isplay=!isplay;,if,(isplay=,true,),playm.setImageResource(R.drawable.,dainji_20,);,else,playm.setImageResource(R.drawable.,dianji_19,);,musicplay(isplay);,break,;,(3)“,下一首,”,并实现功能,case,R.id.,xia,:,nextmusic(1);,nextm.setImageResource(R.drawable.,dianji_25,);,break,;,13,主要按钮功能实现代码:13,4,.,歌曲列表界面,ListView,同样有一个监听器,list.setOnItemClickListener(new OnItemClickListener()Override public void onItemClick(AdapterView arg0,View arg1,int arg2,long arg3);,,我们只要实现这个方法,就可以监听鼠标的点击事件,当鼠标点击到每一行时,可以通过,public Object getItem(int position),得到该行上的信息。这样就可以通过,Intent,将数据传入到其它的,Activity,。,14,4.歌曲列表界面ListView同样有一个监听器list.,效果展示,音乐播放器在手机上的运行情况,音乐播放器在模拟器运行情况,15,效果展示音乐播放器在手机上的运行情况音乐播放器在模拟器运行情,谢 谢,16,谢 谢16,
展开阅读全文