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

讲师回答 / hyman
恩,这个异常我们是有预见性的,就是知道会出这个异常,但是不会影响这个案例的运行,注意捕获一下:<...code...>

已采纳回答 / hyman
噢,这个警告可以忽略,这里IDE的检测可能有些问题,我们并没有屏蔽它的click,返回的依然是super.onTouchEvent(event);

讲师回答 / hyman
自定义的button继承自Button呀。本例中没有fragment,你说的是布局文件中button的父布局为什么是FrameLayout吧,对于相同的效果,如果FrameLayout和LinearLayout都可以实现,我会选择FrameLayout,因为效率会高一点。

讲师回答 / hyman
时间的消耗在long click 和  MediaRecorder.prepare的时间。

讲师回答 / hyman
你好,看完了你的代码没有发现问题,建议再次检查下布局文件和代码。

讲师回答 / hyman
两个构造方法是为了,支持用户在代码中new这个空间和在布局文件中使用;定义这些常量是为了表示该按钮的多个状态,这么做代码的可读性更高。

讲师回答 / hyman
正常情况下不会出现你所描述的问题,建议对着视频详细核对下代码。

已采纳回答 / hyman
哈,这个方法,由于是获得音量等级,由于产生异常不影响整个程序的运行,所以我们直接catch了。

讲师回答 / hyman
首先感谢你对慕课的支持,我详细查看了你贴出的代码,没有发现问题。根据你贴出的异常信息,出错是因为MediaRecorder的状态转移出现的问题,建议你还是根据log排查下,ps:记得使用真机测试。

讲师回答 / hyman
那是单例的一种典型的实现方式,如果不加同步,多线程的时候可能会生成多实例。

讲师回答 / hyman
那怎么会空呢~~记得拿真机测试~~

讲师回答 / hyman
我看你是在release()方法里面抛出的空指针,错误行应该就一个对象mMediaRecorder吧,你看看你是不是cancel还是某个方法里面误把mMediaRecorder置null了。
课程须知
本课程是基于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
提交
取消