`

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-ndk(android-ndk-r23b-windows.zip)

    2. **头文件和库**:NDK提供了Android系统的API头文件和必要的库文件,使得开发者可以访问Android系统服务,如硬件设备、多媒体、网络等。 3. **构建系统**:如Build.Gradle插件,使得在Android Studio中可以方便地...

    android 播放局域网共享多媒体文件

    要实现这一功能,开发者需要理解Android多媒体框架、网络编程以及文件系统操作等多个方面的知识。以下将详细讲解如何在Android应用中实现这一功能。 首先,了解Android多媒体框架至关重要。Android提供了一个强大的...

    Android SDK (SDK Platforms)-android-33-ext5.zip

    例如,Android 33可能增加了新的系统服务,改进了权限管理,或者引入了更强大的多媒体支持,这些都会直接影响到应用的开发和兼容性。 ext5是Android 33中的一个扩展,它可能是对现有文件系统的改进或增强。在...

    android-ndk-r20b-windows-x86_64.zip

    对于64位Windows用户来说,"android-ndk-r20b-windows-x86_64.zip"是一个关键资源,它意味着可以直接在Windows环境中搭建本地开发环境,无需担心系统架构问题。解压后的文件包括了所有必要的工具和库,如编译器、...

    从头学Android之多媒体--使用MediaPlayer播放音频示例代码

    在Android开发中,多媒体处理是应用功能的重要组成部分,尤其是音频播放。`MediaPlayer`类是Android提供的一个核心组件,专门用于播放各种音频文件。本篇将深入讲解如何使用`MediaPlayer`来实现音频播放,并通过示例...

    Android多媒体开发高级编程

    本节将深入探讨Android多媒体开发的高级编程技巧,帮助开发者实现更高效、更丰富的多媒体应用。 1. **多媒体框架概述** Android的多媒体框架基于开放移动联盟(OMA)的开放移动 Alliance Digital Media ...

    Android多媒体开发高级编程-5

    本篇将深入探讨Android多媒体开发的高级编程技术,帮助开发者掌握如何在Android应用中集成丰富的媒体功能。 1. **多媒体框架** Android提供了一个强大的多媒体框架,包括Media Framework,它由多个组件构成,如...

    Android--开发--【eoeAndroid--开发--特刊】第18期:Android--开发--音视频的编解码.rar

    在Android平台上进行应用开发,音视频的编解码是一个重要的技术领域,特别是在开发多媒体应用程序时。这期【eoeAndroid--开发--特刊】第18期的主题是“Android--开发--音视频的编解码”,它深入探讨了Android如何...

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

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

    Android多媒体开发高级编程电子书

    这本书深入探讨了如何在智能手机和平板电脑上构建图形、音乐和视频应用,涵盖了Android多媒体开发的各个方面,对于想要提升自己在Android多媒体技术方面能力的开发者来说,是一份宝贵的资源。 在Android平台上进行...

    Android MediaPlayer Playback---多媒体开发应用程序接口

    在Android平台上,多媒体...总结来说,`Android MediaPlayer`是Android平台多媒体开发的重要部分,理解和熟练使用它可以创建功能丰富的音乐和视频播放应用。同时,合理利用第三方`jar`库可以进一步优化和扩展播放功能。

    Android多媒体功能开发-使用SoundPool播放音频的例子

    在Android平台上,多媒体功能是应用开发中不可或缺的一部分,尤其是音频播放。本教程将深入探讨如何使用`SoundPool`类来实现高效、灵活的音频播放。`SoundPool`是Android提供的一种轻量级的音频管理工具,特别适用于...

    Android多媒体开发高级编程及源码

    本文将深入探讨Android多媒体开发的高级编程技术,并基于提供的资源——"Android多媒体开发高级编程及源码",来解析相关知识点。 1. **Android多媒体框架** Android系统提供了一个强大的多媒体框架,包括...

    Android--开发--网络视频播放器(完整可运行).rar

    在Android平台上,开发一个网络视频播放器是一项技术性较强的任务,涉及到多个关键知识点。这个"Android--开发--网络视频播放器(完整可运行).rar"压缩包很可能包含了一个完整的项目源码,允许开发者深入理解并实践...

    Android多媒体功能开发-用MediaPlayer播放音频的例子

    在Android平台上,多媒体功能的开发是一项重要的任务,尤其是在构建丰富的用户体验时。本篇文章将深入探讨如何使用`MediaPlayer`类来播放音频,这是Android SDK提供的一种基础且强大的工具,用于处理各种音频格式。`...

    VLC for Android 3.1.5 armeabi-v7a版apk、aar及so

    总的来说,这个压缩包提供了VLC for Android的一个关键组件,使得armeabi-v7a架构的设备可以利用其强大的多媒体播放能力。无论是直接安装.apk还是通过集成.aar文件开发应用,用户都能享受到VLC的稳定性和兼容性。...

    Android--开发--rockplayer_ffmpeg.rar

    本资源“Android--开发--rockplayer_ffmpeg.rar”很可能是关于如何在Android上集成和使用FFmpeg库来构建类似RockPlayer的多媒体播放器的开发教程或源代码示例。FFmpeg是一个开源的跨平台项目,它包含了众多处理音频...

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

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

    深入解析Android多媒体开发

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

    实战Android应用开发-源文件

    - **09**、**10**、**07**、**06**、**05**:依次对应其他章节,涵盖了Android开发的不同方面,如数据存储、多媒体处理、动画效果、性能优化等。 通过分析这些源文件,读者可以逐步了解并掌握Android应用开发的各个...

Global site tag (gtag.js) - Google Analytics