这是一个直接播放麦克风采集到的声音线程类:
- class RecordThread extends Thread{
- static final int frequency = 44100;
- static final int channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_MONO;
- static final int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
- @Override
- public void run() {
- // TODO Auto-generated method stub
- int recBufSize = AudioRecord.getMinBufferSize(frequency,
- channelConfiguration, audioEncoding)*2;
- int plyBufSize = AudioTrack.getMinBufferSize(frequency,
- channelConfiguration, audioEncoding)*2;
- AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, frequency,
- channelConfiguration, audioEncoding, recBufSize);
- AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, frequency,
- channelConfiguration, audioEncoding, plyBufSize, AudioTrack.MODE_STREAM);
- byte[] recBuf = new byte[recBufSize];
- audioRecord.startRecording();
- audioTrack.play();
- while(true){
- int readLen = audioRecord.read(recBuf, 0, recBufSize);
- audioTrack.write(recBuf, 0, readLen);
- }
- audioTrack.stop();
- audioRecord.stop();
- }
- }
使用的时候,这样就行:
- RecordThread rec = new RecordThread();
- rec.start();
需要在AndroidManifest.xml文件中添加路由权限:
- <uses-permission android:name="android.permission.RECORD_AUDIO"/>