Android_多媒体

本文介绍多媒体的音频和视频播放。

播放音频和视频的源文件可以是一下三种:

  1. 源文件(即res/raw下或assets下)
  2. 文件系统(即sdcard)
  3. 流媒体(即网络)


1、播放音频文件

播放音频文件可以用MediaPlayer类或SoundPool类。下面我们来介绍这两个类。

1.1、MediaPlayer从源文件(即res/raw下或asserts下)播放音频

mMediaPlayer = MediaPlayer.create(this, R.raw.sleep_away);
mMediaPlayer.start();

1.2、MediaPlayer从文件系统(即sdcard)播放音频

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 = MediaPlayer.create(this, Uri.parse(filePath));
mMediaPlayer.start();

1.3、MediaPlayer从流媒体(即网络)播放音频

添加权限<uses-permission android:name="android.permission.INTERNET" />

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 = MediaPlayer.create(this, Uri.parse(filePath));
mMediaPlayer.start();

另外,MediaPlayer的几个方法介绍一下:

  • start():开始播放
  • pause():暂停播放
  • reset() + prepare() + start():重新播放(其实MediaPlayer的create方法会首次调用prepare()方法)

另外,在onDestroy()方法中必须释放MediaPlayer的资源:

@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播放,另一种是用SurfaceView播放。

2.1、VideoView播放方式可以用VideoView.setVideoURI()和VideoView.setVideoPath两种方式播放视频

从文件系统(即sdcard)

videoView.setVideoURI(Uri.parse(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4"));
videoView.setVideoPath(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4");
从流媒体(即网络)

videoView.setVideoURI(Uri.parse("http://v.pps.tv/play_3445G7.html"));
videoView.setVideoPath("http://v.pps.tv/play_3445G7.html");

用VideoView的方式播放视频很简单,但是视频的位置和大小不受控制,所以要下面来介绍另一种方式

2.2、SurfaceView播放方式播放视频

SurfaceView的控制接口SurfaceHolder的setFixedSize方法可以设置视频的大小。

具体的SurfaceView怎么播放视频参考Demohttp://download.csdn.net/detail/tianjf0514/4895976

你可能感兴趣的:(Android_多媒体)