Android AudioRecord 施用注意事项

Android AudioRecord 使用注意事项AudioRecord对象需要在Activity的线程里面创建。读取数据时可以在独立的

Android AudioRecord 使用注意事项

AudioRecord对象需要在Activity的线程里面创建。读取数据时可以在独立的线程里面进行。否则华为U8800之类手机录音时会出错。

?

public VoiceRecorder(Tranceiver tx, int sampleRate)throws IllegalArgumentException, IllegalStateException {this.tx = tx;final int bufSize = AudioRecord.getMinBufferSize(sampleRate,CHANNEL_CONFIGURATION_MONO, ENCODING_PCM_16BIT);this.rec = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate,CHANNEL_CONFIGURATION_MONO, ENCODING_PCM_16BIT, bufSize);rec.startRecording();}public void run() {final byte[] buf = new byte[8 * 1024];while (running) {int n = rec.read(buf, 0, buf.length);if (n < 1)continue;try {tx.send(buf, 0, n);} catch (InterruptedException e) {Log.w(TAG, e);}}try {rec.stop();} catch (IllegalStateException e) {Log.w(TAG, e);}rec.release();}
?