iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 30
0

今天就讓我們來看看重頭戲 Recorder 的部分吧

private fun startRecording() {

        createFile()

        mediaRecorder = MediaRecorder()
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC)
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP)
        mediaRecorder.setOutputFile(soundFile.absolutePath)
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB)
        mediaRecorder.prepare()

        mediaRecorder.start()

    }

我們在要執行 Recorder 之前先執行 createFile function 確保有路徑可以儲存。
執行 Recorder 請確保按照順訊來進行。
確認輸入來源 setAudioSource 、輸出檔案格式 setOutputFormat 、輸出檔案路徑 setOutputFile 、輸出格式 setAudioEncoder
這訂好之後要記得 prepare 後再 start。

private fun stopRecording() {
        if (recordingStatus) {
            mediaRecorder.stop()
            mediaRecorder.release()
            recordStopBtn.isEnabled = false
            playStopBtn.isEnabled = true
        }
    }

再來是跟 start 一樣重要的 stop ,在 stop 之後需要 release 資源。

private fun recordOrStopCheck() {

        when (recordBtnStatus) {
            "RECORD" -> {
                startRecording()
                recordingStatus = true
                recordStopBtn.text = "STOP"
                recordBtnStatus = "STOP"
            }

            "STOP" -> {
                stopRecording()
                recordingStatus = false
                recordStopBtn.text = "RECORD"
                recordBtnStatus = "RECORD"
            }
        }
    }

最後按鍵的部分,我們使用相同的方式來達到一樣的效果。

想看更詳細說明 MediaRecorder 的資料可以參閱參考文件。

參考文件

MediaRecorder


上一篇
Day29_MediaRecorder_建立檔案
系列文
發現新大陸-Android Kotlin 開發之路30

尚未有邦友留言

立即登入留言