private static final int SAMPLING_RATE = 44100;
public AudioRecordingThread(String fileWavName, AudioRecordingHandler handler) {
this.fileName_wav = fileWavName;
this.fileName_raw = getRawName(fileWavName);
this.handler = handler;
bufferSize = AudioRecord.getMinBufferSize(SAMPLING_RATE,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT);
audioBuffer = new byte[bufferSize];
}
@Override
public void run() {
FileOutputStream out = prepareWriting();
if (out == null) { return; }
AudioRecord record = new AudioRecord(AudioSource.VOICE_RECOGNITION, /*AudioSource.MIC*/
SAMPLING_RATE,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
bufferSize);
위의 소스처럼 세팅 해놓고 녹음하면, 대부분 1분 녹음하면 1분에 근접한 재생이 되는데,
갤럭시 노트나 넥서스로 실행했을 경우,
노트는 1분 녹음하면 60초 분량을 13~17초에 모두 재생해주거나,
넥서스는 대략 45~50초 정도가 재생이 됩니다.
Sample_rate 를 44100에서 48000으로 바꿨더니 시간이 약간 줄어드는걸 확인해서
22050으로 rate를 낮추면 에러가 발생합니다.
output sample rate는 API17이상만 확인할수 있어서
API17이하의 device에서는 확인할수가 없어서 혹시 다른 방법을 아신다면 답변 부탁드리겠습니다.
혹은 device마다 재생속도가 다른 이유를 아시는 분도 답변 부탁드립니다.