#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 дБ