【问题标题】:How to get the amplitude of MediaRecorder [duplicate]如何获得MediaRecorder的幅度[重复]
【发布时间】:2017-01-14 06:31:45
【问题描述】:

我试图像这样在 Android 上获取麦克风的振幅电平:

MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

Timer timer = new Timer();
timer.scheduleAtFixedRate(new RecorderTask(recorder), 0, 1000);

private class RecorderTask extends TimerTask {
    private MediaRecorder recorder;

    public RecorderTask(MediaRecorder recorder) {
        this.recorder = recorder;
    }

    public void run() {
        Log.v("MicInfoService", "amplitude: " + recorder.getMaxAmplitude());
    }
}

不幸的是,这始终只返回 0。

看来,要让这个工作,我必须真正开始录制。对吗?

如果是这样,我需要记录500ms,获取幅度,停止记录并重复吗?

最后,我必须记录到文件吗?我不需要保存这个音频文件,我不能只获取当前的实时麦克风输入的当前幅度或自上次呼叫以来的最高幅度而不进行录音吗?

感谢任何帮助,谢谢。

【问题讨论】:

    标签: android mediarecorder


    【解决方案1】:

    是的,您必须开始录制。如果您不记录,则没有信号可以找到幅度。

    不,您不需要停止记录,getMaxAmplitude 会查找自上次调用以来的最大幅度。

    是的,使用此 API,您必须写入文件。不过,您可以在完成后删除该文件。或者尝试使用 /dev/null 作为文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      相关资源
      最近更新 更多