Android 录音getMaxAmplitude()

这个方法是用来获取在前一次调用此方法之后录音中出现的最大振幅,文档解释如下:

Returns the maximum absolute amplitude that was sampled since the last call to this method. Call this only after the setAudioSource().

很多人遇到问题,说是返回值为0,文档中解释如下:the maximum absolute amplitude measured since the last call, or 0 when called for the first time。

所以这个方法是需要间隔一段时间调用一次的,也就是说,需要放在线程里面调用的。第一次调用会返回0。

最近需要使用这个方法获取音量的变化,对其返回值很好奇,查了一些资料(from stackoverflow),解释如下:

The MediaRecorder.getMaxAmplitude() function returns unsigned 16-bit integer values (0-32767). Which is probably just the abs() of the CD-quality sample values that range from -32768 to 32767. This means that they probably represent a 16-bit digitalization of the electrical output from 0-100% maximum voltage range of the microphone build into that mobile phone. Since even in one brand of mobile these microphones sometimes vary in their precise range not even to similar phones will necessarily return the same value given the same distance to the same sound source.

This value however correlates to sound pressure in Pascal since it‘s also a linear quantisation of the solund pressure, in the area where sound can be measured with the given microphone (which will not cover the entire sprectrum due to the limitations of the phone).

然后看了一下小米录音机的源码,它其中就有一段代码是用来反映录音音量大小的,关键代码如下:

int vuSize = MAX_VU_SIZE * mRecorder.getMaxAmplitude() / 32768;

其中MAX_VU_SIZE是小米将音量分的等级数,然后可以将获得的振幅处以32768(关于这个数字,前面一段资料里面有解释),这样子就能获得音量所处的等级。

时间: 2024-08-30 13:41:37

Android 录音getMaxAmplitude()的相关文章

Android录音--AudioRecord、MediaRecorder

Android提供了两个API用于实现录音功能:android.media.AudioRecord.android.media.MediaRecorder. 网上有很多谈论这两个类的资料.现在大致总结下: 1.AudioRecord 主要是实现边录边播(AudioRecord+AudioTrack)以及对音频的实时处理(如会说话的汤姆猫.语音) 优点:语音的实时处理,可以用代码实现各种音频的封装 缺点:输出是PCM语音数据,如果保存成音频文件,是不能够被播放器播放的,所以必须先写代码实现数据编码

通过Android录音进行简单音频分析

Android录音有MediaRecorder和AudioRecord两种方式,前者使用方便,可以直接生成录音文件,但是录音格式为aac和amr等等,都经过压缩处理,不方便进行音频分析. 而用AudioRecord可以得到PCM编码的原音频数据,可以用FFT对数据进行处理,简单分析声音的频率. 1.AndroidRecord录音 private static final String FILE_NAME = "MainMicRecord"; private static final i

android录音相关

android的麦克风在现在的生活中发挥着很大的作用,打电话,视频聊天,语音识别等等. android sdk的api里提供了很方便的调用方法,下面写一个小的DEMO. 五个按钮:开始录音,停止,播放,删除录音,保存(令存为) recordBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try{ _recordAudioFile=File.createTempFile("

Android 录音(MediaRecorder)与播放(MediaPlayer)

通过MediaRecorder和MediaPlayer实现声音的录制和播放,代码比较简单,直接贴代码.xml文件里面只有四个按钮就不贴了. UI 代码: VoiceActivity.class package com.zy.ione; import com.zy.media.UPlayer; import com.zy.media.URecorder; import android.app.Activity; import android.os.Bundle; import android.os

Android录音,拍照,摄像

import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.app.Activity; import android.content.In

Android 录音

MediaRecorder类具体解释 移动电话通常具有一个麦克风和照相机,和Android该系统将能够利用这些硬件的优点来记录的音频和视频. 添加支持的音频和视频录制,Android该系统提供了MediaRecorder的类.该类的使用也很easy.以下让我们来了解一下这个类 一.结构 java.lang.Object->android.media.MediaRecorder 二.类概述: 用于录制音频和视频的一个类. 三.状态图: 说明: 与MediaPlayer类很相似MediaRecord

Android 录音器

Android自带的mediarecoder录音器不含pause暂停功能,解决方法:录制多个音频片段,最后合成一个文件. 参照 : http://blog.csdn.net/a601445984/article/details/44239717

Android录音实现——使用AtudioRecord

最近在做android中录音录屏的功能,以前也是从未接触多媒体这块,然后从不会到一点点的摸索,参考大神们的代码,到现在算是入门了,今天就总结一下android中的录音部分,后面总结录屏. 在android中实现录音共有三种方式: 通过意图捕获音频.这是android中最简单的一种方式,就是通过一个意图利用已有的.提供录制功能的应用程序.android系统中都会再带一个录音程序,我们可以通过意图来调用这个录音程序,从而实现录音功能. MediaRecorder类实现录音.MediaRecorder

Android 录音和摄像头权限适配【转】

本文转载自:http://blog.csdn.net/self_study/article/details/52965045 最近在研究权限适配的相关内容,整理以前的权限博客如下:  android permission权限与安全机制解析(上)  android permission权限与安全机制解析(下)  Android 悬浮窗权限各机型各系统适配大全  这篇博客主要是介绍录音权限和摄像头权限的适配,android permission权限与安全机制解析(下)这篇博客中我介绍到了 6.0 之