下载地址:http://download.youkuaiyun.com/source/3148521
此应用可以设置参数值:频率、编码格式、声道。
private void startRecording
(){
createAudioRecord();//每次读取设置的参数后再创建
audioRecord.startRecording();
isRecording = true;
recordingThread = new Thread(new Runnable() {
@Override
public void run() {
writeAudioDataToFile();//每次均写入同一文件中
}
},"AudioRecorder Thread");
recordingThread.start();
}
private void stopRecording (){
if(null != audioRecord){
isRecording = false;
audioRecord.stop();
audioRecord.release();
audioRecord = null;
recordingThread = null;
}
copyWaveFile(getTempFilename(),getFilename());
deleteTempFile();
}
AudioTrack播放类
class PCMAudioTrack extends Thread {
protected byte[] m_out_bytes;
final String FILE_PATH = "/sdcard/AudioRecorder/";
final String FILE_NAME = "session.wav";
File file;
FileInputStream in;
public void init() {
try {
file = new File(FILE_PATH , FILE_NAME);
file.createNewFile();
in = new FileInputStream(file);
// in.read(temp, 0, length);
m_keep_running = true;
createAudioTrack();
m_out_bytes = new byte[playBufSize];
} catch (Exception e) {
e.printStackTrace();
}
}
public void free() {
m_keep_running = false;
try {
Thread.sleep(1000);
} catch (Exception e) {
Log.d("sleep exceptions.../n", "");
}
}
public void run() {
byte[] bytes_pkg = null;
audioTrack.play();
while (m_keep_running) {
try {
in.read(m_out_bytes);
bytes_pkg = m_out_bytes.clone();
audioTrack.write(bytes_pkg, 0, bytes_pkg.length);
} catch (Exception e) {
e.printStackTrace();
}
}
audioTrack.stop();
audioTrack = null;
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}