ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:28.06KB ,
资源ID:29947215      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29947215.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(安卓Android广播线程服务与多媒体开发实验报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

安卓Android广播线程服务与多媒体开发实验报告.docx

1、安卓Android广播线程服务与多媒体开发实验报告实 验 报 告(2013/2014学年 第一学期)课程名称软件技术系列课程(Android基础)实验名称Android广播、线程、服务与多媒体开发实验时间2013年12月9日指导单位计算机学院、诚迈科技(南京)公司指导教师学生姓名班级学号学院(系)计算机学院专 业软件工程(计算机软件与服务外包)成 绩批阅人王彦日期2013-12-09实 验 报 告实验名称Android广播、线程、服务与多媒体开发指导教师实验类型实验实验学时4实验时间2013-12-9一、 实验目的和要求验证Broadcast的发送与接收验证多线程间的数据传递验证Service

2、的使用方法验证多媒体开发中音频、视频、或图像的采集与播放编写一个Android小程序要求:1、使用广播传递数据或信息2、使用多线程3、适当应用Service4、实现至少一种多媒体功能 二、 实验环境(实验设备) PC(Window7)、Eclipse3、实验原理及内容在这个程序中涉及到了Receiver和BroadcastReceiver的结合使用,首先在AndroidManifest.xml中注册Receiver,实现能够在后台播放音乐的功能。 通过CommandReceiver类实现接受前台Activity发送的播放命令的Intent。在CommandReceiver类中,有后台Servi

3、ce注册的接受前台控制命令Intent的Receiver,广播播放状态变化的Intent代码public class MusicService extends Service implements Runnable private MediaPlayer player; private List lists; public static int _id = 1; / 当前播放位置 public static Boolean isRun = true; public LrcProcess mLrcProcess; public LrcView mLrcView; public static in

4、t playing_id = 0; public static Boolean playing = false; Override public IBinder onBind(Intent arg0) / TODO Auto-generated method stub return null; Override public void onCreate() / TODO Auto-generated method stub lists = MusicList.getMusicData(getApplicationContext(); SeekBarBroadcastReceiver recei

5、ver = new SeekBarBroadcastReceiver(); IntentFilter filter = new IntentFilter(.karl.seekBar); this.registerReceiver(receiver, filter); new Thread(this).start(); super.onCreate(); Override public void onStart(Intent intent, int startId) / TODO Auto-generated method stub String play = intent.getStringE

6、xtra(play); _id = intent.getIntExtra(id, 1); if (play.equals(play) if (null != player) player.release(); player = null; playMusic(_id); else if (play.equals(pause) if (null != player) player.pause(); else if (play.equals(playing) if (player != null) player.start(); else playMusic(_id); else if (play

7、.equals(replaying) else if (play.equals(first) int id = intent.getIntExtra(id, 0); playMusic(id); else if (play.equals(rewind) int id = intent.getIntExtra(id, 0); playMusic(id); else if (play.equals(forward) int id = intent.getIntExtra(id, 0); playMusic(id); else if (play.equals(last) int id = inten

8、t.getIntExtra(id, 0); playMusic(id); private void playMusic(int id) / / 初始化歌词配置 / / mLrcProcess = new LrcProcess(); / 读取歌词文件 mLrcProcess.readLRC(lists.get(_id).getUrl(); / 传回处理后的歌词文件 lrcList = mLrcProcess.getLrcContent(); MusicActivity.lrc_view.setSentenceEntities(lrcList); / 切换带动画显示歌词 MusicActivity

9、.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; else if (id = 0) _id = 0; Music m = lists.get(_id); String

10、 url = m.getUrl(); Uri myUri = Uri.parse(url); player = new MediaPlayer(); player.reset(); player.setAudioStreamType(AudioManager.STREAM_MUSIC); try player.setDataSource(getApplicationContext(), myUri); player.prepare(); catch (IllegalArgumentException e) / TODO Auto-generated catch block e.printSta

11、ckTrace(); catch (SecurityException e) / TODO Auto-generated catch block e.printStackTrace(); catch (IllegalStateException e) / TODO Auto-generated catch block e.printStackTrace(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); player.start(); player.setOnCompletionList

12、ener(new OnCompletionListener() Override public void onCompletion(MediaPlayer mp) / TODO Auto-generated method stub / 下一首 if (MusicActivity.isLoop = true) player.reset(); Intent intent = new Intent(pletion); sendBroadcast(intent); _id = _id + 1; playMusic(_id); else / 单曲播放 player.reset(); Intent int

13、ent = new Intent(pletion); sendBroadcast(intent); playMusic(_id); ); player.setOnErrorListener(new OnErrorListener() Override public boolean onError(MediaPlayer mp, int what, int extra) / TODO Auto-generated method stub if (null != player) player.release(); player = null; Music m = lists.get(_id); S

14、tring url = m.getUrl(); Uri myUri = Uri.parse(url); player = new MediaPlayer(); player.reset(); player.setAudioStreamType(AudioManager.STREAM_MUSIC); try player.setDataSource(getApplicationContext(), myUri); player.prepare(); catch (IllegalArgumentException e) / TODO Auto-generated catch block e.pri

15、ntStackTrace(); catch (SecurityException e) / TODO Auto-generated catch block e.printStackTrace(); catch (IllegalStateException e) / TODO Auto-generated catch block e.printStackTrace(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); player.start(); return false; ); priv

16、ate class SeekBarBroadcastReceiver extends BroadcastReceiver Override public void onReceive(Context context, Intent intent) / TODO Auto-generated method stub int seekBarPosition = intent.getIntExtra(seekBarPosition, 0); / System.out.println(-+seekBarPosition); player.seekTo(seekBarPosition * player.

17、getDuration() / 100); player.start(); Override public void run() / TODO Auto-generated method stub while (isRun) try Thread.sleep(200); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace(); if (null != player) int position = player.getCurrentPosition(); int total = pl

18、ayer.getDuration(); Intent intent = new Intent(.karl.progress); intent.putExtra(position, position); intent.putExtra(total, total); sendBroadcast(intent); if (null != player) if (player.isPlaying() playing = true; else playing = false; Handler mHandler = new Handler(); / 歌词滚动线程 Runnable mRunnable =

19、new Runnable() Override public void run() / TODO Auto-generated method stub MusicActivity.lrc_view.SetIndex(LrcIndex(); MusicActivity.lrc_view.invalidate(); mHandler.postDelayed(mRunnable, 100); ; / 创建对象 private List lrcList = new ArrayList(); / 初始化歌词检索值 private int index = 0; / 初始化歌曲播放时间的变量 private

20、 int CurrentTime = 0; / 初始化歌曲总时间的变量 private int CountTime = 0; /* * 歌词同步处理类 */ public int LrcIndex() if (player.isPlaying() / 获得歌曲播放在哪的时间 CurrentTime = player.getCurrentPosition(); / 获得歌曲总时间长度 CountTime = player.getDuration(); if (CurrentTime CountTime) for (int i = 0; i lrcList.size(); i+) if (i lr

21、cList.size() - 1) if (CurrentTime lrcList.get(i).getLrc_time() & CurrentTime lrcList.get(i).getLrc_time() index = i; return index; 4、实验小结(包括问题和解决方法、心得体会等) 1.对于sendBroadCast的intent对象,需要设置其actionname;2.推荐使用显式指明receiver,在配置文件AndroidManifest.xml指明;3.一个receiver可以接收多个action; 4.每次接收广播都会重新生成一个接收广播的对象,再次调用onReceive; 5.在BroadCast中尽量不要处理太多逻辑问题,建议复杂的逻辑交给Activity或者Service去处理。通过这次实验,让我对Broadcast、尤其是Service有了更深入的认识,还让我意识到编程方面和知识体系机构方面存在的不足 。总之,这次试验让我Android编程能力有了一定的提高。利用这次试验,也将我们的大作业更加完善。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1