课程名称:即时通讯项目里面的语音处理-基础实现篇
课程章节:2-2 Android-文件模式声音录制功能实现下
主讲老师:Piasy
课程内容:
今天学习内容有:
- 启动录音的逻辑
- 错误提醒的逻辑
- 结束录音的逻辑
课程收获:
- 启动录音逻辑
private fun doStartRecord(): Boolean {
return try {
// 创建录音文件
mAudioFile =
File("${Environment.DIRECTORY_DOWNLOADS}/iMookDemo/${System.currentTimeMillis()}.m4a")
mAudioFile.parentFile?.mkdir()
mAudioFile.createNewFile()
println(mAudioFile.absolutePath)
// 配置MediaRecorder
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC) // 从麦克风采集
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
mMediaRecorder.setAudioSamplingRate(44100) // "所有安卓系统都支持的采样频率"
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC)
mMediaRecorder.setAudioEncodingBitRate(96000) // 音质较好的频率
mMediaRecorder.setOutputFile(mAudioFile.absolutePath)
// 开始录音
mMediaRecorder.prepare()
mMediaRecorder.start()
// 记录开始录音的时间,用于统计录音时长
lStartRecordTime = System.currentTimeMillis()
true
} catch (e: Exception) {
false
}
}
- 结束录音逻辑
private fun doStopRecord(): Boolean {
return try {
// 停止录音
mMediaRecorder.stop()
// 记录停止时间
val recordTime = System.currentTimeMillis() - lStartRecordTime
val recordLength = recordTime / 1000
// 只接受超过3秒的录音,在UI上显示出来
if (recordLength > 3) {
uiThread {
viewBinding.tvStatus.text = "录音成功 ${recordLength}秒"
}
return true
} else {
uiThread {
Toast.makeText(this@MainActivity, "录音小于3秒不记录", Toast.LENGTH_SHORT).show()
}
return false
}
} catch (e: Exception) {
false
}
}
點(diǎn)擊查看更多內(nèi)容
為 TA 點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫(xiě)下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦