萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 安卓開發 >> 使用MediaRecorder編寫Android 錄音

使用MediaRecorder編寫Android 錄音

   1、使用Mediarecorder 錄音

  MediaRecorder類用來進行媒體采樣,包括音頻和視頻。也就是用來記錄音頻和視頻方法的類,記錄的數據一般都是寫入到文件裡面。因此我們可以通過這個類實現錄音和錄視頻的功能。下面介紹MediaRecorder用來錄音的簡單方法:

  MediaRecorder recorder = new MediaRecorder();

  recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

  recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

  recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

  recorder.setOutputFile(PATH_NAME);

  recorder.prepare();

  recorder.start(); // 開始錄音

  ...

  recorder.stop();

  recorder.reset(); // You can reuse the object by going back to setAudioSource() step

  recorder.release(); // Now the object cannot be reused

  上面是使用MediaRecorder錄音的簡單流程代碼,基本上你使用的代碼,就能實現錄音的功能。

  2、MediaRecorder 相關的類

  //Edited by mythou

  //http://www.cnblogs.com/mythou/

  //定義音頻編碼

  class MediaRecorder.AudioEncoder

  //定義聲音資源

  class MediaRecorder.AudioSource

  //回調接口,當錄音出現錯誤的時候調用

  interface MediaRecorder.OnErrorListener

  //回調接口,當錄音出現錯誤的時候調用

  interface MediaRecorder.OnInfoListener

  //定義輸出格式

  class MediaRecorder.OutputFormat

  //定義視頻編碼

  class MediaRecorder.VideoEncoder

  //定義視頻source

  class MediaRecorder.VideoSource

  3、MediaRecorder常用方法

  //獲取音頻信號源的最高值。

  final static int getAudioSourceMax()

  //最後調用這個方法采樣的時候返回最大振幅的絕對值

  int getMaxAmplitude()

  //准備recorder 開始捕獲和編碼數據

  void prepare()

  //發布與此MediaRecorder對象關聯的資源

  void release()

  //重新啟動mediarecorder到空閒狀態

  void reset()

  //設置錄制的音頻通道數。

  void setAudioChannels(int numChannels)

  //設置audio的編碼格式

  void setAudioEncoder(int audio_encoder)

  //設置錄制的音頻編碼比特率

  void setAudioEncodingBitRate(int bitRate)

  //設置錄制的音頻采樣率。

  void setAudioSamplingRate(int samplingRate)

  //設置用於錄制的音源。

  void setAudioSource(int audio_source)

  //輔助時間的推移視頻文件的路徑傳遞。

  void setAuxiliaryOutputFile(String path)

  void setAuxiliaryOutputFile(FileDescriptor fd)

  //在文件描述符傳遞的輔助時間的推移視頻

  //設置一個recording的攝像頭

  void setCamera(Camera c)

  //設置視頻幀的捕獲率

  void setCaptureRate(double fps)

  //設置記錄會話的最大持續時間(毫秒)

  void setMaxDuration(int max_duration_ms)

  //設置記錄會話的最大大小(以字節為單位)

  void setMaxFileSize(long max_filesize_bytes)

  //注冊一個回調被調用發生錯誤時,同時錄制

  void setOnErrorListener(MediaRecorder.OnErrorListener l)

  //注冊要同時記錄一個信息事件發生時調用的回調。

  void setOnInfoListener(MediaRecorder.OnInfoListener listener)

  //設置輸出的視頻播放的方向提示

  void setOrientationHint(int degrees)

  //傳遞要寫入的文件的文件描述符

  void setOutputFile(FileDescriptor fd)

  //設置輸出文件的路徑

  void setOutputFile(String path)

  //設置在錄制過程中產生的輸出文件的格式

  void setOutputFormat(int output_format)

  //表面設置顯示記錄媒體(視頻)的預覽

  void setPreviewDisplay(Surface sv)

  //從一個記錄CamcorderProfile對象的使用設置

  void setProfile(CamcorderProfile profile)

  //設置視頻編碼器,用於錄制

  void setVideoEncoder(int video_encoder)

  //設置錄制的視頻編碼比特率

  void setVideoEncodingBitRate(int bitRate)

  //設置要捕獲的視頻幀速率

  void setVideoFrameRate(int rate)

  //設置要捕獲的視頻的寬度和高度

  void setVideoSize(int width, int height)

  //開始捕捉和編碼數據到setOutputFile(指定的文件)

  void setVideoSource(int video_source)

  //開始錄音

  void start()

  //停止recording

  void stop()

  4、播放錄音

  mPlayer = new MediaPlayer();

  mPlayer.setDataSource(mSampleFile.getAbsolutePath());

  mPlayer.setOnCompletionListener(this);

  mPlayer.setOnErrorListener(this);

  mPlayer.prepare();

  mPlayer.start();

  //.......

  mPlayer.stop();

  mPlayer.release();

  mPlayer = null;

  上面是一段簡單播放錄音的過程,結合上面錄音代碼,就可以實現錄音和回放。

copyright © 萬盛學電腦網 all rights reserved