版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告(2023/2023学年第一学期)课程名称软件技术系列课程(Andr。id基础)实验名称Android广播、线程、服务与多媒体开发实验时间2023年12月9日指导单位计算机学院、诚迈科技(南京)公司指导教师学生姓名班级学号学院(系)计算机学院专业软件工程(计算机软件与服务外包)成批阅人王彦日期2023-12-四、实验小结(涉及问题和解决方法、心得体会等).对于sendBroadCast的intent对象,需要设立其actionname;.推荐使用显式指明receiver,在配置文献AndroidManifest.xml指明;.一个receiver可以接受多个action;.每次接受广播都会重新生成一个接受广播的对象,再次调用onReceive;.在BroadCast中尽量不要解决太多逻辑问题,建议复杂的逻辑交给Activity或者Service去解决。通过这次实验,让我对Broadcast、特别是Service有了更进一步的结识,还让我意识到编程方面和知识体系机构方面存在的局限性。总之,这次实验让我Android编程能力有了一定的提高。运用这次实验,也将我们的大作业更加完善。
绩09实验报告实验名称Android广播、线程、服务与多媒体开发指导教师实验类型实验实验学时4实验时间2023-12-9一、实验目的和规定验证Broadcast的发送与接受验证多线程间的数据传递验证Service的使用方法验证多媒体开发中音频、视频、或图像的采集与播放编写一个Android小程序规定:1、使用广播传递数据或信息2、使用多线程3>适当应用Service4、实现至少一种多媒体功能二、实验环境(实验设备)PC(Window7).Eclipse三、实验原理及内容在这个程序中涉及到了Receiver和BroadcastReceiver的结合使用,一方面在AndroidManifest.xml中注册Receiver,实现可以在后台播放音乐的功能。通过CommandReceiver类实现接受前台Activity发送的播放命令的Intent。在CommandReceiver类中,有后台Service注册的接受前台控制命令Intent的Receiver,广播播放状态变化的Intent代码pub1icclassMusicServiceextendsServiceimp1ementsRunnable{®privateMediaP1ayerp1ayer;privateList<Music>lists;publicstaticint_id=1;//当前播放位置。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();。//读取歌词文献。mLrcProcess.readLRC(lists.get(_id).getUri());。//传回解决后的歌词文献o1rcList=mLrcProcess.getLrcContent();。。MusicActivity.Lrc_view,setSentenceEntities(1rcList);°°切换带动网显示歌词MusicActivity.Lr(?_kiew.setAnimation(AnimationUtils.LoadAnimation(。。。MusicService.this,R.anim.a/pha_z));,〃启动线程»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){。。〃TODOAuto—generatedcatchb1ock。e.printStackTrace();}catch(I1legalStateExceptione){。。。//TODOAuto—generatedcatchblock。a。e.printStackTrace();}catch(IOExceptione){。。。〃TODOAuto-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){。。。〃TODOAuto-generatedmethodstubcooif(nu11!=player){。…p1ayer.release();。。p1ayer=null;006}oMusicm=lists.get(_id);oooStringur1=m.getUrl();ooosUrimyllri=Uri.parse(url);。。。。player=newMediaP1ayer();。…player.reset();ooooplayer.setAudioStreamType(AudioManager.STREAM_MUSIC):。。。,。player.setDataSource(getApplicationContext(),myllri);。a。。player.prepare();。。。。}catch(IliegalArgumeritExceptione){3//TODOAuto-generatedcatchblock。。。3。e.printStackTrace();°。。,}catch(SecurityExceptione){。。。〃TODOAuto-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();。//歌词滚动线程。RunnablemRunnab1e=newRunnable(){。。@Override。。publicvoidrun(){。。。〃TODOAuto—generatedmethodstub。。MusicActivity.trc_v/ew.SetIndex(Lrclndex());o»«•MusicActivity.Lrc_view.invalidate();®mHand1er.postDe1ayed(mRunnable,100);d0}};。//创建对象privateList<LrcContent>IrcList=newArrayList<LrcContent
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 屏山县2024四川宜宾市屏山县统计局招考编外工作人员1人笔试历年参考题库典型考点附带答案详解(3卷合一)
- 始兴县2024广东韶关市始兴县青年就业见习基地招募1人(市场监管局)笔试历年参考题库典型考点附带答案详解(3卷合一)
- 国家事业单位招聘2024微生物所中国科学院病原微生物与免疫学重点实验室高福研究组招聘1人启笔试历年参考题库典型考点附带答案详解(3卷合一)
- 四子王旗2024内蒙古乌兰察布四子王旗招聘27名会计综合服务项目评审岗位专业人员笔试历年参考题库典型考点附带答案详解(3卷合一)
- 南部县2024上半年四川南充市南部县事业单位考调10人笔试历年参考题库典型考点附带答案详解(3卷合一)
- 2025年中国航空工业集团凯天岗位招聘备考题库及答案详解参考
- 2025年西藏革吉县农业农村和科技水利局招聘工程专业技术人员和工程项目资料员招聘5人备考题库及完整答案详解一套
- 2025年淮滨县司法局公开招聘合同制社区矫正社会工作者12人实施备考题库及一套完整答案详解
- 2025年中国光大银行光大理财社会招聘备考题库有答案详解
- 2025中国人民大学公共管理学院招聘2人参考笔试题库及答案解析
- 从库存积压到爆款频出:POP趋势网如何重塑女装设计师的工作逻辑1216
- 2025吐鲁番市高昌区招聘第二批警务辅助人员(165人)考试历年真题汇编带答案解析
- DRG支付改革下临床科室绩效优化策略
- 2026中央纪委国家监委机关直属单位招聘24人笔试备考题库含答案解析(夺冠)
- 平面包装设计创新创业
- 加盟2025年房地产经纪协议合同
- 2025至2030中国商业摄影行业市场发展分析及发展前景预测与投资风险报告
- 地球系统多源数据融合-洞察及研究
- 香水销售知识培训内容课件
- 工业产品早期可制造性评估标准
- DB45-T 2757.1-2023 交通运输行业安全风险评估规范 第1部分:总则
评论
0/150
提交评论