Android中的噪声级查询

Android中的噪声级查询,android,microphone,noise,Android,Microphone,Noise,我想开发一个小的Android应用程序来测量当前的噪音水平(可能是dB)。但我不知道在libs里找什么。我不想把噪音录下来。有人能给我一个指针,告诉我应该看哪些类吗?我建议看这些类: android.media.AudioFormat android.media.AudioManager android.media.AudioTrack 不久前我们在中使用了它们。下面的代码片段显示了我们过去是如何获得噪声级的。不幸的是,文档没有说明#getMaxAmplium()返回的是什么单位 我看了一遍,

我想开发一个小的Android应用程序来测量当前的噪音水平(可能是dB)。但我不知道在libs里找什么。我不想把噪音录下来。有人能给我一个指针,告诉我应该看哪些类吗?

我建议看这些类:

android.media.AudioFormat
android.media.AudioManager
android.media.AudioTrack

不久前我们在中使用了它们。

下面的代码片段显示了我们过去是如何获得噪声级的。不幸的是,文档没有说明#getMaxAmplium()返回的是什么单位


我看了一遍,在我看来,你必须记录一个文件,立即处理该文件以获得噪声级,重复,这将是非常低效的。那里没有直接访问麦克风的权限…也许存储库中的这三个类可能会对您有所帮助:我们在这个项目中录制、处理和可视化了音频,但又放弃了。我本来希望不用录音就可以录制,但我会检查。为了对声音进行处理,您必须录制它。不过,您不必将其保存在设备上。现在我知道了要搜索的内容,我还找到了此线程,它也使用录制:
// Start recording but don't store data
MediaRecorder mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setOutputFile("/dev/null");
mediaRecorder.prepare();
mediaRecorder.start();

// Obtain maximum amplitude since last call of getMaxAmplitude()
while(someCondition) {
    int amplitude = mediaRecorder.getMaxAmplitude();
}

// Don't forget to release
mediaRecorder.reset();
mediaRecorder.release();