如何使用 Recorder 在 android 中检测环境噪声
Posted
技术标签:
【中文标题】如何使用 Recorder 在 android 中检测环境噪声【英文标题】:How to detect ambient noise in android using Recorder 【发布时间】:2014-04-07 20:13:20 【问题描述】:我正在尝试检测何时有太多的听觉噪音。我是 android 新手,不知道如何检测外部噪音水平。
我尝试过使用recorder
方法显示噪声值:getAudiosource
和getMaxAmplitude
方法。
public void startRecording() throws IOException
numeSunet=Environment.getExternalStorageDirectory().getPath()+"/"+System.currentTimeMillis()+".3gp";
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(Environment.getExternalStorageDirectory().getPath()+"/"+System.currentTimeMillis()+".3gp");
recorder.prepare();
recorder.start();
int x = recorder.getMaxAmplitude();
snt.setText(""+x);
public void stopRecording()
recorder.stop();
recorder.release();
在我的例子中,y 总是 0,x 总是 8。 如果有人知道如何检测 android 中的音频噪声级别,我将不胜感激。
【问题讨论】:
【参考方案1】:来自link:
使用 mRecorder.getMaxAmplitude();
为了分析声音而不保存,你只需要使用 mRecorder.setOutputFile("/dev/null");
举个例子,希望对你有帮助
public class SoundMeter
private MediaRecorder mRecorder = null;
public void start()
if (mRecorder == null)
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile("/dev/null");
mRecorder.prepare();
mRecorder.start();
public void stop()
if (mRecorder != null)
mRecorder.stop();
mRecorder.release();
mRecorder = null;
public double getAmplitude()
if (mRecorder != null)
return mRecorder.getMaxAmplitude();
else
return 0;
编辑:
读入API for MediaRecorder 显示这个...
public int getMaxAmplitude()
在 API 级别 1 中添加
返回自上次采样以来的最大绝对幅度 调用此方法。仅在 setAudioSource() 之后调用。
返回自上次调用以来测量的最大绝对幅度, 或 0 首次调用时抛出 IllegalStateException 如果它 在设置音频源之前调用。
【讨论】:
mRecorder.getMaxAmplitude() 始终为0。如果检测到噪声应该有什么值? 所以,我没有使用正确的方法来查找是否有噪音。我该如何解决我的问题?以上是关于如何使用 Recorder 在 android 中检测环境噪声的主要内容,如果未能解决你的问题,请参考以下文章
Android Media Recorder 无法在 Google Glass 上录制长视频
android:在模拟器上使用 MediaPlayer 录制音频
Android Studio 2.2 Espresso Test Recorder-----解放双手,通过录制测试过程实现测试