AudioRecord类获取录音音量分贝数
public class AudioRecordDemo { private static final String TAG = "AudioRecord"; static final int SAMPLE_RATE_IN_HZ = 8000; static final int BUFFER_SIZE = AudioRecord.getMinBufferSize(SAMPLE_RATE_IN_HZ, AudioFormat.CHANNEL_IN_DEFAULT, AudioFormat.ENCODING_PCM_16BIT); AudioRecord mAudioRecord; boolean isGetVoiceRun; Object mLock; public AudioRecordDemo() { mLock = new Object(); } public void getNoiseLevel() { if (isGetVoiceRun) { Log.e(TAG, "还在录着呢"); return; } mAudioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, SAMPLE_RATE_IN_HZ, AudioFormat.CHANNEL_IN_DEFAULT, AudioFormat.ENCODING_PCM_16BIT, BUFFER_SIZE); if (mAudioRecord == null) { Log.e("sound", "mAudioRecord初始化失败"); } isGetVoiceRun = true; new Thread(new Runnable() { @Override public void run() { mAudioRecord.startRecording(); short[] buffer = new short[BUFFER_SIZE]; while (isGetVoiceRun) { //r是实际读取的数据长度,一般而言r会小于buffersize int r = mAudioRecord.read(buffer, 0, BUFFER_SIZE); long v = 0; // 将 buffer 内容取出,进行平方和运算 for (int i = 0; i < buffer.length; i++) { v += buffer[i] * buffer[i]; } // 平方和除以数据总长度,得到音量大小。 double mean = v / (double) r; double volume = 10 * Math.log10(mean); Log.d(TAG, "分贝值:" + volume); // 大概一秒十次 synchronized (mLock) { try { mLock.wait(100); } catch (InterruptedException e) { e.printStackTrace(); } } } mAudioRecord.stop(); mAudioRecord.release(); mAudioRecord = null; } }).start(); }}AudioRecord类获取录音音量分贝数的更多相关文章
- Android 音视频技术之录音获取实时音量
一.实时音量相关基础知识 说到获取音量,大家首先想到的应该就是分贝(dB),分贝是一个相对单位(是一个比值,是一个数值,是一个纯计数方法). 在音频领域dB度量的是声音的强度,其计算的公式如下: 在上 ...
- static关键字,引发的spring普通类获取spring的bean的思考
在c++和java中static关键字用于修饰静态成员变量和成员函数 举例一个普通的javabean class AA { int a; static int b; geta/seta;//此处省略g ...
- Android之使用MediaMetadataRetriever类获取媒体信息
一.昨天.介绍了使用MediaMetadataRetriever类来获取视频第一帧:http://blog.csdn.net/u012561176/article/details/47858099,今 ...
- 使用WindowsAPI获取录音音频的方法
这篇文章主要介绍了使用WindowsAPI获取录音音频的方法,非常实用的功能,需要的朋友可以参考下 本文实例介绍了使用winmm.h进行音频流的获取的方法,具体步骤如下: 一.首先需要包含以下引用对象 ...
- android获取textview的行数
最近项目需求,需要获取Textview的行数,通过行数与TextView的maxLines进行比较来确定是否显示TextView下方的展开按钮是否显示,废话少说直接上代码,mTextView.getL ...
- StringGrid 实例2:1、获取 StringGrid 的行数、列数; 2、给单元赋值.
实例2: 本例功能: 1.获取 StringGrid 的行数.列数; 2.给单元赋值. 运行效果图:
- iOS 获取系统音量
//设置一个全局变量 UISilder * volumeViewSlider; #pragma mark - 获取系统音量 - (void)configureVolume { volumeView = ...
- js日期的写法,获取girdviw的行数、提示信息、验证数量信息
//制订日期(js日期的写法) var myDate = new Date(); var theDate = myDate.toLocaleDateString(); //获取今天的日期 //获取控 ...
- 普通Java类获取spring 容器的bean的5种方法
方法一:在初始化时保存ApplicationContext对象方法二:通过Spring提供的工具类获取ApplicationContext对象方法三:继承自抽象类ApplicationObjectSu ...
随机推荐
- maven:用appassembler-maven-plugin打包含有自定义目录的JAVA程序
问题说明: 用maven构建了一个项目,目录结构如下: appassemblerd的配置: <plugin> <groupId>org.codehaus.mojo</gr ...
- java设计模式 模板方法模式Template Method
设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性.毫无疑问,设计模式于己 ...
- iOS -[PFPASIDataCompressor compressBytes:length:error:shouldFinish:] in PFPGZIPInvocationCompressor.o
添加动态库报错 "_deflate", referenced from: -[PFPASIDataCompressor compressBytes:length:error:sho ...
- CSS3-02 样式 1
概述 上一篇博客中,概述了如何在 HTML 文档中使用 CSS,以及如何选择 HTML 元素,并且在文档的最后以表格的形式给出了 CSS 中所有的属性.在接下来的这篇博客中,将阐述主要 HTML 元素 ...
- 学习Coding-iOS开源项目日志(五)
继续,接着前面第四篇<学习Coding-iOS开源项目日志(四)>讲解Coding-iOS开源项目. 前 言:作为初级程序员,想要提高自己的水平,其中一个有效的学习方法就是学习别人好的项目 ...
- postgresql 服务器端编程之hello word
create or replace function addjifen( iuserid text, iamout INTEGER) returns text AS \[ BEGIN return ' ...
- 基于redis分布式缓存实现(新浪微博案例)
第一:Redis 是什么? Redis是基于内存.可持久化的日志型.Key-Value数据库 高性能存储系统,并提供多种语言的API. 第二:出现背景 数据结构(Data Structure)需求越来 ...
- SSIS,参数坑
首先我有一个这样的饿存储过程, @procGuid 这个是 存放 guId的字符串 当如传入 0 的时候, @procGuid 会赋值,并且返回. ) ,@procGuid output print ...
- Linux平台卸载MySQL总结
如何在Linux下卸载MySQL数据库呢? 下面总结.整理了一下Linux平台下卸载MySQL的方法. MySQL的安装主要有三种方式:二进制包安装(Using Generic Binaries).R ...
- Linux笔记:使用Vim编辑器
Vi编辑器是Unix系统上早先的编辑器,在GNU项目将Vi编辑器移植到开源世界时,他们决定对其作一些改进. 于它不再是以前Unix中的那个原始的Vi编辑器了,开发人员也就将它重命名为Vi improv ...