实 验 报 告
(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
} // 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