Я пытался использовать некоторые ресурсы из Интернета, чтобы создать аудио-рекордер, а также измерять в децибелах. Я был в состоянии записать, но после измерения все, что я получаю, это 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();
}
});