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頁,還剩5頁未讀, 繼續(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ù)系列課程(Android基礎(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ù)外包)成績(jī)批閱人王彥日期2023-12-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代碼publicclassMusicServicee(cuò)xtendsServiceimplementsRunnable{?privat(yī)eMediaPlayerplayer; privat(yī)eList<Music>lists; publicstaticint_id=1;//當(dāng)前播放位置?publicstaticBooleanisRun=true;?publicLrcProcessmLrcProcess;?publicLrcViewmLrcView; publicstaticintplaying_id=0;?publicstaticBooleanplaying=false; @Override?publicIBinderonBind(Intentarg0){? //TODOAuto-generatedmethodstub??returnnull;?} @Override?publicvoidonCreate(){ //TODOAuto-generatedmethodstub??lists=MusicList.getMusicData(getApplicationContext());??SeekBarBroadcastReceiverreceiver=newSee(cuò)kBarBroadcastReceiver(); ?IntentFilterfilter=newIntentFilter("cn.com.karl.seekBar");? this.registerReceiver(receiver,filter); ?newThread(this).start();??super.onCreate(); }?@Override publicvoidonStart(Intee(cuò)nt,intstartId){??//TO(shè)DOAuto-generatedmethodstub??Stringplay=intent.getStringExtra("play");??_id=intent.getIntExtra("id",1);??if(play.equals("play")){ ??if(null!=player){????player.release();????player=null;???}???playMusic(_id); ?}elseif(play.equals("pause")){ ??if(null!=player){??? player.pause();???}??}elseif(play.equals("playing")){???if(player!=null){????player.start();? ?}else{? ? playMusic(_id);? ?} }elseif(play.equals("replaying")){??}elseif(play.equals("first")){? ?intid=intent.getIntExtra("id",0);?? playMusic(id); ?}elseif(play.equals("rewind")){? ?intid=intent.getIntExtra("id",0);???playMusic(id);??}elseif(play.equals("forward")){???intid=intent.getIntExtra("id",0);???playMusic(id);??}elseif(play.equals("last")){?? intid=intent.getIntExtra("id",0);? ?playMusic(id); }?}?privatevoidplayMusic(intid){ ?/////////////////////////初始化歌詞配置///////////////////////// ?mLrcProcess=newLrcProcess();? //讀取歌詞文獻(xiàn) ?mLrcProcess.readLRC(lists.get(_id).getUrl()); ?//傳回解決后的歌詞文獻(xiàn) ?lrcList=mLrcProcess.getLrcContent();??MusicActivity.lrc_view.setSentenceEntities(lrcList);??//切換帶動(dòng)畫顯示歌詞??MusicActivity.lrc_view.setAnimation(AnimationUtils.loadAnimat(yī)ion(? ??MusicService.this,R.anim.alpha_z)); ?//啟動(dòng)線程 ?mHandler.post(mRunnable);??/////////////////////////初始化歌詞配置/////////////////////////??if(null!=player){???player.release(); ??player=null;? }? if(id>=lists.size()-1){???_id=lists.size()-1;??}elseif(id<=0){ ? _id=0;??}? Musicm=lists.get(_id);??Stringurl=m.getUrl();??UrimyUri=Uri.parse(url);??player=newMediaPlayer();??player.reset(); ?player.setAudioStreamType(AudioManager.STREAM_MUSIC);??try{???player.setDat(yī)aSource(getApplicationContext(),myUri); ?player.prepare();??}catch(IllegalArgumentExceptione){ ??//TODOAuto-generatedcatchblock ??e.printStackTrace();??}catch(SecurityExceptione){ ??//TO(shè)DOAuto-generatedcatchblock? e.printStackTrace(); }catch(IllegalStateExceptione){???//TODOAuto-generat(yī)edcatchblock???e.printStackTrace(); }cat(yī)ch(IOExceptione){???//TODOAuto-generatedcat(yī)chblock???e.printStackTrace();??} player.start(); ?player.setOnCompletionListener(newOnCompletionListener(){? @Override???publicvoidonCompletion(MediaPl(wèi)ayermp){????//TO(shè)DOAuto-generatedmethodstub ?? //下一首 ???if(MusicActivity.isLoop==true){? ???player.reset(); ???Intentintent=newIntent("cn.com.karpletion");?????sendBroadcast(intent); ??? _id=_id+1; ????playMusic(_id);?? ?}else{//單曲播放 ????player.reset();? ???Intentintent=newIntent("cn.com.karl.completion");?????sendBroadcast(intent);?????playMusic(_id);????}???}??}); ?player.setOnErrorListener(newOnErrorListener(){???@Override???publicbooleanonError(MediaPlayermp,intwhat,intextra){? ??//TODOAuto-generatedmethodstub????if(null!=player){ ????player.release();?? player=null;??? } ? Musicm=lists.get(_id); ???Stringurl=m.getUrl();????UrimyUri=Uri.parse(url);????player=newMediaPlayer();????player.reset();????player.setAudioStreamType(AudioManager.STREAM_MUSIC); ? ?try{?????player.setDataSource(getApplicationContext(),myUri);?? ??player.prepare();????}catch(IllegalArgumentExceptione){? ?? //TODOAuto-generatedcat(yī)chblock?????e.printStackTrace();????}catch(SecurityExceptione){ ? ??//TODOAuto-generatedcatchblock ??e.printStackTrace();????}catch(IllegalStateExceptione){ ???//TODOAuto-generatedcat(yī)chblock?? ?e.printStackTrace();? ? }catch(IOExceptione){???? //TODOAuto-generat(yī)edcatchblock??? ?e.printStackTrace();? ??}????player.start();????returnfalse; ? }??});?}?privat(yī)eclassSeekBarBroadcastReceiverextendsBroadcastReceiver{??@Override??publicvoidonReceive(Contextcontext,Intentintent){? ?//TO(shè)DOAuto-generatedmethodstub? ?intseekBarPosition=intent.getIntExtra("seekBarPosition",0);???//System.out.println("--------"+seekBarPosition);???player.seekTo(seekBarPosition*player.getDuration()/100);? ?player.start(); ?}?}?@Override publicvoidrun(){? //TO(shè)DOAuto-generatedmethodstub? while(isRun){? ?try{????Thread.sleep(200); ?}catch(InterruptedExceptione){??? //TO(shè)DOAuto-generatedcat(yī)chblock????e.printStackTrace();? ?} ?if(null!=player){ ?? intposition=player.getCurrentPosition(); ???inttotal=player.getDuration();? ??Intentintent=newIntent("cn.com.karl.progress");????intent.putExtra("position",position); ?? intent.putExtra("total",total);? sendBroadcast(intent);? }???if(null!=player){????if(player.isPlaying()){ ????playing=true;????}else{?????playing=false; ???}???} ?}?}?HandlermHandler=newHandler();?//歌詞滾動(dòng)線程?RunnablemRunnable=newRunnable(){??@Override??publicvoidrun(){???//TODOAuto-generat(yī)edmethodstub?? MusicActivity.lrc_view.SetIndex(LrcIndex());???MusicActivity.lrc_view.invalidate(); ?mHandler.postDelayed(mRunnable,100);??} };?//創(chuàng)建對(duì)象 privateList<LrcContent>lrcList=newArrayList<LrcContent>(); //初始化歌詞檢索值?privat(yī)eintindex=0;?//初始化歌曲播放時(shí)間的變量?privatCurrentTime=0;?//初始化歌曲總時(shí)間的變量?privateintCountTime=0; /**?*歌詞同步解決類 */?publicintLrcIndex(){??if(player.isPlaying()){ ?//獲得歌曲播放在哪的時(shí)間???CurrentTime=player.getCurrentPosition();? ?//獲得歌曲總時(shí)間長度???CountTime=player.getDuration();??}??if(CurrentTime<CountTime){ ?for(inti

溫馨提示

  • 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)論