Android

上有一些很有趣的应用,例如《吹裙子》、《吹气球》之类的。利用的是实时获取麦克风输入音量,然后进行相应的处理。录音过程中怎样获得声音的大小呢?网上也不少人问如何处理这个事情,也有一些解答,不过都没有实际的代码。简单摸索了一下,写了个小

Demo 试了试,果然可以。给大家共享一下。

不解释代码了,大家看注释。

package eoe.demo;

import android.media.AudioFormat;

import android.media.AudioRecord;

import android.media.MediaRecorder;

import android.util.Log;

public class RecordThread extends Thread {

private AudioRecord ar;

private int bs;

private static int SAMPLE_RATE_IN_HZ = 8000;

private boolean isRun = false;

public RecordThread() {

super();

bs = AudioRecord.getMinBufferSize(SAMPLE_RATE_IN_HZ,

AudioFormat.CHANNEL_CONFIGURATION_MONO,

AudioFormat.ENCODING_PCM_16BIT);

ar = new AudioRecord(MediaRecorder.AudioSource.MIC,

SAMPLE_RATE_IN_HZ, AudioFormat.CHANNEL_CONFIGURATION_MONO,

AudioFormat.ENCODING_PCM_16BIT, bs);

}

public void run() {

super.run();

ar.startRecording();

// 用于读取的

buffer byte[] buffer = new byte[bs]; isRun = true; while (isRun)

{

int r = ar.read(buffer, 0, bs);

int v = 0;

// 将 buffer 内容取出,进行平方和运算

for (int i = 0; i < buffer.length; i++) {

// 这里没有做运算的优化,为了更加清晰的展示代码

v += buffer[i] * buffer[i];

}

// 平方和除以数据总长度,得到音量大小。可以获取白噪声值,然后对实际采样进行标准化。

// 如果想利用这个数值进行操作,建议用 sendMessage 将其抛出,在 Handler 里进行处理。

Log.d("spl", String.valueOf(v / (float) r));

}

ar.stop();

}

public void pause() {

// 在调用本线程的 Activity 的 onPause 里调用,以便 Activity 暂停时释放麦克风

isRun = false;

}

public void start() {

// 在调用本线程的 Activity 的 onResume 里调用,以便 Activity 恢复后继续获取麦克风输入音量

if (!isRun) {

super.start();

}

}

}

android获取录音音量大小,Android 获取麦克风音量相关推荐

  1. android获取sd的大小,Android实现获取SD卡总容量,可用大小,机身内存总容量及可用大小的方法...

    本文实例讲述了Android实现获取SD卡总容量,可用大小,机身内存总容量及可用大小的方法.分享给大家供大家参考,具体如下: 可能有的同学不知道系统已经提供了获取获取SD卡总容量,可用大小,机身内存总 ...

  2. android中录音断点播放,Android实现暂停--继续录音(AudioRecord)

    Android提供了两个API用于录音的实现:MediaRecorder 和 AudioRecord,各有优劣. 1.MediaRecorder 已经集成了录音.编码.压缩等,支持少量的录音音频格式, ...

  3. Android全局修改字体大小,Android 仿微信全局字体大小调整

    image 目录 一.前言 二.效果预览 三.实现步骤 1.自定义字体调整控件 2.滑动按钮改变当前页面预览字体大小 3.返回时,保存放大倍数并重启应用 4.初始化应用时配置字体放大倍数. 四.Dem ...

  4. android 自由缩放图片大小,android Matrix实现图片随意放大缩小或拖动

    本文实例为大家分享了android Matrix图片随意放大缩小和拖动的具体代码,供大家参考,具体内容如下 step1:新建一个项目DragAndZoom,并准备一张照片放在res/drawable- ...

  5. python获取文件的大小_python获取文件大小

    python获取文件大小# !/usr/bin/python3.4 # -*- coding: utf-8 -*- import os # 字节bytes转化kb\m\g def formatSize ...

  6. android 推送图标大小,Android状态栏图标大小 – 使用Cordova / Phonegap推送插件

    我正在使用Ionic(Cordova AngularJS)开发 Android应用程序.有了它,我使用推送插件( https://github.com/phonegap-build/PushPlugi ...

  7. java 获取文件的大小kb_java获取文件大小的方法

    java获取文件大小的方法 目前Java获取文件大小的方法有两种: 1.通过file的length()方法获取: 2.通过流式方法获取: 通过流式方法又有两种,分别是旧的java.io.*中FileI ...

  8. php获取网络图片的大小,PHP获取远程图片尺寸和大小实例演示

    这篇文章主要为大家详细介绍了PHP获取远程图片尺寸和大小实例演示,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. PHP功能强大,今天361源码给大家介绍的是: ...

  9. 【乐畅】工作积累 ---- 调节音量大小 (滑动条调节音量大小并保存起来 )

    cocos2dx 的音量的大小的范围是 0.0f ~ 1.0f 1 // 获取音量大小 2 float musicVolume = getMusicVolume(); 3 float effectVo ...

最新文章

  1. CCS3的过渡、变换、动画以及响应式布局、弹性布局
  2. php ip2long bug,php ip2long函数怎么用-PHP问题
  3. jmeter环境部署
  4. 对.NET的GC(垃圾回收)的理解都存在错误认识
  5. 武新博士:新型MPP数据库将支撑起大数据时代
  6. mysql 禁止存储过程_为什么阿里巴巴禁止使用存储过程?
  7. UcOS-II 和linux比较
  8. 为什么优酷的《楚乔传》画质更清晰?独家解密窄带高清技术
  9. 图形界面组件实验的一点总结
  10. 资深架构师自述:程序员的黄金奋斗时期是前5年
  11. java jsp交友系统_Jsp+Servlet+Javabean网络交友程序设计+源代码
  12. 作曲大师2019破解版|作曲大师音乐梦想家2019破解版下载 v2019.9(附安装破解图文教程)
  13. CAN总线知识点梳理
  14. 【图像处理】镜头去污渍(未完全实现):python + OpenCV
  15. 学习乔布斯的成功方法
  16. Redisson(2-3)分布式锁实现对比 VS Java的ReentrantLock的FairLock
  17. python文件处理pdf_Python用于NLP :处理文本和PDF文件
  18. javascript判断浏览器是否是隐私模式
  19. Java生成条形码图片到本地
  20. Python合并两个列表的方法

热门文章

  1. 计算机应用基础考试质量分析,考试成绩分析报告范文.docx
  2. Unity-BattleStar丨13. 终章:改善BUG,增加三连发模式
  3. PowerPC家谱史
  4. poor-man’s-graphical-boot
  5. 基于电容电流前馈与电网电压全前馈的三相LCL并网逆变器谐波抑制MATLAB仿真
  6. Linux运行时IO设备电源管理框架---PM
  7. 谈谈两个以太坊硬分叉
  8. 双环形图表_(双圆环图表)如何用excel制作多层圆环对比图
  9. 25个超级经典故事!!!
  10. 关于Django的响应式网页