为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第3天 即时通讯项目里面的语音处理-基础实现篇

标签:
Android

课程名称:即时通讯项目里面的语音处理-基础实现篇
课程章节:2-1 Android-文件模式声音录制功能实现上
主讲老师:Piasy

课程内容:

今天学习内容有:

  • ButterKnife的使用
  • 录音的业务逻辑
  • ExecutorService实际使用

课程收获:

  • ButterKnife的使用
  1. gradle中引入ButterKnife包
  2. onCreate中BuggerKnife.Bind(this)
  3. 然后就可以通过注解使用XML中的view了
  • 录音的业务逻辑
  1. 搭界面啥的就不说了
  2. 录音按键按下执行录音操作并更新UI
  3. 录音按键撒开执行结束录音操作并更新UI以及录音文件的保存
  • ExecutorService的实际使用

由于录音JNI函数不是线程安全的,所以需要用单线程

  1. 在onCreate里初始化ExecutorService:Executors.newSingleThreadExecutor()
  2. 在onDestory里进行销毁:shutdownNow()
  3. 在要执行操作的地方使用:mExecutorService.submit {}
  • 代码结构如下

开始录音:

 fun startRecord() {
        // todo 后台录音
        mExecutorService.submit {
            // 释放之前录音的Recorder
            releaseRecorder()
            // 执行录音方法
            if (!doStartRecord()){
                showError()
            }
        }
    }

结束录音

fun stopRecord() {
        tvStatus.text = "结束录音"
        // 提交后台任务,停止录音
        mExecutorService.submit {
            // todo 执行停止录音逻辑
            if (!doStopRecord()){
                showError()
            }
        }
    }

释放MediaRecorder

fun releaseRecorder(){}

开始录音

fun doStartRecord():Boolean {
        return true
}

停止录音

fun doStopRecord():Boolean {
        return true
}

错误提示

fun showError(){}

备注:老师讲解的代码是用Java写的,我项目里使用的是kotlin,所以代码上会有差异,后续实现可能会用DataBinding替代ButterKnife;用协程替代ExecutorService

图片描述

图片描述

图片描述

图片描述

图片描述

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消