public static class AudioRecord.Builder
extends Object
java.lang.Object | |
↳ | android.media.AudioRecord.Builder |
AudioRecord
对象的生成器类。 使用这个类来配置和创建一个AudioRecord
实例。 通过设置录音源和音频格式参数,可以指出哪些参数与设备的默认行为不同。
以下是一个示例,其中 Builder
用于指定所有 AudioFormat
参数,以供新的 AudioRecord
实例使用:
AudioRecord recorder = new AudioRecord.Builder() .setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION) .setAudioFormat(new AudioFormat.Builder() .setEncoding(AudioFormat.ENCODING_PCM_16BIT) .setSampleRate(32000) .setChannelMask(AudioFormat.CHANNEL_IN_MONO) .build()) .setBufferSize(2*minBuffSize) .build();
如果音频源未使用setAudioSource(int)
设置,则使用DEFAULT
。
如果音频格式未指定或不完整,其通道配置将为CHANNEL_IN_MONO
,编码将为ENCODING_PCM_16BIT
。 采样率取决于实际选择捕获的设备,可以用getSampleRate()
方法查询。
如果未使用setBufferSizeInBytes(int)
指定缓冲区大小,则使用源的最小缓冲区大小。
Public constructors |
|
---|---|
AudioRecord.Builder() 使用上述默认值构造一个新的Builder。 |
Public methods |
|
---|---|
AudioRecord |
build() |
AudioRecord.Builder |
setAudioFormat(AudioFormat format) 设置要捕捉的音频数据的格式。 |
AudioRecord.Builder |
setAudioSource(int source) |
AudioRecord.Builder |
setBufferSizeInBytes(int bufferSizeInBytes) 设置录制过程中写入音频数据的缓冲区的总大小(以字节为单位)。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
AudioRecord build ()
Returns | |
---|---|
AudioRecord |
a new AudioRecord instance successfully initialized with all the parameters set on this Builder . |
Throws | |
---|---|
UnsupportedOperationException |
if the parameters set on the Builder were incompatible, or if they are not supported by the device, or if the device was not available. |
AudioRecord.Builder setAudioFormat (AudioFormat format)
设置要捕捉的音频数据的格式。
Parameters | |
---|---|
format |
AudioFormat : a non-null AudioFormat instance |
Returns | |
---|---|
AudioRecord.Builder |
the same Builder instance. |
Throws | |
---|---|
IllegalArgumentException |
AudioRecord.Builder setAudioSource (int source)
Parameters | |
---|---|
source |
int : the audio source. See MediaRecorder.AudioSource for the supported audio source definitions. |
Returns | |
---|---|
AudioRecord.Builder |
the same Builder instance. |
Throws | |
---|---|
IllegalArgumentException |
AudioRecord.Builder setBufferSizeInBytes (int bufferSizeInBytes)
设置录制过程中写入音频数据的缓冲区的总大小(以字节为单位)。 新的音频数据可以以比这个尺寸更小的块读取。 请参阅getMinBufferSize(int, int, int)
以确定成功创建AudioRecord实例所需的最小缓冲区大小。 由于bufferSizeInBytes可能会在内部增加以适应源需求,因此请使用getBufferSizeInFrames()
来确定帧中的实际缓冲区大小。
Parameters | |
---|---|
bufferSizeInBytes |
int : a value strictly greater than 0 |
Returns | |
---|---|
AudioRecord.Builder |
the same Builder instance. |
Throws | |
---|---|
IllegalArgumentException |