Android 基于 Speex 的高度封装语音库,0 耦合,没三方jar包
作者:林冠宏 / 指尖下的幽灵
掘金: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 是你的触发 View
findViewById(R.id.record).setOnTouchListener(new View.OnTouchListener() {@Overridepublic 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(){@Overridepublic String setOutPutPath() {/** 设置录音结果路径,你的格式也在这里设置 */return getAudioSavePath("LinGuanHong");}@Overridepublic void onDown(View v) {/** 纯粹的 down 事件回调 */}@Overridepublic void onMove_in_limit(View v) {/** 手指移动的范围在限制内 */}@Overridepublic void onMove_out_limit(View v) {/** 手指移动超过范围,内部做了显示取消的提示 */}@Overridepublic void onUp_start(View v) {/** 纯粹的 Up 事件回调 */}@Overridepublic void onUp_cancel(View v) {/** 这个时候已经因为手指移动超过范围取消了录音 */}@Overridepublic void onFinishRecord() {/** 录音结束 */}@Overridepublic void onRecordSuccess(float len, String savePath) {/** 录音、解码、保存成功 */Log.e("aaaaa", "录音的路径 " + savePath + " 长度 " + len);}@Overridepublic void onRecordVolumeChange(int voiceValue) {/** 录音声音强度的变化,单位分贝 */}});}
技术点 (可以不看)
jni层:编译好 Speex.so 库,使用提供的录制函数。
java层:异步线程录制,获取分贝等数据同步刷新UI
终。
转载于:https://www.cnblogs.com/linguanh/p/7249634.html
Android 基于 Speex 的高度封装语音库,0 耦合,没三方jar包相关推荐
- vue-cli3封装组件库打包并发布npm开源包和npm内网私有库
① 使用Vue-cli3搭建项目 vue create demo vue-cli3官方文档 注:cli3 提供一个可选的 vue.config.js 配置文件.如果这个文件存在则他会被自动加载,所有的 ...
- 红米android 升级包下载地址,红米手机2 MIUI9.0+Android7.1刷机包
红米手机2 MIUI9内测刷机包是基于Android7.1的红米手机最新的MIUI系统,MIUI9以"色彩无限"为主题,给用户最好的手机系统体验,不仅有ios的悬浮球,还可以做到大 ...
- android.support.v4.content.FileProvider@authorities value项目和三方jar包相同导致冲突
构建错误 解决办法: 根据错误提示:建议:添加"tools:replace="android:authorities"元素在AndroidManifest.xml中重写
- java打包要依赖maven库吗_maven-将依赖的 jar包一起打包到项目 jar 包中
前言: 有时候在项目开发中,需要很多依赖的 jar 包,其中依赖的 jar 包也会依赖其他的 jar 包,导致jar 包的管理很容易不全,以下有两种方法可以规避这个问题. 一.在pom.xml 文件中 ...
- 三星android 8升级包,三星G930K官方安卓8.0固件rom升级更新包:KTC-G930KKKU2ESI3
下面也是这个三星Galaxy S7手机的最新版本的系统包,也是支持线刷的,这个最新版本的系统包是KTC-G930KKKU2ESI3,大家下载下来解压出来然后采用odin工具进行刷入即可,如果你也需要的 ...
- java 图像识别包_Java基于百度API的图片文字识别免费源码和jar包
1.准备工作(jdk1.8) 使用之前需要获取对应的项目API_KEY,SECRET_KEY,这些参数在使用API的时候必须用到,用于生成access_token. 如何获取这些参数? 登陆后创建一个 ...
- Android将so库封装到jar包中并加载其中的so库
Android将so库封装到jar包中并加载其中的so库 之前写过将jar包和so库封装到jar包中的文章,但是没有考虑别人调用时需要加载so库的问题.因为so库放入jar之后,so就不是一个独立的. ...
- Android NDK开发:打包so库及jar包供他人使用
文章目录 一.目标及方式 二.新建调用方工程 三.新建库module 四.为库模块添加c++支持 4.1 准备CMakeLists文件 4.2 修改sdk的gradle脚本 4.3 编写c++及jav ...
- android studio gradle 打jar 包 (混淆+第三方库包)
将依赖的第三方库打包进自己的jar包 1.先将第三方的库包拿到,然后添加jar包到项目的libs. 2.项目的build.gradle脚本添加下面的task: 1 task buildJar(depe ...
最新文章
- GitHub超3k星!从Python代码到APP只需要一个小工具~
- Linux Kernel TCP/IP Stack — L2 Layer — Linux Bridge(虚拟网桥)
- mysql查询filter_子查询包含or引起的filter性能问题案例
- AOP基本概念、AOP底层实现原理、AOP经典应用【事务管理、异常日志处理、方法审计】...
- (chap1 网络基础知识)网络的构成要素:(7)网关
- 【图像分割模型】多感受野的金字塔结构—PSPNet
- Oracle 11g RAC 添加新节点及故障解决案例
- [渝粤教育] 江苏食品药品职业技术学院 酸奶及冰淇淋生产技术 参考 资料
- spring—事务控制
- String和STL的一些基础知识
- Tensorflow 2.1 迁移学习 基于VGG
- Factstone Benchmark
- ios 去掉底部状态栏,隐藏ios 9中的状态栏
- 插入保存?展现show的顺序
- 30多个Java实战项目,全部在这里了。
- C语言pid算法模糊控制,温度PID模糊控制的算法完整
- centos7服务器安装无线网卡,CentOS 7 安装无线网卡驱动方法实例教程
- 浅析EDA技术应用于电子设计竞赛的可行性
- Android Intent简介
- 桌面日历软件有哪些?日历提醒便签软件推荐