Как измерить звук в децибелах ... постоянно получать 0,0 дБ - PullRequest
0 голосов
/ 05 апреля 2019

Я пытался использовать некоторые ресурсы из Интернета, чтобы создать аудио-рекордер, а также измерять в децибелах. Я был в состоянии записать, но после измерения все, что я получаю, это 0.0dB. Зачем? Что я делаю неправильно? Пожалуйста, помогите.

Java

private static double mEMA = 0.0;
static final private double EMA_FILTER = 0.6;

private void startRecording() {
    recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setOutputFile(Mfilename);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

    try {
        recorder.prepare();
    } catch (IOException e) {
        Log.e("record_app", "prepare() failed");
    }

    recorder.start();
}

private void stopRecording() {
    recorder.stop();
    recorder.release();
    recorder = null;
}

public double getAmplitude() {
    if (recorder != null)
        return (recorder.getMaxAmplitude());
    else
        return 0;

}

public double getAmplitudeEMA() {
    double amp = getAmplitude();
    mEMA = EMA_FILTER * amp + (1.0 - EMA_FILTER) * mEMA;
    return mEMA;
}

при нажатии кнопки

measure.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

Toast.makeText(getActivity(),Double.toString((getAmplitudeEMA())) + " dB", 
Toast.LENGTH_SHORT).show();

        }
    });
...