android 多媒体

一、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()

停止播放,释放资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值