android audiorecord
时间: 2025-04-23 15:01:39 浏览: 32
### 使用 `AudioRecord` 类进行音频录制
#### 权限声明
为了能够正常录音以及保存文件,在应用的 `AndroidManifest.xml` 文件中需添加如下权限:
```xml
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
```
#### 主要步骤概述
使用 `AudioRecord` 进行录音的过程可以分为几个部分,包括但不限于确定录音参数、配置缓冲区大小、实例化 `AudioRecord` 对象、启动录音过程、持续获取数据直至结束,并最终清理资源[^2]。
#### 编写代码实现基本功能
下面是一个简单的例子来展示如何利用该类完成上述操作:
```java
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
public class RecordHelper {
private static final int SAMPLE_RATE_IN_HZ = 8000; // 设置采样率
private static final int CHANNEL_CONFIG = AudioFormat.CHANNEL_IN_MONO; // 单声道
private static final int AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT; // PCM编码格式
private AudioRecord audioRecord;
public void startRecording(String filePath){
try {
int minBufferSize = AudioRecord.getMinBufferSize(SAMPLE_RATE_IN_HZ,
CHANNEL_CONFIG, AUDIO_FORMAT);
File file = new File(filePath);
DataOutputStream outputStream =
new DataOutputStream(new FileOutputStream(file));
short[] buffer = new short[minBufferSize];
this.audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
SAMPLE_RATE_IN_HZ, CHANNEL_CONFIG, AUDIO_FORMAT,minBufferSize);
this.audioRecord.startRecording();
while (this.isRecording) { // 假设有一个标志位控制循环
int numberOfShortsRead = this.audioRecord.read(buffer, 0, buffer.length);
for(int i=0;i<numberOfShortsRead;i++){
outputStream.writeShort(buffer[i]);
}
}
this.audioRecord.stop();
this.audioRecord.release();
outputStream.close();
} catch (Exception e) {
Log.e("Error", "Failed to record and save the sound.");
}
}
}
```
此段程序展示了怎样通过指定合适的参数创建一个 `AudioRecord` 实例,并将其捕获的数据流存储至外部文件中。值得注意的是这里采用了最基础的方式处理PCM数据,实际项目里可能还需要考虑更多细节比如异常处理机制等[^3]。
阅读全文
相关推荐


















