2023年安卓Android廣播線程服務(wù)與多媒體開發(fā)實(shí)驗(yàn)報(bào)告_第1頁
2023年安卓Android廣播線程服務(wù)與多媒體開發(fā)實(shí)驗(yàn)報(bào)告_第2頁
2023年安卓Android廣播線程服務(wù)與多媒體開發(fā)實(shí)驗(yàn)報(bào)告_第3頁
2023年安卓Android廣播線程服務(wù)與多媒體開發(fā)實(shí)驗(yàn)報(bào)告_第4頁
2023年安卓Android廣播線程服務(wù)與多媒體開發(fā)實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

實(shí)驗(yàn)報(bào)告(2023/2023學(xué)年第一學(xué)期)課程名稱軟件技術(shù)系列課程(Andr。id基礎(chǔ))實(shí)驗(yàn)名稱Android廣播、線程、服務(wù)與多媒體開發(fā)實(shí)驗(yàn)時(shí)間2023年12月9日指導(dǎo)單位計(jì)算機(jī)學(xué)院、誠邁科技(南京)公司指導(dǎo)教師學(xué)生姓名班級(jí)學(xué)號(hào)學(xué)院(系)計(jì)算機(jī)學(xué)院專業(yè)軟件工程(計(jì)算機(jī)軟件與服務(wù)外包)成批閱人王彥日期2023-12-四、實(shí)驗(yàn)小結(jié)(涉及問題和解決方法、心得體會(huì)等).對(duì)于sendBroadCast的intent對(duì)象,需要設(shè)立其actionname;.推薦使用顯式指明receiver,在配置文獻(xiàn)AndroidManifest.xml指明;.一個(gè)receiver可以接受多個(gè)action;.每次接受廣播都會(huì)重新生成一個(gè)接受廣播的對(duì)象,再次調(diào)用onReceive;.在BroadCast中盡量不要解決太多邏輯問題,建議復(fù)雜的邏輯交給Activity或者Service去解決。通過這次實(shí)驗(yàn),讓我對(duì)Broadcast、特別是Service有了更進(jìn)一步的結(jié)識(shí),還讓我意識(shí)到編程方面和知識(shí)體系機(jī)構(gòu)方面存在的局限性??傊?這次實(shí)驗(yàn)讓我Android編程能力有了一定的提高。運(yùn)用這次實(shí)驗(yàn),也將我們的大作業(yè)更加完善。

績(jī)09實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱Android廣播、線程、服務(wù)與多媒體開發(fā)指導(dǎo)教師實(shí)驗(yàn)類型實(shí)驗(yàn)實(shí)驗(yàn)學(xué)時(shí)4實(shí)驗(yàn)時(shí)間2023-12-9一、實(shí)驗(yàn)?zāi)康暮鸵?guī)定驗(yàn)證Broadcast的發(fā)送與接受驗(yàn)證多線程間的數(shù)據(jù)傳遞驗(yàn)證Service的使用方法驗(yàn)證多媒體開發(fā)中音頻、視頻、或圖像的采集與播放編寫一個(gè)Android小程序規(guī)定:1、使用廣播傳遞數(shù)據(jù)或信息2、使用多線程3>適當(dāng)應(yīng)用Service4、實(shí)現(xiàn)至少一種多媒體功能二、實(shí)驗(yàn)環(huán)境(實(shí)驗(yàn)設(shè)備)PC(Window7).Eclipse三、實(shí)驗(yàn)原理及內(nèi)容在這個(gè)程序中涉及到了Receiver和BroadcastReceiver的結(jié)合使用,一方面在AndroidManifest.xml中注冊(cè)Receiver,實(shí)現(xiàn)可以在后臺(tái)播放音樂的功能。通過CommandReceiver類實(shí)現(xiàn)接受前臺(tái)Activity發(fā)送的播放命令的Intent。在CommandReceiver類中,有后臺(tái)Service注冊(cè)的接受前臺(tái)控制命令I(lǐng)ntent的Receiver,廣播播放狀態(tài)變化的Intent代碼pub1icclassMusicServiceextendsServiceimp1ementsRunnable{?privateMediaP1ayerp1ayer;privateList<Music>lists;publicstaticint_id=1;//當(dāng)前播放位置。pub1icstaticBooleanisRun=true;。publicLrcProcessmLrcProcess;。pub1icLrcViewmLrcView;publiestaticintpLaying_id=0;publicstaticBocleanpLaying=false;@0verride。publicIBinderonBind(Intentarg0){。//TODOAuto-generatedmethodstubooreturnnull;。}@0verride?pub1icvoidonCreate(){//TODOAuto—generatedmethodstub。。lists=MusicList,getMusicDa?a(getApp1icationContext());。oSeekBarBroadcastReceiverreceiver=newSeekBarBroadcastReceiver();。IntentFi1terfi1ter=newIntentFiIter(".kar1.seekBar");。this.registerReceiver(receiver,filter);?newThread(this),start();。。super.onCreate();)@0verridepub1icvoidonStart(Intentintent,intstartId){TODOAuto—generatedmethodstubStringplay=intent.getStringExtra("play");—id=intent.getIntExtra("id",1);。。訐(play,equals("play")){(nul1!=p1ayer){ooooplayer.release();。…player=null;03。}。。。p1ayMusic(_id);?}elseif(play.equa1s("pause")){(null!=player){…p1ayer.pause();000}。。}e1seif(play.equals("playing")){°。。if(player!=null){。o。叩1ayer.start();。。}e1se{p1ayMusic(_id);}e1seif(play.equals("replaying")){??}elseif(play.equals("first")){。ointid=intent,getintExtra("id",0);。。p1ayMusic(id);。}elseif(play.equals("rewind**)){。ointid=intent.getIntExtra("id",0);oooplayMusic(id);so}elseif(play.equals("forward")){oeointid=intent.getlntExtra("id'1,0);。playMusic(id);。。}elseif(play.equals("last")){。bintid=intent.getIntExtra("id",0);。splayMusic(id);。}。privatevoidplayMusic(intid){。/////////////////////////初始化歌詞配置〃〃〃///unu1111////iiomLrcProcess=newLrcProcess();。//讀取歌詞文獻(xiàn)。mLrcProcess.readLRC(lists.get(_id).getUri());。//傳回解決后的歌詞文獻(xiàn)o1rcList=mLrcProcess.getLrcContent();。。MusicActivity.Lrc_view,setSentenceEntities(1rcList);°°切換帶動(dòng)網(wǎng)顯示歌詞MusicActivity.Lr(?_kiew.setAnimation(AnimationUtils.LoadAnimation(。。。MusicService.this,R.anim.a/pha_z));,〃啟動(dòng)線程?mHandler.post(mRunnab1e);。?!?/〃/////〃//〃〃////〃初始化歌詞配置〃///〃///〃〃〃〃//III//if(null!=player){。。叩layer,release();??player=nu11;°}。if(id>=lists.size()-1){s。5_id=lists.size()—1;a0}elseif(id<=0){,_id=0;00}。Musicm=lists.get(_id);oostringurl=m.getUr1();o?UrimyUri=Uri.pc?rse(url);oplayer=newMediaPlayer();。。player.reset();?p1ayer.setAudioStreamType(AudioManager.STREAM_MUSIC);。atry(。。。player,setDataSource(getApplicationContext(),myUri);。player,prepare();。。}catch(11lega1ArgumentExceptione){。。//TODOAuto-generatedcatchb1ocks。e.printStackTrace();。。}catch(SecurityExceptione){。?!═ODOAuto—generatedcatchb1ock。e.printStackTrace();}catch(I1legalStateExceptione){。。。//TODOAuto—generatedcatchblock。a。e.printStackTrace();}catch(IOExceptione){。。?!═ODOAuto-generatedcatchbiock。。。0.printStackTrace();eo}player.start();叩1ayer.setOnCompletionListener(newOnComp1etionListener(){。@Overrideao&publicvoidonCompletion(MediaPlayermp){。。。。//TODOAuto—generatedmethodstub。。//下一首,。。if(MusicActivity.isLoop==true){。。。叩1ayer.reset();o??Intentintent=newIntent(".karp1etion");ooooosendBroadcast(intent);s。。_id=_id+1;ooooplayMusic(_i(/);。。。}else{//單曲播放。。。。player.re$et();。a?aIntentintent=newIntent(".p1etion");…3。sendBroadcast(intent);°b°°叩]ayMusic(_/d);oooo)0Q。}。。});。player.setOnErrorListener(new0nErrorListener(){ooo@0verride。。。publicboo1eanonError(MediaP1ayermp,intwhat,intextra){。。?!═ODOAuto-generatedmethodstubcooif(nu11!=player){?!璸1ayer.release();。。p1ayer=null;006}oMusicm=lists.get(_id);oooStringur1=m.getUrl();ooosUrimyllri=Uri.parse(url);。。。。player=newMediaP1ayer();?!璸layer.reset();ooooplayer.setAudioStreamType(AudioManager.STREAM_MUSIC):。。。,。player.setDataSource(getApplicationContext(),myllri);。a。。player.prepare();。。。。}catch(IliegalArgumeritExceptione){3//TODOAuto-generatedcatchblock。。。3。e.printStackTrace();°。。,}catch(SecurityExceptione){。。?!═ODOAuto-generatedcatchblocke.printstackTrace();。。。。}catch(IllegalStateExceptione){。。。//TODOAuto-generatedcatchb1ock—oe.printStackTrace();。s}catch(lOExceptione){。。。。//TODOAuto-generatedcatchblock。。。oe.printStackTrace();OQ0}。。。。player.start();。。。,returnfaIse;,)00});°}。privatec1assSeekBarBroadcastReceiverextendsBroadcastReceiver(。。@0verride。。publicvoidonReceive(Contextcontext,Intentintent){。a//ToDoAuto—generatedmethodstub。ointseekBarPosition=intent.getlntExtra("seekBarPosition”,0);。。。//System.out.println("-"+seekBarPosition);。。?player.seekTo(seekBarPosition*player.getDuration()/100);。?player.start();。}o@0verridepublicvoidrun(){o//TODOAuto-generatedmethodstub。while(isRun){。atry{°。。3Thread.sLeep(200);。}catch(InterruptedExceptione){。。。//TODOAuto—generatedcatchblockooooe.printStackTrace();00}oif(nu11!=p1ayer){。。intposition=player,getCurrentPosition();totai=p1ayer.getDuration();。。。Intentintent=newIntent("gress");。。。。intent.putExtra("position",position);intent.putExtra("total",totai);。sendBroadcast(intent);。)。。。訐(nu11!=player){(player.isPlaying()){0oc,opLaying=true;°°0°}else{。。。。。pLaying=false;d0d}eoo},}。}HandlermHandler=newHandler();。//歌詞滾動(dòng)線程。RunnablemRunnab1e=newRunnable(){。。@Override。。publicvoidrun(){。。?!═ODOAuto—generatedmethodstub。。MusicActivity.trc_v/ew.SetIndex(Lrclndex());o???MusicActivity.Lrc_view.invalidate();?mHand1er.postDe1ayed(mRunnable,100);d0}};。//創(chuàng)建對(duì)象privateList<LrcContent>IrcList=newArrayList<LrcContent

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論