权限
<uses-permission android:name="android.permission.RECORD_AUDIO" />
AudioRecordUtil
package com.example.glivepush.audioRcord;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
public class AudioRecordUtil {
private AudioRecord audioRecord;
private int bufferSizeInBytes;
private boolean start = false;
private int readSize = 0;
private OnRecordListener onRecordListener;
public void setOnRecordListener(OnRecordListener onRecordListener) {
this.onRecordListener = onRecordListener;
}
public AudioRecordUtil() {
bufferSizeInBytes = AudioRecord.getMinBufferSize(
44100,
AudioFormat.CHANNEL_IN_STEREO,
AudioFormat.ENCODING_PCM_16BIT);
//HZ 声道数 16bitPCM
audioRecord = new AudioRecord(
MediaRecorder.AudioSource.MIC,
44100,
AudioFormat.CHANNEL_IN_STEREO,
AudioFormat.ENCODING_PCM_16BIT,
bufferSizeInBytes);
//MediaRecorder.AudioSource.MIC 麦克风
}
public void startRecord() {
new Thread(new Runnable() {
@Override
public void run() {
start = true;
//开始录音
audioRecord.startRecording();
byte[] audioData = new byte[bufferSizeInBytes];
while (start) {
readSize = audioRecord.read(audioData, 0, bufferSizeInBytes);
if (onRecordListener != null) {
onRecordListener.recordByte(audioData, readSize);
}
}
if (audioRecord != null) {
audioRecord.stop();
audioRecord.release();
audioRecord = null;
}
}
}).start();
}
public void stopRecord() {
start = false;
}
public interface OnRecordListener {
void recordByte(byte[] audioData, int readSize);
}
public boolean isStart() {
return start;
}
}
AudioRecordActivity
package com.example.glivepush.audioRcord;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
public class AudioRecordUtil {
private AudioRecord audioRecord;
private int bufferSizeInBytes;
private boolean start = false;
private int readSize = 0;
private OnRecordListener onRecordListener;
public void setOnRecordListener(OnRecordListener onRecordListener) {
this.onRecordListener = onRecordListener;
}
public AudioRecordUtil() {
bufferSizeInBytes = AudioRecord.getMinBufferSize(
44100,
AudioFormat.CHANNEL_IN_STEREO,
AudioFormat.ENCODING_PCM_16BIT);
//HZ 声道数 16bitPCM
audioRecord = new AudioRecord(
MediaRecorder.AudioSource.MIC,
44100,
AudioFormat.CHANNEL_IN_STEREO,
AudioFormat.ENCODING_PCM_16BIT,
bufferSizeInBytes);
//MediaRecorder.AudioSource.MIC 麦克风
}
public void startRecord() {
new Thread(new Runnable() {
@Override
public void run() {
start = true;
//开始录音
audioRecord.startRecording();
byte[] audioData = new byte[bufferSizeInBytes];
while (start) {
readSize = audioRecord.read(audioData, 0, bufferSizeInBytes);
if (onRecordListener != null) {
onRecordListener.recordByte(audioData, readSize);
}
}
if (audioRecord != null) {
audioRecord.stop();
audioRecord.release();
audioRecord = null;
}
}
}).start();
}
public void stopRecord() {
start = false;
}
public interface OnRecordListener {
void recordByte(byte[] audioData, int readSize);
}
public boolean isStart() {
return start;
}
}
本文介绍了一个用于Android设备的录音功能实现方案,通过AudioRecord类获取麦克风输入的声音数据,并使用自定义的监听器来处理录音过程中的数据读取。文章详细展示了如何设置录音参数、启动及停止录音的方法。
7400

被折叠的 条评论
为什么被折叠?



