`

Android多媒体开发--资源文件播放

阅读更多
     播放音频文件。按照音频文件来源不同可以分为:资源文件播放、系统播放文件和网络文件播放。
     资源文件播放是放在“<工程>/res/raw”,然后发布的时候被打成APK包一起安装在手机上。很显然这种方式不适合用于播放娱乐为主的多媒体文件,由于娱乐的多媒体文件是经常更新的,而放置在这个raw下面的文件用户是没有权限更新的,因此这种方式一般用于应用自己的一些音频和视频播放,如按键音、开机启动音、信息提示音等应用使用的声音。
    下面看看播放资源音频文件的代码请参考代码清单12-1,完整代码请参考Chapter12_1工程中AudioPlayer代码部分。
【代码清单12-1】
public class AudioPlayer extends Activity {

	private ImageButton play;
	private ImageButton stop;
	private MediaPlayer mMediaPlayer;
	private int state = IDLE;
	private static final int PLAYING = 0;
	private static final int PAUSE = 1;
	private static final int STOP = 2;
	private static final int IDLE = 3;

	public static final int UPDATE = 2;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.audio_player);

		// 初始化播放按钮
		play = (ImageButton) findViewById(R.id.play);
		play.setOnClickListener(new Button.OnClickListener() {
			public void onClick(View v) {
				if (state == PLAYING) {
					pause();
				} else {
					start();
				}
			}
		});

		// 初始化停止按钮
		stop = (ImageButton) findViewById(R.id.stop);
		stop.setOnClickListener(new Button.OnClickListener() {
			public void onClick(View v) {
				stop();
			}
		});

		// 开始播放歌曲
		play();
	}

	private void pause() {
		if (mMediaPlayer.isPlaying()) {
			mMediaPlayer.pause();
			state = PAUSE;
		}
		play.setImageResource(R.drawable.play);

	}

	private void start() {
		if (state == STOP) {
			play();
		} else if (state == PAUSE) {
			mMediaPlayer.start();
			state = PLAYING;
		}
		play.setImageResource(R.drawable.pause);
	}

	private void stop() {
		mMediaPlayer.stop();
		state = STOP;
		play.setImageResource(R.drawable.play);
	}

	// MediaPlayer进入prepared状态开始播放
	private OnPreparedListener preListener = new OnPreparedListener() {
		public void onPrepared(MediaPlayer arg0) {
			mMediaPlayer.start();
			state = PLAYING;
		}

	};

	private void play() {
		try {
			if (mMediaPlayer == null || state == STOP) {
				// 创建MediaPlayer对象并设置Listener
				mMediaPlayer = MediaPlayer.create(this, R.raw.ma_mma);
				mMediaPlayer.setOnPreparedListener(preListener);
			} else {
				// 复用MediaPlayer对象
				mMediaPlayer.reset();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

上面的代码只是实现了播放、暂停、停止功能,下一首、上一首和进度控制条的功能没有实现。文件放在raw目录下面调用play()方法实现了播放功能,mMediaPlayer = MediaPlayer.create(this, R.raw.ma_mma)是创建MediaPlayer,通过mMediaPlayer.setOnPreparedListener(preListener)设置了OnPreparedListener监听器,它是监听文件预处理完成之后事件。
private void play() {
		try {
			if (mMediaPlayer == null || state == STOP) {
				// 创建MediaPlayer对象并设置Listener
				mMediaPlayer = MediaPlayer.create(this, R.raw.ma_mma);
				mMediaPlayer.setOnPreparedListener(preListener);
			} else {
				// 复用MediaPlayer对象
				mMediaPlayer.reset();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

预处理完成之后MediaPlayer进入prepared状态,调用start()方法是播放媒体文件方法,同时把播放标志设置为PLAYING状态。
private OnPreparedListener preListener = new OnPreparedListener() {
		public void onPrepared(MediaPlayer arg0) {
			mMediaPlayer.start();
			state = PLAYING;
		}
	};

播放流程如图12-5所示。



图12-5播放流程

下面是暂停功能播放实现,MediaPlayer的pause()方法实现了媒体暂停,并把标志设定为PAUSE。
private void pause() {
		if (mMediaPlayer.isPlaying()) {
			mMediaPlayer.pause();
			state = PAUSE;
		}
		play.setImageResource(R.drawable.play);

	}

下面是停止功能播放实现,MediaPlayer的stop()方法实现了媒体停止,并把标志设定为STOP。

private void stop() {
		mMediaPlayer.stop();
		state = STOP;
		play.setImageResource(R.drawable.play);
	}

                                  出自《Andorid开发案例驱动教程》
  • 大小: 13.9 KB
0
3
分享到:
评论

相关推荐

    Android开发项目---人力资源管理系统.zip

    Android 项目是使用 Android 操作系统和相关开发工具开发的一款移动应用程序。Android 平台提供了丰富的功能和接口,开发人员可以使用 Java 或 Kotlin 等编程语言编写 Android 应用程序。Android 项目也可以是针对...

    老罗android开发视频教程全集百度网盘下载

    【第一版第九章】老罗Android开发视频--存储数据和文件(7集) 【第一版第十章】老罗Android开发视频--对话框介绍(4集) 【第一版第十一章】老罗Android开发视频--通知的使用(2集) 【第一版第十二章】老罗...

    深入解析Android多媒体开发

    提供了全面的Android多媒体开发指南。内容涵盖了Android系统的整体架构、多媒体架构的详细介绍,以及OpenCore平台的核心概念和代码结构。深入探讨了文件格式处理、编解码技术,以及OpenMAX的功能。此外,还提供了...

    Android高级编程--源代码

    10.1.1 播放媒体资源 318 10.1.2 录制多媒体 319 10.2 使用摄像头 321 10.2.1 控制摄像头设置 321 10.2.2 使用摄像头预览 321 10.2.3 照相 322 10.3 Sensor Manager简介 323 10.4 使用加速计和指南针 324 ...

    新版Android开发教程.rar

    Android Android Android Android 开发背景 � 计算技术、无线接入技术的发展,使嵌入式系统逐渐有能力对桌面系统常规业务进行支持。 � 谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商...

    Android UI开发专题

    平时用到的二进制源文件raw、颜色colors、图形drawables和多媒体文件media的相关资源均通过该类来管理。  int getColor(int id) 对应res/values/colors.xml  Drawable getDrawable(int id) 对应res/drawable/  ...

    android开发资料大全

    Android多媒体实例大汇集(源码,全) Android中利用画图类和线程画出闪烁的心形,送给亲爱的他 android自带的示例程序 BluetoothChat 变蓝牙串口助手(内含DIY蓝牙遥控车附源码实例教程) Android高手过招 FAQ ...

    Android开发案例驱动教程 配套代码

    12.2.3 资源音频文件播放 287 12.2.4 本地音频文件播放 291 12.2.5 网络音频文件播放 292 12.2.6 完善案例其他功能 293 12.3 Android音频录制 303 12.3.1 Android音频/视频录制状态 303 12.3.2 音频录制案例...

    Android课程设计-有机农场管理系统APP.zip

    Android 项目是使用 Android 操作系统和相关开发工具开发的一款移动应用程序。Android 平台提供了丰富的功能和接口,开发人员可以使用 Java 或 Kotlin 等编程语言编写 Android 应用程序。Android 项目也可以是针对...

    Android开发应用实战详解源代码

    7.8 播放mp3资源文件 7.9 录制音频 7.10 实现相机拍照功能 7.10.1 实现原理 7.10.2 编程思想 7.10.3 具体实现 7.11 自制3gp影片播放器 7.12 小结 第8章 网络编程 8.1 http参数传递 8.2 浏览网页 8.3 使用html代码 ...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    7.9 播放mp3资源文件——raw文件夹与MediaPlayer的使用 7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    7.9 播放mp3资源文件——raw文件夹与MediaPlayer的使用 7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——...

    阿里云javasdk源码-Android-Classical-OpenSource:Android开发中个人遇到和使用过的值得分享的资源合集

    阿里云java sdk源码 title tags keywords categories Android-Classical-OpenSource Android Android, ...公共库、高版本向低版本兼容库、多媒体、事件总线、传感器、安全、插件化、文件、其他 Android

    《Google Android SDK开发范例大全(第3版)》.pdf

    7.9 播放mp3资源文件 433 7.10 播放存储卡里的mp3音乐 438 7.11 自制录音/播放录音程序 443 7.12 通过收到短信开始秘密录音 447 7.13 内置影片播放器载入3gp电影 451 7.14 自制3gp影片播放器 455 ...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    7.9 播放mp3资源文件——raw文件夹与MediaPlayer的使用 7.10 播放存储卡里的mp3音乐——MediaPlayer.setDataSource 7.11 自制录音/播放录音程序——MediaRecorder与AudioEncoder 7.12 通过收到短信开始秘密录音——...

    Google Android SDK开发范例大全(第3版) 4/5

    7.9 播放mp3资源文件 7.10 播放存储卡里的mp3音乐 7.11 自制录音/播放录音程序 7.12 通过收到短信开始秘密录音 7.13 内置影片播放器载入3gp电影 7.14 自制3gp影片播放器 7.15 相机预览及拍照临时文件 7.16 拍照瞬间...

    Google Android SDK开发范例大全(第3版) 1/5

    7.9 播放mp3资源文件 7.10 播放存储卡里的mp3音乐 7.11 自制录音/播放录音程序 7.12 通过收到短信开始秘密录音 7.13 内置影片播放器载入3gp电影 7.14 自制3gp影片播放器 7.15 相机预览及拍照临时文件 7.16 拍照瞬间...

    Google Android SDK开发范例大全(第3版) 3/5

    7.9 播放mp3资源文件 7.10 播放存储卡里的mp3音乐 7.11 自制录音/播放录音程序 7.12 通过收到短信开始秘密录音 7.13 内置影片播放器载入3gp电影 7.14 自制3gp影片播放器 7.15 相机预览及拍照临时文件 7.16 拍照瞬间...

    Google Android SDK开发范例大全(第3版) 5/5

    7.9 播放mp3资源文件 7.10 播放存储卡里的mp3音乐 7.11 自制录音/播放录音程序 7.12 通过收到短信开始秘密录音 7.13 内置影片播放器载入3gp电影 7.14 自制3gp影片播放器 7.15 相机预览及拍照临时文件 7.16 拍照瞬间...

Global site tag (gtag.js) - Google Analytics