Android 基于 Speex 的高度封装语音库,0 耦合,没三方jar包
来源:互联网 发布:速记用什么软件 编辑:程序博客网 时间:2024/06/07 01:13
作者:林冠宏 / 指尖下的幽灵
掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8
博客:http://www.cnblogs.com/linguanh/
GitHub : https://github.com/af913337456/
为了您的直观体验,请务必看完下面 截图,源码 gitHub 链接在其之后。
顺便提一下:
这个是接着我上一次开源的 仿:Android - 微信 - 朋友圈 - 小视频播放,多4句废话算我输 项目的。
目的:
不想为具备相同功能的应用开发做每次的相同代码的编写,再用简洁的风格造轮子。
为了避免大家浪费时间,直接先看下面的 截图,看完后,若你觉得会需要到,那么就请听我继续。
扯下感慨
之前说过的开源IM系统,其实是做好了的,没什么时间写文档,太乱开了也没意义。这次的文章也是挤出时间写的。语言我会尽量做到通俗易懂,少说点废话,谢谢那些一直关注我的同行,定以干货以回报之。
GitHub 链接
本着开源的精神,如果对你有用,希望您能给予个星星(star)
https://github.com/af913337456/SpeexVoiceRecorder
功能点
1,直观的
- 按键触发录音
- 上移动或者其它移动可以撤销
- 动态根据声音分贝显示图片进度效果
- 录音时间过短的提示
2,隐藏的
- 0 耦合,dialog 在内的 UI 代码我也集合了,业界风格。
- 使用方便,下面见解析
- 低内存占用,提供捞底回收
- 多接口延伸,例如结果文件路径的返回,和文件的大小
- 基于 Speex jni 库,高效,自定义语音文件格式
解析
实例:
private VoiceRecorderHelper voiceRecorderHelper;
触发:
// R.id.record 这个 VIew 是你的触发 ViewfindViewById(R.id.record).setOnTouchListener( new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent motionEvent) { switch (motionEvent.getAction()){ case MotionEvent.ACTION_DOWN: /** 手指按下 */ voiceRecorderHelper.Action_Down(v,motionEvent); return true; case MotionEvent.ACTION_MOVE: /** 移动 */ voiceRecorderHelper.Action_Move(v,motionEvent); return true; case MotionEvent.ACTION_UP: /** 抬起 */ voiceRecorderHelper.Action_Up(v,motionEvent); return true; } return false; } });
初始化:
voiceRecorderHelper = new VoiceRecorderHelper( this, new VoiceRecorderHelper.CallBack() { @Override public String setOutPutPath() { /** 设置录音结果路径,你的格式也在这里设置 */ return getAudioSavePath("LinGuanHong"); } @Override public void onDown(View v) { /** 纯粹的 down 事件回调 */ } @Override public void onMove_in_limit(View v) { /** 手指移动的范围在限制内 */ } @Override public void onMove_out_limit(View v) { /** 手指移动超过范围,内部做了显示取消的提示 */ } @Override public void onUp_start(View v) { /** 纯粹的 Up 事件回调 */ } @Override public void onUp_cancel(View v) { /** 这个时候已经因为手指移动超过范围取消了录音 */ } @Override public void onFinishRecord() { /** 录音结束 */ } @Override public void onRecordSuccess(float len, String savePath) { /** 录音、解码、保存成功 */ Log.e("aaaaa", "录音的路径 " + savePath + " 长度 " + len); } @Override public void onRecordVolumeChange(int voiceValue) { /** 录音声音强度的变化,单位分贝 */ } } ); }
技术点 (可以不看)
jni层:编译好 Speex.so 库,使用提供的录制函数。
java层:异步线程录制,获取分贝等数据同步刷新UI
终。
阅读全文
0 0
- Android 基于 Speex 的高度封装语音库,0 耦合,没三方jar包
- Android 基于PureMVC封装AppFacade高度解耦合框架
- 基于ogg+speex通用语音包(github上jcccn/OggSpeex)该包在ios8下使用说明
- speex语音压缩以及ogg封装
- Speex语音压缩与解压在Android上的实现
- android jar包封装引用
- 自己封装的Android sqlite-helper.jar包使用方法
- Android工程封装打包的jar包混淆,有图有真像!
- Android-万能 Adapter 封装(实现textview,imageView 的简单封装,封装 jar 包)
- Android引入第三方jar包的方法及如何将自己的代码封装成一个jar库
- android语音编解码:speex编解码
- Android 中jar包封装及调用>>>>>
- Android中jar包封装及调用
- android自定义View组件封装jar包
- Android OKHttp的高度封装
- 开源的语音编码-speex
- 基于HttpClient Jar包封装Java方法实现接口测试
- 基于C 的speex编程
- 亮风台研发基于图的平面物体跟踪算法
- javadoc注释模板设置及详解
- Spring---IOC(控制反转)和DI(依赖注入)
- mysql5启动报错:本地计算机 上的 MySQL 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止
- 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
- Android 基于 Speex 的高度封装语音库,0 耦合,没三方jar包
- 四大内置核心函数式接口
- 概率dp 入门
- Exception和RuntimeException的区别
- 深入理解findViewById原理
- 《统计学习方法》笔记08:boosting(1)
- CentOS7安装JDK1.8
- ++在前和++在后
- python实现对矩阵按照行、列求和,不使用numpy、pandas模块