安卓Android广播线程服务与多媒体开发实验报告材料.docx
- 文档编号:1904532
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:11
- 大小:27.44KB
安卓Android广播线程服务与多媒体开发实验报告材料.docx
《安卓Android广播线程服务与多媒体开发实验报告材料.docx》由会员分享,可在线阅读,更多相关《安卓Android广播线程服务与多媒体开发实验报告材料.docx(11页珍藏版)》请在冰豆网上搜索。
安卓Android广播线程服务与多媒体开发实验报告材料
实验报告
〔2013/2014学年第一学期〕
课程名称
软件技术系列课程〔Android根底〕
实验名称
Android广播、线程、服务与多媒体开发
实验时间
2013
年
12
月
9
日
指导单位
计算机学院、诚迈科技〔〕公司
指导教师
学生
班级学号
学院(系)
计算机学院
专业
软件工程(计算机软件与服务外包)
成绩
批阅人
王彦
日期
2013-12-09
实验报告
实验名称
Android广播、线程、服务与多媒体开发
指导教师
实验类型
实验
实验学时
4
实验时间
2013-12-9
一、实验目的和要求
验证Broadcast的发送与接收
验证多线程间的数据传递
验证Service的使用方法
验证多媒体开发中音频、视频、或图像的采集与播放
编写一个Android小程序要求:
1、使用广播传递数据或信息
2、使用多线程
3、适当应用Service
4、实现至少一种多媒体功能
二、实验环境(实验设备)
PC(Window7)、Eclipse
三、实验原理与容
在这个程序中涉与到了Receiver和BroadcastReceiver的结合使用,首先在AndroidManifest.xml中注册Receiver,实现能够在后台播放音乐的功能。
通过mandReceiver类实现承受前台Activity发送的播放命令的Intent。
在mandReceiver类中,有后台Service注册的承受前台控制命令Intent的Receiver,广播播放状态变化的Intent
代码
publicclassMusicServiceextendsServiceimplementsRunnable{
privateMediaPlayerplayer;
privateList
publicstaticint_id=1;//当前播放位置
publicstaticBooleanisRun=true;
publicLrcProcessmLrcProcess;
publicLrcViewmLrcView;
publicstaticintplaying_id=0;
publicstaticBooleanplaying=false;
Override
publicIBinderonBind(Intentarg0){
//TODOAuto-generatedmethodstub
returnnull;
}
Override
publicvoidonCreate(){
//TODOAuto-generatedmethodstub
lists=MusicList.getMusicData(getApplicationContext());
SeekBarBroadcastReceiverreceiver=newSeekBarBroadcastReceiver();
IntentFilterfilter=newIntentFilter("..karl.seekBar");
this.registerReceiver(receiver,filter);
newThread(this).start();
super.onCreate();
}
Override
publicvoidonStart(Intentintent,intstartId){
//TODOAuto-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();
//读取歌词文件
mLrcProcess.readLRC(lists.get(_id).getUrl());
//传回处理后的歌词文件
lrcList=mLrcProcess.getLrcContent();
MusicActivity.lrc_view.setSentenceEntities(lrcList);
//切换带动画显示歌词
MusicActivity.lrc_view.setAnimation(AnimationUtils.loadAnimation(
MusicService.this,R.anim.alpha_z));
//启动线程
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.setDataSource(getApplicationContext(),myUri);
player.prepare();
}catch(IllegalArgumentExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(SecurityExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IllegalStateExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
player.start();
player.setOnpletionListener(newOnpletionListener(){
Override
publicvoidonpletion(MediaPlayermp){
//TODOAuto-generatedmethodstub
//下一首
if(MusicActivity.isLoop==true){
player.reset();
Intentintent=newIntent("..karl.pletion");
sendBroadcast(intent);
_id=_id+1;
playMusic(_id);
}else{//单曲播放
player.reset();
Intentintent=newIntent("..karl.pletion");
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-generatedcatchblock
e.printStackTrace();
}catch(SecurityExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IllegalStateExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TOD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 广播 线程 服务 多媒体 开发 实验 报告 材料