1.MediaRecorder.AudioRecord类构造函数:
public AudioRecord(int audioSource, int sampleRateInHz, int channelConfig, int audioFormat,
int bufferSizeInBytes)
audioSource:
采集声音资源设备:eg.MediaRecorder.AudioSource.MIC(麦克风)
SAMPLE_RATE_INHZ:
采集HZ频率
CHANNEL_CONFIG:
声道
AUDIO_FORMAT:
返回音频格式
minBufferSize:
采集音频最小缓存大小(注意:在读该音频缓存时,读取的大小应该比该缓存大。)
2.AudioTrack
public AudioTrack(AudioAttributes attributes, AudioFormat format, int bufferSizeInBytes,
int mode, int sessionId)
attributes:
attributes=new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA) //设置管道使用者为USAGE_MEDIA,表示视频或者音乐
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)//设置内容类型CONTENT_TYPE_MUSIC表示音乐,USAGE_MEDIA表示音乐或者视频
.build(),
format:
format=new AudioFormat.Builder().setSampleRate(SAMPLE_RATE_INHZ)//设置样本采样率
.setEncoding(AUDIO_FORMAT) //设置采集数据返回格式
.setChannelMask(channelConfig)//设置音频声道
.build(),
bufferSizeInBytes:
管道缓存大小
mode:AudioTrack.MODE_STREAM
管道模式:
MODE_STATIC:在play之前只需要把所有数据通过一次write调用传递到AudioTrack中的内部缓冲区,后续就不必再传递 数据了
MODE_STREAM:通过write一次次把音频数据写到AudioTrack中。用于类似铃声一样的小的音频
sessionId:AudioManager.AUDIO_SESSION_ID_GENERATE
音频会话ID.------ AUDIO_SESSION_ID_GENERATE表示未知ID,需要框架生成一个新值