1. AudioFormat

定义了一些变量,这些变量在AudioTrack和AudioRecord中用到:一般以下参数 ENCODING_PCM_16BIT, ENCODING_PCM_8BIT。代表采样大小android支持的采样大小16bit 或者8bit。当然采样大小越大,那么信息量越多,音质也越高,现在主流的采样大小都是16bit,在低质量的语音传输的时候8bit足够了。

2.AudioManager

对音量和震铃模式控制,模式管理

3. AudioRecord

记录输入硬件的音频,构造时传入5个参数

1. audioSource:

音频源:指的是从哪里采集音频。

2. sampleRateInHz: 

采样率:音频的采样频率,每秒钟能够采样的次数,采样率越高,音质越高。给出的实例是44100、22050、11025但不限于这几个参数。例如要采集低质量的音频就可以使用4000、8000等低采样率。  在Android手机设备中,44100kHZ是可以兼容全部手机的采样率。

3. channelConfig: 

声道设置:android支持双声道立体声和单声道。MONO单声道,STEREO立体声 

4. audioFormat: 

编码制式和采样大小:采集来的数据当然使用PCM编码(脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。) 

5. bufferSizeInBytes: 

采集数据需要的缓冲区( 麦克风采集到的音频数据先放置在一个缓冲区里面,之后我们再从这个缓冲区里面读取数据,从而获取到麦克风录制的音频数据。)的大小,一般来说缓存区越小,产生的音频延迟也越小;值得注意的是,我们可以利用AudioRecord.getMinBufferSize()这个方法帮我们算出最小的缓存区大小,这个数值最好不要自己计算,毕竟不同厂商可能有不同的缓存区采集实现。

  在创建AudioRecord对象时,AudioRecord会初始化,并和音频缓冲区连接,用来缓冲新的音频数据。 根据构造时指定的缓冲区大小,来决定AudioRecord能够记录多长的数据

4. AudioTrack

播放音频以及获取音频相关信息,构造时传入6个参数

1. streamtype:

使用哪种音频管理策略

Android Audio_数据

  • 音频流的音量管理,调节一个类型的音频流音量,不会影响到其他类型的音频流
  • 根据流类型选择合适的输出设备;比如插着有线耳机期间,音乐声(STREAM_MUSIC)只会输出到有线耳机,而铃声(STREAM_RING)会同时输出到有线耳机和外放

2. sampleRateInHz

与录音时一致

3. channelConfig

与录音时一致

4. audioFormat

与录音时一致

5. bufferSizeInBytes

与录音时一致

6. mode: 

1.static静态模式:言下之意就是数据一次性交付给接收方。好处是简单高效,只需要进行一次操作就完成了数据的传递;缺点当然也很明显,对于数据量较大的音频回放,显然它是无法胜任的,因而通常只用于播放铃声、系统提醒等对内存小的操作

2.streaming流模式:和网络上播放视频是类似的,即数据是按照一定规律不断地传递给接收方的。理论上它可用于任何音频播放的场景,不过我们一般在以下情况下采用:

Ø  音频文件过大

Ø  音频属性要求高,比如采样率高、深度大的数据

Ø  音频数据是实时产生的,这种情况就只能用流模式了

Android Audio_采样率_02

attachAuxEffect(int effectId)

声音附加混响特效(混响即通过声音在不同路径传播下造成的反射叠加产生的声音特效)

getplaybackHeadPosition

返回当前播放位置

getplaybackRate

对应setplaybackRate设置播放速率

Android Audio_采样率_03

4. Visualzer

需要传入特定的会话id,id来自MediaPlayer或AudioTrack.

Two types of representation of audio content can be captured: 

  • Waveform data: consecutive 8-bit (unsigned) mono samples by using the getWaveForm(byte[]) method
  • Frequency data: 8-bit magnitude FFT by using the getFft(byte[]) method

The Visualizer class can also be used to perform measurements on the audio being played back. The measurements to perform are defined by setting a mask of the requested measurement modes with setMeasurementMode(int). Supported values are MEASUREMENT_MODE_NONE to cancel any measurement, and MEASUREMENT_MODE_PEAK_RMS for peak and RMS monitoring. Measurements can be retrieved through getMeasurementPeakRms(MeasurementPeakRms).

可以捕获两种类型:波形,FFT,可检索最新的峰值和RMS测量值

Android Audio_采样率_04

getcaptureSizeRange()

返回一个采样值的范围数组,0为最小值128,1为最大值1024

getMaxCaptureRate

频率最大值用于setDataCaptureListener中的rate参数(最大50毫秒

getScalingMode

SCALING_MODE_AS_PLAYED

定义捕获模式,在此模式下,回放音量将影响(缩放)捕获数据的范围。低播放量将导致低样本值和fft值,反之亦然。

SCALING_MODE_NORMALIZED

默认模式

Android Audio_数据_05