天天看點

Android中文API(122) —— AudioRecord

結構

繼承關系

public class AudioRecord extends Object

  java.lang.Object

android.media.AudioRecord

類概述

  在建立AudioRecord對象時,AudioRecord會初始化,并和音頻緩沖區連接配接,用來緩沖新的音頻資料。 根據構造時指定的緩沖區大小,來決定AudioRecord能夠記錄多長的資料。 從硬體裝置讀取的資料,應小于整個記錄緩沖區。

内部類

    interface          AudioRecord.OnRecordPositionUpdateListener

常量

    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準備就緒。

  public static final int STATE_UNINITIALIZED

  訓示AudioRecord狀态沒有初始化成功。

        常量值: 0 (0x00000000)

  public static final int SUCCESS

  表示操作成功。

構造函數

  public AudioRecord (int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes)

  類構造函數。

         參數

sampleRateInHz      預設采樣率,機關Hz。 44100Hz是目前唯一能保證在所有裝置上工作的采樣率,在一些裝置上還有22050, 16000或11025。

                   異常

公共方法

    public int getAudioFormat ()

    public int getAudioSource ()

    傳回音頻錄制源。

      參見

<code> </code>

    <code>public int getChannelConfiguration ()</code>

    public int getChannelCount ()

    傳回設定的頻道數目。

    public static int getMinBufferSize (int sampleRateInHz, int channelConfig, int audioFormat)

    傳回成功建立AudioRecord對象所需要的最小緩沖區大小。 注意:這個大小并不保證在負荷下的流暢錄制,應根據預期的頻率來選擇更高的值,AudioRecord執行個體在推送新資料時使用此值。

      參數

                            sampleRateInHz      預設采樣率,機關Hz。

                            channelConfig           描述音頻通道設定。

      傳回值

    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              請求讀取的資料大小。

    public int read (byte[] audioData, int offsetInBytes, int sizeInBytes)

                   參數

                            offsetInBytes            audioData的起始偏移值,機關byte。

                            sizeInBytes                讀取的最大位元組數。

                   傳回值

    public int read (ByteBuffer audioBuffer, int sizeInBytes)

    從音頻硬體錄制緩沖區讀取資料,直接複制到指定緩沖區。 如果audioBuffer不是直接的緩沖區,此方法總是傳回0。

                            audioBuffer               存儲寫入音頻錄制資料的緩沖區。

                            sizeInBytes                請求的最大位元組數。

    public void release ()

    釋放本地AudioRecord資源。 對象不能經常使用此方法,而且在調用release()後,必須設定引用為null。

    public int setNotificationMarkerPosition (int markerInFrames)

                            markerInFrames      在架構中快速标記位置。

    public int setPositionNotificationPeriod (int periodInFrames)

                            markerInFrames      在架構中快速更新時間标記。

   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()。 在執行期間,調用此方法可能會立即抛出未定義異常,但是可以忽略。

本文轉自over140 51CTO部落格,原文連結:http://blog.51cto.com/over140/582334,如需轉載請自行聯系原作者

繼續閱讀