现在的位置: 首页 > 综合 > 正文

android 多媒体

2013年08月14日 ⁄ 综合 ⁄ 共 1663字 ⁄ 字号 评论关闭

一、MediaPlayer

一个播放音频与视频文件声音的类。示例:

1.播放本地文件

  把文件存于res/raw/目录下:

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

  把文件存于assets目录下:

			MediaPlayer mMediaPlayer = new MediaPlayer();
			mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
			AssetFileDescriptor afd = getAssets().openFd("no_left.mp3");
			mMediaPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
			afd.close();
			mMediaPlayer.prepare();
			mMediaPlayer.start();

2.播放网络文件

			String url = "http://192.168.0.103:8080/test/从没离开.mp3";
			mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
			mMediaPlayer.setDataSource(url);
			mMediaPlayer.prepare();
			mMediaPlayer.start();

3.方法说明

 (1)create(Context context, Uri uri)与create(Context context, int resid)

两个静态方法,返回已经准备好了的MediaPlayer对象。

(2)setDataSource(String path)

设置准备播放的资源,path可以是本地文件路径或者网络文件地址。

(3)setDataSource(Context context, Uri uri)

与上类似。

(4)setDataSource(FileDescriptor fd)与setDataSource(FileDescriptor fd, long offset, long length)

用一个5分钟的音频文件测试,发现第一个方法比第二个方法播放的时间多出来一半多点。第二个是正常时间。

(5)prepare()与prepareAsync()

做播放前的准备,第二个方法时异步的。播放网络文件时这个时间可能会比较长,为了不阻塞主线程,这个操作需要放到其他线程,可以用第一个方法,放到子线程。也可以在主线程用第二个方法。

(6)setAudioStreamType(int streamtype)

设置音频类型,必须在prepare() 或 prepareAsync() 之前,参数定义在AudioManager中。发现不设置也没影响,不知道有什么用。

(7)start() 与 stop() 及 pause()

开始播放、停止播放、暂停播放。

(8)reset() 与 release()

重置 与 释放资源。

(9)isLooping() 与 isPlaying()

是否循环播放  与  是否正在播放

(10)seekTo(int msec)

跳转到指定时间点播放。

(11)setLooping(boolean looping)

设置是否循环播放。

(12)getDuration() 与 getCurrentPosition()

获取音频播放时间长度 与 获取当前播放位置

(13)还有各种监听与与Vidio有关的方法。

播放过程状态图如下:

二、AsyncPlayer

一个一般用于播游戏背景音乐的类。这个类其实是用MediaPlayer播放的。

(1)play(Context context, Uri uri, boolean looping, int stream)

播放声音,第四个参数为音频类型,比如AudioManager.STREAM_MUSIC。

(2)stop()

停止播放,释放资源。

抱歉!评论已关闭.