Android实时采集声音的频率和大小

笔者本不是专业人士,通过查了几篇资料和请教软件部门的同学搭的demo ,如有不正确之处,请及时指出

1.原理

  1. 声音大小省略,网上可以很好搜到
  2. 使用AudioRecord类采集声音信息,通过傅里叶转换,获取声音的频率

2.AudioRecord类说明

/** *@param audioSource  采集声音源  MediaRecorder.AudioSource.MIC 为采集麦克风 *@param sampleRateInHz  采集声音的频率,因设备而定,44100Hz 支持所有的设备,部分设     备上也支持 22050 16000 11025 *@param channelConfig 采集声音的声道 AudioFormat.CHANNEL_CONFIGURATION_MONO为单声道 *@param audioFormat  返回信息的格式 这里是 AudioFormat.ENCODING_PCM_16BIT *@param bufferSizeInBytes  缓存区大小 有要求的 ,可以用 AudioRecord.getMinBufferSize 获取 */public AudioRecord(int audioSource, int sampleRateInHz, int channelConfig, int audioFormat,int bufferSizeInBytes)/** *@param sampleRateInHz  采集声音的频率 *@param channelConfig 采集声音的声道  *@param audioFormat  返回信息的格式 * */static public int getMinBufferSize(int sampleRateInHz, int channelConfig, int audioFormat) 

3.傅里叶变换简单说明

  1. 快速傅里叶变换输入的一组数组,输出等长的一组数组
  2. 数组由时域变换成了频域,数组的中最大的值代表能量最大,下坐标乘以频幅就等于该点频率,通常以能量最大的频率代表声音的频率.
  3. 频幅指一个单位所代表的频率大小,例如下坐标为2 ,该点的频率=2*频幅.频幅=采样频率/采样点
  4. 采样点指采集信息的长度,可自己定,但最好为2的n次幂,不然结果会为零.

项目地址

https://github.com/xuanxuandaoren/SoundAnalysis/tree/master

更多相关文章

  1. 带你一步一步手动实现Android热更新
  2. Android(14) ArrayAdapter(数组适配器)的三种方法
  3. android 生成二维码图片
  4. Android中汉字转拼音的内存优化处理
  5. Android中SparseArray性能优化的使用方法
  6. Android(安卓)使用SoundPool播放音频
  7. Android提高十八篇之自定义Menu(TabMenu) [转]
  8. android 小游戏 ---- 数独(三)
  9. Android开发之Java设计模式基础篇

随机推荐

  1. android 定时器的实现
  2. Android(安卓)Service
  3. Android(安卓)进行单元测试难在哪-终
  4. android 系统资源的加载和获取
  5. Android布局文件属性
  6. android 界面布局 很好的一篇总结 【转】
  7. android 权限大全
  8. Mac系统下Android(安卓)SDK更新以及ADT无
  9. 解决Android(安卓)studio升级到3.5的一些
  10. Android中使用Movie显示gif动态图