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;
上面是一段簡單播放錄音的過程,結合上面錄音代碼,就可以實現錄音和回放。