我正在制作一个女巫项目我必须找到录制声音的响度。
无论我拨打getMaxAmplitude()
多少次,它总是显示0并且通过写amplitudeDb
它始终显示-infinity。
请帮助我谢谢。
这是我的代码。
record1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
record[0] = new MediaRecorder();
record[0].setAudioSource(MediaRecorder.AudioSource.MIC);
record[0].getMaxAmplitude();
record[0].setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
record[0].setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
record[0].setOutputFile(FilePath);
try {
record[0].prepare();
record[0].getMaxAmplitude();
} catch(IOException e) {
e.printStackTrace();
}
try {
record[0].start();
}
catch(Exception e) {
e.printStackTrace();
}
}
});
stop.setOnClickListener(new View.OnClickListener() {@Override
public void onClick(View v) {
try {
record[0].stop();
}
catch(Exception e) {
e.printStackTrace();
}
try {
int amp = record[0].getMaxAmplitude();
//String ampl = amp.toString();
int x = 1;
System.out.println("amp: " + amp);
System.out.println("hello");
//double amplitudeDb = 20 * Math.log10((double) Math.abs(amp));
ampli.setText("" + amp);
}
catch(Exception e) {
e.printStackTrace();
}
try {
record[0].release();
}
catch(Exception e) {
e.printStackTrace();
}
}
});
答案 0 :(得分:0)
最后我理解getMaxAmplitude()的逻辑我必须在record [0] .stop()
之前写记录[0] .getMaxAmplitude()一切都会好起来的。)