FmlPlayer - 基于BASS音频库封装的Android音频播放库
2016-06-29 09:42
477 查看
Github:https://github.com/ViTess/Android-FmlPlayer
Android-FmlPlayer
version - 0.1.0概要
基于BASS、BASS_FX两个库的封装,可直接用于Android提供最基础的音频播放、部分音效处理,目前仅支持OGG、MP3、WAV格式音频
支持OGG格式音频无缝循环,支持在线音频播放和下载
BASS and BASS_FX Library:http://www.un4seen.com/
如何使用
导入将AudioLibrary作为module导入,并设置为library
初始化和销毁
在程序的入口处(如Activity或Application中的onCreate)处初始化音频库:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FmlPlayer.init(this, true); }
在程序的结束处调用释放音频库:
@Override protected void onDestroy() { FmlPlayer.free(); super.onDestroy(); }
在初始化音频库后,即可像初始化MediaPlayer一样使用FmlPlayer:
FmlPlayer mPlayer = new FmlPlayer();
设置播放路径
目前支持的路径有assets、本地sdcard和网络链接
setAssetFile |
setExternalFile |
setNetFile |
设置完路径后即可调用
mPlayer.prepare()方法加载音频,注意设置网络链接后应调用
mPlayer.prepareAsync()方法异步加载并设置
OnPreparedListener监听准备事件
控制播放、暂停、关闭
经过prepare后,即可调用
mPlayer.play(),
mPlayer.pause(),
mPlayer.stop()方法操作音频
另外像调节音量、在线音频部分参数设置、下载音频等,可以参看demo中的例子
重置、释放资源
像MediaPlayer一样,在需要重置的地方调用
mPlayer.reset()
而在不需要再次播放音频后,请使用
mPlayer.release()释放资源
使用Fx功能
Fx功能是通过封装BASS_FX库实现的,目前可支持的音效有:Rotate
AutoWah
Phaser
Chorus
Echo
PeakEQ
在需要使用时,只需调用相关效果的set方法,最后update到FmlPlayer中即可:
FxController mFxCtrl = new FxController(); mFxCtrl.setRotate().setAutoWah(); mFxCtrl.setPhaser(); ... mFxCtrl.update(mPlayer);
在不需要部分音效时,同样只需调用相关效果的reset方法,并update到FmlPlayer即可
如需要取消所有音效或释放FmlPlayer时,请调用
mFxCtrl.release()
每一项音效对应的参数都有多种,可以自己调♂教;同时部分音效有预设了部分设置在其中提供调用,详细请参考demo中的例子
TODO
在有时间的前提下,会逐步添加完善其他功能,如增加可支持音频类型的相关库类、增加TAG的读取支持等Update Record
160628: 1. 增加在线音频播放、下载功能 2. 增加相关网络参数设置 3. 更改代码结构、更正原有代码中的bug 160421: 1. 修改项目为gradle 2. 将BASS库打包为jar引用
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories