本文介绍多媒体的音频和视频播放。
播放音频和视频的源文件可以是一下三种:
源文件(即res/raw下或assets下)
文件系统(即sdcard)
流媒体(即网络)
1. 播放音频文件
播放音频文件可以用MediaPlayer类或SoundPool类。下面我们来介绍这两个类。
1.1 MediaPlayer从源文件(即res/raw下或assets下)播放音频
[java]
mMediaPlayer = MediaPlayer.create(this, R.raw.sleep_away);
mMediaPlayer.start();
mMediaPlayer = MediaPlayer.create(this, R.raw.sleep_away);
mMediaPlayer.start();
1.2 MediaPlayer从文件系统(即sdcard)播放音频
[java]
String filePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "sleep_away.mp3";// /mnt/sdcard/sleep_away.mp3
mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer.setDataSource(filePath);
mMediaPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
mMediaPlayer.start();
String filePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "sleep_away.mp3";// /mnt/sdcard/sleep_away.mp3
mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer.setDataSource(filePath);
mMediaPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
mMediaPlayer.start();方法二:
[java]
String filePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "sleep_away.mp3";// /mnt/sdcard/sleep_away.mp3
mMediaPlayer = MediaPlayer.create(this, Uri.parse(filePath));
mMediaPlayer.start();
String filePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "sleep_away.mp3";// /mnt/sdcard/sleep_away.mp3
mMediaPlayer = MediaPlayer.create(this, Uri.parse(filePath));
mMediaPlayer.start();
1.3 MediaPlayer从流媒体(即网络)播放音频
添加权限<uses-permission android:name="android.permission.INTERNET" />
[java]
filePath = "http://www.xyz.com/Audio/sample.mp3";
mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer.setDataSource(filePath);
mMediaPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
mMediaPlayer.start();
filePath = "http://www.xyz.com/Audio/sample.mp3";
mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer.setDataSource(filePath);
mMediaPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
mMediaPlayer.start();方法二:
[java]
filePath = "http://www.xyz.com/Audio/sample.mp3";
mMediaPlayer = MediaPlayer.create(this, Uri.parse(filePath));
mMediaPlayer.start();
filePath = "http://www.xyz.com/Audio/sample.mp3";
mMediaPlayer = MediaPlayer.create(this, Uri.parse(filePath));
mMediaPlayer.start();
另外,MediaPlayer的几个方法介绍一下:
start():开始播放
pause():暂停播放
reset() + prepare() + start():重新播放(其实MediaPlayer的create方易做图首次调用prepare()方法)
另外,在onDestroy()方法中必须释放MediaPlayer的资源:
[java]
@Override
protected void onDestroy() {
super.onDestroy();
if (mMediaPlayer != null) {
mMediaPlayer.release();
mMediaPlayer = null;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mMediaPlayer != null) {
mMediaPlayer.release();
mMediaPlayer = null;
}
}
1.4 SoundPool播放音频文件
开发Android软件中我们可能经常需播放多媒体声音文件,一般使用MediaPlayer类但该类占用资源较多,对于游戏等应用可能不是很适合,SoundPool类在SDK的android.media.SoundPool,顾名思义是声音池的意思。主要播放一些较短的声音片段,可以从程序的资源或文件系统加载,相对于MediaPlayer类可以做到使用较少的CPU资源和较短的反应延迟。
SoundPool和其他声音播放类相比,其特点是可以自行设置声音的品质、音量、播放比率等参等。并且它可以同时管理多个音频流,每个流都有独自的ID,对某个音频流的管理都是通过ID进行的。
SoundPool基本使用方法:
创建一个SoundPool对象:new SoundPool(int maxStreams, int streamType, int srcQuality);
从资源或者文件载入音频流:load(Context context, int resId, int priority);
播放声音:play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
关于SoundPool的用法参见Demohttp://download.csdn.net/detail/tianjf0514/4895976
2. 播放视频文件
播放视频有两种方法,一种是用VideoView播放,另一种是用Su易做图ceView播放。
2.1 VideoView播放方式可以用VideoView.setVideoURI()和VideoView.setVideoPath两种方式播放视频
从文件系统(即sdcard)
[java]
videoView.setVideoURI(Uri.parse(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4"));
videoView.setVideoURI(Uri.parse(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4"));
[java]
videoView.setVideoPath(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4");
videoView.setVideoPath(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4");
从流媒体(即网络)
[java]
videoView.setVideoURI(Uri.parse("http://v.pps.tv/play_3445G7.html"));
videoView.setVideoURI(Uri.parse("http://v.pps.tv/play_3445G7.html"));
[java]
videoView.setVideoPath("http://v.pps.tv/play_3445G7.html");
videoView.setVideoPath("http://v.pps.tv/play_3445G7.html");
用VideoView的方式播放视频很简单,但是视频的位置和大小不受控制,所以要下面来介绍另一种方式
2.2 Su易做图ceView播放方式播放视频
Su易做图ceView的控制接口Su易做图ceHolder的setFixedSize方法可以设置视频的大小。
具体的Su易做图ceView怎么播放视频参考Demohttp://download.csdn.net/detail/tianjf0514/4895976