Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發之MediaRecorder類詳解

Android開發之MediaRecorder類詳解

編輯:關於Android編程

MediaRecorder類詳解


手機一般都有麥克風和攝像頭,而Android系統就可以利用這些硬件來錄制音視頻了。

為了增加對錄制音視頻的支持,Android系統提供了一個MediaRecorder的類。該類的使用也非常簡單,下面讓我們來了解一下這個類:


一、類結構:


java.lang.Object

?

android.media.MediaRecorder

二、類概述:


用於錄制音頻和視頻的一個類。

三、狀態圖:


mediarecZ喎?/kf/ware/vc/vcmRlcl9zdGF0ZV9kaWFncmFt">

說明:

與MediaPlayer類非常相似MediaRecorder也有它自己的狀態圖。下面是關於MediaRecorder的各個狀態的介紹:

Initial:初始狀態,當使用new()方法創建一個MediaRecorder對象或者調用了reset()方法時,該MediaRecorder對象處於Initial狀態。在設定視頻源或者音頻源之後將轉換為Initialized狀態。另外,在除Released狀態外的其它狀態通過調用reset()方法都可以使MediaRecorder進入該狀態。

Initialized:已初始化狀態,可以通過在Initial狀態調用setAudioSource()或setVideoSource()方法進入該狀態。在這個狀態可以通過setOutputFormat()方法設置輸出格式,此時MediaRecorder轉換為DataSourceConfigured狀態。另外,通過reset()方法進入Initial狀態。

DataSourceConfigured:數據源配置狀態,這期間可以設定編碼方式、輸出文件、屏幕旋轉、預覽顯示等等。可以在Initialized狀態通過setOutputFormat()方法進入該狀態。另外,可以通過reset()方法回到Initial狀態,或者通過prepare()方法到達Prepared狀態。

Prepared:就緒狀態,在DataSourceConfigured狀態通過prepare()方法進入該狀態。在這個狀態可以通過start()進入錄制狀態。另外,可以通過reset()方法回到Initialized狀態。

Recording:錄制狀態,可以在Prepared狀態通過調用start()方法進入該狀態。另外,它可以通過stop()方法或reset()方法回到Initial狀態。

Released:釋放狀態(官方文檔給出的詞叫做Idle state 空閒狀態),可以通過在Initial狀態調用release()方法來進入這個狀態,這時將會釋放所有和MediaRecorder對象綁定的資源。

Error:錯誤狀態,當錯誤發生的時候進入這個狀態,它可以通過reset()方法進入Initial狀態。

提示:與MediaPlayer相似使用MediaRecorder錄音錄像時需要嚴格遵守狀態圖說明中的函數調用先後順序,在不同的狀態調用不同的函數,否則會出現異常。

下面一個實例描述了的創建過程:

MediaRecorder recorder=newMediaRecorder();
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(); // Recording is now started
...
recorder.stop();
recorder.reset(); // You can reuse the object by going back to setAudioSource() step
recorder.release();// Now the object cannot be reused

四、構造方法和公有方法


Public Constructors

MediaRecorder()

Default constructor.

Public Methods

final static int

getAudioSourceMax()

獲取音頻源的最大值。

int

getMaxAmplitude()

獲取在前一次調用此方法之後錄音中出現的最大振幅。

void

prepare()

准備錄制。

void

release()

釋放資源。

void

reset()

將MediaRecorder設為空閒狀態,即Initial狀態。

void

setAudioChannels(int numChannels)

設置錄制的音頻通道數。

void

setAudioEncoder(int audio_encoder)

設置所錄制的聲音的編碼格式。

void

setAudioEncodingBitRate(int bitRate)

設置所錄制的聲音的編碼位率。

void

setAudioSamplingRate(int samplingRate)

設置所錄制的聲音的采樣率。

void

setAudioSource(int audio_source)

設置聲音來源,一般傳入 MediaRecorder. AudioSource.MIC參數指定錄制來自麥克風的聲音。

void

setCamera(Camera c)

設置一個攝像頭用於錄制。

void

setCaptureRate(double fps)

設置視頻幀捕獲率。

void

setLocation(float latitude, float longitude)

設置並存儲在輸出文件中的地理數據(經度和緯度)。

void

setMaxDuration(int max_duration_ms)

設置錄制會話的最長持續時間(以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)

設置使用哪個SurfaceView來顯示視頻預覽。

void

setProfile(CamcorderProfile profile)

指定CamcorderProfile對象。

void

setVideoEncoder(int video_encoder)

設置所錄制視頻的編碼格式。

void

setVideoEncodingBitRate(int bitRate)

設置所錄制視頻的編碼位率。

void

setVideoFrameRate(int rate)

設置錄制視頻的捕獲幀速率。

void

setVideoSize(int width, int height)

設置要拍攝的寬度和視頻的高度。

void

setVideoSource(int video_source)

設置用於錄制的視頻來源。

void

start()

開始錄制。

void

stop()

停止錄制。

五、應用實例


使用MediaRecorder錄制音樂

使用MediaRecorder錄制視頻

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved