1
我正在创建一个女巫项目,我必须找到录制声音的响度。调用getMaxAmplitude返回0
无论我打电话多少次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();
}
}
});