Android播放音频
来源:互联网 发布:英伟达优化软件 编辑:程序博客网 时间:2024/06/06 00:20
Android播放音频常用3种:
MediaPlayer:一般用来播放较大的音频如SD卡上保存的,网络音频.
SoundPool:一般用来播放音效(很多情况伴随动画效果和游戏爆炸等音效)
Opensl ES:全称是(Open Sound Library For Embedded Systems),是跨平台,根据嵌入式系统的硬件音频加速API.是在NDK环境进行开发,减少拷贝直接在native层进行解码,从而效率会高一些,这里就了解一下.
一.MediaPlayer
首先介绍一下MediaPlayer常用API:
setDataSource():方法是重载的,这里就不一一列举了,主要是设置数据源,SD卡路径或者网络路径.
start():开始播放
pause():暂停
prepare():缓冲,写入内存,同步方法会挂起,一般用来加载本地较小的音频.
prepareAsync():这个和上个对应是用于播放网络视频或较大的音频,使用这个方法后需要设置一个监听.
setOnPreparedListener(OnPreparedListener):使用prepareAsync()时程序会一直往下走,这时就需要设置这个监听监听已经加载完成可以播放了,在监听中调用start()方法.还有各种setOnxxxxxxListener这个就自己写时候看吧反正什么错误啊,播放完成啊等都有.
release():页面销毁时记得调用释放,不然有可能出现内存溢出
getDuration(),getCurrentPosition(),seekTo(int)等等都不一一叙述了都是获取和设置一些信息.
代码示例:
(1)播放资源文件
MediaPlayer mediaPlayer = new MediaPlayer.create(context,R.raw.xxx);
mediaPlayer.start();
(2)播放SD卡,网络视频
MediaPlayer mediaPlayer = new MediaPlayer.create();
mediaPlayer.setDataSource(SD卡路径或网络路径);
mediaPlayer.setOnPreparedListener(new OnPreparedListener(){
@override
public void onPrepared(MediaPlayer m){
mediaPlayer.start();
}
});
mediaPlayer.prepareAsync();
二.SoundPool
这个东西可以实现多个音频一起播放,实现爆炸一般的音效 Boom..SHA.KA.!!
代码示例:
SoundPool.Builder builder = new SoundPool.Builder();
builder.setMaxStreams(2); 设置最多容纳的音频数量
AudioAttributes.Builder attr = new AudioAttributes.Builder(); // 这是一个封装了音频的属性的东西
builder.setAudioAttributes(attr.build()); //加载attr
SoundPool soundPool = builder.build();
soundPool.load(context,R.raw.xxx,int);//第一个参数Context,第二个资源文件,第三个是优先级,返回参数是个SoundId 播放多个时候可以使用HashMap保存.
soundPool.play(int soundId,float leftVolume,float rightVolume,int priority, int loop,float rate);
//这么多参数,一个一个来
//soundId. 上面Load过的返回值
//leftVolume.左声道音量大小 取值范围0.0f-1.0f之间,0.6f就是最大音量的百分之60
//rightVolume.右声道同上
//priority.优先级,谁大谁先来
//loop.循环,负数无限循环,0的话就不循环只播放一次
//rate.播放速率,取值0.5f-2.0f 1.0f是正常速率
- Android AudioTrack 播放音频
- Android MediaPlayer播放音频
- android:音频播放
- android 音频播放 SoundPool
- android 音频播放--MediaPlayer
- Android SoundPool播放音频
- android 音频播放类
- Android播放音频相关
- Android音频播放方法
- Android中的音频播放
- android音频播放
- Android音频播放讲解
- Android:MediaPlayer播放音频
- Android SoundPool播放音频
- Android播放音频中断
- Android 播放音频
- android播放网络音频
- 管理Android音频播放
- Java Introspector(内省)
- 第十周项目一
- 打印倒三角和菱形
- 第九周项目3
- compile freeswitch based on macOS
- Android播放音频
- Linux基础之八
- rest/flask/nginx/uwsgi/supervisor
- 常用的距离测度
- Mybatis 报错:java.lang.NoSuchMethodException: java.lang.Long.<init>()
- MySQL 批量更新数据
- QA问答系统中的深度学习技术实现
- 第十二周【项目一-Prim算法的验证】
- Java单链表、双端链表、有序链表实现