Я использую audioRecord вместо mediarecorder в своем приложении, оно работает нормально, но у меня есть логика, которая сильно зависит от максимальной амплитуды, которую очень сложно получить с помощью audiorecord, вот что я использую при чтении буфера
private void writeAudioDataToFile(){
byte data[] = new byte[bufferSize];
String filename = getTempFilename();
FileOutputStream os = null;
try {
os = new FileOutputStream(filename);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int read = 0;
max=0;
if(null != os){
while(isRecording){
read = recorder.read(buffer, 0, bufferSize);
int ab = (buffer[0] & 0xff) << 8 | buffer[1];
amplitude = Math.abs(ab);
if(amplitude>0&&litude<25000)
isSilence=true;
else
isSilence=false;
//System.out.println(">>>>>>>>>>>"+amplitude);
if(AudioRecord.ERROR_INVALID_OPERATION != read){
try {
os.write(buffer);
} catch (IOException e) {
e.printStackTrace();
}
}
}
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
но это не работает для меня, так как значение меняется очень быстро, мне нужно реализовать что-то вроде getMaxAmplitude ()для audioRecord.