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 ...