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

那个计时和获取音量的线程

鸿洋,那个计时和获取音量的线程,当event.down的时候,你没有让这个线程停止啊,为什么你这里测试就没事,我这里测试就报错了,因为手指起来之后,MediaRecorder就release了,已经置空,获取不了音量,空指针了。我一直在尝试停止线程,但总是出错,还是我看漏了你在哪里写代码停止了这个线程了?鸿洋老师你能不能说一下。。

正在回答

5 回答

线程内部设置了while(isRecording),在Up的时候isRecording = false了。当MediaRecorder准备好时,再次开启:

case MSG_AUDIO_PREPARED:		
	isRecording = true;
	new Thread(mGetVoiceLevelRunnable).start();


1 回复 有任何疑惑可以回复我~
while (isRecording) {
				//如果在录音那么就每隔一秒获取一次音量
				try {
					Thread.sleep(100);// 诶个每隔0.1秒获取一次
					mTime += 0.1f;
					handler.sendEmptyMessage(MSG_VOICE_CHANGE);// 发送消息给handle
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}


0 回复 有任何疑惑可以回复我~

教程里面忘记写了,应该在线程里加一个while(isRecording)的判断。视频里面没有加!,下面我贴出来代码,希望能够帮助到后来的学者

while (isRecording) {

//如果在录音那么就每隔一秒获取一次音量

try {

Thread.sleep(100);// 诶个每隔0.1秒获取一次

mTime += 0.1f;

handler.sendEmptyMessage(MSG_VOICE_CHANGE);// 发送消息给handle

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


0 回复 有任何疑惑可以回复我~

同问。。

0 回复 有任何疑惑可以回复我~

鸿洋老师,我也是这个线程空指针异常问题,为何我要判空,你的不需要?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android-仿微信语音聊天
  • 参与学习       43200    人
  • 解答问题       220    个

结合自定义View和API,Dialog管理等实现实现微信语音

进入课程

那个计时和获取音量的线程

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信