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

两个问题:

  • 如何在给定的时间点获得声音的响度?
  • 如何在不将声音保存到文件的情况下进行分析?

  • 谢谢你。

    最佳答案

  • 使用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;
    
        }
    }
    

    10-07 12:51