Android中文API(122) —— AudioRecord
2013-07-29 21:54
405 查看
前言
本章内容是android.media.AudioRecord,版本为Android3.1r1,翻译来自"chenwei",这位朋友在没有加入翻译组情况下匿名投稿,这里整理后代为发布!欢迎大家一起参与AndroidAPI的翻译,联系我over140@gmail.com。声明
欢迎转载,但请保留文章原始出处:)
博客园:
Android中文翻译组:
结构
继承关系
publicclassAudioRecordextendsObject
java.lang.Object
android.media.AudioRecord
类概述
AudioRecord类在Java应用程序中管理音频资源,用来记录从平台音频输入设备产生的数据。通过AudioRecord对象来完成"pulling"(读取)数据。应用通过以下几个方法负责立即从AudioRecord对象读取:read(byte[],
int,int),
int).无论使用哪种音频格式,使用AudioRecord是最方便的。
在创建AudioRecord对象时,AudioRecord会初始化,并和音频缓冲区连接,用来缓冲新的音频数据。根据构造时指定的缓冲区大小,来决定AudioRecord能够记录多长的数据。从硬件设备读取的数据,应小于整个记录缓冲区。
内部类
interfaceAudioRecord.OnRecordPositionUpdateListener
接口定义为:当AudioRecord收到一个由
常量
publicstaticfinalintERROR
表示操作失败。
常量值:-1(0xffffffff)
publicstaticfinalintERROR_BAD_VALUE
表示使用了一个不合理的值导致的失败。
常量值:-2(0xfffffffe)
publicstaticfinalintERROR_INVALID_OPERATION
表示不恰当的方法导致的失败。
常量值:-3(0xfffffffd)
publicstaticfinalintRECORDSTATE_RECORDING
指示AudioRecord录制状态为“正在录制”。
常量值:3(0x00000003)
publicstaticfinalintRECORDSTATE_STOPPED
指示AudioRecord录制状态为“不在录制”。
常量值:1(0x00000001)
publicstaticfinalintSTATE_INITIALIZED
指示AudioRecord准备就绪。
常量值:1(0x00000001)
publicstaticfinalintSTATE_UNINITIALIZED
指示AudioRecord状态没有初始化成功。
常量值:0(0x00000000)
publicstaticfinalintSUCCESS
表示操作成功。
常量值:0(0x00000000)
构造函数
publicAudioRecord(intaudioSource,intsampleRateInHz,intchannelConfig,intaudioFormat,intbufferSizeInBytes)
类构造函数。
参数
audioSource录制源。请见
sampleRateInHz默认采样率,单位Hz。44100Hz是当前唯一能保证在所有设备上工作的采样率,在一些设备上还有22050,16000或11025。
channelConfig描述音频通道设置。请见
audioFormat音频数据保证支持此格式。请见
bufferSizeInBytes在录制过程中,音频数据写入缓冲区的总数(字节)。从缓冲区读取的新音频数据总会小于此值。getMinBufferSize(int,
int,int)返回AudioRecord实例创建成功后的最小缓冲区。设置的值比getMinBufferSize()还小则会导致初始化失败。
异常
公共方法
publicintgetAudioFormat()
返回设置的音频数据格式。请见
publicintgetAudioSource()
返回音频录制源。
参见
MediaRecorder.AudioSource
publicintgetChannelConfiguration()
返回设置的频道设置。请见
和CHANNEL_IN_MONO
。CHANNEL_IN_STEREO
publicintgetChannelCount()
返回设置的频道数目。
publicstaticintgetMinBufferSize(intsampleRateInHz,intchannelConfig,intaudioFormat)
返回成功创建AudioRecord对象所需要的最小缓冲区大小。注意:这个大小并不保证在负荷下的流畅录制,应根据预期的频率来选择更高的值,AudioRecord实例在推送新数据时使用此值。
参数
sampleRateInHz默认采样率,单位Hz。
channelConfig描述音频通道设置。
请见
和CHANNEL_IN_MONO
。CHANNEL_IN_STEREO
audioFormat音频数据保证支持此格式。参见
。ENCODING_PCM_16BIT
返回值
如果硬件不支持录制参数,或输入了一个无效的参数,则返回
参见
publicintgetNotificationMarkerPosition()
返回通知,标记框架中的位置。
publicintgetPositionNotificationPeriod()
返回通知,更新框架中的时间位置。
publicintgetRecordingState()
返回AudioRecord实例的录制状态。
参见
RECORDSTATE_STOPPED
RECORDSTATE_RECORDING
publicintgetSampleRate()
返回设置的音频数据样本采样率,单位Hz。
publicintgetState()
返回AudioRecord实例的状态。这点非常有用,用在AudioRecord实例创建成功后,检查初始化属性。它能肯定请求到了合适的硬件资源。
参见
STATE_INITIALIZED
STATE_UNINITIALIZED
publicintread(short[]audioData,intoffsetInShorts,intsizeInShorts)
从音频硬件录制缓冲区读取数据。
参数
audioData写入的音频录制数据。
offsetInShorts目标数组audioData的起始偏移量。
sizeInShorts请求读取的数据大小。
返回值
返回short型数据,表示读取到的数据,如果对象属性没有初始化,则返回
,如果参数不能解析成有效的数据或索引,则返回ERROR_INVALID_OPERATION
。返回数值不会超过sizeInShorts。ERROR_BAD_VALUE
publicintread(byte[]audioData,intoffsetInBytes,intsizeInBytes)
从音频硬件录制缓冲区读取数据。
参数
audioData写入的音频录制数据。
offsetInBytesaudioData的起始偏移值,单位byte。
sizeInBytes读取的最大字节数。
返回值
读入缓冲区的总byte数,如果对象属性没有初始化,则返回
,如果参数不能解析成有效的数据或索引,则返回ERROR_INVALID_OPERATION
。读取的总byte数不会超过sizeInBytes。ERROR_BAD_VALUE
publicintread(ByteBufferaudioBuffer,intsizeInBytes)
从音频硬件录制缓冲区读取数据,直接复制到指定缓冲区。如果audioBuffer不是直接的缓冲区,此方法总是返回0。
参数
audioBuffer存储写入音频录制数据的缓冲区。
sizeInBytes请求的最大字节数。
返回值
读入缓冲区的总byte数,如果对象属性没有初始化,则返回
,如果参数不能解析成有效的数据或索引,则返回ERROR_INVALID_OPERATION
。读取的总byte数不会超过sizeInBytes。ERROR_BAD_VALUE
publicvoidrelease()
释放本地AudioRecord资源。对象不能经常使用此方法,而且在调用release()后,必须设置引用为null。
publicintsetNotificationMarkerPosition(intmarkerInFrames)
如果设置了
或setRecordPositionUpdateListener(OnRecordPositionUpdateListener)
setRecordPositionUpdateListener(OnRecordPositionUpdateListener, Handler),则通知监听者设置位置标记。
参数
markerInFrames在框架中快速标记位置。
返回值
返回错误或成功代码,请见
、SUCCESS
、ERROR_BAD_VALUE
ERROR_INVALID_OPERATION
。
publicintsetPositionNotificationPeriod(intperiodInFrames)
如果设置了
或setRecordPositionUpdateListener(OnRecordPositionUpdateListener)
setRecordPositionUpdateListener(OnRecordPositionUpdateListener, Handler),则通知监听者设置时间标记。
参数
markerInFrames在框架中快速更新时间标记。
返回值
返回错误或成功代码,请见
SUCCESS
、ERROR_INVALID_OPERATION。
publicvoidsetRecordPositionUpdateListener(AudioRecord.OnRecordPositionUpdateListenerlistener,Handlerhandler)
当之前设置的标志已经成立,或者周期录制位置更新时,设置处理监听者。使用此方法来将Handler和别的线程联系起来,来接收AudioRecord事件,比创建AudioTrack实例更好一些。
参数
handler用来接收事件通知消息。
publicvoidsetRecordPositionUpdateListener(AudioRecord.OnRecordPositionUpdateListenerlistener)
当之前设置的标志已经成立,或者周期录制位置更新时,设置处理监听者。
publicvoidstartRecording()
AudioRecord实例开始进行录制。
异常
受保护方法
protectedvoidfinalize()
通知VM回收此对象内存。此方法只能用在运行的应用程序没有任何线程再使用此对象,来告诉垃圾回收器回收此对象。
此方法用于释放系统资源,由垃圾回收器清除此对象。默认没有实现,由VM来决定,但子类根据需要可重写finalize()。在执行期间,调用此方法可能会立即抛出未定义异常,但是可以忽略。
注意:VM保证对象可以一次或多次调用finalize(),但并不保证finalize()会马上执行。例如,对象B的finalize()可能延迟执行,等待对象A的finalize()延迟回收A的内存。为了安全起见,请看
补充
文章精选
AudioRecord.OnRecordPositionUpdateListener
译者署名:chenwei
版本:Android3.1r1
结构
继承关系
publicstaticinterfaceAudioRecord.OnRecordPositionUpdateListener
android.media.AudioRecord.OnRecordPositionUpdateListener
类概述
接口定义为:当AudioRecord收到一个由setNotificationMarkerPosition(int)设置的通知标志,或由setPositionNotificationPeriod(int)设置的周期更新记录的进度状态时,回调此接口。
公共方法
publicabstractvoidonMarkerReached(AudioRecordrecorder)
回调监听器,通知监听器已经到达之前设置的标记位置。
publicabstractvoidonPeriodicNotification(AudioRecordrecorder)
按照一定的周期,通知监听器,指定的记录已经就绪。
相关文章推荐
- Android中文API(122) —— AudioRecord
- Android中文API(122) —— AudioRecord
- Android中文API(122) —— AudioRecord
- Android中文API(122) —— AudioRecord
- Android 中文 API (101) —— AsyncTask
- Android 中文 API —— ScrollView
- android中文API文档
- Android中文API(144) —— JsonWriter
- android 中文 api (64) —— Scroller
- Android2.2 API 中文文档系列(5) —— View详解
- android中文api(79)——Gallery
- Android 中文 API (19) —— TwoLineListItem
- Android中文API(136) —— Bitmap
- Android 3.0 r1中文API文档(103) —— InputMethodManager [输入法]
- Android中文API——DatePicker&TimePicker
- Android中文API
- Android 中文 API (26) —— SeekBar
- Android 中文API (66) —— BluetoothClass.Device
- Android 中文 API (29) —— CompoundButton
- Android 中文API (32) —— TimePicker.OnTimeChangedListener