AudioRecord-安卓API中文在线文档

来源:互联网 发布:python爬取百度文库 编辑:程序博客网 时间:2024/05/01 16:15

 

结构

继承关系

public classAudioRecord extendsObject

  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能够记录多长的数据。从硬件设备读取的数据,应小于整个记录缓冲区。

内部类

    AudioRecord.OnRecordPositionUpdateListener

  接口定义为:当AudioRecord收到一个由setNotificationMarkerPosition(int)设置的通知标志,或由setPositionNotificationPeriod(int)设置的周期更新记录的进度状态时,回调此接口。

常量

    ERROR

  表示操作失败。

常量值: -1 (0xffffffff)

  public static final intERROR_BAD_VALUE

  表示使用了一个不合理的值导致的失败。

  常量值: -2 (0xfffffffe)

  public static final intERROR_INVALID_OPERATION

  表示不恰当的方法导致的失败。

  常量值: -3 (0xfffffffd)

  public static final intRECORDSTATE_RECORDING

  指示AudioRecord录制状态为“正在录制”。

  常量值: 3 (0x00000003)

  public static final intRECORDSTATE_STOPPED

  指示AudioRecord录制状态为“不在录制”。

  常量值: 1 (0x00000001)

  public static final intSTATE_INITIALIZED

  指示AudioRecord准备就绪。

  常量值: 1 (0x00000001)

  public static final intSTATE_UNINITIALIZED

  指示AudioRecord状态没有初始化成功。

  常量值: 0 (0x00000000)

  public static final intSUCCESS

  表示操作成功。

  常量值: 0 (0x00000000)

构造函数

  publicAudioRecord(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()还小则会导致初始化失败。

异常

IllegalArgumentException

公共方法

    getAudioFormat

    返回设置的音频数据格式。请见ENCODING_PCM_16BIT和ENCODING_PCM_8BIT。

    getAudioSource

    返回音频录制源。

      参见

MediaRecorder.AudioSource

    getChannelConfiguration

    返回设置的频道设置。请见CHANNEL_IN_MONOCHANNEL_IN_STEREO

    getChannelCount

    返回设置的频道数目。

    getMinBufferSize

    返回成功创建AudioRecord对象所需要的最小缓冲区大小。注意:这个大小并不保证在负荷下的流畅录制,应根据预期的频率来选择更高的值,AudioRecord实例在推送新数据时使用此值。

      参数

sampleRateInHz默认采样率,单位Hz。

channelConfig描述音频通道设置。

请见CHANNEL_IN_MONOCHANNEL_IN_STEREO

audioFormat音频数据保证支持此格式。参见ENCODING_PCM_16BIT

      返回值

  如果硬件不支持录制参数,或输入了一个无效的参数,则返回ERROR_BAD_VALUE,如果硬件查询到输出属性没有实现,或最小缓冲区用byte表示,则返回ERROR。

      参见

更多信息请见有效的设置参数

    getNotificationMarkerPosition

    返回通知,标记框架中的位置。

    getPositionNotificationPeriod

    返回通知,更新框架中的时间位置。

    getRecordingState

    返回AudioRecord实例的录制状态。

      参见

RECORDSTATE_STOPPED

  RECORDSTATE_RECORDING

    getSampleRate

    返回设置的音频数据样本采样率,单位Hz。

    getState

    返回AudioRecord实例的状态。这点非常有用,用在AudioRecord实例创建成功后,检查初始化属性。它能肯定请求到了合适的硬件资源。

      参见

  STATE_INITIALIZED

  STATE_UNINITIALIZED

    read

    从音频硬件录制缓冲区读取数据。

  参数

audioData写入的音频录制数据。

offsetInShorts目标数组audioData的起始偏移量。

sizeInShorts请求读取的数据大小。

      返回值

  返回short型数据,表示读取到的数据,如果对象属性没有初始化,则返回ERROR_INVALID_OPERATION,如果参数不能解析成有效的数据或索引,则返回ERROR_BAD_VALUE。返回数值不会超过sizeInShorts。

    read

    从音频硬件录制缓冲区读取数据。

参数

audioData写入的音频录制数据。

offsetInBytesaudioData的起始偏移值,单位byte。

sizeInBytes读取的最大字节数。

返回值

  读入缓冲区的总byte数,如果对象属性没有初始化,则返回ERROR_INVALID_OPERATION,如果参数不能解析成有效的数据或索引,则返回ERROR_BAD_VALUE。读取的总byte数不会超过sizeInBytes。

    read

    从音频硬件录制缓冲区读取数据,直接复制到指定缓冲区。如果audioBuffer不是直接的缓冲区,此方法总是返回0。

参数

audioBuffer存储写入音频录制数据的缓冲区。

sizeInBytes请求的最大字节数。

返回值

  读入缓冲区的总byte数,如果对象属性没有初始化,则返回ERROR_INVALID_OPERATION,如果参数不能解析成有效的数据或索引,则返回ERROR_BAD_VALUE。读取的总byte数不会超过sizeInBytes。

    release

    释放本地AudioRecord资源。对象不能经常使用此方法,而且在调用release()后,必须设置引用为null。

    setNotificationMarkerPosition

    如果设置了setRecordPositionUpdateListener(OnRecordPositionUpdateListener)setRecordPositionUpdateListener(OnRecordPositionUpdateListener, Handler),则通知监听者设置位置标记。

参数

markerInFrames在框架中快速标记位置。

返回值

返回错误或成功代码,请见SUCCESSERROR_BAD_VALUEERROR_INVALID_OPERATION

    setPositionNotificationPeriod

    如果设置了setRecordPositionUpdateListener(OnRecordPositionUpdateListener)setRecordPositionUpdateListener(OnRecordPositionUpdateListener, Handler),则通知监听者设置时间标记。

参数

markerInFrames在框架中快速更新时间标记。

返回值

返回错误或成功代码,请见SUCCESSERROR_INVALID_OPERATION

  public voidsetRecordPositionUpdateListener(AudioRecord.OnRecordPositionUpdateListener listener, Handler handler)

  当之前设置的标志已经成立,或者周期录制位置更新时,设置处理监听者。使用此方法来将Handler和别的线程联系起来,来接收AudioRecord事件,比创建AudioTrack实例更好一些。

  参数

handler用来接收事件通知消息。

  public voidsetRecordPositionUpdateListener(AudioRecord.OnRecordPositionUpdateListener listener)

    当之前设置的标志已经成立,或者周期录制位置更新时,设置处理监听者。

    startRecording

    AudioRecord实例开始进行录制。

异常

IllegalStateException

受保护方法

  protected voidfinalize()

    通知VM回收此对象内存。此方法只能用在运行的应用程序没有任何线程再使用此对象,来告诉垃圾回收器回收此对象。

  此方法用于释放系统资源,由垃圾回收器清除此对象。默认没有实现,由VM来决定,但子类根据需要可重写finalize()。在执行期间,调用此方法可能会立即抛出未定义异常,但是可以忽略。

  注意:VM保证对象可以一次或多次调用finalize(),但并不保证finalize()会马上执行。例如,对象B的finalize()可能延迟执行,等待对象A的finalize()延迟回收A的内存。为了安全起见,请看ReferenceQueue,它提供了更多地控制VM的垃圾回收。

AudioRecord.OnRecordPositionUpdateListener

版本:Android 3.1 r1

结构

继承关系

public static interfaceAudioRecord.OnRecordPositionUpdateListener

android.media.AudioRecord.OnRecordPositionUpdateListener

类概述

接口定义为:当AudioRecord收到一个由setNotificationMarkerPosition(int)设置的通知标志,或由setPositionNotificationPeriod(int)设置的周期更新记录的进度状态时,回调此接口。

公共方法

public abstract voidonMarkerReached(AudioRecord recorder)

回调监听器,通知监听器已经到达之前设置的标记位置。

public abstract voidonPeriodicNotification(AudioRecord recorder)

按照一定的周期,通知监听器,指定的记录已经就绪。

0 0
原创粉丝点击