为了账号安全,请及时绑定邮箱和手机立即绑定
课程很棒,非常感谢,真的辛苦了~
event.getX获得的x轴坐标是相对于当前控件(0,0)的坐标位置,event.getRowX获得的x轴坐标是相对于手机屏幕左上顶点为原点坐标
我要给你生猴子!
我不知道有多少人是和我一样碰到录音完就直接崩了的。初学者可能不知道怎么回事,我是因为用电脑测的,没有麦克风,老师选的音频源是麦克风,所以没有麦克风的小伙伴就GG了。用手机或者弄个麦克风可以试一下。初学不易。有初学者碰到这个问题顶一下。。
老师能共享源码么
老师有个地方写得不太严格,

if(!is_recording||mTime<0.6f){

mDialog.too_short();

if(mAudioManage!=null) //应该加上这个判断,不然有可能mAudioManage未创建完成

{

mAudioManage.cancel();

mHandler.sendEmptyMessageDelayed(MSG_DIALOG_DISMISS, 1300);

}

}
老师有个地方写得不太严格,
if(!is_recording||mTime<0.6f){
mDialog.too_short();
if(mAudioManage!=null) //应该加上这个判断,不然有可能mAudioManage未创建完成
{
mAudioManage.cancel();
mHandler.sendEmptyMessageDelayed(MSG_DIALOG_DISMISS, 1300);
}
}

最新回答 / 年逝丿
虽然不是很懂你的意思,我个人的理解是:首先mReady一开始是false的,是在触发了OnLongClick监听器才变成true,那么!mReady为True的时候就是你按下了录音按钮,但是提示框Dialog没有出来的这段时间里面你松开了手指,所以正常来说要调用父类的onTouchEvent方法(就像你按到其他地方一样什么都不做)。如果不这样的话程序会执行下去,后面判断状态后(mCurStatue == STATUE_RECORDING是True的,看DOWN那里的代码)所执行的mAudioManager...

最赞回答 / 凌恩BazZ1
public AudioRecorderButton(Context context, AttributeSet attrs) {    super(context, attrs);}public AudioRecorderButton(Context context) {    this(context, null);}

最新回答 / 攻城狮ZSP
有可能是导入android.R文件,要导入本身包的R文件,这样就可以找到了。
我changeState(int state)里面少写了mCurState = state;结果搞了半天

最新回答 / onceeeeday
不知道什么原因 我导入比人代码也是这样[摔........]

最新回答 / qq_原来这就是来自北方的汉子_0330
看你想要什么效果, 如果想要像对话那样,对话的顺序都保持的话,那么可以本地db文件去保持,每一条数据及其顺序,如果只是想展示音频,就可以遍历你音频存储的文件夹(音频文件可以时间轴来排序),然后展示。

已采纳回答 / 卡尔曼滤波
http://www.imooc.com/learn/112 你可以看下这个老师的课,讲单例模式的,这个老师还讲了很多其他的模式
跟着敲一遍就能通过了 但是作为初学者还是要几天才能接受,谢谢老师的分享
课程须知
本课程是基于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
提交
取消