Android多媒体

播放音频

在Android 中播放音频文件一般都使用MediaPlayer 类来实现,它对多种格式的音频文件提供了非常全面的控制方法。下表列出了MediaPlayer类中的一些较为常用的控制方法:

方法名功能描述
setDataSource()设置要播放的音频的位置
prepare()在开始播放之前调用这个方法完成准备工作
start()开始或者继续播放音频
pause()暂停播放音频
reset()将MediaPlayer对象重置到刚刚创建的状态
seekTo()从指定的位置开始播放音频
stop()停止播放音频,调用这个方法后的MediaPlayer对象无法再播放音频
release()释放掉与MediaPlayer对象相关的资源
isPlaying()判断当前MediaPlayer是否正在播放音频
getDuration()获取载入的音频文件的时长
初始化之前需要解决权限问题(6.0以上需要运行时权限)
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
			if(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) 
					!= PackageManager.PERMISSION_GRANTED) {
				requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
			}else {
				initMedaiPlayer();
			}
		}else {
			initMedaiPlayer();
		}
初始化MediaPlayer
public void initMedaiPlayer(){
		File file = new File(Environment.getExternalStorageDirectory(),"/qqmusic/arScene/bgm");
		try {
			mediaPlayer.setDataSource(file.getPath());  //指定音频文件的路径
			mediaPlayer.prepare();   //让MediaPlayer 进入准备状态
		}catch (IOException e) {
			e.printStackTrace();
		}
	}

初始化完成后,就是MediaPlayer的使用

//开始播放
mediaPlayer.start();
//暂停
mediaPlayer.pause();
//停止
mediaPlayer.reset();  //回到初始化
initMediaPlayer()

当不需要使用MediaPlayer时,需要停止并释放资源,一般在onDesory中处理

protected void onDestory(){
	if(mediaPlayer != null){
		mediaPlayer.stop();
		mediaPlayer.release();
	}
}

播放视频

视频播放主要用到类 VideoView 来实现,这个类将视频的显示和控制集于一身,使得我们仅仅借助它就可以完成一个简易的视频播放器,VideoView 与 MediaPlayer 比较类似,主要方法如下:

方法名功能描述
setVideoPath()设置要播放的视频文件的位置
start()开始或继续播放视频
pause()暂停播放视频
resume()将视频重头开始播放
seekTo()从指定的位置开始播放视频
isPlaying()判断视频是否正在播放
getDuration()获取载入的视频文件的时长
权限问题

同音频播放一样,在初始化VideoView 之前,需要判断Android版本并实现运行时权限(和音频播放相同,这里就不重复)

初始化VideoView
//获取videoView控件
videoView = (VideoView)findViewById(R.id.videoView);

//加载视频文件
File file = new File(Environment.getExternalStorageDirectory(), "movie.mp4");
videoViews.setVideoPath(file.path());
操作VideoView 对象
//开始播放视频
videoView.start();
//暂停播放
videoView.pause();
//重新播放
videoView.resume();
当最终不需要,或Activity关闭时,需要释放资源
protected void onDestory(){
	if(videoVieew != null){
		videoView.suspend();
	}
}

注意:为了兼容低版本,音频和视频都需要在AndroidManifest.xml 中添加权限

<uses-permission android:name="android.permission.WRITE_EXTERAL_STORAGE" />

闲话

为什么 VideoViewMediaPlayer 如此相似呢,其实VideoView 只是帮我们做了一个封装,它的背后仍然是使用 MediaPlayer 来对视频文件进行控制的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值