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

本文介绍Android应用程序中资源音频文件的播放方法,包括播放、暂停、停止等功能的实现,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

播放音频文件。按照音频文件来源不同可以分为:资源文件播放、系统播放文件和网络文件播放。
资源文件播放是放在“<工程>/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所示。

[img]http://dl.iteye.com/upload/attachment/511680/8a5413b9-20cd-36b2-be7b-560345b32dcc.png[/img]

图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开发案例驱动教程》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值