Как измерить звук в децибелах…продолжайте получать 0,0 дБ

#java #android #measure #android-audiorecord #decibel

#java #Android #измерьте #android-audiorecord #децибел

Вопрос:

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

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();

        }
    });
  

Комментарии:

1. Вы проверили, действительно ли что-нибудь записывается? getAmplitudeEMA() Вызывается между вызовами startRecording() и stopRecording() или после stopRecording() ? Вы отладили код шаг за шагом и проверили математику?

2. Да, что-то действительно записывается, пожалуйста … но все равно 0,0 дБ