安卓Android广播、线程、服务与多媒体开发实验报告 下载本文

内容发布更新时间 : 2024/5/5 15:54:10星期一 下面是文章的全部内容请认真阅读。

实 验 报 告

(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 1

三、实验原理及内容 在这个程序中涉及到了Receiver和BroadcastReceiver的结合使用,首先在AndroidManifest.xml中注册Receiver,实现能够在后台播放音乐的功能。 通过CommandReceiver类实现接受前台Activity发送的播放命令的Intent。在CommandReceiver类中,有后台Service注册的接受前台控制命令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 int 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 receiver = new SeekBarBroadcastReceiver(); IntentFilter filter = new IntentFilter(\); this.registerReceiver(receiver, filter); new Thread(this).start(); super.onCreate(); @Override public void onStart(Intent intent, int startId) { 2

} // TODO Auto-generated method stub String play = intent.getStringExtra(\); _id = intent.getIntExtra(\, 1); if (play.equals(\)) { if (null != player) { player.release(); player = null; } playMusic(_id); } else if (play.equals(\)) { if (null != player) { player.pause(); } } else if (play.equals(\)) { if (player != null) { player.start(); } else { playMusic(_id); } } else if (play.equals(\)) { } else if (play.equals(\)) { int id = intent.getIntExtra(\, 0); playMusic(id); } else if (play.equals(\)) { int id = intent.getIntExtra(\, 0); playMusic(id); } else if (play.equals(\)) { int id = intent.getIntExtra(\, 0); playMusic(id); } else if (play.equals(\)) { int id = intent.getIntExtra(\, 0); playMusic(id); } private void playMusic(int id) { // /////////////////////// 初始化歌词配置 /////////////////////// // mLrcProcess = new LrcProcess(); // 读取歌词文件 3

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; } else if (id <= 0) { _id = 0; } Music m = lists.get(_id); String 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.printStackTrace(); } 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(); 4