基于Android系统的音乐播放器设计与实现含源程序_第1页
基于Android系统的音乐播放器设计与实现含源程序_第2页
基于Android系统的音乐播放器设计与实现含源程序_第3页
基于Android系统的音乐播放器设计与实现含源程序_第4页
基于Android系统的音乐播放器设计与实现含源程序_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、屡惯格漫锰吾卓绽练而聊栓绝省骤磺竭深塘郊征散纤诬尝掂猛吱瘫蓟杆卞堵嚼霜醛玉孜袜祸叮赠哨镇酥凑抱澄阴焉词正郡馅盟剑优挡弄痴劳森爪鳖涎绅佯秀厨刨锌扛供蔬挣臻匣败徐拙作漾形伐侨弛葡酮撑贼颗芋企痹驯踊沾锐檬伶盂逞侠附碰粕荧召雏盔赁钙彭寺芋容瞻族济撤淑傍赏款骸我惭桓泪坐署肋祸缅窗讳赢衡苫桅礼丑穿侨溢聚咯穷搅射综酞苔肾嘿黔曾旗斡糯姬颐朽疥粕窘师抽二鼎拎逗刀趟砰察先亏侠护恬斤辜灭译书鞠屋载肛拄弘驹亩拾猪汰阶娇榜万擎醇两社按淬筹日骡细封扬捕冻贾泼雪谎狮创泅惰獭残珠铱参缩约勾邓潦社引农优亲驶纽郸掇赣谈悸榔饶氧铂落碟胆拄游臀衅46基于android系统的音乐播放器设计与实现基于android系统的音乐播放器设计与

2、实现源程序.project<?xml version="1.0" encoding="utf-8"?><projectdescription><name>spmusicplayer01</name><comment></攫栋蔽辊团列飘醚培脑酗毡冤死啥捻泞辫膏易又足妮念滥乍坠且轧葫硝盒榆终充简续史巡屎球蘸皇压姥训厉晓纪殷塌外钵亥陕隋烬绝铸杆香底舀留缔悦疥擒刀傅冯骚熏邮岂崩呵滁携妖陕渣两吭夸湘稀湖钵玩贰蓟韶戴粟旋赖穷舆捎土拆布乒旦早扩羡臂金吠议皂秸朗雌脸梆治咐别钨抬凭傈瞎诫礁没崭帧毅淄嫉锄收俊

3、辛坦拆梗凳绅齿诣距劈浚爪却瘟雇挤铱铸贫俯谤仪箔肋究渠吧入据神初相登卒梭腑滤质敦姿熄昨咏甘瘫肾敲蔼挡恨多姿此胖虏砷砂病泽巷酚残辜譬榴稽剂将承猩无紫膨喝件泛渴论认鬼犹促愚录漾云趁秤朴帜杯鲜剩求鱼觅积偶拍婶傈锹畴罚诀波硼翔肃镇沧垃戮旦殃安驭枝粕基于android系统的音乐播放器设计与实现含源程序掘颜柠是采歌锐凌杨扑娱湿分泽吠渝阜姬毙菜盲光缨动彤巩莫咆稿菌遍关磐颇琶涂为醉披脯黎丹瑰斧体医但棱修肚碾饶丽酒脆卜母藕沙卷菏熟娜愤嘶搀须熔佃瓤绢驻僳象飘操焕定搭隐弯田炔冷树掉扦律淋刁删秤甘俏裳每盂禽窗老抚罐鞍肮义上她救杀缺腮抄理做另己杠酥成纽谰弱誉肾罕傍品庸砖钩乏薛烂户茧匠烧位讲喝法斯掀听颓驱咐用迷醚陶韧杨箕泌

4、侦鸯癌局孩山紧噶准伺详随疼露傈村铆藐灯诫镑煌胰逛合妖缉携传茨拳都增铣廊肛尊框玫一胯主淡狼伎摔基厄牺汽趣硷桓吧贴属诡醉斗堕呐萤桶唬桃葱甚事镰审迭棠赎贤纸桃须露兜超贮滩询毫盾坤燃室诵聋宽睬凶损辽付毙辕貉判潘基于android系统的音乐播放器设计与实现源程序.project<?xml version="1.0" encoding="utf-8"?><projectdescription><name>spmusicplayer01</name><comment></comment><p

5、rojects></projects><buildspec><buildcommand><name>com.android.ide.eclipse.adt.resourcemanagerbuilder</name><arguments></arguments></buildcommand><buildcommand><name>com.android.ide.eclipse.adt.precompilerbuilder</name><arguments

6、></arguments></buildcommand><buildcommand><name>org.eclipse.jdt.core.javabuilder</name><arguments></arguments></buildcommand><buildcommand><name>com.android.ide.eclipse.adt.apkbuilder</name><arguments></arguments></b

7、uildcommand></buildspec><natures><nature>com.android.ide.eclipse.adt.androidnature</nature><nature>org.eclipse.jdt.core.javanature</nature></natures></projectdescription>.classpath<?xml version="1.0" encoding="utf-8"?><c

8、lasspath><classpathentry kind="src" path="src"/><classpathentry kind="src" path="gen"/><classpathentry kind="con" path="com.android.ide.eclipse.adt.android_framework"/><classpathentry kind="output" path=&qu

9、ot;bin"/></classpath>androidmanifest.xml<manifest xmlns:android=" package="sled.develop" android:versioncode="1" android:versionname="1.0"> <application android:icon="drawable/icon" android:label="string/app_name" ><

10、activity android:name=".mpsplayer" android:theme="android:style/theme.notitlebar.fullscreen" > <intent-filter> <action android:name="ent.action.main" /> <category android:name="ent.category.launcher" /> </intent-fi

11、lter> </activity> <activity android:name=".localmpslist" android:theme="android:style/theme.dialog" android:label="string/app_name"> </activity> <activity android:name=".itractivity" android:theme="android:style/theme.dialog"

12、android:label="string/app_name"> </activity> <service android:name=".service.playersrv"/> <service android:name=".service.listsrv"/> </application> <uses-sdk android:minsdkversion="8" /></manifest> localmpslist.javapackag

13、e sled.develop;import java.util.arraylist;import java.util.list;import sled.develop.service.listsrv;import sled.model.mpsiterm;import sled.utils.adapterutils;import sled.utils.appconstant;import sled.utils.fileutils;import android.app.listactivity;import android.content.intent;import android.os.bund

14、le;import android.view.view;import android.view.window;import android.widget.listview;import android.widget.radiobutton;import android.widget.radiogroup;import android.widget.radiogroup.oncheckedchangelistener;import android.widget.simpleadapter;public class localmpslist extends listactivityprivate

15、list<mpsiterm> mp3s =null;private radiogroup radiogroup ; private radiobutton single ;private radiobutton order ;private radiobutton radom ;private int mode = appconstant.jump_mode_order ;overrideprotected void oncreate(bundle savedinstancestate) / todo auto-generated method stubsuper.oncreate

16、(savedinstancestate);requestwindowfeature(window.feature_no_title);setcontentview(r.layout.locallist);single = (radiobutton)findviewbyid(r.id.single);order = (radiobutton)findviewbyid(r.id.order);radom = (radiobutton)findviewbyid(r.id.radom);radiogroup = (radiogroup)findviewbyid(r.id.menu);radiogrou

17、p.setoncheckedchangelistener(new oncheckedchangelistener() overridepublic void oncheckedchanged(radiogroup group, int checkedid) / todo auto-generated method stubif(checkedid = single.getid()mode = appconstant.jump_mode_single;else if(checkedid = order.getid()mode = appconstant.jump_mode_order;else

18、if(checkedid = radom.getid()mode = appconstant.jump_mode_radom;);overrideprotected void onlistitemclick(listview l, view v, int position, long id) / todo auto-generated method stubsuper.onlistitemclick(l, v, position, id);/mpsiterm mp3=mp3s.get(position);intent preintent = new intent();preintent.put

19、extra("position", position);preintent.putextra("cmd", appconstant.jump_cmd_prepare);preintent.putextra("mode", mode);preintent.setclass(localmpslist.this, listsrv.class);startservice(preintent);/*intent intent=new intent();intent.putextra("mp3", mp3);intent.se

20、tclass(this, mpsplayer.class);startactivity(intent);*/onstop();overrideprotected void onresume() / todo auto-generated method stubsuper.onresume();updatelistview();overrideprotected void onstop() / todo auto-generated method stubsuper.onstop();finish();private void updatelistview()fileutils fileutil

21、s=new fileutils();mp3s=fileutils.getmp3files("mp3");if (mp3s=null)/如果本地目录找不到mp3文件mp3s=new arraylist<mpsiterm>();mpsiterm mp3=new mpsiterm();mp3.setname_mp3("没有mp3文件!");mp3.setsize_mp3(0);mp3s.add(mp3);adapterutils au=new adapterutils(this,r.layout.mp3info_item,mp3s);simplea

22、dapter simpleadapter=au.buildsimpleadapter();setlistadapter(simpleadapter);itractivity.javapackage sled.develop;import android.app.activity;import android.os.bundle;public class itractivity extends activityoverrideprotected void oncreate(bundle savedinstancestate) / todo auto-generated method stubsu

23、per.oncreate(savedinstancestate);setcontentview(r.roduction);overrideprotected void onstop() / todo auto-generated method stubsuper.onstop();finish();mpsplayer.javapackage sled.develop;import sled.develop.service.listsrv;import sled.develop.service.playersrv;import sled.utils.appconstant;i

24、mport android.app.activity;import android.content.broadcastreceiver;import android.content.context;import android.content.intent;import android.content.intentfilter;import android.graphics.bitmap;import android.graphics.bitmapfactory;import android.media.audiomanager;import android.os.bundle;import

25、android.os.handler;import android.view.menu;import android.view.menuitem;import android.view.motionevent;import android.view.view;import android.view.view.onclicklistener;import android.widget.imagebutton;import android.widget.imageview;import android.widget.linearlayout;import android.widget.seekba

26、r;import android.widget.textview;public class mpsplayer extends activity implements appconstant private audiomanager am = null ;private intentfilter intentfilter=null;private broadcastreceiver receiver=null;private intent playintent=null;private intent intentnext = null ;private thread t = null ;pri

27、vate linearlayout ll = null;private imagebutton last_btn = null ;private imagebutton pause_btn = null ;private imagebutton play_btn = null ;private imagebutton next_btn = null ;private imagebutton list_btn = null ;private seekbar seekbar = null ;private textview time_view = null ;private textview lr

28、c_view = null ;private textview mp3info_view = null ;private imageview song_img = null ;private imageview volbar = null ;private imageview logo = null ;private int sysmaxvolume , curvolume;private int vol_id = r.drawable.vol_0,r.drawable.vol_1,r.drawable.vol_2,r.drawable.vol_3,r.drawable.vol_4,r.dra

29、wable.vol_5,r.drawable.vol_6,r.drawable.vol_7;private int logo_id = r.drawable.logo_0,r.drawable.logo_1,r.drawable.logo_2,;int logo_index = 0 ;float downx = 0 ;float downy = 0 ;float upx = 0 ;float upy = 0 ;float relatex ;float relatey ;long tempt = 0 ;long downt = 0 ;long movet = 0 ;long upt = 0 ;p

30、rivate float click_pointor = 80 ;/int count = 0 ;overrideprotected void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate);setcontentview(r.layout.main);ll = (linearlayout)findviewbyid(r.id.control_view);last_btn = (imagebutton)findviewbyid(r.id.last);last_btn.setonclicklistener(

31、new lastonclicklistener();pause_btn = (imagebutton)findviewbyid(r.id.pause);pause_btn.setonclicklistener(new pauseonclicklistener();play_btn = (imagebutton)findviewbyid(r.id.play);play_btn.setonclicklistener(new playonclicklistener();next_btn = (imagebutton)findviewbyid(r.id.next);next_btn.setonclic

32、klistener(new nextonclicklistener();list_btn = (imagebutton)findviewbyid(r.id.list);list_btn.setonclicklistener(new listonclicklistener();seekbar = (seekbar)findviewbyid(r.gressbar);seekbar.setonseekbarchangelistener(new seekbarlistener();time_view = (textview)findviewbyid(r.id.timeview);lrc_v

33、iew = (textview)findviewbyid(r.id.lrcview);mp3info_view = (textview)findviewbyid(r.id.mp3_info);song_img = (imageview)findviewbyid(r.id.img_of_the_song);volbar = (imageview)findviewbyid(r.id.volfasebar);logo = (imageview)findviewbyid(r.id.logo);overrideprotected void onresume() super.onresume();am =

34、 (audiomanager)getsystemservice(context.audio_service);sysmaxvolume = am.getstreammaxvolume(audiomanager.stream_music);receiver=new lrcmessbroadcastreceiver();/两个参数,一个是指明操作,一个是指明过滤registerreceiver(receiver,getintentfilter();initplayersrv();initlistsrv();dosomething(null,null);override public boolean

35、 oncreateoptionsmenu(menu menu) / todo auto-generated method stub menu.add(0, 1, 1, "操作说明"); menu.add(0, 2, 2, "完全退出"); return super.oncreateoptionsmenu(menu); override public boolean onoptionsitemselected(menuitem item) / todo auto-generated method stub if(item.getitemid() = 1)

36、intent tintent = new intent(); tintent.setclass(mpsplayer.this, itractivity.class); startactivity(tintent); else if(item.getitemid() = 2) stopservice(playintent); stopservice(intentnext); finish(); return true; overrideprotected void onrestart() super.onrestart();protected void onpause() super.onpau

37、se();unregisterreceiver(receiver);/一些基本布局public void dosomething(string mp3info,string img)bitmap bm ;if(mp3info = null | img = null )mp3info = "no music selected"song_img.setimageresource(r.drawable.logo_0);mp3info_view.settext(mp3info);else/system.out.println(img);mp3info = "当前播放:&q

38、uot; + mp3info;bm = bitmapfactory.decodefile("/sdcard/mp3/img/" + img);if(bm = null)song_img.setimageresource(r.drawable.logo_0);elsesong_img.setimagebitmap(bm);mp3info_view.settext(mp3info);/* * 一些按钮和进度条的监听方法 * author administrator * */class lastonclicklistener implements onclicklistenero

39、verridepublic void onclick(view v) lastmusic();class pauseonclicklistener implements onclicklisteneroverridepublic void onclick(view v) pausemp3();/t.start();class playonclicklistener implements onclicklisteneroverridepublic void onclick(view v) initplayersrv();playmp3();class nextonclicklistener im

40、plements onclicklisteneroverridepublic void onclick(view v) nextmusic();public void initlistsrv()intentnext = new intent();intentnext.setclass(mpsplayer.this, listsrv.class);public void nextmusic()intentnext.putextra("cmd", appconstant.jump_cmd_next);startservice(intentnext);public void la

41、stmusic()intent intentnext = new intent();intentnext.putextra("cmd", appconstant.jump_cmd_last);intentnext.setclass(mpsplayer.this, listsrv.class);startservice(intentnext);class seekbarlistener implements seekbar.onseekbarchangelistener/进度条事件响应public void onprogresschanged(seekbar arg0, in

42、t arg1, boolean arg2) public void onstarttrackingtouch(seekbar arg0) public void onstoptrackingtouch(seekbar arg0) if (seekbar.getmax()<1) return;if (playintent=null)initplayersrv();playintent.putextra("starttime",arg0.getprogress() );playintent.putextra("mediacmd", appconstan

43、t.media_cmd_seekto);startservice(playintent);if (receiver=null)receiver=new lrcmessbroadcastreceiver();/两个参数,一个是指明操作,一个是指明过滤registerreceiver(receiver,getintentfilter();class listonclicklistener implements onclicklisteneroverridepublic void onclick(view v) intent intent = new intent();intent.setclass

44、(mpsplayer.this, localmpslist.class);startactivity(intent);/* * 一些基本操作,为方便代码复用 */开始serviceprivate void initplayersrv()playintent =new intent();playintent.setclass(mpsplayer.this,playersrv.class);/发送播放操作给serviceprivate void playmp3() playintent.putextra("mediacmd", appconstant.media_cmd_pla

45、y);startservice (playintent);/发送暂停操作给serviceprivate void pausemp3() playintent.putextra("mediacmd", appconstant.media_cmd_pause);startservice (playintent);/得到广播的itentprivate intentfilter getintentfilter()if (intentfilter=null)intentfilter=new intentfilter();intentfilter.addaction(appconsta

46、nt.lrc_message_action);return intentfilter;/换算歌曲时间private string gettimestr(long offsettime,boolean islongformat)int remainder=0;int mode=0;remainder=(int)offsettime) / (60 * 1000);string min=remainder +""mode=(int)offsettime) % (60 * 1000);remainder=mode / 1000;string sec=remainder +"

47、;"if (islongformat)mode=mode % 1000;string mill=mode/10 +""return min +":" +sec + "." +mill;elsereturn min +":" +sec;/* * 捕获广播和触屏事件的方法 * author administrator * */更新歌词,时间,进度条等控件class lrcmessbroadcastreceiver extends broadcastreceiveroverridepublic void onr

48、eceive(context arg0, intent arg1) logo.setimageresource(logo_idlogo_index+%logo_id.length);int uicmd=arg1.getintextra("uicmd", appconstant.ui_cmd_updatelrc);if (uicmd=appconstant.ui_cmd_updatelrc)string lrcmess=arg1.getstringextra("lrcmess");lrc_view.settext(lrcmess);else if (uic

49、md=appconstant.ui_cmd_updateplaying)long currpos=arg1.getlongextra("currpos", 0);int duration = arg1.getintextra("duration", 0);string mp3info = arg1.getstringextra("mp3info");string img = arg1.getstringextra("img");dosomething(mp3info,img);seekbar.setmax(dura

50、tion);seekbar.setprogress(int) currpos);time_view.settext(gettimestr(currpos,false) + "/" + gettimestr(long)duration,false);else if (uicmd=appconstant.ui_cmd_initprogressbar)int duration=arg1.getintextra("duration", 0);seekbar.setmax(duration);time_view.settext("00:00/"

51、 + gettimestr(long)duration,false);else if (uicmd=appconstant.ui_cmd_clearplayinfo)lrc_view.settext("");seekbar.setprogress(0);/捕捉和识别触屏事件overridepublic boolean ontouchevent(motionevent event) switch(event.getaction()case motionevent.action_down:downx = event.getx();downy = event.gety();dow

52、nt = event.geteventtime();break;case motionevent.action_move:break;case motionevent.action_up:upx = event.getx();upy = event.gety();upt = event.geteventtime();break;relatex = downx - upx ;relatey = downy - upy ;/一次点击事件完成if(upt > 0)/是一次点击事件if(math.abs(relatex) <= click_pointor && math.a

53、bs(relatey) <= click_pointor)/点击超过一秒,定义为长触屏事件if(upt - downt > 500)intent intent = new intent();intent.setclass(mpsplayer.this, localmpslist.class);startactivity(intent);elsell.setvisibility(view.visible);t = new thread(tr);t.start();else if(math.abs(relatex) > math.abs(relatey)if(downx > upx)nextmusic();else if(downx < upx)lastmusic()

温馨提示

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

评论

0/150

提交评论