android:检测声级

标签 android audio

使用 MediaRecorder 我从设备的麦克风捕捉声音。从我得到的声音中,我只需要分析音量(声音响度),而无需将声音保存到文件中。

两个问题:

  1. 如何获取给定时刻的声音响度?
  2. 如何在不将声音保存到文件的情况下进行分析?

谢谢。

最佳答案

  1. 使用mRecorder.getMaxAmplitude();

  2. 为了分析声音而不保存所有你需要的是使用 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;

    }
}

关于android:检测声级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14181449/

相关文章:

android - 授权facebook权限后facebook打不开

android - 声音不在播放Android程序的声音中播放

Android GET_CONTENT 音频文件

c# - 如何随机化在C#中执行某些 Action 的方式?

android - 停止服务后如何从传感器注销监听器?

javascript - 安卓 : making phone numbers callable

java - ListItem焦点改变

android - 三星 Galaxy Nexus 未出现在 OS X 上的 adb 设备下

c# - 读取系统音频输出流

audio - 插孔音频应用程序路由