安卓音乐播放器之欧阳与创编_第1页
安卓音乐播放器之欧阳与创编_第2页
安卓音乐播放器之欧阳与创编_第3页
安卓音乐播放器之欧阳与创编_第4页
安卓音乐播放器之欧阳与创编_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

否在手机上拥有■自己编写的个牲音乐播放器呢?能否在手机上拥有■自己编写的个牲音乐播放器呢?能《彩联网移动应用开发》时间:2021.03.08创作:欧阳与课程段计题目音乐播放器设计班级牛多联网1303学号311309080318姓名牟俊强指寻走师刘來利2016年6月25日1・顼目刑耒肖今社会的生适节奏逖耒邈快,人D1对手机的要求也逖耒逖;T,由于手机市场友展迅速,茨得手机操作菜统也凹现T不同各类,现在的市场上主契有三个手机操TE菜统,Windowsmobile,symbian,叹及谷馭的Android操作菜统,其中占有开放源代码优势的Android统有最大的友展前景。那么能欧阳与创编 欧阳与创编 2021.03.08欧阳与创编 欧阳与创编 2021.03.08的,Android统就能做至九本文的音乐播放器就是基于谷软Android手机平合的播放靄。Android:是谷歌于2007年公布的开放K源代码手机菜统,它的开放牲就优于其它封闭程Bm手机柔统,因此,任何人都可能根据自己的喜好将手机系:统中的所有功能重新编写。达茨得邈耒逖多的人夷汪达个操化菜统。茶次作品音乐播敖:器就是基于Android平合的。现今社会主话紧张,而欣覧音乐是萇中最好的舒缓层力的方程卒项目的目的是开发—个可叹播放至流音乐文件裕玩的播放器,本设计实现的主契功能是播放Mp3,Wav多种格K的音乐文件,弄且能醐控制播放,暂停,停止,播放列茅基本播枚控制功能,界面简明,璨伦简单。卒项目是一款基于Android手机平合的音乐播茨謂,TMAndroid手机拥有个牲的多媒体播放器,茨手机显得更生动灵话T匕,与人D1更为接近,让手机至人随时随咆处于音乐税频的徙律宅中。茨人D1的生话更加多样Y匕。巴茨设计看更加熟练Android的技木和萇它在市场上的特点。1.1开发环现Eclipse、AndroidSDK3.2.0分析2.1劭能刑来(用例BB分祈J極据项目的目标,我们可获得顼目系:统的基本需来,以下从不同角度来描述柔统的霜来,乔且茨用用例图耒描述,菜统的功能需来,费.DT分庆四郃分耒概括,即播枚器的基本控制霜要,播放列表营理需来,播放器友好惟需来和播放器扩展卡需来。叹下分刃描连:2.1.1援枚豳的用円0E假设安装T音乐播放謂的用尸是菜统的主要段计对象,萇拥有玖下操作,启动钦件、播放音乐、暂停播放、停止播枚、返凹钦件,基用例图如下®2.1播欣路碁忝用阳国2.1.2用洌分析~~用例名称:启动软件~~参与者:用户U标:使得用户启动软件并加载手机和sd卡上的音频文件到播放列表~~前置条件:无

基本事件流:1.用户启动软件2.播放器将播放列表中的当前的歌曲用例名称:播放参与者:用户目标:使得用户可以播放在播放列表中选中的歌曲前置条件:播放器正在运行基本事件流:1.用户单击“播放”按钮2.播放器将播放列表中的当前的歌曲用例名称:暂停参与者:用户目标:使得用户可以暂停正在播放的歌曲前置条件:歌曲正在播放且未停止和暂停基本事件流:1.用户单击“暂停”按钮2.播放器将暂停当前的歌曲用例名称:停止参与者:用户目标:使得用户可以停止正在播放的歌曲前置条件:歌曲正在播放或暂停基本事件流:1.用户单击“停止”按钮2.播放器将停止当前播放的歌曲用例名称:退出参与者:用户目标:使得用户退出或者后台播放音乐前置条件:程序在运行基本事件流:1.用户按返回键2.播放器退出或者进入后台播放3・薇與说计3.1秋件播SC流程0BStepl.启动钦件后,釈件自动检索手机和sd卡的音频文件,养组织显示庆列表.Step2.原:去列表的歙曲名字。Step3.播枚音乐。Step4.点去暂停,音乐暂停Step5.眾去播放转彩step3Step6.眾去停止停止播放音乐Step7.眾去返凹。启动软件自动检索手机中的暂停/退出软件图34•界面汞4.1秋件部署系:统编译生庆apk文件,将apk文件拷到手机茨看sd卡中,直接打开即可安装。4・2启动秋件打开钦件后的界面4.3歆曲对JR界面歙曲列表界面4.4播放珮面叹下给凹功能实现代码,布爲,风裕等代码量过大,放在压缩文件中文件夹显示文件如图所示PHfttr>加心Q诂炭 -口PHfttr>加心Q诂炭 -口d• 0肌叨g・ 3・ *The*r*・播敖器页面布爲Main.xmlT弋码如下欧阳与创编 欧阳与创编 2021.03.08android:layout_width=android:layout_width=r\vmp_c^to?fr欧阳与创编 2021.03.08欧阳与创编 欧阳与创编 2021.03.08android:secondaryProgress=nandroid:secondaryProgress=n0"欧阳与创编 2021.03.08<LinearLayoutxmlns:android=n/?z//?:/Zvc/?(?777U5.6//7Jr€>zJ.com/apk/res/androiclnandroid:orientation="verticalnandroid:layout_width=7z//parent"android:layout_height=7?//_parentuandroid:background="@ 加刃初"><ListViewandroid:id=u@+i(J/an(Jroicl:listnandroid:layout_width=ufillparentnandroid:layout_height=”200clip"android:layout_weight=r7Handroid:drawSelectorOnTop=ryi//5e,r/><SeekBarandroid:id=,f@+id/SeekBar01"android:layout_height=zWt//2_c(7nfe/?rnandroid:layout_width=7z//parent"android:max="100”android:progress=nCandroid:visibility=uvisible99/><TextViewandroid:layout_height=Hwrap_contentnandroid:layout_width=ufill_parentuandroid:id=n@+id/currentProgress"/><TextViewandroid:layout_height=/W6/p_ranto?rnandroid:layout_width=ufillparent"android:layout_y=”300dp"android:id="@+,必7/打帀疋 加"/><LinearLayoutandroid:orientation=r77<7nz^Z€//nandroid:layout_width=ry?//_parent"android:layout_height='Wt/p_cf?nf(?/?rn>vlmageButtonandroid:id=zr@"欧阳与创编 欧阳与创编 2021.03.08欧阳与创编 欧阳与创编 2021.03.08欧阳与创编 欧阳与创编 2021.03.08android:layout_height="wrapcontentandroid:layout_height="wrapcontent99欧阳与创编 2021.03.08android:layout_height=/W6/p_c6>n^?rnandroid:layout_marginLeft=z70(77/?nandroid:background=u@drawable/firstlf7>vlmageButtonandroid:id="@+i(J/stop_button,randroid:layout_width=nwrap_contentnandroid:layout_height=/W6/p_c<?n^z?rnandroid:backgi・ound="@〃swab/必切/"android:layout_marginLeft=z706///?n/>vlmageButtonandroid:id=n@+id/start_button"android:layout_width=r\rm/?_ra/?^/7frandroid:layout_height=/W6/p_c6>n^?rnandroid:background="@dmwdb沧Zyfd”,"android:layout_marginLeft=u10dipn/>vlmageButtonandroid:id="@+沏仇山血_加存67"android:layout_width=r\vm/?_c(7Hto7frandroid:backgi・ouiid="@〃swb/叨os刃"android:layout_marginLeft=z70(77/?n/>vlmageButtonandroid:id="@+j伽如android:layout_width=nwrap_contentnandroid:layout_height=/W6/p_c<?n^z?rnandroid:backgi・ound="@〃s化"android:layout_marginLeft=z706///?n/></LinearLayout></LinearLayout>MainActivity.JavaTt码如下importjava.io.File;importjava.io.FilenameFilter;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importandroid.app.ListActivity;importandroid.graphics.Color;importandroid.graphics.drawable.GradientDrawable;importandroid.graphics.drawable.GradientDrawable.Orientation;importandroid.media.MediaPlayer;importandroid.media.MediaPlayer.OnCompletionListener;importandroid.os.Bundle;importandroid.os.Handler;importandroid.view.KeyEvent;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.ArrayAdapter;importandroid.widget.ImageButton;importandroid.widget.ListView;importandroid.widget.SeekBar;importandroid.widget.SeekBar.OnSeekBarChangeListener;importandroid.widget.TextView;publicclassMainActivityextendsListActivity{privateImageButtonmFrontlmageButton=null;privateImageButtonmStopImageButton=null;privateImageButtonmStartlmageButton=null;privateImageButtonmPauselmageButton=null;privateImageButtonmNextlmageButton=null;/*定义迸Shandler,显示百分比迸度*/HandlermPercentHandler=newHandler();privateSeekBarmSeekBar=null;privateTextViewcurProgressText=null;privateTextViewcurtimeAndTotaltime=null;publicMediaPlayermMediaPlayer;privateList<String>mMusicList=newArrayList<String>();privateintcurrentListltem=0;privatestaticfinalStringMUSIC_PATH=newStringC'/sdcard/'1);@OverridepublicvoidonCreate(BundlesavedlnstanceState){super.onCreate(savedlnstanceState);setContentView(R.layout.main);musicList();mMediaPlayer=newMediaPlayer();initmFrontMusic();initStopMusic();initStartMusic();initPauseMusic();initNextMusic();initSeekBar();}publicvoidinitmFrontMusic(){mFrontlmageButton =(ImageButton)findViewById(R.id.front_button);mFrontlmageButton.setOnClickListener(newOnClickListener(){publicvoidonClick(ViewargO){if(-currentListItem>=0){currentListltem=mMusicList.size();}else{playMusic(MUSIC_PATH +mMusicList.get(currentListltem));欧阳与创编 欧阳与创编 2021.03.08欧阳与创编 欧阳与创编 2021.03.08欧阳与创编 欧阳与创编 2021.03.08(ImageButton)findViewById(R.id.start_button);欧阳与创编 (ImageButton)findViewById(R.id.start_button);欧阳与创编 2021.03.08});}publicvoidinitStopMusic(){mStopImageButton(ImageButton)findViewById(R.id.stop_button);mStopImageButton.setOnClickListener(newOnClickListener(){publicvoidonClick(ViewargO){if(mMediaPlayer.isPlaying()){mMediaPlayer.reset();}}});}publicvoidinitStartMusic(){mStartlmageButtonmStartImageButton.setOnClickListener(newOnClickListener(){publicvoidonClick(ViewargO){playMusic(MUSIC_PATHmMusicList.get(currentListltem));startSeekBarUpdate();}});}publicvoidinitPauseMusic(){mPauselmageButton(ImageButton)findViewById(R.id.pause_button);mPauselmageButton.setOnClickListener(newOnClickListener(){publicvoidonClick(ViewargO){if(mMediaPlayer.isPlaying()){mMediaPlayer.pause();}else{mMediaPlayer.start();});}publicvoidinitNextMusic(){mNextlmageButton(ImageButton)findViewById(R.id.next_button);mNextImageButton.setOnClickListener(newOnClickListener(){publicvoidonClick(ViewargO){nextMusic();}});}publicvoidinitSeekBar(){/*初始T匕起动条和为前迸度显示值*/mSeekBar=(SeekBar)findViewById(R.id.SeekBar01);curProgressText=(TextView)findViewById(R.id.currentProgress);curtimeAndTotaltime=(TextView)findViewById(R.id.curtimeandtotaltime);mSeekBar.setOnSeekBarChangeListener(newOnSeekBarChangeListener(){publicvoidonProgressChanged(SeekBarseekBar,intprogress,booleanfromUser){/*如果抱动迸度友生改变,则显示肖前迸廣值*/curProgressText.setText(H前迸度:”+progress);}publicvoidonStartTrackingTouch(SeekBarargO){curProgressText.setText(n?£动中...”);}publicvoidonStopTrackingTouch(SeekBarargO){intdest=mSeekBar.getProgress();intmMax=mMediaPlayer.getDuration();intsMax=mSeekBar.getMax();mMediaPlayer.seekTo(mMax*dest/sMax);}});}privatevoidplayMusic(Stringpath){try{mMediaPlayer.reset();mMediaPlayer.setDataSource(path);mMediaPlayer.prepareO;mMediaPlayer.start();mMediaPlayer.setOnCompletionListener(newOnCompletionListener(){publicvoidonCompletion(MediaPlayerargO){nextMusic();}});}catch(IOExceptione){e.printStackTrace();欧阳与创编 欧阳与创编 2021.03.08欧阳与创编 欧阳与创编 2021.03.08欧阳与创编 欧阳与创编 2021.03.08returnsuper.onKeyDown(keyCode,event);欧阳与创编 returnsuper.onKeyDown(keyCode,event);欧阳与创编 2021.03.08privatevoidnextMusic(){if(++currentListItem>=mMusicList.size()){currentListltem=0;}else{playMusic(MUSIC_PATH +mMusicList.get(currentListltem));}}©OverridepublicbooleanonKeyDown(intkeyCode,KeyEventevent){if(keyCode ==KeyEvent.KEYCODE_BACK){mMediaPlayer.stop();mMediaPlayer.release();}©OverrideprotectedvoidonListItemClick(ListView1,Viewv,intposition,longid){currentListltem=position;playMusic(MUSIC_PATH +mMusicList.get(position));super.onListItemClick(l,v,position,id);}〃播放刃表publicvoidmusicList(){Filehome=newFile(MUSIC_PATH);if(home.listFiles(newMusicFilter()).length>0){for(Filefile:home.listFiles(newMusicFilter())){mMusicList.add(file.getName());}ArrayAdapter<String>musicList=newArrayAdapter<String>(MainActivity.this,R.layout.musicitem.mMusicList);setListAdapter(musicList);}}/*更新抱动条迸度*/publicvoidstartSeekBarUpdate(){mPercentHandler.post(start);

温馨提示

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

评论

0/150

提交评论