Android直接播放麦克风采集到的声音
16lz
2021-01-23
这是一个直接播放麦克风采集到的声音线程类:
[java] view plain copy print ?
- 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();
- }
- }
使用的时候,这样就行:
[java] view plain copy print ?
- RecordThread rec = new RecordThread();
- rec.start();
需要在AndroidManifest.xml文件中添加路由权限:
[html] view plain copy print ?
- <uses-permission android:name="android.permission.RECORD_AUDIO"/>
更多相关文章
- android listview 与 一般多线程配合产生的错误,资料汇总
- 文件多线程下载实现
- android使用多线程处理
- Android中通过其他线程更新主线程UI
- Android初始化OpenGL ES,并且分析Renderer子线程原理
- Android获取手机及路由器的Mac地址和IP地址
- Android主线程、子线程通信(Thread+handler)