錄音器
MediaRecorder 的狀態圖(圖片來源為官方文件)
建立 MediaRecorder 實例
透過 MediaRecorder class 中的建構子創建實例
MediaRecorder()
val mediaRecorder = MediaRecorder()
設置錄音器的要錄音的音頻來源
需在呼叫 setOutputFormat 方法之前呼叫此方法。
setAudioSource (audio_source: Int)
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC)
設置錄音檔要輸出的格式。
需在呼叫 setAudioSource 方法之後、呼叫 prepare 方法之前呼叫此方法。
setOutputFormat (output_format: Int)
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP)
設置錄音器錄製的音頻編碼器。
需在呼叫 setOutputFormat 方法之後、呼叫 prepare 方法之前呼叫此方法。
setAudioEncoder (audio_encoder: Int)
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB)
setOutputFile
設置錄音器生成的錄音檔要輸出的路徑
需在呼叫 setOutputFormat 方法之後、呼叫 prepare 方法之前呼叫此方法。
val oriFile = File(getFilesDir() , "new-$time.3gp")
mediaRecorder.setOutputFile(oriFile.absolutePath)
setOutputFile (fd: FileDescriptor)
準備錄音器
需在設定完錄音器的種種需求(例如前面設置的 AudioSource、OutputFormat、AudioEncoder、OutputFile…等等)後,呼叫 start 方法前執行此方法。
prepare ()
mediaRecorder.prepare()
開始錄音
start ()
mediaRecorder.start()
暫停錄音。
pause ()
暫停後可用 resume 方法恢復並繼續錄音。
可在呼叫 pause 方法暫停錄音後,利用此方法恢復並繼續錄音。
resume ()
停止錄音。
stop ()
mediaRecorder.stop()
停止錄音後要再次重新錄音需重新設定錄音器的種種需求(例如前面設置的 AudioSource、OutputFormat、AudioEncoder、OutputFile…等等)並呼叫
prepare 方法。
將 MediaRecorder 重置 idle 狀態
reset()
# reset 後若要再次使用該 MediaRecorder 實例,需重新設定錄音器的種種
需求(例如前面設置的 AudioSource、OutputFormat、AudioEncoder、
OutputFile…等等)並調用 prepare 方法。
釋放該 MediaRecorder 實例中的所有資源
release ()
# 釋放後該 MediaRecorder 實例會進入到 Released 狀態,並且沒有任何方法
可以從 Released 狀態變回其他狀態,也就表示該實例無法再被使用。
# 當確定 MediaRecorder 實例不會在被使用後,就應該要用 release 方法
釋放資源,否則可能導致設備持續耗電或其他應用無法正常播放。
錄音後彈出重新命名小視窗以及選擇檔案來播放為後來自行追加內容,
原先的實作範圍為錄音後直接將錄音檔指定給 MediaPlayer 播放。
Android
Kotlin
MediaRecorder