(一)音频和视频播放
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()方法来控制
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()方法来控制