- android
- android.accessibilityservice
- android.accounts
- android.content
- android.database.sqlite
- android.graphics
- android.location
- android.media
- android.net
- android.os
- android.text
- android.view
- android.view.inputmethod
- android.widget
- AbsListView
- AbsoluteLayout
- AbsSeekBar
- AbsSpinner
- AdapterView
- AnalogClock
- BaseAdapter
- BaseExpandableListAdapter
- Button
- CheckBox
- CheckedTextView
- Checkable
- Chronometer
- CompoundButton
- CursorAdapter
- CursorTreeAdapter
- DatePicker
- DialerFilter
- DigitalClock
- EditText
- Filter
- Filter.FilterListener
- Filter.FilterResults
- ExpandableListAdapter
- Filterable
- Gallery
- Gallery.LayoutParams
- GridView
- GridLayout
- RadioGroup
- ImageView
- HorizontalScrollView
- ImageButton
- ImageSwitcher
- FilterQueryProvider
- ListAdapter
- ListView
- MediaController
- QuickContactBadge
- RadioButton
- RatingBar
- RelativeLayout
- RemoteViews
- ResourceCursorAdapter
- ResourceCursorTreeAdapter
- Scroller
- ScrollView
- SearchView
- SeekBar
- SeekBar.OnSeekBarChangeListener
- SimpleAdapter
- SimpleCursorAdapter
- SimpleCursorTreeAdapter
- SimpleExpandableListAdapter
- SlidingDrawer
- Spinner
- SpinnerAdapter
- WrapperListAdapter
- TabHost
- TabHost.TabSpec
- TextView
- TimePicker
- Toast
- TableLayout
- TableRow
- TableRow.LayoutParams
- TabWidget
- TextSwitcher
- ToggleButton
- TwoLineListItem
- VideoView
- ViewAnimator
- ViewFlipper
- ViewSwitcher
- ZoomButtonsController
- ZoomButton
- ZoomControls
- dalvik.system
AudioRecord
AudioRecord
版本:Android 3.1 r1
结构
继承关系
public class AudioRecord extends Object
java.lang.Object
android.media.AudioRecord
类概述
AudioRecord 类在 Java 应用程序中管理音频资源,用来记录从平台音频输入设备产生的数据。 通过 AudioRecord 对象来完成"pulling"(读取)数据。 应用通过以下几个方法负责立即从 AudioRecord 对象读取: read(byte[], int, int) , read(short[], int, int) 或 read(ByteBuffer, int) . 无论使用哪种音频格式,使用 AudioRecord 是最方便的。
在创建 AudioRecord 对象时,AudioRecord 会初始化,并和音频缓冲区连接,用来缓冲新的音频数据。 根据构造时指定的缓冲区大小,来决定 AudioRecord 能够记录多长的数据。 从硬件设备读取的数据,应小于整个记录缓冲区。
内部类
interface AudioRecord.OnRecordPositionUpdateListener
接口定义为:当 AudioRecord 收到一个由 setNotificationMarkerPosition(int) 设置的通知标志,或由 setPositionNotificationPeriod(int) 设置的周期更新记录的进度状态时,回调此接口。
常量
public static final int ERROR
表示操作失败。
常量值: -1 (0xffffffff)
public static final int ERROR_BAD_VALUE
表示使用了一个不合理的值导致的失败。
常量值: -2 (0xfffffffe)
public static final int ERROR_INVALID_OPERATION
表示不恰当的方法导致的失败。
常量值: -3 (0xfffffffd)
public static final int RECORDSTATE_RECORDING
指示 AudioRecord 录制状态为“正在录制”。
常量值: 3 (0x00000003)
public static final int RECORDSTATE_STOPPED
指示 AudioRecord 录制状态为“不在录制”。
常量值: 1 (0x00000001)
public static final int STATE_INITIALIZED
指示 AudioRecord 准备就绪。
常量值: 1 (0x00000001)
public static final int STATE_UNINITIALIZED
指示 AudioRecord 状态没有初始化成功。
常量值: 0 (0x00000000)
public static final int SUCCESS
表示操作成功。
常量值: 0 (0x00000000)
构造函数
public AudioRecord (int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes)
类构造函数。
参数
audioSource 录制源。 请见 MediaRecorder.AudioSource 录制源定义。
sampleRateInHz 默认采样率,单位 Hz。 44100Hz 是当前唯一能保证在所有设备上工作的采样率,在一些设备上还有 22050, 16000 或 11025。
channelConfig 描述音频通道设置。 请见 CHANNEL_IN_MONO 和 CHANNEL_IN_STEREO 。 CHANNEL_IN_MONO 保证能在所有设备上工作。
audioFormat 音频数据保证支持此格式。 请见 ENCODING_PCM_16BIT 和 ENCODING_PCM_8BIT 。
bufferSizeInBytes 在录制过程中,音频数据写入缓冲区的总数(字节)。 从缓冲区读取的新音频数据总会小于此值。 getMinBufferSize(int, int, int) 返回 AudioRecord 实例创建成功后的最小缓冲区。 设置的值比 getMinBufferSize() 还小则会导致初始化失败。
异常
公共方法
public int getAudioFormat ()
返回设置的音频数据格式。 请见 ENCODING_PCM_16BIT 和 ENCODING_PCM_8BIT 。
public int getAudioSource ()
返回音频录制源。
参见
public int getChannelConfiguration ()
返回设置的频道设置。 请见
CHANNEL_IN_MONO
和 CHANNEL_IN_STEREO
。
public int getChannelCount ()
返回设置的频道数目。
public static int getMinBufferSize (int sampleRateInHz, int channelConfig, int audioFormat)
返回成功创建 AudioRecord 对象所需要的最小缓冲区大小。 注意:这个大小并不保证在负荷下的流畅录制,应根据预期的频率来选择更高的值,AudioRecord 实例在推送新数据时使用此值。
参数
sampleRateInHz 默认采样率,单位 Hz。
channelConfig 描述音频通道设置。
请见 CHANNEL_IN_MONO
和 CHANNEL_IN_STEREO
。
audioFormat 音频数据保证支持此格式。参见 ENCODING_PCM_16BIT
。
返回值
如果硬件不支持录制参数,或输入了一个无效的参数,则返回 ERROR_BAD_VALUE ,如果硬件查询到输出属性没有实现,或最小缓冲区用 byte 表示,则返回 ERROR 。
参见
public int getNotificationMarkerPosition ()
返回通知,标记框架中的位置。
public int getPositionNotificationPeriod ()
返回通知,更新框架中的时间位置。
public int getRecordingState ()
返回 AudioRecord 实例的录制状态。
参见
public int getSampleRate ()
返回设置的音频数据样本采样率,单位 Hz。
public int getState ()
返回 AudioRecord 实例的状态。 这点非常有用,用在 AudioRecord 实例创建成功后,检查初始化属性。 它能肯定请求到了合适的硬件资源。
参见
public int read (short[] audioData, int offsetInShorts, int sizeInShorts)
从音频硬件录制缓冲区读取数据。
参数
audioData 写入的音频录制数据。
offsetInShorts 目标数组 audioData 的起始偏移量。
sizeInShorts 请求读取的数据大小。
返回值
返回 short 型数据,表示读取到的数据,如果对象属性没有初始化,则返回 ERROR_INVALID_OPERATION
,如果参数不能解析成有效的数据或索引,则返回 ERROR_BAD_VALUE
。 返回数值不会超过 sizeInShorts。
public int read (byte[] audioData, int offsetInBytes, int sizeInBytes)
从音频硬件录制缓冲区读取数据。
参数
audioData 写入的音频录制数据。
offsetInBytes audioData 的起始偏移值,单位 byte。
sizeInBytes 读取的最大字节数。
返回值
读入缓冲区的总 byte 数,如果对象属性没有初始化,则返回 ERROR_INVALID_OPERATION
,如果参数不能解析成有效的数据或索引,则返回 ERROR_BAD_VALUE
。 读取的总 byte 数不会超过 sizeInBytes。
public int read (ByteBuffer audioBuffer, int sizeInBytes)
从音频硬件录制缓冲区读取数据,直接复制到指定缓冲区。 如果 audioBuffer 不是直接的缓冲区,此方法总是返回 0。
参数
audioBuffer 存储写入音频录制数据的缓冲区。
sizeInBytes 请求的最大字节数。
返回值
读入缓冲区的总 byte 数,如果对象属性没有初始化,则返回 ERROR_INVALID_OPERATION
,如果参数不能解析成有效的数据或索引,则返回 ERROR_BAD_VALUE
。 读取的总 byte 数不会超过 sizeInBytes。
public void release ()
释放本地 AudioRecord 资源。 对象不能经常使用此方法,而且在调用 release() 后,必须设置引用为 null。
public int setNotificationMarkerPosition (int markerInFrames)
如果设置了 setRecordPositionUpdateListener(OnRecordPositionUpdateListener)
或 setRecordPositionUpdateListener(OnRecordPositionUpdateListener, Handler)
,则通知监听者设置位置标记。
参数
markerInFrames 在框架中快速标记位置。
返回值
返回错误或成功代码,请见 SUCCESS
、 ERROR_BAD_VALUE
、 ERROR_INVALID_OPERATION
。
public int setPositionNotificationPeriod (int periodInFrames)
如果设置了 setRecordPositionUpdateListener(OnRecordPositionUpdateListener)
或 setRecordPositionUpdateListener(OnRecordPositionUpdateListener, Handler)
,则通知监听者设置时间标记。
参数
markerInFrames 在框架中快速更新时间标记。
返回值
返回错误或成功代码,请见 SUCCESS
、 ERROR_INVALID_OPERATION 。
public void setRecordPositionUpdateListener (AudioRecord.OnRecordPositionUpdateListener listener, Handler handler)
当之前设置的标志已经成立,或者周期录制位置更新时,设置处理监听者。 使用此方法来将 Handler 和别的线程联系起来,来接收 AudioRecord 事件,比创建 AudioTrack 实例更好一些。
参数
handler 用来接收事件通知消息。
public void setRecordPositionUpdateListener (AudioRecord.OnRecordPositionUpdateListener listener)
当之前设置的标志已经成立,或者周期录制位置更新时,设置处理监听者。
public void startRecording ()
AudioRecord 实例开始进行录制。
异常
受保护方法
protected void finalize ()
通知 VM 回收此对象内存。 此方法只能用在运行的应用程序没有任何线程再使用此对象,来告诉垃圾回收器回收此对象。
此方法用于释放系统资源,由垃圾回收器清除此对象。 默认没有实现,由 VM 来决定,但子类根据需要可重写 finalize()。 在执行期间,调用此方法可能会立即抛出未定义异常,但是可以忽略。
注意:VM 保证对象可以一次或多次调用 finalize(),但并不保证 finalize() 会马上执行。 例如,对象 B 的 finalize() 可能延迟执行,等待对象 A 的 finalize() 延迟回收 A 的内存。 为了安全起见,请看 ReferenceQueue ,它提供了更多地控制 VM 的垃圾回收。
补充
文章精选
Android 提高第十篇之 AudioRecord 实现"助听器"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论