多媒体开发

(一)音频和视频播放
1.使用MediaPlayer播放音频
当程序控制MediaPlayer对象装载音频完成后,程序可以调用MediaPlayer的如下三个方法进行播放控制
start() 开始或恢复播放
stop() 停止播放
pause() 暂停播放
使用MediaPlayer提供的如下两个静态方法装载音频文件
static  MediaPlayer create(Context  context,Uri uri)  从指定Uri来装载音频文件,并返回新创建的MediaPlayer对象
static  MediaPlayer create(Context context,int resid) 从resid资源ID对应的资源文件中装载音频文件
如果程序需要循环播放多个音频文件,此时可以通过setDataSource()方法来装载指定的音频文件,MediaPlayer提供了如下方法来指定装载相应的音频文件
setDataSource(String path)装载指定path路径所代表的文件
setDataSource(FileDescriptor  fd,long offset ,long length) 指定装载fd所代表的文件中从offset开始,长度为length的内容
setDataSource(FileDescriptor  fd)  指定装载fd所代表的文件
setDataSource(Context context,Uri uri) 指定装载uri所代表的文件
只有调用MediaPlayer对象的prepare()方法去准备音频,所谓准备就是让MediaPlayer真正的去装载音频文件。


针对于MediaPlayer播放过程中的事件监听器
setOnCompletionListener(MediaPlayer.OnCompletionListener  listener)  为MediaPlayer的播放完成事件绑定监听器
setOnErrorListener(MediaPlayer.OnErrorListener  listener)  播放错误的事件监听器
setOnPreparedListener(MediaPlayer.OnPreparedListener  listener)  当调用prepare()方法时触发此事件监听器
setOnSeekCompleteListener(MediaPlayer.OnSeekCompleteListener  listener) 当MediaPlayer调用seek()方法时触发该监听器


还可以使用prepareAsync()来准备声音,与prepare()方法的区别是,prepareAsync()是异步的,不会阻塞当前的UI线程


(二)使用SoundPool播放音效
MediaPlayer存在如下缺点
1.资源占用量较高,延迟时间较长
2.不支持多个音频同时播放
SoundPool主要用于播放一些较短的声音片段,另外还支持自行设置声音的品质,音量,播放比特率等参数
Android系统SoundPool提供了一个Builder内部类,通过此类创建SoundPool对象
SoundPool提供了如下4个load()方法
int  load(Context context,int resId,int priority)从resId所对应的资源加载声音
int  load(FileDescriptor  fd,long offset,long length, int priority)   加载fd所对应的文件中从offset开始,长度为length的声音
int  load(AssetFileDescriptor afd,int priority) 从afd中加载声音
int  load(String  path,int priority)  从path对应的文件去加载声音
priority目前还没有什么用,建议设置成1,上面每个方法都会返回一个soundID

然后使用int play(int soundID,float leftVolume, float rightVolume,int priority,int loop,float rate)来播放声音
-1为循环,0为不循环,rate指定播放的比率,数值可以从0.5带2,1为正常比率

归纳起来,使用soundPool播放声音的步骤如下
1.调用SoundPool.Builder的构造器创建SoundPool.Builder对象,并可以通过Builder对象为SoundPool设置属性
2.调用SoundPool的构造器创建SoundPool对象
3.调用SoundPool对象的load()方法从指定资源,文件中加载声音,最好使用HashMap<Integer,Integer>来管理所加载的声音
4.调用SoundPool对象的play()方法来播放
(三)使用VideoView来播放视频
android提供了VideoView组件,是一个位于android.widget包下的组件,它的作用与ImageView相似
使用VideoView播放视频的步骤
1.在界面布局文件中定义VideoView组件,或在程序中创建VideoView组件
2.调用VideoView的如下两个方法来加载指定视频
setVideoPath(String path)  加载path文件所代表的视频
setVideoURI(Uri uri)  加载uri所对应的视频
调用VideoView的start(),stop(),pause()方法来控制视频播放
实际上与VideoView一起结合使用的还有一个MediaController类,它的作用是提供一个友好的图形控制界面,通过该控制界面来控制视频的播放
MediaController   mController = new MediaController(this);
<!--授予程序访问外部存储器的权限--> 
<uses-permission  android:name="android.permission.READ_EXTERNAL_STORAGE"/>
(四)使用MediaPlayer来SurfaceView播放视频
使用MediaPlayer播放视频的步骤如下:
1.创建MediaPlayer播放视频的对象,并让它加载指定的资源文件
2.在界面布局文件中定义SurfaceView组件,或者在程序中创建SurfaceView组件、并为SurfaceView的SurfaceHolder添加Callback监听器
3.调用MediaPlayer对象的setDisPlay(SurfaceHolder  sh) 方法将所播放的视频图像输出到SurfaceView组件中去
4.调用MediaPlayer对象的start(),stop(),pause()方法来控制  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值