为了账号安全,请及时绑定邮箱和手机立即绑定
看完要点赞,例行公事~~
亲,可不可以把源码发给我1023755730@qq.com

讲师回答 / hyman
资源文件在视频右下角,代码可以自己编写。
如果不在style里面添加 parent="@android:style/Theme.Dialog" 会报错!
错误是java.lang.IllegalStateException: ActionBarImpl can only be used with a compatible window decor layout

已采纳回答 / hyman
自定义控件如果你通过布局文件使用,调用的是两个参数的构造方法;如果自己new XXXView(context);一般调用的是一个参数的方法;并且和onTouchEvent没什么关系,你的描述可以去检查下你的onTouchEvent的Action_DOWN的分支返回值是不是true。
亲,求源码!
加载太慢了。。。
视频加载得太慢了 心脏病都犯了。。。。

最赞回答 / 嗷嗷飞
找到原因了,老师的代码并没有去处理这个异常if (isPrepared) {    try {        //maxLevel*mMediaRecorder.getMaxAmplitude() 1~32767        return maxLevel * mMediaRecorder.getMaxAmplitude() / 32768 + 1;    } catch (Exception e) {    }}return 1;
怎么没源码啊 亲 这可不是你的风格啊 娃哈哈

已采纳回答 / hyman
恩,这个异常我们是有预见性的,就是知道会出这个异常,但是不会影响这个案例的运行,注意捕获一下:<...code...>
最好应该是用mHndler.post(mGetVoiceLevelRunnable)来执行,然后在录音结束时再remove掉应该会比较好。
在AudioRecorderButton里面mHandler的MSG_AUDIO_PREPARED处理上,是直接new出的一个线程,在录音停止时也没有remove掉这个线程,所以我在真机上测试时,按下按钮松开后会报错,因为那个线程没有被关闭而还去执行了AudioManager的getVoiceLevel()方法,而此时getVoiceLevel()方法里面的mMediaRecorder是为null的,所以报了空指针异常。目前我的一个粗暴解决办法是直接在getVoiceLevel()方法里的if里去判断下mMediaRecorder != null。
@linshiyx 应该是不需要停止了,因为在MediaManager里面已经做了mMediaPlayer是否为null的判断,如果不为null,说明还在播放前面的音频,在播放本次点击的音频时进行了reset()操作
课程须知
本课程是基于Android开发的案例,需要大家对Android的了解要达到小成的境界: 1、掌握自定义View的流程与步骤 2、了解MediaPlayer、MediaRecorder相关API 3、了解Dialog相关API
老师告诉你能学到什么?
1、自定义控件如何处理与用户的交互 2、如何创建并动态更新Dialog 3、MediaRecorder的使用,实现录音功能 4、MediaPlayer的使用,实现播放功能 5、多个管理类对象间的交互与协作

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消