// 设置音频来源:麦克风 mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 设置音频编码格式 mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); // 设置音频通道 mediaRecorder.setAudioChannels(1); // 设置音频采样率 mediaRecorder.setAudioSamplingRate(44100); // 设置音频编码位率 mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
// 设置输出文件路径 mediaRecorder.setOutputFile(filePath); // 准备录音 mediaRecorder.prepare(); // 开始录音 mediaRecorder.start();
short[] audioData = new short[blockSize]; double[] magnitude = new double[blockSize / 2]; double[] frequency = new double[blockSize / 2]; FFT fft = new FFT(blockSize);
for (int i = 0; i < blockSize; i++) { audioData[i] = (short) (buffer[i] * 32768.0); }
fft.forward(audioData);
for (int i = 0; i < blockSize / 2; i++) { magnitude[i] = Math.sqrt(Math.pow(fft.real[i], 2) + Math.pow(fft.imaginary[i], 2)); frequency[i] = i * ((double) sampleRate / blockSize); }