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();}

更多相关文章

  1. 在线升级Android应用程序完善版
  2. Android(安卓)handler src track
  3. Android(安卓)-HandleThread-给线程传参数
  4. Android(安卓)APK+Dex文件反编译及回编译工具
  5. Android(安卓)更新ProgressBar
  6. android线程间通信和主线程更新ui
  7. Android(安卓)6.0打开串口返回-1问题
  8. Android下的JNI创建多线程的方法
  9. 理解杀进程的实现原理

随机推荐

  1. 使用Python开发客户端和服务端程序 理
  2. 分布式事务 TCC-Transaction 源码解析 —
  3. Elasticsearch 索引的映射配置详解
  4. 注册中心 Eureka 源码解析 —— 项目结构
  5. 注册中心 Eureka 源码解析 —— Eureka-C
  6. 分布式事务 TCC-Transaction 源码分析 —
  7. Spring Cloud Feign的两种使用姿势
  8. 分布式事务 TCC-Transaction 源码分析 —
  9. 注册中心 Eureka 源码解析 —— Eureka-S
  10. 分布式事务 TCC-Transaction 源码分析 —